@assemblyline-agents/runtime 2.0.0 → 3.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 +1 -1
- package/dist/a2a-client.d.ts +22 -0
- package/dist/a2a-client.d.ts.map +1 -0
- package/dist/a2a-client.js +211 -0
- package/dist/a2a-client.js.map +1 -0
- package/dist/agent-hook-context.d.ts +6 -1
- package/dist/agent-hook-context.d.ts.map +1 -1
- package/dist/agent-hook-context.js +24 -11
- package/dist/agent-hook-context.js.map +1 -1
- package/dist/agent-hook-evaluation.d.ts +6 -1
- package/dist/agent-hook-evaluation.d.ts.map +1 -1
- package/dist/agent-hook-evaluation.js +16 -5
- package/dist/agent-hook-evaluation.js.map +1 -1
- package/dist/agent-hook-run-lifecycle.d.ts +5 -1
- package/dist/agent-hook-run-lifecycle.d.ts.map +1 -1
- package/dist/agent-hook-run-lifecycle.js +11 -13
- package/dist/agent-hook-run-lifecycle.js.map +1 -1
- package/dist/agent-surface.d.ts +32 -0
- package/dist/agent-surface.d.ts.map +1 -0
- package/dist/agent-surface.js +85 -0
- package/dist/agent-surface.js.map +1 -0
- package/dist/attachments.d.ts +5 -1
- package/dist/attachments.d.ts.map +1 -1
- package/dist/attachments.js +58 -32
- package/dist/attachments.js.map +1 -1
- package/dist/audience.d.ts +30 -0
- package/dist/audience.d.ts.map +1 -0
- package/dist/audience.js +68 -0
- package/dist/audience.js.map +1 -0
- package/dist/automation-event-match.d.ts +8 -0
- package/dist/automation-event-match.d.ts.map +1 -0
- package/dist/automation-event-match.js +25 -0
- package/dist/automation-event-match.js.map +1 -0
- package/dist/background-review-trigger.d.ts.map +1 -1
- package/dist/background-review-trigger.js +14 -16
- package/dist/background-review-trigger.js.map +1 -1
- package/dist/background-review-types.d.ts +9 -2
- package/dist/background-review-types.d.ts.map +1 -1
- package/dist/background-review-worker.js +2 -2
- package/dist/background-review-worker.js.map +1 -1
- package/dist/background-review.d.ts.map +1 -1
- package/dist/background-review.js +27 -10
- package/dist/background-review.js.map +1 -1
- package/dist/builtin-tool-executors.d.ts +47 -21
- package/dist/builtin-tool-executors.d.ts.map +1 -1
- package/dist/builtin-tool-executors.js +293 -121
- package/dist/builtin-tool-executors.js.map +1 -1
- package/dist/builtin-tools.d.ts +16 -8
- package/dist/builtin-tools.d.ts.map +1 -1
- package/dist/builtin-tools.js +309 -70
- package/dist/builtin-tools.js.map +1 -1
- package/dist/capability-catalog.d.ts +3 -2
- package/dist/capability-catalog.d.ts.map +1 -1
- package/dist/capability-catalog.js +10 -6
- package/dist/capability-catalog.js.map +1 -1
- package/dist/capability-inspection.d.ts +31 -0
- package/dist/capability-inspection.d.ts.map +1 -0
- package/dist/capability-inspection.js +58 -0
- package/dist/capability-inspection.js.map +1 -0
- package/dist/channel-http-util.d.ts.map +1 -1
- package/dist/channel-http-util.js +6 -2
- package/dist/channel-http-util.js.map +1 -1
- package/dist/channel-ingress.d.ts +16 -1
- package/dist/channel-ingress.d.ts.map +1 -1
- package/dist/channel-ingress.js +117 -7
- package/dist/channel-ingress.js.map +1 -1
- package/dist/channel.d.ts +58 -2
- package/dist/channel.d.ts.map +1 -1
- package/dist/checkpoints.d.ts +1 -1
- package/dist/checkpoints.d.ts.map +1 -1
- package/dist/checkpoints.js +6 -6
- package/dist/checkpoints.js.map +1 -1
- package/dist/child-process-env.d.ts +7 -0
- package/dist/child-process-env.d.ts.map +1 -0
- package/dist/child-process-env.js +41 -0
- package/dist/child-process-env.js.map +1 -0
- package/dist/computer-relay-protocol.d.ts.map +1 -1
- package/dist/computer-relay-protocol.js +4 -4
- package/dist/computer-relay-protocol.js.map +1 -1
- package/dist/concurrency.d.ts +1 -1
- package/dist/concurrency.js +1 -1
- package/dist/connection-auth-util.d.ts +1 -0
- package/dist/connection-auth-util.d.ts.map +1 -1
- package/dist/connection-auth-util.js +1 -1
- package/dist/connection-auth-util.js.map +1 -1
- package/dist/connection-clients.d.ts +11 -3
- package/dist/connection-clients.d.ts.map +1 -1
- package/dist/connection-clients.js +71 -8
- package/dist/connection-clients.js.map +1 -1
- package/dist/connection-event-store.d.ts +98 -0
- package/dist/connection-event-store.d.ts.map +1 -0
- package/dist/connection-event-store.js +162 -0
- package/dist/connection-event-store.js.map +1 -0
- package/dist/connection-events.d.ts +51 -0
- package/dist/connection-events.d.ts.map +1 -0
- package/dist/connection-events.js +343 -0
- package/dist/connection-events.js.map +1 -0
- package/dist/connection-stores.d.ts +3 -0
- package/dist/connection-stores.d.ts.map +1 -1
- package/dist/connection-stores.js +4 -1
- package/dist/connection-stores.js.map +1 -1
- package/dist/connection-util.d.ts +3 -2
- package/dist/connection-util.d.ts.map +1 -1
- package/dist/connection-util.js +18 -1
- package/dist/connection-util.js.map +1 -1
- package/dist/connections.d.ts +54 -5
- package/dist/connections.d.ts.map +1 -1
- package/dist/connections.js +342 -53
- package/dist/connections.js.map +1 -1
- package/dist/context-policy-util.d.ts.map +1 -1
- package/dist/context-policy-util.js +1 -3
- package/dist/context-policy-util.js.map +1 -1
- package/dist/conversation-context.d.ts +6 -2
- package/dist/conversation-context.d.ts.map +1 -1
- package/dist/conversation-context.js +45 -12
- package/dist/conversation-context.js.map +1 -1
- package/dist/conversation-transcript.d.ts +8 -5
- package/dist/conversation-transcript.d.ts.map +1 -1
- package/dist/conversation-transcript.js +24 -5
- package/dist/conversation-transcript.js.map +1 -1
- package/dist/conversation-turn-coalescing.d.ts +22 -0
- package/dist/conversation-turn-coalescing.d.ts.map +1 -0
- package/dist/conversation-turn-coalescing.js +121 -0
- package/dist/conversation-turn-coalescing.js.map +1 -0
- package/dist/conversation-turn-dispatch.d.ts +5 -2
- package/dist/conversation-turn-dispatch.d.ts.map +1 -1
- package/dist/conversation-turn-dispatch.js +59 -22
- package/dist/conversation-turn-dispatch.js.map +1 -1
- package/dist/default-outbound-route.d.ts +29 -0
- package/dist/default-outbound-route.d.ts.map +1 -0
- package/dist/default-outbound-route.js +105 -0
- package/dist/default-outbound-route.js.map +1 -0
- package/dist/delivery-artifacts.d.ts +2 -0
- package/dist/delivery-artifacts.d.ts.map +1 -0
- package/dist/delivery-artifacts.js +34 -0
- package/dist/delivery-artifacts.js.map +1 -0
- package/dist/delivery-files.d.ts +5 -0
- package/dist/delivery-files.d.ts.map +1 -0
- package/dist/delivery-files.js +33 -0
- package/dist/delivery-files.js.map +1 -0
- package/dist/delivery-queue.d.ts +21 -1
- package/dist/delivery-queue.d.ts.map +1 -1
- package/dist/delivery-queue.js +144 -1
- package/dist/delivery-queue.js.map +1 -1
- package/dist/delivery-send.d.ts +2 -2
- package/dist/delivery-send.d.ts.map +1 -1
- package/dist/delivery-send.js +256 -100
- package/dist/delivery-send.js.map +1 -1
- package/dist/durable-files.d.ts +37 -0
- package/dist/durable-files.d.ts.map +1 -0
- package/dist/durable-files.js +63 -0
- package/dist/durable-files.js.map +1 -0
- package/dist/harness-loop.d.ts +6 -1
- package/dist/harness-loop.d.ts.map +1 -1
- package/dist/harness-loop.js +110 -25
- package/dist/harness-loop.js.map +1 -1
- package/dist/heic-transcode-worker.d.ts +2 -0
- package/dist/heic-transcode-worker.d.ts.map +1 -0
- package/dist/heic-transcode-worker.js +59 -0
- package/dist/heic-transcode-worker.js.map +1 -0
- package/dist/heic-transcode.d.ts +18 -0
- package/dist/heic-transcode.d.ts.map +1 -0
- package/dist/heic-transcode.js +99 -0
- package/dist/heic-transcode.js.map +1 -0
- package/dist/human-input-routing.d.ts +22 -0
- package/dist/human-input-routing.d.ts.map +1 -0
- package/dist/human-input-routing.js +26 -0
- package/dist/human-input-routing.js.map +1 -0
- package/dist/in-memory-conversation-turn-store.d.ts +3 -1
- package/dist/in-memory-conversation-turn-store.d.ts.map +1 -1
- package/dist/in-memory-conversation-turn-store.js +41 -2
- package/dist/in-memory-conversation-turn-store.js.map +1 -1
- package/dist/in-memory-run-store.d.ts +8 -0
- package/dist/in-memory-run-store.d.ts.map +1 -1
- package/dist/in-memory-run-store.js +28 -5
- package/dist/in-memory-run-store.js.map +1 -1
- package/dist/in-memory-sandbox-session-store.d.ts +2 -1
- package/dist/in-memory-sandbox-session-store.d.ts.map +1 -1
- package/dist/in-memory-sandbox-session-store.js +65 -1
- package/dist/in-memory-sandbox-session-store.js.map +1 -1
- package/dist/in-memory-small-stores.d.ts +18 -1
- package/dist/in-memory-small-stores.d.ts.map +1 -1
- package/dist/in-memory-small-stores.js +107 -1
- package/dist/in-memory-small-stores.js.map +1 -1
- package/dist/in-memory-workspace-store.d.ts +40 -0
- package/dist/in-memory-workspace-store.d.ts.map +1 -0
- package/dist/in-memory-workspace-store.js +370 -0
- package/dist/in-memory-workspace-store.js.map +1 -0
- package/dist/index.d.ts +73 -36
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +390 -258
- package/dist/index.js.map +1 -1
- package/dist/json-util.d.ts +8 -0
- package/dist/json-util.d.ts.map +1 -1
- package/dist/json-util.js +8 -0
- package/dist/json-util.js.map +1 -1
- package/dist/local-sandbox.d.ts +3 -2
- package/dist/local-sandbox.d.ts.map +1 -1
- package/dist/local-sandbox.js +69 -25
- package/dist/local-sandbox.js.map +1 -1
- package/dist/mcp-client.d.ts.map +1 -1
- package/dist/mcp-client.js +3 -2
- package/dist/mcp-client.js.map +1 -1
- package/dist/media-processor.d.ts +42 -0
- package/dist/media-processor.d.ts.map +1 -0
- package/dist/media-processor.js +2 -0
- package/dist/media-processor.js.map +1 -0
- package/dist/model-media.d.ts +13 -1
- package/dist/model-media.d.ts.map +1 -1
- package/dist/model-media.js +81 -18
- package/dist/model-media.js.map +1 -1
- package/dist/model-visible-interrupts.d.ts +10 -0
- package/dist/model-visible-interrupts.d.ts.map +1 -0
- package/dist/model-visible-interrupts.js +41 -0
- package/dist/model-visible-interrupts.js.map +1 -0
- package/dist/operator-controls.d.ts.map +1 -1
- package/dist/operator-controls.js +16 -3
- package/dist/operator-controls.js.map +1 -1
- package/dist/outbound-http-policy.d.ts +7 -0
- package/dist/outbound-http-policy.d.ts.map +1 -0
- package/dist/outbound-http-policy.js +155 -0
- package/dist/outbound-http-policy.js.map +1 -0
- package/dist/public-api.d.ts +21 -0
- package/dist/public-api.d.ts.map +1 -0
- package/dist/public-api.js +19 -0
- package/dist/public-api.js.map +1 -0
- package/dist/replay-resume.d.ts +8 -0
- package/dist/replay-resume.d.ts.map +1 -1
- package/dist/replay-resume.js +141 -11
- package/dist/replay-resume.js.map +1 -1
- package/dist/resource-projection-util.d.ts +1 -1
- package/dist/resource-projection-util.d.ts.map +1 -1
- package/dist/resource-projection-util.js +21 -10
- package/dist/resource-projection-util.js.map +1 -1
- package/dist/resource-projection.d.ts +8 -1
- package/dist/resource-projection.d.ts.map +1 -1
- package/dist/resource-projection.js +229 -29
- package/dist/resource-projection.js.map +1 -1
- package/dist/run-heartbeat.d.ts +12 -2
- package/dist/run-heartbeat.d.ts.map +1 -1
- package/dist/run-heartbeat.js +31 -4
- package/dist/run-heartbeat.js.map +1 -1
- package/dist/run-outcome.d.ts +9 -5
- package/dist/run-outcome.d.ts.map +1 -1
- package/dist/run-outcome.js +14 -5
- package/dist/run-outcome.js.map +1 -1
- package/dist/run-recovery.d.ts +19 -3
- package/dist/run-recovery.d.ts.map +1 -1
- package/dist/run-recovery.js +205 -34
- package/dist/run-recovery.js.map +1 -1
- package/dist/run-replay.d.ts +35 -0
- package/dist/run-replay.d.ts.map +1 -0
- package/dist/run-replay.js +193 -0
- package/dist/run-replay.js.map +1 -0
- package/dist/run-result.d.ts +4 -0
- package/dist/run-result.d.ts.map +1 -0
- package/dist/run-result.js +18 -0
- package/dist/run-result.js.map +1 -0
- package/dist/run-timeline-query.d.ts +38 -0
- package/dist/run-timeline-query.d.ts.map +1 -0
- package/dist/run-timeline-query.js +99 -0
- package/dist/run-timeline-query.js.map +1 -0
- package/dist/runs-query.d.ts.map +1 -1
- package/dist/runs-query.js +11 -3
- package/dist/runs-query.js.map +1 -1
- package/dist/runtime-bundle.d.ts.map +1 -1
- package/dist/runtime-bundle.js +2 -0
- package/dist/runtime-bundle.js.map +1 -1
- package/dist/runtime-learning.d.ts +15 -13
- package/dist/runtime-learning.d.ts.map +1 -1
- package/dist/runtime-learning.js +79 -58
- package/dist/runtime-learning.js.map +1 -1
- package/dist/runtime-types.d.ts +68 -9
- package/dist/runtime-types.d.ts.map +1 -1
- package/dist/sandbox-fs.d.ts +8 -5
- package/dist/sandbox-fs.d.ts.map +1 -1
- package/dist/sandbox-fs.js +30 -31
- package/dist/sandbox-fs.js.map +1 -1
- package/dist/sandbox-handle.d.ts +25 -0
- package/dist/sandbox-handle.d.ts.map +1 -0
- package/dist/sandbox-handle.js +120 -0
- package/dist/sandbox-handle.js.map +1 -0
- package/dist/sandbox-session-identity.d.ts +14 -0
- package/dist/sandbox-session-identity.d.ts.map +1 -0
- package/dist/sandbox-session-identity.js +33 -0
- package/dist/sandbox-session-identity.js.map +1 -0
- package/dist/sandbox-session-key.d.ts.map +1 -1
- package/dist/sandbox-session-key.js +12 -9
- package/dist/sandbox-session-key.js.map +1 -1
- package/dist/sandbox-session-lifecycle.d.ts.map +1 -1
- package/dist/sandbox-session-lifecycle.js +187 -44
- package/dist/sandbox-session-lifecycle.js.map +1 -1
- package/dist/sandbox-snapshot-policy.js +3 -3
- package/dist/sandbox-snapshot-policy.js.map +1 -1
- package/dist/sandbox-state-sync.d.ts +4 -2
- package/dist/sandbox-state-sync.d.ts.map +1 -1
- package/dist/sandbox-state-sync.js +47 -15
- package/dist/sandbox-state-sync.js.map +1 -1
- package/dist/sandbox-sync-worker.d.ts +11 -2
- package/dist/sandbox-sync-worker.d.ts.map +1 -1
- package/dist/sandbox-sync-worker.js +143 -31
- package/dist/sandbox-sync-worker.js.map +1 -1
- package/dist/schedule-execution.d.ts.map +1 -1
- package/dist/schedule-execution.js +127 -23
- package/dist/schedule-execution.js.map +1 -1
- package/dist/sdk-api-client.d.ts +17 -0
- package/dist/sdk-api-client.d.ts.map +1 -0
- package/dist/sdk-api-client.js +55 -0
- package/dist/sdk-api-client.js.map +1 -0
- package/dist/security.js +2 -2
- package/dist/security.js.map +1 -1
- package/dist/self-improvement.d.ts +5 -1
- package/dist/self-improvement.d.ts.map +1 -1
- package/dist/self-improvement.js +28 -14
- package/dist/self-improvement.js.map +1 -1
- package/dist/skill-bundles.d.ts +55 -0
- package/dist/skill-bundles.d.ts.map +1 -0
- package/dist/skill-bundles.js +134 -0
- package/dist/skill-bundles.js.map +1 -0
- package/dist/source-loader.js +7 -7
- package/dist/source-loader.js.map +1 -1
- package/dist/state-store-helpers.d.ts +2 -0
- package/dist/state-store-helpers.d.ts.map +1 -1
- package/dist/state-store-helpers.js +11 -1
- package/dist/state-store-helpers.js.map +1 -1
- package/dist/state-stores.d.ts +1 -0
- package/dist/state-stores.d.ts.map +1 -1
- package/dist/state-stores.js +26 -7
- package/dist/state-stores.js.map +1 -1
- package/dist/state.d.ts +305 -5
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +41 -2
- package/dist/state.js.map +1 -1
- package/dist/storage.d.ts +47 -2
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +158 -6
- package/dist/storage.js.map +1 -1
- package/dist/subagent-execution.d.ts +1 -1
- package/dist/subagent-execution.d.ts.map +1 -1
- package/dist/subagent-execution.js +10 -12
- package/dist/subagent-execution.js.map +1 -1
- package/dist/target-instructions.js +1 -1
- package/dist/target-instructions.js.map +1 -1
- package/dist/tool-apis.d.ts.map +1 -1
- package/dist/tool-apis.js +33 -9
- package/dist/tool-apis.js.map +1 -1
- package/dist/tool-execution.d.ts +22 -12
- package/dist/tool-execution.d.ts.map +1 -1
- package/dist/tool-execution.js +368 -238
- package/dist/tool-execution.js.map +1 -1
- package/dist/turn-media.d.ts +29 -0
- package/dist/turn-media.d.ts.map +1 -0
- package/dist/turn-media.js +233 -0
- package/dist/turn-media.js.map +1 -0
- package/dist/usage-reconciliation.d.ts +1 -1
- package/dist/usage-reconciliation.js +1 -1
- package/dist/workspace-id.d.ts +10 -0
- package/dist/workspace-id.d.ts.map +1 -0
- package/dist/workspace-id.js +55 -0
- package/dist/workspace-id.js.map +1 -0
- package/dist/workspace-manifest.d.ts +24 -0
- package/dist/workspace-manifest.d.ts.map +1 -0
- package/dist/workspace-manifest.js +111 -0
- package/dist/workspace-manifest.js.map +1 -0
- package/dist/workspace-operation-limiter.d.ts +16 -0
- package/dist/workspace-operation-limiter.d.ts.map +1 -0
- package/dist/workspace-operation-limiter.js +31 -0
- package/dist/workspace-operation-limiter.js.map +1 -0
- package/dist/workspace-operations.d.ts +145 -0
- package/dist/workspace-operations.d.ts.map +1 -0
- package/dist/workspace-operations.js +420 -0
- package/dist/workspace-operations.js.map +1 -0
- package/dist/workspace-runtime.d.ts +110 -0
- package/dist/workspace-runtime.d.ts.map +1 -0
- package/dist/workspace-runtime.js +240 -0
- package/dist/workspace-runtime.js.map +1 -0
- package/dist/workspace-search.d.ts +55 -0
- package/dist/workspace-search.d.ts.map +1 -0
- package/dist/workspace-search.js +262 -0
- package/dist/workspace-search.js.map +1 -0
- package/dist/workspace-service.d.ts +173 -0
- package/dist/workspace-service.d.ts.map +1 -0
- package/dist/workspace-service.js +619 -0
- package/dist/workspace-service.js.map +1 -0
- package/dist/workspace.d.ts +7 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +7 -0
- package/dist/workspace.js.map +1 -0
- package/package.json +7 -4
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { AgentManifest } from "@assemblyline-agents/core";
|
|
2
|
+
import type { BlobAdapter, RunAgentOptions, RunAgentResult, RunReplayProvenance } from "./runtime-types.js";
|
|
3
|
+
import type { RunRecord, StateAdapter } from "./state.js";
|
|
4
|
+
export type RunReplayErrorCode = "run_not_found" | "run_not_terminal" | "agent_revision_mismatch" | "context_snapshot_unavailable" | "attachment_unavailable" | "attachment_integrity_mismatch";
|
|
5
|
+
/** A replay refusal is expected operator feedback, not an internal server error. */
|
|
6
|
+
export declare class RunReplayError extends Error {
|
|
7
|
+
readonly code: RunReplayErrorCode;
|
|
8
|
+
constructor(code: RunReplayErrorCode, message: string);
|
|
9
|
+
}
|
|
10
|
+
export interface PreparedRunReplay {
|
|
11
|
+
sourceRun: RunRecord;
|
|
12
|
+
options: RunAgentOptions;
|
|
13
|
+
}
|
|
14
|
+
export declare function recordRunReplayStarted(state: StateAdapter, runId: string, replay: RunReplayProvenance): Promise<void>;
|
|
15
|
+
export declare function rerunFromSnapshot(input: {
|
|
16
|
+
runId: string;
|
|
17
|
+
state: StateAdapter;
|
|
18
|
+
blob: BlobAdapter;
|
|
19
|
+
manifest: AgentManifest;
|
|
20
|
+
run: (options: RunAgentOptions) => Promise<RunAgentResult>;
|
|
21
|
+
}, lifecycle?: {
|
|
22
|
+
onRunCreated?: RunAgentOptions["onRunCreated"];
|
|
23
|
+
}): Promise<RunAgentResult>;
|
|
24
|
+
/**
|
|
25
|
+
* Reconstruct a model-visible run input from durable runtime-owned evidence.
|
|
26
|
+
* Public run detail is deliberately insufficient for this: attachment bytes
|
|
27
|
+
* stay in the blob adapter and are verified here before a new run is admitted.
|
|
28
|
+
*/
|
|
29
|
+
export declare function prepareRunReplay(input: {
|
|
30
|
+
runId: string;
|
|
31
|
+
state: StateAdapter;
|
|
32
|
+
blob: BlobAdapter;
|
|
33
|
+
manifest: AgentManifest;
|
|
34
|
+
}): Promise<PreparedRunReplay>;
|
|
35
|
+
//# sourceMappingURL=run-replay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-replay.d.ts","sourceRoot":"","sources":["../src/run-replay.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAA8B,MAAM,2BAA2B,CAAC;AAG3F,OAAO,KAAK,EAAE,WAAW,EAAiB,eAAe,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC3H,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI1D,MAAM,MAAM,kBAAkB,GAC1B,eAAe,GACf,kBAAkB,GAClB,yBAAyB,GACzB,8BAA8B,GAC9B,wBAAwB,GACxB,+BAA+B,CAAC;AAEpC,oFAAoF;AACpF,qBAAa,cAAe,SAAQ,KAAK;IAC3B,QAAQ,CAAC,IAAI,EAAE,kBAAkB;gBAAxB,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM;CAI/D;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,eAAe,CAAC;CAC1B;AAED,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,IAAI,CAAC,CASf;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE;IACL,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,aAAa,CAAC;IACxB,GAAG,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;CAC5D,EACD,SAAS,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,eAAe,CAAC,cAAc,CAAC,CAAA;CAAE,GAC7D,OAAO,CAAC,cAAc,CAAC,CAIzB;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,aAAa,CAAC;CACzB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA4E7B"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { attachmentContentsFromRecord } from "./attachments.js";
|
|
3
|
+
import { normalizeAgentPrincipal } from "./principals.js";
|
|
4
|
+
const TERMINAL_RUN_STATUSES = new Set(["completed", "failed", "cancelled"]);
|
|
5
|
+
/** A replay refusal is expected operator feedback, not an internal server error. */
|
|
6
|
+
export class RunReplayError extends Error {
|
|
7
|
+
code;
|
|
8
|
+
constructor(code, message) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.code = code;
|
|
11
|
+
this.name = "RunReplayError";
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export async function recordRunReplayStarted(state, runId, replay) {
|
|
15
|
+
await state.appendEvent(runId, "run.replay_started", {
|
|
16
|
+
sourceRunId: replay.sourceRunId,
|
|
17
|
+
sourceAgentRevision: replay.sourceAgentRevision,
|
|
18
|
+
inputSha256: replay.inputSha256,
|
|
19
|
+
contextSha256: replay.contextSha256,
|
|
20
|
+
attachmentSha256s: replay.attachmentSha256s,
|
|
21
|
+
deliveryMode: replay.deliveryMode
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
export async function rerunFromSnapshot(input, lifecycle) {
|
|
25
|
+
const prepared = await prepareRunReplay(input);
|
|
26
|
+
if (lifecycle?.onRunCreated)
|
|
27
|
+
prepared.options.onRunCreated = lifecycle.onRunCreated;
|
|
28
|
+
return input.run(prepared.options);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Reconstruct a model-visible run input from durable runtime-owned evidence.
|
|
32
|
+
* Public run detail is deliberately insufficient for this: attachment bytes
|
|
33
|
+
* stay in the blob adapter and are verified here before a new run is admitted.
|
|
34
|
+
*/
|
|
35
|
+
export async function prepareRunReplay(input) {
|
|
36
|
+
const sourceRun = await input.state.getRun(input.runId);
|
|
37
|
+
if (!sourceRun)
|
|
38
|
+
throw new RunReplayError("run_not_found", `Run not found: ${input.runId}`);
|
|
39
|
+
if (!TERMINAL_RUN_STATUSES.has(sourceRun.status)) {
|
|
40
|
+
throw new RunReplayError("run_not_terminal", `Run ${sourceRun.id} is not terminal (status: ${sourceRun.status}).`);
|
|
41
|
+
}
|
|
42
|
+
if (sourceRun.agentRevision !== input.manifest.agentRevision) {
|
|
43
|
+
throw new RunReplayError("agent_revision_mismatch", `Run ${sourceRun.id} used agent revision ${sourceRun.agentRevision}; this runtime serves ${input.manifest.agentRevision}.`);
|
|
44
|
+
}
|
|
45
|
+
const contextBytes = await input.blob.get(`context/${sourceRun.id}.json`);
|
|
46
|
+
if (!contextBytes) {
|
|
47
|
+
throw new RunReplayError("context_snapshot_unavailable", `Run ${sourceRun.id} has no durable context snapshot.`);
|
|
48
|
+
}
|
|
49
|
+
const contextSnapshot = parseContextSnapshot(sourceRun, contextBytes);
|
|
50
|
+
const message = stringValue(sourceRun.input.message);
|
|
51
|
+
const channel = stringValue(sourceRun.input.channel) || "local";
|
|
52
|
+
if (stringValue(contextSnapshot.activeEvent.message) !== message || stringValue(contextSnapshot.activeEvent.channel) !== channel) {
|
|
53
|
+
throw new RunReplayError("context_snapshot_unavailable", `Run ${sourceRun.id}'s context snapshot does not match its persisted input.`);
|
|
54
|
+
}
|
|
55
|
+
const attachments = await replayAttachments(contextSnapshot.attachments, input.blob, sourceRun.id);
|
|
56
|
+
const attachmentSha256s = contextSnapshot.attachments.flatMap((attachment) => {
|
|
57
|
+
const sha256 = stringValue(attachment.sha256);
|
|
58
|
+
return sha256 ? [sha256] : [];
|
|
59
|
+
});
|
|
60
|
+
const provenance = {
|
|
61
|
+
sourceRunId: sourceRun.id,
|
|
62
|
+
sourceAgentRevision: sourceRun.agentRevision,
|
|
63
|
+
inputSha256: sha256Json({
|
|
64
|
+
message,
|
|
65
|
+
channel,
|
|
66
|
+
eventId: sourceRun.input.eventId ?? null,
|
|
67
|
+
userId: sourceRun.input.userId ?? null,
|
|
68
|
+
principal: sourceRun.input.principal ?? null,
|
|
69
|
+
initiator: sourceRun.input.initiator ?? null,
|
|
70
|
+
projectId: sourceRun.input.projectId ?? null,
|
|
71
|
+
workspaceId: sourceRun.input.workspaceId ?? null,
|
|
72
|
+
tenantId: sourceRun.input.tenantId ?? null,
|
|
73
|
+
delivery: sourceRun.input.delivery ?? null,
|
|
74
|
+
metadata: sourceRun.input.metadata ?? {},
|
|
75
|
+
contextId: contextSnapshot.id,
|
|
76
|
+
attachmentSha256s
|
|
77
|
+
}),
|
|
78
|
+
contextSha256: createHash("sha256").update(contextBytes).digest("hex"),
|
|
79
|
+
attachmentSha256s,
|
|
80
|
+
deliveryMode: "record-only"
|
|
81
|
+
};
|
|
82
|
+
const options = {
|
|
83
|
+
message,
|
|
84
|
+
channel,
|
|
85
|
+
attachments,
|
|
86
|
+
// A replay uses the frozen context history instead of appending to and
|
|
87
|
+
// resuming the original live conversation. Omission creates a new,
|
|
88
|
+
// run-scoped conversation while the model still receives the exact saved
|
|
89
|
+
// context snapshot below.
|
|
90
|
+
contextSnapshot,
|
|
91
|
+
replay: provenance,
|
|
92
|
+
// Replays must not send a duplicate Slack/email/etc delivery. Approval is
|
|
93
|
+
// also intentionally omitted so approval-gated tools pause again.
|
|
94
|
+
eval: { recordOnlyDelivery: true }
|
|
95
|
+
};
|
|
96
|
+
copyString(sourceRun.input, options, "eventId");
|
|
97
|
+
copyString(sourceRun.input, options, "userId");
|
|
98
|
+
copyString(sourceRun.input, options, "projectId");
|
|
99
|
+
copyString(sourceRun.input, options, "workspaceId");
|
|
100
|
+
copyString(sourceRun.input, options, "tenantId");
|
|
101
|
+
copyObject(sourceRun.input, options, "metadata");
|
|
102
|
+
copyObject(sourceRun.input, options, "delivery");
|
|
103
|
+
copyPrincipal(sourceRun.input, options, "principal");
|
|
104
|
+
copyPrincipal(sourceRun.input, options, "initiator");
|
|
105
|
+
return { sourceRun, options };
|
|
106
|
+
}
|
|
107
|
+
function parseContextSnapshot(sourceRun, bytes) {
|
|
108
|
+
try {
|
|
109
|
+
const value = JSON.parse(Buffer.from(bytes).toString("utf8"));
|
|
110
|
+
if (value.agentRevision !== sourceRun.agentRevision ||
|
|
111
|
+
typeof value.id !== "string" ||
|
|
112
|
+
typeof value.instructions !== "string" ||
|
|
113
|
+
!value.activeEvent ||
|
|
114
|
+
typeof value.activeEvent !== "object" ||
|
|
115
|
+
!Array.isArray(value.attachments) ||
|
|
116
|
+
!Array.isArray(value.recentHistory) ||
|
|
117
|
+
!objectValue(value.memoryFilesystem) ||
|
|
118
|
+
!objectValue(value.fileManifest) ||
|
|
119
|
+
!Array.isArray(value.skills) ||
|
|
120
|
+
!objectValue(value.skillFilesystem) ||
|
|
121
|
+
!Array.isArray(value.tools) ||
|
|
122
|
+
!Array.isArray(value.capabilities) ||
|
|
123
|
+
!Array.isArray(value.channels) ||
|
|
124
|
+
!Array.isArray(value.trustBoundaries)) {
|
|
125
|
+
throw new Error("invalid context bundle");
|
|
126
|
+
}
|
|
127
|
+
return value;
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
throw new RunReplayError("context_snapshot_unavailable", `Run ${sourceRun.id}'s durable context snapshot is invalid.`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
async function replayAttachments(attachments, blob, runId) {
|
|
134
|
+
const output = [];
|
|
135
|
+
for (const attachment of attachments) {
|
|
136
|
+
const blobKey = stringValue(attachment.blobKey);
|
|
137
|
+
if (!blobKey) {
|
|
138
|
+
// metadata_only and failed attachments were exactly what the original
|
|
139
|
+
// model saw; retain that state without attempting a fresh provider URL.
|
|
140
|
+
output.push(structuredClone(attachment));
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
const contents = await attachmentContentsFromRecord(attachment, blob);
|
|
144
|
+
if (contents === undefined) {
|
|
145
|
+
throw new RunReplayError("attachment_unavailable", `Run ${runId} attachment ${attachmentName(attachment)} is no longer available.`);
|
|
146
|
+
}
|
|
147
|
+
const bytes = typeof contents === "string" ? Buffer.from(contents) : Buffer.from(contents);
|
|
148
|
+
const actualSha256 = createHash("sha256").update(bytes).digest("hex");
|
|
149
|
+
const expectedSha256 = stringValue(attachment.sha256);
|
|
150
|
+
const expectedSize = numberValue(attachment.sizeBytes) ?? numberValue(attachment.size);
|
|
151
|
+
if (!expectedSha256 || actualSha256 !== expectedSha256 || (expectedSize !== undefined && bytes.byteLength !== expectedSize)) {
|
|
152
|
+
throw new RunReplayError("attachment_integrity_mismatch", `Run ${runId} attachment ${attachmentName(attachment)} failed its integrity check.`);
|
|
153
|
+
}
|
|
154
|
+
const replayAttachment = structuredClone(attachment);
|
|
155
|
+
delete replayAttachment.blobKey;
|
|
156
|
+
delete replayAttachment.blobUri;
|
|
157
|
+
replayAttachment.dataBase64 = bytes.toString("base64");
|
|
158
|
+
replayAttachment.encoding = "base64";
|
|
159
|
+
output.push(replayAttachment);
|
|
160
|
+
}
|
|
161
|
+
return output;
|
|
162
|
+
}
|
|
163
|
+
function copyString(source, target, key) {
|
|
164
|
+
const value = stringValue(source[key]);
|
|
165
|
+
if (value)
|
|
166
|
+
target[key] = value;
|
|
167
|
+
}
|
|
168
|
+
function copyObject(source, target, key) {
|
|
169
|
+
const value = objectValue(source[key]);
|
|
170
|
+
if (value)
|
|
171
|
+
target[key] = structuredClone(value);
|
|
172
|
+
}
|
|
173
|
+
function copyPrincipal(source, target, key) {
|
|
174
|
+
const value = normalizeAgentPrincipal(source[key]);
|
|
175
|
+
if (value)
|
|
176
|
+
target[key] = value;
|
|
177
|
+
}
|
|
178
|
+
function attachmentName(attachment) {
|
|
179
|
+
return stringValue(attachment.filename) || stringValue(attachment.name) || stringValue(attachment.id) || "attachment";
|
|
180
|
+
}
|
|
181
|
+
function objectValue(value) {
|
|
182
|
+
return value && typeof value === "object" && !Array.isArray(value) ? value : undefined;
|
|
183
|
+
}
|
|
184
|
+
function stringValue(value) {
|
|
185
|
+
return typeof value === "string" ? value : "";
|
|
186
|
+
}
|
|
187
|
+
function numberValue(value) {
|
|
188
|
+
return typeof value === "number" && Number.isFinite(value) ? value : undefined;
|
|
189
|
+
}
|
|
190
|
+
function sha256Json(value) {
|
|
191
|
+
return createHash("sha256").update(JSON.stringify(value)).digest("hex");
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=run-replay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-replay.js","sourceRoot":"","sources":["../src/run-replay.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { RunAgentResult } from "./runtime-types.js";
|
|
2
|
+
import type { RunRecord, StateAdapter } from "./state.js";
|
|
3
|
+
export declare function buildRunAgentResult(state: StateAdapter, run: RunRecord, response: string, waitingForApproval?: boolean, waitingForInput?: boolean, waitingForConnection?: boolean): Promise<RunAgentResult>;
|
|
4
|
+
//# sourceMappingURL=run-result.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-result.d.ts","sourceRoot":"","sources":["../src/run-result.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1D,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,YAAY,EACnB,GAAG,EAAE,SAAS,EACd,QAAQ,EAAE,MAAM,EAChB,kBAAkB,CAAC,EAAE,OAAO,EAC5B,eAAe,CAAC,EAAE,OAAO,EACzB,oBAAoB,CAAC,EAAE,OAAO,GAC7B,OAAO,CAAC,cAAc,CAAC,CAYzB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { redactedToolCallRecord } from "./json-util.js";
|
|
2
|
+
export async function buildRunAgentResult(state, run, response, waitingForApproval, waitingForInput, waitingForConnection) {
|
|
3
|
+
const result = {
|
|
4
|
+
run,
|
|
5
|
+
events: await state.listEvents(run.id),
|
|
6
|
+
toolCalls: (await state.listToolCalls(run.id)).map(redactedToolCallRecord),
|
|
7
|
+
deliveries: await state.listDeliveries(run.id),
|
|
8
|
+
response
|
|
9
|
+
};
|
|
10
|
+
if (waitingForApproval !== undefined)
|
|
11
|
+
result.waitingForApproval = waitingForApproval;
|
|
12
|
+
if (waitingForInput !== undefined)
|
|
13
|
+
result.waitingForInput = waitingForInput;
|
|
14
|
+
if (waitingForConnection !== undefined)
|
|
15
|
+
result.waitingForConnection = waitingForConnection;
|
|
16
|
+
return result;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=run-result.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-result.js","sourceRoot":"","sources":["../src/run-result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAIxD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,KAAmB,EACnB,GAAc,EACd,QAAgB,EAChB,kBAA4B,EAC5B,eAAyB,EACzB,oBAA8B;IAE9B,MAAM,MAAM,GAAmB;QAC7B,GAAG;QACH,MAAM,EAAE,MAAM,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACtC,SAAS,EAAE,CAAC,MAAM,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC;QAC1E,UAAU,EAAE,MAAM,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9C,QAAQ;KACT,CAAC;IACF,IAAI,kBAAkB,KAAK,SAAS;QAAE,MAAM,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;IACrF,IAAI,eAAe,KAAK,SAAS;QAAE,MAAM,CAAC,eAAe,GAAG,eAAe,CAAC;IAC5E,IAAI,oBAAoB,KAAK,SAAS;QAAE,MAAM,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;IAC3F,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export { redactedToolCallRecord } from "./json-util.js";
|
|
2
|
+
import type { CheckpointRecord, DeliveryObligation, RunEvent, RunRecord, StateAdapter, ToolCallRecord, UsageRecord } from "./state.js";
|
|
3
|
+
export declare const DEFAULT_RUN_TIMELINE_PAGE_SIZE = 120;
|
|
4
|
+
export declare const MAX_RUN_TIMELINE_PAGE_SIZE = 500;
|
|
5
|
+
export declare const MAX_RUN_TIMELINE_SEQUENCE = 2147483647;
|
|
6
|
+
export interface RunTimelinePageQuery {
|
|
7
|
+
/** Events strictly before this durable sequence, returned in chronological order. */
|
|
8
|
+
before?: number;
|
|
9
|
+
/** Events strictly after this durable sequence, returned in chronological order. */
|
|
10
|
+
after?: number;
|
|
11
|
+
limit?: number;
|
|
12
|
+
}
|
|
13
|
+
export interface RunTimelinePageInfo {
|
|
14
|
+
limit: number;
|
|
15
|
+
totalEvents: number;
|
|
16
|
+
firstSequence?: number;
|
|
17
|
+
lastSequence?: number;
|
|
18
|
+
hasBefore: boolean;
|
|
19
|
+
hasAfter: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface RunTimelinePage {
|
|
22
|
+
run: RunRecord;
|
|
23
|
+
events: RunEvent[];
|
|
24
|
+
toolCalls: ToolCallRecord[];
|
|
25
|
+
checkpoints: CheckpointRecord[];
|
|
26
|
+
deliveries: DeliveryObligation[];
|
|
27
|
+
usage: UsageRecord[];
|
|
28
|
+
page: RunTimelinePageInfo;
|
|
29
|
+
}
|
|
30
|
+
export declare function normalizeRunTimelinePageQuery(query?: RunTimelinePageQuery): Required<Pick<RunTimelinePageQuery, "limit">> & Omit<RunTimelinePageQuery, "limit">;
|
|
31
|
+
/**
|
|
32
|
+
* A bounded, presentation-oriented run read. It intentionally avoids replay's
|
|
33
|
+
* checkpoint hydration and strips tool result/model-output bodies that the
|
|
34
|
+
* timeline never renders. Adapters may provide an optimized implementation;
|
|
35
|
+
* the fallback keeps custom state adapters correct while bounding HTTP bytes.
|
|
36
|
+
*/
|
|
37
|
+
export declare function queryRunTimelinePage(state: StateAdapter, runId: string, input?: RunTimelinePageQuery): Promise<RunTimelinePage | undefined>;
|
|
38
|
+
//# sourceMappingURL=run-timeline-query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-timeline-query.d.ts","sourceRoot":"","sources":["../src/run-timeline-query.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EAClB,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,cAAc,EACd,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAClD,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAC9C,eAAO,MAAM,yBAAyB,aAAgB,CAAC;AAEvD,MAAM,WAAW,oBAAoB;IACnC,qFAAqF;IACrF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oFAAoF;IACpF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,SAAS,CAAC;IACf,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC,UAAU,EAAE,kBAAkB,EAAE,CAAC;IACjC,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,IAAI,EAAE,mBAAmB,CAAC;CAC3B;AAMD,wBAAgB,6BAA6B,CAAC,KAAK,GAAE,oBAAyB,GAAG,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAkBnK;AAoBD;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,oBAAyB,GAC/B,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAoDtC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { redactedToolCallRecord } from "./json-util.js";
|
|
2
|
+
export { redactedToolCallRecord } from "./json-util.js";
|
|
3
|
+
export const DEFAULT_RUN_TIMELINE_PAGE_SIZE = 120;
|
|
4
|
+
export const MAX_RUN_TIMELINE_PAGE_SIZE = 500;
|
|
5
|
+
export const MAX_RUN_TIMELINE_SEQUENCE = 2_147_483_647;
|
|
6
|
+
export function normalizeRunTimelinePageQuery(query = {}) {
|
|
7
|
+
if (query.before !== undefined && query.after !== undefined) {
|
|
8
|
+
throw new Error("Run timeline pagination accepts either before or after, not both.");
|
|
9
|
+
}
|
|
10
|
+
for (const [name, value] of [["before", query.before], ["after", query.after]]) {
|
|
11
|
+
if (value !== undefined && (!Number.isSafeInteger(value) || value < 1 || value > MAX_RUN_TIMELINE_SEQUENCE)) {
|
|
12
|
+
throw new Error(`Run timeline ${name} must be a positive 32-bit integer sequence.`);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
const requestedLimit = query.limit ?? DEFAULT_RUN_TIMELINE_PAGE_SIZE;
|
|
16
|
+
if (!Number.isFinite(requestedLimit) || requestedLimit < 1) {
|
|
17
|
+
throw new Error("Run timeline limit must be a positive number.");
|
|
18
|
+
}
|
|
19
|
+
return {
|
|
20
|
+
...(query.before !== undefined ? { before: query.before } : {}),
|
|
21
|
+
...(query.after !== undefined ? { after: query.after } : {}),
|
|
22
|
+
limit: Math.min(MAX_RUN_TIMELINE_PAGE_SIZE, Math.floor(requestedLimit))
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function pageEvents(events, query) {
|
|
26
|
+
const before = query.before;
|
|
27
|
+
if (before !== undefined) {
|
|
28
|
+
return events.filter((event) => event.sequence < before).slice(-query.limit);
|
|
29
|
+
}
|
|
30
|
+
const after = query.after ?? 0;
|
|
31
|
+
return events.filter((event) => event.sequence > after).slice(0, query.limit);
|
|
32
|
+
}
|
|
33
|
+
function inWindow(timestamp, firstTimestamp, lastTimestamp) {
|
|
34
|
+
if (!firstTimestamp || !lastTimestamp)
|
|
35
|
+
return false;
|
|
36
|
+
return timestamp >= firstTimestamp && timestamp <= lastTimestamp;
|
|
37
|
+
}
|
|
38
|
+
function stringIds(events, key) {
|
|
39
|
+
return new Set(events.map((event) => event.data[key]).filter((value) => typeof value === "string"));
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* A bounded, presentation-oriented run read. It intentionally avoids replay's
|
|
43
|
+
* checkpoint hydration and strips tool result/model-output bodies that the
|
|
44
|
+
* timeline never renders. Adapters may provide an optimized implementation;
|
|
45
|
+
* the fallback keeps custom state adapters correct while bounding HTTP bytes.
|
|
46
|
+
*/
|
|
47
|
+
export async function queryRunTimelinePage(state, runId, input = {}) {
|
|
48
|
+
const query = normalizeRunTimelinePageQuery(input);
|
|
49
|
+
const optimized = state.queryRunTimelinePage;
|
|
50
|
+
if (optimized)
|
|
51
|
+
return optimized.call(state, runId, query);
|
|
52
|
+
const [run, allEvents] = await Promise.all([state.getRun(runId), state.listEvents(runId)]);
|
|
53
|
+
if (!run)
|
|
54
|
+
return undefined;
|
|
55
|
+
const events = pageEvents(allEvents, query);
|
|
56
|
+
const firstSequence = events[0]?.sequence;
|
|
57
|
+
const lastSequence = events.at(-1)?.sequence;
|
|
58
|
+
const firstTimestamp = events[0]?.timestamp;
|
|
59
|
+
const lastTimestamp = events.at(-1)?.timestamp;
|
|
60
|
+
const toolCallIds = stringIds(events, "toolCallId");
|
|
61
|
+
const deliveryIds = stringIds(events, "deliveryId");
|
|
62
|
+
const includesClosing = events.some((event) => event.type === "run.completed" || event.type === "delivery.sent");
|
|
63
|
+
const [allToolCalls, allCheckpoints, allDeliveries, allUsage] = await Promise.all([
|
|
64
|
+
state.listToolCalls(runId),
|
|
65
|
+
state.listCheckpoints(runId),
|
|
66
|
+
state.listDeliveries(runId),
|
|
67
|
+
state.listUsage(runId)
|
|
68
|
+
]);
|
|
69
|
+
const toolCalls = allToolCalls
|
|
70
|
+
.filter((record) => toolCallIds.has(record.id) || inWindow(record.createdAt, firstTimestamp, lastTimestamp))
|
|
71
|
+
.map((record) => {
|
|
72
|
+
const { result: _result, modelOutput: _modelOutput, ...timelineRecord } = redactedToolCallRecord(record);
|
|
73
|
+
return timelineRecord;
|
|
74
|
+
});
|
|
75
|
+
const checkpoints = allCheckpoints.filter((record) => inWindow(record.createdAt, firstTimestamp, lastTimestamp));
|
|
76
|
+
const deliveries = allDeliveries.filter((record, index) => (deliveryIds.has(record.id)
|
|
77
|
+
|| inWindow(record.createdAt, firstTimestamp, lastTimestamp)
|
|
78
|
+
|| (includesClosing && index === allDeliveries.length - 1)));
|
|
79
|
+
return {
|
|
80
|
+
run,
|
|
81
|
+
events,
|
|
82
|
+
toolCalls,
|
|
83
|
+
checkpoints,
|
|
84
|
+
deliveries,
|
|
85
|
+
// Usage rows are compact and power run-level token/cost summaries, so a
|
|
86
|
+
// page carries the complete ledger even though heavyweight timeline
|
|
87
|
+
// records stay windowed.
|
|
88
|
+
usage: allUsage,
|
|
89
|
+
page: {
|
|
90
|
+
limit: query.limit,
|
|
91
|
+
totalEvents: allEvents.length,
|
|
92
|
+
...(firstSequence !== undefined ? { firstSequence } : {}),
|
|
93
|
+
...(lastSequence !== undefined ? { lastSequence } : {}),
|
|
94
|
+
hasBefore: firstSequence !== undefined && allEvents.some((event) => event.sequence < firstSequence),
|
|
95
|
+
hasAfter: lastSequence !== undefined && allEvents.some((event) => event.sequence > lastSequence)
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=run-timeline-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-timeline-query.js","sourceRoot":"","sources":["../src/run-timeline-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAWxD,MAAM,CAAC,MAAM,8BAA8B,GAAG,GAAG,CAAC;AAClD,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAC9C,MAAM,CAAC,MAAM,yBAAyB,GAAG,aAAa,CAAC;AAiCvD,MAAM,UAAU,6BAA6B,CAAC,QAA8B,EAAE;IAC5E,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACvF,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAU,EAAE,CAAC;QACxF,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,yBAAyB,CAAC,EAAE,CAAC;YAC5G,MAAM,IAAI,KAAK,CAAC,gBAAgB,IAAI,8CAA8C,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IACD,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,IAAI,8BAA8B,CAAC;IACrE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IACD,OAAO;QACL,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,0BAA0B,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;KACxE,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,MAAkB,EAAE,KAAuD;IAC7F,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/E,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;IAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,QAAQ,CAAC,SAAiB,EAAE,cAAkC,EAAE,aAAiC;IACxG,IAAI,CAAC,cAAc,IAAI,CAAC,aAAa;QAAE,OAAO,KAAK,CAAC;IACpD,OAAO,SAAS,IAAI,cAAc,IAAI,SAAS,IAAI,aAAa,CAAC;AACnE,CAAC;AAED,SAAS,SAAS,CAAC,MAAkB,EAAE,GAAW;IAChD,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC;AACvH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,KAAmB,EACnB,KAAa,EACb,QAA8B,EAAE;IAEhC,MAAM,KAAK,GAAG,6BAA6B,CAAC,KAAK,CAAC,CAAC;IACnD,MAAM,SAAS,GAAI,KAA2B,CAAC,oBAAoB,CAAC;IACpE,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAE1D,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3F,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC5C,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC;IAC1C,MAAM,YAAY,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC;IAC7C,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;IAC5C,MAAM,aAAa,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;IAC/C,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACpD,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,eAAe,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC;IACjH,MAAM,CAAC,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAChF,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC;QAC1B,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC;QAC5B,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;QAC3B,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;KACvB,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,YAAY;SAC3B,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;SAC3G,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACd,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,cAAc,EAAE,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;QACzG,OAAO,cAAc,CAAC;IACxB,CAAC,CAAC,CAAC;IACL,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC,CAAC;IACjH,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CACzD,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;WACvB,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,EAAE,aAAa,CAAC;WACzD,CAAC,eAAe,IAAI,KAAK,KAAK,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAC3D,CAAC,CAAC;IACH,OAAO;QACL,GAAG;QACH,MAAM;QACN,SAAS;QACT,WAAW;QACX,UAAU;QACV,wEAAwE;QACxE,oEAAoE;QACpE,yBAAyB;QACzB,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,WAAW,EAAE,SAAS,CAAC,MAAM;YAC7B,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,SAAS,EAAE,aAAa,KAAK,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,aAAa,CAAC;YACnG,QAAQ,EAAE,YAAY,KAAK,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,YAAY,CAAC;SACjG;KACF,CAAC;AACJ,CAAC"}
|
package/dist/runs-query.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runs-query.d.ts","sourceRoot":"","sources":["../src/runs-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"runs-query.d.ts","sourceRoot":"","sources":["../src/runs-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAG3E,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE5D;;;GAGG;AAEH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,aAAa,EAAE,UAAU,EAAE,CAAC;CAC7B;AAED,wBAAsB,cAAc,CAClC,KAAK,EAAE,YAAY,EACnB,QAAQ,CAAC,EAAE,aAAa,EACxB,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,GACrD,OAAO,CAAC,oBAAoB,CAAC,CAuH/B;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG;IACtD,WAAW,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,aAAa,EAAE,MAAM,CAAC;IACtB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;CACrB,CAqBA"}
|
package/dist/runs-query.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { findSubagent } from "./agent-surface.js";
|
|
2
|
+
import { previewJson, redactedRunInput, redactedToolInput } from "./json-util.js";
|
|
2
3
|
export async function queryAgentRuns(state, manifest, options) {
|
|
3
4
|
// `includeDetails` (default true) builds the full per-run timeline. The list
|
|
4
5
|
// endpoint opts out: loading events/tool-calls/deliveries/usage for every run
|
|
@@ -29,6 +30,9 @@ export async function queryAgentRuns(state, manifest, options) {
|
|
|
29
30
|
details.push({
|
|
30
31
|
runId: run.id,
|
|
31
32
|
status: run.status,
|
|
33
|
+
deliveryStatus: run.deliveryStatus ?? null,
|
|
34
|
+
deliveryError: run.deliveryError ?? null,
|
|
35
|
+
deliveryAttempts: run.deliveryAttempts ?? null,
|
|
32
36
|
channel,
|
|
33
37
|
model,
|
|
34
38
|
durationMs: Math.max(0, Date.parse(run.updatedAt) - Date.parse(run.createdAt)),
|
|
@@ -55,7 +59,7 @@ export async function queryAgentRuns(state, manifest, options) {
|
|
|
55
59
|
id: toolCall.id,
|
|
56
60
|
toolName: toolCall.toolName,
|
|
57
61
|
status: toolCall.status,
|
|
58
|
-
inputPreview: previewJson(toolCall.input),
|
|
62
|
+
inputPreview: previewJson(redactedToolInput(toolCall.input)),
|
|
59
63
|
modelOutputPreview: previewJson(toolCall.modelOutput),
|
|
60
64
|
error: toolCall.error ?? null
|
|
61
65
|
})),
|
|
@@ -100,6 +104,9 @@ export async function queryAgentRuns(state, manifest, options) {
|
|
|
100
104
|
runs: runs.map((run) => ({
|
|
101
105
|
runId: run.id,
|
|
102
106
|
status: run.status,
|
|
107
|
+
deliveryStatus: run.deliveryStatus ?? null,
|
|
108
|
+
deliveryError: run.deliveryError ?? null,
|
|
109
|
+
deliveryAttempts: run.deliveryAttempts ?? null,
|
|
103
110
|
channel: typeof run.input.channel === "string" ? run.input.channel : "unknown",
|
|
104
111
|
model: modelForRun(run.input, manifest),
|
|
105
112
|
createdAt: run.createdAt,
|
|
@@ -135,7 +142,8 @@ function modelForRun(input, manifest) {
|
|
|
135
142
|
if (typeof input.model === "string")
|
|
136
143
|
return input.model;
|
|
137
144
|
if (typeof input.subagent === "string") {
|
|
138
|
-
|
|
145
|
+
const path = typeof input.agentSurface === "string" ? input.agentSurface : input.subagent;
|
|
146
|
+
return manifest ? findSubagent(manifest, path)?.possibleModels[0] ?? "unknown" : "unknown";
|
|
139
147
|
}
|
|
140
148
|
return manifest?.possibleModels[0] ?? "unknown";
|
|
141
149
|
}
|
package/dist/runs-query.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runs-query.js","sourceRoot":"","sources":["../src/runs-query.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"runs-query.js","sourceRoot":"","sources":["../src/runs-query.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-bundle.d.ts","sourceRoot":"","sources":["../src/runtime-bundle.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"runtime-bundle.d.ts","sourceRoot":"","sources":["../src/runtime-bundle.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,cAAc,CAgBtE"}
|
package/dist/runtime-bundle.js
CHANGED
|
@@ -8,9 +8,11 @@ export function loadRuntimeBundle(artifactRoot) {
|
|
|
8
8
|
const sourceBundle = existsSync(sourcePath)
|
|
9
9
|
? JSON.parse(readFileSync(sourcePath, "utf8"))
|
|
10
10
|
: {};
|
|
11
|
+
const resourcesRoot = join(root, "resources");
|
|
11
12
|
return {
|
|
12
13
|
manifest,
|
|
13
14
|
artifactRoot: root,
|
|
15
|
+
...(existsSync(resourcesRoot) ? { resourcesRoot } : {}),
|
|
14
16
|
sourceBundle,
|
|
15
17
|
devMode: true
|
|
16
18
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-bundle.js","sourceRoot":"","sources":["../src/runtime-bundle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAI1C,MAAM,UAAU,iBAAiB,CAAC,YAAoB;IACpD,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE,MAAM,CAAC,CAAkB,CAAC;IAChG,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,UAAU,CAAC,UAAU,CAAC;QACzC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAA4B;QAC1E,CAAC,CAAC,EAAE,CAAC;IACP,OAAO;QACL,QAAQ;QACR,YAAY,EAAE,IAAI;QAClB,YAAY;QACZ,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"runtime-bundle.js","sourceRoot":"","sources":["../src/runtime-bundle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAI1C,MAAM,UAAU,iBAAiB,CAAC,YAAoB;IACpD,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE,MAAM,CAAC,CAAkB,CAAC;IAChG,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,UAAU,CAAC,UAAU,CAAC;QACzC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAA4B;QAC1E,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC9C,OAAO;QACL,QAAQ;QACR,YAAY,EAAE,IAAI;QAClB,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,YAAY;QACZ,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC"}
|
|
@@ -10,11 +10,12 @@ interface RuntimeLearningOptions {
|
|
|
10
10
|
manifest: AgentManifest;
|
|
11
11
|
env: Record<string, string | undefined>;
|
|
12
12
|
logger: RuntimeLogger;
|
|
13
|
-
skillsConfig: ResolvedSkillsConfig;
|
|
14
13
|
learningStore: LearningStore;
|
|
15
14
|
skillStore: SkillStore;
|
|
16
15
|
memoryStore: MemoryStore;
|
|
17
|
-
|
|
16
|
+
skillsConfigForSurface(surfacePath: string): ResolvedSkillsConfig;
|
|
17
|
+
skillScopeForSurface(surfacePath: string): string;
|
|
18
|
+
anySkillsEnabled(): boolean;
|
|
18
19
|
memoryScopeForRun(run: RunRecord): MemoryScope;
|
|
19
20
|
resolveAgentHarness(modelSpec?: string): Promise<AgentHarness>;
|
|
20
21
|
now(): Date;
|
|
@@ -28,32 +29,33 @@ export interface RuntimeSkillWriteInput {
|
|
|
28
29
|
}
|
|
29
30
|
export declare class RuntimeLearningManager {
|
|
30
31
|
private readonly options;
|
|
31
|
-
private
|
|
32
|
+
private readonly seededSurfaces;
|
|
33
|
+
private readonly migratedSurfaceScopes;
|
|
32
34
|
private skillScopeMigrated;
|
|
33
35
|
constructor(options: RuntimeLearningOptions);
|
|
34
|
-
ensureSkillsSeeded(): Promise<void>;
|
|
35
|
-
listSkills(): Promise<Array<{
|
|
36
|
+
ensureSkillsSeeded(surfacePath?: string): Promise<void>;
|
|
37
|
+
listSkills(surfacePath?: string): Promise<Array<{
|
|
36
38
|
name: string;
|
|
37
39
|
description: string;
|
|
38
40
|
origin: string;
|
|
39
41
|
pending: boolean;
|
|
40
42
|
}>>;
|
|
41
|
-
saveSkill(input: RuntimeSkillWriteInput): Promise<{
|
|
43
|
+
saveSkill(input: RuntimeSkillWriteInput, surfacePath?: string): Promise<{
|
|
42
44
|
name: string;
|
|
43
45
|
pending: boolean;
|
|
44
46
|
}>;
|
|
45
|
-
deleteSkill(name: string): Promise<void>;
|
|
46
|
-
listSkillRevisions(name: string): Promise<SkillRevisionRecord[]>;
|
|
47
|
-
restoreSkillRevision(name: string, revision: number): Promise<{
|
|
47
|
+
deleteSkill(name: string, surfacePath?: string): Promise<void>;
|
|
48
|
+
listSkillRevisions(name: string, surfacePath?: string): Promise<SkillRevisionRecord[]>;
|
|
49
|
+
restoreSkillRevision(name: string, revision: number, surfacePath?: string): Promise<{
|
|
48
50
|
name: string;
|
|
49
51
|
pending: boolean;
|
|
50
52
|
}>;
|
|
51
|
-
listPendingSkillChanges(): Promise<PendingSkillChangeRecord[]>;
|
|
52
|
-
approveSkillChange(id: string): Promise<{
|
|
53
|
+
listPendingSkillChanges(surfacePath?: string): Promise<PendingSkillChangeRecord[]>;
|
|
54
|
+
approveSkillChange(id: string, surfacePath?: string): Promise<{
|
|
53
55
|
name: string;
|
|
54
56
|
action: string;
|
|
55
57
|
}>;
|
|
56
|
-
rejectSkillChange(id: string): Promise<void>;
|
|
58
|
+
rejectSkillChange(id: string, surfacePath?: string): Promise<void>;
|
|
57
59
|
recordRunFeedback(runId: string, feedback: {
|
|
58
60
|
rating: "positive" | "negative";
|
|
59
61
|
comment?: string;
|
|
@@ -61,7 +63,7 @@ export declare class RuntimeLearningManager {
|
|
|
61
63
|
jobId: string;
|
|
62
64
|
status: string;
|
|
63
65
|
}>;
|
|
64
|
-
listBackgroundReviews(): Promise<import("./learning-store.js").BackgroundReviewJobRecord[]>;
|
|
66
|
+
listBackgroundReviews(surfacePath?: string): Promise<import("./learning-store.js").BackgroundReviewJobRecord[]>;
|
|
65
67
|
runDueBackgroundReviews(options?: {
|
|
66
68
|
now?: Date;
|
|
67
69
|
limit?: number;
|