Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion lib/jido_codex/options.ex
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ defmodule Jido.Codex.Options do
defp request_defaults(%RunRequest{} = request) do
%{
transport: :exec,
thread_id: nil,
thread_id: normalize_session_id(request.session_id),
resume_last: false,
cancel_mode: :immediate,
codex_opts:
Expand Down Expand Up @@ -157,6 +157,12 @@ defmodule Jido.Codex.Options do
{:error, Error.validation_error("Invalid cancel mode", %{field: :cancel_mode, value: value})}
end

defp normalize_session_id(session_id) when is_binary(session_id) do
if String.trim(session_id) == "", do: nil, else: session_id
end

defp normalize_session_id(_session_id), do: nil

defp fetch_value(map, key) do
atom_value = Map.get(map, key)

Expand Down
18 changes: 9 additions & 9 deletions mix.lock
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
%{
"abacus": {:hex, :abacus, "2.1.0", "b6db5c989ba3d9dd8c36d1cb269e2f0058f34768d47c67eb8ce06697ecb36dd4", [:mix], [], "hexpm", "255de08b02884e8383f1eed8aa31df884ce0fb5eb394db81ff888089f2a1bbff"},
"abacus": {:hex, :abacus, "2.2.0", "2a7a1e4d35a72d481153f5bba7790a2d30a5cedf463e5be344d6769c9b5d0cba", [:mix], [], "hexpm", "dc89ccbd711986fd10a8e2f11f532b332f8a975c6c5967e4ec6b47b4ba92ff60"},
"acceptor_pool": {:hex, :acceptor_pool, "1.0.1", "d88c2e8a0be9216cf513fbcd3e5a4beb36bee3ff4168e85d6152c6f899359cdb", [:rebar3], [], "hexpm", "f172f3d74513e8edd445c257d596fc84dbdd56d2c6fa287434269648ae5a421e"},
"bandit": {:hex, :bandit, "1.10.4", "02b9734c67c5916a008e7eb7e2ba68aaea6f8177094a5f8d95f1fb99069aac17", [:mix], [{:hpax, "~> 1.0", [hex: :hpax, repo: "hexpm", optional: false]}, {:plug, "~> 1.18", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:thousand_island, "~> 1.0", [hex: :thousand_island, repo: "hexpm", optional: false]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "a5faf501042ac1f31d736d9d4a813b3db4ef812e634583b6a457b0928798a51d"},
"bunt": {:hex, :bunt, "1.0.0", "081c2c665f086849e6d57900292b3a161727ab40431219529f13c4ddcf3e7a44", [:mix], [], "hexpm", "dc5f86aa08a5f6fa6b8096f0735c4e76d54ae5c9fa2c143e5a1fc7c1cd9bb6b5"},
Expand All @@ -11,7 +11,7 @@
"credo": {:hex, :credo, "1.7.18", "5c5596bf7aedf9c8c227f13272ac499fe8eae6237bd326f2f07dfc173786f042", [: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", "a189d164685fd945809e862fe76a7420c4398fa288d76257662aecb909d6b3e5"},
"crontab": {:hex, :crontab, "1.2.0", "503611820257939d5d0fd272eb2b454f48a470435a809479ddc2c40bb515495c", [:mix], [{:ecto, "~> 1.0 or ~> 2.0 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}], "hexpm", "ebd7ef4d831e1b20fa4700f0de0284a04cac4347e813337978e25b4cc5cc2207"},
"ctx": {:hex, :ctx, "0.6.0", "8ff88b70e6400c4df90142e7f130625b82086077a45364a78d208ed3ed53c7fe", [:rebar3], [], "hexpm", "a14ed2d1b67723dbebbe423b28d7615eb0bdcba6ff28f2d1f1b0a7e1d4aa5fc2"},
"decimal": {:hex, :decimal, "2.3.0", "3ad6255aa77b4a3c4f818171b12d237500e63525c2fd056699967a3e7ea20f62", [:mix], [], "hexpm", "a4d66355cb29cb47c3cf30e71329e58361cfcb37c34235ef3bf1d7bf3773aeac"},
"decimal": {:hex, :decimal, "2.4.0", "a9c6bce0ee76fa75b9d3375bdaab8695d946de648e23e1c3280f7e77f7b279d9", [:mix], [], "hexpm", "70c8f058a7413c4f13026ac55455499c8136cacbd8e51528a10826dedeb82584"},
"deep_merge": {:hex, :deep_merge, "1.0.0", "b4aa1a0d1acac393bdf38b2291af38cb1d4a52806cf7a4906f718e1feb5ee961", [:mix], [], "hexpm", "ce708e5f094b9cd4e8f2be4f00d2f4250c4095be93f8cd6d018c753894885430"},
"dialyxir": {:hex, :dialyxir, "1.4.7", "dda948fcee52962e4b6c5b4b16b2d8fa7d50d8645bbae8b8685c3f9ecb7f5f4d", [:mix], [{:erlex, ">= 0.2.8", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "b34527202e6eb8cee198efec110996c25c5898f43a4094df157f8d28f27d9efe"},
"doctor": {:hex, :doctor, "0.22.0", "223e1cace1f16a38eda4113a5c435fa9b10d804aa72d3d9f9a71c471cc958fe7", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}], "hexpm", "96e22cf8c0df2e9777dc55ebaa5798329b9028889c4023fed3305688d902cd5b"},
Expand All @@ -38,14 +38,13 @@
"hpax": {:hex, :hpax, "1.0.3", "ed67ef51ad4df91e75cc6a1494f851850c0bd98ebc0be6e81b026e765ee535aa", [:mix], [], "hexpm", "8eab6e1cfa8d5918c2ce4ba43588e894af35dbd8e91e6e55c817bca5847df34a"},
"httpoison": {:hex, :httpoison, "2.3.0", "10eef046405bc44ba77dc5b48957944df8952cc4966364b3cf6aa71dce6de587", [:mix], [{:hackney, "~> 1.21", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "d388ee70be56d31a901e333dbcdab3682d356f651f93cf492ba9f06056436a2c"},
"idna": {:hex, :idna, "6.1.1", "8a63070e9f7d0c62eb9d9fcb360a7de382448200fbbd1b106cc96d3d8099df8d", [:rebar3], [{:unicode_util_compat, "~> 0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea"},
"jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"},
"jido": {:hex, :jido, "2.1.0", "cf456e6d213bc2ce2e60fcfea2531d703f00995eb55a69f345e18b011a636888", [:mix], [{:crontab, "~> 1.2", [hex: :crontab, repo: "hexpm", optional: false]}, {:deep_merge, "~> 1.0", [hex: :deep_merge, repo: "hexpm", optional: false]}, {:igniter, "~> 0.7", [hex: :igniter, repo: "hexpm", optional: true]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:jido_action, "~> 2.1", [hex: :jido_action, repo: "hexpm", optional: false]}, {:jido_signal, "~> 2.0", [hex: :jido_signal, repo: "hexpm", optional: false]}, {:nimble_options, "~> 1.1", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:ok, "~> 2.3", [hex: :ok, repo: "hexpm", optional: false]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:poolboy, "~> 1.5", [hex: :poolboy, repo: "hexpm", optional: false]}, {:splode, "~> 0.3.0", [hex: :splode, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.3", [hex: :telemetry, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 1.1", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}, {:tzdata, "~> 1.1", [hex: :tzdata, repo: "hexpm", optional: false]}, {:uniq, "~> 0.6.1", [hex: :uniq, repo: "hexpm", optional: false]}], "hexpm", "73f324054da426601a45684e70ab919e3d84ae75e4eebdacbad92869c92c987e"},
"jido_action": {:hex, :jido_action, "2.1.1", "77f01da5870ce383eefc82659a0c150ace06d637761118e697053e824eb99dba", [:mix], [{:abacus, "~> 2.1", [hex: :abacus, repo: "hexpm", optional: false]}, {:igniter, "~> 0.7", [hex: :igniter, repo: "hexpm", optional: true]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:libgraph, "~> 0.16.1-mg.1", [hex: :multigraph, repo: "hexpm", optional: false]}, {:lua, "~> 0.3", [hex: :lua, repo: "hexpm", optional: false]}, {:nimble_options, "~> 1.1", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:private, "~> 0.1.2", [hex: :private, repo: "hexpm", optional: false]}, {:req, "~> 0.5.10", [hex: :req, repo: "hexpm", optional: false]}, {:splode, "~> 0.3.0", [hex: :splode, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.3", [hex: :telemetry, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 1.1", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}, {:uniq, "~> 0.6.1", [hex: :uniq, repo: "hexpm", optional: false]}, {:zoi, "~> 0.17", [hex: :zoi, repo: "hexpm", optional: false]}], "hexpm", "a68649c30c4bae1808fe4551dce5eeed2e0a29765c3fd1e3a185137576e9be08"},
"jido_harness": {:git, "https://github.com/agentjido/jido_harness.git", "b8e1801060a87c8602604ba217de9358ec318f9a", [branch: "main"]},
"jason": {:hex, :jason, "1.4.5", "2e3a008590b0b8d7388c20293e9dcc9cf3e5d642fd2a114e4cbbb52e595d940a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0 or ~> 3.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "b0c823996102bcd0239b3c2444eb00409b72f6a140c1950bc8b457d836b30684"},
"jido": {:hex, :jido, "2.2.0", "055e54a82b468be1ebd0686be030090619549dde0da80f7085602010f68b687a", [:mix], [{:crontab, "~> 1.2", [hex: :crontab, repo: "hexpm", optional: false]}, {:deep_merge, "~> 1.0", [hex: :deep_merge, repo: "hexpm", optional: false]}, {:igniter, "~> 0.7", [hex: :igniter, repo: "hexpm", optional: true]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:jido_action, "~> 2.2", [hex: :jido_action, repo: "hexpm", optional: false]}, {:jido_signal, "~> 2.1", [hex: :jido_signal, repo: "hexpm", optional: false]}, {:nimble_options, "~> 1.1", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:ok, "~> 2.3", [hex: :ok, repo: "hexpm", optional: false]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:poolboy, "~> 1.5", [hex: :poolboy, repo: "hexpm", optional: false]}, {:splode, "~> 0.3.0", [hex: :splode, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.3", [hex: :telemetry, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 1.1", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}, {:tzdata, "~> 1.1", [hex: :tzdata, repo: "hexpm", optional: false]}, {:uniq, "~> 0.6.1", [hex: :uniq, repo: "hexpm", optional: false]}], "hexpm", "8c244395b5890f1332e6ef126963f6765c7d32ecc39b941fa5db08509d9cbb1e"},
"jido_action": {:hex, :jido_action, "2.2.1", "edf0fe1ca0ebbcda23520c9f7aa8ccadc338b5b07dd60cb658e2ef1736e896b7", [:mix], [{:abacus, "~> 2.1", [hex: :abacus, repo: "hexpm", optional: false]}, {:igniter, "~> 0.7", [hex: :igniter, repo: "hexpm", optional: true]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:lua, "~> 0.3", [hex: :lua, repo: "hexpm", optional: false]}, {:multigraph, "~> 0.16.1-mg.2", [hex: :multigraph, repo: "hexpm", optional: false]}, {:nimble_options, "~> 1.1", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:private, "~> 0.1.2", [hex: :private, repo: "hexpm", optional: false]}, {:req, "~> 0.5.10", [hex: :req, repo: "hexpm", optional: false]}, {:splode, "~> 0.3.0", [hex: :splode, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.3", [hex: :telemetry, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 1.1", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}, {:uniq, "~> 0.6.1", [hex: :uniq, repo: "hexpm", optional: false]}, {:zoi, "~> 0.17", [hex: :zoi, repo: "hexpm", optional: false]}], "hexpm", "db97d3a68ef4c87050c3428d1a7e42bf5fc804905ee003a52ad4887b950b02eb"},
"jido_harness": {:git, "https://github.com/agentjido/jido_harness.git", "64e35a8f90590c4f6075803714578cb9211fe9b9", [branch: "main"]},
"jido_shell": {:git, "https://github.com/agentjido/jido_shell.git", "5d7ecf096a0183e61798a2338ca57b036e1a3b93", [branch: "main"]},
"jido_signal": {:hex, :jido_signal, "2.0.0", "b203b516eea0ee13c4f274c7a5b3d20e457a60f0528c32b7bec6a84927d4a66b", [:mix], [{:fuse, "~> 2.5", [hex: :fuse, repo: "hexpm", optional: false]}, {:igniter, "~> 0.7", [hex: :igniter, repo: "hexpm", optional: true]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:memento, "~> 0.5.0", [hex: :memento, repo: "hexpm", optional: false]}, {:msgpax, "~> 2.3", [hex: :msgpax, repo: "hexpm", optional: false]}, {:nimble_options, "~> 1.1", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:splode, "~> 0.3.0", [hex: :splode, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.3", [hex: :telemetry, repo: "hexpm", optional: false]}, {:uniq, "~> 0.6.1", [hex: :uniq, repo: "hexpm", optional: false]}, {:zoi, "~> 0.17.1", [hex: :zoi, repo: "hexpm", optional: false]}], "hexpm", "9c7f9bc8645d3e32b66bfd7760a774418eb7e1d0ee89cb71792cbe500ebf2c0d"},
"jido_signal": {:hex, :jido_signal, "2.1.1", "7f9e96984f0ac33c3eb7901fdd9e4abd1296b12bfa282977959103e633be9e86", [:mix], [{:fuse, "~> 2.5", [hex: :fuse, repo: "hexpm", optional: false]}, {:igniter, "~> 0.7", [hex: :igniter, repo: "hexpm", optional: true]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:memento, "~> 0.5.0", [hex: :memento, repo: "hexpm", optional: false]}, {:msgpax, "~> 2.3", [hex: :msgpax, repo: "hexpm", optional: false]}, {:nimble_options, "~> 1.1", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:splode, "~> 0.3.0", [hex: :splode, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.3", [hex: :telemetry, repo: "hexpm", optional: false]}, {:uniq, "~> 0.6.1", [hex: :uniq, repo: "hexpm", optional: false]}, {:zoi, "~> 0.17.1", [hex: :zoi, repo: "hexpm", optional: false]}], "hexpm", "45744ffac00a734a63fddceafb6d447a9e36ae5918adcd467a68f188a29b4320"},
"jido_vfs": {:git, "https://github.com/agentjido/jido_vfs.git", "0817e6cade2e34dacf6b2e648e86ea14f4a84c84", [branch: "main"]},
"libgraph": {:hex, :multigraph, "0.16.1-mg.1", "70ab1c1df14794fafc89a821d6cc6f16d250ae4c6d26b3dad76e395a33214763", [:mix], [], "hexpm", "629dd5233cc421d20ea01e0ee101ac0552f9c92d524f6788297415379d35644a"},
"lua": {:hex, :lua, "0.4.0", "de0f04871fdd133cd13a0662690b4fd3ba7a73ca5857493c4665a0a4251908fe", [:mix], [{:luerl, "~> 1.5.1", [hex: :luerl, repo: "hexpm", optional: false]}], "hexpm", "648e17ab9faa1ab1a788fa58ed608366a7026d0eeaec2f311510c065817c4067"},
"luerl": {:hex, :luerl, "1.5.1", "f6700420950fc6889137e7a0c11c4a8467dea04a8c23f707a40d83566d14e786", [:rebar3], [], "hexpm", "abf88d849baa0d5dca93b245a8688d4de2ee3d588159bb2faf51e15946509390"},
"makeup": {:hex, :makeup, "1.2.1", "e90ac1c65589ef354378def3ba19d401e739ee7ee06fb47f94c687016e3713d1", [:mix], [{:nimble_parsec, "~> 1.4", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "d36484867b0bae0fea568d10131197a4c2e47056a6fbe84922bf6ba71c8d17ce"},
Expand All @@ -54,9 +53,10 @@
"memento": {:hex, :memento, "0.5.0", "9c6943aa9c4c792b19ab2862159e2f7f5b7ec011801e3270b0bf220f15cb6aed", [:mix], [], "hexpm", "f4c2108737640a0e9d3cd2f230f46863d746d5ab333b0ecd28619a2ae330d881"},
"metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm", "69b09adddc4f74a40716ae54d140f93beb0fb8978d8636eaded0c31b6f099f16"},
"mime": {:hex, :mime, "2.0.7", "b8d739037be7cd402aee1ba0306edfdef982687ee7e9859bee6198c1e7e2f128", [:mix], [], "hexpm", "6171188e399ee16023ffc5b76ce445eb6d9672e2e241d2df6050f3c771e80ccd"},
"mimerl": {:hex, :mimerl, "1.4.0", "3882a5ca67fbbe7117ba8947f27643557adec38fa2307490c4c4207624cb213b", [:rebar3], [], "hexpm", "13af15f9f68c65884ecca3a3891d50a7b57d82152792f3e19d88650aa126b144"},
"mimerl": {:hex, :mimerl, "1.5.0", "f35aca6f23242339b3666e0ac0702379e362b469d0aea167f6cc713547e777ed", [:rebar3], [], "hexpm", "db648ce065bae14ea84ca8b5dd123f42f49417cef693541110bf6f9e9be9ecc4"},
"mint": {:hex, :mint, "1.7.1", "113fdb2b2f3b59e47c7955971854641c61f378549d73e829e1768de90fc1abf1", [:mix], [{:castore, "~> 0.1.0 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:hpax, "~> 0.1.1 or ~> 0.2.0 or ~> 1.0", [hex: :hpax, repo: "hexpm", optional: false]}], "hexpm", "fceba0a4d0f24301ddee3024ae116df1c3f4bb7a563a731f45fdfeb9d39a231b"},
"msgpax": {:hex, :msgpax, "2.4.0", "4647575c87cb0c43b93266438242c21f71f196cafa268f45f91498541148c15d", [:mix], [{:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "ca933891b0e7075701a17507c61642bf6e0407bb244040d5d0a58597a06369d2"},
"multigraph": {:hex, :multigraph, "0.16.1-mg.3", "08051b7108ad870f24393e6f0c15ac8beb5c527942ed63800ece7fbb771f8c79", [:mix], [], "hexpm", "72897c5c175aa605cf7355b8f73972e8eadc40ebc6ffd43c3e790424a753d468"},
"nimble_options": {:hex, :nimble_options, "1.1.1", "e3a492d54d85fc3fd7c5baf411d9d2852922f66e69476317787a7b2bb000a61b", [:mix], [], "hexpm", "821b2470ca9442c4b6984882fe9bb0389371b8ddec4d45a9504f00a66f650b44"},
"nimble_parsec": {:hex, :nimble_parsec, "1.4.2", "8efba0122db06df95bfaa78f791344a89352ba04baedd3849593bfce4d0dc1c6", [:mix], [], "hexpm", "4b21398942dda052b403bbe1da991ccd03a053668d147d53fb8c4e0efe09c973"},
"nimble_pool": {:hex, :nimble_pool, "1.1.0", "bf9c29fbdcba3564a8b800d1eeb5a3c58f36e1e11d7b7fb2e084a643f645f06b", [:mix], [], "hexpm", "af2e4e6b34197db81f7aad230c1118eac993acc0dae6bc83bac0126d4ae0813a"},
Expand Down
29 changes: 29 additions & 0 deletions test/jido/codex/adapter_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ defmodule Jido.Codex.AdapterTest do
caps = Adapter.capabilities()
assert caps.streaming? == true
assert caps.tool_calls? == true
assert caps.resume? == true
assert caps.cancellation? == true
end

Expand Down Expand Up @@ -166,6 +167,34 @@ defmodule Jido.Codex.AdapterTest do
assert_receive {:resume_thread, "thread-123", _codex_opts, _thread_opts}
end

test "run/2 maps harness session_id to codex thread_id" do
request =
Jido.Harness.RunRequest.new!(%{
prompt: "hello",
session_id: "thread-from-harness",
metadata: %{}
})

assert {:ok, stream} = Adapter.run(request)
_ = Enum.to_list(stream)

assert_receive {:resume_thread, "thread-from-harness", _codex_opts, _thread_opts}
end

test "codex metadata thread_id overrides harness session_id" do
request =
Jido.Harness.RunRequest.new!(%{
prompt: "hello",
session_id: "thread-from-harness",
metadata: %{"codex" => %{"thread_id" => "thread-from-metadata"}}
})

assert {:ok, stream} = Adapter.run(request)
_ = Enum.to_list(stream)

assert_receive {:resume_thread, "thread-from-metadata", _codex_opts, _thread_opts}
end

test "run/2 uses resume_last when configured" do
request =
Jido.Harness.RunRequest.new!(%{
Expand Down
Loading