@assemblyline-agents/runtime 0.1.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/LICENSE +21 -0
- package/README.md +19 -0
- package/dist/agent-harness.d.ts +108 -0
- package/dist/agent-harness.d.ts.map +1 -0
- package/dist/agent-harness.js +2 -0
- package/dist/agent-harness.js.map +1 -0
- package/dist/attachments-legacy.d.ts +17 -0
- package/dist/attachments-legacy.d.ts.map +1 -0
- package/dist/attachments-legacy.js +273 -0
- package/dist/attachments-legacy.js.map +1 -0
- package/dist/attachments.d.ts +49 -0
- package/dist/attachments.d.ts.map +1 -0
- package/dist/attachments.js +832 -0
- package/dist/attachments.js.map +1 -0
- package/dist/builtin-tool-executors.d.ts +96 -0
- package/dist/builtin-tool-executors.d.ts.map +1 -0
- package/dist/builtin-tool-executors.js +501 -0
- package/dist/builtin-tool-executors.js.map +1 -0
- package/dist/builtin-tools.d.ts +30 -0
- package/dist/builtin-tools.d.ts.map +1 -0
- package/dist/builtin-tools.js +690 -0
- package/dist/builtin-tools.js.map +1 -0
- package/dist/capability-catalog.d.ts +27 -0
- package/dist/capability-catalog.d.ts.map +1 -0
- package/dist/capability-catalog.js +193 -0
- package/dist/capability-catalog.js.map +1 -0
- package/dist/channel-http-util.d.ts +34 -0
- package/dist/channel-http-util.d.ts.map +1 -0
- package/dist/channel-http-util.js +93 -0
- package/dist/channel-http-util.js.map +1 -0
- package/dist/channel-ingress.d.ts +56 -0
- package/dist/channel-ingress.d.ts.map +1 -0
- package/dist/channel-ingress.js +273 -0
- package/dist/channel-ingress.js.map +1 -0
- package/dist/channel.d.ts +146 -0
- package/dist/channel.d.ts.map +1 -0
- package/dist/channel.js +2 -0
- package/dist/channel.js.map +1 -0
- package/dist/checkpoints.d.ts +34 -0
- package/dist/checkpoints.d.ts.map +1 -0
- package/dist/checkpoints.js +86 -0
- package/dist/checkpoints.js.map +1 -0
- package/dist/code-mode.d.ts +20 -0
- package/dist/code-mode.d.ts.map +1 -0
- package/dist/code-mode.js +658 -0
- package/dist/code-mode.js.map +1 -0
- package/dist/computer-relay-protocol.d.ts +36 -0
- package/dist/computer-relay-protocol.d.ts.map +1 -0
- package/dist/computer-relay-protocol.js +127 -0
- package/dist/computer-relay-protocol.js.map +1 -0
- package/dist/concurrency.d.ts +68 -0
- package/dist/concurrency.d.ts.map +1 -0
- package/dist/concurrency.js +193 -0
- package/dist/concurrency.js.map +1 -0
- package/dist/connection-auth-util.d.ts +56 -0
- package/dist/connection-auth-util.d.ts.map +1 -0
- package/dist/connection-auth-util.js +154 -0
- package/dist/connection-auth-util.js.map +1 -0
- package/dist/connection-clients.d.ts +50 -0
- package/dist/connection-clients.d.ts.map +1 -0
- package/dist/connection-clients.js +402 -0
- package/dist/connection-clients.js.map +1 -0
- package/dist/connection-stores.d.ts +108 -0
- package/dist/connection-stores.d.ts.map +1 -0
- package/dist/connection-stores.js +127 -0
- package/dist/connection-stores.js.map +1 -0
- package/dist/connection-util.d.ts +27 -0
- package/dist/connection-util.d.ts.map +1 -0
- package/dist/connection-util.js +118 -0
- package/dist/connection-util.js.map +1 -0
- package/dist/connections.d.ts +152 -0
- package/dist/connections.d.ts.map +1 -0
- package/dist/connections.js +838 -0
- package/dist/connections.js.map +1 -0
- package/dist/content-capture.d.ts +32 -0
- package/dist/content-capture.d.ts.map +1 -0
- package/dist/content-capture.js +77 -0
- package/dist/content-capture.js.map +1 -0
- package/dist/context-policy-util.d.ts +45 -0
- package/dist/context-policy-util.d.ts.map +1 -0
- package/dist/context-policy-util.js +120 -0
- package/dist/context-policy-util.js.map +1 -0
- package/dist/conversation-context.d.ts +55 -0
- package/dist/conversation-context.d.ts.map +1 -0
- package/dist/conversation-context.js +179 -0
- package/dist/conversation-context.js.map +1 -0
- package/dist/conversation-transcript.d.ts +49 -0
- package/dist/conversation-transcript.d.ts.map +1 -0
- package/dist/conversation-transcript.js +77 -0
- package/dist/conversation-transcript.js.map +1 -0
- package/dist/conversation-turn-dispatch.d.ts +46 -0
- package/dist/conversation-turn-dispatch.d.ts.map +1 -0
- package/dist/conversation-turn-dispatch.js +201 -0
- package/dist/conversation-turn-dispatch.js.map +1 -0
- package/dist/delivery-queue.d.ts +89 -0
- package/dist/delivery-queue.d.ts.map +1 -0
- package/dist/delivery-queue.js +244 -0
- package/dist/delivery-queue.js.map +1 -0
- package/dist/delivery-send.d.ts +44 -0
- package/dist/delivery-send.d.ts.map +1 -0
- package/dist/delivery-send.js +494 -0
- package/dist/delivery-send.js.map +1 -0
- package/dist/env-config.d.ts +6 -0
- package/dist/env-config.d.ts.map +1 -0
- package/dist/env-config.js +27 -0
- package/dist/env-config.js.map +1 -0
- package/dist/eval-run-options.d.ts +37 -0
- package/dist/eval-run-options.d.ts.map +1 -0
- package/dist/eval-run-options.js +106 -0
- package/dist/eval-run-options.js.map +1 -0
- package/dist/harness-continuation.d.ts +54 -0
- package/dist/harness-continuation.d.ts.map +1 -0
- package/dist/harness-continuation.js +58 -0
- package/dist/harness-continuation.js.map +1 -0
- package/dist/harness-loop.d.ts +110 -0
- package/dist/harness-loop.d.ts.map +1 -0
- package/dist/harness-loop.js +575 -0
- package/dist/harness-loop.js.map +1 -0
- package/dist/hook-dispatch.d.ts +19 -0
- package/dist/hook-dispatch.d.ts.map +1 -0
- package/dist/hook-dispatch.js +37 -0
- package/dist/hook-dispatch.js.map +1 -0
- package/dist/http.d.ts +26 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +114 -0
- package/dist/http.js.map +1 -0
- package/dist/in-memory-conversation-turn-store.d.ts +29 -0
- package/dist/in-memory-conversation-turn-store.d.ts.map +1 -0
- package/dist/in-memory-conversation-turn-store.js +166 -0
- package/dist/in-memory-conversation-turn-store.js.map +1 -0
- package/dist/in-memory-run-store.d.ts +39 -0
- package/dist/in-memory-run-store.d.ts.map +1 -0
- package/dist/in-memory-run-store.js +332 -0
- package/dist/in-memory-run-store.js.map +1 -0
- package/dist/in-memory-sandbox-session-store.d.ts +33 -0
- package/dist/in-memory-sandbox-session-store.d.ts.map +1 -0
- package/dist/in-memory-sandbox-session-store.js +186 -0
- package/dist/in-memory-sandbox-session-store.js.map +1 -0
- package/dist/in-memory-small-stores.d.ts +117 -0
- package/dist/in-memory-small-stores.d.ts.map +1 -0
- package/dist/in-memory-small-stores.js +340 -0
- package/dist/in-memory-small-stores.js.map +1 -0
- package/dist/in-memory-usage-store.d.ts +15 -0
- package/dist/in-memory-usage-store.d.ts.map +1 -0
- package/dist/in-memory-usage-store.js +49 -0
- package/dist/in-memory-usage-store.js.map +1 -0
- package/dist/index.d.ts +467 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2046 -0
- package/dist/index.js.map +1 -0
- package/dist/json-util.d.ts +19 -0
- package/dist/json-util.d.ts.map +1 -0
- package/dist/json-util.js +59 -0
- package/dist/json-util.js.map +1 -0
- package/dist/local-sandbox.d.ts +16 -0
- package/dist/local-sandbox.d.ts.map +1 -0
- package/dist/local-sandbox.js +327 -0
- package/dist/local-sandbox.js.map +1 -0
- package/dist/logging.d.ts +16 -0
- package/dist/logging.d.ts.map +1 -0
- package/dist/logging.js +41 -0
- package/dist/logging.js.map +1 -0
- package/dist/mcp-client.d.ts +27 -0
- package/dist/mcp-client.d.ts.map +1 -0
- package/dist/mcp-client.js +169 -0
- package/dist/mcp-client.js.map +1 -0
- package/dist/model-harnesses.d.ts +4 -0
- package/dist/model-harnesses.d.ts.map +1 -0
- package/dist/model-harnesses.js +6 -0
- package/dist/model-harnesses.js.map +1 -0
- package/dist/model-media.d.ts +36 -0
- package/dist/model-media.d.ts.map +1 -0
- package/dist/model-media.js +234 -0
- package/dist/model-media.js.map +1 -0
- package/dist/operator-controls.d.ts +31 -0
- package/dist/operator-controls.d.ts.map +1 -0
- package/dist/operator-controls.js +71 -0
- package/dist/operator-controls.js.map +1 -0
- package/dist/pi-agent-harness.d.ts +40 -0
- package/dist/pi-agent-harness.d.ts.map +1 -0
- package/dist/pi-agent-harness.js +222 -0
- package/dist/pi-agent-harness.js.map +1 -0
- package/dist/pi-harness.d.ts +42 -0
- package/dist/pi-harness.d.ts.map +1 -0
- package/dist/pi-harness.js +142 -0
- package/dist/pi-harness.js.map +1 -0
- package/dist/relay-mcp-client.d.ts +17 -0
- package/dist/relay-mcp-client.d.ts.map +1 -0
- package/dist/relay-mcp-client.js +119 -0
- package/dist/relay-mcp-client.js.map +1 -0
- package/dist/replay-resume.d.ts +107 -0
- package/dist/replay-resume.d.ts.map +1 -0
- package/dist/replay-resume.js +495 -0
- package/dist/replay-resume.js.map +1 -0
- package/dist/resource-projection-util.d.ts +58 -0
- package/dist/resource-projection-util.d.ts.map +1 -0
- package/dist/resource-projection-util.js +298 -0
- package/dist/resource-projection-util.js.map +1 -0
- package/dist/resource-projection.d.ts +45 -0
- package/dist/resource-projection.d.ts.map +1 -0
- package/dist/resource-projection.js +481 -0
- package/dist/resource-projection.js.map +1 -0
- package/dist/run-heartbeat.d.ts +34 -0
- package/dist/run-heartbeat.d.ts.map +1 -0
- package/dist/run-heartbeat.js +62 -0
- package/dist/run-heartbeat.js.map +1 -0
- package/dist/run-outcome.d.ts +47 -0
- package/dist/run-outcome.d.ts.map +1 -0
- package/dist/run-outcome.js +92 -0
- package/dist/run-outcome.js.map +1 -0
- package/dist/run-recovery.d.ts +117 -0
- package/dist/run-recovery.d.ts.map +1 -0
- package/dist/run-recovery.js +466 -0
- package/dist/run-recovery.js.map +1 -0
- package/dist/run-resolver.d.ts +35 -0
- package/dist/run-resolver.d.ts.map +1 -0
- package/dist/run-resolver.js +84 -0
- package/dist/run-resolver.js.map +1 -0
- package/dist/run-stream.d.ts +37 -0
- package/dist/run-stream.d.ts.map +1 -0
- package/dist/run-stream.js +78 -0
- package/dist/run-stream.js.map +1 -0
- package/dist/runs-query.d.ts +29 -0
- package/dist/runs-query.d.ts.map +1 -0
- package/dist/runs-query.js +142 -0
- package/dist/runs-query.js.map +1 -0
- package/dist/runtime-bundle.d.ts +3 -0
- package/dist/runtime-bundle.d.ts.map +1 -0
- package/dist/runtime-bundle.js +18 -0
- package/dist/runtime-bundle.js.map +1 -0
- package/dist/runtime-types.d.ts +397 -0
- package/dist/runtime-types.d.ts.map +1 -0
- package/dist/runtime-types.js +2 -0
- package/dist/runtime-types.js.map +1 -0
- package/dist/runtime-util.d.ts +45 -0
- package/dist/runtime-util.d.ts.map +1 -0
- package/dist/runtime-util.js +116 -0
- package/dist/runtime-util.js.map +1 -0
- package/dist/sandbox-cli-client.d.ts +20 -0
- package/dist/sandbox-cli-client.d.ts.map +1 -0
- package/dist/sandbox-cli-client.js +97 -0
- package/dist/sandbox-cli-client.js.map +1 -0
- package/dist/sandbox-fs.d.ts +56 -0
- package/dist/sandbox-fs.d.ts.map +1 -0
- package/dist/sandbox-fs.js +276 -0
- package/dist/sandbox-fs.js.map +1 -0
- package/dist/sandbox-session-key.d.ts +8 -0
- package/dist/sandbox-session-key.d.ts.map +1 -0
- package/dist/sandbox-session-key.js +32 -0
- package/dist/sandbox-session-key.js.map +1 -0
- package/dist/sandbox-snapshot-policy.d.ts +27 -0
- package/dist/sandbox-snapshot-policy.d.ts.map +1 -0
- package/dist/sandbox-snapshot-policy.js +94 -0
- package/dist/sandbox-snapshot-policy.js.map +1 -0
- package/dist/sandbox-sync-worker.d.ts +63 -0
- package/dist/sandbox-sync-worker.d.ts.map +1 -0
- package/dist/sandbox-sync-worker.js +448 -0
- package/dist/sandbox-sync-worker.js.map +1 -0
- package/dist/schedule-execution.d.ts +59 -0
- package/dist/schedule-execution.d.ts.map +1 -0
- package/dist/schedule-execution.js +951 -0
- package/dist/schedule-execution.js.map +1 -0
- package/dist/scheduler.d.ts +19 -0
- package/dist/scheduler.d.ts.map +1 -0
- package/dist/scheduler.js +38 -0
- package/dist/scheduler.js.map +1 -0
- package/dist/security.d.ts +20 -0
- package/dist/security.d.ts.map +1 -0
- package/dist/security.js +145 -0
- package/dist/security.js.map +1 -0
- package/dist/self-improvement.d.ts +245 -0
- package/dist/self-improvement.d.ts.map +1 -0
- package/dist/self-improvement.js +554 -0
- package/dist/self-improvement.js.map +1 -0
- package/dist/source-loader.d.ts +19 -0
- package/dist/source-loader.d.ts.map +1 -0
- package/dist/source-loader.js +160 -0
- package/dist/source-loader.js.map +1 -0
- package/dist/state-store-helpers.d.ts +28 -0
- package/dist/state-store-helpers.d.ts.map +1 -0
- package/dist/state-store-helpers.js +164 -0
- package/dist/state-store-helpers.js.map +1 -0
- package/dist/state-stores.d.ts +25 -0
- package/dist/state-stores.d.ts.map +1 -0
- package/dist/state-stores.js +157 -0
- package/dist/state-stores.js.map +1 -0
- package/dist/state.d.ts +736 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +46 -0
- package/dist/state.js.map +1 -0
- package/dist/storage.d.ts +188 -0
- package/dist/storage.d.ts.map +1 -0
- package/dist/storage.js +752 -0
- package/dist/storage.js.map +1 -0
- package/dist/subagent-execution.d.ts +80 -0
- package/dist/subagent-execution.d.ts.map +1 -0
- package/dist/subagent-execution.js +135 -0
- package/dist/subagent-execution.js.map +1 -0
- package/dist/telemetry.d.ts +49 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +60 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/tool-apis.d.ts +22 -0
- package/dist/tool-apis.d.ts.map +1 -0
- package/dist/tool-apis.js +344 -0
- package/dist/tool-apis.js.map +1 -0
- package/dist/tool-execution.d.ts +143 -0
- package/dist/tool-execution.d.ts.map +1 -0
- package/dist/tool-execution.js +573 -0
- package/dist/tool-execution.js.map +1 -0
- package/dist/trusted-attachments.d.ts +20 -0
- package/dist/trusted-attachments.d.ts.map +1 -0
- package/dist/trusted-attachments.js +276 -0
- package/dist/trusted-attachments.js.map +1 -0
- package/dist/usage-accounting.d.ts +37 -0
- package/dist/usage-accounting.d.ts.map +1 -0
- package/dist/usage-accounting.js +181 -0
- package/dist/usage-accounting.js.map +1 -0
- package/dist/usage-budget.d.ts +29 -0
- package/dist/usage-budget.d.ts.map +1 -0
- package/dist/usage-budget.js +145 -0
- package/dist/usage-budget.js.map +1 -0
- package/dist/usage-reconciliation.d.ts +76 -0
- package/dist/usage-reconciliation.d.ts.map +1 -0
- package/dist/usage-reconciliation.js +463 -0
- package/dist/usage-reconciliation.js.map +1 -0
- package/dist/usage-records.d.ts +24 -0
- package/dist/usage-records.d.ts.map +1 -0
- package/dist/usage-records.js +445 -0
- package/dist/usage-records.js.map +1 -0
- package/package.json +51 -0
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-run eval harness options. The block travels on `RunAgentOptions.eval`,
|
|
3
|
+
* is persisted verbatim into `RunRecord.input.eval` (crash-resume safe and
|
|
4
|
+
* auditable in run detail), and is honored by the tool-execution and delivery
|
|
5
|
+
* paths. `results` sequence cursors are intentionally in-memory: a resumed or
|
|
6
|
+
* subagent-child run restarts its sequence, which is acceptable for evals and
|
|
7
|
+
* avoids a durable write per stubbed tool call.
|
|
8
|
+
*/
|
|
9
|
+
function isJsonValue(value) {
|
|
10
|
+
if (value === null || typeof value === "string" || typeof value === "number" || typeof value === "boolean")
|
|
11
|
+
return true;
|
|
12
|
+
if (Array.isArray(value))
|
|
13
|
+
return value.every(isJsonValue);
|
|
14
|
+
if (typeof value === "object")
|
|
15
|
+
return Object.values(value).every(isJsonValue);
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
function validateStubSpec(name, value) {
|
|
19
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
20
|
+
throw new Error(`eval.toolStubs.${name} must be an object with exactly one of result, results, or error.`);
|
|
21
|
+
}
|
|
22
|
+
const spec = value;
|
|
23
|
+
const keys = ["result", "results", "error"].filter((key) => spec[key] !== undefined);
|
|
24
|
+
if (keys.length !== 1) {
|
|
25
|
+
throw new Error(`eval.toolStubs.${name} must declare exactly one of result, results, or error.`);
|
|
26
|
+
}
|
|
27
|
+
if (keys[0] === "results") {
|
|
28
|
+
if (!Array.isArray(spec.results) || spec.results.length === 0) {
|
|
29
|
+
throw new Error(`eval.toolStubs.${name}.results must be a non-empty array.`);
|
|
30
|
+
}
|
|
31
|
+
if (!isJsonValue(spec.results))
|
|
32
|
+
throw new Error(`eval.toolStubs.${name}.results must be JSON-serializable.`);
|
|
33
|
+
return { results: spec.results };
|
|
34
|
+
}
|
|
35
|
+
if (keys[0] === "error") {
|
|
36
|
+
if (typeof spec.error !== "string" || !spec.error.trim()) {
|
|
37
|
+
throw new Error(`eval.toolStubs.${name}.error must be a non-empty string.`);
|
|
38
|
+
}
|
|
39
|
+
return { error: spec.error };
|
|
40
|
+
}
|
|
41
|
+
if (!isJsonValue(spec.result))
|
|
42
|
+
throw new Error(`eval.toolStubs.${name}.result must be JSON-serializable.`);
|
|
43
|
+
return { result: spec.result };
|
|
44
|
+
}
|
|
45
|
+
/** Strict ingress validation; throws descriptive errors on malformed input. */
|
|
46
|
+
export function validateEvalRunOptions(value) {
|
|
47
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
48
|
+
throw new Error("eval must be an object.");
|
|
49
|
+
}
|
|
50
|
+
const raw = value;
|
|
51
|
+
const options = {};
|
|
52
|
+
if (raw.toolStubs !== undefined) {
|
|
53
|
+
if (!raw.toolStubs || typeof raw.toolStubs !== "object" || Array.isArray(raw.toolStubs)) {
|
|
54
|
+
throw new Error("eval.toolStubs must be an object keyed by tool name.");
|
|
55
|
+
}
|
|
56
|
+
const stubs = {};
|
|
57
|
+
for (const [name, spec] of Object.entries(raw.toolStubs)) {
|
|
58
|
+
stubs[name] = validateStubSpec(name, spec);
|
|
59
|
+
}
|
|
60
|
+
options.toolStubs = stubs;
|
|
61
|
+
}
|
|
62
|
+
if (raw.autoApproveTools !== undefined) {
|
|
63
|
+
if (typeof raw.autoApproveTools !== "boolean")
|
|
64
|
+
throw new Error("eval.autoApproveTools must be a boolean.");
|
|
65
|
+
options.autoApproveTools = raw.autoApproveTools;
|
|
66
|
+
}
|
|
67
|
+
if (raw.recordOnlyDelivery !== undefined) {
|
|
68
|
+
if (typeof raw.recordOnlyDelivery !== "boolean")
|
|
69
|
+
throw new Error("eval.recordOnlyDelivery must be a boolean.");
|
|
70
|
+
options.recordOnlyDelivery = raw.recordOnlyDelivery;
|
|
71
|
+
}
|
|
72
|
+
return options;
|
|
73
|
+
}
|
|
74
|
+
/** Tolerant read of run.input.eval; returns undefined for absent or malformed blocks. */
|
|
75
|
+
export function evalRunOptionsForRun(run) {
|
|
76
|
+
const value = run?.input?.eval;
|
|
77
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
78
|
+
return undefined;
|
|
79
|
+
try {
|
|
80
|
+
return validateEvalRunOptions(value);
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Returns an execute function for a per-run stubbed tool, or undefined when
|
|
88
|
+
* the run carries no stub for that tool name.
|
|
89
|
+
*/
|
|
90
|
+
export function resolveEvalToolStub(cursors, run, toolName) {
|
|
91
|
+
const spec = evalRunOptionsForRun(run)?.toolStubs?.[toolName];
|
|
92
|
+
if (!spec || !run)
|
|
93
|
+
return undefined;
|
|
94
|
+
return () => {
|
|
95
|
+
if ("error" in spec)
|
|
96
|
+
throw new Error(spec.error);
|
|
97
|
+
if ("results" in spec) {
|
|
98
|
+
const key = `${run.id}:${toolName}`;
|
|
99
|
+
const index = cursors.get(key) ?? 0;
|
|
100
|
+
cursors.set(key, index + 1);
|
|
101
|
+
return spec.results[Math.min(index, spec.results.length - 1)];
|
|
102
|
+
}
|
|
103
|
+
return spec.result;
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=eval-run-options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eval-run-options.js","sourceRoot":"","sources":["../src/eval-run-options.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { HarnessContinuation, HarnessToolOutcome, JsonObject, JsonSchema, ReasoningLevel } from "@assemblyline-agents/core";
|
|
2
|
+
import type { ConnectionToolMetadata } from "./connections.js";
|
|
3
|
+
import type { RunRecord } from "./state.js";
|
|
4
|
+
/**
|
|
5
|
+
* Persisted harness-continuation envelope helpers: the runtime-owned runtime
|
|
6
|
+
* state plus the engine's opaque continuation, and the pause bookkeeping the
|
|
7
|
+
* loop uses to park a run on a tool boundary.
|
|
8
|
+
*/
|
|
9
|
+
export interface RestoredHarnessRuntime {
|
|
10
|
+
modelSpec: string;
|
|
11
|
+
reasoning?: ReasoningLevel | undefined;
|
|
12
|
+
systemPrompt: string;
|
|
13
|
+
outputSchema?: JsonSchema;
|
|
14
|
+
maxIterations?: number;
|
|
15
|
+
sessionId: string;
|
|
16
|
+
channel: string;
|
|
17
|
+
conversationId?: string;
|
|
18
|
+
activeSkills: string[];
|
|
19
|
+
defaultToolNames: string[];
|
|
20
|
+
discoveredConnectionTools: ConnectionToolMetadata[];
|
|
21
|
+
pendingToolName?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface RestoredHarnessSession {
|
|
24
|
+
runtime: RestoredHarnessRuntime;
|
|
25
|
+
continuation: HarnessContinuation;
|
|
26
|
+
}
|
|
27
|
+
export interface RuntimePause {
|
|
28
|
+
run: RunRecord;
|
|
29
|
+
waitingForApproval?: boolean;
|
|
30
|
+
waitingForInput?: boolean;
|
|
31
|
+
waitingForConnection?: boolean;
|
|
32
|
+
toolCallId?: string;
|
|
33
|
+
toolName?: string;
|
|
34
|
+
authorizationSessionId?: string;
|
|
35
|
+
}
|
|
36
|
+
export declare function storedHarnessContinuation(data: JsonObject | undefined): RestoredHarnessSession | undefined;
|
|
37
|
+
/** Session fields captured into a persisted continuation envelope. */
|
|
38
|
+
export interface ContinuationEnvelopeSession {
|
|
39
|
+
modelSpec: string;
|
|
40
|
+
reasoning?: ReasoningLevel | undefined;
|
|
41
|
+
systemPrompt: string;
|
|
42
|
+
outputSchema?: JsonSchema | undefined;
|
|
43
|
+
maxIterations?: number | undefined;
|
|
44
|
+
sessionId: string;
|
|
45
|
+
channel: string;
|
|
46
|
+
conversationId?: string;
|
|
47
|
+
activeSkills: Set<string>;
|
|
48
|
+
defaultToolNames: Set<string>;
|
|
49
|
+
discoveredConnectionTools: Map<string, ConnectionToolMetadata>;
|
|
50
|
+
}
|
|
51
|
+
/** Build the persisted envelope: runtime-owned session state + the engine's opaque continuation. */
|
|
52
|
+
export declare function buildHarnessContinuationEnvelope(session: ContinuationEnvelopeSession, continuation: HarnessContinuation, pendingToolName?: string): JsonObject;
|
|
53
|
+
export declare function harnessPauseOutcome(pause: RuntimePause): HarnessToolOutcome;
|
|
54
|
+
//# sourceMappingURL=harness-continuation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness-continuation.d.ts","sourceRoot":"","sources":["../src/harness-continuation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,cAAc,EACf,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;;;GAIG;AAEH,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,yBAAyB,EAAE,sBAAsB,EAAE,CAAC;IACpD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,sBAAsB,CAAC;IAChC,YAAY,EAAE,mBAAmB,CAAC;CACnC;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,SAAS,CAAC;IACf,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAMD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,sBAAsB,GAAG,SAAS,CAW1G;AAED,sEAAsE;AACtE,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACtC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,yBAAyB,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;CAChE;AAED,oGAAoG;AACpG,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,2BAA2B,EACpC,YAAY,EAAE,mBAAmB,EACjC,eAAe,CAAC,EAAE,MAAM,GACvB,UAAU,CAyBZ;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,kBAAkB,CAO3E"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { safeJson } from "./json-util.js";
|
|
2
|
+
function isEnvelopeObject(value) {
|
|
3
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
4
|
+
}
|
|
5
|
+
export function storedHarnessContinuation(data) {
|
|
6
|
+
if (!data)
|
|
7
|
+
return undefined;
|
|
8
|
+
if (!isEnvelopeObject(data.runtime) || !isEnvelopeObject(data.continuation))
|
|
9
|
+
return undefined;
|
|
10
|
+
const continuation = data.continuation;
|
|
11
|
+
if (typeof continuation.harness !== "string" || typeof continuation.version !== "number" || !isEnvelopeObject(continuation.state)) {
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
return {
|
|
15
|
+
runtime: data.runtime,
|
|
16
|
+
continuation: { harness: continuation.harness, version: continuation.version, state: continuation.state }
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
/** Build the persisted envelope: runtime-owned session state + the engine's opaque continuation. */
|
|
20
|
+
export function buildHarnessContinuationEnvelope(session, continuation, pendingToolName) {
|
|
21
|
+
const runtimeState = {
|
|
22
|
+
modelSpec: session.modelSpec,
|
|
23
|
+
systemPrompt: session.systemPrompt,
|
|
24
|
+
sessionId: session.sessionId,
|
|
25
|
+
channel: session.channel,
|
|
26
|
+
activeSkills: [...session.activeSkills].sort(),
|
|
27
|
+
defaultToolNames: [...session.defaultToolNames].sort(),
|
|
28
|
+
discoveredConnectionTools: safeJson([...session.discoveredConnectionTools.values()].sort((a, b) => a.qualifiedName.localeCompare(b.qualifiedName)))
|
|
29
|
+
};
|
|
30
|
+
if (session.reasoning)
|
|
31
|
+
runtimeState.reasoning = session.reasoning;
|
|
32
|
+
if (session.outputSchema)
|
|
33
|
+
runtimeState.outputSchema = safeJson(session.outputSchema);
|
|
34
|
+
if (session.maxIterations !== undefined)
|
|
35
|
+
runtimeState.maxIterations = session.maxIterations;
|
|
36
|
+
if (session.conversationId)
|
|
37
|
+
runtimeState.conversationId = session.conversationId;
|
|
38
|
+
if (pendingToolName)
|
|
39
|
+
runtimeState.pendingToolName = pendingToolName;
|
|
40
|
+
return safeJson({
|
|
41
|
+
runtime: runtimeState,
|
|
42
|
+
continuation: {
|
|
43
|
+
harness: continuation.harness,
|
|
44
|
+
version: continuation.version,
|
|
45
|
+
state: continuation.state
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
export function harnessPauseOutcome(pause) {
|
|
50
|
+
const outcome = {
|
|
51
|
+
kind: "pause",
|
|
52
|
+
output: { paused: true, status: pause.run.status }
|
|
53
|
+
};
|
|
54
|
+
if (pause.toolCallId)
|
|
55
|
+
outcome.toolCallId = pause.toolCallId;
|
|
56
|
+
return outcome;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=harness-continuation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness-continuation.js","sourceRoot":"","sources":["../src/harness-continuation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { type AgentHarness, type AgentHarnessContext, type AgentManifest, type HarnessContinuation, type HarnessToolDescriptor, type HarnessToolOutcome, type JsonObject, type JsonSchema, type JsonValue, type ReasoningLevel } from "@assemblyline-agents/core";
|
|
2
|
+
import type { ChannelTurn } from "./channel.js";
|
|
3
|
+
import { RuntimeConnectionRegistry, type ConnectionAuthorizationSessionStore, type ConnectionToolMetadata } from "./connections.js";
|
|
4
|
+
import { type TranscriptPolicyOptions } from "./context-policy-util.js";
|
|
5
|
+
import { type LoadedConversationTranscript } from "./conversation-transcript.js";
|
|
6
|
+
import { type RuntimePause } from "./harness-continuation.js";
|
|
7
|
+
import type { RuntimeLogger } from "./logging.js";
|
|
8
|
+
import type { RunEventBus } from "./run-stream.js";
|
|
9
|
+
import type { BlobAdapter, ContextBundle, EmitSpanOptions, HarnessLoopSession, HarnessLoopState, RuntimeInstrumentationConfig, RuntimeSandboxHandle } from "./runtime-types.js";
|
|
10
|
+
import type { CheckpointRecord, RunRecord, StateAdapter } from "./state.js";
|
|
11
|
+
/**
|
|
12
|
+
* Primary harness loop: pi-default harness resolution, the model loop over
|
|
13
|
+
* {@link AgentHarnessContext} (tool listing/execution, telemetry emit,
|
|
14
|
+
* iteration checkpoints), and harness continuation persistence. Follows the
|
|
15
|
+
* delivery-send/resource-projection host-delegate pattern: OpenEveRuntime
|
|
16
|
+
* builds a {@link HarnessLoopHost} closing over itself and keeps thin
|
|
17
|
+
* delegate methods with unchanged signatures. The `defaultAgentHarness`
|
|
18
|
+
* memo and `instrumentationConfig` are exposed as accessors on the host so
|
|
19
|
+
* reads/writes land on the runtime's own fields.
|
|
20
|
+
*/
|
|
21
|
+
/** Narrow slice of the runtime the harness loop needs. */
|
|
22
|
+
export interface HarnessLoopHost {
|
|
23
|
+
state: StateAdapter;
|
|
24
|
+
blob: BlobAdapter;
|
|
25
|
+
manifest: AgentManifest;
|
|
26
|
+
env: Record<string, string | undefined>;
|
|
27
|
+
logger: RuntimeLogger;
|
|
28
|
+
models: unknown;
|
|
29
|
+
agentHarnessOverride: AgentHarness | undefined;
|
|
30
|
+
modelHarnesses: Record<string, AgentHarness>;
|
|
31
|
+
defaultAgentHarness: AgentHarness | undefined;
|
|
32
|
+
checkpointEveryIteration: boolean;
|
|
33
|
+
maxModelIterations: number;
|
|
34
|
+
outputValidationMaxRetries: number;
|
|
35
|
+
now(): Date;
|
|
36
|
+
shouldStopRun(runId: string): boolean;
|
|
37
|
+
/** True once the run's wall-clock deadline fired (heartbeat-enforced). */
|
|
38
|
+
runDeadlineExceeded(runId: string): boolean;
|
|
39
|
+
/** Register a per-turn AbortController; the deadline aborts registered controllers. */
|
|
40
|
+
registerRunAbort(runId: string, controller: AbortController): () => void;
|
|
41
|
+
maxRunDurationMs: number;
|
|
42
|
+
instrumentationConfig: RuntimeInstrumentationConfig;
|
|
43
|
+
runEventBus: RunEventBus;
|
|
44
|
+
connectionAuthorizationSessionStore: ConnectionAuthorizationSessionStore;
|
|
45
|
+
createConnectionRegistry(channel: string, turn?: ChannelTurn): RuntimeConnectionRegistry;
|
|
46
|
+
createConnectionRegistryForRun(run: RunRecord, fallbackChannel: string, sandboxHandle: RuntimeSandboxHandle): RuntimeConnectionRegistry;
|
|
47
|
+
visibleToolSet(defaultToolNames: Set<string>, activeSkills: Set<string>): Set<string>;
|
|
48
|
+
modelTools(activeToolNames: Set<string>, connectionRegistry: RuntimeConnectionRegistry | undefined, discoveredConnectionTools: Map<string, ConnectionToolMetadata>): Promise<HarnessToolDescriptor[]>;
|
|
49
|
+
harnessExecuteTool(call: {
|
|
50
|
+
toolCallId: string;
|
|
51
|
+
name: string;
|
|
52
|
+
input: unknown;
|
|
53
|
+
}, state: HarnessLoopState): Promise<HarnessToolOutcome>;
|
|
54
|
+
createCheckpoint(input: Omit<CheckpointRecord, "id" | "createdAt">): Promise<CheckpointRecord>;
|
|
55
|
+
emitSpan(name: string, startedAt: string, attributes: JsonObject, options?: EmitSpanOptions): Promise<void>;
|
|
56
|
+
runSpanAttributes(run: RunRecord, extra?: JsonObject): JsonObject;
|
|
57
|
+
turnSpanId(runId: string): string;
|
|
58
|
+
}
|
|
59
|
+
export interface HarnessLoopOutcome {
|
|
60
|
+
run: RunRecord;
|
|
61
|
+
response: string;
|
|
62
|
+
output?: JsonValue;
|
|
63
|
+
waitingForApproval?: boolean;
|
|
64
|
+
waitingForInput?: boolean;
|
|
65
|
+
waitingForConnection?: boolean;
|
|
66
|
+
failed?: boolean;
|
|
67
|
+
controlStopped?: boolean;
|
|
68
|
+
continuation?: HarnessContinuation;
|
|
69
|
+
}
|
|
70
|
+
interface HarnessRequestBudget {
|
|
71
|
+
max: number;
|
|
72
|
+
used: number;
|
|
73
|
+
}
|
|
74
|
+
export declare const DEFAULT_MAX_MODEL_ITERATIONS = 25;
|
|
75
|
+
export declare const DEFAULT_OUTPUT_VALIDATION_MAX_RETRIES = 2;
|
|
76
|
+
/** Pi is the default primary engine; explicit provider-prefix routes are opt-in. */
|
|
77
|
+
export declare function resolveAgentHarnessImpl(host: HarnessLoopHost, modelSpec?: string): Promise<AgentHarness>;
|
|
78
|
+
export declare function piHarnessImpl(host: HarnessLoopHost): AgentHarness;
|
|
79
|
+
export declare function runHarnessLoopImpl(host: HarnessLoopHost, input: {
|
|
80
|
+
run: RunRecord;
|
|
81
|
+
bundle: ContextBundle;
|
|
82
|
+
sandboxHandle: RuntimeSandboxHandle;
|
|
83
|
+
message: string;
|
|
84
|
+
channel: string;
|
|
85
|
+
turn?: ChannelTurn;
|
|
86
|
+
conversationId?: string;
|
|
87
|
+
model?: string;
|
|
88
|
+
reasoning?: ReasoningLevel | undefined;
|
|
89
|
+
instructions?: string;
|
|
90
|
+
defaultToolNames?: string[];
|
|
91
|
+
harness?: AgentHarness;
|
|
92
|
+
outputSchema?: JsonSchema | undefined;
|
|
93
|
+
maxIterations?: number | undefined;
|
|
94
|
+
/** Stored conversation transcript to resume from, with trim settings. */
|
|
95
|
+
transcript?: {
|
|
96
|
+
loaded: LoadedConversationTranscript;
|
|
97
|
+
settings: TranscriptPolicyOptions;
|
|
98
|
+
} | undefined;
|
|
99
|
+
}): Promise<HarnessLoopOutcome>;
|
|
100
|
+
/** Execute a fresh or resumed harness turn under shared iteration and final-output policies. */
|
|
101
|
+
export declare function executeHarnessTurnImpl(host: HarnessLoopHost, harness: AgentHarness, input: Parameters<AgentHarness["runTurn"]>[0], session: HarnessLoopSession, loopState: HarnessLoopState, resumed: boolean): Promise<{
|
|
102
|
+
result: Awaited<ReturnType<AgentHarness["runTurn"]>>;
|
|
103
|
+
output?: JsonValue;
|
|
104
|
+
failed?: boolean;
|
|
105
|
+
controlStopped?: boolean;
|
|
106
|
+
}>;
|
|
107
|
+
export declare function createHarnessContextImpl(host: HarnessLoopHost, session: HarnessLoopSession, loopState: HarnessLoopState, resumed: boolean, requestBudget?: HarnessRequestBudget): AgentHarnessContext;
|
|
108
|
+
export declare function persistHarnessContinuationImpl(host: HarnessLoopHost, runId: string, session: HarnessLoopSession, continuation: HarnessContinuation | undefined, pause?: RuntimePause): Promise<void>;
|
|
109
|
+
export {};
|
|
110
|
+
//# sourceMappingURL=harness-loop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness-loop.d.ts","sourceRoot":"","sources":["../src/harness-loop.ts"],"names":[],"mappings":"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"}
|