@animalabs/agent-framework 0.7.4 → 0.8.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/dist/src/code-execution/index.d.ts +1 -1
- package/dist/src/code-execution/index.d.ts.map +1 -1
- package/dist/src/code-execution/index.js.map +1 -1
- package/dist/src/code-execution/py-runner.d.ts +23 -1
- package/dist/src/code-execution/py-runner.d.ts.map +1 -1
- package/dist/src/code-execution/py-runner.js +40 -4
- package/dist/src/code-execution/py-runner.js.map +1 -1
- package/dist/src/code-execution/runtime-py.d.ts +15 -2
- package/dist/src/code-execution/runtime-py.d.ts.map +1 -1
- package/dist/src/code-execution/runtime-py.js +156 -7
- package/dist/src/code-execution/runtime-py.js.map +1 -1
- package/dist/src/code-execution/tool-definition.d.ts.map +1 -1
- package/dist/src/code-execution/tool-definition.js +27 -2
- package/dist/src/code-execution/tool-definition.js.map +1 -1
- package/dist/src/framework.d.ts +73 -0
- package/dist/src/framework.d.ts.map +1 -1
- package/dist/src/framework.js +818 -23
- package/dist/src/framework.js.map +1 -1
- package/dist/src/mcpl/channel-registry.d.ts +28 -2
- package/dist/src/mcpl/channel-registry.d.ts.map +1 -1
- package/dist/src/mcpl/channel-registry.js +53 -7
- package/dist/src/mcpl/channel-registry.js.map +1 -1
- package/dist/src/mcpl/transport.d.ts +1 -1
- package/dist/src/mcpl/transport.d.ts.map +1 -1
- package/dist/src/mcpl/transport.js +25 -7
- package/dist/src/mcpl/transport.js.map +1 -1
- package/dist/src/mcpl/types.d.ts +10 -0
- 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 +12 -0
- package/dist/src/module-registry.d.ts.map +1 -1
- package/dist/src/module-registry.js +26 -0
- package/dist/src/module-registry.js.map +1 -1
- package/dist/src/modules/workspace/index.d.ts +20 -0
- package/dist/src/modules/workspace/index.d.ts.map +1 -1
- package/dist/src/modules/workspace/index.js +48 -15
- package/dist/src/modules/workspace/index.js.map +1 -1
- package/dist/src/modules/workspace/sync.d.ts +4 -0
- package/dist/src/modules/workspace/sync.d.ts.map +1 -1
- package/dist/src/modules/workspace/sync.js +1 -1
- package/dist/src/modules/workspace/sync.js.map +1 -1
- package/dist/src/types/framework.d.ts +10 -0
- package/dist/src/types/framework.d.ts.map +1 -1
- package/dist/src/types/module.d.ts +22 -0
- package/dist/src/types/module.d.ts.map +1 -1
- package/dist/test/busy-agent-scheduler.test.js +1 -0
- package/dist/test/busy-agent-scheduler.test.js.map +1 -1
- package/dist/test/code-execution.test.js +327 -1
- package/dist/test/code-execution.test.js.map +1 -1
- package/dist/test/deferred-wake-integrity.test.d.ts +29 -0
- package/dist/test/deferred-wake-integrity.test.d.ts.map +1 -0
- package/dist/test/deferred-wake-integrity.test.js +320 -0
- package/dist/test/deferred-wake-integrity.test.js.map +1 -0
- package/dist/test/machine-close-provenance.test.d.ts +2 -0
- package/dist/test/machine-close-provenance.test.d.ts.map +1 -0
- package/dist/test/machine-close-provenance.test.js +110 -0
- package/dist/test/machine-close-provenance.test.js.map +1 -0
- package/dist/test/mcpl-access-provider.test.d.ts +2 -0
- package/dist/test/mcpl-access-provider.test.d.ts.map +1 -0
- package/dist/test/mcpl-access-provider.test.js +20 -0
- package/dist/test/mcpl-access-provider.test.js.map +1 -0
- package/dist/test/module-context-integration.test.d.ts +18 -0
- package/dist/test/module-context-integration.test.d.ts.map +1 -0
- package/dist/test/module-context-integration.test.js +181 -0
- package/dist/test/module-context-integration.test.js.map +1 -0
- package/dist/test/present-while-acting.test.js +72 -0
- package/dist/test/present-while-acting.test.js.map +1 -1
- package/dist/test/utils-surface.test.d.ts +2 -0
- package/dist/test/utils-surface.test.d.ts.map +1 -0
- package/dist/test/utils-surface.test.js +145 -0
- package/dist/test/utils-surface.test.js.map +1 -0
- package/dist/test/workspace-read-image.test.js +71 -0
- package/dist/test/workspace-read-image.test.js.map +1 -1
- package/dist/test/workspace-restore-order.test.d.ts +16 -0
- package/dist/test/workspace-restore-order.test.d.ts.map +1 -0
- package/dist/test/workspace-restore-order.test.js +140 -0
- package/dist/test/workspace-restore-order.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/code-execution/index.ts +1 -0
- package/src/code-execution/py-runner.ts +56 -4
- package/src/code-execution/runtime-py.ts +156 -7
- package/src/code-execution/tool-definition.ts +27 -2
- package/src/framework.ts +931 -25
- package/src/mcpl/channel-registry.ts +98 -4
- package/src/mcpl/transport.ts +26 -7
- package/src/mcpl/types.ts +11 -0
- package/src/module-registry.ts +34 -0
- package/src/modules/workspace/index.ts +49 -15
- package/src/modules/workspace/sync.ts +1 -1
- package/src/types/framework.ts +10 -0
- package/src/types/module.ts +24 -0
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* enter the model's context; the full trace stays on-box.
|
|
9
9
|
*/
|
|
10
10
|
export { PyRunner, buildInjectedTools } from './py-runner.js';
|
|
11
|
-
export type { InjectedTool, ExecResult, PyRunnerOptions, ScriptToolCallHandler, } from './py-runner.js';
|
|
11
|
+
export type { InjectedTool, ExecResult, PyRunnerOptions, ScriptToolCallHandler, BackgroundExecOptions, } from './py-runner.js';
|
|
12
12
|
export { PYTHON_RUNTIME_SOURCE } from './runtime-py.js';
|
|
13
13
|
export { buildCodeExecutionToolDefinition, CODE_EXECUTION_TOOL_NAME } from './tool-definition.js';
|
|
14
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/code-execution/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,YAAY,EACV,YAAY,EACZ,UAAU,EACV,eAAe,EACf,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,gCAAgC,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/code-execution/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,YAAY,EACV,YAAY,EACZ,UAAU,EACV,eAAe,EACf,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,gCAAgC,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/code-execution/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/code-execution/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAQ9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,gCAAgC,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -25,6 +25,22 @@ export interface ExecResult {
|
|
|
25
25
|
returnCode: number;
|
|
26
26
|
/** Set when the host killed the script (deadline / abort / crash). */
|
|
27
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;
|
|
28
44
|
}
|
|
29
45
|
/** Resolves inner tool calls. Must never reject — map errors to strings. */
|
|
30
46
|
export type ScriptToolCallHandler = (toolName: string, args: Record<string, unknown>) => Promise<string>;
|
|
@@ -47,6 +63,7 @@ export declare class PyRunner {
|
|
|
47
63
|
private readonly idleReclaimMs;
|
|
48
64
|
private readonly onToolCall;
|
|
49
65
|
private readonly label;
|
|
66
|
+
private onWake;
|
|
50
67
|
private child;
|
|
51
68
|
private childReady;
|
|
52
69
|
private reader;
|
|
@@ -61,8 +78,13 @@ export declare class PyRunner {
|
|
|
61
78
|
* Run one script. Tools are (re-)injected before every exec so the
|
|
62
79
|
* interpreter always reflects the current tool surface (list_changed etc.).
|
|
63
80
|
* Never rejects: every failure mode resolves to an ExecResult.
|
|
81
|
+
*
|
|
82
|
+
* With `background` options the exec is a daemon: output journals to the
|
|
83
|
+
* log file, wake_agent() is available in-script, and the deadline is the
|
|
84
|
+
* background lifetime. A background runner should be DEDICATED to that one
|
|
85
|
+
* script (the framework creates one per background script).
|
|
64
86
|
*/
|
|
65
|
-
exec(code: string, tools: InjectedTool[]): Promise<ExecResult>;
|
|
87
|
+
exec(code: string, tools: InjectedTool[], background?: BackgroundExecOptions): Promise<ExecResult>;
|
|
66
88
|
/**
|
|
67
89
|
* Abort a running script (turn cancelled, agent reset/stopped). The
|
|
68
90
|
* interpreter is reclaimed: after an abort its state is suspect (a script
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"py-runner.d.ts","sourceRoot":"","sources":["../../../src/code-execution/py-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AASH,MAAM,WAAW,YAAY;IAC3B,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,OAAO,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"py-runner.d.ts","sourceRoot":"","sources":["../../../src/code-execution/py-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,6 +30,7 @@ export class PyRunner {
|
|
|
30
30
|
idleReclaimMs;
|
|
31
31
|
onToolCall;
|
|
32
32
|
label;
|
|
33
|
+
onWake = null;
|
|
33
34
|
child = null;
|
|
34
35
|
childReady = null;
|
|
35
36
|
reader = null;
|
|
@@ -53,8 +54,13 @@ export class PyRunner {
|
|
|
53
54
|
* Run one script. Tools are (re-)injected before every exec so the
|
|
54
55
|
* interpreter always reflects the current tool surface (list_changed etc.).
|
|
55
56
|
* Never rejects: every failure mode resolves to an ExecResult.
|
|
57
|
+
*
|
|
58
|
+
* With `background` options the exec is a daemon: output journals to the
|
|
59
|
+
* log file, wake_agent() is available in-script, and the deadline is the
|
|
60
|
+
* background lifetime. A background runner should be DEDICATED to that one
|
|
61
|
+
* script (the framework creates one per background script).
|
|
56
62
|
*/
|
|
57
|
-
async exec(code, tools) {
|
|
63
|
+
async exec(code, tools, background) {
|
|
58
64
|
if (this.disposed) {
|
|
59
65
|
return { stdout: '', stderr: 'code_execution runner disposed', returnCode: 1, aborted: true };
|
|
60
66
|
}
|
|
@@ -81,6 +87,8 @@ export class PyRunner {
|
|
|
81
87
|
};
|
|
82
88
|
}
|
|
83
89
|
const execId = `e${++this.execCounter}`;
|
|
90
|
+
const deadlineMs = background?.lifetimeMs ?? this.scriptTimeoutMs;
|
|
91
|
+
this.onWake = background?.onWake ?? null;
|
|
84
92
|
const result = await new Promise((resolve) => {
|
|
85
93
|
const pending = {
|
|
86
94
|
id: execId,
|
|
@@ -97,21 +105,29 @@ export class PyRunner {
|
|
|
97
105
|
pending.killTimer = setTimeout(() => {
|
|
98
106
|
this.settlePending({
|
|
99
107
|
stdout: '',
|
|
100
|
-
stderr: `script killed after exceeding ${Math.round(
|
|
108
|
+
stderr: `script killed after exceeding ${Math.round(deadlineMs / 1000)}s deadline`,
|
|
101
109
|
returnCode: 1,
|
|
102
110
|
aborted: true,
|
|
103
111
|
});
|
|
104
112
|
this.reclaim('deadline-kill');
|
|
105
113
|
}, CANCEL_GRACE_MS);
|
|
106
|
-
},
|
|
114
|
+
}, deadlineMs);
|
|
115
|
+
// A day-scale background deadline must not hold the process open.
|
|
116
|
+
if (background)
|
|
117
|
+
pending.deadlineTimer.unref?.();
|
|
107
118
|
this.send({
|
|
108
119
|
op: 'init',
|
|
109
120
|
tools: tools.map((t) => ({ py_name: t.pyName, tool_name: t.toolName })),
|
|
110
121
|
call_timeout_s: Math.round(this.toolCallTimeoutMs / 1000),
|
|
122
|
+
...(background
|
|
123
|
+
? { background: true, log_path: background.logPath ?? null }
|
|
124
|
+
: {}),
|
|
111
125
|
});
|
|
112
126
|
this.send({ op: 'exec', id: execId, code });
|
|
113
127
|
});
|
|
114
|
-
this.
|
|
128
|
+
this.onWake = null;
|
|
129
|
+
if (!background)
|
|
130
|
+
this.armIdleTimer();
|
|
115
131
|
return result;
|
|
116
132
|
}
|
|
117
133
|
/**
|
|
@@ -242,12 +258,32 @@ export class PyRunner {
|
|
|
242
258
|
});
|
|
243
259
|
return;
|
|
244
260
|
}
|
|
261
|
+
case 'wake': {
|
|
262
|
+
const wakeId = msg.id;
|
|
263
|
+
if (!wakeId)
|
|
264
|
+
return;
|
|
265
|
+
const line = typeof msg.line === 'number'
|
|
266
|
+
? msg.line
|
|
267
|
+
: -1;
|
|
268
|
+
const payload = msg.payload;
|
|
269
|
+
const handler = this.onWake;
|
|
270
|
+
const refuse = handler
|
|
271
|
+
? handler(line, payload).catch((err) => `wake handler failed: ${err instanceof Error ? err.message : String(err)}`)
|
|
272
|
+
: Promise.resolve('this script is not allowed to wake the agent');
|
|
273
|
+
void refuse.then((error) => {
|
|
274
|
+
this.send({ op: 'wake_ack', id: wakeId, ...(error ? { error } : {}) });
|
|
275
|
+
});
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
245
278
|
case 'exec_result': {
|
|
246
279
|
if (this.pending && msg.id === this.pending.id) {
|
|
247
280
|
this.settlePending({
|
|
248
281
|
stdout: msg.stdout ?? '',
|
|
249
282
|
stderr: msg.stderr ?? '',
|
|
250
283
|
returnCode: typeof msg.return_code === 'number' ? msg.return_code : 1,
|
|
284
|
+
...(typeof msg.tail === 'string'
|
|
285
|
+
? { tail: msg.tail }
|
|
286
|
+
: {}),
|
|
251
287
|
});
|
|
252
288
|
}
|
|
253
289
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"py-runner.js","sourceRoot":"","sources":["../../../src/code-execution/py-runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"py-runner.js","sourceRoot":"","sources":["../../../src/code-execution/py-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,17 +12,30 @@
|
|
|
12
12
|
* same message shape the managed runtime produces
|
|
13
13
|
* - interpreter globals persist across execs (container-reuse semantics)
|
|
14
14
|
*
|
|
15
|
+
* BACKGROUND MODE (model-authored daemons): when init carries
|
|
16
|
+
* `background: true`, the exec additionally gets:
|
|
17
|
+
* - `wake_agent(payload)` — async; reports the caller's line number (which
|
|
18
|
+
* indexes into the agent-authored script — self-correlation) and delivers
|
|
19
|
+
* the payload to the host, which injects it into the agent's context and
|
|
20
|
+
* triggers inference. Awaits a host ack so rate limiting backpressures
|
|
21
|
+
* inside the script instead of dropping wakes.
|
|
22
|
+
* - stdout/stderr tee'd line-buffered to `log_path` (agent-readable via
|
|
23
|
+
* their file tools) with an in-memory tail kept for the crash envelope.
|
|
24
|
+
*
|
|
15
25
|
* Embedded as a TS string because tsc does not copy non-TS assets to dist/;
|
|
16
26
|
* PyRunner materializes it to a temp file at spawn.
|
|
17
27
|
*
|
|
18
28
|
* Protocol (JSON lines):
|
|
19
|
-
* host -> py : {op:"init", tools:[{py_name,tool_name}], call_timeout_s
|
|
29
|
+
* host -> py : {op:"init", tools:[{py_name,tool_name}], call_timeout_s,
|
|
30
|
+
* background?, log_path?, tail_chars?}
|
|
20
31
|
* {op:"exec", id, code}
|
|
21
32
|
* {op:"tool_result", id, result}
|
|
33
|
+
* {op:"wake_ack", id, error?}
|
|
22
34
|
* {op:"cancel", id, reason?}
|
|
23
35
|
* py -> host : {op:"ready"}
|
|
24
36
|
* {op:"tool_call", id, exec_id, name, args}
|
|
25
|
-
* {op:"
|
|
37
|
+
* {op:"wake", id, exec_id, line, payload}
|
|
38
|
+
* {op:"exec_result", id, stdout, stderr, return_code, tail?}
|
|
26
39
|
*
|
|
27
40
|
* IMPORTANT: the python source below must not contain backticks or the
|
|
28
41
|
* sequence dollar+brace (TS template literal syntax). String.raw preserves
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-py.d.ts","sourceRoot":"","sources":["../../../src/code-execution/runtime-py.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"runtime-py.d.ts","sourceRoot":"","sources":["../../../src/code-execution/runtime-py.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,eAAO,MAAM,qBAAqB,EAAE,MAiXnC,CAAC"}
|
|
@@ -12,17 +12,30 @@
|
|
|
12
12
|
* same message shape the managed runtime produces
|
|
13
13
|
* - interpreter globals persist across execs (container-reuse semantics)
|
|
14
14
|
*
|
|
15
|
+
* BACKGROUND MODE (model-authored daemons): when init carries
|
|
16
|
+
* `background: true`, the exec additionally gets:
|
|
17
|
+
* - `wake_agent(payload)` — async; reports the caller's line number (which
|
|
18
|
+
* indexes into the agent-authored script — self-correlation) and delivers
|
|
19
|
+
* the payload to the host, which injects it into the agent's context and
|
|
20
|
+
* triggers inference. Awaits a host ack so rate limiting backpressures
|
|
21
|
+
* inside the script instead of dropping wakes.
|
|
22
|
+
* - stdout/stderr tee'd line-buffered to `log_path` (agent-readable via
|
|
23
|
+
* their file tools) with an in-memory tail kept for the crash envelope.
|
|
24
|
+
*
|
|
15
25
|
* Embedded as a TS string because tsc does not copy non-TS assets to dist/;
|
|
16
26
|
* PyRunner materializes it to a temp file at spawn.
|
|
17
27
|
*
|
|
18
28
|
* Protocol (JSON lines):
|
|
19
|
-
* host -> py : {op:"init", tools:[{py_name,tool_name}], call_timeout_s
|
|
29
|
+
* host -> py : {op:"init", tools:[{py_name,tool_name}], call_timeout_s,
|
|
30
|
+
* background?, log_path?, tail_chars?}
|
|
20
31
|
* {op:"exec", id, code}
|
|
21
32
|
* {op:"tool_result", id, result}
|
|
33
|
+
* {op:"wake_ack", id, error?}
|
|
22
34
|
* {op:"cancel", id, reason?}
|
|
23
35
|
* py -> host : {op:"ready"}
|
|
24
36
|
* {op:"tool_call", id, exec_id, name, args}
|
|
25
|
-
* {op:"
|
|
37
|
+
* {op:"wake", id, exec_id, line, payload}
|
|
38
|
+
* {op:"exec_result", id, stdout, stderr, return_code, tail?}
|
|
26
39
|
*
|
|
27
40
|
* IMPORTANT: the python source below must not contain backticks or the
|
|
28
41
|
* sequence dollar+brace (TS template literal syntax). String.raw preserves
|
|
@@ -34,6 +47,7 @@ import asyncio
|
|
|
34
47
|
import inspect
|
|
35
48
|
import io
|
|
36
49
|
import json
|
|
50
|
+
import os
|
|
37
51
|
import sys
|
|
38
52
|
import threading
|
|
39
53
|
import traceback
|
|
@@ -42,6 +56,11 @@ PROTO_OUT = sys.stdout # protocol channel (real stdout)
|
|
|
42
56
|
REAL_STDERR = sys.stderr # runtime diagnostics outside execs
|
|
43
57
|
CALL_TIMEOUT_S = 270.0
|
|
44
58
|
OUTPUT_CAP_CHARS = 2_000_000
|
|
59
|
+
LOG_FILE_CAP_BYTES = 50_000_000
|
|
60
|
+
|
|
61
|
+
BACKGROUND = False
|
|
62
|
+
LOG_PATH = None
|
|
63
|
+
TAIL_CHARS = 4000
|
|
45
64
|
|
|
46
65
|
_send_lock = threading.Lock()
|
|
47
66
|
|
|
@@ -74,13 +93,78 @@ class CappedIO(io.StringIO):
|
|
|
74
93
|
return super().write(s)
|
|
75
94
|
|
|
76
95
|
|
|
96
|
+
class LogTee:
|
|
97
|
+
"""Background-mode writer: line-buffered file append + rolling tail.
|
|
98
|
+
|
|
99
|
+
The file is the agent-readable journal (their read/grep/shell tools work
|
|
100
|
+
on it); the tail rides the exec_result so the host can build a crash
|
|
101
|
+
envelope without re-reading the file.
|
|
102
|
+
"""
|
|
103
|
+
|
|
104
|
+
def __init__(self, path, tail_chars):
|
|
105
|
+
self._fh = None
|
|
106
|
+
self._written = 0
|
|
107
|
+
self._tail = ""
|
|
108
|
+
self._tail_chars = tail_chars
|
|
109
|
+
self.truncated = False
|
|
110
|
+
if path:
|
|
111
|
+
try:
|
|
112
|
+
os.makedirs(os.path.dirname(path), exist_ok=True)
|
|
113
|
+
self._fh = open(path, "a", encoding="utf-8", errors="replace")
|
|
114
|
+
except Exception as exc:
|
|
115
|
+
REAL_STDERR.write("[pytc-runtime] cannot open log file: " + str(exc) + "\n")
|
|
116
|
+
REAL_STDERR.flush()
|
|
117
|
+
|
|
118
|
+
def write(self, s):
|
|
119
|
+
if not isinstance(s, str):
|
|
120
|
+
s = str(s)
|
|
121
|
+
self._tail = (self._tail + s)[-self._tail_chars:]
|
|
122
|
+
if self._fh is not None and not self.truncated:
|
|
123
|
+
if self._written + len(s) > LOG_FILE_CAP_BYTES:
|
|
124
|
+
self.truncated = True
|
|
125
|
+
try:
|
|
126
|
+
self._fh.write("\n[log capped at " + str(LOG_FILE_CAP_BYTES) + " bytes]\n")
|
|
127
|
+
self._fh.flush()
|
|
128
|
+
except Exception:
|
|
129
|
+
pass
|
|
130
|
+
else:
|
|
131
|
+
try:
|
|
132
|
+
self._fh.write(s)
|
|
133
|
+
if "\n" in s:
|
|
134
|
+
self._fh.flush()
|
|
135
|
+
self._written += len(s)
|
|
136
|
+
except Exception:
|
|
137
|
+
pass
|
|
138
|
+
return len(s)
|
|
139
|
+
|
|
140
|
+
def flush(self):
|
|
141
|
+
if self._fh is not None:
|
|
142
|
+
try:
|
|
143
|
+
self._fh.flush()
|
|
144
|
+
except Exception:
|
|
145
|
+
pass
|
|
146
|
+
|
|
147
|
+
def close(self):
|
|
148
|
+
if self._fh is not None:
|
|
149
|
+
try:
|
|
150
|
+
self._fh.close()
|
|
151
|
+
except Exception:
|
|
152
|
+
pass
|
|
153
|
+
self._fh = None
|
|
154
|
+
|
|
155
|
+
def tail(self):
|
|
156
|
+
return self._tail
|
|
157
|
+
|
|
158
|
+
|
|
77
159
|
# Persistent interpreter state (mirrors container reuse: variables survive
|
|
78
160
|
# between exec calls until the host reclaims the interpreter).
|
|
79
161
|
SCRIPT_GLOBALS = {"__name__": "__main__", "__builtins__": __builtins__}
|
|
80
162
|
_injected_py_names = set()
|
|
81
163
|
|
|
82
164
|
_pending_tool_futures = {}
|
|
165
|
+
_pending_wake_futures = {}
|
|
83
166
|
_next_tool_call_id = 0
|
|
167
|
+
_next_wake_id = 0
|
|
84
168
|
_current_exec_id = None
|
|
85
169
|
_current_exec_task = None
|
|
86
170
|
|
|
@@ -115,7 +199,6 @@ def _make_tool_fn(tool_name, py_name):
|
|
|
115
199
|
)
|
|
116
200
|
finally:
|
|
117
201
|
_pending_tool_futures.pop(call_id, None)
|
|
118
|
-
|
|
119
202
|
tool_fn.__name__ = py_name
|
|
120
203
|
tool_fn.__qualname__ = py_name
|
|
121
204
|
tool_fn.__doc__ = (
|
|
@@ -125,11 +208,47 @@ def _make_tool_fn(tool_name, py_name):
|
|
|
125
208
|
return tool_fn
|
|
126
209
|
|
|
127
210
|
|
|
211
|
+
async def wake_agent(payload=None):
|
|
212
|
+
"""Wake the agent: deliver payload into their context and trigger a turn.
|
|
213
|
+
|
|
214
|
+
Reports the caller's line number (indexes into the script the agent
|
|
215
|
+
wrote). Awaits the host ack — rate limiting backpressures here rather
|
|
216
|
+
than dropping wakes. Raises RuntimeError when the host refuses (wake cap
|
|
217
|
+
exceeded, script cancelled).
|
|
218
|
+
"""
|
|
219
|
+
global _next_wake_id
|
|
220
|
+
frame = inspect.currentframe()
|
|
221
|
+
line = frame.f_back.f_lineno if frame is not None and frame.f_back is not None else -1
|
|
222
|
+
_next_wake_id += 1
|
|
223
|
+
wake_id = "w" + str(_next_wake_id)
|
|
224
|
+
fut = asyncio.get_running_loop().create_future()
|
|
225
|
+
_pending_wake_futures[wake_id] = fut
|
|
226
|
+
send({
|
|
227
|
+
"op": "wake",
|
|
228
|
+
"id": wake_id,
|
|
229
|
+
"exec_id": _current_exec_id,
|
|
230
|
+
"line": line,
|
|
231
|
+
"payload": payload,
|
|
232
|
+
})
|
|
233
|
+
try:
|
|
234
|
+
error = await fut
|
|
235
|
+
if error:
|
|
236
|
+
raise RuntimeError("wake_agent refused by host: " + str(error))
|
|
237
|
+
return None
|
|
238
|
+
finally:
|
|
239
|
+
_pending_wake_futures.pop(wake_id, None)
|
|
240
|
+
|
|
241
|
+
|
|
128
242
|
def handle_init(msg):
|
|
129
|
-
global CALL_TIMEOUT_S
|
|
243
|
+
global CALL_TIMEOUT_S, BACKGROUND, LOG_PATH, TAIL_CHARS
|
|
130
244
|
timeout = msg.get("call_timeout_s")
|
|
131
245
|
if isinstance(timeout, (int, float)) and timeout > 0:
|
|
132
246
|
CALL_TIMEOUT_S = float(timeout)
|
|
247
|
+
BACKGROUND = bool(msg.get("background"))
|
|
248
|
+
LOG_PATH = msg.get("log_path") or None
|
|
249
|
+
tail = msg.get("tail_chars")
|
|
250
|
+
if isinstance(tail, int) and tail > 0:
|
|
251
|
+
TAIL_CHARS = tail
|
|
133
252
|
|
|
134
253
|
# Remove functions injected by a previous init that are no longer present
|
|
135
254
|
# (tool list changed) without touching user-defined globals.
|
|
@@ -151,12 +270,22 @@ def handle_init(msg):
|
|
|
151
270
|
_injected_py_names.update(new_py_names)
|
|
152
271
|
# Exact-name escape hatch: tools["mcpl--server--tool"]({...})
|
|
153
272
|
SCRIPT_GLOBALS["tools"] = tools_dict
|
|
273
|
+
# The doorbell exists only in background mode — a foreground script's
|
|
274
|
+
# agent is already awake (mid-turn).
|
|
275
|
+
if BACKGROUND:
|
|
276
|
+
SCRIPT_GLOBALS["wake_agent"] = wake_agent
|
|
277
|
+
else:
|
|
278
|
+
SCRIPT_GLOBALS.pop("wake_agent", None)
|
|
154
279
|
|
|
155
280
|
|
|
156
281
|
async def _run_script(exec_id, code):
|
|
157
282
|
global _current_exec_id, _current_exec_task
|
|
158
|
-
|
|
159
|
-
|
|
283
|
+
if BACKGROUND:
|
|
284
|
+
out = LogTee(LOG_PATH, TAIL_CHARS)
|
|
285
|
+
err = out # interleave, terminal-style; tail is shared
|
|
286
|
+
else:
|
|
287
|
+
out = CappedIO(OUTPUT_CAP_CHARS)
|
|
288
|
+
err = CappedIO(OUTPUT_CAP_CHARS)
|
|
160
289
|
old_out, old_err, old_in = sys.stdout, sys.stderr, sys.stdin
|
|
161
290
|
sys.stdout, sys.stderr = out, err
|
|
162
291
|
sys.stdin = io.StringIO("") # input() must not steal the protocol channel
|
|
@@ -176,11 +305,27 @@ async def _run_script(exec_id, code):
|
|
|
176
305
|
sys.stdout, sys.stderr, sys.stdin = old_out, old_err, old_in
|
|
177
306
|
_current_exec_id = None
|
|
178
307
|
_current_exec_task = None
|
|
179
|
-
# Fail any tool futures still pending: their exec is gone.
|
|
180
308
|
for fut in list(_pending_tool_futures.values()):
|
|
181
309
|
if not fut.done():
|
|
182
310
|
fut.cancel()
|
|
183
311
|
_pending_tool_futures.clear()
|
|
312
|
+
for fut in list(_pending_wake_futures.values()):
|
|
313
|
+
if not fut.done():
|
|
314
|
+
fut.cancel()
|
|
315
|
+
_pending_wake_futures.clear()
|
|
316
|
+
|
|
317
|
+
if BACKGROUND:
|
|
318
|
+
out.flush()
|
|
319
|
+
out.close()
|
|
320
|
+
send({
|
|
321
|
+
"op": "exec_result",
|
|
322
|
+
"id": exec_id,
|
|
323
|
+
"stdout": "",
|
|
324
|
+
"stderr": "",
|
|
325
|
+
"tail": out.tail(),
|
|
326
|
+
"return_code": return_code,
|
|
327
|
+
})
|
|
328
|
+
return
|
|
184
329
|
|
|
185
330
|
stdout_text = out.getvalue()
|
|
186
331
|
if out.truncated:
|
|
@@ -244,6 +389,10 @@ async def main():
|
|
|
244
389
|
fut = _pending_tool_futures.get(msg.get("id"))
|
|
245
390
|
if fut is not None and not fut.done():
|
|
246
391
|
fut.set_result(str(msg.get("result", "")))
|
|
392
|
+
elif op == "wake_ack":
|
|
393
|
+
fut = _pending_wake_futures.get(msg.get("id"))
|
|
394
|
+
if fut is not None and not fut.done():
|
|
395
|
+
fut.set_result(msg.get("error") or None)
|
|
247
396
|
elif op == "cancel":
|
|
248
397
|
if _current_exec_task is not None and not _current_exec_task.done():
|
|
249
398
|
_current_exec_task.cancel()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-py.js","sourceRoot":"","sources":["../../../src/code-execution/runtime-py.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"runtime-py.js","sourceRoot":"","sources":["../../../src/code-execution/runtime-py.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAW,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiXtD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-definition.d.ts","sourceRoot":"","sources":["../../../src/code-execution/tool-definition.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,eAAO,MAAM,wBAAwB,mBAAmB,CAAC;AAEzD,wBAAgB,gCAAgC,CAAC,IAAI,CAAC,EAAE;IACtD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"tool-definition.d.ts","sourceRoot":"","sources":["../../../src/code-execution/tool-definition.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,eAAO,MAAM,wBAAwB,mBAAmB,CAAC;AAEzD,wBAAgB,gCAAgC,CAAC,IAAI,CAAC,EAAE;IACtD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,GAAG,cAAc,CA6DjB"}
|
|
@@ -31,7 +31,19 @@ export function buildCodeExecutionToolDefinition(opts) {
|
|
|
31
31
|
'Use this when fanning out across many items, looping over tool calls, or when tool ' +
|
|
32
32
|
'results are large and you only need a slice or summary. Call tools directly (not via ' +
|
|
33
33
|
'code) when a single call answers the question or when you need to reason about each ' +
|
|
34
|
-
'result before deciding the next step.'
|
|
34
|
+
'result before deciding the next step. ' +
|
|
35
|
+
'BACKGROUND MODE: pass background=true to run the script as a detached watcher that ' +
|
|
36
|
+
'outlives this turn — the tool returns immediately with a script_id and you can end ' +
|
|
37
|
+
'your turn (e.g. sleep). Inside a background script, await wake_agent(payload) wakes ' +
|
|
38
|
+
'you: the payload plus provenance (script id, the line number in your script, elapsed ' +
|
|
39
|
+
'time) is delivered into your context and starts a turn for you. A script that ends ' +
|
|
40
|
+
'without calling wake_agent wakes nobody — that silence is the point (poll cheaply, ' +
|
|
41
|
+
'wake only on signal). If your background script CRASHES you are woken with the error. ' +
|
|
42
|
+
'Its print() output streams to a workspace log file you can read any time. Wakes are ' +
|
|
43
|
+
'rate-limited (early wakes are delayed, not dropped) and capped per script. ' +
|
|
44
|
+
'CAUTION: background scripts die silently if the host process restarts — for a wake ' +
|
|
45
|
+
'you absolutely must not miss, also arm a wake rule as backup. ' +
|
|
46
|
+
'Manage your scripts with {"action": "list"} and {"action": "cancel", "script_id": "..."}.',
|
|
35
47
|
inputSchema: {
|
|
36
48
|
type: 'object',
|
|
37
49
|
properties: {
|
|
@@ -39,8 +51,21 @@ export function buildCodeExecutionToolDefinition(opts) {
|
|
|
39
51
|
type: 'string',
|
|
40
52
|
description: 'Python code to execute. Top-level await is allowed.',
|
|
41
53
|
},
|
|
54
|
+
background: {
|
|
55
|
+
type: 'boolean',
|
|
56
|
+
description: 'Run detached as a background watcher with wake_agent() available (default false).',
|
|
57
|
+
},
|
|
58
|
+
action: {
|
|
59
|
+
type: 'string',
|
|
60
|
+
enum: ['run', 'list', 'cancel'],
|
|
61
|
+
description: 'run (default) executes `code`; list shows your background scripts; cancel stops one.',
|
|
62
|
+
},
|
|
63
|
+
script_id: {
|
|
64
|
+
type: 'string',
|
|
65
|
+
description: 'Background script id (for action: cancel).',
|
|
66
|
+
},
|
|
42
67
|
},
|
|
43
|
-
required: [
|
|
68
|
+
required: [],
|
|
44
69
|
},
|
|
45
70
|
};
|
|
46
71
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-definition.js","sourceRoot":"","sources":["../../../src/code-execution/tool-definition.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,CAAC,MAAM,wBAAwB,GAAG,gBAAgB,CAAC;AAEzD,MAAM,UAAU,gCAAgC,CAAC,IAGhD;IACC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,aAAa,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IACvF,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,iBAAiB,IAAI,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IACnF,OAAO;QACL,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EACT,mEAAmE;YACnE,kFAAkF;YAClF,8EAA8E;YAC9E,2CAA2C;YAC3C,0FAA0F;YAC1F,oEAAoE;YACpE,sFAAsF;YACtF,0FAA0F;YAC1F,6FAA6F;YAC7F,8EAA8E;YAC9E,yFAAyF;YACzF,0FAA0F;YAC1F,uFAAuF;YACvF,iCAAiC,WAAW,8CAA8C;YAC1F,oBAAoB,kBAAkB,2CAA2C;YACjF,qFAAqF;YACrF,uFAAuF;YACvF,sFAAsF;YACtF,
|
|
1
|
+
{"version":3,"file":"tool-definition.js","sourceRoot":"","sources":["../../../src/code-execution/tool-definition.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,CAAC,MAAM,wBAAwB,GAAG,gBAAgB,CAAC;AAEzD,MAAM,UAAU,gCAAgC,CAAC,IAGhD;IACC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,aAAa,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IACvF,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,iBAAiB,IAAI,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IACnF,OAAO;QACL,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EACT,mEAAmE;YACnE,kFAAkF;YAClF,8EAA8E;YAC9E,2CAA2C;YAC3C,0FAA0F;YAC1F,oEAAoE;YACpE,sFAAsF;YACtF,0FAA0F;YAC1F,6FAA6F;YAC7F,8EAA8E;YAC9E,yFAAyF;YACzF,0FAA0F;YAC1F,uFAAuF;YACvF,iCAAiC,WAAW,8CAA8C;YAC1F,oBAAoB,kBAAkB,2CAA2C;YACjF,qFAAqF;YACrF,uFAAuF;YACvF,sFAAsF;YACtF,wCAAwC;YACxC,qFAAqF;YACrF,qFAAqF;YACrF,sFAAsF;YACtF,uFAAuF;YACvF,qFAAqF;YACrF,qFAAqF;YACrF,wFAAwF;YACxF,sFAAsF;YACtF,6EAA6E;YAC7E,qFAAqF;YACrF,gEAAgE;YAChE,2FAA2F;QAC7F,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,qDAAqD;iBACnE;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,mFAAmF;iBACjG;gBACD,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC;oBAC/B,WAAW,EAAE,sFAAsF;iBACpG;gBACD,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,4CAA4C;iBAC1D;aACF;YACD,QAAQ,EAAE,EAAE;SACb;KACF,CAAC;AACJ,CAAC"}
|