Skip to content

Commit e032b91

Browse files
committed
fix: resolve jido chat fallback and clean lockfile
1 parent 4121c38 commit e032b91

File tree

3 files changed

+47
-29
lines changed

3 files changed

+47
-29
lines changed

lib/jido_messaging/ingest.ex

Lines changed: 36 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -204,8 +204,7 @@ defmodule Jido.Messaging.Ingest do
204204
channel_type: channel_type,
205205
external_room_id: to_string(external_room_id),
206206
external_thread_id: resolved_msg_context.external_thread_id,
207-
delivery_external_room_id:
208-
resolved_msg_context.delivery_external_room_id || to_string(external_room_id),
207+
delivery_external_room_id: resolved_msg_context.delivery_external_room_id || to_string(external_room_id),
209208
room_id: room.id,
210209
thread_id: resolved_msg_context.thread_id,
211210
participant_id: participant.id,
@@ -246,8 +245,7 @@ defmodule Jido.Messaging.Ingest do
246245
bridge_id: bridge_id,
247246
room_id: room.id,
248247
thread_id: msg_context.thread_id || msg_context.external_thread_id,
249-
external_room_id:
250-
to_string(msg_context.delivery_external_room_id || external_room_id)
248+
external_room_id: to_string(msg_context.delivery_external_room_id || external_room_id)
251249
}
252250

253251
case SessionManager.set(messaging_module, SessionKey.from_context(msg_context), route) do
@@ -316,10 +314,8 @@ defmodule Jido.Messaging.Ingest do
316314
external_id: incoming[:external_message_id],
317315
external_reply_to_id: stringify_if_present(incoming[:external_reply_to_id]),
318316
thread_id: thread && thread.id,
319-
external_thread_id:
320-
incoming[:external_thread_id] || (thread && thread.external_thread_id),
321-
delivery_external_room_id:
322-
incoming[:delivery_external_room_id] || (thread && thread.delivery_external_room_id),
317+
external_thread_id: incoming[:external_thread_id] || (thread && thread.external_thread_id),
318+
delivery_external_room_id: incoming[:delivery_external_room_id] || (thread && thread.delivery_external_room_id),
323319
status: :sent,
324320
metadata: build_metadata(incoming, channel_type, bridge_id, media_metadata)
325321
}
@@ -387,7 +383,7 @@ defmodule Jido.Messaging.Ingest do
387383
{:ok, agent_id} ->
388384
if incoming[:external_message_id] do
389385
with {:ok, result} <-
390-
Jido.Chat.Adapter.open_thread(
386+
open_thread(
391387
channel_module,
392388
incoming.external_room_id,
393389
incoming.external_message_id,
@@ -396,9 +392,7 @@ defmodule Jido.Messaging.Ingest do
396392
{:ok, thread} <-
397393
get_or_create_thread(messaging_module, room.id, %{
398394
external_thread_id:
399-
stringify_if_present(
400-
result[:external_thread_id] || result["external_thread_id"]
401-
),
395+
stringify_if_present(result[:external_thread_id] || result["external_thread_id"]),
402396
delivery_external_room_id:
403397
stringify_if_present(
404398
result[:delivery_external_room_id] || result["delivery_external_room_id"] ||
@@ -423,6 +417,24 @@ defmodule Jido.Messaging.Ingest do
423417
end
424418
end
425419

420+
defp open_thread(channel_module, external_room_id, external_message_id, opts) do
421+
cond do
422+
function_exported?(Jido.Chat.Adapter, :open_thread, 4) ->
423+
apply(Jido.Chat.Adapter, :open_thread, [
424+
channel_module,
425+
external_room_id,
426+
external_message_id,
427+
opts
428+
])
429+
430+
function_exported?(channel_module, :open_thread, 3) ->
431+
apply(channel_module, :open_thread, [external_room_id, external_message_id, opts])
432+
433+
true ->
434+
{:error, :unsupported}
435+
end
436+
end
437+
426438
defp get_or_create_thread(messaging_module, room_id, attrs) do
427439
external_thread_id = attrs[:external_thread_id]
428440

@@ -443,10 +455,8 @@ defmodule Jido.Messaging.Ingest do
443455
updated_thread =
444456
thread
445457
|> Map.merge(%{
446-
delivery_external_room_id:
447-
attrs[:delivery_external_room_id] || thread.delivery_external_room_id,
448-
root_external_message_id:
449-
attrs[:root_external_message_id] || thread.root_external_message_id,
458+
delivery_external_room_id: attrs[:delivery_external_room_id] || thread.delivery_external_room_id,
459+
root_external_message_id: attrs[:root_external_message_id] || thread.root_external_message_id,
450460
metadata: Map.merge(thread.metadata || %{}, attrs[:metadata] || %{}),
451461
updated_at: DateTime.utc_now()
452462
})
@@ -467,8 +477,14 @@ defmodule Jido.Messaging.Ingest do
467477
defp maybe_assign_thread({:error, _reason} = error, _messaging_module, _room_server, _room_id, _msg_context),
468478
do: error
469479

470-
defp assign_resolved_thread(_messaging_module, _room_server, _room_id, %Thread{assigned_agent_id: agent_id} = thread, agent_id),
471-
do: {:ok, thread}
480+
defp assign_resolved_thread(
481+
_messaging_module,
482+
_room_server,
483+
_room_id,
484+
%Thread{assigned_agent_id: agent_id} = thread,
485+
agent_id
486+
),
487+
do: {:ok, thread}
472488

473489
defp assign_resolved_thread(messaging_module, _room_server, room_id, %Thread{} = thread, agent_id) do
474490
case Jido.Messaging.assign_thread(messaging_module, room_id, thread.id, agent_id) do
@@ -534,8 +550,7 @@ defmodule Jido.Messaging.Ingest do
534550
msg_context
535551
| thread_id: message.thread_id,
536552
external_thread_id: message.external_thread_id,
537-
delivery_external_room_id:
538-
message.delivery_external_room_id || stringify_if_present(external_room_id)
553+
delivery_external_room_id: message.delivery_external_room_id || stringify_if_present(external_room_id)
539554
}
540555
end
541556

@@ -544,8 +559,7 @@ defmodule Jido.Messaging.Ingest do
544559
msg_context
545560
| thread_id: thread.id,
546561
external_thread_id: thread.external_thread_id,
547-
delivery_external_room_id:
548-
thread.delivery_external_room_id || stringify_if_present(external_room_id)
562+
delivery_external_room_id: thread.delivery_external_room_id || stringify_if_present(external_room_id)
549563
}
550564
end
551565

mix.exs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ defmodule Jido.Messaging.MixProject do
6767
defp deps do
6868
[
6969
# Runtime dependencies
70-
{:jido_chat, path: "../jido_chat"},
70+
jido_dep_git(:jido_chat, "../jido_chat", "agentjido/jido_chat", "main"),
7171
{:jason, "~> 1.4"},
7272
{:zoi, "~> 0.14"},
7373
{:jido, github: "agentjido/jido", override: true},
@@ -115,6 +115,16 @@ defmodule Jido.Messaging.MixProject do
115115
]
116116
end
117117

118+
defp jido_dep_git(app, rel_path, github_repo, branch) do
119+
path = Path.expand(rel_path, __DIR__)
120+
121+
if File.dir?(path) and File.exists?(Path.join(path, "mix.exs")) do
122+
{app, path: rel_path, override: true}
123+
else
124+
{app, github: github_repo, branch: branch, override: true}
125+
end
126+
end
127+
118128
defp package do
119129
[
120130
files: ["lib", "mix.exs", "README.md", "LICENSE", "CHANGELOG.md", "usage-rules.md"],

mix.lock

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,8 @@
22
"abacus": {:hex, :abacus, "2.1.0", "b6db5c989ba3d9dd8c36d1cb269e2f0058f34768d47c67eb8ce06697ecb36dd4", [:mix], [], "hexpm", "255de08b02884e8383f1eed8aa31df884ce0fb5eb394db81ff888089f2a1bbff"},
33
"abnf_parsec": {:hex, :abnf_parsec, "2.1.0", "c4e88d5d089f1698297c0daced12be1fb404e6e577ecf261313ebba5477941f9", [:mix], [{:nimble_parsec, "~> 1.4", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "e0ed6290c7cc7e5020c006d1003520390c9bdd20f7c3f776bd49bfe3c5cd362a"},
44
"bunt": {:hex, :bunt, "1.0.0", "081c2c665f086849e6d57900292b3a161727ab40431219529f13c4ddcf3e7a44", [:mix], [], "hexpm", "dc5f86aa08a5f6fa6b8096f0735c4e76d54ae5c9fa2c143e5a1fc7c1cd9bb6b5"},
5-
"castle": {:hex, :castle, "0.3.1", "e5d4f20696d878052a23c13158e1d372b24d9b30a6ea6f52fa6063c21c5ad67e", [:mix], [{:forecastle, "~> 0.1.3", [hex: :forecastle, repo: "hexpm", optional: false]}], "hexpm", "3ee9ca04b069280ab4197fe753562958729c83b3aa08125255116a989e133835"},
65
"certifi": {:hex, :certifi, "2.15.0", "0e6e882fcdaaa0a5a9f2b3db55b1394dba07e8d6d9bcad08318fb604c6839712", [:rebar3], [], "hexpm", "b147ed22ce71d72eafdad94f055165c1c182f61a2ff49df28bcc71d1d5b94a60"},
76
"combine": {:hex, :combine, "0.10.0", "eff8224eeb56498a2af13011d142c5e7997a80c8f5b97c499f84c841032e429f", [:mix], [], "hexpm", "1b1dbc1790073076580d0d1d64e42eae2366583e7aecd455d1215b0d16f2451b"},
8-
"cowlib": {:hex, :cowlib, "2.16.0", "54592074ebbbb92ee4746c8a8846e5605052f29309d3a873468d76cdf932076f", [:make, :rebar3], [], "hexpm", "7f478d80d66b747344f0ea7708c187645cfcc08b11aa424632f78e25bf05db51"},
97
"credo": {:hex, :credo, "1.7.16", "a9f1389d13d19c631cb123c77a813dbf16449a2aebf602f590defa08953309d4", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "d0562af33756b21f248f066a9119e3890722031b6d199f22e3cf95550e4f1579"},
108
"crontab": {:hex, :crontab, "1.1.14", "233fcfdc2c74510cabdbcb800626babef414e7cb13cea11ddf62e10e16e2bf76", [:mix], [{:ecto, "~> 1.0 or ~> 2.0 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}], "hexpm", "4e3b9950bc22ae8d0395ffb5f4b127a140005cba95745abf5ff9ee7e8203c6fa"},
119
"deep_merge": {:hex, :deep_merge, "1.0.0", "b4aa1a0d1acac393bdf38b2291af38cb1d4a52806cf7a4906f718e1feb5ee961", [:mix], [], "hexpm", "ce708e5f094b9cd4e8f2be4f00d2f4250c4095be93f8cd6d018c753894885430"},
@@ -15,19 +13,16 @@
1513
"erlex": {:hex, :erlex, "0.2.8", "cd8116f20f3c0afe376d1e8d1f0ae2452337729f68be016ea544a72f767d9c12", [:mix], [], "hexpm", "9d66ff9fedf69e49dc3fd12831e12a8a37b76f8651dd21cd45fcf5561a8a7590"},
1614
"ex_aws_auth": {:hex, :ex_aws_auth, "1.3.1", "3963992d6f7cb251b53573603c3615cec70c3f4d86199fdb865ff440295ef7a4", [:mix], [{:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: true]}, {:req, "~> 0.5", [hex: :req, repo: "hexpm", optional: true]}], "hexpm", "025793aa08fa419aabdb652db60edbdb2e12346bd447988a1bb5854c4dd64903"},
1715
"ex_doc": {:hex, :ex_doc, "0.40.1", "67542e4b6dde74811cfd580e2c0149b78010fd13001fda7cfeb2b2c2ffb1344d", [:mix], [{:earmark_parser, "~> 1.4.44", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.0", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14 or ~> 1.0", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1 or ~> 1.0", [hex: :makeup_erlang, repo: "hexpm", optional: false]}, {:makeup_html, ">= 0.1.0", [hex: :makeup_html, repo: "hexpm", optional: true]}], "hexpm", "bcef0e2d360d93ac19f01a85d58f91752d930c0a30e2681145feea6bd3516e00"},
18-
"ex_gram": {:hex, :ex_gram, "0.57.0", "272cb78a3040d71b53fa1437c0b6fd0fccec4ce64e41c1ae0999eb6d4536b4d0", [:mix], [{:gun, "~> 2.0", [hex: :gun, repo: "hexpm", optional: true]}, {:hackney, "~> 1.20", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, ">= 1.0.0", [hex: :jason, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: true]}, {:poison, ">= 1.0.0", [hex: :poison, repo: "hexpm", optional: true]}, {:req, "~> 0.5.0", [hex: :req, repo: "hexpm", optional: true]}, {:tesla, "~> 1.2", [hex: :tesla, repo: "hexpm", optional: true]}], "hexpm", "875c2f42b45d7473ee825618af9586b42158e7d58f4a788ec9c9e8c8985e025d"},
1916
"excoveralls": {:hex, :excoveralls, "0.18.5", "e229d0a65982613332ec30f07940038fe451a2e5b29bce2a5022165f0c9b157e", [:mix], [{:castore, "~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "523fe8a15603f86d64852aab2abe8ddbd78e68579c8525ae765facc5eae01562"},
2017
"expo": {:hex, :expo, "1.1.1", "4202e1d2ca6e2b3b63e02f69cfe0a404f77702b041d02b58597c00992b601db5", [:mix], [], "hexpm", "5fb308b9cb359ae200b7e23d37c76978673aa1b06e2b3075d814ce12c5811640"},
2118
"file_system": {:hex, :file_system, "1.1.1", "31864f4685b0148f25bd3fbef2b1228457c0c89024ad67f7a81a3ffbc0bbad3a", [:mix], [], "hexpm", "7a15ff97dfe526aeefb090a7a9d3d03aa907e100e262a0f8f7746b78f8f87a5d"},
2219
"finch": {:hex, :finch, "0.21.0", "b1c3b2d48af02d0c66d2a9ebfb5622be5c5ecd62937cf79a88a7f98d48a8290c", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.6.2 or ~> 1.7", [hex: :mint, repo: "hexpm", optional: false]}, {:nimble_options, "~> 0.4 or ~> 1.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 1.1", [hex: :nimble_pool, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "87dc6e169794cb2570f75841a19da99cfde834249568f2a5b121b809588a4377"},
23-
"forecastle": {:hex, :forecastle, "0.1.3", "b07d217ef10799e6d6cc7e47407858e77b1a8cb248f15185534de3403de3aa42", [:mix], [], "hexpm", "07e1ffa79c56f3e0ead59f17c0163a747dafc210ca8f244a7e65a4bfa98dc96d"},
2420
"fsmx": {:hex, :fsmx, "0.5.0", "63737a5e864e0c4804ce523abee4cfdc496f35ca523d7633efa384d159b9efa2", [:mix], [{:ecto, ">= 3.0.0", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_sql, ">= 3.0.0", [hex: :ecto_sql, repo: "hexpm", optional: true]}], "hexpm", "0351e6e725a60c7a171ca5f93db3cf223e580f52f3491d1bb2a57b4f23b6f8b1"},
2521
"fuse": {:hex, :fuse, "2.5.0", "71afa90be21da4e64f94abba9d36472faa2d799c67fedc3bd1752a88ea4c4753", [:rebar3], [], "hexpm", "7f52a1c84571731ad3c91d569e03131cc220ebaa7e2a11034405f0bac46a4fef"},
2622
"gettext": {:hex, :gettext, "0.26.2", "5978aa7b21fada6deabf1f6341ddba50bc69c999e812211903b169799208f2a8", [:mix], [{:expo, "~> 0.5.1 or ~> 1.0", [hex: :expo, repo: "hexpm", optional: false]}], "hexpm", "aa978504bcf76511efdc22d580ba08e2279caab1066b76bb9aa81c4a1e0a32a5"},
2723
"git_cli": {:hex, :git_cli, "0.3.0", "a5422f9b95c99483385b976f5d43f7e8233283a47cda13533d7c16131cb14df5", [:mix], [], "hexpm", "78cb952f4c86a41f4d3511f1d3ecb28edb268e3a7df278de2faa1bd4672eaf9b"},
2824
"git_hooks": {:hex, :git_hooks, "0.8.1", "1f6a1b065638e07ed89a49804dac6c24d8ac8d27c8f9fd0e9620d5bef8c30f41", [:mix], [{:recase, "~> 0.8.0", [hex: :recase, repo: "hexpm", optional: false]}], "hexpm", "267d8b82615ad439177b2a4bc2efadb7491ec1c8520dacc67ddc38c251448cbc"},
2925
"git_ops": {:hex, :git_ops, "2.9.0", "b74f6040084f523055b720cc7ef718da47f2cbe726a5f30c2871118635cb91c1", [:mix], [{:git_cli, "~> 0.2", [hex: :git_cli, repo: "hexpm", optional: false]}, {:igniter, ">= 0.5.27 and < 1.0.0-0", [hex: :igniter, repo: "hexpm", optional: true]}, {:nimble_parsec, "~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}, {:req, "~> 0.5", [hex: :req, repo: "hexpm", optional: false]}], "hexpm", "7fdf84be3490e5692c5dc1f8a1084eed47a221c1063e41938c73312f0bfea259"},
30-
"gun": {:hex, :gun, "2.2.0", "b8f6b7d417e277d4c2b0dc3c07dfdf892447b087f1cc1caff9c0f556b884e33d", [:make, :rebar3], [{:cowlib, ">= 2.15.0 and < 3.0.0", [hex: :cowlib, repo: "hexpm", optional: false]}], "hexpm", "76022700c64287feb4df93a1795cff6741b83fb37415c40c34c38d2a4645261a"},
3126
"hackney": {:hex, :hackney, "1.25.0", "390e9b83f31e5b325b9f43b76e1a785cbdb69b5b6cd4e079aa67835ded046867", [:rebar3], [{:certifi, "~> 2.15.0", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "~> 6.1.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "~> 1.0.0", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~> 1.4", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "3.4.1", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "~> 1.1.0", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}, {:unicode_util_compat, "~> 0.7.1", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "7209bfd75fd1f42467211ff8f59ea74d6f2a9e81cbcee95a56711ee79fd6b1d4"},
3227
"hpax": {:hex, :hpax, "1.0.3", "ed67ef51ad4df91e75cc6a1494f851850c0bd98ebc0be6e81b026e765ee535aa", [:mix], [], "hexpm", "8eab6e1cfa8d5918c2ce4ba43588e894af35dbd8e91e6e55c817bca5847df34a"},
3328
"httpoison": {:hex, :httpoison, "2.2.1", "87b7ed6d95db0389f7df02779644171d7319d319178f6680438167d7b69b1f3d", [:mix], [{:hackney, "~> 1.17", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "51364e6d2f429d80e14fe4b5f8e39719cacd03eb3f9a9286e61e216feac2d2df"},
@@ -55,7 +50,6 @@
5550
"nimble_options": {:hex, :nimble_options, "1.1.1", "e3a492d54d85fc3fd7c5baf411d9d2852922f66e69476317787a7b2bb000a61b", [:mix], [], "hexpm", "821b2470ca9442c4b6984882fe9bb0389371b8ddec4d45a9504f00a66f650b44"},
5651
"nimble_parsec": {:hex, :nimble_parsec, "1.4.2", "8efba0122db06df95bfaa78f791344a89352ba04baedd3849593bfce4d0dc1c6", [:mix], [], "hexpm", "4b21398942dda052b403bbe1da991ccd03a053668d147d53fb8c4e0efe09c973"},
5752
"nimble_pool": {:hex, :nimble_pool, "1.1.0", "bf9c29fbdcba3564a8b800d1eeb5a3c58f36e1e11d7b7fb2e084a643f645f06b", [:mix], [], "hexpm", "af2e4e6b34197db81f7aad230c1118eac993acc0dae6bc83bac0126d4ae0813a"},
58-
"nostrum": {:hex, :nostrum, "0.10.4", "a316d08b19104f34c5fd5aa56674907350899a5f0c2483afdf5586296bd0ce07", [:mix], [{:castle, "~> 0.3.0", [hex: :castle, repo: "hexpm", optional: false]}, {:certifi, "~> 2.13", [hex: :certifi, repo: "hexpm", optional: false]}, {:ezstd, "~> 1.1", [hex: :ezstd, repo: "hexpm", optional: true]}, {:gun, "~> 2.0", [hex: :gun, repo: "hexpm", optional: false]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:mime, "~> 1.6 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}], "hexpm", "fcc2642bf5b09792865ec2c26c1a11c6aa5432bc623a65dd81141e1eab9f1b99"},
5953
"ok": {:hex, :ok, "2.3.0", "0a3d513ec9038504dc5359d44e14fc14ef59179e625563a1a144199cdc3a6d30", [:mix], [], "hexpm", "f0347b3f8f115bf347c704184b33cf084f2943771273f2b98a3707a5fa43c4d5"},
6054
"parse_trans": {:hex, :parse_trans, "3.4.1", "6e6aa8167cb44cc8f39441d05193be6e6f4e7c2946cb2759f015f8c56b76e5ff", [:rebar3], [], "hexpm", "620a406ce75dada827b82e453c19cf06776be266f5a67cff34e1ef2cbb60e49a"},
6155
"phoenix_pubsub": {:hex, :phoenix_pubsub, "2.2.0", "ff3a5616e1bed6804de7773b92cbccfc0b0f473faf1f63d7daf1206c7aeaaa6f", [:mix], [], "hexpm", "adc313a5bf7136039f63cfd9668fde73bba0765e0614cba80c06ac9460ff3e96"},

0 commit comments

Comments
 (0)