@spine-event-engine/server 2.0.0-snapshot.24 → 2.0.0-snapshot.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +86 -19
- package/REFERENCE.md +538 -150
- package/dist/agent/agent-acceptance-receipts.d.ts +69 -0
- package/dist/agent/agent-acceptance-receipts.d.ts.map +1 -0
- package/dist/agent/agent-acceptance-receipts.js +198 -0
- package/dist/agent/agent-acceptance-receipts.js.map +1 -0
- package/dist/agent/agent-execution-capacity.d.ts +37 -9
- package/dist/agent/agent-execution-capacity.d.ts.map +1 -1
- package/dist/agent/agent-execution-capacity.js +73 -15
- package/dist/agent/agent-execution-capacity.js.map +1 -1
- package/dist/agent/agent-history.d.ts +33 -12
- package/dist/agent/agent-history.d.ts.map +1 -1
- package/dist/agent/agent-history.js +61 -18
- package/dist/agent/agent-history.js.map +1 -1
- package/dist/agent/agent-live-ai-audit.d.ts +95 -0
- package/dist/agent/agent-live-ai-audit.d.ts.map +1 -0
- package/dist/agent/agent-live-ai-audit.js +290 -0
- package/dist/agent/agent-live-ai-audit.js.map +1 -0
- package/dist/agent/agent-live-ai-runtime.d.ts +300 -0
- package/dist/agent/agent-live-ai-runtime.d.ts.map +1 -0
- package/dist/agent/agent-live-ai-runtime.js +611 -0
- package/dist/agent/agent-live-ai-runtime.js.map +1 -0
- package/dist/agent/agent-live-audit.d.ts +67 -0
- package/dist/agent/agent-live-audit.d.ts.map +1 -0
- package/dist/agent/agent-live-audit.js +121 -0
- package/dist/agent/agent-live-audit.js.map +1 -0
- package/dist/agent/agent-live-budget.d.ts +84 -0
- package/dist/agent/agent-live-budget.d.ts.map +1 -0
- package/dist/agent/agent-live-budget.js +161 -0
- package/dist/agent/agent-live-budget.js.map +1 -0
- package/dist/agent/agent-live-fault.d.ts +18 -0
- package/dist/agent/agent-live-fault.d.ts.map +1 -0
- package/dist/agent/{agent-execution-fault.js → agent-live-fault.js} +7 -7
- package/dist/agent/agent-live-fault.js.map +1 -0
- package/dist/agent/agent-live-inputs.d.ts +74 -0
- package/dist/agent/agent-live-inputs.d.ts.map +1 -0
- package/dist/agent/agent-live-inputs.js +15 -0
- package/dist/agent/agent-live-inputs.js.map +1 -0
- package/dist/agent/agent-live-interaction-events.d.ts +46 -0
- package/dist/agent/agent-live-interaction-events.d.ts.map +1 -0
- package/dist/agent/agent-live-interaction-events.js +104 -0
- package/dist/agent/agent-live-interaction-events.js.map +1 -0
- package/dist/agent/agent-live-mcp-controls.d.ts +129 -0
- package/dist/agent/agent-live-mcp-controls.d.ts.map +1 -0
- package/dist/agent/agent-live-mcp-controls.js +228 -0
- package/dist/agent/agent-live-mcp-controls.js.map +1 -0
- package/dist/agent/agent-live-mcp-host.d.ts +88 -0
- package/dist/agent/agent-live-mcp-host.d.ts.map +1 -0
- package/dist/agent/{agent-mcp-host.js → agent-live-mcp-host.js} +1 -1
- package/dist/agent/agent-live-mcp-host.js.map +1 -0
- package/dist/agent/{agent-mcp-runtime.d.ts → agent-live-mcp-runtime.d.ts} +6 -6
- package/dist/agent/agent-live-mcp-runtime.d.ts.map +1 -0
- package/dist/agent/{agent-mcp-runtime.js → agent-live-mcp-runtime.js} +13 -42
- package/dist/agent/agent-live-mcp-runtime.js.map +1 -0
- package/dist/agent/agent-live-read-runtime.d.ts +72 -0
- package/dist/agent/agent-live-read-runtime.d.ts.map +1 -0
- package/dist/agent/agent-live-read-runtime.js +122 -0
- package/dist/agent/agent-live-read-runtime.js.map +1 -0
- package/dist/agent/agent-model-selection.d.ts +21 -34
- package/dist/agent/agent-model-selection.d.ts.map +1 -1
- package/dist/agent/agent-model-selection.js +61 -78
- package/dist/agent/agent-model-selection.js.map +1 -1
- package/dist/browser/browser-server.d.ts +163 -0
- package/dist/browser/browser-server.d.ts.map +1 -1
- package/dist/browser/browser-server.js +579 -188
- package/dist/browser/browser-server.js.map +1 -1
- package/dist/browser/durable-subscription-bindings.d.ts +5 -0
- package/dist/browser/durable-subscription-bindings.d.ts.map +1 -1
- package/dist/browser/durable-subscription-bindings.js +226 -38
- package/dist/browser/durable-subscription-bindings.js.map +1 -1
- package/dist/browser/options.d.ts +5 -0
- package/dist/browser/options.d.ts.map +1 -1
- package/dist/bus/command-bus.d.ts +17 -18
- package/dist/bus/command-bus.d.ts.map +1 -1
- package/dist/bus/command-bus.js +97 -54
- package/dist/bus/command-bus.js.map +1 -1
- package/dist/bus/command-errors.d.ts +20 -4
- package/dist/bus/command-errors.d.ts.map +1 -1
- package/dist/bus/command-errors.js +47 -7
- package/dist/bus/command-errors.js.map +1 -1
- package/dist/bus/event-bus.d.ts +20 -4
- package/dist/bus/event-bus.d.ts.map +1 -1
- package/dist/bus/event-bus.js +166 -14
- package/dist/bus/event-bus.js.map +1 -1
- package/dist/context/bounded-context.d.ts +169 -98
- package/dist/context/bounded-context.d.ts.map +1 -1
- package/dist/context/bounded-context.js +837 -503
- package/dist/context/bounded-context.js.map +1 -1
- package/dist/context/entity-inbox.d.ts +7 -2
- package/dist/context/entity-inbox.d.ts.map +1 -1
- package/dist/context/entity-inbox.js +22 -13
- package/dist/context/entity-inbox.js.map +1 -1
- package/dist/context/local-inbox-handoff.d.ts +34 -34
- package/dist/context/local-inbox-handoff.d.ts.map +1 -1
- package/dist/context/local-inbox-handoff.js +108 -150
- package/dist/context/local-inbox-handoff.js.map +1 -1
- package/dist/context/projection-handoff.d.ts +2 -2
- package/dist/context/projection-handoff.d.ts.map +1 -1
- package/dist/context/projection-handoff.js +10 -8
- package/dist/context/projection-handoff.js.map +1 -1
- package/dist/context/tenant-index.d.ts +36 -31
- package/dist/context/tenant-index.d.ts.map +1 -1
- package/dist/context/tenant-index.js +123 -125
- package/dist/context/tenant-index.js.map +1 -1
- package/dist/context/tenant-unknown-error.d.ts +33 -0
- package/dist/context/tenant-unknown-error.d.ts.map +1 -0
- package/dist/context/tenant-unknown-error.js +75 -0
- package/dist/context/tenant-unknown-error.js.map +1 -0
- package/dist/delivery/agent-delivery-scope.d.ts +66 -0
- package/dist/delivery/agent-delivery-scope.d.ts.map +1 -0
- package/dist/delivery/agent-delivery-scope.js +44 -0
- package/dist/delivery/agent-delivery-scope.js.map +1 -0
- package/dist/delivery/delivery-builder.d.ts +25 -1
- package/dist/delivery/delivery-builder.d.ts.map +1 -1
- package/dist/delivery/delivery-builder.js +89 -0
- package/dist/delivery/delivery-builder.js.map +1 -1
- package/dist/delivery/delivery-monitor.d.ts +1 -1
- package/dist/delivery/delivery-monitor.js +1 -1
- package/dist/delivery/delivery-run-control.d.ts +6 -0
- package/dist/delivery/delivery-run-control.d.ts.map +1 -1
- package/dist/delivery/delivery-run-control.js +10 -0
- package/dist/delivery/delivery-run-control.js.map +1 -1
- package/dist/delivery/delivery-supervisor.d.ts.map +1 -1
- package/dist/delivery/delivery-supervisor.js +28 -4
- package/dist/delivery/delivery-supervisor.js.map +1 -1
- package/dist/delivery/delivery-tenant.d.ts +17 -0
- package/dist/delivery/delivery-tenant.d.ts.map +1 -0
- package/dist/delivery/delivery-tenant.js +50 -0
- package/dist/delivery/delivery-tenant.js.map +1 -0
- package/dist/delivery/delivery.d.ts +96 -2
- package/dist/delivery/delivery.d.ts.map +1 -1
- package/dist/delivery/delivery.js +693 -53
- package/dist/delivery/delivery.js.map +1 -1
- package/dist/delivery/inbox-records.d.ts.map +1 -1
- package/dist/delivery/inbox-records.js +9 -16
- package/dist/delivery/inbox-records.js.map +1 -1
- package/dist/delivery/inbox-storage.d.ts +6 -0
- package/dist/delivery/inbox-storage.d.ts.map +1 -1
- package/dist/delivery/inbox-storage.js +43 -6
- package/dist/delivery/inbox-storage.js.map +1 -1
- package/dist/delivery/inbox.d.ts.map +1 -1
- package/dist/delivery/inbox.js +3 -2
- package/dist/delivery/inbox.js.map +1 -1
- package/dist/delivery/reception-observation.d.ts +12 -4
- package/dist/delivery/reception-observation.d.ts.map +1 -1
- package/dist/delivery/reception-observation.js +14 -3
- package/dist/delivery/reception-observation.js.map +1 -1
- package/dist/delivery/sharded-work-registry.d.ts +6 -0
- package/dist/delivery/sharded-work-registry.d.ts.map +1 -1
- package/dist/delivery/sharded-work-registry.js +41 -4
- package/dist/delivery/sharded-work-registry.js.map +1 -1
- package/dist/entity/entity-storage-descriptor.d.ts.map +1 -1
- package/dist/entity/entity-storage-descriptor.js +7 -4
- package/dist/entity/entity-storage-descriptor.js.map +1 -1
- package/dist/entity/entity.d.ts +59 -0
- package/dist/entity/entity.d.ts.map +1 -1
- package/dist/entity/entity.js +60 -0
- package/dist/entity/entity.js.map +1 -1
- package/dist/handler/app-query-handler.d.ts +60 -0
- package/dist/handler/app-query-handler.d.ts.map +1 -0
- package/dist/{bus/saved-dispatcher-binding.js → handler/app-query-handler.js} +8 -12
- package/dist/handler/app-query-handler.js.map +1 -0
- package/dist/handler/generated-registry-discovery.d.ts +6 -0
- package/dist/handler/generated-registry-discovery.d.ts.map +1 -1
- package/dist/handler/generated-registry-discovery.js +71 -2
- package/dist/handler/generated-registry-discovery.js.map +1 -1
- package/dist/handler/handler-decorators.d.ts +8 -29
- package/dist/handler/handler-decorators.d.ts.map +1 -1
- package/dist/handler/handler-decorators.js +33 -210
- package/dist/handler/handler-decorators.js.map +1 -1
- package/dist/handler/spine-metadata-inventory.d.ts +99 -0
- package/dist/handler/spine-metadata-inventory.d.ts.map +1 -0
- package/dist/handler/spine-metadata-inventory.js +162 -0
- package/dist/handler/spine-metadata-inventory.js.map +1 -0
- package/dist/index.d.ts +9 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/integration/external-messages.d.ts.map +1 -1
- package/dist/integration/external-messages.js +9 -15
- package/dist/integration/external-messages.js.map +1 -1
- package/dist/integration/integration-broker.d.ts.map +1 -1
- package/dist/integration/integration-broker.js +112 -6
- package/dist/integration/integration-broker.js.map +1 -1
- package/dist/integration/third-party-context.d.ts.map +1 -1
- package/dist/integration/third-party-context.js +7 -10
- package/dist/integration/third-party-context.js.map +1 -1
- package/dist/repository/primitive-id.js +26 -11
- package/dist/repository/primitive-id.js.map +1 -1
- package/dist/repository/repository.d.ts +75 -60
- package/dist/repository/repository.d.ts.map +1 -1
- package/dist/repository/repository.js +1757 -1818
- package/dist/repository/repository.js.map +1 -1
- package/dist/runtime/runtime.d.ts +13 -0
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/runtime/runtime.js +18 -0
- package/dist/runtime/runtime.js.map +1 -1
- package/dist/runtime/signal-metadata.d.ts.map +1 -1
- package/dist/runtime/signal-metadata.js +6 -6
- package/dist/runtime/signal-metadata.js.map +1 -1
- package/dist/runtime/signal-publisher.d.ts +0 -6
- package/dist/runtime/signal-publisher.d.ts.map +1 -1
- package/dist/runtime/signal-publisher.js +1 -9
- package/dist/runtime/signal-publisher.js.map +1 -1
- package/dist/runtime/standalone-handler-runtime.d.ts +0 -7
- package/dist/runtime/standalone-handler-runtime.d.ts.map +1 -1
- package/dist/runtime/standalone-handler-runtime.js +13 -99
- package/dist/runtime/standalone-handler-runtime.js.map +1 -1
- package/dist/server/managed-delivery-gate.d.ts +34 -0
- package/dist/server/managed-delivery-gate.d.ts.map +1 -0
- package/dist/server/managed-delivery-gate.js +70 -0
- package/dist/server/managed-delivery-gate.js.map +1 -0
- package/dist/server/managed-server-application.d.ts +12 -11
- package/dist/server/managed-server-application.d.ts.map +1 -1
- package/dist/server/managed-server-application.js +48 -29
- package/dist/server/managed-server-application.js.map +1 -1
- package/dist/server/node-coordinator.d.ts +18 -5
- package/dist/server/node-coordinator.d.ts.map +1 -1
- package/dist/server/node-coordinator.js +554 -84
- package/dist/server/node-coordinator.js.map +1 -1
- package/dist/server/reserved-spine-rpc-paths.json +1 -0
- package/dist/server/server-environment.d.ts +220 -25
- package/dist/server/server-environment.d.ts.map +1 -1
- package/dist/server/server-environment.js +734 -145
- package/dist/server/server-environment.js.map +1 -1
- package/dist/server/server-log.d.ts +7 -0
- package/dist/server/server-log.d.ts.map +1 -1
- package/dist/server/server-log.js +14 -1
- package/dist/server/server-log.js.map +1 -1
- package/dist/server/server.d.ts +60 -29
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +155 -201
- package/dist/server/server.js.map +1 -1
- package/dist/services/app-query-execution.d.ts +53 -0
- package/dist/services/app-query-execution.d.ts.map +1 -0
- package/dist/services/app-query-execution.js +408 -0
- package/dist/services/app-query-execution.js.map +1 -0
- package/dist/services/query-reader.d.ts +32 -7
- package/dist/services/query-reader.d.ts.map +1 -1
- package/dist/services/query-reader.js +22 -2
- package/dist/services/query-reader.js.map +1 -1
- package/dist/services/read-request-status.d.ts +65 -0
- package/dist/services/read-request-status.d.ts.map +1 -0
- package/dist/services/read-request-status.js +151 -0
- package/dist/services/read-request-status.js.map +1 -0
- package/dist/services/spine-services.d.ts +37 -8
- package/dist/services/spine-services.d.ts.map +1 -1
- package/dist/services/spine-services.js +1103 -470
- package/dist/services/spine-services.js.map +1 -1
- package/dist/services/trusted-reader-ingress.d.ts +92 -0
- package/dist/services/trusted-reader-ingress.d.ts.map +1 -0
- package/dist/services/trusted-reader-ingress.js +89 -0
- package/dist/services/trusted-reader-ingress.js.map +1 -0
- package/dist/spi/handler-registry.d.ts +2 -0
- package/dist/spi/handler-registry.d.ts.map +1 -1
- package/dist/spi/handler-registry.js +1 -1
- package/dist/spi/handler-registry.js.map +1 -1
- package/dist/stand/event-origin-filter.js +3 -3
- package/dist/stand/event-origin-filter.js.map +1 -1
- package/dist/stand/read-side-filter-engine.d.ts +46 -0
- package/dist/stand/read-side-filter-engine.d.ts.map +1 -0
- package/dist/stand/read-side-filter-engine.js +356 -0
- package/dist/stand/read-side-filter-engine.js.map +1 -0
- package/dist/stand/read-side-filter.d.ts +247 -0
- package/dist/stand/read-side-filter.d.ts.map +1 -0
- package/dist/stand/read-side-filter.js +39 -0
- package/dist/stand/read-side-filter.js.map +1 -0
- package/dist/stand/read-side-message.d.ts +66 -0
- package/dist/stand/read-side-message.d.ts.map +1 -0
- package/dist/stand/read-side-message.js +167 -0
- package/dist/stand/read-side-message.js.map +1 -0
- package/dist/stand/stand-direct-delivery.d.ts +161 -0
- package/dist/stand/stand-direct-delivery.d.ts.map +1 -0
- package/dist/stand/stand-direct-delivery.js +210 -0
- package/dist/stand/stand-direct-delivery.js.map +1 -0
- package/dist/stand/stand.d.ts +94 -42
- package/dist/stand/stand.d.ts.map +1 -1
- package/dist/stand/stand.js +460 -60
- package/dist/stand/stand.js.map +1 -1
- package/dist/stand/subscription-observer.d.ts.map +1 -1
- package/dist/stand/subscription-observer.js +157 -40
- package/dist/stand/subscription-observer.js.map +1 -1
- package/dist/stand/subscription-read-filters.d.ts +40 -0
- package/dist/stand/subscription-read-filters.d.ts.map +1 -0
- package/dist/stand/subscription-read-filters.js +91 -0
- package/dist/stand/subscription-read-filters.js.map +1 -0
- package/dist/stand/subscription-reader-binding.d.ts +20 -0
- package/dist/stand/subscription-reader-binding.d.ts.map +1 -0
- package/dist/stand/subscription-reader-binding.js +56 -0
- package/dist/stand/subscription-reader-binding.js.map +1 -0
- package/dist/stand/subscription-records.d.ts +30 -3
- package/dist/stand/subscription-records.d.ts.map +1 -1
- package/dist/stand/subscription-records.js +61 -16
- package/dist/stand/subscription-records.js.map +1 -1
- package/dist/stand/subscription-registry.d.ts +54 -15
- package/dist/stand/subscription-registry.d.ts.map +1 -1
- package/dist/stand/subscription-registry.js +164 -41
- package/dist/stand/subscription-registry.js.map +1 -1
- package/dist/stand/subscription-runtime.d.ts +12 -5
- package/dist/stand/subscription-runtime.d.ts.map +1 -1
- package/dist/stand/subscription-runtime.js +183 -34
- package/dist/stand/subscription-runtime.js.map +1 -1
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +4 -3
- package/dist/testing/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +14 -14
- package/dist/agent/agent-admission.d.ts +0 -80
- package/dist/agent/agent-admission.d.ts.map +0 -1
- package/dist/agent/agent-admission.js +0 -127
- package/dist/agent/agent-admission.js.map +0 -1
- package/dist/agent/agent-ai-runtime.d.ts +0 -76
- package/dist/agent/agent-ai-runtime.d.ts.map +0 -1
- package/dist/agent/agent-ai-runtime.js +0 -1269
- package/dist/agent/agent-ai-runtime.js.map +0 -1
- package/dist/agent/agent-execution-fault.d.ts +0 -18
- package/dist/agent/agent-execution-fault.d.ts.map +0 -1
- package/dist/agent/agent-execution-fault.js.map +0 -1
- package/dist/agent/agent-execution-session.d.ts +0 -103
- package/dist/agent/agent-execution-session.d.ts.map +0 -1
- package/dist/agent/agent-execution-session.js +0 -238
- package/dist/agent/agent-execution-session.js.map +0 -1
- package/dist/agent/agent-interaction-audit.d.ts +0 -58
- package/dist/agent/agent-interaction-audit.d.ts.map +0 -1
- package/dist/agent/agent-interaction-audit.js +0 -114
- package/dist/agent/agent-interaction-audit.js.map +0 -1
- package/dist/agent/agent-interaction-events.d.ts +0 -40
- package/dist/agent/agent-interaction-events.d.ts.map +0 -1
- package/dist/agent/agent-interaction-events.js +0 -129
- package/dist/agent/agent-interaction-events.js.map +0 -1
- package/dist/agent/agent-mcp-budget.d.ts +0 -125
- package/dist/agent/agent-mcp-budget.d.ts.map +0 -1
- package/dist/agent/agent-mcp-budget.js +0 -566
- package/dist/agent/agent-mcp-budget.js.map +0 -1
- package/dist/agent/agent-mcp-host.d.ts +0 -125
- package/dist/agent/agent-mcp-host.d.ts.map +0 -1
- package/dist/agent/agent-mcp-host.js.map +0 -1
- package/dist/agent/agent-mcp-runtime.d.ts.map +0 -1
- package/dist/agent/agent-mcp-runtime.js.map +0 -1
- package/dist/agent/agent-read-runtime.d.ts +0 -70
- package/dist/agent/agent-read-runtime.d.ts.map +0 -1
- package/dist/agent/agent-read-runtime.js +0 -320
- package/dist/agent/agent-read-runtime.js.map +0 -1
- package/dist/agent/agent-revisions.d.ts +0 -35
- package/dist/agent/agent-revisions.d.ts.map +0 -1
- package/dist/agent/agent-revisions.js +0 -133
- package/dist/agent/agent-revisions.js.map +0 -1
- package/dist/agent/agent-scheduler.d.ts +0 -99
- package/dist/agent/agent-scheduler.d.ts.map +0 -1
- package/dist/agent/agent-scheduler.js +0 -398
- package/dist/agent/agent-scheduler.js.map +0 -1
- package/dist/bus/saved-dispatcher-binding.d.ts +0 -53
- package/dist/bus/saved-dispatcher-binding.d.ts.map +0 -1
- package/dist/bus/saved-dispatcher-binding.js.map +0 -1
- package/dist/delivery/delivery-run-coordinator.d.ts +0 -218
- package/dist/delivery/delivery-run-coordinator.d.ts.map +0 -1
- package/dist/delivery/delivery-run-coordinator.js +0 -609
- package/dist/delivery/delivery-run-coordinator.js.map +0 -1
- package/dist/delivery/parked-delivery-obligations.d.ts +0 -182
- package/dist/delivery/parked-delivery-obligations.d.ts.map +0 -1
- package/dist/delivery/parked-delivery-obligations.js +0 -390
- package/dist/delivery/parked-delivery-obligations.js.map +0 -1
- package/dist/server/environment-attachment.d.ts +0 -356
- package/dist/server/environment-attachment.d.ts.map +0 -1
- package/dist/server/environment-attachment.js +0 -2062
- package/dist/server/environment-attachment.js.map +0 -1
- package/dist/server/environment-delivery-records.d.ts +0 -77
- package/dist/server/environment-delivery-records.d.ts.map +0 -1
- package/dist/server/environment-delivery-records.js +0 -282
- package/dist/server/environment-delivery-records.js.map +0 -1
- package/dist/server/environment-delivery-worker.d.ts +0 -161
- package/dist/server/environment-delivery-worker.d.ts.map +0 -1
- package/dist/server/environment-delivery-worker.js +0 -973
- package/dist/server/environment-delivery-worker.js.map +0 -1
|
@@ -0,0 +1,611 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2026, CodeMatters. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
|
|
5
|
+
* in compliance with the License. You may obtain a copy of the License at
|
|
6
|
+
*
|
|
7
|
+
* https://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
*
|
|
9
|
+
* Unless required by applicable law or agreed to in writing, software distributed under the License
|
|
10
|
+
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
|
11
|
+
* or implied. See the License for the specific language governing permissions and limitations under
|
|
12
|
+
* the License.
|
|
13
|
+
*/
|
|
14
|
+
import { create } from "@bufbuild/protobuf";
|
|
15
|
+
import { randomUUID } from "node:crypto";
|
|
16
|
+
import { Validate, Time } from "@spine-event-engine/core";
|
|
17
|
+
import { admitDecision, backendDefinition, isAiModel, parseCandidate, selectDeployment, } from "@spine-event-engine/ai/spi/runtime";
|
|
18
|
+
import { AiMcpSetupFailure, } from "@spine-event-engine/ai/spi/adapter";
|
|
19
|
+
import { AiModelKind, AiOutcome, AiOperationIdSchema, ConversationIdSchema, GenerationResponseSchema, ModelRefSchema, } from "@spine-event-engine/proto/agent";
|
|
20
|
+
import { AgentModelSelection } from "./agent-model-selection.js";
|
|
21
|
+
import { AgentLiveAiAudit } from "./agent-live-ai-audit.js";
|
|
22
|
+
import { AgentLiveBudget } from "./agent-live-budget.js";
|
|
23
|
+
import { AgentLiveMcpControls } from "./agent-live-mcp-controls.js";
|
|
24
|
+
import { AgentLiveMcpRuntime } from "./agent-live-mcp-runtime.js";
|
|
25
|
+
/**
|
|
26
|
+
* Executes named AI calls for one live handler without a recovery journal.
|
|
27
|
+
*/
|
|
28
|
+
export class AgentLiveAiRuntime {
|
|
29
|
+
registry;
|
|
30
|
+
repository;
|
|
31
|
+
scope;
|
|
32
|
+
selected;
|
|
33
|
+
budget;
|
|
34
|
+
deadlineEpochMs;
|
|
35
|
+
onSelect;
|
|
36
|
+
audit;
|
|
37
|
+
checkSession;
|
|
38
|
+
#names = new Set();
|
|
39
|
+
#controller = new AbortController();
|
|
40
|
+
#signal;
|
|
41
|
+
#busy = false;
|
|
42
|
+
#closed = false;
|
|
43
|
+
/**
|
|
44
|
+
* Binds selected models and one invocation-wide local budget.
|
|
45
|
+
*
|
|
46
|
+
* @param audit Retained history audit for this invocation.
|
|
47
|
+
* @param budget Invocation-wide resource budget.
|
|
48
|
+
* @param checkSession Callback that validates the current execution session.
|
|
49
|
+
* @param deadlineEpochMs Absolute invocation deadline, when configured.
|
|
50
|
+
* @param onSelect Callback that stages a model selection.
|
|
51
|
+
* @param registry Registered AI models or MCP servers.
|
|
52
|
+
* @param repository Repository configured for this Entity.
|
|
53
|
+
* @param scope Captured invocation or tenant scope.
|
|
54
|
+
* @param selected Models or selection retained for this invocation.
|
|
55
|
+
* @param signal Signal or cancellation signal for this operation.
|
|
56
|
+
*/
|
|
57
|
+
constructor(registry, repository, scope, selected, budget, signal, deadlineEpochMs, onSelect, audit, checkSession = () => Promise.resolve()) {
|
|
58
|
+
this.registry = registry;
|
|
59
|
+
this.repository = repository;
|
|
60
|
+
this.scope = scope;
|
|
61
|
+
this.selected = selected;
|
|
62
|
+
this.budget = budget;
|
|
63
|
+
this.deadlineEpochMs = deadlineEpochMs;
|
|
64
|
+
this.onSelect = onSelect;
|
|
65
|
+
this.audit = audit;
|
|
66
|
+
this.checkSession = checkSession;
|
|
67
|
+
this.#signal = AbortSignal.any([signal, this.#controller.signal]);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Executes one validated registered capability and returns its fresh result.
|
|
71
|
+
*
|
|
72
|
+
* @typeParam I Generated input schema of the invoked capability.
|
|
73
|
+
* @typeParam O Generated output schema of the invoked capability.
|
|
74
|
+
* @param model Selected AI model for this invocation.
|
|
75
|
+
* @param request Typed request for the current operation.
|
|
76
|
+
* @returns The typed model result with its operation identifier.
|
|
77
|
+
*/
|
|
78
|
+
async invoke(model, request) {
|
|
79
|
+
this.requireOpen();
|
|
80
|
+
if (this.#busy)
|
|
81
|
+
throw new Error("Agent AI calls must be sequential within one handler.");
|
|
82
|
+
this.#busy = true;
|
|
83
|
+
try {
|
|
84
|
+
this.validateRequest(model, request);
|
|
85
|
+
this.budget.reserveOperation();
|
|
86
|
+
await this.checkSession();
|
|
87
|
+
const operationId = create(AiOperationIdSchema, { value: randomUUID() });
|
|
88
|
+
const outcome = await this.execute(model, request, operationId);
|
|
89
|
+
this.requireOpen();
|
|
90
|
+
return outcome.ok
|
|
91
|
+
? { ok: true, value: outcome.value, operationId }
|
|
92
|
+
: { ok: false, failure: outcome.failure, operationId };
|
|
93
|
+
}
|
|
94
|
+
finally {
|
|
95
|
+
this.#busy = false;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Prepares a checked model preference for a later accepted signal.
|
|
100
|
+
*
|
|
101
|
+
* @param kind Declared model or operation kind.
|
|
102
|
+
* @param model Selected AI model for this invocation.
|
|
103
|
+
*/
|
|
104
|
+
select(kind, model) {
|
|
105
|
+
this.requireOpen();
|
|
106
|
+
const role = kind === AiModelKind.GENERATION
|
|
107
|
+
? "generation"
|
|
108
|
+
: kind === AiModelKind.DECISION
|
|
109
|
+
? "decision"
|
|
110
|
+
: undefined;
|
|
111
|
+
if (role === undefined)
|
|
112
|
+
throw new TypeError("Agent model preference requires a supported kind.");
|
|
113
|
+
if (model !== undefined) {
|
|
114
|
+
Validate.check(ModelRefSchema, model);
|
|
115
|
+
selectDeployment(this.registry, {
|
|
116
|
+
kind: role,
|
|
117
|
+
models: this.repository.models,
|
|
118
|
+
instancePreference: model,
|
|
119
|
+
...(this.repository.allowedModels?.[role] === undefined
|
|
120
|
+
? {}
|
|
121
|
+
: { allowedModels: this.repository.allowedModels[role] }),
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
this.onSelect(kind, model);
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Rejects a handler that returned with a pending model operation.
|
|
128
|
+
*/
|
|
129
|
+
finish() {
|
|
130
|
+
this.requireOpen();
|
|
131
|
+
if (this.#busy)
|
|
132
|
+
throw new Error("Agent handler returned with a pending AI call.");
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Cancels callbacks retained after the handler returns.
|
|
136
|
+
*/
|
|
137
|
+
close() {
|
|
138
|
+
this.#closed = true;
|
|
139
|
+
this.#controller.abort();
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Rejects stale or cancelled handler capabilities.
|
|
143
|
+
*/
|
|
144
|
+
requireOpen() {
|
|
145
|
+
if (this.#closed || this.#signal.aborted)
|
|
146
|
+
throw new Error("Agent AI handler capability is closed.");
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Validates typed input and per-handler call identity before any external work.
|
|
150
|
+
*
|
|
151
|
+
* @typeParam I Generated schema for the supplied input.
|
|
152
|
+
* @typeParam O Generated schema for the declared output.
|
|
153
|
+
* @param model Selected AI model for this invocation.
|
|
154
|
+
* @param request Typed request for the current operation.
|
|
155
|
+
*/
|
|
156
|
+
validateRequest(model, request) {
|
|
157
|
+
if (!isAiModel(model) || !this.repository.models.includes(model))
|
|
158
|
+
throw new TypeError("Agent model is not registered for this repository.");
|
|
159
|
+
if (!request.call.trim() || this.#names.has(request.call))
|
|
160
|
+
throw new TypeError("Agent AI call names must be nonblank and unique per handler.");
|
|
161
|
+
Validate.check(ConversationIdSchema, request.conversation);
|
|
162
|
+
Validate.check(model.definition.input, request.input);
|
|
163
|
+
this.#names.add(request.call);
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Connects the authenticated selected deployment and runs one backend operation.
|
|
167
|
+
*
|
|
168
|
+
* @typeParam I Generated input schema for the selected capability.
|
|
169
|
+
* @typeParam O Generated output schema for the selected capability.
|
|
170
|
+
* @param model Selected AI model for this invocation.
|
|
171
|
+
* @param operationId Typed AI operation identifier.
|
|
172
|
+
* @param request Typed request for the current operation.
|
|
173
|
+
* @returns The authenticated backend outcome for this operation.
|
|
174
|
+
*/
|
|
175
|
+
async execute(model, request, operationId) {
|
|
176
|
+
const { backend, selected } = this.selectedBackend(model);
|
|
177
|
+
const operation = { operation: operationId, conversation: request.conversation };
|
|
178
|
+
const audit = new AgentLiveAiAudit(this.audit, operation, selected, model);
|
|
179
|
+
const deadline = this.operationDeadline(model);
|
|
180
|
+
const identity = await this.authorize(backend, selected, deadline);
|
|
181
|
+
await audit.started(request.input);
|
|
182
|
+
return this.runAuthorized(model, request, operationId, backend, identity, operation, audit, deadline);
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Executes the authorized model and closes its selected MCP sessions.
|
|
186
|
+
*
|
|
187
|
+
* @typeParam I Generated input schema of the authorized model.
|
|
188
|
+
* @typeParam O Generated output schema of the authorized model.
|
|
189
|
+
* @param audit Retained history audit for this invocation.
|
|
190
|
+
* @param backend Selected AI backend registration.
|
|
191
|
+
* @param deadline Operation deadline, when configured.
|
|
192
|
+
* @param identity Authorized provider connection identity.
|
|
193
|
+
* @param model Selected AI model for this invocation.
|
|
194
|
+
* @param operation Current AI operation identity.
|
|
195
|
+
* @param operationId Typed AI operation identifier.
|
|
196
|
+
* @param request Typed request for the current operation.
|
|
197
|
+
* @returns The authorized backend outcome after MCP cleanup.
|
|
198
|
+
*/
|
|
199
|
+
async runAuthorized(model, request, operationId, backend, identity, operation, audit, deadline) {
|
|
200
|
+
const attempts = new Map();
|
|
201
|
+
const mcp = this.mcp(model, backend, operation, audit, attempts, deadline);
|
|
202
|
+
return this.withMcp(mcp, async () => {
|
|
203
|
+
await this.checkSession();
|
|
204
|
+
let advertised;
|
|
205
|
+
try {
|
|
206
|
+
advertised = await mcp?.prepare();
|
|
207
|
+
}
|
|
208
|
+
catch (error) {
|
|
209
|
+
return this.setupFailure(error, audit);
|
|
210
|
+
}
|
|
211
|
+
return this.runAndAudit(model, request, operationId, backend, identity, audit, deadline, attempts, mcp, advertised);
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Records a safe setup failure without disguising unrelated errors.
|
|
216
|
+
*
|
|
217
|
+
* @param audit Retained history audit for this invocation.
|
|
218
|
+
* @param error Original operation or cleanup error.
|
|
219
|
+
* @returns The recorded safe failure for an MCP setup error.
|
|
220
|
+
*/
|
|
221
|
+
async setupFailure(error, audit) {
|
|
222
|
+
if (!(error instanceof AiMcpSetupFailure))
|
|
223
|
+
throw error;
|
|
224
|
+
const outcome = { ok: false, failure: this.failure(error.code, false) };
|
|
225
|
+
await audit.outcome(outcome);
|
|
226
|
+
return outcome;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Invokes the prepared backend and validates its result before audit.
|
|
230
|
+
*
|
|
231
|
+
* @typeParam I Generated input schema used for validation.
|
|
232
|
+
* @typeParam O Generated output schema validated before audit.
|
|
233
|
+
* @param advertised Tools advertised by the selected MCP session.
|
|
234
|
+
* @param attempts Physical attempt state for this invocation.
|
|
235
|
+
* @param audit Retained history audit for this invocation.
|
|
236
|
+
* @param backend Selected AI backend registration.
|
|
237
|
+
* @param deadline Operation deadline, when configured.
|
|
238
|
+
* @param identity Authorized provider connection identity.
|
|
239
|
+
* @param mcp Selected MCP session, when present.
|
|
240
|
+
* @param model Selected AI model for this invocation.
|
|
241
|
+
* @param operationId Typed AI operation identifier.
|
|
242
|
+
* @param request Typed request for the current operation.
|
|
243
|
+
* @returns The validated backend outcome after its audit is saved.
|
|
244
|
+
*/
|
|
245
|
+
async runAndAudit(model, request, operationId, backend, identity, audit, deadline, attempts, mcp, advertised) {
|
|
246
|
+
const control = this.control(model, audit, deadline, attempts, mcp);
|
|
247
|
+
const outcome = await this.runConnected(backend, model, request, operationId, identity, control, deadline, advertised);
|
|
248
|
+
if (outcome.ok)
|
|
249
|
+
Validate.check(model.definition.output, outcome.value);
|
|
250
|
+
await audit.outcome(outcome);
|
|
251
|
+
return outcome;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Handles operation and cleanup failures while closing the selected protocol.
|
|
255
|
+
*
|
|
256
|
+
* @typeParam T Operation result retained through MCP cleanup.
|
|
257
|
+
* @param mcp Selected MCP session, when present.
|
|
258
|
+
* @param run Callback executed inside the guarded session.
|
|
259
|
+
* @returns The operation result after MCP cleanup succeeds.
|
|
260
|
+
*/
|
|
261
|
+
async withMcp(mcp, run) {
|
|
262
|
+
let failed;
|
|
263
|
+
try {
|
|
264
|
+
return await run();
|
|
265
|
+
}
|
|
266
|
+
catch (error) {
|
|
267
|
+
failed = error;
|
|
268
|
+
throw error;
|
|
269
|
+
}
|
|
270
|
+
finally {
|
|
271
|
+
await this.closeMcp(mcp, failed);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Binds the exact configured MCP catalog to this live operation.
|
|
276
|
+
*
|
|
277
|
+
* @param attempts Physical attempt state for this invocation.
|
|
278
|
+
* @param audit Retained history audit for this invocation.
|
|
279
|
+
* @param backend Selected AI backend registration.
|
|
280
|
+
* @param deadline Operation deadline, when configured.
|
|
281
|
+
* @param model Selected AI model for this invocation.
|
|
282
|
+
* @param operation Current AI operation identity.
|
|
283
|
+
* @returns The configured MCP runtime, or undefined when no server is selected.
|
|
284
|
+
*/
|
|
285
|
+
mcp(model, backend, operation, audit, attempts, deadline) {
|
|
286
|
+
const tools = model.definition.kind === "generation" ? (model.definition.tools ?? []) : [];
|
|
287
|
+
if (!tools.length)
|
|
288
|
+
return undefined;
|
|
289
|
+
const host = new AgentLiveMcpControls({
|
|
290
|
+
scope: this.scope,
|
|
291
|
+
registry: this.registry,
|
|
292
|
+
backend,
|
|
293
|
+
operation,
|
|
294
|
+
signal: this.#signal,
|
|
295
|
+
budget: this.budget,
|
|
296
|
+
audit,
|
|
297
|
+
...(model.definition.limits.toolCalls === undefined
|
|
298
|
+
? {}
|
|
299
|
+
: { maxToolCalls: model.definition.limits.toolCalls }),
|
|
300
|
+
onProposal: (invocation) => {
|
|
301
|
+
this.checkProposal(attempts, invocation);
|
|
302
|
+
},
|
|
303
|
+
...(deadline === undefined ? {} : { deadlineEpochMs: deadline }),
|
|
304
|
+
});
|
|
305
|
+
return new AgentLiveMcpRuntime(host, tools);
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Rejects a proposal absent from its completed physical model response.
|
|
309
|
+
*
|
|
310
|
+
* @param attempts Physical attempt state for this invocation.
|
|
311
|
+
* @param invocation Captured live Agent invocation.
|
|
312
|
+
*/
|
|
313
|
+
checkProposal(attempts, invocation) {
|
|
314
|
+
const response = attempts.get(invocation.ticketId)?.response;
|
|
315
|
+
if (response?.$typeName !== GenerationResponseSchema.typeName ||
|
|
316
|
+
response.outcome !== AiOutcome.TOOL_REQUESTED ||
|
|
317
|
+
!response.toolCalls.some((call) => call.providerCallId === invocation.providerCallId &&
|
|
318
|
+
call.toolName === (invocation.providerToolName ?? invocation.tool) &&
|
|
319
|
+
call.argumentsJson === invocation.argumentsJson))
|
|
320
|
+
throw new Error("MCP tool proposal is absent from the completed model response.");
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Handles an operation failure together with MCP cleanup failure.
|
|
324
|
+
*
|
|
325
|
+
* @param failed Original failure retained through cleanup.
|
|
326
|
+
* @param mcp Selected MCP session, when present.
|
|
327
|
+
* @returns Completion after preserving any operation and MCP cleanup failures.
|
|
328
|
+
*/
|
|
329
|
+
async closeMcp(mcp, failed) {
|
|
330
|
+
if (mcp === undefined)
|
|
331
|
+
return;
|
|
332
|
+
try {
|
|
333
|
+
await mcp.close();
|
|
334
|
+
}
|
|
335
|
+
catch (cleanup) {
|
|
336
|
+
if (failed !== undefined)
|
|
337
|
+
throw new AggregateError([failed, cleanup], "Agent MCP operation and cleanup failed.");
|
|
338
|
+
throw cleanup;
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* Executes a checked backend using the selected authenticated connection.
|
|
343
|
+
*
|
|
344
|
+
* @typeParam I Generated input schema sent to the backend.
|
|
345
|
+
* @typeParam O Generated output schema returned by the backend.
|
|
346
|
+
* @param advertised Tools advertised by the selected MCP session.
|
|
347
|
+
* @param backend Selected AI backend registration.
|
|
348
|
+
* @param control MCP execution controls for this invocation.
|
|
349
|
+
* @param deadline Operation deadline, when configured.
|
|
350
|
+
* @param identity Authorized provider connection identity.
|
|
351
|
+
* @param model Selected AI model for this invocation.
|
|
352
|
+
* @param operationId Typed AI operation identifier.
|
|
353
|
+
* @param request Typed request for the current operation.
|
|
354
|
+
* @returns The checked backend outcome from the authenticated connection.
|
|
355
|
+
*/
|
|
356
|
+
async runConnected(backend, model, request, operationId, identity, control, deadline, advertised) {
|
|
357
|
+
await this.checkSession();
|
|
358
|
+
const connected = await AgentModelSelection.awaitHook(backend.connect(this.scope, identity, control), this.#signal, deadline);
|
|
359
|
+
if (!this.sameIdentity(connected.identity, identity))
|
|
360
|
+
throw new Error("Agent backend connection identity changed.");
|
|
361
|
+
await this.checkSession();
|
|
362
|
+
return AgentModelSelection.awaitHook(backend.execute({
|
|
363
|
+
call: request.call,
|
|
364
|
+
operationId,
|
|
365
|
+
scope: this.scope,
|
|
366
|
+
identity,
|
|
367
|
+
model: connected.model,
|
|
368
|
+
definition: model.definition,
|
|
369
|
+
input: request.input,
|
|
370
|
+
control,
|
|
371
|
+
...(advertised === undefined ? {} : { advertisedTools: advertised }),
|
|
372
|
+
}), this.#signal, deadline);
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Calculates capability time at the invocation's sampled deadline.
|
|
376
|
+
*
|
|
377
|
+
* @param model Selected AI model for this invocation.
|
|
378
|
+
* @returns The effective epoch deadline, or undefined when no limit applies.
|
|
379
|
+
*/
|
|
380
|
+
operationDeadline(model) {
|
|
381
|
+
const duration = model.definition.limits.deadlineMs;
|
|
382
|
+
if (duration === undefined)
|
|
383
|
+
return this.deadlineEpochMs;
|
|
384
|
+
const local = Time.currentTimeMillis() + duration;
|
|
385
|
+
return this.deadlineEpochMs === undefined ? local : Math.min(local, this.deadlineEpochMs);
|
|
386
|
+
}
|
|
387
|
+
/**
|
|
388
|
+
* Resolves the selected backend through current repository policy.
|
|
389
|
+
*
|
|
390
|
+
* @param model Selected AI model for this invocation.
|
|
391
|
+
* @returns The selected model and its registered backend.
|
|
392
|
+
*/
|
|
393
|
+
selectedBackend(model) {
|
|
394
|
+
const role = model.definition.kind;
|
|
395
|
+
const kind = role === "generation" ? AiModelKind.GENERATION : AiModelKind.DECISION;
|
|
396
|
+
const selected = this.selected.get(kind);
|
|
397
|
+
if (selected === undefined)
|
|
398
|
+
throw new Error("Agent AI kind has no selected deployment.");
|
|
399
|
+
const registration = selectDeployment(this.registry, {
|
|
400
|
+
kind: role,
|
|
401
|
+
models: this.repository.models,
|
|
402
|
+
instancePreference: selected.model,
|
|
403
|
+
...(this.repository.allowedModels?.[role] === undefined
|
|
404
|
+
? {}
|
|
405
|
+
: { allowedModels: this.repository.allowedModels[role] }),
|
|
406
|
+
});
|
|
407
|
+
return { selected, backend: backendDefinition(registration) };
|
|
408
|
+
}
|
|
409
|
+
/**
|
|
410
|
+
* Checks authenticated nonsecret identity immediately before connection.
|
|
411
|
+
*
|
|
412
|
+
* @param backend Selected AI backend registration.
|
|
413
|
+
* @param deadline Operation deadline, when configured.
|
|
414
|
+
* @param selected Models or selection retained for this invocation.
|
|
415
|
+
* @returns The revalidated authenticated connection identity.
|
|
416
|
+
*/
|
|
417
|
+
async authorize(backend, selected, deadline) {
|
|
418
|
+
await this.checkSession();
|
|
419
|
+
const control = {
|
|
420
|
+
signal: this.#signal,
|
|
421
|
+
...(deadline === undefined ? {} : { deadlineEpochMs: deadline }),
|
|
422
|
+
};
|
|
423
|
+
const identity = await AgentModelSelection.awaitHook(backend.resolveIdentity(this.scope, control), this.#signal, deadline);
|
|
424
|
+
await this.checkSession();
|
|
425
|
+
const allowed = await AgentModelSelection.awaitHook(backend.authorizeUse(this.scope, identity, control), this.#signal, deadline);
|
|
426
|
+
if (!allowed || !this.sameIdentity(identity, this.savedIdentity(selected.connection)))
|
|
427
|
+
throw new Error("Agent model identity or authorization changed.");
|
|
428
|
+
return identity;
|
|
429
|
+
}
|
|
430
|
+
/**
|
|
431
|
+
* Returns credential-free fields from the validated selected connection.
|
|
432
|
+
*
|
|
433
|
+
* @param selected Models or selection retained for this invocation.
|
|
434
|
+
* @returns Credential-free fields from the selected connection.
|
|
435
|
+
*/
|
|
436
|
+
savedIdentity(selected) {
|
|
437
|
+
return {
|
|
438
|
+
provider: selected.provider?.value ?? "",
|
|
439
|
+
account: selected.account?.value ?? "",
|
|
440
|
+
endpoint: selected.endpoint?.value ?? "",
|
|
441
|
+
model: selected.model?.value ?? "",
|
|
442
|
+
};
|
|
443
|
+
}
|
|
444
|
+
/**
|
|
445
|
+
* Compares all credential-free identity fields.
|
|
446
|
+
*
|
|
447
|
+
* @param left Earlier value in the comparison.
|
|
448
|
+
* @param right Later value in the comparison.
|
|
449
|
+
* @returns Whether all credential-free connection fields match.
|
|
450
|
+
*/
|
|
451
|
+
sameIdentity(left, right) {
|
|
452
|
+
return (left.provider === right.provider &&
|
|
453
|
+
left.account === right.account &&
|
|
454
|
+
left.endpoint === right.endpoint &&
|
|
455
|
+
left.model === right.model);
|
|
456
|
+
}
|
|
457
|
+
/**
|
|
458
|
+
* Creates physical tickets, validation, and local accounting to one backend.
|
|
459
|
+
*
|
|
460
|
+
* @param attempts Physical attempt state for this invocation.
|
|
461
|
+
* @param audit Retained history audit for this invocation.
|
|
462
|
+
* @param deadline Operation deadline, when configured.
|
|
463
|
+
* @param mcp Selected MCP session, when present.
|
|
464
|
+
* @param model Selected AI model for this invocation.
|
|
465
|
+
* @returns The controls for physical admission, validation, and accounting.
|
|
466
|
+
*/
|
|
467
|
+
control(model, audit, deadline, attempts, mcp) {
|
|
468
|
+
let count = 0;
|
|
469
|
+
return {
|
|
470
|
+
signal: this.#signal,
|
|
471
|
+
...(deadline === undefined ? {} : { deadlineEpochMs: deadline }),
|
|
472
|
+
nowEpochMs: () => Time.currentTimeMillis(),
|
|
473
|
+
hasAuthority: () => this.hasAuthority(deadline),
|
|
474
|
+
beginAttempt: (request) => this.beginAttempt(attempts, model, request, ++count, audit, deadline),
|
|
475
|
+
reserveTransport: (id, bytes, credit) => Promise.resolve(this.reserveTransport(attempts, id, bytes, credit, model)),
|
|
476
|
+
onReceived: (id, bytes) => {
|
|
477
|
+
this.budget.onReceived(this.ticket(attempts, id), bytes);
|
|
478
|
+
},
|
|
479
|
+
finishAttempt: (completion) => this.finishAttempt(attempts, completion, audit),
|
|
480
|
+
recordFailure: (code, retryable) => Promise.resolve(this.failure(code, retryable)),
|
|
481
|
+
admitGeneration: (candidate, definition, input) => parseCandidate(definition.output, candidate, (value) => definition.validation?.check(value, input) ?? []),
|
|
482
|
+
admitDecision: (result, _definition, input, rounding) => admitDecision(model, result, input, rounding ?? {}),
|
|
483
|
+
callTool: (invocation) => mcp?.call(invocation) ??
|
|
484
|
+
Promise.reject(new Error("Agent capability has no configured MCP tools.")),
|
|
485
|
+
};
|
|
486
|
+
}
|
|
487
|
+
/**
|
|
488
|
+
* Checks cancellation and the selected operation deadline.
|
|
489
|
+
*
|
|
490
|
+
* @param deadline Operation deadline, when configured.
|
|
491
|
+
* @returns Whether the session remains active and before its deadline.
|
|
492
|
+
*/
|
|
493
|
+
hasAuthority(deadline) {
|
|
494
|
+
return !this.#signal.aborted && (deadline === undefined || Time.currentTimeMillis() < deadline);
|
|
495
|
+
}
|
|
496
|
+
/**
|
|
497
|
+
* Creates one fresh physical request with per-capability request count.
|
|
498
|
+
*
|
|
499
|
+
* @param _request Original request retained for callback compatibility.
|
|
500
|
+
* @param attempts Physical attempt state for this invocation.
|
|
501
|
+
* @param audit Retained history audit for this invocation.
|
|
502
|
+
* @param deadline Operation deadline, when configured.
|
|
503
|
+
* @param model Selected AI model for this invocation.
|
|
504
|
+
* @param number Physical attempt sequence number.
|
|
505
|
+
* @returns The admitted physical attempt or a safe failure.
|
|
506
|
+
*/
|
|
507
|
+
beginAttempt(attempts, model, _request, number, audit, deadline) {
|
|
508
|
+
this.requireOpen();
|
|
509
|
+
if (!this.hasAuthority(deadline))
|
|
510
|
+
throw new Error("Agent model attempt deadline expired.");
|
|
511
|
+
if (model.definition.limits.modelRequests !== undefined &&
|
|
512
|
+
number > model.definition.limits.modelRequests)
|
|
513
|
+
throw new Error("Agent physical model request budget is exhausted.");
|
|
514
|
+
const id = randomUUID();
|
|
515
|
+
return audit
|
|
516
|
+
.attemptStarted(_request, id)
|
|
517
|
+
.then(() => this.newTicket(attempts, id, model, deadline));
|
|
518
|
+
}
|
|
519
|
+
/**
|
|
520
|
+
* Sets a fresh transport ticket only after its start audit settles.
|
|
521
|
+
*
|
|
522
|
+
* @param attempts Physical attempt state for this invocation.
|
|
523
|
+
* @param deadline Operation deadline, when configured.
|
|
524
|
+
* @param id Typed identifier of the requested item.
|
|
525
|
+
* @param model Selected AI model for this invocation.
|
|
526
|
+
* @returns The reserved transport ticket after its start audit.
|
|
527
|
+
*/
|
|
528
|
+
newTicket(attempts, id, model, deadline) {
|
|
529
|
+
attempts.set(id, { id, completed: false });
|
|
530
|
+
return {
|
|
531
|
+
id,
|
|
532
|
+
signal: this.#signal,
|
|
533
|
+
...(model.definition.limits.maxInputBytes === undefined
|
|
534
|
+
? {}
|
|
535
|
+
: { maxInputBytes: model.definition.limits.maxInputBytes }),
|
|
536
|
+
...(model.definition.limits.maxOutputBytes === undefined
|
|
537
|
+
? {}
|
|
538
|
+
: { maxOutputBytes: model.definition.limits.maxOutputBytes }),
|
|
539
|
+
...(deadline === undefined ? {} : { deadlineEpochMs: deadline }),
|
|
540
|
+
};
|
|
541
|
+
}
|
|
542
|
+
/**
|
|
543
|
+
* Acquires full output credit before transport starts.
|
|
544
|
+
*
|
|
545
|
+
* @param attempts Physical attempt state for this invocation.
|
|
546
|
+
* @param bytes Measured serialized byte count.
|
|
547
|
+
* @param credit Reserved input and output byte credit.
|
|
548
|
+
* @param id Typed identifier of the requested item.
|
|
549
|
+
* @param model Selected AI model for this invocation.
|
|
550
|
+
* @returns The transport ticket with full response credit reserved.
|
|
551
|
+
*/
|
|
552
|
+
reserveTransport(attempts, id, bytes, credit, model) {
|
|
553
|
+
this.requireOpen();
|
|
554
|
+
const attempt = attempts.get(id);
|
|
555
|
+
if (attempt === undefined || attempt.reservation !== undefined || attempt.completed)
|
|
556
|
+
throw new Error("Agent transport ticket was already reserved or unknown.");
|
|
557
|
+
const limits = model.definition.limits;
|
|
558
|
+
if ((limits.maxInputBytes !== undefined && bytes > limits.maxInputBytes) ||
|
|
559
|
+
(limits.maxOutputBytes !== undefined &&
|
|
560
|
+
credit !== undefined &&
|
|
561
|
+
credit > limits.maxOutputBytes))
|
|
562
|
+
throw new Error("Agent provider request exceeds its operation byte bounds.");
|
|
563
|
+
const ticket = this.budget.reservePhysical(bytes, credit ?? limits.maxOutputBytes, "model");
|
|
564
|
+
attempt.reservation = ticket;
|
|
565
|
+
return ticket.maxOutputBytes;
|
|
566
|
+
}
|
|
567
|
+
/**
|
|
568
|
+
* Gets one existing reservation for a physical receipt.
|
|
569
|
+
*
|
|
570
|
+
* @param attempts Physical attempt state for this invocation.
|
|
571
|
+
* @param id Typed identifier of the requested item.
|
|
572
|
+
* @returns The active physical reservation for the supplied ticket ID.
|
|
573
|
+
*/
|
|
574
|
+
ticket(attempts, id) {
|
|
575
|
+
const ticket = attempts.get(id)?.reservation;
|
|
576
|
+
if (ticket === undefined)
|
|
577
|
+
throw new Error("Agent model attempt has no live reservation.");
|
|
578
|
+
return ticket;
|
|
579
|
+
}
|
|
580
|
+
/**
|
|
581
|
+
* Completes measured response bytes without replay state.
|
|
582
|
+
*
|
|
583
|
+
* @param attempts Physical attempt state for this invocation.
|
|
584
|
+
* @param audit Retained history audit for this invocation.
|
|
585
|
+
* @param completion Completed provider attempt or operation.
|
|
586
|
+
* @returns Completion after response accounting and audit settle.
|
|
587
|
+
*/
|
|
588
|
+
async finishAttempt(attempts, completion, audit) {
|
|
589
|
+
this.requireOpen();
|
|
590
|
+
const attempt = attempts.get(completion.ticketId);
|
|
591
|
+
if (attempt === undefined || attempt.completed)
|
|
592
|
+
throw new Error("Agent model attempt is unknown or completed.");
|
|
593
|
+
const ticket = this.ticket(attempts, completion.ticketId);
|
|
594
|
+
await audit.attemptFinished(completion);
|
|
595
|
+
if (completion.receivedBytes !== undefined)
|
|
596
|
+
this.budget.settlePhysical(ticket, completion.receivedBytes);
|
|
597
|
+
attempt.response = completion.response;
|
|
598
|
+
attempt.completed = true;
|
|
599
|
+
}
|
|
600
|
+
/**
|
|
601
|
+
* Returns one safe local diagnostic without a durable execution record.
|
|
602
|
+
*
|
|
603
|
+
* @param code Recorded failure code.
|
|
604
|
+
* @param retryableByNewSignal Whether a fresh signal may retry this failure.
|
|
605
|
+
* @returns A safe local AI failure without persisted execution status.
|
|
606
|
+
*/
|
|
607
|
+
failure(code, retryableByNewSignal) {
|
|
608
|
+
return { code, retryableByNewSignal, diagnosticId: randomUUID() };
|
|
609
|
+
}
|
|
610
|
+
}
|
|
611
|
+
//# sourceMappingURL=agent-live-ai-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-live-ai-runtime.js","sourceRoot":"","sources":["../../src/agent/agent-live-ai-runtime.ts"],"names":[],"mappings":"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"}
|