@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,356 @@
|
|
|
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 { clone, fromBinary, toBinary, } from "@bufbuild/protobuf";
|
|
15
|
+
import { AnySchema } from "@bufbuild/protobuf/wkt";
|
|
16
|
+
import { Code, ConnectError } from "@connectrpc/connect";
|
|
17
|
+
import { ReadSideMessages } from "./read-side-message.js";
|
|
18
|
+
/**
|
|
19
|
+
* Applies one ordered filter scope to detached domain message trees.
|
|
20
|
+
*/
|
|
21
|
+
export class ReadSideFilterEngine {
|
|
22
|
+
#registry;
|
|
23
|
+
#filters = new Map();
|
|
24
|
+
#nested;
|
|
25
|
+
/**
|
|
26
|
+
* Resolves each policy through the ordinary registry's exact registered URL.
|
|
27
|
+
*
|
|
28
|
+
* @param filters Policies in registration order.
|
|
29
|
+
* @param registry Application's existing Proto type registry.
|
|
30
|
+
*/
|
|
31
|
+
constructor(filters, registry) {
|
|
32
|
+
this.#registry = registry;
|
|
33
|
+
this.#nested = filters.some((filter) => filter.nested);
|
|
34
|
+
for (const filter of filters) {
|
|
35
|
+
const metadata = registry.findBySchema(filter.schema);
|
|
36
|
+
if (metadata === undefined)
|
|
37
|
+
throw new TypeError(`Read-side filter schema ${filter.schema.typeName} is not registered.`);
|
|
38
|
+
const selected = this.#filters.get(metadata.typeUrl) ?? [];
|
|
39
|
+
selected.push(filter);
|
|
40
|
+
this.#filters.set(metadata.typeUrl, selected);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Returns an isolated filtered view without mutating stored or caller data.
|
|
45
|
+
*
|
|
46
|
+
* @typeParam Schema Generated root domain message schema.
|
|
47
|
+
* @param schema Declared root domain message schema.
|
|
48
|
+
* @param message Domain value returned by the read side.
|
|
49
|
+
* @param context Actual read operation and trusted invocation facts.
|
|
50
|
+
* @returns Filtered same-type message, or null when the root was removed.
|
|
51
|
+
*/
|
|
52
|
+
async apply(schema, message, context) {
|
|
53
|
+
if (this.#registry.findBySchema(schema) === undefined)
|
|
54
|
+
throw new TypeError(`Read-side root schema ${schema.typeName} is not registered.`);
|
|
55
|
+
let result = null;
|
|
56
|
+
const stable = this.#context(context);
|
|
57
|
+
const pending = [
|
|
58
|
+
{
|
|
59
|
+
kind: "visit",
|
|
60
|
+
schema,
|
|
61
|
+
value: ReadSideMessages.copy(message),
|
|
62
|
+
context: stable,
|
|
63
|
+
root: true,
|
|
64
|
+
put: (value) => {
|
|
65
|
+
result = value;
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
];
|
|
69
|
+
while (pending.length > 0) {
|
|
70
|
+
this.#check(stable.signal);
|
|
71
|
+
const work = pending.pop();
|
|
72
|
+
if (work === undefined)
|
|
73
|
+
break;
|
|
74
|
+
if (work.kind === "finish")
|
|
75
|
+
work.commit();
|
|
76
|
+
else
|
|
77
|
+
await this.#visit(work, pending);
|
|
78
|
+
}
|
|
79
|
+
return result;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Transforms the domain payload of a retained Event without changing its type URL.
|
|
83
|
+
*
|
|
84
|
+
* @param packed Original packed domain message.
|
|
85
|
+
* @param context Actual history call and current trusted facts.
|
|
86
|
+
* @returns Repacked visible payload, or null when policy removes it.
|
|
87
|
+
*/
|
|
88
|
+
async applyPacked(packed, context) {
|
|
89
|
+
if (!this.#nested && !this.#filters.has(packed.typeUrl))
|
|
90
|
+
return clone(AnySchema, packed);
|
|
91
|
+
const metadata = this.#registry.findByTypeUrl(packed.typeUrl);
|
|
92
|
+
if (metadata === undefined)
|
|
93
|
+
throw new TypeError(`Read-side payload ${packed.typeUrl} is not registered.`);
|
|
94
|
+
const original = fromBinary(metadata.schema, packed.value);
|
|
95
|
+
const visible = await this.apply(metadata.schema, original, context);
|
|
96
|
+
if (visible === null)
|
|
97
|
+
return null;
|
|
98
|
+
const result = clone(AnySchema, packed);
|
|
99
|
+
result.value = toBinary(metadata.schema, visible);
|
|
100
|
+
return result;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Runs this occurrence's policies before scheduling its surviving children.
|
|
104
|
+
*
|
|
105
|
+
* @param work Current domain occurrence.
|
|
106
|
+
* @param pending Iterative traversal stack.
|
|
107
|
+
*/
|
|
108
|
+
async #visit(work, pending) {
|
|
109
|
+
let value = work.value;
|
|
110
|
+
ReadSideMessages.checkShallow(work.schema, value);
|
|
111
|
+
const url = this.#registry.findByFullName(work.schema.typeName)?.typeUrl;
|
|
112
|
+
for (const filter of url === undefined ? [] : (this.#filters.get(url) ?? [])) {
|
|
113
|
+
if (!work.root && !filter.nested)
|
|
114
|
+
continue;
|
|
115
|
+
const candidate = ReadSideMessages.copy(value);
|
|
116
|
+
const next = await filter.filter(candidate, this.#context(work.context));
|
|
117
|
+
this.#check(work.context.signal);
|
|
118
|
+
if (next === null) {
|
|
119
|
+
value = null;
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
122
|
+
value = ReadSideMessages.copy(next);
|
|
123
|
+
ReadSideMessages.checkShallow(work.schema, value);
|
|
124
|
+
}
|
|
125
|
+
work.put(value);
|
|
126
|
+
if (value !== null)
|
|
127
|
+
this.#children(work.schema, value, work.context, work.put, pending);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Schedules declared message children in field order and deterministic key order.
|
|
131
|
+
*
|
|
132
|
+
* @param schema Parent schema.
|
|
133
|
+
* @param value Surviving parent message.
|
|
134
|
+
* @param context Parent invocation context.
|
|
135
|
+
* @param put Parent update for a removed Any payload.
|
|
136
|
+
* @param pending Iterative traversal stack.
|
|
137
|
+
*/
|
|
138
|
+
#children(schema, value, context, put, pending) {
|
|
139
|
+
const children = [];
|
|
140
|
+
const commits = [];
|
|
141
|
+
let baseline;
|
|
142
|
+
/**
|
|
143
|
+
* Captures a stable parent only when a registered nested child policy needs it.
|
|
144
|
+
*/
|
|
145
|
+
const parentFor = (childSchema) => {
|
|
146
|
+
const url = this.#registry.findByFullName(childSchema.typeName)?.typeUrl;
|
|
147
|
+
if (url === undefined || !this.#filters.get(url)?.some((filter) => filter.nested))
|
|
148
|
+
return undefined;
|
|
149
|
+
baseline ??= ReadSideMessages.copy(value);
|
|
150
|
+
return baseline;
|
|
151
|
+
};
|
|
152
|
+
if (schema.typeName === AnySchema.typeName && this.#nested)
|
|
153
|
+
this.#packedChild(value, parentFor, context, put, children, commits);
|
|
154
|
+
else
|
|
155
|
+
for (const field of schema.fields) {
|
|
156
|
+
this.#fieldChildren(field, value, parentFor, context, children, commits);
|
|
157
|
+
}
|
|
158
|
+
pending.push(...commits);
|
|
159
|
+
for (let index = children.length - 1; index >= 0; index--) {
|
|
160
|
+
const child = children[index];
|
|
161
|
+
if (child !== undefined)
|
|
162
|
+
pending.push(child);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Adds the selected message field, list, or map without visiting scalar data.
|
|
167
|
+
*
|
|
168
|
+
* @param field Declared field.
|
|
169
|
+
* @param value Current mutable parent.
|
|
170
|
+
* @param parentFor Captures a parent baseline only for a matching child.
|
|
171
|
+
* @param context Current invocation facts.
|
|
172
|
+
* @param children Ordered child work.
|
|
173
|
+
* @param commits Container updates after child traversal.
|
|
174
|
+
*/
|
|
175
|
+
#fieldChildren(field, value, parentFor, context, children, commits) {
|
|
176
|
+
if (field.fieldKind === "message")
|
|
177
|
+
this.#singular(field, value, parentFor, context, children);
|
|
178
|
+
else if (field.fieldKind === "list" && field.listKind === "message")
|
|
179
|
+
this.#list(field, value, parentFor, context, children, commits);
|
|
180
|
+
else if (field.fieldKind === "map" && field.mapKind === "message")
|
|
181
|
+
this.#map(field, value, parentFor, context, children, commits);
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Visits an active singular or oneof message and clears its selection on null.
|
|
185
|
+
*
|
|
186
|
+
* @param field Declared message field.
|
|
187
|
+
* @param value Mutable containing message.
|
|
188
|
+
* @param parentFor Captures a stable parent before siblings are visited.
|
|
189
|
+
* @param context Invocation context.
|
|
190
|
+
* @param children Ordered work.
|
|
191
|
+
*/
|
|
192
|
+
#singular(field, value, parentFor, context, children) {
|
|
193
|
+
const record = value;
|
|
194
|
+
const oneof = field.oneof?.localName;
|
|
195
|
+
const selected = oneof === undefined
|
|
196
|
+
? undefined
|
|
197
|
+
: record[oneof];
|
|
198
|
+
if (selected !== undefined && selected.case !== field.localName)
|
|
199
|
+
return;
|
|
200
|
+
const child = oneof === undefined ? record[field.localName] : selected?.value;
|
|
201
|
+
if (child === undefined)
|
|
202
|
+
return;
|
|
203
|
+
this.#add(field.message, child, parentFor, { name: field.name }, context, (next) => {
|
|
204
|
+
if (oneof !== undefined)
|
|
205
|
+
record[oneof] =
|
|
206
|
+
next === null ? { case: undefined } : { case: field.localName, value: next };
|
|
207
|
+
else if (next === null)
|
|
208
|
+
record[field.localName] = undefined;
|
|
209
|
+
else
|
|
210
|
+
record[field.localName] = next;
|
|
211
|
+
}, children);
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Rebuilds a repeated message field after each original element is visited.
|
|
215
|
+
*
|
|
216
|
+
* @param field Declared repeated field.
|
|
217
|
+
* @param value Mutable containing message.
|
|
218
|
+
* @param parentFor Captures a stable parent before siblings are visited.
|
|
219
|
+
* @param context Invocation context.
|
|
220
|
+
* @param children Ordered work.
|
|
221
|
+
* @param commits Deferred stable list update.
|
|
222
|
+
*/
|
|
223
|
+
#list(field, value, parentFor, context, children, commits) {
|
|
224
|
+
const record = value;
|
|
225
|
+
const list = record[field.localName];
|
|
226
|
+
if (!Array.isArray(list))
|
|
227
|
+
throw new TypeError(`Invalid repeated field ${field.name}.`);
|
|
228
|
+
const slots = list.slice();
|
|
229
|
+
slots.forEach((child, index) => {
|
|
230
|
+
this.#add(field.message, child, parentFor, { name: field.name, index }, context, (next) => {
|
|
231
|
+
slots[index] = next;
|
|
232
|
+
}, children);
|
|
233
|
+
});
|
|
234
|
+
commits.push({
|
|
235
|
+
kind: "finish",
|
|
236
|
+
commit: () => {
|
|
237
|
+
record[field.localName] = slots.filter((item) => item !== null);
|
|
238
|
+
},
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Visits message map entries in sorted-key order and removes only null values.
|
|
243
|
+
*
|
|
244
|
+
* @param field Declared map field.
|
|
245
|
+
* @param value Mutable containing message.
|
|
246
|
+
* @param parentFor Captures a stable parent before siblings are visited.
|
|
247
|
+
* @param context Invocation context.
|
|
248
|
+
* @param children Ordered work.
|
|
249
|
+
* @param commits Deferred map update.
|
|
250
|
+
*/
|
|
251
|
+
#map(field, value, parentFor, context, children, commits) {
|
|
252
|
+
const record = value;
|
|
253
|
+
const map = record[field.localName];
|
|
254
|
+
if (map === null || typeof map !== "object" || Array.isArray(map))
|
|
255
|
+
throw new TypeError(`Invalid message map ${field.name}.`);
|
|
256
|
+
const slots = new Map(Object.entries(map));
|
|
257
|
+
for (const key of [...slots.keys()].sort())
|
|
258
|
+
this.#add(field.message, slots.get(key), parentFor, { name: field.name, key }, context, (next) => {
|
|
259
|
+
if (next === null)
|
|
260
|
+
slots.delete(key);
|
|
261
|
+
else
|
|
262
|
+
slots.set(key, next);
|
|
263
|
+
}, children);
|
|
264
|
+
commits.push({
|
|
265
|
+
kind: "finish",
|
|
266
|
+
commit: () => {
|
|
267
|
+
record[field.localName] = Object.fromEntries(slots);
|
|
268
|
+
},
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Decodes a registered Any for nested inspection and repacks its original URL.
|
|
273
|
+
*
|
|
274
|
+
* @param packed Mutable Any wrapper.
|
|
275
|
+
* @param parentFor Captures the Any wrapper before payload filtering.
|
|
276
|
+
* @param context Invocation context.
|
|
277
|
+
* @param put Containing field update when the payload is removed.
|
|
278
|
+
* @param children Ordered payload work.
|
|
279
|
+
* @param commits Deferred original-URL repack.
|
|
280
|
+
*/
|
|
281
|
+
#packedChild(packed, parentFor, context, put, children, commits) {
|
|
282
|
+
const metadata = this.#registry.findByTypeUrl(packed.typeUrl);
|
|
283
|
+
if (metadata === undefined)
|
|
284
|
+
throw new TypeError(`Unregistered nested Any URL ${packed.typeUrl}.`);
|
|
285
|
+
const payload = fromBinary(metadata.schema, packed.value);
|
|
286
|
+
let filtered = payload;
|
|
287
|
+
this.#add(metadata.schema, payload, parentFor, { name: "value" }, context, (next) => {
|
|
288
|
+
filtered = next;
|
|
289
|
+
}, children);
|
|
290
|
+
commits.push({
|
|
291
|
+
kind: "finish",
|
|
292
|
+
commit: () => {
|
|
293
|
+
if (filtered === null)
|
|
294
|
+
put(null);
|
|
295
|
+
else
|
|
296
|
+
packed.value = toBinary(metadata.schema, filtered);
|
|
297
|
+
},
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Adds one typed message child and its detached parent metadata.
|
|
302
|
+
*
|
|
303
|
+
* @param schema Declared child schema.
|
|
304
|
+
* @param value Child field value.
|
|
305
|
+
* @param parentFor Captures a stable parent only for matching nested filters.
|
|
306
|
+
* @param field Containing field and position.
|
|
307
|
+
* @param context Invocation context.
|
|
308
|
+
* @param put Parent or container update.
|
|
309
|
+
* @param children Ordered work.
|
|
310
|
+
*/
|
|
311
|
+
#add(schema, value, parentFor, field, context, put, children) {
|
|
312
|
+
if (value === null || typeof value !== "object" || !("$typeName" in value))
|
|
313
|
+
throw new TypeError(`Invalid nested message in ${field.name}.`);
|
|
314
|
+
const { parent: previousParent, field: previousField, ...facts } = context;
|
|
315
|
+
void previousParent;
|
|
316
|
+
void previousField;
|
|
317
|
+
const parent = parentFor(schema);
|
|
318
|
+
children.push({
|
|
319
|
+
kind: "visit",
|
|
320
|
+
schema,
|
|
321
|
+
value: value,
|
|
322
|
+
context: Object.freeze({
|
|
323
|
+
...facts,
|
|
324
|
+
...(parent === undefined ? {} : { parent }),
|
|
325
|
+
field: Object.freeze(field),
|
|
326
|
+
}),
|
|
327
|
+
root: false,
|
|
328
|
+
put,
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Detaches and freezes caller-provided identity and operation facts.
|
|
333
|
+
*
|
|
334
|
+
* @param source Caller read context.
|
|
335
|
+
* @returns Stable per-invocation context.
|
|
336
|
+
*/
|
|
337
|
+
#context(source) {
|
|
338
|
+
const { signal, producingContext, ...facts } = source;
|
|
339
|
+
const copied = ReadSideMessages.freeze(ReadSideMessages.copy(facts));
|
|
340
|
+
return Object.freeze({
|
|
341
|
+
...copied,
|
|
342
|
+
...(signal === undefined ? {} : { signal }),
|
|
343
|
+
...(producingContext === undefined ? {} : { producingContext }),
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Stops work promptly when the current read has been canceled.
|
|
348
|
+
*
|
|
349
|
+
* @param signal Current cancellation signal.
|
|
350
|
+
*/
|
|
351
|
+
#check(signal) {
|
|
352
|
+
if (signal?.aborted)
|
|
353
|
+
throw new ConnectError("Read canceled.", Code.Canceled);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
//# sourceMappingURL=read-side-filter-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-side-filter-engine.js","sourceRoot":"","sources":["../../src/stand/read-side-filter-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
import type { Message, MessageShape } from "@bufbuild/protobuf";
|
|
2
|
+
import type { GenMessage } from "@bufbuild/protobuf/codegenv2";
|
|
3
|
+
import type { ActorContext, TenantId } from "@spine-event-engine/proto";
|
|
4
|
+
import type { AppQuery, Query, Subscription, Topic } from "@spine-event-engine/proto/client";
|
|
5
|
+
import type { TrustedReaderContext } from "@spine-event-engine/core/spi/trusted-reader";
|
|
6
|
+
import type { NormalizedQueryPlan, RecordQuery } from "@spine-event-engine/storage";
|
|
7
|
+
import type { Timestamp } from "@bufbuild/protobuf/wkt";
|
|
8
|
+
import type { HistoryRead } from "@spine-event-engine/ai";
|
|
9
|
+
import type { AgentHistoryView } from "@spine-event-engine/storage/provider";
|
|
10
|
+
import type { BoundedContext } from "../context/bounded-context.js";
|
|
11
|
+
/**
|
|
12
|
+
* Exposes byte contents without mutation methods to read-side policies.
|
|
13
|
+
*/
|
|
14
|
+
type ReadonlyBytes = Readonly<Pick<Uint8Array, "length" | "at" | "slice"> & Record<number, number>>;
|
|
15
|
+
/**
|
|
16
|
+
* Exposes nested Proto data for inspection without writable fields or byte mutators.
|
|
17
|
+
*
|
|
18
|
+
* @typeParam Value Proto message or nested field value.
|
|
19
|
+
*/
|
|
20
|
+
type ReadonlyMessage<Value> = Value extends Uint8Array ? ReadonlyBytes : Value extends readonly (infer Item)[] ? readonly ReadonlyMessage<Item>[] : Value extends object ? {
|
|
21
|
+
readonly [Key in keyof Value]: ReadonlyMessage<Value[Key]>;
|
|
22
|
+
} : Value;
|
|
23
|
+
/**
|
|
24
|
+
* Identifies the real read operation without inventing a transport request.
|
|
25
|
+
*/
|
|
26
|
+
export type ReadSideOperation = Readonly<{
|
|
27
|
+
/**
|
|
28
|
+
* QueryService read.
|
|
29
|
+
*/
|
|
30
|
+
kind: "query";
|
|
31
|
+
/**
|
|
32
|
+
* Submitted entity query.
|
|
33
|
+
*/
|
|
34
|
+
query: ReadonlyMessage<Query>;
|
|
35
|
+
}> | Readonly<{
|
|
36
|
+
/**
|
|
37
|
+
* Application query handler read.
|
|
38
|
+
*/
|
|
39
|
+
kind: "app-query";
|
|
40
|
+
/**
|
|
41
|
+
* Submitted application query.
|
|
42
|
+
*/
|
|
43
|
+
appQuery: ReadonlyMessage<AppQuery>;
|
|
44
|
+
}> | Readonly<{
|
|
45
|
+
/**
|
|
46
|
+
* Subscription delivery read.
|
|
47
|
+
*/
|
|
48
|
+
kind: "subscription";
|
|
49
|
+
/**
|
|
50
|
+
* Active subscription.
|
|
51
|
+
*/
|
|
52
|
+
subscription: ReadonlyMessage<Subscription>;
|
|
53
|
+
/**
|
|
54
|
+
* Topic that produced this occurrence.
|
|
55
|
+
*/
|
|
56
|
+
topic: ReadonlyMessage<Topic>;
|
|
57
|
+
}> | Readonly<{
|
|
58
|
+
/**
|
|
59
|
+
* Direct Stand read with its actual requested state and identifier.
|
|
60
|
+
*/
|
|
61
|
+
kind: "direct";
|
|
62
|
+
/**
|
|
63
|
+
* Requested state schema URL and typed Entity ID.
|
|
64
|
+
*/
|
|
65
|
+
read: Readonly<{
|
|
66
|
+
/**
|
|
67
|
+
* Requested state schema URL.
|
|
68
|
+
*/
|
|
69
|
+
typeUrl: string;
|
|
70
|
+
/**
|
|
71
|
+
* Typed Entity ID supplied to Stand.
|
|
72
|
+
*/
|
|
73
|
+
id: unknown;
|
|
74
|
+
}>;
|
|
75
|
+
}> | Readonly<{
|
|
76
|
+
/**
|
|
77
|
+
* Direct in-process Stand subscription delivery.
|
|
78
|
+
*/
|
|
79
|
+
kind: "direct";
|
|
80
|
+
/**
|
|
81
|
+
* Registered state type selected when the observer subscribed.
|
|
82
|
+
*/
|
|
83
|
+
subscription: Readonly<{
|
|
84
|
+
/**
|
|
85
|
+
* State schema URL registered for this direct subscription.
|
|
86
|
+
*/
|
|
87
|
+
typeUrl: string;
|
|
88
|
+
}>;
|
|
89
|
+
}> | Readonly<{
|
|
90
|
+
/**
|
|
91
|
+
* Direct Stand query with its caller-supplied record query.
|
|
92
|
+
*/
|
|
93
|
+
kind: "direct";
|
|
94
|
+
/**
|
|
95
|
+
* Detached caller-supplied record query.
|
|
96
|
+
*/
|
|
97
|
+
query: Readonly<RecordQuery<unknown>>;
|
|
98
|
+
}> | Readonly<{
|
|
99
|
+
/**
|
|
100
|
+
* Direct Stand query with its normalized storage plan.
|
|
101
|
+
*/
|
|
102
|
+
kind: "direct";
|
|
103
|
+
/**
|
|
104
|
+
* Detached normalized storage plan.
|
|
105
|
+
*/
|
|
106
|
+
plan: Readonly<NormalizedQueryPlan<unknown>>;
|
|
107
|
+
}> | Readonly<{
|
|
108
|
+
/**
|
|
109
|
+
* Retained history read with its actual ID, page, or time input.
|
|
110
|
+
*/
|
|
111
|
+
kind: "history";
|
|
112
|
+
/**
|
|
113
|
+
* Captured retained-history request for the actual source.
|
|
114
|
+
*/
|
|
115
|
+
history: Readonly<{
|
|
116
|
+
/**
|
|
117
|
+
* State-at read of an Entity's retained snapshots.
|
|
118
|
+
*/
|
|
119
|
+
source: "entity-state-at";
|
|
120
|
+
/**
|
|
121
|
+
* Entity ID used for the retained read.
|
|
122
|
+
*/
|
|
123
|
+
entityId: unknown;
|
|
124
|
+
/**
|
|
125
|
+
* Latest permitted state timestamp.
|
|
126
|
+
*/
|
|
127
|
+
time: ReadonlyMessage<Timestamp>;
|
|
128
|
+
}> | Readonly<{
|
|
129
|
+
/**
|
|
130
|
+
* State or Event retained-history category.
|
|
131
|
+
*/
|
|
132
|
+
source: "entity-states" | "entity-events";
|
|
133
|
+
/**
|
|
134
|
+
* Entity ID used for the retained read.
|
|
135
|
+
*/
|
|
136
|
+
entityId: unknown;
|
|
137
|
+
/**
|
|
138
|
+
* Requested number of records.
|
|
139
|
+
*/
|
|
140
|
+
depth: number;
|
|
141
|
+
}> | Readonly<{
|
|
142
|
+
/**
|
|
143
|
+
* Indexed Agent history category.
|
|
144
|
+
*/
|
|
145
|
+
source: "agent";
|
|
146
|
+
/**
|
|
147
|
+
* Agent ID used for the retained read.
|
|
148
|
+
*/
|
|
149
|
+
entityId: unknown;
|
|
150
|
+
/**
|
|
151
|
+
* Selected Agent history view.
|
|
152
|
+
*/
|
|
153
|
+
view: ReadonlyMessage<AgentHistoryView>;
|
|
154
|
+
/**
|
|
155
|
+
* Captured page size and continuation.
|
|
156
|
+
*/
|
|
157
|
+
request: ReadonlyMessage<HistoryRead>;
|
|
158
|
+
}>;
|
|
159
|
+
}>;
|
|
160
|
+
/**
|
|
161
|
+
* Identifies the field and optional container position of a nested occurrence.
|
|
162
|
+
*/
|
|
163
|
+
export interface ReadSideField {
|
|
164
|
+
/**
|
|
165
|
+
* Protobuf field name containing this occurrence.
|
|
166
|
+
*/
|
|
167
|
+
readonly name: string;
|
|
168
|
+
/**
|
|
169
|
+
* Original repeated-field position, if this is a list element.
|
|
170
|
+
*/
|
|
171
|
+
readonly index?: number;
|
|
172
|
+
/**
|
|
173
|
+
* Map key, if this is a map value.
|
|
174
|
+
*/
|
|
175
|
+
readonly key?: string;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Invocation-local facts supplied to one read-side filter callback.
|
|
179
|
+
*/
|
|
180
|
+
export interface ReadSideContext extends TrustedReaderContext {
|
|
181
|
+
/**
|
|
182
|
+
* Actual operation that returned the domain message.
|
|
183
|
+
*/
|
|
184
|
+
readonly operation: ReadSideOperation;
|
|
185
|
+
/**
|
|
186
|
+
* Effective actor and tenant metadata; it is not authentication proof.
|
|
187
|
+
*/
|
|
188
|
+
readonly actorContext?: ReadonlyMessage<ActorContext>;
|
|
189
|
+
/**
|
|
190
|
+
* Effective tenant after admission, when the read is tenant-scoped.
|
|
191
|
+
*/
|
|
192
|
+
readonly effectiveTenant?: ReadonlyMessage<TenantId>;
|
|
193
|
+
/**
|
|
194
|
+
* Enclosing application query when a handler reads a child Entity.
|
|
195
|
+
*/
|
|
196
|
+
readonly enclosingAppQuery?: ReadonlyMessage<AppQuery>;
|
|
197
|
+
/**
|
|
198
|
+
* Bounded Context that produced this message, when applicable.
|
|
199
|
+
*/
|
|
200
|
+
readonly producingContext?: BoundedContext;
|
|
201
|
+
/**
|
|
202
|
+
* Cancellation of the current read or subscription delivery.
|
|
203
|
+
*/
|
|
204
|
+
readonly signal?: AbortSignal;
|
|
205
|
+
/**
|
|
206
|
+
* Detached read-only containing message for a nested occurrence.
|
|
207
|
+
*/
|
|
208
|
+
readonly parent?: ReadonlyMessage<Message>;
|
|
209
|
+
/**
|
|
210
|
+
* Field containing this nested occurrence.
|
|
211
|
+
*/
|
|
212
|
+
readonly field?: ReadSideField;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Typed application policy for one registered Proto message schema.
|
|
216
|
+
*
|
|
217
|
+
* @typeParam Schema Generated schema for the domain message being filtered.
|
|
218
|
+
*/
|
|
219
|
+
export declare abstract class ReadSideFilter<Schema extends GenMessage<Message>> {
|
|
220
|
+
/**
|
|
221
|
+
* Generated schema used for exact registered type-URL matching.
|
|
222
|
+
*/
|
|
223
|
+
readonly schema: Schema;
|
|
224
|
+
/**
|
|
225
|
+
* Whether this policy also examines occurrences below the returned root.
|
|
226
|
+
*/
|
|
227
|
+
readonly nested: boolean;
|
|
228
|
+
/**
|
|
229
|
+
* Binds the message type and optional nested occurrence matching.
|
|
230
|
+
*
|
|
231
|
+
* @param schema Generated schema of values passed to filter().
|
|
232
|
+
* @param options Enables nested matching when requested.
|
|
233
|
+
*/
|
|
234
|
+
protected constructor(schema: Schema, options?: Readonly<{
|
|
235
|
+
nested?: boolean;
|
|
236
|
+
}>);
|
|
237
|
+
/**
|
|
238
|
+
* Updates, replaces, or removes a detached domain message.
|
|
239
|
+
*
|
|
240
|
+
* @param message Mutable detached message of the declared schema.
|
|
241
|
+
* @param context Trusted invocation facts and optional containing snapshot.
|
|
242
|
+
* @returns Same-type message or null to remove this occurrence.
|
|
243
|
+
*/
|
|
244
|
+
abstract filter(message: MessageShape<Schema>, context: ReadSideContext): MessageShape<Schema> | null | Promise<MessageShape<Schema> | null>;
|
|
245
|
+
}
|
|
246
|
+
export {};
|
|
247
|
+
//# sourceMappingURL=read-side-filter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-side-filter.d.ts","sourceRoot":"","sources":["../../src/stand/read-side-filter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
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
|
+
/**
|
|
15
|
+
* Typed application policy for one registered Proto message schema.
|
|
16
|
+
*
|
|
17
|
+
* @typeParam Schema Generated schema for the domain message being filtered.
|
|
18
|
+
*/
|
|
19
|
+
export class ReadSideFilter {
|
|
20
|
+
/**
|
|
21
|
+
* Generated schema used for exact registered type-URL matching.
|
|
22
|
+
*/
|
|
23
|
+
schema;
|
|
24
|
+
/**
|
|
25
|
+
* Whether this policy also examines occurrences below the returned root.
|
|
26
|
+
*/
|
|
27
|
+
nested;
|
|
28
|
+
/**
|
|
29
|
+
* Binds the message type and optional nested occurrence matching.
|
|
30
|
+
*
|
|
31
|
+
* @param schema Generated schema of values passed to filter().
|
|
32
|
+
* @param options Enables nested matching when requested.
|
|
33
|
+
*/
|
|
34
|
+
constructor(schema, options = {}) {
|
|
35
|
+
this.schema = schema;
|
|
36
|
+
this.nested = options.nested === true;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=read-side-filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-side-filter.js","sourceRoot":"","sources":["../../src/stand/read-side-filter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAsQH;;;;GAIG;AACH,MAAM,OAAgB,cAAc;IAClC;;OAEG;IACM,MAAM,CAAS;IAExB;;OAEG;IACM,MAAM,CAAU;IAEzB;;;;;OAKG;IACH,YAAsB,MAAc,EAAE,UAA0C,EAAE;QAChF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC;IACxC,CAAC;CAaF"}
|