@methodts/runtime 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__fixtures__/executor-fixtures.d.ts +10 -0
- package/dist/__fixtures__/executor-fixtures.d.ts.map +1 -0
- package/dist/__fixtures__/executor-fixtures.js +36 -0
- package/dist/__fixtures__/executor-fixtures.js.map +1 -0
- package/dist/architecture.test.d.ts +2 -0
- package/dist/architecture.test.d.ts.map +1 -0
- package/dist/architecture.test.js +143 -0
- package/dist/architecture.test.js.map +1 -0
- package/dist/config/cost-governor-config.d.ts +40 -0
- package/dist/config/cost-governor-config.d.ts.map +1 -0
- package/dist/config/cost-governor-config.js +48 -0
- package/dist/config/cost-governor-config.js.map +1 -0
- package/dist/config/index.d.ts +7 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +6 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/sessions-config.d.ts +29 -0
- package/dist/config/sessions-config.d.ts.map +1 -0
- package/dist/config/sessions-config.js +37 -0
- package/dist/config/sessions-config.js.map +1 -0
- package/dist/config/strategies-config.d.ts +38 -0
- package/dist/config/strategies-config.d.ts.map +1 -0
- package/dist/config/strategies-config.js +41 -0
- package/dist/config/strategies-config.js.map +1 -0
- package/dist/cost-governor/backpressure-queue.d.ts +20 -0
- package/dist/cost-governor/backpressure-queue.d.ts.map +1 -0
- package/dist/cost-governor/backpressure-queue.js +78 -0
- package/dist/cost-governor/backpressure-queue.js.map +1 -0
- package/dist/cost-governor/backpressure-queue.test.d.ts +2 -0
- package/dist/cost-governor/backpressure-queue.test.d.ts.map +1 -0
- package/dist/cost-governor/backpressure-queue.test.js +48 -0
- package/dist/cost-governor/backpressure-queue.test.js.map +1 -0
- package/dist/cost-governor/cost-events.d.ts +65 -0
- package/dist/cost-governor/cost-events.d.ts.map +1 -0
- package/dist/cost-governor/cost-events.js +48 -0
- package/dist/cost-governor/cost-events.js.map +1 -0
- package/dist/cost-governor/cost-governor-app-id.test.d.ts +19 -0
- package/dist/cost-governor/cost-governor-app-id.test.d.ts.map +1 -0
- package/dist/cost-governor/cost-governor-app-id.test.js +201 -0
- package/dist/cost-governor/cost-governor-app-id.test.js.map +1 -0
- package/dist/cost-governor/cost-oracle-impl.d.ts +19 -0
- package/dist/cost-governor/cost-oracle-impl.d.ts.map +1 -0
- package/dist/cost-governor/cost-oracle-impl.js +52 -0
- package/dist/cost-governor/cost-oracle-impl.js.map +1 -0
- package/dist/cost-governor/estimator.d.ts +22 -0
- package/dist/cost-governor/estimator.d.ts.map +1 -0
- package/dist/cost-governor/estimator.js +119 -0
- package/dist/cost-governor/estimator.js.map +1 -0
- package/dist/cost-governor/estimator.test.d.ts +2 -0
- package/dist/cost-governor/estimator.test.d.ts.map +1 -0
- package/dist/cost-governor/estimator.test.js +141 -0
- package/dist/cost-governor/estimator.test.js.map +1 -0
- package/dist/cost-governor/index.d.ts +75 -0
- package/dist/cost-governor/index.d.ts.map +1 -0
- package/dist/cost-governor/index.js +120 -0
- package/dist/cost-governor/index.js.map +1 -0
- package/dist/cost-governor/observations-store.d.ts +49 -0
- package/dist/cost-governor/observations-store.d.ts.map +1 -0
- package/dist/cost-governor/observations-store.js +179 -0
- package/dist/cost-governor/observations-store.js.map +1 -0
- package/dist/cost-governor/observations-store.test.d.ts +2 -0
- package/dist/cost-governor/observations-store.test.d.ts.map +1 -0
- package/dist/cost-governor/observations-store.test.js +191 -0
- package/dist/cost-governor/observations-store.test.js.map +1 -0
- package/dist/cost-governor/percentile.d.ts +17 -0
- package/dist/cost-governor/percentile.d.ts.map +1 -0
- package/dist/cost-governor/percentile.js +33 -0
- package/dist/cost-governor/percentile.js.map +1 -0
- package/dist/cost-governor/percentile.test.d.ts +2 -0
- package/dist/cost-governor/percentile.test.d.ts.map +1 -0
- package/dist/cost-governor/percentile.test.js +46 -0
- package/dist/cost-governor/percentile.test.js.map +1 -0
- package/dist/cost-governor/rate-governor-impl.d.ts +73 -0
- package/dist/cost-governor/rate-governor-impl.d.ts.map +1 -0
- package/dist/cost-governor/rate-governor-impl.js +148 -0
- package/dist/cost-governor/rate-governor-impl.js.map +1 -0
- package/dist/cost-governor/signature-builder.d.ts +22 -0
- package/dist/cost-governor/signature-builder.d.ts.map +1 -0
- package/dist/cost-governor/signature-builder.js +43 -0
- package/dist/cost-governor/signature-builder.js.map +1 -0
- package/dist/cost-governor/signature-builder.test.d.ts +2 -0
- package/dist/cost-governor/signature-builder.test.d.ts.map +1 -0
- package/dist/cost-governor/signature-builder.test.js +58 -0
- package/dist/cost-governor/signature-builder.test.js.map +1 -0
- package/dist/cost-governor/token-bucket.d.ts +57 -0
- package/dist/cost-governor/token-bucket.d.ts.map +1 -0
- package/dist/cost-governor/token-bucket.js +109 -0
- package/dist/cost-governor/token-bucket.js.map +1 -0
- package/dist/cost-governor/token-bucket.test.d.ts +2 -0
- package/dist/cost-governor/token-bucket.test.d.ts.map +1 -0
- package/dist/cost-governor/token-bucket.test.js +67 -0
- package/dist/cost-governor/token-bucket.test.js.map +1 -0
- package/dist/dlq/cortex-dlq-observer.d.ts +22 -0
- package/dist/dlq/cortex-dlq-observer.d.ts.map +1 -0
- package/dist/dlq/cortex-dlq-observer.js +29 -0
- package/dist/dlq/cortex-dlq-observer.js.map +1 -0
- package/dist/dlq/dlq-observer.test.d.ts +8 -0
- package/dist/dlq/dlq-observer.test.d.ts.map +1 -0
- package/dist/dlq/dlq-observer.test.js +103 -0
- package/dist/dlq/dlq-observer.test.js.map +1 -0
- package/dist/dlq/index.d.ts +6 -0
- package/dist/dlq/index.d.ts.map +1 -0
- package/dist/dlq/index.js +6 -0
- package/dist/dlq/index.js.map +1 -0
- package/dist/event-bus/adapters.d.ts +50 -0
- package/dist/event-bus/adapters.d.ts.map +1 -0
- package/dist/event-bus/adapters.js +51 -0
- package/dist/event-bus/adapters.js.map +1 -0
- package/dist/event-bus/adapters.test.d.ts +5 -0
- package/dist/event-bus/adapters.test.d.ts.map +1 -0
- package/dist/event-bus/adapters.test.js +73 -0
- package/dist/event-bus/adapters.test.js.map +1 -0
- package/dist/event-bus/agent-event-adapter.d.ts +22 -0
- package/dist/event-bus/agent-event-adapter.d.ts.map +1 -0
- package/dist/event-bus/agent-event-adapter.js +49 -0
- package/dist/event-bus/agent-event-adapter.js.map +1 -0
- package/dist/event-bus/agent-event-adapter.test.d.ts +5 -0
- package/dist/event-bus/agent-event-adapter.test.d.ts.map +1 -0
- package/dist/event-bus/agent-event-adapter.test.js +170 -0
- package/dist/event-bus/agent-event-adapter.test.js.map +1 -0
- package/dist/event-bus/channel-sink.d.ts +71 -0
- package/dist/event-bus/channel-sink.d.ts.map +1 -0
- package/dist/event-bus/channel-sink.js +159 -0
- package/dist/event-bus/channel-sink.js.map +1 -0
- package/dist/event-bus/channel-sink.test.d.ts +5 -0
- package/dist/event-bus/channel-sink.test.d.ts.map +1 -0
- package/dist/event-bus/channel-sink.test.js +234 -0
- package/dist/event-bus/channel-sink.test.js.map +1 -0
- package/dist/event-bus/event-types.snapshot.test.d.ts +27 -0
- package/dist/event-bus/event-types.snapshot.test.d.ts.map +1 -0
- package/dist/event-bus/event-types.snapshot.test.js +165 -0
- package/dist/event-bus/event-types.snapshot.test.js.map +1 -0
- package/dist/event-bus/genesis-sink.d.ts +55 -0
- package/dist/event-bus/genesis-sink.d.ts.map +1 -0
- package/dist/event-bus/genesis-sink.js +141 -0
- package/dist/event-bus/genesis-sink.js.map +1 -0
- package/dist/event-bus/genesis-sink.test.d.ts +5 -0
- package/dist/event-bus/genesis-sink.test.d.ts.map +1 -0
- package/dist/event-bus/genesis-sink.test.js +160 -0
- package/dist/event-bus/genesis-sink.test.js.map +1 -0
- package/dist/event-bus/in-memory-event-bus.d.ts +60 -0
- package/dist/event-bus/in-memory-event-bus.d.ts.map +1 -0
- package/dist/event-bus/in-memory-event-bus.js +274 -0
- package/dist/event-bus/in-memory-event-bus.js.map +1 -0
- package/dist/event-bus/in-memory-event-bus.test.d.ts +5 -0
- package/dist/event-bus/in-memory-event-bus.test.d.ts.map +1 -0
- package/dist/event-bus/in-memory-event-bus.test.js +457 -0
- package/dist/event-bus/in-memory-event-bus.test.js.map +1 -0
- package/dist/event-bus/index.d.ts +22 -0
- package/dist/event-bus/index.d.ts.map +1 -0
- package/dist/event-bus/index.js +17 -0
- package/dist/event-bus/index.js.map +1 -0
- package/dist/event-bus/persistence-sink.d.ts +74 -0
- package/dist/event-bus/persistence-sink.d.ts.map +1 -0
- package/dist/event-bus/persistence-sink.js +193 -0
- package/dist/event-bus/persistence-sink.js.map +1 -0
- package/dist/event-bus/persistence-sink.test.d.ts +6 -0
- package/dist/event-bus/persistence-sink.test.d.ts.map +1 -0
- package/dist/event-bus/persistence-sink.test.js +319 -0
- package/dist/event-bus/persistence-sink.test.js.map +1 -0
- package/dist/event-bus/session-checkpoint-sink.d.ts +91 -0
- package/dist/event-bus/session-checkpoint-sink.d.ts.map +1 -0
- package/dist/event-bus/session-checkpoint-sink.js +107 -0
- package/dist/event-bus/session-checkpoint-sink.js.map +1 -0
- package/dist/event-bus/session-checkpoint-sink.test.d.ts +5 -0
- package/dist/event-bus/session-checkpoint-sink.test.d.ts.map +1 -0
- package/dist/event-bus/session-checkpoint-sink.test.js +215 -0
- package/dist/event-bus/session-checkpoint-sink.test.js.map +1 -0
- package/dist/event-bus/webhook-connector.d.ts +59 -0
- package/dist/event-bus/webhook-connector.d.ts.map +1 -0
- package/dist/event-bus/webhook-connector.js +191 -0
- package/dist/event-bus/webhook-connector.js.map +1 -0
- package/dist/event-bus/webhook-connector.test.d.ts +5 -0
- package/dist/event-bus/webhook-connector.test.d.ts.map +1 -0
- package/dist/event-bus/webhook-connector.test.js +214 -0
- package/dist/event-bus/webhook-connector.test.js.map +1 -0
- package/dist/executors/cortex-job-backed-executor.d.ts +137 -0
- package/dist/executors/cortex-job-backed-executor.d.ts.map +1 -0
- package/dist/executors/cortex-job-backed-executor.js +441 -0
- package/dist/executors/cortex-job-backed-executor.js.map +1 -0
- package/dist/executors/cortex-job-backed-executor.test.d.ts +13 -0
- package/dist/executors/cortex-job-backed-executor.test.d.ts.map +1 -0
- package/dist/executors/cortex-job-backed-executor.test.js +303 -0
- package/dist/executors/cortex-job-backed-executor.test.js.map +1 -0
- package/dist/executors/index.d.ts +9 -0
- package/dist/executors/index.d.ts.map +1 -0
- package/dist/executors/index.js +9 -0
- package/dist/executors/index.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/ports/checkpoint-sink.d.ts +69 -0
- package/dist/ports/checkpoint-sink.d.ts.map +1 -0
- package/dist/ports/checkpoint-sink.js +16 -0
- package/dist/ports/checkpoint-sink.js.map +1 -0
- package/dist/ports/checkpoint.d.ts +68 -0
- package/dist/ports/checkpoint.d.ts.map +1 -0
- package/dist/ports/checkpoint.js +14 -0
- package/dist/ports/checkpoint.js.map +1 -0
- package/dist/ports/continuation-envelope-cross-app.test.d.ts +10 -0
- package/dist/ports/continuation-envelope-cross-app.test.d.ts.map +1 -0
- package/dist/ports/continuation-envelope-cross-app.test.js +95 -0
- package/dist/ports/continuation-envelope-cross-app.test.js.map +1 -0
- package/dist/ports/continuation-envelope.d.ts +199 -0
- package/dist/ports/continuation-envelope.d.ts.map +1 -0
- package/dist/ports/continuation-envelope.js +69 -0
- package/dist/ports/continuation-envelope.js.map +1 -0
- package/dist/ports/conversation.d.ts +64 -0
- package/dist/ports/conversation.d.ts.map +1 -0
- package/dist/ports/conversation.js +19 -0
- package/dist/ports/conversation.js.map +1 -0
- package/dist/ports/cost-oracle.d.ts +26 -0
- package/dist/ports/cost-oracle.d.ts.map +1 -0
- package/dist/ports/cost-oracle.js +9 -0
- package/dist/ports/cost-oracle.js.map +1 -0
- package/dist/ports/cross-app-invoker.d.ts +198 -0
- package/dist/ports/cross-app-invoker.d.ts.map +1 -0
- package/dist/ports/cross-app-invoker.js +157 -0
- package/dist/ports/cross-app-invoker.js.map +1 -0
- package/dist/ports/dlq-observer.d.ts +40 -0
- package/dist/ports/dlq-observer.d.ts.map +1 -0
- package/dist/ports/dlq-observer.js +20 -0
- package/dist/ports/dlq-observer.js.map +1 -0
- package/dist/ports/event-bus.d.ts +169 -0
- package/dist/ports/event-bus.d.ts.map +1 -0
- package/dist/ports/event-bus.js +20 -0
- package/dist/ports/event-bus.js.map +1 -0
- package/dist/ports/event-reader.d.ts +21 -0
- package/dist/ports/event-reader.d.ts.map +1 -0
- package/dist/ports/event-reader.js +12 -0
- package/dist/ports/event-reader.js.map +1 -0
- package/dist/ports/event-rotator.d.ts +39 -0
- package/dist/ports/event-rotator.d.ts.map +1 -0
- package/dist/ports/event-rotator.js +15 -0
- package/dist/ports/event-rotator.js.map +1 -0
- package/dist/ports/file-system.d.ts +48 -0
- package/dist/ports/file-system.d.ts.map +1 -0
- package/dist/ports/file-system.js +10 -0
- package/dist/ports/file-system.js.map +1 -0
- package/dist/ports/historical-observations.d.ts +39 -0
- package/dist/ports/historical-observations.d.ts.map +1 -0
- package/dist/ports/historical-observations.js +12 -0
- package/dist/ports/historical-observations.js.map +1 -0
- package/dist/ports/in-memory-source.d.ts +46 -0
- package/dist/ports/in-memory-source.d.ts.map +1 -0
- package/dist/ports/in-memory-source.js +69 -0
- package/dist/ports/in-memory-source.js.map +1 -0
- package/dist/ports/index.d.ts +32 -0
- package/dist/ports/index.d.ts.map +1 -0
- package/dist/ports/index.js +10 -0
- package/dist/ports/index.js.map +1 -0
- package/dist/ports/job-backed-executor.d.ts +139 -0
- package/dist/ports/job-backed-executor.d.ts.map +1 -0
- package/dist/ports/job-backed-executor.js +56 -0
- package/dist/ports/job-backed-executor.js.map +1 -0
- package/dist/ports/methodology-source.d.ts +95 -0
- package/dist/ports/methodology-source.d.ts.map +1 -0
- package/dist/ports/methodology-source.js +26 -0
- package/dist/ports/methodology-source.js.map +1 -0
- package/dist/ports/native-session-discovery.d.ts +20 -0
- package/dist/ports/native-session-discovery.d.ts.map +1 -0
- package/dist/ports/native-session-discovery.js +13 -0
- package/dist/ports/native-session-discovery.js.map +1 -0
- package/dist/ports/projection-store.d.ts +48 -0
- package/dist/ports/projection-store.d.ts.map +1 -0
- package/dist/ports/projection-store.js +17 -0
- package/dist/ports/projection-store.js.map +1 -0
- package/dist/ports/projection.d.ts +29 -0
- package/dist/ports/projection.d.ts.map +1 -0
- package/dist/ports/projection.js +13 -0
- package/dist/ports/projection.js.map +1 -0
- package/dist/ports/rate-governor.d.ts +17 -0
- package/dist/ports/rate-governor.d.ts.map +1 -0
- package/dist/ports/rate-governor.js +11 -0
- package/dist/ports/rate-governor.js.map +1 -0
- package/dist/ports/schedule-client.d.ts +29 -0
- package/dist/ports/schedule-client.d.ts.map +1 -0
- package/dist/ports/schedule-client.js +2 -0
- package/dist/ports/schedule-client.js.map +1 -0
- package/dist/ports/session-pool.d.ts +162 -0
- package/dist/ports/session-pool.d.ts.map +1 -0
- package/dist/ports/session-pool.js +21 -0
- package/dist/ports/session-pool.js.map +1 -0
- package/dist/ports/session-store-errors.d.ts +22 -0
- package/dist/ports/session-store-errors.d.ts.map +1 -0
- package/dist/ports/session-store-errors.js +29 -0
- package/dist/ports/session-store-errors.js.map +1 -0
- package/dist/ports/session-store-types.d.ts +132 -0
- package/dist/ports/session-store-types.d.ts.map +1 -0
- package/dist/ports/session-store-types.js +14 -0
- package/dist/ports/session-store-types.js.map +1 -0
- package/dist/ports/session-store.d.ts +69 -0
- package/dist/ports/session-store.d.ts.map +1 -0
- package/dist/ports/session-store.js +23 -0
- package/dist/ports/session-store.js.map +1 -0
- package/dist/ports/yaml-loader.d.ts +15 -0
- package/dist/ports/yaml-loader.d.ts.map +1 -0
- package/dist/ports/yaml-loader.js +13 -0
- package/dist/ports/yaml-loader.js.map +1 -0
- package/dist/scheduling/index.d.ts +6 -0
- package/dist/scheduling/index.d.ts.map +1 -0
- package/dist/scheduling/index.js +6 -0
- package/dist/scheduling/index.js.map +1 -0
- package/dist/scheduling/scheduled-pact.d.ts +97 -0
- package/dist/scheduling/scheduled-pact.d.ts.map +1 -0
- package/dist/scheduling/scheduled-pact.js +89 -0
- package/dist/scheduling/scheduled-pact.js.map +1 -0
- package/dist/sessions/__tests__/cognitive-modules.test.d.ts +10 -0
- package/dist/sessions/__tests__/cognitive-modules.test.d.ts.map +1 -0
- package/dist/sessions/__tests__/cognitive-modules.test.js +535 -0
- package/dist/sessions/__tests__/cognitive-modules.test.js.map +1 -0
- package/dist/sessions/__tests__/cognitive-provider.test.d.ts +13 -0
- package/dist/sessions/__tests__/cognitive-provider.test.d.ts.map +1 -0
- package/dist/sessions/__tests__/cognitive-provider.test.js +331 -0
- package/dist/sessions/__tests__/cognitive-provider.test.js.map +1 -0
- package/dist/sessions/__tests__/cognitive-sink.test.d.ts +19 -0
- package/dist/sessions/__tests__/cognitive-sink.test.d.ts.map +1 -0
- package/dist/sessions/__tests__/cognitive-sink.test.js +334 -0
- package/dist/sessions/__tests__/cognitive-sink.test.js.map +1 -0
- package/dist/sessions/__tests__/runtime-tools.test.d.ts +2 -0
- package/dist/sessions/__tests__/runtime-tools.test.d.ts.map +1 -0
- package/dist/sessions/__tests__/runtime-tools.test.js +83 -0
- package/dist/sessions/__tests__/runtime-tools.test.js.map +1 -0
- package/dist/sessions/auto-retro.d.ts +29 -0
- package/dist/sessions/auto-retro.d.ts.map +1 -0
- package/dist/sessions/auto-retro.js +181 -0
- package/dist/sessions/auto-retro.js.map +1 -0
- package/dist/sessions/auto-retro.test.d.ts +2 -0
- package/dist/sessions/auto-retro.test.d.ts.map +1 -0
- package/dist/sessions/auto-retro.test.js +361 -0
- package/dist/sessions/auto-retro.test.js.map +1 -0
- package/dist/sessions/channels.d.ts +55 -0
- package/dist/sessions/channels.d.ts.map +1 -0
- package/dist/sessions/channels.js +118 -0
- package/dist/sessions/channels.js.map +1 -0
- package/dist/sessions/channels.test.d.ts +2 -0
- package/dist/sessions/channels.test.d.ts.map +1 -0
- package/dist/sessions/channels.test.js +285 -0
- package/dist/sessions/channels.test.js.map +1 -0
- package/dist/sessions/cognitive-modules.d.ts +100 -0
- package/dist/sessions/cognitive-modules.d.ts.map +1 -0
- package/dist/sessions/cognitive-modules.js +458 -0
- package/dist/sessions/cognitive-modules.js.map +1 -0
- package/dist/sessions/cognitive-provider.d.ts +42 -0
- package/dist/sessions/cognitive-provider.d.ts.map +1 -0
- package/dist/sessions/cognitive-provider.js +208 -0
- package/dist/sessions/cognitive-provider.js.map +1 -0
- package/dist/sessions/cognitive-sink.d.ts +73 -0
- package/dist/sessions/cognitive-sink.d.ts.map +1 -0
- package/dist/sessions/cognitive-sink.js +154 -0
- package/dist/sessions/cognitive-sink.js.map +1 -0
- package/dist/sessions/diagnostics.d.ts +70 -0
- package/dist/sessions/diagnostics.d.ts.map +1 -0
- package/dist/sessions/diagnostics.js +129 -0
- package/dist/sessions/diagnostics.js.map +1 -0
- package/dist/sessions/diagnostics.test.d.ts +2 -0
- package/dist/sessions/diagnostics.test.d.ts.map +1 -0
- package/dist/sessions/diagnostics.test.js +135 -0
- package/dist/sessions/diagnostics.test.js.map +1 -0
- package/dist/sessions/index.d.ts +32 -0
- package/dist/sessions/index.d.ts.map +1 -0
- package/dist/sessions/index.js +33 -0
- package/dist/sessions/index.js.map +1 -0
- package/dist/sessions/pool.d.ts +218 -0
- package/dist/sessions/pool.d.ts.map +1 -0
- package/dist/sessions/pool.js +991 -0
- package/dist/sessions/pool.js.map +1 -0
- package/dist/sessions/pool.test.d.ts +2 -0
- package/dist/sessions/pool.test.d.ts.map +1 -0
- package/dist/sessions/pool.test.js +633 -0
- package/dist/sessions/pool.test.js.map +1 -0
- package/dist/sessions/print-session.d.ts +142 -0
- package/dist/sessions/print-session.d.ts.map +1 -0
- package/dist/sessions/print-session.js +325 -0
- package/dist/sessions/print-session.js.map +1 -0
- package/dist/sessions/print-session.test.d.ts +2 -0
- package/dist/sessions/print-session.test.d.ts.map +1 -0
- package/dist/sessions/print-session.test.js +418 -0
- package/dist/sessions/print-session.test.js.map +1 -0
- package/dist/sessions/runtime-tools.d.ts +22 -0
- package/dist/sessions/runtime-tools.d.ts.map +1 -0
- package/dist/sessions/runtime-tools.js +162 -0
- package/dist/sessions/runtime-tools.js.map +1 -0
- package/dist/sessions/scope-hook.d.ts +77 -0
- package/dist/sessions/scope-hook.d.ts.map +1 -0
- package/dist/sessions/scope-hook.js +323 -0
- package/dist/sessions/scope-hook.js.map +1 -0
- package/dist/sessions/scope-hook.test.d.ts +2 -0
- package/dist/sessions/scope-hook.test.d.ts.map +1 -0
- package/dist/sessions/scope-hook.test.js +249 -0
- package/dist/sessions/scope-hook.test.js.map +1 -0
- package/dist/sessions/session-store/checkpoint-sink-impl.d.ts +16 -0
- package/dist/sessions/session-store/checkpoint-sink-impl.d.ts.map +1 -0
- package/dist/sessions/session-store/checkpoint-sink-impl.js +191 -0
- package/dist/sessions/session-store/checkpoint-sink-impl.js.map +1 -0
- package/dist/sessions/session-store/checkpoint-sink-impl.test.d.ts +5 -0
- package/dist/sessions/session-store/checkpoint-sink-impl.test.d.ts.map +1 -0
- package/dist/sessions/session-store/checkpoint-sink-impl.test.js +137 -0
- package/dist/sessions/session-store/checkpoint-sink-impl.test.js.map +1 -0
- package/dist/sessions/session-store/conformance.d.ts +59 -0
- package/dist/sessions/session-store/conformance.d.ts.map +1 -0
- package/dist/sessions/session-store/conformance.js +172 -0
- package/dist/sessions/session-store/conformance.js.map +1 -0
- package/dist/sessions/session-store/conformance.test.d.ts +7 -0
- package/dist/sessions/session-store/conformance.test.d.ts.map +1 -0
- package/dist/sessions/session-store/conformance.test.js +22 -0
- package/dist/sessions/session-store/conformance.test.js.map +1 -0
- package/dist/sessions/session-store/in-memory-session-store.d.ts +23 -0
- package/dist/sessions/session-store/in-memory-session-store.d.ts.map +1 -0
- package/dist/sessions/session-store/in-memory-session-store.js +197 -0
- package/dist/sessions/session-store/in-memory-session-store.js.map +1 -0
- package/dist/sessions/session-store/in-memory-session-store.test.d.ts +6 -0
- package/dist/sessions/session-store/in-memory-session-store.test.d.ts.map +1 -0
- package/dist/sessions/session-store/in-memory-session-store.test.js +183 -0
- package/dist/sessions/session-store/in-memory-session-store.test.js.map +1 -0
- package/dist/sessions/session-store/index.d.ts +20 -0
- package/dist/sessions/session-store/index.d.ts.map +1 -0
- package/dist/sessions/session-store/index.js +15 -0
- package/dist/sessions/session-store/index.js.map +1 -0
- package/dist/sessions/session-store/resume.d.ts +88 -0
- package/dist/sessions/session-store/resume.d.ts.map +1 -0
- package/dist/sessions/session-store/resume.js +96 -0
- package/dist/sessions/session-store/resume.js.map +1 -0
- package/dist/sessions/session-store/resume.test.d.ts +5 -0
- package/dist/sessions/session-store/resume.test.d.ts.map +1 -0
- package/dist/sessions/session-store/resume.test.js +119 -0
- package/dist/sessions/session-store/resume.test.js.map +1 -0
- package/dist/sessions/spawn-queue.d.ts +28 -0
- package/dist/sessions/spawn-queue.d.ts.map +1 -0
- package/dist/sessions/spawn-queue.js +63 -0
- package/dist/sessions/spawn-queue.js.map +1 -0
- package/dist/sessions/spawn-queue.test.d.ts +2 -0
- package/dist/sessions/spawn-queue.test.d.ts.map +1 -0
- package/dist/sessions/spawn-queue.test.js +65 -0
- package/dist/sessions/spawn-queue.test.js.map +1 -0
- package/dist/sessions/types.d.ts +16 -0
- package/dist/sessions/types.d.ts.map +1 -0
- package/dist/sessions/types.js +11 -0
- package/dist/sessions/types.js.map +1 -0
- package/dist/sessions/worktree-stale.test.d.ts +2 -0
- package/dist/sessions/worktree-stale.test.d.ts.map +1 -0
- package/dist/sessions/worktree-stale.test.js +468 -0
- package/dist/sessions/worktree-stale.test.js.map +1 -0
- package/dist/strategy/artifact-store.d.ts +12 -0
- package/dist/strategy/artifact-store.d.ts.map +1 -0
- package/dist/strategy/artifact-store.js +12 -0
- package/dist/strategy/artifact-store.js.map +1 -0
- package/dist/strategy/artifact-store.test.d.ts +2 -0
- package/dist/strategy/artifact-store.test.d.ts.map +1 -0
- package/dist/strategy/artifact-store.test.js +170 -0
- package/dist/strategy/artifact-store.test.js.map +1 -0
- package/dist/strategy/context-load-executor.d.ts +23 -0
- package/dist/strategy/context-load-executor.d.ts.map +1 -0
- package/dist/strategy/context-load-executor.js +87 -0
- package/dist/strategy/context-load-executor.js.map +1 -0
- package/dist/strategy/context-load-executor.test.d.ts +16 -0
- package/dist/strategy/context-load-executor.test.d.ts.map +1 -0
- package/dist/strategy/context-load-executor.test.js +158 -0
- package/dist/strategy/context-load-executor.test.js.map +1 -0
- package/dist/strategy/cortex-cross-app-invoker.stub.d.ts +65 -0
- package/dist/strategy/cortex-cross-app-invoker.stub.d.ts.map +1 -0
- package/dist/strategy/cortex-cross-app-invoker.stub.js +68 -0
- package/dist/strategy/cortex-cross-app-invoker.stub.js.map +1 -0
- package/dist/strategy/cross-app-node-executor.d.ts +54 -0
- package/dist/strategy/cross-app-node-executor.d.ts.map +1 -0
- package/dist/strategy/cross-app-node-executor.js +98 -0
- package/dist/strategy/cross-app-node-executor.js.map +1 -0
- package/dist/strategy/cross-app-node-executor.test.d.ts +13 -0
- package/dist/strategy/cross-app-node-executor.test.d.ts.map +1 -0
- package/dist/strategy/cross-app-node-executor.test.js +160 -0
- package/dist/strategy/cross-app-node-executor.test.js.map +1 -0
- package/dist/strategy/gates.d.ts +13 -0
- package/dist/strategy/gates.d.ts.map +1 -0
- package/dist/strategy/gates.js +13 -0
- package/dist/strategy/gates.js.map +1 -0
- package/dist/strategy/gates.test.d.ts +2 -0
- package/dist/strategy/gates.test.d.ts.map +1 -0
- package/dist/strategy/gates.test.js +299 -0
- package/dist/strategy/gates.test.js.map +1 -0
- package/dist/strategy/human-approval-resolver.d.ts +23 -0
- package/dist/strategy/human-approval-resolver.d.ts.map +1 -0
- package/dist/strategy/human-approval-resolver.js +94 -0
- package/dist/strategy/human-approval-resolver.js.map +1 -0
- package/dist/strategy/human-approval-resolver.test.d.ts +16 -0
- package/dist/strategy/human-approval-resolver.test.d.ts.map +1 -0
- package/dist/strategy/human-approval-resolver.test.js +200 -0
- package/dist/strategy/human-approval-resolver.test.js.map +1 -0
- package/dist/strategy/in-process-cross-app-invoker.d.ts +105 -0
- package/dist/strategy/in-process-cross-app-invoker.d.ts.map +1 -0
- package/dist/strategy/in-process-cross-app-invoker.js +206 -0
- package/dist/strategy/in-process-cross-app-invoker.js.map +1 -0
- package/dist/strategy/in-process-cross-app-invoker.test.d.ts +15 -0
- package/dist/strategy/in-process-cross-app-invoker.test.d.ts.map +1 -0
- package/dist/strategy/in-process-cross-app-invoker.test.js +190 -0
- package/dist/strategy/in-process-cross-app-invoker.test.js.map +1 -0
- package/dist/strategy/index.d.ts +29 -0
- package/dist/strategy/index.d.ts.map +1 -0
- package/dist/strategy/index.js +29 -0
- package/dist/strategy/index.js.map +1 -0
- package/dist/strategy/pacta-strategy.d.ts +97 -0
- package/dist/strategy/pacta-strategy.d.ts.map +1 -0
- package/dist/strategy/pacta-strategy.js +117 -0
- package/dist/strategy/pacta-strategy.js.map +1 -0
- package/dist/strategy/pacta-strategy.test.d.ts +2 -0
- package/dist/strategy/pacta-strategy.test.d.ts.map +1 -0
- package/dist/strategy/pacta-strategy.test.js +234 -0
- package/dist/strategy/pacta-strategy.test.js.map +1 -0
- package/dist/strategy/retro-generator.d.ts +18 -0
- package/dist/strategy/retro-generator.d.ts.map +1 -0
- package/dist/strategy/retro-generator.js +22 -0
- package/dist/strategy/retro-generator.js.map +1 -0
- package/dist/strategy/retro-writer.d.ts +25 -0
- package/dist/strategy/retro-writer.d.ts.map +1 -0
- package/dist/strategy/retro-writer.js +65 -0
- package/dist/strategy/retro-writer.js.map +1 -0
- package/dist/strategy/strategy-executor.d.ts +39 -0
- package/dist/strategy/strategy-executor.d.ts.map +1 -0
- package/dist/strategy/strategy-executor.js +253 -0
- package/dist/strategy/strategy-executor.js.map +1 -0
- package/dist/strategy/strategy-executor.test.d.ts +8 -0
- package/dist/strategy/strategy-executor.test.d.ts.map +1 -0
- package/dist/strategy/strategy-executor.test.js +1301 -0
- package/dist/strategy/strategy-executor.test.js.map +1 -0
- package/dist/strategy/strategy-parser.d.ts +30 -0
- package/dist/strategy/strategy-parser.d.ts.map +1 -0
- package/dist/strategy/strategy-parser.js +30 -0
- package/dist/strategy/strategy-parser.js.map +1 -0
- package/dist/strategy/sub-strategy-source.d.ts +27 -0
- package/dist/strategy/sub-strategy-source.d.ts.map +1 -0
- package/dist/strategy/sub-strategy-source.js +77 -0
- package/dist/strategy/sub-strategy-source.js.map +1 -0
- package/dist/strategy/types.d.ts +12 -0
- package/dist/strategy/types.d.ts.map +1 -0
- package/dist/strategy/types.js +9 -0
- package/dist/strategy/types.js.map +1 -0
- package/package.json +87 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"in-memory-event-bus.js","sourceRoot":"","sources":["../../src/event-bus/in-memory-event-bus.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"in-memory-event-bus.test.d.ts","sourceRoot":"","sources":["../../src/event-bus/in-memory-event-bus.test.ts"],"names":[],"mappings":"AACA;;GAEG"}
|
|
@@ -0,0 +1,457 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
/**
|
|
3
|
+
* Unit tests for InMemoryEventBus (PRD 026).
|
|
4
|
+
*/
|
|
5
|
+
import { describe, it, beforeEach } from 'node:test';
|
|
6
|
+
import assert from 'node:assert/strict';
|
|
7
|
+
import { InMemoryEventBus } from './in-memory-event-bus.js';
|
|
8
|
+
// ── Test helpers ────────────────────────────────────────────────
|
|
9
|
+
function makeEvent(overrides = {}) {
|
|
10
|
+
return {
|
|
11
|
+
version: 1,
|
|
12
|
+
domain: 'session',
|
|
13
|
+
type: 'session.spawned',
|
|
14
|
+
severity: 'info',
|
|
15
|
+
payload: { test: true },
|
|
16
|
+
source: 'test',
|
|
17
|
+
...overrides,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function collectingSink(name = 'test-sink') {
|
|
21
|
+
const events = [];
|
|
22
|
+
return {
|
|
23
|
+
name,
|
|
24
|
+
events,
|
|
25
|
+
onEvent(event) { events.push(event); },
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
// ── Tests ───────────────────────────────────────────────────────
|
|
29
|
+
describe('InMemoryEventBus', () => {
|
|
30
|
+
let bus;
|
|
31
|
+
beforeEach(() => {
|
|
32
|
+
bus = new InMemoryEventBus();
|
|
33
|
+
});
|
|
34
|
+
describe('emit', () => {
|
|
35
|
+
it('assigns id, timestamp, and monotonic sequence', () => {
|
|
36
|
+
const e1 = bus.emit(makeEvent());
|
|
37
|
+
const e2 = bus.emit(makeEvent());
|
|
38
|
+
assert.ok(e1.id, 'event should have an id');
|
|
39
|
+
assert.ok(e1.timestamp, 'event should have a timestamp');
|
|
40
|
+
assert.equal(e1.version, 1);
|
|
41
|
+
assert.equal(e1.sequence, 1);
|
|
42
|
+
assert.equal(e2.sequence, 2);
|
|
43
|
+
assert.notEqual(e1.id, e2.id, 'each event should have a unique id');
|
|
44
|
+
});
|
|
45
|
+
it('preserves all input fields', () => {
|
|
46
|
+
const input = makeEvent({
|
|
47
|
+
domain: 'strategy',
|
|
48
|
+
type: 'strategy.started',
|
|
49
|
+
severity: 'warning',
|
|
50
|
+
projectId: 'proj-1',
|
|
51
|
+
sessionId: 'sess-1',
|
|
52
|
+
payload: { node: 'gate-check' },
|
|
53
|
+
source: 'bridge/strategies',
|
|
54
|
+
correlationId: 'exec-123',
|
|
55
|
+
});
|
|
56
|
+
const event = bus.emit(input);
|
|
57
|
+
assert.equal(event.domain, 'strategy');
|
|
58
|
+
assert.equal(event.type, 'strategy.started');
|
|
59
|
+
assert.equal(event.severity, 'warning');
|
|
60
|
+
assert.equal(event.projectId, 'proj-1');
|
|
61
|
+
assert.equal(event.sessionId, 'sess-1');
|
|
62
|
+
assert.deepEqual(event.payload, { node: 'gate-check' });
|
|
63
|
+
assert.equal(event.source, 'bridge/strategies');
|
|
64
|
+
assert.equal(event.correlationId, 'exec-123');
|
|
65
|
+
});
|
|
66
|
+
it('rejects payloads exceeding 64KB', () => {
|
|
67
|
+
const largePayload = { data: 'x'.repeat(70_000) };
|
|
68
|
+
const event = bus.emit(makeEvent({ payload: largePayload }));
|
|
69
|
+
// Should return a system.bus_error event instead
|
|
70
|
+
assert.equal(event.type, 'system.bus_error');
|
|
71
|
+
assert.equal(event.domain, 'system');
|
|
72
|
+
assert.equal(event.payload.error, 'payload_too_large');
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
describe('sinks', () => {
|
|
76
|
+
it('dispatches events to registered sinks', () => {
|
|
77
|
+
const sink = collectingSink();
|
|
78
|
+
bus.registerSink(sink);
|
|
79
|
+
bus.emit(makeEvent());
|
|
80
|
+
bus.emit(makeEvent({ type: 'session.killed' }));
|
|
81
|
+
assert.equal(sink.events.length, 2);
|
|
82
|
+
assert.equal(sink.events[0].type, 'session.spawned');
|
|
83
|
+
assert.equal(sink.events[1].type, 'session.killed');
|
|
84
|
+
});
|
|
85
|
+
it('sink errors do not block other sinks', () => {
|
|
86
|
+
const errorSink = {
|
|
87
|
+
name: 'bad-sink',
|
|
88
|
+
onEvent() { throw new Error('sink failure'); },
|
|
89
|
+
onError() { },
|
|
90
|
+
};
|
|
91
|
+
const goodSink = collectingSink('good-sink');
|
|
92
|
+
bus.registerSink(errorSink);
|
|
93
|
+
bus.registerSink(goodSink);
|
|
94
|
+
bus.emit(makeEvent());
|
|
95
|
+
assert.equal(goodSink.events.length, 1, 'good sink should still receive the event');
|
|
96
|
+
});
|
|
97
|
+
it('calls onError when sync sink throws', () => {
|
|
98
|
+
const errors = [];
|
|
99
|
+
const sink = {
|
|
100
|
+
name: 'error-sink',
|
|
101
|
+
onEvent() { throw new Error('test error'); },
|
|
102
|
+
onError(err) { errors.push(err); },
|
|
103
|
+
};
|
|
104
|
+
bus.registerSink(sink);
|
|
105
|
+
bus.emit(makeEvent());
|
|
106
|
+
assert.equal(errors.length, 1, 'onError should have been called');
|
|
107
|
+
assert.equal(errors[0].message, 'test error');
|
|
108
|
+
});
|
|
109
|
+
it('calls onError when async sink rejects', async () => {
|
|
110
|
+
const errors = [];
|
|
111
|
+
const sink = {
|
|
112
|
+
name: 'async-error-sink',
|
|
113
|
+
onEvent() { return Promise.reject(new Error('async failure')); },
|
|
114
|
+
onError(err) { errors.push(err); },
|
|
115
|
+
};
|
|
116
|
+
bus.registerSink(sink);
|
|
117
|
+
bus.emit(makeEvent());
|
|
118
|
+
// Allow microtask queue to flush for async error handling
|
|
119
|
+
await new Promise(resolve => setTimeout(resolve, 10));
|
|
120
|
+
assert.equal(errors.length, 1, 'onError should have been called for async rejection');
|
|
121
|
+
assert.equal(errors[0].message, 'async failure');
|
|
122
|
+
});
|
|
123
|
+
it('async sink rejection does not block other sinks', async () => {
|
|
124
|
+
const goodSink = collectingSink('good-async');
|
|
125
|
+
const badSink = {
|
|
126
|
+
name: 'bad-async',
|
|
127
|
+
onEvent() { return Promise.reject(new Error('boom')); },
|
|
128
|
+
};
|
|
129
|
+
bus.registerSink(badSink);
|
|
130
|
+
bus.registerSink(goodSink);
|
|
131
|
+
bus.emit(makeEvent());
|
|
132
|
+
await new Promise(resolve => setTimeout(resolve, 10));
|
|
133
|
+
assert.equal(goodSink.events.length, 1, 'good sink should still receive the event');
|
|
134
|
+
});
|
|
135
|
+
it('async sink that resolves works normally', async () => {
|
|
136
|
+
const received = [];
|
|
137
|
+
const asyncSink = {
|
|
138
|
+
name: 'async-sink',
|
|
139
|
+
async onEvent(event) { received.push(event); },
|
|
140
|
+
};
|
|
141
|
+
bus.registerSink(asyncSink);
|
|
142
|
+
bus.emit(makeEvent());
|
|
143
|
+
await new Promise(resolve => setTimeout(resolve, 10));
|
|
144
|
+
assert.equal(received.length, 1);
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
describe('subscribe', () => {
|
|
148
|
+
it('delivers matching events to subscriber', () => {
|
|
149
|
+
const received = [];
|
|
150
|
+
bus.subscribe({ domain: 'session' }, (event) => received.push(event));
|
|
151
|
+
bus.emit(makeEvent({ domain: 'session', type: 'session.spawned' }));
|
|
152
|
+
bus.emit(makeEvent({ domain: 'strategy', type: 'strategy.started' }));
|
|
153
|
+
assert.equal(received.length, 1);
|
|
154
|
+
assert.equal(received[0].type, 'session.spawned');
|
|
155
|
+
});
|
|
156
|
+
it('supports unsubscribe', () => {
|
|
157
|
+
const received = [];
|
|
158
|
+
const sub = bus.subscribe({}, (event) => received.push(event));
|
|
159
|
+
bus.emit(makeEvent());
|
|
160
|
+
sub.unsubscribe();
|
|
161
|
+
bus.emit(makeEvent());
|
|
162
|
+
assert.equal(received.length, 1);
|
|
163
|
+
});
|
|
164
|
+
it('filters by type with glob pattern', () => {
|
|
165
|
+
const received = [];
|
|
166
|
+
bus.subscribe({ type: 'strategy.gate_*' }, (event) => received.push(event));
|
|
167
|
+
bus.emit(makeEvent({ type: 'strategy.gate_passed' }));
|
|
168
|
+
bus.emit(makeEvent({ type: 'strategy.gate_failed' }));
|
|
169
|
+
bus.emit(makeEvent({ type: 'strategy.started' }));
|
|
170
|
+
assert.equal(received.length, 2);
|
|
171
|
+
assert.equal(received[0].type, 'strategy.gate_passed');
|
|
172
|
+
assert.equal(received[1].type, 'strategy.gate_failed');
|
|
173
|
+
});
|
|
174
|
+
it('filters by severity array', () => {
|
|
175
|
+
const received = [];
|
|
176
|
+
bus.subscribe({ severity: ['error', 'critical'] }, (event) => received.push(event));
|
|
177
|
+
bus.emit(makeEvent({ severity: 'info' }));
|
|
178
|
+
bus.emit(makeEvent({ severity: 'error' }));
|
|
179
|
+
bus.emit(makeEvent({ severity: 'critical' }));
|
|
180
|
+
assert.equal(received.length, 2);
|
|
181
|
+
});
|
|
182
|
+
it('filters by projectId and sessionId', () => {
|
|
183
|
+
const received = [];
|
|
184
|
+
bus.subscribe({ projectId: 'p1', sessionId: 's1' }, (event) => received.push(event));
|
|
185
|
+
bus.emit(makeEvent({ projectId: 'p1', sessionId: 's1' }));
|
|
186
|
+
bus.emit(makeEvent({ projectId: 'p1', sessionId: 's2' }));
|
|
187
|
+
bus.emit(makeEvent({ projectId: 'p2', sessionId: 's1' }));
|
|
188
|
+
assert.equal(received.length, 1);
|
|
189
|
+
});
|
|
190
|
+
it('subscriber errors do not block other subscribers', () => {
|
|
191
|
+
const received = [];
|
|
192
|
+
bus.subscribe({}, () => { throw new Error('bad subscriber'); });
|
|
193
|
+
bus.subscribe({}, (event) => received.push(event));
|
|
194
|
+
bus.emit(makeEvent());
|
|
195
|
+
assert.equal(received.length, 1);
|
|
196
|
+
});
|
|
197
|
+
it('unsubscribe during dispatch does not skip other subscribers', () => {
|
|
198
|
+
const received = [];
|
|
199
|
+
const sub1 = bus.subscribe({}, () => {
|
|
200
|
+
received.push('sub1');
|
|
201
|
+
sub1.unsubscribe(); // unsubscribe self during dispatch
|
|
202
|
+
});
|
|
203
|
+
bus.subscribe({}, () => received.push('sub2'));
|
|
204
|
+
bus.subscribe({}, () => received.push('sub3'));
|
|
205
|
+
bus.emit(makeEvent());
|
|
206
|
+
assert.ok(received.includes('sub1'), 'sub1 should have been called');
|
|
207
|
+
assert.ok(received.includes('sub2'), 'sub2 should have been called');
|
|
208
|
+
assert.ok(received.includes('sub3'), 'sub3 should have been called');
|
|
209
|
+
});
|
|
210
|
+
});
|
|
211
|
+
describe('query', () => {
|
|
212
|
+
it('returns events matching filter', () => {
|
|
213
|
+
bus.emit(makeEvent({ domain: 'session', type: 'session.spawned' }));
|
|
214
|
+
bus.emit(makeEvent({ domain: 'strategy', type: 'strategy.started' }));
|
|
215
|
+
bus.emit(makeEvent({ domain: 'session', type: 'session.killed' }));
|
|
216
|
+
const results = bus.query({ domain: 'session' });
|
|
217
|
+
assert.equal(results.length, 2);
|
|
218
|
+
assert.equal(results[0].type, 'session.spawned');
|
|
219
|
+
assert.equal(results[1].type, 'session.killed');
|
|
220
|
+
});
|
|
221
|
+
it('respects limit option', () => {
|
|
222
|
+
for (let i = 0; i < 10; i++) {
|
|
223
|
+
bus.emit(makeEvent());
|
|
224
|
+
}
|
|
225
|
+
const results = bus.query({}, { limit: 3 });
|
|
226
|
+
assert.equal(results.length, 3);
|
|
227
|
+
});
|
|
228
|
+
it('respects since option', () => {
|
|
229
|
+
const e1 = bus.emit(makeEvent());
|
|
230
|
+
bus.emit(makeEvent());
|
|
231
|
+
const results = bus.query({}, { since: e1.timestamp });
|
|
232
|
+
// Due to sub-millisecond timing, both may have the same timestamp
|
|
233
|
+
// so we just verify the query doesn't crash and returns valid results
|
|
234
|
+
assert.ok(Array.isArray(results));
|
|
235
|
+
});
|
|
236
|
+
it('returns empty array for no matches', () => {
|
|
237
|
+
bus.emit(makeEvent({ domain: 'session' }));
|
|
238
|
+
const results = bus.query({ domain: 'trigger' });
|
|
239
|
+
assert.equal(results.length, 0);
|
|
240
|
+
});
|
|
241
|
+
});
|
|
242
|
+
describe('importEvent', () => {
|
|
243
|
+
it('imports event without reassigning id, timestamp, or sequence', () => {
|
|
244
|
+
const event = {
|
|
245
|
+
id: 'custom-id',
|
|
246
|
+
version: 1,
|
|
247
|
+
timestamp: '2026-01-01T00:00:00.000Z',
|
|
248
|
+
sequence: 42,
|
|
249
|
+
domain: 'session',
|
|
250
|
+
type: 'session.spawned',
|
|
251
|
+
severity: 'info',
|
|
252
|
+
payload: { test: true },
|
|
253
|
+
source: 'replay',
|
|
254
|
+
};
|
|
255
|
+
bus.importEvent(event);
|
|
256
|
+
const results = bus.query({});
|
|
257
|
+
assert.equal(results.length, 1);
|
|
258
|
+
assert.equal(results[0].id, 'custom-id');
|
|
259
|
+
assert.equal(results[0].timestamp, '2026-01-01T00:00:00.000Z');
|
|
260
|
+
assert.equal(results[0].sequence, 42);
|
|
261
|
+
});
|
|
262
|
+
it('updates internal sequence to prevent collisions', () => {
|
|
263
|
+
bus.importEvent({
|
|
264
|
+
id: 'imported-1',
|
|
265
|
+
version: 1,
|
|
266
|
+
timestamp: '2026-01-01T00:00:00.000Z',
|
|
267
|
+
sequence: 100,
|
|
268
|
+
domain: 'session',
|
|
269
|
+
type: 'session.spawned',
|
|
270
|
+
severity: 'info',
|
|
271
|
+
payload: {},
|
|
272
|
+
source: 'replay',
|
|
273
|
+
});
|
|
274
|
+
// New emit should get sequence > 100
|
|
275
|
+
const newEvent = bus.emit(makeEvent());
|
|
276
|
+
assert.ok(newEvent.sequence > 100, `expected > 100, got ${newEvent.sequence}`);
|
|
277
|
+
});
|
|
278
|
+
it('dispatches to registered sinks', () => {
|
|
279
|
+
const sink = collectingSink();
|
|
280
|
+
bus.registerSink(sink);
|
|
281
|
+
const event = {
|
|
282
|
+
id: 'sink-test',
|
|
283
|
+
version: 1,
|
|
284
|
+
timestamp: new Date().toISOString(),
|
|
285
|
+
sequence: 1,
|
|
286
|
+
domain: 'session',
|
|
287
|
+
type: 'session.spawned',
|
|
288
|
+
severity: 'info',
|
|
289
|
+
payload: {},
|
|
290
|
+
source: 'replay',
|
|
291
|
+
};
|
|
292
|
+
bus.importEvent(event);
|
|
293
|
+
assert.equal(sink.events.length, 1);
|
|
294
|
+
assert.equal(sink.events[0].id, 'sink-test');
|
|
295
|
+
});
|
|
296
|
+
it('dispatches to matching subscribers', () => {
|
|
297
|
+
const received = [];
|
|
298
|
+
bus.subscribe({ domain: 'session' }, e => received.push(e));
|
|
299
|
+
bus.importEvent({
|
|
300
|
+
id: 'sub-test',
|
|
301
|
+
version: 1,
|
|
302
|
+
timestamp: new Date().toISOString(),
|
|
303
|
+
sequence: 1,
|
|
304
|
+
domain: 'session',
|
|
305
|
+
type: 'session.spawned',
|
|
306
|
+
severity: 'info',
|
|
307
|
+
payload: {},
|
|
308
|
+
source: 'replay',
|
|
309
|
+
});
|
|
310
|
+
assert.equal(received.length, 1);
|
|
311
|
+
assert.equal(received[0].id, 'sub-test');
|
|
312
|
+
});
|
|
313
|
+
});
|
|
314
|
+
describe('ring buffer eviction', () => {
|
|
315
|
+
it('evicts oldest events when capacity exceeded', () => {
|
|
316
|
+
const smallBus = new InMemoryEventBus({ capacity: 3 });
|
|
317
|
+
smallBus.emit(makeEvent({ type: 'event.1' }));
|
|
318
|
+
smallBus.emit(makeEvent({ type: 'event.2' }));
|
|
319
|
+
smallBus.emit(makeEvent({ type: 'event.3' }));
|
|
320
|
+
smallBus.emit(makeEvent({ type: 'event.4' }));
|
|
321
|
+
const results = smallBus.query({});
|
|
322
|
+
assert.equal(results.length, 3);
|
|
323
|
+
assert.equal(results[0].type, 'event.2', 'oldest event should be evicted');
|
|
324
|
+
assert.equal(results[2].type, 'event.4');
|
|
325
|
+
});
|
|
326
|
+
it('handles wrap-around correctly', () => {
|
|
327
|
+
const smallBus = new InMemoryEventBus({ capacity: 2 });
|
|
328
|
+
for (let i = 1; i <= 5; i++) {
|
|
329
|
+
smallBus.emit(makeEvent({ type: `event.${i}` }));
|
|
330
|
+
}
|
|
331
|
+
const results = smallBus.query({});
|
|
332
|
+
assert.equal(results.length, 2);
|
|
333
|
+
assert.equal(results[0].type, 'event.4');
|
|
334
|
+
assert.equal(results[1].type, 'event.5');
|
|
335
|
+
});
|
|
336
|
+
it('throws on zero capacity', () => {
|
|
337
|
+
assert.throws(() => new InMemoryEventBus({ capacity: 0 }), /capacity must be >= 1/);
|
|
338
|
+
});
|
|
339
|
+
it('throws on negative capacity', () => {
|
|
340
|
+
assert.throws(() => new InMemoryEventBus({ capacity: -5 }), /capacity must be >= 1/);
|
|
341
|
+
});
|
|
342
|
+
});
|
|
343
|
+
// ── Connector lifecycle (PRD 026 Phase 5) ────────────────────
|
|
344
|
+
describe('connector lifecycle', () => {
|
|
345
|
+
function makeConnector(name) {
|
|
346
|
+
return {
|
|
347
|
+
name,
|
|
348
|
+
connectCalled: false,
|
|
349
|
+
disconnectCalled: false,
|
|
350
|
+
async connect() { this.connectCalled = true; },
|
|
351
|
+
async disconnect() { this.disconnectCalled = true; },
|
|
352
|
+
health() { return { connected: this.connectCalled && !this.disconnectCalled, lastEventAt: null, errorCount: 0 }; },
|
|
353
|
+
onEvent() { },
|
|
354
|
+
};
|
|
355
|
+
}
|
|
356
|
+
it('connectAll() calls connect() on all registered connectors', async () => {
|
|
357
|
+
const c1 = makeConnector('c1');
|
|
358
|
+
const c2 = makeConnector('c2');
|
|
359
|
+
bus.registerSink(c1);
|
|
360
|
+
bus.registerSink(c2);
|
|
361
|
+
await bus.connectAll();
|
|
362
|
+
assert.ok(c1.connectCalled, 'c1.connect() should have been called');
|
|
363
|
+
assert.ok(c2.connectCalled, 'c2.connect() should have been called');
|
|
364
|
+
});
|
|
365
|
+
it('disconnectAll() calls disconnect() on all registered connectors', async () => {
|
|
366
|
+
const c1 = makeConnector('c1');
|
|
367
|
+
const c2 = makeConnector('c2');
|
|
368
|
+
bus.registerSink(c1);
|
|
369
|
+
bus.registerSink(c2);
|
|
370
|
+
await bus.disconnectAll();
|
|
371
|
+
assert.ok(c1.disconnectCalled, 'c1.disconnect() should have been called');
|
|
372
|
+
assert.ok(c2.disconnectCalled, 'c2.disconnect() should have been called');
|
|
373
|
+
});
|
|
374
|
+
it('connectorHealth() returns health from each connector', async () => {
|
|
375
|
+
const c1 = makeConnector('webhook:example.com');
|
|
376
|
+
bus.registerSink(c1);
|
|
377
|
+
await bus.connectAll();
|
|
378
|
+
const health = bus.connectorHealth();
|
|
379
|
+
assert.equal(health.length, 1);
|
|
380
|
+
assert.equal(health[0].name, 'webhook:example.com');
|
|
381
|
+
assert.ok(health[0].health.connected);
|
|
382
|
+
});
|
|
383
|
+
it('connectAll() does not call connect() on plain sinks', async () => {
|
|
384
|
+
const plain = collectingSink('plain');
|
|
385
|
+
const connector = makeConnector('connector');
|
|
386
|
+
bus.registerSink(plain);
|
|
387
|
+
bus.registerSink(connector);
|
|
388
|
+
await bus.connectAll();
|
|
389
|
+
assert.ok(connector.connectCalled, 'connector should be connected');
|
|
390
|
+
// plain sink has no connect() — no error thrown
|
|
391
|
+
assert.equal(plain.events.length, 0);
|
|
392
|
+
});
|
|
393
|
+
it('connectAll() continues if one connector throws', async () => {
|
|
394
|
+
const failing = {
|
|
395
|
+
name: 'failing',
|
|
396
|
+
async connect() { throw new Error('connect failed'); },
|
|
397
|
+
async disconnect() { },
|
|
398
|
+
health() { return { connected: false, lastEventAt: null, errorCount: 0 }; },
|
|
399
|
+
onEvent() { },
|
|
400
|
+
};
|
|
401
|
+
const c2 = makeConnector('c2');
|
|
402
|
+
bus.registerSink(failing);
|
|
403
|
+
bus.registerSink(c2);
|
|
404
|
+
await bus.connectAll(); // should not throw
|
|
405
|
+
assert.ok(c2.connectCalled, 'c2 should still connect despite failing first connector');
|
|
406
|
+
});
|
|
407
|
+
});
|
|
408
|
+
// ── getStats (PRD 026 Phase 4) ────────────────────────────────
|
|
409
|
+
describe('getStats', () => {
|
|
410
|
+
it('returns zero counters initially', () => {
|
|
411
|
+
const stats = bus.getStats();
|
|
412
|
+
assert.equal(stats.totalEmitted, 0);
|
|
413
|
+
assert.equal(stats.totalImported, 0);
|
|
414
|
+
assert.equal(stats.bufferSize, 0);
|
|
415
|
+
assert.equal(stats.bufferCapacity, 10_000);
|
|
416
|
+
assert.equal(stats.sinkCount, 0);
|
|
417
|
+
assert.equal(stats.subscriberCount, 0);
|
|
418
|
+
});
|
|
419
|
+
it('increments totalEmitted on emit', () => {
|
|
420
|
+
bus.emit(makeEvent());
|
|
421
|
+
bus.emit(makeEvent());
|
|
422
|
+
const stats = bus.getStats();
|
|
423
|
+
assert.equal(stats.totalEmitted, 2);
|
|
424
|
+
assert.equal(stats.bufferSize, 2);
|
|
425
|
+
});
|
|
426
|
+
it('increments totalImported on importEvent', () => {
|
|
427
|
+
const event = {
|
|
428
|
+
id: 'imported-1',
|
|
429
|
+
version: 1,
|
|
430
|
+
timestamp: new Date().toISOString(),
|
|
431
|
+
sequence: 50,
|
|
432
|
+
domain: 'session',
|
|
433
|
+
type: 'session.spawned',
|
|
434
|
+
severity: 'info',
|
|
435
|
+
payload: {},
|
|
436
|
+
source: 'test',
|
|
437
|
+
};
|
|
438
|
+
bus.importEvent(event);
|
|
439
|
+
const stats = bus.getStats();
|
|
440
|
+
assert.equal(stats.totalImported, 1);
|
|
441
|
+
assert.equal(stats.totalEmitted, 0);
|
|
442
|
+
assert.equal(stats.bufferSize, 1);
|
|
443
|
+
});
|
|
444
|
+
it('tracks sinks and subscribers', () => {
|
|
445
|
+
const sink = collectingSink();
|
|
446
|
+
bus.registerSink(sink);
|
|
447
|
+
const sub = bus.subscribe({}, () => { });
|
|
448
|
+
let stats = bus.getStats();
|
|
449
|
+
assert.equal(stats.sinkCount, 1);
|
|
450
|
+
assert.equal(stats.subscriberCount, 1);
|
|
451
|
+
sub.unsubscribe();
|
|
452
|
+
stats = bus.getStats();
|
|
453
|
+
assert.equal(stats.subscriberCount, 0);
|
|
454
|
+
});
|
|
455
|
+
});
|
|
456
|
+
});
|
|
457
|
+
//# sourceMappingURL=in-memory-event-bus.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"in-memory-event-bus.test.js","sourceRoot":"","sources":["../../src/event-bus/in-memory-event-bus.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @methodts/runtime/event-bus — EventBus + sinks + connectors (PRD-057 / S2 §3.4).
|
|
3
|
+
*
|
|
4
|
+
* Public surface frozen by S2 §3.4. The bus and all transport-free sinks live
|
|
5
|
+
* here. `WebSocketSink` stays in @methodts/bridge per S2 §5.1 (it depends on
|
|
6
|
+
* @fastify/websocket, which runtime cannot carry).
|
|
7
|
+
*/
|
|
8
|
+
export { InMemoryEventBus } from './in-memory-event-bus.js';
|
|
9
|
+
export type { InMemoryEventBusOptions, BusStats } from './in-memory-event-bus.js';
|
|
10
|
+
export { PersistenceSink } from './persistence-sink.js';
|
|
11
|
+
export type { PersistenceSinkOptions } from './persistence-sink.js';
|
|
12
|
+
export { ChannelSink, getChannelTarget } from './channel-sink.js';
|
|
13
|
+
export type { ChannelSinkOptions } from './channel-sink.js';
|
|
14
|
+
export { GenesisSink } from './genesis-sink.js';
|
|
15
|
+
export type { GenesisSinkOptions, GenesisPromptCallback } from './genesis-sink.js';
|
|
16
|
+
export { WebhookConnector } from './webhook-connector.js';
|
|
17
|
+
export type { WebhookConnectorOptions } from './webhook-connector.js';
|
|
18
|
+
export { SessionCheckpointSink } from './session-checkpoint-sink.js';
|
|
19
|
+
export type { SessionCheckpointSinkOptions, PersistedSessionInput, SessionStatusInfo, } from './session-checkpoint-sink.js';
|
|
20
|
+
export { createAgentEventAdapter } from './agent-event-adapter.js';
|
|
21
|
+
export { toChannelMessage, toAllEventsWrapper } from './adapters.js';
|
|
22
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/event-bus/index.ts"],"names":[],"mappings":"AACA;;;;;;GAMG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,YAAY,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAElF,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAClE,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAEnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,YAAY,EACV,4BAA4B,EAC5B,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
/**
|
|
3
|
+
* @methodts/runtime/event-bus — EventBus + sinks + connectors (PRD-057 / S2 §3.4).
|
|
4
|
+
*
|
|
5
|
+
* Public surface frozen by S2 §3.4. The bus and all transport-free sinks live
|
|
6
|
+
* here. `WebSocketSink` stays in @methodts/bridge per S2 §5.1 (it depends on
|
|
7
|
+
* @fastify/websocket, which runtime cannot carry).
|
|
8
|
+
*/
|
|
9
|
+
export { InMemoryEventBus } from './in-memory-event-bus.js';
|
|
10
|
+
export { PersistenceSink } from './persistence-sink.js';
|
|
11
|
+
export { ChannelSink, getChannelTarget } from './channel-sink.js';
|
|
12
|
+
export { GenesisSink } from './genesis-sink.js';
|
|
13
|
+
export { WebhookConnector } from './webhook-connector.js';
|
|
14
|
+
export { SessionCheckpointSink } from './session-checkpoint-sink.js';
|
|
15
|
+
export { createAgentEventAdapter } from './agent-event-adapter.js';
|
|
16
|
+
export { toChannelMessage, toAllEventsWrapper } from './adapters.js';
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/event-bus/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC;;;;;;GAMG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAG5D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGlE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAOrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PersistenceSink — PRD 026 Phase 3.
|
|
3
|
+
*
|
|
4
|
+
* Writes every RuntimeEvent to a JSONL file via the FileSystemProvider port.
|
|
5
|
+
* Uses write-ahead batching: events accumulate in memory and flush every
|
|
6
|
+
* 1 second or 100 events (whichever comes first). On flush failure, emits
|
|
7
|
+
* system.sink_overflow via a callback — never crashes.
|
|
8
|
+
*
|
|
9
|
+
* Also handles event replay on startup: reads the JSONL file, filters by
|
|
10
|
+
* a configurable replay window, and returns events for import into the bus.
|
|
11
|
+
*
|
|
12
|
+
* Cursor recovery: persists last-processed sequence per sink in a JSON file.
|
|
13
|
+
* On restart, sinks resume from their last cursor.
|
|
14
|
+
*/
|
|
15
|
+
import type { RuntimeEvent, EventSink } from '../ports/event-bus.js';
|
|
16
|
+
import type { EventReader } from '../ports/event-reader.js';
|
|
17
|
+
import type { FileSystemProvider } from '../ports/file-system.js';
|
|
18
|
+
export interface PersistenceSinkOptions {
|
|
19
|
+
fs: FileSystemProvider;
|
|
20
|
+
logPath?: string;
|
|
21
|
+
cursorsPath?: string;
|
|
22
|
+
replayWindowHours?: number;
|
|
23
|
+
flushIntervalMs?: number;
|
|
24
|
+
flushBatchSize?: number;
|
|
25
|
+
}
|
|
26
|
+
export declare class PersistenceSink implements EventSink, EventReader {
|
|
27
|
+
readonly name = "persistence";
|
|
28
|
+
private readonly fs;
|
|
29
|
+
private readonly logPath;
|
|
30
|
+
private readonly cursorsPath;
|
|
31
|
+
private readonly replayWindowHours;
|
|
32
|
+
private readonly flushIntervalMs;
|
|
33
|
+
private readonly flushBatchSize;
|
|
34
|
+
private buffer;
|
|
35
|
+
private flushTimer;
|
|
36
|
+
private flushing;
|
|
37
|
+
private lastSequence;
|
|
38
|
+
private overflowCallback;
|
|
39
|
+
constructor(options: PersistenceSinkOptions);
|
|
40
|
+
/**
|
|
41
|
+
* Set a callback to notify when flush fails (e.g., emit system.sink_overflow).
|
|
42
|
+
* Called from composition root after bus is created.
|
|
43
|
+
*/
|
|
44
|
+
setOverflowCallback(cb: (msg: string) => void): void;
|
|
45
|
+
/**
|
|
46
|
+
* Initialize from persisted cursor state. Call before registering as a sink.
|
|
47
|
+
*/
|
|
48
|
+
init(): Promise<void>;
|
|
49
|
+
onEvent(event: RuntimeEvent): void;
|
|
50
|
+
onError(error: Error, event: RuntimeEvent): void;
|
|
51
|
+
flush(): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* Read and parse all events from the JSONL log file.
|
|
54
|
+
* Skips corrupt lines gracefully. Returns empty array if the log is missing.
|
|
55
|
+
* Shared by replay() (time-window filter) and readEventsSince() (cursor filter).
|
|
56
|
+
*/
|
|
57
|
+
private readAllEvents;
|
|
58
|
+
/**
|
|
59
|
+
* Read events from JSONL file for replay into the bus.
|
|
60
|
+
* Filters by replay window. Skips corrupt lines gracefully.
|
|
61
|
+
*/
|
|
62
|
+
replay(): Promise<RuntimeEvent[]>;
|
|
63
|
+
/**
|
|
64
|
+
* Read events from the persistent log where sequence > sinceSeq.
|
|
65
|
+
* Returns events in append order. Corrupt JSONL lines are skipped gracefully.
|
|
66
|
+
*/
|
|
67
|
+
readEventsSince(sinceSeq: number): Promise<RuntimeEvent[]>;
|
|
68
|
+
loadCursors(): Promise<Record<string, number>>;
|
|
69
|
+
saveCursors(cursors: Record<string, number>): Promise<void>;
|
|
70
|
+
private saveCursor;
|
|
71
|
+
/** Flush remaining buffer and clean up timers. */
|
|
72
|
+
dispose(): Promise<void>;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=persistence-sink.d.ts.map
|