@assemblyline-agents/runtime 1.0.0 → 3.0.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-capability-snapshot.d.ts +32 -0
- package/dist/agent-capability-snapshot.d.ts.map +1 -0
- package/dist/agent-capability-snapshot.js +77 -0
- package/dist/agent-capability-snapshot.js.map +1 -0
- package/dist/agent-event-handlers.d.ts +21 -0
- package/dist/agent-event-handlers.d.ts.map +1 -0
- package/dist/agent-event-handlers.js +64 -0
- package/dist/agent-event-handlers.js.map +1 -0
- package/dist/agent-hook-context.d.ts +8 -0
- package/dist/agent-hook-context.d.ts.map +1 -0
- package/dist/agent-hook-context.js +29 -0
- package/dist/agent-hook-context.js.map +1 -0
- package/dist/agent-hook-evaluation.d.ts +61 -0
- package/dist/agent-hook-evaluation.d.ts.map +1 -0
- package/dist/agent-hook-evaluation.js +197 -0
- package/dist/agent-hook-evaluation.js.map +1 -0
- package/dist/agent-hook-run-lifecycle.d.ts +44 -0
- package/dist/agent-hook-run-lifecycle.d.ts.map +1 -0
- package/dist/agent-hook-run-lifecycle.js +76 -0
- package/dist/agent-hook-run-lifecycle.js.map +1 -0
- package/dist/agent-state.d.ts +31 -0
- package/dist/agent-state.d.ts.map +1 -0
- package/dist/agent-state.js +80 -0
- package/dist/agent-state.js.map +1 -0
- 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/authored-hooks.d.ts +6 -0
- package/dist/authored-hooks.d.ts.map +1 -0
- package/dist/authored-hooks.js +17 -0
- package/dist/authored-hooks.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 +9 -0
- package/dist/background-review-trigger.d.ts.map +1 -0
- package/dist/background-review-trigger.js +72 -0
- package/dist/background-review-trigger.js.map +1 -0
- package/dist/background-review-types.d.ts +60 -0
- package/dist/background-review-types.d.ts.map +1 -0
- package/dist/background-review-types.js +2 -0
- package/dist/background-review-types.js.map +1 -0
- package/dist/background-review-worker.d.ts +14 -0
- package/dist/background-review-worker.d.ts.map +1 -0
- package/dist/background-review-worker.js +61 -0
- package/dist/background-review-worker.js.map +1 -0
- package/dist/background-review.d.ts +5 -0
- package/dist/background-review.d.ts.map +1 -0
- package/dist/background-review.js +332 -0
- package/dist/background-review.js.map +1 -0
- package/dist/builtin-tool-executors.d.ts +50 -27
- package/dist/builtin-tool-executors.d.ts.map +1 -1
- package/dist/builtin-tool-executors.js +332 -124
- package/dist/builtin-tool-executors.js.map +1 -1
- package/dist/builtin-tools.d.ts +16 -9
- package/dist/builtin-tools.d.ts.map +1 -1
- package/dist/builtin-tools.js +308 -116
- 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 +12 -7
- 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 -5
- 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 +152 -14
- package/dist/channel-ingress.js.map +1 -1
- package/dist/channel.d.ts +73 -3
- 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 +3 -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 +6 -0
- package/dist/connection-stores.d.ts.map +1 -1
- package/dist/connection-stores.js +20 -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 +60 -5
- package/dist/connections.d.ts.map +1 -1
- package/dist/connections.js +390 -57
- 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 +9 -4
- package/dist/conversation-context.d.ts.map +1 -1
- package/dist/conversation-context.js +65 -19
- 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 +18 -9
- package/dist/harness-loop.d.ts.map +1 -1
- package/dist/harness-loop.js +245 -50
- 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-agent-state-store.d.ts +21 -0
- package/dist/in-memory-agent-state-store.d.ts.map +1 -0
- package/dist/in-memory-agent-state-store.js +97 -0
- package/dist/in-memory-agent-state-store.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 +116 -45
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +637 -566
- 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/learning-store.d.ts +111 -0
- package/dist/learning-store.d.ts.map +1 -0
- package/dist/learning-store.js +193 -0
- package/dist/learning-store.js.map +1 -0
- 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/principals.d.ts +18 -0
- package/dist/principals.d.ts.map +1 -0
- package/dist/principals.js +90 -0
- package/dist/principals.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 +15 -3
- package/dist/replay-resume.d.ts.map +1 -1
- package/dist/replay-resume.js +256 -24
- 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 +230 -26
- 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 +16 -5
- package/dist/run-outcome.js.map +1 -1
- package/dist/run-recovery.d.ts +31 -2
- package/dist/run-recovery.d.ts.map +1 -1
- package/dist/run-recovery.js +211 -32
- 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 +12 -4
- 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 +88 -0
- package/dist/runtime-learning.d.ts.map +1 -0
- package/dist/runtime-learning.js +260 -0
- package/dist/runtime-learning.js.map +1 -0
- package/dist/runtime-types.d.ts +79 -10
- package/dist/runtime-types.d.ts.map +1 -1
- package/dist/sandbox-fs.d.ts +9 -5
- package/dist/sandbox-fs.d.ts.map +1 -1
- package/dist/sandbox-fs.js +50 -33
- 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 +14 -10
- package/dist/sandbox-session-key.js.map +1 -1
- package/dist/sandbox-session-lifecycle.d.ts +12 -0
- package/dist/sandbox-session-lifecycle.d.ts.map +1 -0
- package/dist/sandbox-session-lifecycle.js +261 -0
- package/dist/sandbox-session-lifecycle.js.map +1 -0
- package/dist/sandbox-snapshot-policy.js +3 -3
- package/dist/sandbox-snapshot-policy.js.map +1 -1
- package/dist/sandbox-state-sync.d.ts +22 -0
- package/dist/sandbox-state-sync.d.ts.map +1 -0
- package/dist/sandbox-state-sync.js +147 -0
- package/dist/sandbox-state-sync.js.map +1 -0
- 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 +187 -57
- 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 +34 -6
- package/dist/self-improvement.d.ts.map +1 -1
- package/dist/self-improvement.js +140 -34
- 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.d.ts +8 -0
- package/dist/source-loader.d.ts.map +1 -1
- package/dist/source-loader.js +41 -10
- 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 +2 -0
- package/dist/state-stores.d.ts.map +1 -1
- package/dist/state-stores.js +40 -7
- package/dist/state-stores.js.map +1 -1
- package/dist/state.d.ts +344 -5
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +44 -2
- package/dist/state.js.map +1 -1
- package/dist/storage.d.ts +59 -2
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +183 -6
- package/dist/storage.js.map +1 -1
- package/dist/subagent-execution.d.ts +7 -6
- package/dist/subagent-execution.d.ts.map +1 -1
- package/dist/subagent-execution.js +58 -19
- package/dist/subagent-execution.js.map +1 -1
- package/dist/target-instructions.d.ts +14 -0
- package/dist/target-instructions.d.ts.map +1 -0
- package/dist/target-instructions.js +18 -0
- package/dist/target-instructions.js.map +1 -0
- package/dist/tool-apis.d.ts.map +1 -1
- package/dist/tool-apis.js +55 -10
- package/dist/tool-apis.js.map +1 -1
- package/dist/tool-execution.d.ts +26 -13
- package/dist/tool-execution.d.ts.map +1 -1
- package/dist/tool-execution.js +368 -239
- 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
- package/dist/agent-harness.d.ts +0 -108
- package/dist/agent-harness.d.ts.map +0 -1
- package/dist/agent-harness.js +0 -2
- package/dist/agent-harness.js.map +0 -1
- package/dist/attachments-legacy.d.ts +0 -17
- package/dist/attachments-legacy.d.ts.map +0 -1
- package/dist/attachments-legacy.js +0 -273
- package/dist/attachments-legacy.js.map +0 -1
- package/dist/code-mode.d.ts +0 -20
- package/dist/code-mode.d.ts.map +0 -1
- package/dist/code-mode.js +0 -658
- package/dist/code-mode.js.map +0 -1
- package/dist/hook-dispatch.d.ts +0 -19
- package/dist/hook-dispatch.d.ts.map +0 -1
- package/dist/hook-dispatch.js +0 -37
- package/dist/hook-dispatch.js.map +0 -1
- package/dist/pi-agent-harness.d.ts +0 -40
- package/dist/pi-agent-harness.d.ts.map +0 -1
- package/dist/pi-agent-harness.js +0 -222
- package/dist/pi-agent-harness.js.map +0 -1
- package/dist/pi-harness.d.ts +0 -42
- package/dist/pi-harness.d.ts.map +0 -1
- package/dist/pi-harness.js +0 -142
- package/dist/pi-harness.js.map +0 -1
- package/dist/run-resolver.d.ts +0 -35
- package/dist/run-resolver.d.ts.map +0 -1
- package/dist/run-resolver.js +0 -84
- package/dist/run-resolver.js.map +0 -1
- package/dist/usage-budget.d.ts +0 -29
- package/dist/usage-budget.d.ts.map +0 -1
- package/dist/usage-budget.js +0 -145
- package/dist/usage-budget.js.map +0 -1
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { evaluateAgentSetup, validateResolvedAgentCapabilities } from "@assemblyline-agents/core";
|
|
2
|
+
import { defaultHookConnections, defaultHookSkills, defaultHookSubagents, defaultHookTools, hookCapabilityCatalog } from "./agent-hook-context.js";
|
|
3
|
+
import { rootAgentSurface } from "./agent-surface.js";
|
|
4
|
+
import { capabilitySnapshotMaterial, persistCapabilitySnapshot } from "./agent-capability-snapshot.js";
|
|
5
|
+
import { failRun } from "./run-outcome.js";
|
|
6
|
+
import { loadAuthoredHookRegistrations } from "./authored-hooks.js";
|
|
7
|
+
export class AgentHookEvaluationError extends Error {
|
|
8
|
+
constructor(message, options) {
|
|
9
|
+
super(message, options);
|
|
10
|
+
this.name = "AgentHookEvaluationError";
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
/** Owns dirty tracking and atomic replacement of one run's capability snapshot. */
|
|
14
|
+
export class AgentHookRunController {
|
|
15
|
+
options;
|
|
16
|
+
snapshotValue;
|
|
17
|
+
dirtyValue = true;
|
|
18
|
+
evaluationSequence = 0;
|
|
19
|
+
evaluating = false;
|
|
20
|
+
constructor(options) {
|
|
21
|
+
this.options = options;
|
|
22
|
+
}
|
|
23
|
+
get current() {
|
|
24
|
+
if (!this.snapshotValue)
|
|
25
|
+
throw new Error("Agent hooks have not been evaluated for this run.");
|
|
26
|
+
return this.snapshotValue;
|
|
27
|
+
}
|
|
28
|
+
get dirty() {
|
|
29
|
+
return this.dirtyValue || this.options.agentState.revision !== this.snapshotValue?.stateRevision;
|
|
30
|
+
}
|
|
31
|
+
markDirty() {
|
|
32
|
+
this.dirtyValue = true;
|
|
33
|
+
}
|
|
34
|
+
async evaluate(reason) {
|
|
35
|
+
if (this.evaluating)
|
|
36
|
+
throw new Error("Agent hook evaluation is already active for this run.");
|
|
37
|
+
if (this.evaluationSequence >= 50) {
|
|
38
|
+
throw new Error("Agent hook evaluation exceeded the 50-snapshot cycle limit for one run.");
|
|
39
|
+
}
|
|
40
|
+
this.evaluating = true;
|
|
41
|
+
try {
|
|
42
|
+
const stateSnapshot = await this.options.agentState.refresh();
|
|
43
|
+
const module = await this.options.sourceLoader.load(this.options.agentSource ?? this.options.manifest.agentSource);
|
|
44
|
+
const definition = module.default;
|
|
45
|
+
if (!definition || typeof definition !== "object" || typeof definition.setup !== "function") {
|
|
46
|
+
throw new Error("agent.ts must default-export defineAgent({ setup() { ... } }).");
|
|
47
|
+
}
|
|
48
|
+
const surface = this.options.surface ?? rootAgentSurface(this.options.manifest);
|
|
49
|
+
const catalog = this.options.catalog ?? hookCapabilityCatalog(this.options.manifest, surface);
|
|
50
|
+
const defaultTools = defaultHookTools(this.options.manifest, surface).filter((tool) => catalog.tools.has(tool));
|
|
51
|
+
let declaration = evaluateAgentSetup(definition.setup.bind(definition), {
|
|
52
|
+
run: this.options.run,
|
|
53
|
+
state: { values: stateSnapshot.values, revision: stateSnapshot.revision },
|
|
54
|
+
defaultTools,
|
|
55
|
+
defaultSkills: (this.options.defaultSkills ?? defaultHookSkills(surface)).filter((skill) => catalog.skills.has(skill)),
|
|
56
|
+
defaultConnections: defaultHookConnections(surface).filter((connection) => catalog.connections.has(connection)),
|
|
57
|
+
defaultSubagents: defaultHookSubagents(surface).filter((subagent) => catalog.subagents.has(subagent)),
|
|
58
|
+
setState: (key, value) => typeof value === "function"
|
|
59
|
+
? this.options.agentState.update(key, value)
|
|
60
|
+
: this.options.agentState.set(key, value)
|
|
61
|
+
});
|
|
62
|
+
declaration = applyHostRestrictions(declaration, this.options.disabledTools, this.options.disabledConnections);
|
|
63
|
+
declaration = validateResolvedAgentCapabilities(declaration, catalog);
|
|
64
|
+
if (reason === "recovery") {
|
|
65
|
+
const restored = await this.restoreMatchingSnapshot(declaration, stateSnapshot.revision);
|
|
66
|
+
if (restored)
|
|
67
|
+
return restored;
|
|
68
|
+
}
|
|
69
|
+
this.evaluationSequence += 1;
|
|
70
|
+
const snapshot = await persistCapabilitySnapshot({
|
|
71
|
+
state: this.options.state,
|
|
72
|
+
blob: this.options.blob,
|
|
73
|
+
runId: this.options.run.id,
|
|
74
|
+
declaration,
|
|
75
|
+
sequence: this.evaluationSequence,
|
|
76
|
+
stateRevision: stateSnapshot.revision,
|
|
77
|
+
reason,
|
|
78
|
+
createCheckpoint: this.options.createCheckpoint
|
|
79
|
+
});
|
|
80
|
+
const authoredHooks = await loadAuthoredHookRegistrations(this.options.hooks ?? [], this.options.sourceLoader);
|
|
81
|
+
this.options.eventHandlers.replace(this.options.run.id, [...authoredHooks, ...declaration.events]);
|
|
82
|
+
this.snapshotValue = snapshot;
|
|
83
|
+
this.dirtyValue = this.options.agentState.revision !== stateSnapshot.revision;
|
|
84
|
+
return snapshot;
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
88
|
+
await this.options.state.appendEvent(this.options.run.id, "agent.hook_evaluation_failed", {
|
|
89
|
+
reason,
|
|
90
|
+
stateRevision: this.options.agentState.revision,
|
|
91
|
+
error: message
|
|
92
|
+
});
|
|
93
|
+
this.options.logger.warn("agent.hook_evaluation_failed", {
|
|
94
|
+
runId: this.options.run.id,
|
|
95
|
+
error: message
|
|
96
|
+
});
|
|
97
|
+
const current = await this.options.state.getRun(this.options.run.id);
|
|
98
|
+
if (current && current.status !== "failed") {
|
|
99
|
+
await failRun({ state: this.options.state }, this.options.run.id, {
|
|
100
|
+
reason: "agent.hook_evaluation_failed",
|
|
101
|
+
error: message,
|
|
102
|
+
data: { evaluationReason: reason, stateRevision: this.options.agentState.revision }
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
throw new AgentHookEvaluationError(message, { cause: error });
|
|
106
|
+
}
|
|
107
|
+
finally {
|
|
108
|
+
this.evaluating = false;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
async refreshIfDirty() {
|
|
112
|
+
if (!this.dirty) {
|
|
113
|
+
// Another run in the same conversation may have advanced the shared
|
|
114
|
+
// revision, so local dirty notifications are only an optimization.
|
|
115
|
+
await this.options.agentState.refresh();
|
|
116
|
+
}
|
|
117
|
+
return this.dirty ? this.evaluate("state_changed") : this.current;
|
|
118
|
+
}
|
|
119
|
+
async restoreMatchingSnapshot(declaration, stateRevision) {
|
|
120
|
+
const checkpoints = await (this.options.listCheckpoints?.(this.options.run.id)
|
|
121
|
+
?? this.options.state.listCheckpoints(this.options.run.id));
|
|
122
|
+
const checkpoint = [...checkpoints].reverse().find((candidate) => candidate.name === "agent.capability_snapshot");
|
|
123
|
+
if (!checkpoint)
|
|
124
|
+
return undefined;
|
|
125
|
+
const sequence = numberField(checkpoint.data.evaluationSequence ?? checkpoint.data.sequence);
|
|
126
|
+
if (sequence !== undefined)
|
|
127
|
+
this.evaluationSequence = Math.max(this.evaluationSequence, sequence);
|
|
128
|
+
const checkpointRevision = numberField(checkpoint.data.stateRevision);
|
|
129
|
+
const checkpointHash = stringField(checkpoint.data.hash);
|
|
130
|
+
const snapshotId = stringField(checkpoint.data.snapshotId);
|
|
131
|
+
if (checkpointRevision !== stateRevision || !checkpointHash || !snapshotId || sequence === undefined)
|
|
132
|
+
return undefined;
|
|
133
|
+
const material = capabilitySnapshotMaterial(declaration);
|
|
134
|
+
if (material.hash !== checkpointHash)
|
|
135
|
+
return undefined;
|
|
136
|
+
const restored = {
|
|
137
|
+
id: snapshotId,
|
|
138
|
+
hash: checkpointHash,
|
|
139
|
+
sequence,
|
|
140
|
+
stateRevision,
|
|
141
|
+
reason: "recovery",
|
|
142
|
+
declaration,
|
|
143
|
+
serializable: material.serializable,
|
|
144
|
+
checkpointId: checkpoint.id
|
|
145
|
+
};
|
|
146
|
+
const authoredHooks = await loadAuthoredHookRegistrations(this.options.hooks ?? [], this.options.sourceLoader);
|
|
147
|
+
this.options.eventHandlers.replace(this.options.run.id, [...authoredHooks, ...declaration.events]);
|
|
148
|
+
this.snapshotValue = restored;
|
|
149
|
+
this.dirtyValue = this.options.agentState.revision !== stateRevision;
|
|
150
|
+
return restored;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
function stringField(value) {
|
|
154
|
+
return typeof value === "string" ? value : undefined;
|
|
155
|
+
}
|
|
156
|
+
function numberField(value) {
|
|
157
|
+
return typeof value === "number" && Number.isFinite(value) ? value : undefined;
|
|
158
|
+
}
|
|
159
|
+
function applyHostRestrictions(declaration, disabledTools, disabledConnections) {
|
|
160
|
+
const restricted = {
|
|
161
|
+
...declaration,
|
|
162
|
+
instructions: [...declaration.instructions],
|
|
163
|
+
tools: disabledTools ? declaration.tools.filter((tool) => !disabledTools.has(tool)) : [...declaration.tools],
|
|
164
|
+
skills: [...declaration.skills],
|
|
165
|
+
connections: disabledConnections
|
|
166
|
+
? declaration.connections.filter((connection) => !disabledConnections.has(connection))
|
|
167
|
+
: [...declaration.connections],
|
|
168
|
+
subagents: [...declaration.subagents],
|
|
169
|
+
events: [...declaration.events]
|
|
170
|
+
};
|
|
171
|
+
return restricted;
|
|
172
|
+
}
|
|
173
|
+
export function immutableAgentRunContext(input) {
|
|
174
|
+
const attachments = (input.attachments ?? []).map(attachmentMetadata);
|
|
175
|
+
return Object.freeze({
|
|
176
|
+
id: input.id,
|
|
177
|
+
message: input.message,
|
|
178
|
+
channel: input.channel,
|
|
179
|
+
conversationId: input.conversationId,
|
|
180
|
+
...(input.userId ? { userId: input.userId } : {}),
|
|
181
|
+
...(input.principal ? { principal: Object.freeze(cloneObject(input.principal)) } : {}),
|
|
182
|
+
...(input.initiator ? { initiator: Object.freeze(cloneObject(input.initiator)) } : {}),
|
|
183
|
+
audience: Object.freeze(cloneObject((input.audience ?? { private: true }))),
|
|
184
|
+
attachments: Object.freeze(attachments),
|
|
185
|
+
...(input.metadata ? { metadata: Object.freeze(cloneObject(input.metadata)) } : {})
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
function attachmentMetadata(attachment) {
|
|
189
|
+
const copy = cloneObject(attachment);
|
|
190
|
+
for (const key of ["data", "bytes", "contents", "text", "base64"])
|
|
191
|
+
delete copy[key];
|
|
192
|
+
return Object.freeze(copy);
|
|
193
|
+
}
|
|
194
|
+
function cloneObject(value) {
|
|
195
|
+
return JSON.parse(JSON.stringify(value));
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=agent-hook-evaluation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-hook-evaluation.js","sourceRoot":"","sources":["../src/agent-hook-evaluation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { AgentCapabilityCatalog, AgentManifest, AgentRunContext, CompiledHook, JsonObject, ResolvedAgentCapabilities, SourceReference } from "@assemblyline-agents/core";
|
|
2
|
+
import type { AgentEventHandlerRegistry } from "./agent-event-handlers.js";
|
|
3
|
+
import { AgentHookRunController } from "./agent-hook-evaluation.js";
|
|
4
|
+
import { RuntimeAgentStateHandle } from "./agent-state.js";
|
|
5
|
+
import type { RuntimeLogger } from "./logging.js";
|
|
6
|
+
import type { RunStreamEvent } from "./run-stream.js";
|
|
7
|
+
import type { AgentSourceModuleLoader } from "./source-loader.js";
|
|
8
|
+
import type { BlobAdapter } from "./runtime-types.js";
|
|
9
|
+
import type { CheckpointRecord, ResolvedStateAdapter, RunRecord } from "./state.js";
|
|
10
|
+
import type { AgentSurface } from "./agent-surface.js";
|
|
11
|
+
export interface RuntimeAgentHookControllerOptions {
|
|
12
|
+
manifest: AgentManifest;
|
|
13
|
+
state: ResolvedStateAdapter;
|
|
14
|
+
blob: BlobAdapter;
|
|
15
|
+
sourceLoader: AgentSourceModuleLoader;
|
|
16
|
+
eventHandlers: AgentEventHandlerRegistry;
|
|
17
|
+
logger: RuntimeLogger;
|
|
18
|
+
agentScope: string;
|
|
19
|
+
conversationId: string;
|
|
20
|
+
run: AgentRunContext;
|
|
21
|
+
agentSource?: SourceReference;
|
|
22
|
+
surface?: AgentSurface;
|
|
23
|
+
catalog?: AgentCapabilityCatalog;
|
|
24
|
+
defaultSkills?: readonly string[];
|
|
25
|
+
hooks?: readonly CompiledHook[];
|
|
26
|
+
disabledTools?: ReadonlySet<string>;
|
|
27
|
+
disabledConnections?: ReadonlySet<string>;
|
|
28
|
+
createCheckpoint(input: Omit<CheckpointRecord, "id" | "createdAt">): Promise<CheckpointRecord>;
|
|
29
|
+
listCheckpoints(runId: string): Promise<CheckpointRecord[]>;
|
|
30
|
+
}
|
|
31
|
+
export declare function createRuntimeAgentHookController(options: RuntimeAgentHookControllerOptions): Promise<{
|
|
32
|
+
controller: AgentHookRunController;
|
|
33
|
+
agentState: RuntimeAgentStateHandle;
|
|
34
|
+
}>;
|
|
35
|
+
export interface RecoverAgentHookControllerOptions {
|
|
36
|
+
run: RunRecord;
|
|
37
|
+
manifest: AgentManifest;
|
|
38
|
+
createMain(message: string, metadata: JsonObject | undefined, channel: string, conversationId: string, attachments: JsonObject[]): Promise<AgentHookRunController>;
|
|
39
|
+
createSubagent(subagent: AgentManifest["subagents"][number], message: string, conversationId: string): Promise<AgentHookRunController>;
|
|
40
|
+
}
|
|
41
|
+
export declare function recoverAgentHookController(options: RecoverAgentHookControllerOptions): Promise<AgentHookRunController>;
|
|
42
|
+
export declare function removeTerminalAgentHookState(runId: string, event: RunStreamEvent, handlers: AgentEventHandlerRegistry, controllers: Map<string, AgentHookRunController>, states: Map<string, RuntimeAgentStateHandle>): void;
|
|
43
|
+
export declare function resolvedInstructionsForRun(manifest: AgentManifest, run: RunRecord, baseInstructions: string, capabilities: ResolvedAgentCapabilities): string;
|
|
44
|
+
//# sourceMappingURL=agent-hook-run-lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-hook-run-lifecycle.d.ts","sourceRoot":"","sources":["../src/agent-hook-run-lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { AgentHookRunController } from "./agent-hook-evaluation.js";
|
|
2
|
+
import { RuntimeAgentStateHandle } from "./agent-state.js";
|
|
3
|
+
import { RUN_STREAM_TERMINAL_EVENTS } from "./run-stream.js";
|
|
4
|
+
import { findSubagent, surfaceForRun } from "./agent-surface.js";
|
|
5
|
+
export async function createRuntimeAgentHookController(options) {
|
|
6
|
+
let controller;
|
|
7
|
+
const agentState = await RuntimeAgentStateHandle.create({
|
|
8
|
+
state: options.state,
|
|
9
|
+
scope: { agentScope: options.agentScope, conversationId: options.conversationId },
|
|
10
|
+
runId: options.run.id,
|
|
11
|
+
appendEvent: (runId, type, data) => options.state.appendEvent(runId, type, data),
|
|
12
|
+
onChanged: () => controller?.markDirty()
|
|
13
|
+
});
|
|
14
|
+
controller = new AgentHookRunController({
|
|
15
|
+
manifest: options.manifest,
|
|
16
|
+
state: options.state,
|
|
17
|
+
blob: options.blob,
|
|
18
|
+
sourceLoader: options.sourceLoader,
|
|
19
|
+
agentState,
|
|
20
|
+
run: options.run,
|
|
21
|
+
eventHandlers: options.eventHandlers,
|
|
22
|
+
logger: options.logger,
|
|
23
|
+
createCheckpoint: options.createCheckpoint,
|
|
24
|
+
listCheckpoints: options.listCheckpoints,
|
|
25
|
+
...(options.agentSource ? { agentSource: options.agentSource } : {}),
|
|
26
|
+
...(options.surface ? { surface: options.surface } : {}),
|
|
27
|
+
...(options.catalog ? { catalog: options.catalog } : {}),
|
|
28
|
+
...(options.defaultSkills ? { defaultSkills: options.defaultSkills } : {}),
|
|
29
|
+
hooks: options.hooks ?? (options.agentSource ? [] : options.manifest.hooks ?? []),
|
|
30
|
+
...(options.disabledTools ? { disabledTools: options.disabledTools } : {}),
|
|
31
|
+
...(options.disabledConnections ? { disabledConnections: options.disabledConnections } : {})
|
|
32
|
+
});
|
|
33
|
+
return { controller, agentState };
|
|
34
|
+
}
|
|
35
|
+
export async function recoverAgentHookController(options) {
|
|
36
|
+
const { run } = options;
|
|
37
|
+
const conversationId = typeof run.input.conversationId === "string" ? run.input.conversationId : run.id;
|
|
38
|
+
const message = typeof run.input.message === "string"
|
|
39
|
+
? run.input.message
|
|
40
|
+
: isRecord(run.input.task) ? JSON.stringify(run.input.task) : "";
|
|
41
|
+
const subagentName = typeof run.input.subagent === "string" ? run.input.subagent : undefined;
|
|
42
|
+
const subagentPath = typeof run.input.agentSurface === "string" ? run.input.agentSurface : undefined;
|
|
43
|
+
let controller;
|
|
44
|
+
if (subagentName) {
|
|
45
|
+
const subagent = subagentPath ? findSubagent(options.manifest, subagentPath) : options.manifest.subagents.find((candidate) => candidate.name === subagentName);
|
|
46
|
+
if (!subagent)
|
|
47
|
+
throw new Error(`Subagent not found during hook recovery: ${subagentName}.`);
|
|
48
|
+
controller = await options.createSubagent(subagent, message, conversationId);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
const metadata = isRecord(run.input.metadata) ? run.input.metadata : undefined;
|
|
52
|
+
const attachments = Array.isArray(run.input.attachmentMetadata)
|
|
53
|
+
? run.input.attachmentMetadata.filter(isRecord)
|
|
54
|
+
: [];
|
|
55
|
+
controller = await options.createMain(message, metadata, typeof run.input.channel === "string" ? run.input.channel : "local", conversationId, attachments);
|
|
56
|
+
}
|
|
57
|
+
await controller.evaluate("recovery");
|
|
58
|
+
return controller;
|
|
59
|
+
}
|
|
60
|
+
export function removeTerminalAgentHookState(runId, event, handlers, controllers, states) {
|
|
61
|
+
if (!RUN_STREAM_TERMINAL_EVENTS.has(event.type))
|
|
62
|
+
return;
|
|
63
|
+
handlers.remove(runId);
|
|
64
|
+
controllers.delete(runId);
|
|
65
|
+
states.delete(runId);
|
|
66
|
+
}
|
|
67
|
+
export function resolvedInstructionsForRun(manifest, run, baseInstructions, capabilities) {
|
|
68
|
+
const surface = surfaceForRun(manifest, run);
|
|
69
|
+
if (surface.path === "root")
|
|
70
|
+
return baseInstructions;
|
|
71
|
+
return [surface.instructions.text, ...capabilities.instructions].filter(Boolean).join("\n\n");
|
|
72
|
+
}
|
|
73
|
+
function isRecord(value) {
|
|
74
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=agent-hook-run-lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-hook-run-lifecycle.js","sourceRoot":"","sources":["../src/agent-hook-run-lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { AgentStateHandle, JsonObject, JsonValue } from "@assemblyline-agents/core";
|
|
2
|
+
import type { AgentStateScope, AgentStateSnapshot, ResolvedStateAdapter } from "./state.js";
|
|
3
|
+
export interface RuntimeAgentStateOptions {
|
|
4
|
+
state: ResolvedStateAdapter;
|
|
5
|
+
scope: AgentStateScope;
|
|
6
|
+
runId: string;
|
|
7
|
+
appendEvent(runId: string, type: string, data: JsonObject): Promise<unknown>;
|
|
8
|
+
onChanged(revision: number): void;
|
|
9
|
+
}
|
|
10
|
+
/** Revision-aware state handle shared by setup evaluation and authored tools. */
|
|
11
|
+
export declare class RuntimeAgentStateHandle implements AgentStateHandle {
|
|
12
|
+
private readonly options;
|
|
13
|
+
private current;
|
|
14
|
+
private constructor();
|
|
15
|
+
static create(options: RuntimeAgentStateOptions): Promise<RuntimeAgentStateHandle>;
|
|
16
|
+
get revision(): number;
|
|
17
|
+
snapshot(): AgentStateSnapshot;
|
|
18
|
+
refresh(): Promise<AgentStateSnapshot>;
|
|
19
|
+
get<T extends JsonValue>(key: string): Promise<T | undefined>;
|
|
20
|
+
set<T extends JsonValue>(key: string, value: T, options?: {
|
|
21
|
+
expectedRevision?: number;
|
|
22
|
+
}): Promise<number>;
|
|
23
|
+
update<T extends JsonValue>(key: string, update: (current: T | undefined) => T, options?: {
|
|
24
|
+
expectedRevision?: number;
|
|
25
|
+
}): Promise<number>;
|
|
26
|
+
delete(key: string, options?: {
|
|
27
|
+
expectedRevision?: number;
|
|
28
|
+
}): Promise<number>;
|
|
29
|
+
private afterMutation;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=agent-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-state.d.ts","sourceRoot":"","sources":["../src/agent-state.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACzF,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,oBAAoB,CAAC;IAC5B,KAAK,EAAE,eAAe,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7E,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAKD,iFAAiF;AACjF,qBAAa,uBAAwB,YAAW,gBAAgB;IAI5D,OAAO,CAAC,QAAQ,CAAC,OAAO;IAH1B,OAAO,CAAC,OAAO,CAAqB;IAEpC,OAAO;WAOM,MAAM,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAMxF,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,QAAQ,IAAI,kBAAkB;IAQxB,OAAO,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAOtC,GAAG,CAAC,CAAC,SAAS,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAK7D,GAAG,CAAC,CAAC,SAAS,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,GAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAM7G,MAAM,CAAC,CAAC,SAAS,SAAS,EAC9B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,SAAS,KAAK,CAAC,EACrC,OAAO,GAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAO,GAC1C,OAAO,CAAC,MAAM,CAAC;IAWZ,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,MAAM,CAAC;YAMzE,aAAa;CAa5B"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
const MAX_AGENT_STATE_KEYS = 256;
|
|
3
|
+
const MAX_AGENT_STATE_SNAPSHOT_CHARS = 262_144;
|
|
4
|
+
/** Revision-aware state handle shared by setup evaluation and authored tools. */
|
|
5
|
+
export class RuntimeAgentStateHandle {
|
|
6
|
+
options;
|
|
7
|
+
current;
|
|
8
|
+
constructor(options, snapshot) {
|
|
9
|
+
this.options = options;
|
|
10
|
+
this.current = snapshot;
|
|
11
|
+
}
|
|
12
|
+
static async create(options) {
|
|
13
|
+
const snapshot = await options.state.readAgentState(options.scope);
|
|
14
|
+
assertBoundedSnapshot(snapshot);
|
|
15
|
+
return new RuntimeAgentStateHandle(options, snapshot);
|
|
16
|
+
}
|
|
17
|
+
get revision() {
|
|
18
|
+
return this.current.revision;
|
|
19
|
+
}
|
|
20
|
+
snapshot() {
|
|
21
|
+
return {
|
|
22
|
+
...this.options.scope,
|
|
23
|
+
revision: this.current.revision,
|
|
24
|
+
values: cloneJsonObject(this.current.values)
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
async refresh() {
|
|
28
|
+
const snapshot = await this.options.state.readAgentState(this.options.scope);
|
|
29
|
+
assertBoundedSnapshot(snapshot);
|
|
30
|
+
this.current = snapshot;
|
|
31
|
+
return this.snapshot();
|
|
32
|
+
}
|
|
33
|
+
async get(key) {
|
|
34
|
+
const record = await this.options.state.getAgentState(this.options.scope, key);
|
|
35
|
+
return record?.value;
|
|
36
|
+
}
|
|
37
|
+
async set(key, value, options = {}) {
|
|
38
|
+
const mutation = await this.options.state.setAgentState(this.options.scope, key, value, options);
|
|
39
|
+
await this.afterMutation(key, mutation.changed, mutation.revision, value);
|
|
40
|
+
return mutation.revision;
|
|
41
|
+
}
|
|
42
|
+
async update(key, update, options = {}) {
|
|
43
|
+
const mutation = await this.options.state.updateAgentState(this.options.scope, key, (current) => update(current), options);
|
|
44
|
+
await this.afterMutation(key, mutation.changed, mutation.revision, mutation.record?.value);
|
|
45
|
+
return mutation.revision;
|
|
46
|
+
}
|
|
47
|
+
async delete(key, options = {}) {
|
|
48
|
+
const mutation = await this.options.state.deleteAgentState(this.options.scope, key, options);
|
|
49
|
+
await this.afterMutation(key, mutation.changed, mutation.revision);
|
|
50
|
+
return mutation.revision;
|
|
51
|
+
}
|
|
52
|
+
async afterMutation(key, changed, revision, value) {
|
|
53
|
+
if (!changed)
|
|
54
|
+
return;
|
|
55
|
+
this.current = await this.options.state.readAgentState(this.options.scope);
|
|
56
|
+
this.options.onChanged(revision);
|
|
57
|
+
await this.options.appendEvent(this.options.runId, "agent.state_changed", {
|
|
58
|
+
scope: "conversation",
|
|
59
|
+
key,
|
|
60
|
+
revision,
|
|
61
|
+
...(value === undefined
|
|
62
|
+
? { deleted: true }
|
|
63
|
+
: { valueHash: createHash("sha256").update(JSON.stringify(value)).digest("hex") })
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
function cloneJsonObject(value) {
|
|
68
|
+
return JSON.parse(JSON.stringify(value));
|
|
69
|
+
}
|
|
70
|
+
function assertBoundedSnapshot(snapshot) {
|
|
71
|
+
const keys = Object.keys(snapshot.values);
|
|
72
|
+
if (keys.length > MAX_AGENT_STATE_KEYS) {
|
|
73
|
+
throw new Error(`Agent hook state exceeds the ${MAX_AGENT_STATE_KEYS}-key conversation limit.`);
|
|
74
|
+
}
|
|
75
|
+
const serialized = JSON.stringify(snapshot.values);
|
|
76
|
+
if (serialized.length > MAX_AGENT_STATE_SNAPSHOT_CHARS) {
|
|
77
|
+
throw new Error(`Agent hook state exceeds the ${MAX_AGENT_STATE_SNAPSHOT_CHARS}-character conversation limit.`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=agent-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-state.js","sourceRoot":"","sources":["../src/agent-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { AgentManifest, CompiledCapability, CompiledInstructions, CompiledSkill, CompiledSubagent, CompiledTool, SkillBundle, SelfImprovementConfig, SourceReference } from "@assemblyline-agents/core";
|
|
2
|
+
import type { RunRecord } from "./state.js";
|
|
3
|
+
export declare const ROOT_AGENT_SURFACE = "root";
|
|
4
|
+
/** Runtime view of one recursively filesystem-scoped agent. */
|
|
5
|
+
export interface AgentSurface {
|
|
6
|
+
path: string;
|
|
7
|
+
name: string;
|
|
8
|
+
description?: string;
|
|
9
|
+
agentSource: SourceReference;
|
|
10
|
+
possibleModels: string[];
|
|
11
|
+
instructions: CompiledInstructions;
|
|
12
|
+
tools: CompiledTool[];
|
|
13
|
+
skills: CompiledSkill[];
|
|
14
|
+
skillBundles: SkillBundle[];
|
|
15
|
+
capabilities: CompiledCapability[];
|
|
16
|
+
subagents: CompiledSubagent[];
|
|
17
|
+
maxIterations?: number;
|
|
18
|
+
maxReasoning?: CompiledSubagent["maxReasoning"];
|
|
19
|
+
selfImprovement?: SelfImprovementConfig;
|
|
20
|
+
connections: string[];
|
|
21
|
+
}
|
|
22
|
+
export declare function rootAgentSurface(manifest: AgentManifest): AgentSurface;
|
|
23
|
+
export declare function subagentSurface(subagent: CompiledSubagent): AgentSurface;
|
|
24
|
+
export declare function findSubagent(manifest: AgentManifest, path: string): CompiledSubagent | undefined;
|
|
25
|
+
export declare function findChildSubagent(surface: AgentSurface, name: string): CompiledSubagent | undefined;
|
|
26
|
+
export declare function surfaceForPath(manifest: AgentManifest, path: string | undefined): AgentSurface;
|
|
27
|
+
export declare function surfaceForRun(manifest: AgentManifest, run: RunRecord): AgentSurface;
|
|
28
|
+
export declare function flattenSubagents(subagents: readonly CompiledSubagent[]): CompiledSubagent[];
|
|
29
|
+
export declare function allSkillBundles(manifest: AgentManifest): SkillBundle[];
|
|
30
|
+
export declare function allSkills(manifest: AgentManifest): CompiledSkill[];
|
|
31
|
+
export declare function durableAgentSurfaceScope(agentScope: string, surfacePath: string): string;
|
|
32
|
+
//# sourceMappingURL=agent-surface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-surface.d.ts","sourceRoot":"","sources":["../src/agent-surface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,qBAAqB,EACrB,eAAe,EAChB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,eAAO,MAAM,kBAAkB,SAAS,CAAC;AAEzC,+DAA+D;AAC/D,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,eAAe,CAAC;IAC7B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,EAAE,oBAAoB,CAAC;IACnC,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,YAAY,EAAE,kBAAkB,EAAE,CAAC;IACnC,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,gBAAgB,CAAC,cAAc,CAAC,CAAC;IAChD,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,YAAY,CAkBtE;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,gBAAgB,GAAG,YAAY,CAkBxE;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAUhG;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAEnG;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,CAK9F;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,EAAE,SAAS,GAAG,YAAY,CAGnF;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,gBAAgB,EAAE,GAAG,gBAAgB,EAAE,CAE3F;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,aAAa,GAAG,WAAW,EAAE,CAKtE;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,aAAa,GAAG,aAAa,EAAE,CAKlE;AAED,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAExF"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
export const ROOT_AGENT_SURFACE = "root";
|
|
2
|
+
export function rootAgentSurface(manifest) {
|
|
3
|
+
return {
|
|
4
|
+
path: ROOT_AGENT_SURFACE,
|
|
5
|
+
name: manifest.agent.name ?? "agent",
|
|
6
|
+
...(manifest.agent.description ? { description: manifest.agent.description } : {}),
|
|
7
|
+
agentSource: manifest.agentSource,
|
|
8
|
+
possibleModels: manifest.possibleModels,
|
|
9
|
+
instructions: manifest.instructions,
|
|
10
|
+
tools: manifest.tools,
|
|
11
|
+
skills: manifest.skills,
|
|
12
|
+
skillBundles: manifest.skillBundles ?? [],
|
|
13
|
+
capabilities: manifest.capabilities,
|
|
14
|
+
subagents: manifest.subagents,
|
|
15
|
+
...(manifest.agent.maxIterations !== undefined ? { maxIterations: manifest.agent.maxIterations } : {}),
|
|
16
|
+
...(manifest.agent.maxReasoning !== undefined ? { maxReasoning: manifest.agent.maxReasoning } : {}),
|
|
17
|
+
...(manifest.agent.selfImprovement ? { selfImprovement: manifest.agent.selfImprovement } : {}),
|
|
18
|
+
connections: manifest.connections.map((connection) => connection.name)
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export function subagentSurface(subagent) {
|
|
22
|
+
return {
|
|
23
|
+
path: subagent.path,
|
|
24
|
+
name: subagent.name,
|
|
25
|
+
description: subagent.description,
|
|
26
|
+
agentSource: subagent.agentSource,
|
|
27
|
+
possibleModels: subagent.possibleModels,
|
|
28
|
+
instructions: subagent.instructions,
|
|
29
|
+
tools: subagent.tools,
|
|
30
|
+
skills: subagent.skills,
|
|
31
|
+
skillBundles: subagent.skillBundles,
|
|
32
|
+
capabilities: subagent.capabilities,
|
|
33
|
+
subagents: subagent.subagents,
|
|
34
|
+
...(subagent.maxIterations !== undefined ? { maxIterations: subagent.maxIterations } : {}),
|
|
35
|
+
...(subagent.maxReasoning !== undefined ? { maxReasoning: subagent.maxReasoning } : {}),
|
|
36
|
+
...(subagent.selfImprovement ? { selfImprovement: subagent.selfImprovement } : {}),
|
|
37
|
+
connections: subagent.connections
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
export function findSubagent(manifest, path) {
|
|
41
|
+
const parts = path.split("/").filter(Boolean);
|
|
42
|
+
let children = manifest.subagents;
|
|
43
|
+
let found;
|
|
44
|
+
for (const part of parts) {
|
|
45
|
+
found = children.find((candidate) => candidate.name === part);
|
|
46
|
+
if (!found)
|
|
47
|
+
return undefined;
|
|
48
|
+
children = found.subagents;
|
|
49
|
+
}
|
|
50
|
+
return found;
|
|
51
|
+
}
|
|
52
|
+
export function findChildSubagent(surface, name) {
|
|
53
|
+
return surface.subagents.find((candidate) => candidate.name === name);
|
|
54
|
+
}
|
|
55
|
+
export function surfaceForPath(manifest, path) {
|
|
56
|
+
if (!path || path === ROOT_AGENT_SURFACE)
|
|
57
|
+
return rootAgentSurface(manifest);
|
|
58
|
+
const subagent = findSubagent(manifest, path);
|
|
59
|
+
if (!subagent)
|
|
60
|
+
throw new Error(`Agent surface not found: ${path}`);
|
|
61
|
+
return subagentSurface(subagent);
|
|
62
|
+
}
|
|
63
|
+
export function surfaceForRun(manifest, run) {
|
|
64
|
+
const path = typeof run.input.agentSurface === "string" ? run.input.agentSurface : ROOT_AGENT_SURFACE;
|
|
65
|
+
return surfaceForPath(manifest, path);
|
|
66
|
+
}
|
|
67
|
+
export function flattenSubagents(subagents) {
|
|
68
|
+
return subagents.flatMap((subagent) => [subagent, ...flattenSubagents(subagent.subagents)]);
|
|
69
|
+
}
|
|
70
|
+
export function allSkillBundles(manifest) {
|
|
71
|
+
return [
|
|
72
|
+
...(manifest.skillBundles ?? []),
|
|
73
|
+
...flattenSubagents(manifest.subagents).flatMap((subagent) => subagent.skillBundles)
|
|
74
|
+
];
|
|
75
|
+
}
|
|
76
|
+
export function allSkills(manifest) {
|
|
77
|
+
return [
|
|
78
|
+
...manifest.skills,
|
|
79
|
+
...flattenSubagents(manifest.subagents).flatMap((subagent) => subagent.skills)
|
|
80
|
+
];
|
|
81
|
+
}
|
|
82
|
+
export function durableAgentSurfaceScope(agentScope, surfacePath) {
|
|
83
|
+
return surfacePath === ROOT_AGENT_SURFACE ? agentScope : `${agentScope}:subagent:${surfacePath}`;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=agent-surface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-surface.js","sourceRoot":"","sources":["../src/agent-surface.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAqBzC,MAAM,UAAU,gBAAgB,CAAC,QAAuB;IACtD,OAAO;QACL,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,OAAO;QACpC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClF,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,cAAc,EAAE,QAAQ,CAAC,cAAc;QACvC,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,YAAY,EAAE,QAAQ,CAAC,YAAY,IAAI,EAAE;QACzC,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,QAAQ,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9F,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;KACvE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAA0B;IACxD,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,cAAc,EAAE,QAAQ,CAAC,cAAc;QACvC,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,GAAG,CAAC,QAAQ,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1F,GAAG,CAAC,QAAQ,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvF,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClF,WAAW,EAAE,QAAQ,CAAC,WAAW;KAClC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAuB,EAAE,IAAY;IAChE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC;IAClC,IAAI,KAAmC,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAC7B,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC;IAC7B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAqB,EAAE,IAAY;IACnE,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAuB,EAAE,IAAwB;IAC9E,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,kBAAkB;QAAE,OAAO,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC9C,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC;IACnE,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAuB,EAAE,GAAc;IACnE,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,KAAK,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,kBAAkB,CAAC;IACtG,OAAO,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,SAAsC;IACrE,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,GAAG,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC9F,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAuB;IACrD,OAAO;QACL,GAAG,CAAC,QAAQ,CAAC,YAAY,IAAI,EAAE,CAAC;QAChC,GAAG,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;KACrF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,QAAuB;IAC/C,OAAO;QACL,GAAG,QAAQ,CAAC,MAAM;QAClB,GAAG,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;KAC/E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,UAAkB,EAAE,WAAmB;IAC9E,OAAO,WAAW,KAAK,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,aAAa,WAAW,EAAE,CAAC;AACnG,CAAC"}
|