@animalabs/agent-framework 0.23.2 → 0.24.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/README.md +212 -42
- package/dist/src/agent.d.ts +60 -9
- package/dist/src/agent.d.ts.map +1 -1
- package/dist/src/agent.js +92 -12
- package/dist/src/agent.js.map +1 -1
- package/dist/src/api/server.d.ts.map +1 -1
- package/dist/src/api/server.js +14 -12
- package/dist/src/api/server.js.map +1 -1
- package/dist/src/code-execution/engine.d.ts +177 -0
- package/dist/src/code-execution/engine.d.ts.map +1 -0
- package/dist/src/code-execution/engine.js +494 -0
- package/dist/src/code-execution/engine.js.map +1 -0
- package/dist/src/code-execution/index.d.ts +5 -10
- package/dist/src/code-execution/index.d.ts.map +1 -1
- package/dist/src/code-execution/index.js +5 -9
- package/dist/src/code-execution/index.js.map +1 -1
- package/dist/src/code-execution/isolate/calls.d.ts +114 -0
- package/dist/src/code-execution/isolate/calls.d.ts.map +1 -0
- package/dist/src/code-execution/isolate/calls.js +145 -0
- package/dist/src/code-execution/isolate/calls.js.map +1 -0
- package/dist/src/code-execution/isolate/child-entry.d.ts +2 -0
- package/dist/src/code-execution/isolate/child-entry.d.ts.map +1 -0
- package/dist/src/code-execution/isolate/child-entry.js +5 -0
- package/dist/src/code-execution/isolate/child-entry.js.map +1 -0
- package/dist/src/code-execution/isolate/child-main.d.ts +26 -0
- package/dist/src/code-execution/isolate/child-main.d.ts.map +1 -0
- package/dist/src/code-execution/isolate/child-main.js +132 -0
- package/dist/src/code-execution/isolate/child-main.js.map +1 -0
- package/dist/src/code-execution/isolate/child.d.ts +44 -0
- package/dist/src/code-execution/isolate/child.d.ts.map +1 -0
- package/dist/src/code-execution/isolate/child.js +315 -0
- package/dist/src/code-execution/isolate/child.js.map +1 -0
- package/dist/src/code-execution/isolate/frames.d.ts +80 -0
- package/dist/src/code-execution/isolate/frames.d.ts.map +1 -0
- package/dist/src/code-execution/isolate/frames.js +210 -0
- package/dist/src/code-execution/isolate/frames.js.map +1 -0
- package/dist/src/code-execution/isolate/output.d.ts +68 -0
- package/dist/src/code-execution/isolate/output.d.ts.map +1 -0
- package/dist/src/code-execution/isolate/output.js +143 -0
- package/dist/src/code-execution/isolate/output.js.map +1 -0
- package/dist/src/code-execution/isolate/prelude.d.ts +109 -0
- package/dist/src/code-execution/isolate/prelude.d.ts.map +1 -0
- package/dist/src/code-execution/isolate/prelude.js +401 -0
- package/dist/src/code-execution/isolate/prelude.js.map +1 -0
- package/dist/src/code-execution/isolate/protocol.d.ts +151 -0
- package/dist/src/code-execution/isolate/protocol.d.ts.map +1 -0
- package/dist/src/code-execution/isolate/protocol.js +150 -0
- package/dist/src/code-execution/isolate/protocol.js.map +1 -0
- package/dist/src/code-execution/isolate/render.d.ts +57 -0
- package/dist/src/code-execution/isolate/render.d.ts.map +1 -0
- package/dist/src/code-execution/isolate/render.js +214 -0
- package/dist/src/code-execution/isolate/render.js.map +1 -0
- package/dist/src/code-execution/isolate/runner.d.ts +250 -0
- package/dist/src/code-execution/isolate/runner.d.ts.map +1 -0
- package/dist/src/code-execution/isolate/runner.js +854 -0
- package/dist/src/code-execution/isolate/runner.js.map +1 -0
- package/dist/src/code-execution/isolate/scripts.d.ts +175 -0
- package/dist/src/code-execution/isolate/scripts.d.ts.map +1 -0
- package/dist/src/code-execution/isolate/scripts.js +357 -0
- package/dist/src/code-execution/isolate/scripts.js.map +1 -0
- package/dist/src/code-execution/quickjs.wasm +0 -0
- package/dist/src/code-execution/tool-definition.d.ts +93 -43
- package/dist/src/code-execution/tool-definition.d.ts.map +1 -1
- package/dist/src/code-execution/tool-definition.js +176 -142
- package/dist/src/code-execution/tool-definition.js.map +1 -1
- package/dist/src/deadline-timer.d.ts +3 -0
- package/dist/src/deadline-timer.d.ts.map +1 -1
- package/dist/src/deadline-timer.js +1 -1
- package/dist/src/deadline-timer.js.map +1 -1
- package/dist/src/framework.d.ts +1027 -440
- package/dist/src/framework.d.ts.map +1 -1
- package/dist/src/framework.js +4093 -2238
- package/dist/src/framework.js.map +1 -1
- package/dist/src/gate/event-gate.d.ts +28 -1
- package/dist/src/gate/event-gate.d.ts.map +1 -1
- package/dist/src/gate/event-gate.js +88 -10
- package/dist/src/gate/event-gate.js.map +1 -1
- package/dist/src/held-writes.d.ts +16 -3
- package/dist/src/held-writes.d.ts.map +1 -1
- package/dist/src/held-writes.js +16 -3
- package/dist/src/held-writes.js.map +1 -1
- package/dist/src/index.d.ts +6 -6
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +9 -8
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcpl/channel-registry.d.ts +471 -75
- package/dist/src/mcpl/channel-registry.d.ts.map +1 -1
- package/dist/src/mcpl/channel-registry.js +1673 -337
- package/dist/src/mcpl/channel-registry.js.map +1 -1
- package/dist/src/mcpl/conversation-router.d.ts +12 -7
- package/dist/src/mcpl/conversation-router.d.ts.map +1 -1
- package/dist/src/mcpl/conversation-router.js +12 -7
- package/dist/src/mcpl/conversation-router.js.map +1 -1
- package/dist/src/mcpl/convert-block.d.ts.map +1 -1
- package/dist/src/mcpl/convert-block.js +9 -5
- package/dist/src/mcpl/convert-block.js.map +1 -1
- package/dist/src/mcpl/inbound-source.d.ts +50 -0
- package/dist/src/mcpl/inbound-source.d.ts.map +1 -1
- package/dist/src/mcpl/inbound-source.js +130 -0
- package/dist/src/mcpl/inbound-source.js.map +1 -1
- package/dist/src/mcpl/index.d.ts +2 -1
- package/dist/src/mcpl/index.d.ts.map +1 -1
- package/dist/src/mcpl/index.js +3 -2
- package/dist/src/mcpl/index.js.map +1 -1
- package/dist/src/mcpl/log-value.d.ts +6 -0
- package/dist/src/mcpl/log-value.d.ts.map +1 -1
- package/dist/src/mcpl/log-value.js +8 -0
- package/dist/src/mcpl/log-value.js.map +1 -1
- package/dist/src/mcpl/modern-connection.d.ts +15 -6
- package/dist/src/mcpl/modern-connection.d.ts.map +1 -1
- package/dist/src/mcpl/modern-connection.js +168 -53
- package/dist/src/mcpl/modern-connection.js.map +1 -1
- package/dist/src/mcpl/prose-grammar.d.ts +4 -5
- package/dist/src/mcpl/prose-grammar.d.ts.map +1 -1
- package/dist/src/mcpl/prose-grammar.js +4 -5
- package/dist/src/mcpl/prose-grammar.js.map +1 -1
- package/dist/src/mcpl/protocol-family.d.ts +97 -10
- package/dist/src/mcpl/protocol-family.d.ts.map +1 -1
- package/dist/src/mcpl/protocol-family.js +173 -16
- package/dist/src/mcpl/protocol-family.js.map +1 -1
- package/dist/src/mcpl/push-coalescer.d.ts +132 -14
- package/dist/src/mcpl/push-coalescer.d.ts.map +1 -1
- package/dist/src/mcpl/push-coalescer.js +227 -50
- package/dist/src/mcpl/push-coalescer.js.map +1 -1
- package/dist/src/mcpl/push-handler.d.ts +6 -1
- package/dist/src/mcpl/push-handler.d.ts.map +1 -1
- package/dist/src/mcpl/push-handler.js +4 -1
- package/dist/src/mcpl/push-handler.js.map +1 -1
- package/dist/src/mcpl/reference-fetcher.d.ts +2 -2
- package/dist/src/mcpl/reference-fetcher.d.ts.map +1 -1
- package/dist/src/mcpl/reference-fetcher.js +4 -4
- package/dist/src/mcpl/reference-fetcher.js.map +1 -1
- package/dist/src/mcpl/server-connection.d.ts +50 -21
- package/dist/src/mcpl/server-connection.d.ts.map +1 -1
- package/dist/src/mcpl/server-connection.js +158 -74
- package/dist/src/mcpl/server-connection.js.map +1 -1
- package/dist/src/mcpl/tags.d.ts +24 -0
- package/dist/src/mcpl/tags.d.ts.map +1 -1
- package/dist/src/mcpl/tags.js +33 -0
- package/dist/src/mcpl/tags.js.map +1 -1
- package/dist/src/mcpl/tool-result-normalize.d.ts +2 -1
- package/dist/src/mcpl/tool-result-normalize.d.ts.map +1 -1
- package/dist/src/mcpl/tool-result-normalize.js.map +1 -1
- package/dist/src/mcpl/transport.d.ts +55 -7
- package/dist/src/mcpl/transport.d.ts.map +1 -1
- package/dist/src/mcpl/transport.js +163 -34
- package/dist/src/mcpl/transport.js.map +1 -1
- package/dist/src/mcpl/types.d.ts +22 -6
- package/dist/src/mcpl/types.d.ts.map +1 -1
- package/dist/src/mcpl/types.js.map +1 -1
- package/dist/src/module-registry.d.ts +4 -2
- package/dist/src/module-registry.d.ts.map +1 -1
- package/dist/src/module-registry.js +100 -13
- package/dist/src/module-registry.js.map +1 -1
- package/dist/src/modules/discord/index.d.ts.map +1 -1
- package/dist/src/modules/discord/index.js +8 -13
- package/dist/src/modules/discord/index.js.map +1 -1
- package/dist/src/modules/history/index.d.ts.map +1 -1
- package/dist/src/modules/history/index.js +27 -4
- package/dist/src/modules/history/index.js.map +1 -1
- package/dist/src/modules/history/semantic.d.ts +15 -3
- package/dist/src/modules/history/semantic.d.ts.map +1 -1
- package/dist/src/modules/history/semantic.js +27 -5
- package/dist/src/modules/history/semantic.js.map +1 -1
- package/dist/src/modules/index.d.ts +1 -1
- package/dist/src/modules/index.d.ts.map +1 -1
- package/dist/src/modules/index.js.map +1 -1
- package/dist/src/modules/unknown-tool.d.ts +4 -1
- package/dist/src/modules/unknown-tool.d.ts.map +1 -1
- package/dist/src/modules/unknown-tool.js +4 -1
- package/dist/src/modules/unknown-tool.js.map +1 -1
- package/dist/src/modules/workspace/branch-intent.d.ts +3 -1
- package/dist/src/modules/workspace/branch-intent.d.ts.map +1 -1
- package/dist/src/modules/workspace/branch-intent.js +3 -1
- package/dist/src/modules/workspace/branch-intent.js.map +1 -1
- package/dist/src/modules/workspace/edit-plan.d.ts +265 -0
- package/dist/src/modules/workspace/edit-plan.d.ts.map +1 -0
- package/dist/src/modules/workspace/edit-plan.js +794 -0
- package/dist/src/modules/workspace/edit-plan.js.map +1 -0
- package/dist/src/modules/workspace/edit-text.d.ts +117 -0
- package/dist/src/modules/workspace/edit-text.d.ts.map +1 -0
- package/dist/src/modules/workspace/edit-text.js +584 -0
- package/dist/src/modules/workspace/edit-text.js.map +1 -0
- package/dist/src/modules/workspace/effects.d.ts +5 -4
- package/dist/src/modules/workspace/effects.d.ts.map +1 -1
- package/dist/src/modules/workspace/effects.js +78 -25
- package/dist/src/modules/workspace/effects.js.map +1 -1
- package/dist/src/modules/workspace/index.d.ts +484 -61
- package/dist/src/modules/workspace/index.d.ts.map +1 -1
- package/dist/src/modules/workspace/index.js +2173 -645
- package/dist/src/modules/workspace/index.js.map +1 -1
- package/dist/src/modules/workspace/observe.d.ts +213 -38
- package/dist/src/modules/workspace/observe.d.ts.map +1 -1
- package/dist/src/modules/workspace/observe.js +416 -36
- package/dist/src/modules/workspace/observe.js.map +1 -1
- package/dist/src/modules/workspace/reconcile.d.ts.map +1 -1
- package/dist/src/modules/workspace/reconcile.js +15 -8
- package/dist/src/modules/workspace/reconcile.js.map +1 -1
- package/dist/src/modules/workspace/text.d.ts +32 -0
- package/dist/src/modules/workspace/text.d.ts.map +1 -0
- package/dist/src/modules/workspace/text.js +67 -0
- package/dist/src/modules/workspace/text.js.map +1 -0
- package/dist/src/modules/workspace/types.d.ts +210 -6
- package/dist/src/modules/workspace/types.d.ts.map +1 -1
- package/dist/src/modules/workspace/types.js.map +1 -1
- package/dist/src/modules/workspace/watcher.d.ts +3 -2
- package/dist/src/modules/workspace/watcher.d.ts.map +1 -1
- package/dist/src/modules/workspace/watcher.js.map +1 -1
- package/dist/src/operator-log.d.ts +52 -24
- package/dist/src/operator-log.d.ts.map +1 -1
- package/dist/src/operator-log.js.map +1 -1
- package/dist/src/recovery/discord-awareness-outbox.d.ts +496 -72
- package/dist/src/recovery/discord-awareness-outbox.d.ts.map +1 -1
- package/dist/src/recovery/discord-awareness-outbox.js +1196 -289
- package/dist/src/recovery/discord-awareness-outbox.js.map +1 -1
- package/dist/src/recovery/offline-branch.d.ts +26 -1
- package/dist/src/recovery/offline-branch.d.ts.map +1 -1
- package/dist/src/recovery/offline-branch.js +164 -39
- package/dist/src/recovery/offline-branch.js.map +1 -1
- package/dist/src/recovery/recover-cli.js +23 -4
- package/dist/src/recovery/recover-cli.js.map +1 -1
- package/dist/src/send-tools.d.ts +11 -0
- package/dist/src/send-tools.d.ts.map +1 -0
- package/dist/src/send-tools.js +11 -0
- package/dist/src/send-tools.js.map +1 -0
- package/dist/src/tool-result-guard.d.ts +4 -3
- package/dist/src/tool-result-guard.d.ts.map +1 -1
- package/dist/src/tool-result-guard.js +5 -4
- package/dist/src/tool-result-guard.js.map +1 -1
- package/dist/src/tool-result-history.d.ts +1 -1
- package/dist/src/tool-result-history.js +1 -1
- package/dist/src/tune-out/coordinator.d.ts +21 -0
- package/dist/src/tune-out/coordinator.d.ts.map +1 -1
- package/dist/src/tune-out/coordinator.js +139 -37
- package/dist/src/tune-out/coordinator.js.map +1 -1
- package/dist/src/types/agent.d.ts +4 -0
- package/dist/src/types/agent.d.ts.map +1 -1
- package/dist/src/types/events.d.ts +62 -9
- package/dist/src/types/events.d.ts.map +1 -1
- package/dist/src/types/framework.d.ts +62 -58
- package/dist/src/types/framework.d.ts.map +1 -1
- package/dist/src/types/module.d.ts +40 -8
- package/dist/src/types/module.d.ts.map +1 -1
- package/dist/src/types/trace.d.ts +111 -10
- package/dist/src/types/trace.d.ts.map +1 -1
- package/dist/src/usage/types.d.ts +16 -0
- package/dist/src/usage/types.d.ts.map +1 -1
- package/dist/src/usage/usage-tracker.d.ts +14 -1
- package/dist/src/usage/usage-tracker.d.ts.map +1 -1
- package/dist/src/usage/usage-tracker.js +81 -41
- package/dist/src/usage/usage-tracker.js.map +1 -1
- package/package.json +6 -5
- package/src/agent.ts +93 -12
- package/src/api/server.ts +14 -12
- package/src/code-execution/engine.ts +595 -0
- package/src/code-execution/index.ts +5 -17
- package/src/code-execution/isolate/calls.ts +199 -0
- package/src/code-execution/isolate/child-entry.ts +5 -0
- package/src/code-execution/isolate/child-main.ts +132 -0
- package/src/code-execution/isolate/child.ts +327 -0
- package/src/code-execution/isolate/frames.ts +209 -0
- package/src/code-execution/isolate/output.ts +161 -0
- package/src/code-execution/isolate/prelude.ts +409 -0
- package/src/code-execution/isolate/protocol.ts +240 -0
- package/src/code-execution/isolate/render.ts +230 -0
- package/src/code-execution/isolate/runner.ts +911 -0
- package/src/code-execution/isolate/scripts.ts +479 -0
- package/src/code-execution/quickjs.wasm +0 -0
- package/src/code-execution/quickjs.wasm.LICENSES +149 -0
- package/src/code-execution/tool-definition.ts +236 -167
- package/src/deadline-timer.ts +1 -1
- package/src/framework.ts +4468 -2418
- package/src/gate/event-gate.ts +78 -11
- package/src/held-writes.ts +17 -3
- package/src/index.ts +30 -22
- package/src/mcpl/channel-registry.ts +1825 -368
- package/src/mcpl/conversation-router.ts +12 -7
- package/src/mcpl/convert-block.ts +9 -5
- package/src/mcpl/inbound-source.ts +131 -0
- package/src/mcpl/index.ts +4 -2
- package/src/mcpl/log-value.ts +9 -0
- package/src/mcpl/modern-connection.ts +162 -53
- package/src/mcpl/prose-grammar.ts +4 -5
- package/src/mcpl/protocol-family.ts +199 -21
- package/src/mcpl/push-coalescer.ts +306 -62
- package/src/mcpl/push-handler.ts +10 -2
- package/src/mcpl/reference-fetcher.ts +4 -4
- package/src/mcpl/server-connection.ts +180 -79
- package/src/mcpl/tags.ts +36 -0
- package/src/mcpl/tool-result-normalize.ts +2 -1
- package/src/mcpl/transport.ts +162 -33
- package/src/mcpl/types.ts +23 -6
- package/src/module-registry.ts +92 -13
- package/src/modules/discord/index.ts +8 -13
- package/src/modules/history/index.ts +25 -3
- package/src/modules/history/semantic.ts +29 -6
- package/src/modules/index.ts +1 -0
- package/src/modules/unknown-tool.ts +4 -1
- package/src/modules/workspace/branch-intent.ts +3 -1
- package/src/modules/workspace/edit-plan.ts +954 -0
- package/src/modules/workspace/edit-text.ts +618 -0
- package/src/modules/workspace/effects.ts +70 -19
- package/src/modules/workspace/index.ts +2247 -642
- package/src/modules/workspace/observe.ts +465 -56
- package/src/modules/workspace/reconcile.ts +14 -7
- package/src/modules/workspace/text.ts +68 -0
- package/src/modules/workspace/types.ts +211 -6
- package/src/modules/workspace/watcher.ts +3 -2
- package/src/operator-log.ts +47 -19
- package/src/recovery/discord-awareness-outbox.ts +1500 -356
- package/src/recovery/offline-branch.ts +189 -55
- package/src/recovery/recover-cli.ts +25 -4
- package/src/send-tools.ts +11 -0
- package/src/tool-result-guard.ts +6 -5
- package/src/tool-result-history.ts +1 -1
- package/src/tune-out/coordinator.ts +163 -42
- package/src/types/agent.ts +4 -0
- package/src/types/events.ts +62 -9
- package/src/types/framework.ts +62 -58
- package/src/types/module.ts +40 -8
- package/src/types/trace.ts +121 -15
- package/src/usage/types.ts +16 -0
- package/src/usage/usage-tracker.ts +86 -43
- package/dist/src/code-execution/py-runner.d.ts +0 -191
- package/dist/src/code-execution/py-runner.d.ts.map +0 -1
- package/dist/src/code-execution/py-runner.js +0 -655
- package/dist/src/code-execution/py-runner.js.map +0 -1
- package/dist/src/code-execution/runtime-py.d.ts +0 -50
- package/dist/src/code-execution/runtime-py.d.ts.map +0 -1
- package/dist/src/code-execution/runtime-py.js +0 -677
- package/dist/src/code-execution/runtime-py.js.map +0 -1
- package/dist/src/mcpl/prose-stream-router.d.ts +0 -88
- package/dist/src/mcpl/prose-stream-router.d.ts.map +0 -1
- package/dist/src/mcpl/prose-stream-router.js +0 -291
- package/dist/src/mcpl/prose-stream-router.js.map +0 -1
- package/src/code-execution/py-runner.ts +0 -791
- package/src/code-execution/runtime-py.ts +0 -677
- package/src/mcpl/prose-stream-router.ts +0 -268
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* PyRunner — subprocess lifecycle + protocol driver for the client-side
|
|
3
|
-
* programmatic tool calling (`code_execution`) runtime.
|
|
4
|
-
*
|
|
5
|
-
* One runner per agent. The interpreter is spawned lazily on first exec,
|
|
6
|
-
* persists between execs (script globals survive — container-reuse
|
|
7
|
-
* semantics), and is reclaimed after an idle period, mirroring the managed
|
|
8
|
-
* runtime's ~5-minute container reclaim.
|
|
9
|
-
*
|
|
10
|
-
* This is a ROBUSTNESS boundary, not a security sandbox — same doctrine as
|
|
11
|
-
* GateScript: the agent already has broader host access through its tools.
|
|
12
|
-
* What this class guarantees is liveness: a wedged or runaway script cannot
|
|
13
|
-
* hang the agent turn (cancel + SIGINT -> grace -> SIGKILL -> respawn) and a crashed
|
|
14
|
-
* interpreter surfaces as a tool result, never as an unhandled rejection.
|
|
15
|
-
*/
|
|
16
|
-
export interface InjectedTool {
|
|
17
|
-
/** Python identifier the tool is bound to (sanitized, `--` -> `__`). */
|
|
18
|
-
pyName: string;
|
|
19
|
-
/** Exact framework tool name, sent back on tool_call ops. */
|
|
20
|
-
toolName: string;
|
|
21
|
-
}
|
|
22
|
-
export interface ExecResult {
|
|
23
|
-
stdout: string;
|
|
24
|
-
stderr: string;
|
|
25
|
-
returnCode: number;
|
|
26
|
-
/** Set when the host killed the script (deadline / abort / crash). */
|
|
27
|
-
aborted?: boolean;
|
|
28
|
-
/** Background execs: rolling tail of interleaved stdout+stderr (for the
|
|
29
|
-
* crash/finish envelope; the full journal is in the log file). */
|
|
30
|
-
tail?: string;
|
|
31
|
-
}
|
|
32
|
-
/** Per-exec options for background (daemon) scripts. */
|
|
33
|
-
export interface BackgroundExecOptions {
|
|
34
|
-
/** Absolute path for the line-buffered stdout+stderr journal (null: tail only). */
|
|
35
|
-
logPath: string | null;
|
|
36
|
-
/**
|
|
37
|
-
* Called on each wake_agent() from the script. Resolve with null to ack
|
|
38
|
-
* (deliver), or an error string to refuse (raises RuntimeError in-script).
|
|
39
|
-
* May resolve late — rate limiting backpressures inside wake_agent().
|
|
40
|
-
*/
|
|
41
|
-
onWake: (line: number, payload: unknown) => Promise<string | null>;
|
|
42
|
-
/** Overrides the runner's scriptTimeoutMs (background lifetime). */
|
|
43
|
-
lifetimeMs: number;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* An inner tool call's result as the script gets it. `text` is the string
|
|
47
|
-
* its await returns, and the runner sets `.is_error` on that string from
|
|
48
|
-
* `isError`. With `structuredJson`, `text` is the JSON object a structured
|
|
49
|
-
* result reaches a script as, in any of its forms, and `.structured` reads
|
|
50
|
-
* its `structuredContent`, None for a form that holds none, such as one past
|
|
51
|
-
* the size cap; without it, `.structured` is None.
|
|
52
|
-
*/
|
|
53
|
-
export interface ScriptToolResult {
|
|
54
|
-
text: string;
|
|
55
|
-
isError: boolean;
|
|
56
|
-
structuredJson?: boolean;
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Resolves inner tool calls. Must never reject — map errors to results; a
|
|
60
|
-
* rejection reaches the script as an `Error: …` result. A plain string is
|
|
61
|
-
* the result's text with nothing said about it, so the script's
|
|
62
|
-
* `.is_error` and `.structured` are None.
|
|
63
|
-
*/
|
|
64
|
-
export type ScriptToolCallHandler = (toolName: string, args: Record<string, unknown>) => Promise<string | ScriptToolResult>;
|
|
65
|
-
export interface PyRunnerOptions {
|
|
66
|
-
pythonPath?: string;
|
|
67
|
-
/** Per-tool-call timeout surfaced as TimeoutError inside the script. */
|
|
68
|
-
toolCallTimeoutMs?: number;
|
|
69
|
-
/** Whole-script deadline; exceeded -> cancel, grace, kill. */
|
|
70
|
-
scriptTimeoutMs?: number;
|
|
71
|
-
/** How long a script gets to stop after its deadline before the interpreter is killed (default 10s). */
|
|
72
|
-
cancelGraceMs?: number;
|
|
73
|
-
/** Idle interpreter reclaim (state lost), mirroring container reclaim. */
|
|
74
|
-
idleReclaimMs?: number;
|
|
75
|
-
onToolCall: ScriptToolCallHandler;
|
|
76
|
-
/** Log prefix, typically the agent name. */
|
|
77
|
-
label?: string;
|
|
78
|
-
/** Variables for the interpreter beyond what it inherits, such as
|
|
79
|
-
* PYTHONPATH or a venv's. It inherits only what stdio MCPL children do
|
|
80
|
-
* (CHILD_ENV_ALLOWLIST and LC_*, CA bundles and proxy variables among
|
|
81
|
-
* them, and a proxy URL can carry credentials), then these, then
|
|
82
|
-
* PYTHONUNBUFFERED and PYTHONIOENCODING, which the runner sets last.
|
|
83
|
-
* Like the allowlist, this limits what the model's code inherits, not
|
|
84
|
-
* what a process running as the same user can read. */
|
|
85
|
-
env?: Record<string, string>;
|
|
86
|
-
/** Pass the host's whole environment instead of the allowlist, as before
|
|
87
|
-
* `env` existed. That hands every host variable, provider keys included,
|
|
88
|
-
* to the model's code and to every subprocess a script starts; listing
|
|
89
|
-
* what scripts need in `env` is the safer route. */
|
|
90
|
-
inheritEnv?: boolean;
|
|
91
|
-
}
|
|
92
|
-
/** The longest delay Node's timers honour (~24.8 days); a longer one fires after ~1 ms. */
|
|
93
|
-
export declare const MAX_TIMER_MS = 2147483647;
|
|
94
|
-
/** A time limit for a message: "45s", "10 min", "2.5 h". */
|
|
95
|
-
export declare function formatLimit(ms: number): string;
|
|
96
|
-
export declare class PyRunner {
|
|
97
|
-
private readonly pythonPath;
|
|
98
|
-
private readonly toolCallTimeoutMs;
|
|
99
|
-
private readonly scriptTimeoutMs;
|
|
100
|
-
private readonly cancelGraceMs;
|
|
101
|
-
private readonly idleReclaimMs;
|
|
102
|
-
private readonly onToolCall;
|
|
103
|
-
private readonly label;
|
|
104
|
-
private readonly envOptions;
|
|
105
|
-
private onWake;
|
|
106
|
-
private child;
|
|
107
|
-
private childReady;
|
|
108
|
-
private reader;
|
|
109
|
-
private runtimeDir;
|
|
110
|
-
private pending;
|
|
111
|
-
private idleTimer;
|
|
112
|
-
private execCounter;
|
|
113
|
-
private disposed;
|
|
114
|
-
constructor(options: PyRunnerOptions);
|
|
115
|
-
get busy(): boolean;
|
|
116
|
-
/**
|
|
117
|
-
* Run one script. Tools are (re-)injected before every exec so the
|
|
118
|
-
* interpreter always reflects the current tool surface (list_changed etc.).
|
|
119
|
-
* Never rejects: every failure mode resolves to an ExecResult.
|
|
120
|
-
*
|
|
121
|
-
* With `background` options the exec is a daemon: output journals to the
|
|
122
|
-
* log file, wake_agent() is available in-script, and the deadline is the
|
|
123
|
-
* background lifetime. A background runner should be DEDICATED to that one
|
|
124
|
-
* script (the framework creates one per background script).
|
|
125
|
-
*
|
|
126
|
-
* `opts.deadlineMs` replaces the runner's scriptTimeoutMs for this exec (a
|
|
127
|
-
* per-call time limit); a background exec uses its `lifetimeMs` instead.
|
|
128
|
-
* `opts.ceilingMs` is the longest limit the deployment allows this kind of
|
|
129
|
-
* script: a script stopped at its limit is offered a longer one only below
|
|
130
|
-
* it. Without it, the stop doesn't say whether a longer limit would help.
|
|
131
|
-
* `opts.backgroundCeilingMs`, for a foreground exec, is the longest a
|
|
132
|
-
* background script may run: one stopped at its ceiling is offered
|
|
133
|
-
* background mode when that is longer.
|
|
134
|
-
*/
|
|
135
|
-
exec(code: string, tools: InjectedTool[], background?: BackgroundExecOptions, opts?: {
|
|
136
|
-
deadlineMs?: number;
|
|
137
|
-
ceilingMs?: number;
|
|
138
|
-
backgroundCeilingMs?: number;
|
|
139
|
-
}): Promise<ExecResult>;
|
|
140
|
-
/**
|
|
141
|
-
* Abort the runner's script (its turn ended or is reset to run again, or the
|
|
142
|
-
* agent was reset or stopped), whether it's running or still waiting for its
|
|
143
|
-
* interpreter to start; a waiting script then never runs. The exec settles
|
|
144
|
-
* at once, and the interpreter is reclaimed, a starting one too: after an
|
|
145
|
-
* abort its state is suspect (a script died midway), and the next exec gets
|
|
146
|
-
* a fresh one.
|
|
147
|
-
*/
|
|
148
|
-
abort(reason: string): void;
|
|
149
|
-
dispose(): void;
|
|
150
|
-
private ensureChild;
|
|
151
|
-
private readyResolver;
|
|
152
|
-
/** Fails the readiness of an interpreter that is still starting (see reclaim). */
|
|
153
|
-
private readyFailer;
|
|
154
|
-
private handleLine;
|
|
155
|
-
private settlePending;
|
|
156
|
-
/**
|
|
157
|
-
* Answer the interpreter that asked. Call and wake ids restart in every
|
|
158
|
-
* interpreter, so an answer that outlives its interpreter (the script was
|
|
159
|
-
* aborted, killed or crashed, or the interpreter reclaimed) would resolve
|
|
160
|
-
* the same id in the one that replaced it, inside another script: drop it.
|
|
161
|
-
*/
|
|
162
|
-
private reply;
|
|
163
|
-
private send;
|
|
164
|
-
/**
|
|
165
|
-
* SIGINT the interpreter: blocking code in the running script raises
|
|
166
|
-
* KeyboardInterrupt. Not on Windows, where Node's kill() ends the process
|
|
167
|
-
* outright; there the cancel op and the kill grace remain.
|
|
168
|
-
* process.kill rather than child.kill, which would mark the child `killed`:
|
|
169
|
-
* a killed child gets no more protocol messages and is respawned on the
|
|
170
|
-
* next exec, losing the interpreter state this keeps.
|
|
171
|
-
*/
|
|
172
|
-
private interruptChild;
|
|
173
|
-
/** Kill interpreter + clean temp dir. State is lost (by design). */
|
|
174
|
-
private reclaim;
|
|
175
|
-
private teardownChild;
|
|
176
|
-
private armIdleTimer;
|
|
177
|
-
private clearIdleTimer;
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Map framework tool names to python identifiers: `--` (the framework's
|
|
181
|
-
* prefix separator) becomes `__`, and every remaining character that is not
|
|
182
|
-
* valid in a python identifier becomes `_` (fleet reality: module and server
|
|
183
|
-
* ids contain single hyphens — `mcpl-admin`, `dog-events` — found live on
|
|
184
|
-
* the first canary run, 2026-07-26). A leading digit gets a `_` prefix.
|
|
185
|
-
*
|
|
186
|
-
* Names that sanitize to nothing, or that collide after sanitization, are
|
|
187
|
-
* skipped loudly — a skipped tool is unreachable from scripts (the
|
|
188
|
-
* exact-name tools[...] dict is built from this same list).
|
|
189
|
-
*/
|
|
190
|
-
export declare function buildInjectedTools(toolNames: string[], log?: (message: string) => void): InjectedTool[];
|
|
191
|
-
//# sourceMappingURL=py-runner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"py-runner.d.ts","sourceRoot":"","sources":["../../../src/code-execution/py-runner.ts"],"names":[],"mappings":"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"}
|