@asm-agent/coding-agent 0.8.8 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/README.md +2 -7
- package/dist/asm-agent-runtime/src/__pycache__/asm_cm_driver.cpython-313.pyc +0 -0
- package/dist/asm-agent-runtime/src/__pycache__/phase76_address_head.cpython-313.pyc +0 -0
- package/dist/asm-agent-runtime/src/rlm/__init__.py +1 -1
- package/dist/asm-agent-runtime/src/rlm/__pycache__/__init__.cpython-312.pyc +0 -0
- package/dist/asm-agent-runtime/src/rlm/__pycache__/__init__.cpython-313.pyc +0 -0
- package/dist/asm-agent-runtime/src/rlm/__pycache__/bash.cpython-312.pyc +0 -0
- package/dist/asm-agent-runtime/src/rlm/__pycache__/bash.cpython-313.pyc +0 -0
- package/dist/asm-agent-runtime/src/rlm/__pycache__/mcp.cpython-312.pyc +0 -0
- package/dist/asm-agent-runtime/src/rlm/__pycache__/mcp_base.cpython-312.pyc +0 -0
- package/dist/asm-agent-runtime/src/rlm/__pycache__/repl.cpython-312.pyc +0 -0
- package/dist/asm-agent-runtime/src/rlm/__pycache__/repl.cpython-313.pyc +0 -0
- package/dist/asm-agent-runtime/src/rlm/__pycache__/skill.cpython-313.pyc +0 -0
- package/dist/asm-agent-runtime/src/rlm/bash.py +94 -31
- package/dist/asm-agent-runtime/src/rlm/repl.md +3 -3
- package/dist/asm-agent-runtime/src/rlm/repl.py +46 -45
- package/dist/asm-agent-runtime/test/__pycache__/test_bash.cpython-313.pyc +0 -0
- package/dist/asm-agent-runtime/test/__pycache__/test_repl.cpython-313.pyc +0 -0
- package/dist/asm-agent-runtime/test/test_bash.py +74 -19
- package/dist/asm-agent-runtime/test/test_repl.py +67 -3
- package/dist/asm-agent-runtime/uv.lock +446 -155
- package/dist/bundle/{anthropic-OFECORE7.js → anthropic-ZOZNPFXS.js} +2 -2
- package/dist/bundle/{azure-openai-responses-AOVTLR6N.js → azure-openai-responses-TDHCU647.js} +2 -2
- package/dist/bundle/{bundled-modules-JQCJDEIY.js → bundled-modules-Q2YODC4B.js} +3 -3
- package/dist/bundle/{chunk-M67RGWDQ.js → chunk-AMKLNEAK.js} +25 -44
- package/dist/bundle/{chunk-7TB7CGPV.js → chunk-FPY7FFJS.js} +978 -1821
- package/dist/bundle/{chunk-JC2TT4MZ.js → chunk-G6SC4YYW.js} +4942 -1916
- package/dist/bundle/{chunk-A65OM3TZ.js → chunk-QLHAP3FT.js} +1 -1
- package/dist/bundle/{cli-main-FNHDQGQD.js → cli-main-277AG2BR.js} +3 -3
- package/dist/bundle/cli.js +1 -1
- package/dist/bundle/{google-RVJL6RIQ.js → google-Q3AJWUOY.js} +1 -1
- package/dist/bundle/{google-vertex-EZTRRRH6.js → google-vertex-2CSNOUBS.js} +1 -1
- package/dist/bundle/{main-IYXIIAJN.js → main-TNXWJXIU.js} +3 -3
- package/dist/bundle/{mistral-FSGKSMA7.js → mistral-XRYJGLLG.js} +1 -1
- package/dist/bundle/{openai-codex-responses-VM5Y564D.js → openai-codex-responses-C6BRO2BN.js} +2 -2
- package/dist/bundle/{openai-completions-X46FOQDN.js → openai-completions-DNXCK2JW.js} +3 -3
- package/dist/bundle/{openai-responses-SOQNEPBE.js → openai-responses-BEMWVIXE.js} +2 -2
- package/dist/config.d.ts +0 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +0 -3
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session-config.d.ts +1 -2
- package/dist/core/agent-session-config.d.ts.map +1 -1
- package/dist/core/agent-session-config.js +0 -3
- package/dist/core/agent-session-config.js.map +1 -1
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +0 -8
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session-services.d.ts +0 -2
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +0 -22
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session.d.ts +8 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +100 -22
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/kernel/bootstrap.d.ts.map +1 -1
- package/dist/core/kernel/bootstrap.js +1 -1
- package/dist/core/kernel/bootstrap.js.map +1 -1
- package/dist/core/kernel/repl-manager.d.ts +32 -8
- package/dist/core/kernel/repl-manager.d.ts.map +1 -1
- package/dist/core/kernel/repl-manager.js +401 -102
- package/dist/core/kernel/repl-manager.js.map +1 -1
- package/dist/core/kernel/shared.d.ts +11 -7
- package/dist/core/kernel/shared.d.ts.map +1 -1
- package/dist/core/kernel/shared.js +2 -5
- package/dist/core/kernel/shared.js.map +1 -1
- package/dist/core/mcp/mcp-manager.d.ts +4 -2
- package/dist/core/mcp/mcp-manager.d.ts.map +1 -1
- package/dist/core/mcp/mcp-manager.js +9 -7
- package/dist/core/mcp/mcp-manager.js.map +1 -1
- package/dist/core/prime-inference-auth.d.ts +0 -9
- package/dist/core/prime-inference-auth.d.ts.map +1 -1
- package/dist/core/prime-inference-auth.js +0 -50
- package/dist/core/prime-inference-auth.js.map +1 -1
- package/dist/core/provider-display-names.d.ts.map +1 -1
- package/dist/core/provider-display-names.js +0 -1
- package/dist/core/provider-display-names.js.map +1 -1
- package/dist/core/session-manager.d.ts +0 -4
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +0 -22
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-manager.d.ts +4 -16
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +13 -43
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +0 -5
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/tools/acp-mcp.d.ts +6 -0
- package/dist/core/tools/acp-mcp.d.ts.map +1 -0
- package/dist/core/tools/acp-mcp.js +86 -0
- package/dist/core/tools/acp-mcp.js.map +1 -0
- package/dist/core/tools/index.d.ts +1 -0
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +1 -0
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/ipython.d.ts.map +1 -1
- package/dist/core/tools/ipython.js +9 -4
- package/dist/core/tools/ipython.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +2 -11
- package/dist/main.js.map +1 -1
- package/dist/modes/acp/acp-mode.d.ts.map +1 -1
- package/dist/modes/acp/acp-mode.js +1 -1
- package/dist/modes/acp/acp-mode.js.map +1 -1
- package/dist/modes/agent-connection/daemon-agent-connection.d.ts +0 -2
- package/dist/modes/agent-connection/daemon-agent-connection.d.ts.map +1 -1
- package/dist/modes/agent-connection/daemon-agent-connection.js +0 -2
- package/dist/modes/agent-connection/daemon-agent-connection.js.map +1 -1
- package/dist/modes/agents-view/agents-view-mode.d.ts.map +1 -1
- package/dist/modes/agents-view/agents-view-mode.js +0 -19
- package/dist/modes/agents-view/agents-view-mode.js.map +1 -1
- package/dist/modes/daemon/daemon-mode.d.ts +1 -10
- package/dist/modes/daemon/daemon-mode.d.ts.map +1 -1
- package/dist/modes/daemon/daemon-mode.js +134 -274
- package/dist/modes/daemon/daemon-mode.js.map +1 -1
- package/dist/modes/daemon/daemon-protocol.d.ts +11 -5
- package/dist/modes/daemon/daemon-protocol.d.ts.map +1 -1
- package/dist/modes/daemon/daemon-protocol.js +6 -8
- package/dist/modes/daemon/daemon-protocol.js.map +1 -1
- package/dist/modes/daemon/daemon-supervisor.d.ts +0 -3
- package/dist/modes/daemon/daemon-supervisor.d.ts.map +1 -1
- package/dist/modes/daemon/daemon-supervisor.js +18 -52
- package/dist/modes/daemon/daemon-supervisor.js.map +1 -1
- package/dist/modes/daemon/daemon-worker-protocol.d.ts +1 -6
- package/dist/modes/daemon/daemon-worker-protocol.d.ts.map +1 -1
- package/dist/modes/daemon/daemon-worker-protocol.js +0 -2
- package/dist/modes/daemon/daemon-worker-protocol.js.map +1 -1
- package/dist/modes/interactive/auth-flows.d.ts +0 -2
- package/dist/modes/interactive/auth-flows.d.ts.map +1 -1
- package/dist/modes/interactive/auth-flows.js +1 -101
- package/dist/modes/interactive/auth-flows.js.map +1 -1
- package/dist/modes/interactive/components/assistant-message.d.ts +6 -1
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js +13 -3
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +2 -2
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/mermaid.d.ts +12 -0
- package/dist/modes/interactive/components/mermaid.d.ts.map +1 -0
- package/dist/modes/interactive/components/mermaid.js +63 -0
- package/dist/modes/interactive/components/mermaid.js.map +1 -0
- package/dist/modes/interactive/components/settings-selector.d.ts +3 -1
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +10 -0
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/feature-hints.d.ts.map +1 -1
- package/dist/modes/interactive/feature-hints.js +0 -4
- package/dist/modes/interactive/feature-hints.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +1 -7
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +23 -279
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/utils/version-check.d.ts.map +1 -1
- package/dist/utils/version-check.js +1 -1
- package/dist/utils/version-check.js.map +1 -1
- package/docs/settings.md +1 -31
- package/docs/usage.md +1 -4
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/package.json +6 -5
- package/dist/core/agent-traces.d.ts +0 -130
- package/dist/core/agent-traces.d.ts.map +0 -1
- package/dist/core/agent-traces.js +0 -746
- package/dist/core/agent-traces.js.map +0 -1
- package/dist/core/telemetry.d.ts +0 -92
- package/dist/core/telemetry.d.ts.map +0 -1
- package/dist/core/telemetry.js +0 -633
- package/dist/core/telemetry.js.map +0 -1
|
@@ -117,7 +117,7 @@ class ReplTest(unittest.TestCase):
|
|
|
117
117
|
|
|
118
118
|
def test_ready_handshake_and_startup_time(self):
|
|
119
119
|
self.assertEqual(self.ready_event["event"], "ready")
|
|
120
|
-
self.assertEqual(self.ready_event["protocol"],
|
|
120
|
+
self.assertEqual(self.ready_event["protocol"], 3)
|
|
121
121
|
major, minor = sys.version_info[:2]
|
|
122
122
|
self.assertTrue(self.ready_event["python"].startswith(f"{major}.{minor}."))
|
|
123
123
|
# Loose bound for loaded CI machines; still catches an order-of-magnitude regression.
|
|
@@ -779,11 +779,75 @@ class ReplTest(unittest.TestCase):
|
|
|
779
779
|
while request.get("event") != "host_request":
|
|
780
780
|
request = self.repl.read_event()
|
|
781
781
|
self.assertEqual(request["data"], {"type": "demo", "value": 7})
|
|
782
|
-
|
|
782
|
+
envelope = {"status": "ok", "result": {"status": "weird", "answer": 42}}
|
|
783
|
+
self.repl.send({"type": "host_reply", "id": request["id"], "data": envelope})
|
|
783
784
|
events = self.repl.until_done("hr")
|
|
784
|
-
self.assertEqual(one(events, "result")["text"],
|
|
785
|
+
self.assertEqual(one(events, "result")["text"], repr(envelope))
|
|
785
786
|
self.assertEqual(one(events, "done")["status"], "ok")
|
|
786
787
|
|
|
788
|
+
def test_typed_host_request_unwraps_exact_handler_result(self):
|
|
789
|
+
code = "\n".join(
|
|
790
|
+
[
|
|
791
|
+
"from rlm import host_request",
|
|
792
|
+
"reply = await host_request('demo')",
|
|
793
|
+
"reply",
|
|
794
|
+
]
|
|
795
|
+
)
|
|
796
|
+
self.repl.send({"type": "execute", "id": "typed-hr", "code": code})
|
|
797
|
+
request = self.repl.read_event()
|
|
798
|
+
while request.get("event") != "host_request":
|
|
799
|
+
request = self.repl.read_event()
|
|
800
|
+
handler_result = {"status": "weird", "answer": 42}
|
|
801
|
+
self.repl.send(
|
|
802
|
+
{
|
|
803
|
+
"type": "host_reply",
|
|
804
|
+
"id": request["id"],
|
|
805
|
+
"data": {"status": "ok", "result": handler_result},
|
|
806
|
+
}
|
|
807
|
+
)
|
|
808
|
+
events = self.repl.until_done("typed-hr")
|
|
809
|
+
self.assertEqual(one(events, "result")["text"], repr(handler_result))
|
|
810
|
+
self.assertEqual(one(events, "done")["status"], "ok")
|
|
811
|
+
|
|
812
|
+
def test_typed_host_request_raises_host_error(self):
|
|
813
|
+
code = "from rlm import host_request\nawait host_request('demo')"
|
|
814
|
+
self.repl.send({"type": "execute", "id": "typed-error", "code": code})
|
|
815
|
+
request = self.repl.read_event()
|
|
816
|
+
while request.get("event") != "host_request":
|
|
817
|
+
request = self.repl.read_event()
|
|
818
|
+
self.repl.send(
|
|
819
|
+
{
|
|
820
|
+
"type": "host_reply",
|
|
821
|
+
"id": request["id"],
|
|
822
|
+
"data": {"status": "error", "error": "handler exploded"},
|
|
823
|
+
}
|
|
824
|
+
)
|
|
825
|
+
events = self.repl.until_done("typed-error")
|
|
826
|
+
self.assertEqual(one(events, "error")["ename"], "RuntimeError")
|
|
827
|
+
self.assertEqual(one(events, "error")["evalue"], "handler exploded")
|
|
828
|
+
self.assertEqual(one(events, "done")["status"], "error")
|
|
829
|
+
|
|
830
|
+
def test_typed_host_request_rejects_unexpected_envelope_status(self):
|
|
831
|
+
code = "from rlm import host_request\nawait host_request('demo')"
|
|
832
|
+
self.repl.send({"type": "execute", "id": "typed-unexpected", "code": code})
|
|
833
|
+
request = self.repl.read_event()
|
|
834
|
+
while request.get("event") != "host_request":
|
|
835
|
+
request = self.repl.read_event()
|
|
836
|
+
self.repl.send(
|
|
837
|
+
{
|
|
838
|
+
"type": "host_reply",
|
|
839
|
+
"id": request["id"],
|
|
840
|
+
"data": {"status": "partial", "result": {}},
|
|
841
|
+
}
|
|
842
|
+
)
|
|
843
|
+
events = self.repl.until_done("typed-unexpected")
|
|
844
|
+
self.assertEqual(one(events, "error")["ename"], "RuntimeError")
|
|
845
|
+
self.assertEqual(
|
|
846
|
+
one(events, "error")["evalue"],
|
|
847
|
+
"host request demo returned unexpected status: 'partial'",
|
|
848
|
+
)
|
|
849
|
+
self.assertEqual(one(events, "done")["status"], "error")
|
|
850
|
+
|
|
787
851
|
def test_host_reply_for_unknown_id_dropped(self):
|
|
788
852
|
self.repl.send({"type": "host_reply", "id": "no-such-request", "data": {"status": "ok"}})
|
|
789
853
|
events = self.repl.execute("ok", "'alive'")
|