@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
package/README.md
CHANGED
|
@@ -14,7 +14,8 @@ pnpm add @spine-event-engine/server@snapshot
|
|
|
14
14
|
```
|
|
15
15
|
|
|
16
16
|
Use Node.js in ESM mode. Before adding entities, generate your application
|
|
17
|
-
model and handler
|
|
17
|
+
model and handler metadata with `@spine-event-engine/proto-tools`, then import
|
|
18
|
+
`generated/spine-bootstrap.js` before assembly. The small
|
|
18
19
|
example below has no entity handlers, so it is useful for proving that native
|
|
19
20
|
assembly, listener startup, and cleanup work locally.
|
|
20
21
|
|
|
@@ -27,9 +28,10 @@ this shape appropriate for tests and hosts that manage shutdown themselves.
|
|
|
27
28
|
<!-- docs-snippet-path: packages/server/test/server/server-environment.test.ts -->
|
|
28
29
|
|
|
29
30
|
```ts
|
|
30
|
-
import { BoundedContext, Server } from "@spine-event-engine/server";
|
|
31
|
+
import { BoundedContext, Server, ServerEnvironment } from "@spine-event-engine/server";
|
|
31
32
|
|
|
32
|
-
|
|
33
|
+
await ServerEnvironment.instance().completeSetup();
|
|
34
|
+
const context = await BoundedContext.singleTenant("Tasks").build();
|
|
33
35
|
const running = await new Server({ contexts: [context], port: 0 }).start();
|
|
34
36
|
try {
|
|
35
37
|
// Native Command, Query, and Subscription services are now listening.
|
|
@@ -39,10 +41,29 @@ try {
|
|
|
39
41
|
```
|
|
40
42
|
|
|
41
43
|
Add generated entities with `BoundedContext.add(...)` and use
|
|
42
|
-
`
|
|
44
|
+
`build()` to assemble the context and load generated repositories when configured. A
|
|
43
45
|
context is single-tenant or multitenant by construction; select that mode
|
|
44
46
|
before registering application handlers and storage.
|
|
45
47
|
|
|
48
|
+
`build()` prepares the current model storage and awaits the first subscription
|
|
49
|
+
registry pass. Set `createStorageStructures: false` or
|
|
50
|
+
`startSubscriptionMonitoring: false` in `build({...})` to defer either phase
|
|
51
|
+
independently until the first valid input. Complete environment setup explicitly
|
|
52
|
+
before building, even when both phases are deferred.
|
|
53
|
+
Starting monitoring still prepares its shared subscription registry when model
|
|
54
|
+
structure creation is deferred; it does not prepare every tenant's Entity storage structures.
|
|
55
|
+
An eager required-phase failure stops accepting new input and triggers environment
|
|
56
|
+
cleanup. A lazy first-input failure rejects that input and can be retried.
|
|
57
|
+
After build, `context.runtime.createStorageStructures(...tenantIds)` explicitly
|
|
58
|
+
creates declared structures; `checkStructureCompatibility(...tenantIds)` checks
|
|
59
|
+
them without creating structures. With no IDs, a multitenant context traverses
|
|
60
|
+
its current tenant index in pages; a single-tenant context prepares its neutral
|
|
61
|
+
destination. `startSubscriptionMonitoring()` starts the initial registry pass
|
|
62
|
+
without preparing every tenant's Entity structures. The environment offers the
|
|
63
|
+
same operations across completed, open contexts, selecting matching multitenant
|
|
64
|
+
contexts for explicit IDs. Database-backed providers require an existing
|
|
65
|
+
database; these operations do not provision one or register tenants.
|
|
66
|
+
|
|
46
67
|
## Give an Entity an application service
|
|
47
68
|
|
|
48
69
|
Spine normally constructs an Entity with its ID, state, version, and lifecycle
|
|
@@ -58,15 +79,17 @@ import { TaskAssignment, type AssignmentWeightService } from "../src/index.js";
|
|
|
58
79
|
|
|
59
80
|
// Create shared services before starting the context.
|
|
60
81
|
const weights: AssignmentWeightService = { weightFor: () => 2 };
|
|
61
|
-
const builder = BoundedContext.singleTenant("Assignments")
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
onCreate: (options) => new TaskAssignment(options, weights),
|
|
66
|
-
});
|
|
82
|
+
const builder = BoundedContext.singleTenant("Assignments").add(TaskAssignment, {
|
|
83
|
+
// Forward Spine's options and add the service required by the constructor.
|
|
84
|
+
onCreate: (options) => new TaskAssignment(options, weights),
|
|
85
|
+
});
|
|
67
86
|
```
|
|
68
87
|
|
|
69
|
-
|
|
88
|
+
The application's `src/index.js` imports its generated `spine-bootstrap.js`
|
|
89
|
+
before assembly, so `add(TaskAssignment)` finds the passive metadata for that
|
|
90
|
+
exact class.
|
|
91
|
+
|
|
92
|
+
Await `builder.build()` to assemble the context. The callback runs for each
|
|
70
93
|
fresh or restored Entity object, not just once per ID. It also works for
|
|
71
94
|
Aggregates and Projections, including Projection rebuilds. Return a fresh
|
|
72
95
|
instance synchronously and pass the supplied options unchanged. Application
|
|
@@ -182,11 +205,40 @@ Bounded Contexts causes a startup error.
|
|
|
182
205
|
The [Orders example](https://github.com/SpineEventEngine/spine-ts/blob/master/examples/orders/README.md#cross-context-order-review)
|
|
183
206
|
shows this in an Event handler and includes a runnable integration test.
|
|
184
207
|
|
|
208
|
+
Application queries use generated `_queries.proto` request/response companions.
|
|
209
|
+
Pass concrete `AppQueryHandler<Q, R>` instances in `ServerOptions.appQueries`;
|
|
210
|
+
generated metadata alone never enables a route. On direct app-node ingress,
|
|
211
|
+
`QueryService.Execute` validates the wire envelope and Q before dispatch.
|
|
212
|
+
Native and browser Gateways forward Execute to the app node; `ClientRequest.query(generatedQ)`
|
|
213
|
+
returns the wire `Response` and zero or one decoded paired results. Application code calls
|
|
214
|
+
`server.query(generatedQ, executionContext)` and receives the paired generated R.
|
|
215
|
+
The trusted execution context supplies the current `actorContext`, optional
|
|
216
|
+
verified principal and authority facts, and an optional cancellation signal.
|
|
217
|
+
For a Process Manager or Agent, inject a Server-bound query function through the
|
|
218
|
+
repository's `onCreate` callback and use `currentActorContext` only inside an
|
|
219
|
+
active handler. That actor metadata does not prove authentication. Source reads
|
|
220
|
+
from an application query use registered query-visible Entity routes and enforce
|
|
221
|
+
the destination's tenant membership; a handler that performs no source read has
|
|
222
|
+
no destination tenant to check. Direct calls do not run Server output filters.
|
|
223
|
+
|
|
224
|
+
The [typed callback example](REFERENCE.md#services-reads-and-lifecycle) shows
|
|
225
|
+
the repository `onCreate` injection and active handler call. The actor/tenant
|
|
226
|
+
snapshot supplies no verified principal or provider facts; the
|
|
227
|
+
[scoped integration test](https://github.com/SpineEventEngine/spine-ts/blob/master/packages/server/test/entity/process-manager-querying.test.ts) shows
|
|
228
|
+
the complete repository setup.
|
|
229
|
+
|
|
185
230
|
Queries preserve the handler's actor and effective tenant; there is no tenant
|
|
186
231
|
override. Single-tenant execution uses `SINGLE_TENANT`, even when the request
|
|
187
232
|
omits a tenant field. A named tenant cannot query a single-tenant context: that
|
|
188
233
|
fails before reading. See the [query contract](REFERENCE.md#handler-routing-and-operations)
|
|
189
234
|
for the complete tenant rules and empty-result behavior.
|
|
235
|
+
For a multitenant receiving context, explicitly register each accepted tenant
|
|
236
|
+
through `context.tenantIndex.keep(tenantId)` or the configured directory.
|
|
237
|
+
Provider-backed indexes may only confirm existing membership: fixed SQL catalogs
|
|
238
|
+
cannot add tenants, and the Datastore index requires native namespace metadata.
|
|
239
|
+
Use an application-managed `TenantIndex` to register tenants before provider
|
|
240
|
+
data exists or to add tenants dynamically.
|
|
241
|
+
Unknown tenants fail before reads or handlers run; input never registers them.
|
|
190
242
|
|
|
191
243
|
Use `EntityQuery.all(...)` when every predicate must match and
|
|
192
244
|
`EntityQuery.either(...)` when any branch may match.
|
|
@@ -201,7 +253,7 @@ state are declared in Proto and its handlers use generated registration.
|
|
|
201
253
|
|
|
202
254
|
An Agent can read its recorded interactions and emitted domain Events through
|
|
203
255
|
its repository. See the [Agent execution reference](REFERENCE.md#agent-execution)
|
|
204
|
-
for history methods, paging, and
|
|
256
|
+
for history methods, paging, and live execution behavior.
|
|
205
257
|
|
|
206
258
|
Declare the Agent ID and state in Proto, with `option (entity).kind = ENTITY;`
|
|
207
259
|
on the state. The [Support example](https://github.com/SpineEventEngine/spine-ts/blob/master/examples/support/README.md) includes
|
|
@@ -271,16 +323,16 @@ class SupportDraftAgent extends Agent<SupportTicketId, typeof SupportDraftStateS
|
|
|
271
323
|
<!-- prettier-ignore-end -->
|
|
272
324
|
|
|
273
325
|
Configure the registry outside the Entity. The Bounded Context requires persisted System
|
|
274
|
-
Events, and the Agent registration supplies its
|
|
275
|
-
|
|
276
|
-
assembles these settings with
|
|
277
|
-
`
|
|
278
|
-
|
|
326
|
+
Events, and the Agent registration supplies its permitted capabilities. The
|
|
327
|
+
[example Bounded Context factory](https://github.com/SpineEventEngine/spine-ts/blob/master/examples/support/src/index.ts)
|
|
328
|
+
assembles these settings with generated passive handler metadata. Supply the AI registry
|
|
329
|
+
through `ServerEnvironment.when(type).use({ ai: registry })` as a default, or
|
|
330
|
+
`BoundedContextBuilder.withAi(registry)` for one Bounded Context.
|
|
279
331
|
|
|
280
332
|
Posting a Command awaits acceptance. Model work and the resulting domain Event
|
|
281
333
|
arrive asynchronously afterward. The handling operation can await a model without
|
|
282
334
|
keeping a database transaction open. See the [Agent execution reference](REFERENCE.md#agent-execution)
|
|
283
|
-
for defaults
|
|
335
|
+
for defaults and retained history.
|
|
284
336
|
|
|
285
337
|
## Native lifecycle and routing
|
|
286
338
|
|
|
@@ -337,7 +389,7 @@ field. Event routing uses a compatible producer ID when available and otherwise
|
|
|
337
389
|
uses the Event's declared first field. State-update routing selects the first
|
|
338
390
|
state field compatible with the Entity ID.
|
|
339
391
|
|
|
340
|
-
## Browser gateway
|
|
392
|
+
## Browser gateway setup
|
|
341
393
|
|
|
342
394
|
The server root has no browser options and does not load auth. To host a
|
|
343
395
|
browser-facing Gateway, install the optional auth peer and import the browser
|
|
@@ -359,6 +411,21 @@ and backend forwarding. Authenticated durable bindings are browser-host
|
|
|
359
411
|
infrastructure, not native `Server` state. See the [browser/auth extension guide](https://github.com/SpineEventEngine/spine-ts/blob/master/docs/BROWSER_CLIENT_AUTH_EXTENSION_GUIDE.md)
|
|
360
412
|
before exposing a backend to a browser.
|
|
361
413
|
|
|
414
|
+
## Native reader admission
|
|
415
|
+
|
|
416
|
+
Native authentication is configured through `ServerOptions.services.readerAdmission`.
|
|
417
|
+
Use `direct` to authenticate native callers or `forwarded` to verify reader
|
|
418
|
+
assertions from an authenticated gateway. For browser forwarding, supply the
|
|
419
|
+
corresponding issuer as `BrowserServerOptions.forwardingProof`. Configure both
|
|
420
|
+
ends; the backend does not trust an actor ID or incoming identity header by
|
|
421
|
+
itself. With neither admission adapter configured, the native server remains
|
|
422
|
+
public and supplies no authenticated principal or authority facts.
|
|
423
|
+
|
|
424
|
+
Subscription activation and cancellation also check the admitted principal
|
|
425
|
+
against the stored reader binding. A different principal cannot reuse a
|
|
426
|
+
subscription even with the same ActorContext. See [native reader admission](REFERENCE.md#native-reader-admission)
|
|
427
|
+
for adapter signatures, public admission, and managed application configuration.
|
|
428
|
+
|
|
362
429
|
## Limits
|
|
363
430
|
|
|
364
431
|
This package does not create an identity provider, browser session store,
|