@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.
Files changed (374) hide show
  1. package/README.md +86 -19
  2. package/REFERENCE.md +538 -150
  3. package/dist/agent/agent-acceptance-receipts.d.ts +69 -0
  4. package/dist/agent/agent-acceptance-receipts.d.ts.map +1 -0
  5. package/dist/agent/agent-acceptance-receipts.js +198 -0
  6. package/dist/agent/agent-acceptance-receipts.js.map +1 -0
  7. package/dist/agent/agent-execution-capacity.d.ts +37 -9
  8. package/dist/agent/agent-execution-capacity.d.ts.map +1 -1
  9. package/dist/agent/agent-execution-capacity.js +73 -15
  10. package/dist/agent/agent-execution-capacity.js.map +1 -1
  11. package/dist/agent/agent-history.d.ts +33 -12
  12. package/dist/agent/agent-history.d.ts.map +1 -1
  13. package/dist/agent/agent-history.js +61 -18
  14. package/dist/agent/agent-history.js.map +1 -1
  15. package/dist/agent/agent-live-ai-audit.d.ts +95 -0
  16. package/dist/agent/agent-live-ai-audit.d.ts.map +1 -0
  17. package/dist/agent/agent-live-ai-audit.js +290 -0
  18. package/dist/agent/agent-live-ai-audit.js.map +1 -0
  19. package/dist/agent/agent-live-ai-runtime.d.ts +300 -0
  20. package/dist/agent/agent-live-ai-runtime.d.ts.map +1 -0
  21. package/dist/agent/agent-live-ai-runtime.js +611 -0
  22. package/dist/agent/agent-live-ai-runtime.js.map +1 -0
  23. package/dist/agent/agent-live-audit.d.ts +67 -0
  24. package/dist/agent/agent-live-audit.d.ts.map +1 -0
  25. package/dist/agent/agent-live-audit.js +121 -0
  26. package/dist/agent/agent-live-audit.js.map +1 -0
  27. package/dist/agent/agent-live-budget.d.ts +84 -0
  28. package/dist/agent/agent-live-budget.d.ts.map +1 -0
  29. package/dist/agent/agent-live-budget.js +161 -0
  30. package/dist/agent/agent-live-budget.js.map +1 -0
  31. package/dist/agent/agent-live-fault.d.ts +18 -0
  32. package/dist/agent/agent-live-fault.d.ts.map +1 -0
  33. package/dist/agent/{agent-execution-fault.js → agent-live-fault.js} +7 -7
  34. package/dist/agent/agent-live-fault.js.map +1 -0
  35. package/dist/agent/agent-live-inputs.d.ts +74 -0
  36. package/dist/agent/agent-live-inputs.d.ts.map +1 -0
  37. package/dist/agent/agent-live-inputs.js +15 -0
  38. package/dist/agent/agent-live-inputs.js.map +1 -0
  39. package/dist/agent/agent-live-interaction-events.d.ts +46 -0
  40. package/dist/agent/agent-live-interaction-events.d.ts.map +1 -0
  41. package/dist/agent/agent-live-interaction-events.js +104 -0
  42. package/dist/agent/agent-live-interaction-events.js.map +1 -0
  43. package/dist/agent/agent-live-mcp-controls.d.ts +129 -0
  44. package/dist/agent/agent-live-mcp-controls.d.ts.map +1 -0
  45. package/dist/agent/agent-live-mcp-controls.js +228 -0
  46. package/dist/agent/agent-live-mcp-controls.js.map +1 -0
  47. package/dist/agent/agent-live-mcp-host.d.ts +88 -0
  48. package/dist/agent/agent-live-mcp-host.d.ts.map +1 -0
  49. package/dist/agent/{agent-mcp-host.js → agent-live-mcp-host.js} +1 -1
  50. package/dist/agent/agent-live-mcp-host.js.map +1 -0
  51. package/dist/agent/{agent-mcp-runtime.d.ts → agent-live-mcp-runtime.d.ts} +6 -6
  52. package/dist/agent/agent-live-mcp-runtime.d.ts.map +1 -0
  53. package/dist/agent/{agent-mcp-runtime.js → agent-live-mcp-runtime.js} +13 -42
  54. package/dist/agent/agent-live-mcp-runtime.js.map +1 -0
  55. package/dist/agent/agent-live-read-runtime.d.ts +72 -0
  56. package/dist/agent/agent-live-read-runtime.d.ts.map +1 -0
  57. package/dist/agent/agent-live-read-runtime.js +122 -0
  58. package/dist/agent/agent-live-read-runtime.js.map +1 -0
  59. package/dist/agent/agent-model-selection.d.ts +21 -34
  60. package/dist/agent/agent-model-selection.d.ts.map +1 -1
  61. package/dist/agent/agent-model-selection.js +61 -78
  62. package/dist/agent/agent-model-selection.js.map +1 -1
  63. package/dist/browser/browser-server.d.ts +163 -0
  64. package/dist/browser/browser-server.d.ts.map +1 -1
  65. package/dist/browser/browser-server.js +579 -188
  66. package/dist/browser/browser-server.js.map +1 -1
  67. package/dist/browser/durable-subscription-bindings.d.ts +5 -0
  68. package/dist/browser/durable-subscription-bindings.d.ts.map +1 -1
  69. package/dist/browser/durable-subscription-bindings.js +226 -38
  70. package/dist/browser/durable-subscription-bindings.js.map +1 -1
  71. package/dist/browser/options.d.ts +5 -0
  72. package/dist/browser/options.d.ts.map +1 -1
  73. package/dist/bus/command-bus.d.ts +17 -18
  74. package/dist/bus/command-bus.d.ts.map +1 -1
  75. package/dist/bus/command-bus.js +97 -54
  76. package/dist/bus/command-bus.js.map +1 -1
  77. package/dist/bus/command-errors.d.ts +20 -4
  78. package/dist/bus/command-errors.d.ts.map +1 -1
  79. package/dist/bus/command-errors.js +47 -7
  80. package/dist/bus/command-errors.js.map +1 -1
  81. package/dist/bus/event-bus.d.ts +20 -4
  82. package/dist/bus/event-bus.d.ts.map +1 -1
  83. package/dist/bus/event-bus.js +166 -14
  84. package/dist/bus/event-bus.js.map +1 -1
  85. package/dist/context/bounded-context.d.ts +169 -98
  86. package/dist/context/bounded-context.d.ts.map +1 -1
  87. package/dist/context/bounded-context.js +837 -503
  88. package/dist/context/bounded-context.js.map +1 -1
  89. package/dist/context/entity-inbox.d.ts +7 -2
  90. package/dist/context/entity-inbox.d.ts.map +1 -1
  91. package/dist/context/entity-inbox.js +22 -13
  92. package/dist/context/entity-inbox.js.map +1 -1
  93. package/dist/context/local-inbox-handoff.d.ts +34 -34
  94. package/dist/context/local-inbox-handoff.d.ts.map +1 -1
  95. package/dist/context/local-inbox-handoff.js +108 -150
  96. package/dist/context/local-inbox-handoff.js.map +1 -1
  97. package/dist/context/projection-handoff.d.ts +2 -2
  98. package/dist/context/projection-handoff.d.ts.map +1 -1
  99. package/dist/context/projection-handoff.js +10 -8
  100. package/dist/context/projection-handoff.js.map +1 -1
  101. package/dist/context/tenant-index.d.ts +36 -31
  102. package/dist/context/tenant-index.d.ts.map +1 -1
  103. package/dist/context/tenant-index.js +123 -125
  104. package/dist/context/tenant-index.js.map +1 -1
  105. package/dist/context/tenant-unknown-error.d.ts +33 -0
  106. package/dist/context/tenant-unknown-error.d.ts.map +1 -0
  107. package/dist/context/tenant-unknown-error.js +75 -0
  108. package/dist/context/tenant-unknown-error.js.map +1 -0
  109. package/dist/delivery/agent-delivery-scope.d.ts +66 -0
  110. package/dist/delivery/agent-delivery-scope.d.ts.map +1 -0
  111. package/dist/delivery/agent-delivery-scope.js +44 -0
  112. package/dist/delivery/agent-delivery-scope.js.map +1 -0
  113. package/dist/delivery/delivery-builder.d.ts +25 -1
  114. package/dist/delivery/delivery-builder.d.ts.map +1 -1
  115. package/dist/delivery/delivery-builder.js +89 -0
  116. package/dist/delivery/delivery-builder.js.map +1 -1
  117. package/dist/delivery/delivery-monitor.d.ts +1 -1
  118. package/dist/delivery/delivery-monitor.js +1 -1
  119. package/dist/delivery/delivery-run-control.d.ts +6 -0
  120. package/dist/delivery/delivery-run-control.d.ts.map +1 -1
  121. package/dist/delivery/delivery-run-control.js +10 -0
  122. package/dist/delivery/delivery-run-control.js.map +1 -1
  123. package/dist/delivery/delivery-supervisor.d.ts.map +1 -1
  124. package/dist/delivery/delivery-supervisor.js +28 -4
  125. package/dist/delivery/delivery-supervisor.js.map +1 -1
  126. package/dist/delivery/delivery-tenant.d.ts +17 -0
  127. package/dist/delivery/delivery-tenant.d.ts.map +1 -0
  128. package/dist/delivery/delivery-tenant.js +50 -0
  129. package/dist/delivery/delivery-tenant.js.map +1 -0
  130. package/dist/delivery/delivery.d.ts +96 -2
  131. package/dist/delivery/delivery.d.ts.map +1 -1
  132. package/dist/delivery/delivery.js +693 -53
  133. package/dist/delivery/delivery.js.map +1 -1
  134. package/dist/delivery/inbox-records.d.ts.map +1 -1
  135. package/dist/delivery/inbox-records.js +9 -16
  136. package/dist/delivery/inbox-records.js.map +1 -1
  137. package/dist/delivery/inbox-storage.d.ts +6 -0
  138. package/dist/delivery/inbox-storage.d.ts.map +1 -1
  139. package/dist/delivery/inbox-storage.js +43 -6
  140. package/dist/delivery/inbox-storage.js.map +1 -1
  141. package/dist/delivery/inbox.d.ts.map +1 -1
  142. package/dist/delivery/inbox.js +3 -2
  143. package/dist/delivery/inbox.js.map +1 -1
  144. package/dist/delivery/reception-observation.d.ts +12 -4
  145. package/dist/delivery/reception-observation.d.ts.map +1 -1
  146. package/dist/delivery/reception-observation.js +14 -3
  147. package/dist/delivery/reception-observation.js.map +1 -1
  148. package/dist/delivery/sharded-work-registry.d.ts +6 -0
  149. package/dist/delivery/sharded-work-registry.d.ts.map +1 -1
  150. package/dist/delivery/sharded-work-registry.js +41 -4
  151. package/dist/delivery/sharded-work-registry.js.map +1 -1
  152. package/dist/entity/entity-storage-descriptor.d.ts.map +1 -1
  153. package/dist/entity/entity-storage-descriptor.js +7 -4
  154. package/dist/entity/entity-storage-descriptor.js.map +1 -1
  155. package/dist/entity/entity.d.ts +59 -0
  156. package/dist/entity/entity.d.ts.map +1 -1
  157. package/dist/entity/entity.js +60 -0
  158. package/dist/entity/entity.js.map +1 -1
  159. package/dist/handler/app-query-handler.d.ts +60 -0
  160. package/dist/handler/app-query-handler.d.ts.map +1 -0
  161. package/dist/{bus/saved-dispatcher-binding.js → handler/app-query-handler.js} +8 -12
  162. package/dist/handler/app-query-handler.js.map +1 -0
  163. package/dist/handler/generated-registry-discovery.d.ts +6 -0
  164. package/dist/handler/generated-registry-discovery.d.ts.map +1 -1
  165. package/dist/handler/generated-registry-discovery.js +71 -2
  166. package/dist/handler/generated-registry-discovery.js.map +1 -1
  167. package/dist/handler/handler-decorators.d.ts +8 -29
  168. package/dist/handler/handler-decorators.d.ts.map +1 -1
  169. package/dist/handler/handler-decorators.js +33 -210
  170. package/dist/handler/handler-decorators.js.map +1 -1
  171. package/dist/handler/spine-metadata-inventory.d.ts +99 -0
  172. package/dist/handler/spine-metadata-inventory.d.ts.map +1 -0
  173. package/dist/handler/spine-metadata-inventory.js +162 -0
  174. package/dist/handler/spine-metadata-inventory.js.map +1 -0
  175. package/dist/index.d.ts +9 -5
  176. package/dist/index.d.ts.map +1 -1
  177. package/dist/index.js +6 -3
  178. package/dist/index.js.map +1 -1
  179. package/dist/integration/external-messages.d.ts.map +1 -1
  180. package/dist/integration/external-messages.js +9 -15
  181. package/dist/integration/external-messages.js.map +1 -1
  182. package/dist/integration/integration-broker.d.ts.map +1 -1
  183. package/dist/integration/integration-broker.js +112 -6
  184. package/dist/integration/integration-broker.js.map +1 -1
  185. package/dist/integration/third-party-context.d.ts.map +1 -1
  186. package/dist/integration/third-party-context.js +7 -10
  187. package/dist/integration/third-party-context.js.map +1 -1
  188. package/dist/repository/primitive-id.js +26 -11
  189. package/dist/repository/primitive-id.js.map +1 -1
  190. package/dist/repository/repository.d.ts +75 -60
  191. package/dist/repository/repository.d.ts.map +1 -1
  192. package/dist/repository/repository.js +1757 -1818
  193. package/dist/repository/repository.js.map +1 -1
  194. package/dist/runtime/runtime.d.ts +13 -0
  195. package/dist/runtime/runtime.d.ts.map +1 -1
  196. package/dist/runtime/runtime.js +18 -0
  197. package/dist/runtime/runtime.js.map +1 -1
  198. package/dist/runtime/signal-metadata.d.ts.map +1 -1
  199. package/dist/runtime/signal-metadata.js +6 -6
  200. package/dist/runtime/signal-metadata.js.map +1 -1
  201. package/dist/runtime/signal-publisher.d.ts +0 -6
  202. package/dist/runtime/signal-publisher.d.ts.map +1 -1
  203. package/dist/runtime/signal-publisher.js +1 -9
  204. package/dist/runtime/signal-publisher.js.map +1 -1
  205. package/dist/runtime/standalone-handler-runtime.d.ts +0 -7
  206. package/dist/runtime/standalone-handler-runtime.d.ts.map +1 -1
  207. package/dist/runtime/standalone-handler-runtime.js +13 -99
  208. package/dist/runtime/standalone-handler-runtime.js.map +1 -1
  209. package/dist/server/managed-delivery-gate.d.ts +34 -0
  210. package/dist/server/managed-delivery-gate.d.ts.map +1 -0
  211. package/dist/server/managed-delivery-gate.js +70 -0
  212. package/dist/server/managed-delivery-gate.js.map +1 -0
  213. package/dist/server/managed-server-application.d.ts +12 -11
  214. package/dist/server/managed-server-application.d.ts.map +1 -1
  215. package/dist/server/managed-server-application.js +48 -29
  216. package/dist/server/managed-server-application.js.map +1 -1
  217. package/dist/server/node-coordinator.d.ts +18 -5
  218. package/dist/server/node-coordinator.d.ts.map +1 -1
  219. package/dist/server/node-coordinator.js +554 -84
  220. package/dist/server/node-coordinator.js.map +1 -1
  221. package/dist/server/reserved-spine-rpc-paths.json +1 -0
  222. package/dist/server/server-environment.d.ts +220 -25
  223. package/dist/server/server-environment.d.ts.map +1 -1
  224. package/dist/server/server-environment.js +734 -145
  225. package/dist/server/server-environment.js.map +1 -1
  226. package/dist/server/server-log.d.ts +7 -0
  227. package/dist/server/server-log.d.ts.map +1 -1
  228. package/dist/server/server-log.js +14 -1
  229. package/dist/server/server-log.js.map +1 -1
  230. package/dist/server/server.d.ts +60 -29
  231. package/dist/server/server.d.ts.map +1 -1
  232. package/dist/server/server.js +155 -201
  233. package/dist/server/server.js.map +1 -1
  234. package/dist/services/app-query-execution.d.ts +53 -0
  235. package/dist/services/app-query-execution.d.ts.map +1 -0
  236. package/dist/services/app-query-execution.js +408 -0
  237. package/dist/services/app-query-execution.js.map +1 -0
  238. package/dist/services/query-reader.d.ts +32 -7
  239. package/dist/services/query-reader.d.ts.map +1 -1
  240. package/dist/services/query-reader.js +22 -2
  241. package/dist/services/query-reader.js.map +1 -1
  242. package/dist/services/read-request-status.d.ts +65 -0
  243. package/dist/services/read-request-status.d.ts.map +1 -0
  244. package/dist/services/read-request-status.js +151 -0
  245. package/dist/services/read-request-status.js.map +1 -0
  246. package/dist/services/spine-services.d.ts +37 -8
  247. package/dist/services/spine-services.d.ts.map +1 -1
  248. package/dist/services/spine-services.js +1103 -470
  249. package/dist/services/spine-services.js.map +1 -1
  250. package/dist/services/trusted-reader-ingress.d.ts +92 -0
  251. package/dist/services/trusted-reader-ingress.d.ts.map +1 -0
  252. package/dist/services/trusted-reader-ingress.js +89 -0
  253. package/dist/services/trusted-reader-ingress.js.map +1 -0
  254. package/dist/spi/handler-registry.d.ts +2 -0
  255. package/dist/spi/handler-registry.d.ts.map +1 -1
  256. package/dist/spi/handler-registry.js +1 -1
  257. package/dist/spi/handler-registry.js.map +1 -1
  258. package/dist/stand/event-origin-filter.js +3 -3
  259. package/dist/stand/event-origin-filter.js.map +1 -1
  260. package/dist/stand/read-side-filter-engine.d.ts +46 -0
  261. package/dist/stand/read-side-filter-engine.d.ts.map +1 -0
  262. package/dist/stand/read-side-filter-engine.js +356 -0
  263. package/dist/stand/read-side-filter-engine.js.map +1 -0
  264. package/dist/stand/read-side-filter.d.ts +247 -0
  265. package/dist/stand/read-side-filter.d.ts.map +1 -0
  266. package/dist/stand/read-side-filter.js +39 -0
  267. package/dist/stand/read-side-filter.js.map +1 -0
  268. package/dist/stand/read-side-message.d.ts +66 -0
  269. package/dist/stand/read-side-message.d.ts.map +1 -0
  270. package/dist/stand/read-side-message.js +167 -0
  271. package/dist/stand/read-side-message.js.map +1 -0
  272. package/dist/stand/stand-direct-delivery.d.ts +161 -0
  273. package/dist/stand/stand-direct-delivery.d.ts.map +1 -0
  274. package/dist/stand/stand-direct-delivery.js +210 -0
  275. package/dist/stand/stand-direct-delivery.js.map +1 -0
  276. package/dist/stand/stand.d.ts +94 -42
  277. package/dist/stand/stand.d.ts.map +1 -1
  278. package/dist/stand/stand.js +460 -60
  279. package/dist/stand/stand.js.map +1 -1
  280. package/dist/stand/subscription-observer.d.ts.map +1 -1
  281. package/dist/stand/subscription-observer.js +157 -40
  282. package/dist/stand/subscription-observer.js.map +1 -1
  283. package/dist/stand/subscription-read-filters.d.ts +40 -0
  284. package/dist/stand/subscription-read-filters.d.ts.map +1 -0
  285. package/dist/stand/subscription-read-filters.js +91 -0
  286. package/dist/stand/subscription-read-filters.js.map +1 -0
  287. package/dist/stand/subscription-reader-binding.d.ts +20 -0
  288. package/dist/stand/subscription-reader-binding.d.ts.map +1 -0
  289. package/dist/stand/subscription-reader-binding.js +56 -0
  290. package/dist/stand/subscription-reader-binding.js.map +1 -0
  291. package/dist/stand/subscription-records.d.ts +30 -3
  292. package/dist/stand/subscription-records.d.ts.map +1 -1
  293. package/dist/stand/subscription-records.js +61 -16
  294. package/dist/stand/subscription-records.js.map +1 -1
  295. package/dist/stand/subscription-registry.d.ts +54 -15
  296. package/dist/stand/subscription-registry.d.ts.map +1 -1
  297. package/dist/stand/subscription-registry.js +164 -41
  298. package/dist/stand/subscription-registry.js.map +1 -1
  299. package/dist/stand/subscription-runtime.d.ts +12 -5
  300. package/dist/stand/subscription-runtime.d.ts.map +1 -1
  301. package/dist/stand/subscription-runtime.js +183 -34
  302. package/dist/stand/subscription-runtime.js.map +1 -1
  303. package/dist/testing/index.d.ts.map +1 -1
  304. package/dist/testing/index.js +4 -3
  305. package/dist/testing/index.js.map +1 -1
  306. package/dist/tsconfig.tsbuildinfo +1 -1
  307. package/package.json +14 -14
  308. package/dist/agent/agent-admission.d.ts +0 -80
  309. package/dist/agent/agent-admission.d.ts.map +0 -1
  310. package/dist/agent/agent-admission.js +0 -127
  311. package/dist/agent/agent-admission.js.map +0 -1
  312. package/dist/agent/agent-ai-runtime.d.ts +0 -76
  313. package/dist/agent/agent-ai-runtime.d.ts.map +0 -1
  314. package/dist/agent/agent-ai-runtime.js +0 -1269
  315. package/dist/agent/agent-ai-runtime.js.map +0 -1
  316. package/dist/agent/agent-execution-fault.d.ts +0 -18
  317. package/dist/agent/agent-execution-fault.d.ts.map +0 -1
  318. package/dist/agent/agent-execution-fault.js.map +0 -1
  319. package/dist/agent/agent-execution-session.d.ts +0 -103
  320. package/dist/agent/agent-execution-session.d.ts.map +0 -1
  321. package/dist/agent/agent-execution-session.js +0 -238
  322. package/dist/agent/agent-execution-session.js.map +0 -1
  323. package/dist/agent/agent-interaction-audit.d.ts +0 -58
  324. package/dist/agent/agent-interaction-audit.d.ts.map +0 -1
  325. package/dist/agent/agent-interaction-audit.js +0 -114
  326. package/dist/agent/agent-interaction-audit.js.map +0 -1
  327. package/dist/agent/agent-interaction-events.d.ts +0 -40
  328. package/dist/agent/agent-interaction-events.d.ts.map +0 -1
  329. package/dist/agent/agent-interaction-events.js +0 -129
  330. package/dist/agent/agent-interaction-events.js.map +0 -1
  331. package/dist/agent/agent-mcp-budget.d.ts +0 -125
  332. package/dist/agent/agent-mcp-budget.d.ts.map +0 -1
  333. package/dist/agent/agent-mcp-budget.js +0 -566
  334. package/dist/agent/agent-mcp-budget.js.map +0 -1
  335. package/dist/agent/agent-mcp-host.d.ts +0 -125
  336. package/dist/agent/agent-mcp-host.d.ts.map +0 -1
  337. package/dist/agent/agent-mcp-host.js.map +0 -1
  338. package/dist/agent/agent-mcp-runtime.d.ts.map +0 -1
  339. package/dist/agent/agent-mcp-runtime.js.map +0 -1
  340. package/dist/agent/agent-read-runtime.d.ts +0 -70
  341. package/dist/agent/agent-read-runtime.d.ts.map +0 -1
  342. package/dist/agent/agent-read-runtime.js +0 -320
  343. package/dist/agent/agent-read-runtime.js.map +0 -1
  344. package/dist/agent/agent-revisions.d.ts +0 -35
  345. package/dist/agent/agent-revisions.d.ts.map +0 -1
  346. package/dist/agent/agent-revisions.js +0 -133
  347. package/dist/agent/agent-revisions.js.map +0 -1
  348. package/dist/agent/agent-scheduler.d.ts +0 -99
  349. package/dist/agent/agent-scheduler.d.ts.map +0 -1
  350. package/dist/agent/agent-scheduler.js +0 -398
  351. package/dist/agent/agent-scheduler.js.map +0 -1
  352. package/dist/bus/saved-dispatcher-binding.d.ts +0 -53
  353. package/dist/bus/saved-dispatcher-binding.d.ts.map +0 -1
  354. package/dist/bus/saved-dispatcher-binding.js.map +0 -1
  355. package/dist/delivery/delivery-run-coordinator.d.ts +0 -218
  356. package/dist/delivery/delivery-run-coordinator.d.ts.map +0 -1
  357. package/dist/delivery/delivery-run-coordinator.js +0 -609
  358. package/dist/delivery/delivery-run-coordinator.js.map +0 -1
  359. package/dist/delivery/parked-delivery-obligations.d.ts +0 -182
  360. package/dist/delivery/parked-delivery-obligations.d.ts.map +0 -1
  361. package/dist/delivery/parked-delivery-obligations.js +0 -390
  362. package/dist/delivery/parked-delivery-obligations.js.map +0 -1
  363. package/dist/server/environment-attachment.d.ts +0 -356
  364. package/dist/server/environment-attachment.d.ts.map +0 -1
  365. package/dist/server/environment-attachment.js +0 -2062
  366. package/dist/server/environment-attachment.js.map +0 -1
  367. package/dist/server/environment-delivery-records.d.ts +0 -77
  368. package/dist/server/environment-delivery-records.d.ts.map +0 -1
  369. package/dist/server/environment-delivery-records.js +0 -282
  370. package/dist/server/environment-delivery-records.js.map +0 -1
  371. package/dist/server/environment-delivery-worker.d.ts +0 -161
  372. package/dist/server/environment-delivery-worker.d.ts.map +0 -1
  373. package/dist/server/environment-delivery-worker.js +0 -973
  374. package/dist/server/environment-delivery-worker.js.map +0 -1
@@ -0,0 +1,69 @@
1
+ import type { Any } from "@bufbuild/protobuf/wkt";
2
+ import type { CommandId, EventId } from "@spine-event-engine/proto";
3
+ import { type AgentAcceptanceReceipt } from "@spine-event-engine/proto/generated/spine/server/agent/acceptance_receipt_pb.js";
4
+ import { RecordSpec, StorageGroup, type StorageContext, type StorageFactory } from "@spine-event-engine/storage";
5
+ import type { DeliveryLabel } from "../delivery/inbox.js";
6
+ /**
7
+ * Declarative physical family shared by runtime use and explicit preparation.
8
+ */
9
+ export declare const agentAcceptanceReceiptSpec: RecordSpec<string, AgentAcceptanceReceipt>;
10
+ /**
11
+ * Stable physical group for Agent acceptance evidence.
12
+ */
13
+ export declare const agentAcceptanceReceiptGroup: StorageGroup;
14
+ /**
15
+ * Typed source and recipient of one Agent delivery.
16
+ */
17
+ export interface AgentAcceptanceInput {
18
+ /**
19
+ * Generated Agent state type.
20
+ */
21
+ readonly stateType: string;
22
+ /**
23
+ * Original typed recipient, including the exact Any type URL.
24
+ */
25
+ readonly recipientId: Any;
26
+ /**
27
+ * Original typed Command or Event identifier.
28
+ */
29
+ readonly source: {
30
+ readonly kind: "command";
31
+ readonly id: CommandId;
32
+ } | {
33
+ readonly kind: "event";
34
+ readonly id: EventId;
35
+ };
36
+ /**
37
+ * Delivery route that selected the Agent.
38
+ */
39
+ readonly action: DeliveryLabel;
40
+ }
41
+ /**
42
+ * Retains one atomic receipt handle per complete tenant boundary.
43
+ *
44
+ * @internal
45
+ */
46
+ export declare class AgentAcceptanceReceipts {
47
+ #private;
48
+ /**
49
+ * Creates an inert receipt helper without opening storage.
50
+ *
51
+ * @param factory Provider factory used only when the first receipt is admitted.
52
+ */
53
+ constructor(factory: StorageFactory);
54
+ /**
55
+ * Accepts one typed delivery atomically; only `true` may permit live execution.
56
+ *
57
+ * @param context Complete physical tenant scope.
58
+ * @param input Typed delivery identity.
59
+ * @returns Whether this attempt first established the immutable receipt.
60
+ */
61
+ accept(context: StorageContext, input: AgentAcceptanceInput): Promise<boolean>;
62
+ /**
63
+ * Closes retained handles after fencing new admissions and draining admitted CAS operations.
64
+ *
65
+ * @returns Repeatable completion after admitted CAS operations and all handles settle.
66
+ */
67
+ close(): Promise<void>;
68
+ }
69
+ //# sourceMappingURL=agent-acceptance-receipts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-acceptance-receipts.d.ts","sourceRoot":"","sources":["../../src/agent/agent-acceptance-receipts.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAIL,KAAK,sBAAsB,EAC5B,MAAM,iFAAiF,CAAC;AACzF,OAAO,EACL,UAAU,EACV,YAAY,EAEZ,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAAE,UAAU,CAAC,MAAM,EAAE,sBAAsB,CAQ9E,CAAC;AAEL;;GAEG;AACH,eAAO,MAAM,2BAA2B,EAAE,YAAyD,CAAC;AAEpG;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,MAAM,EACX;QAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;QAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAA;KAAE,GACpD;QAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAA;KAAE,CAAC;IAErD;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;CAChC;AAED;;;;GAIG;AACH,qBAAa,uBAAuB;;IAWlC;;;;OAIG;gBACS,OAAO,EAAE,cAAc;IAInC;;;;;;OAMG;IACG,MAAM,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAyBpF;;;;OAIG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAwEvB"}
@@ -0,0 +1,198 @@
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 { createHash } from "node:crypto";
15
+ import { clone, create } from "@bufbuild/protobuf";
16
+ import { AgentAcceptanceKeySchema, AgentAcceptanceReceiptSchema, } from "@spine-event-engine/proto/generated/spine/server/agent/acceptance_receipt_pb.js";
17
+ import { RecordSpec, StorageGroup, } from "@spine-event-engine/storage";
18
+ import { TenantBoundary } from "@spine-event-engine/storage/provider";
19
+ /**
20
+ * Declarative physical family shared by runtime use and explicit preparation.
21
+ */
22
+ export const agentAcceptanceReceiptSpec = new RecordSpec({
23
+ idKind: "string",
24
+ recordType: AgentAcceptanceReceiptSchema,
25
+ extractId: (receipt) => {
26
+ if (receipt.key === undefined)
27
+ throw new TypeError("Agent receipt has no identity.");
28
+ return ReceiptIdentity.slot(receipt.key);
29
+ },
30
+ });
31
+ /**
32
+ * Stable physical group for Agent acceptance evidence.
33
+ */
34
+ export const agentAcceptanceReceiptGroup = new StorageGroup("spine_agent_acceptance");
35
+ /**
36
+ * Retains one atomic receipt handle per complete tenant boundary.
37
+ *
38
+ * @internal
39
+ */
40
+ export class AgentAcceptanceReceipts {
41
+ #factory;
42
+ #storages = new Map();
43
+ #active = 0;
44
+ #resolveIdle;
45
+ #closing;
46
+ /**
47
+ * Creates an inert receipt helper without opening storage.
48
+ *
49
+ * @param factory Provider factory used only when the first receipt is admitted.
50
+ */
51
+ constructor(factory) {
52
+ this.#factory = factory;
53
+ }
54
+ /**
55
+ * Accepts one typed delivery atomically; only `true` may permit live execution.
56
+ *
57
+ * @param context Complete physical tenant scope.
58
+ * @param input Typed delivery identity.
59
+ * @returns Whether this attempt first established the immutable receipt.
60
+ */
61
+ async accept(context, input) {
62
+ if (this.#closing !== undefined)
63
+ throw new Error("Agent acceptance receipts are closed.");
64
+ this.#active++;
65
+ try {
66
+ const key = clone(AgentAcceptanceKeySchema, this.#key(input));
67
+ const slot = ReceiptIdentity.slot(key);
68
+ const storage = this.#storage(context);
69
+ if (!storage.atomicCompareAndSet)
70
+ throw new Error("Agent acceptance requires atomic compare-and-set storage.");
71
+ if (await storage.compareAndSet(slot, undefined, create(AgentAcceptanceReceiptSchema, { key })))
72
+ return true;
73
+ const previous = await storage.read(slot);
74
+ if (previous?.key === undefined)
75
+ throw new Error("Agent acceptance receipt is missing after lost CAS.");
76
+ if (ReceiptIdentity.text(previous.key) !== ReceiptIdentity.text(key))
77
+ throw new Error("Agent acceptance receipt identity conflict.");
78
+ return false;
79
+ }
80
+ finally {
81
+ this.#active--;
82
+ if (this.#active === 0)
83
+ this.#resolveIdle?.();
84
+ }
85
+ }
86
+ /**
87
+ * Closes retained handles after fencing new admissions and draining admitted CAS operations.
88
+ *
89
+ * @returns Repeatable completion after admitted CAS operations and all handles settle.
90
+ */
91
+ close() {
92
+ if (this.#closing !== undefined)
93
+ return this.#closing;
94
+ const idle = this.#active === 0
95
+ ? Promise.resolve()
96
+ : new Promise((resolve) => {
97
+ this.#resolveIdle = () => {
98
+ resolve();
99
+ };
100
+ });
101
+ this.#closing = idle.then(() => {
102
+ this.#closeStorages();
103
+ });
104
+ return this.#closing;
105
+ }
106
+ /**
107
+ * Constructs one generated identity without changing the supplied type URL.
108
+ * @param input Typed delivery identity.
109
+ * @returns Its generated complete identity evidence.
110
+ */
111
+ #key(input) {
112
+ if (input.stateType.trim().length === 0 || input.recipientId.typeUrl.length === 0)
113
+ throw new TypeError("Agent acceptance requires a state type and typed recipient.");
114
+ return create(AgentAcceptanceKeySchema, {
115
+ stateType: input.stateType,
116
+ recipientId: input.recipientId,
117
+ source: input.source.kind === "command"
118
+ ? { case: "command", value: input.source.id }
119
+ : { case: "event", value: input.source.id },
120
+ action: input.action,
121
+ });
122
+ }
123
+ /**
124
+ * Finds or creates one handle for a complete physical tenant scope.
125
+ * @param context Complete physical scope.
126
+ * @returns Retained atomic record handle.
127
+ */
128
+ #storage(context) {
129
+ const boundary = TenantBoundary.of(context);
130
+ const retained = this.#storages.get(boundary.key);
131
+ if (retained !== undefined)
132
+ return retained;
133
+ const selected = boundary.tenantId === undefined
134
+ ? { name: context.name, multitenant: false }
135
+ : { name: context.name, multitenant: true, tenantId: boundary.tenantId };
136
+ const storage = this.#factory.createRecordStorage(selected, agentAcceptanceReceiptSpec, agentAcceptanceReceiptGroup);
137
+ this.#storages.set(boundary.key, storage);
138
+ return storage;
139
+ }
140
+ /**
141
+ * Attempts every retained close and preserves all cleanup failures.
142
+ */
143
+ #closeStorages() {
144
+ const errors = [];
145
+ for (const storage of this.#storages.values()) {
146
+ try {
147
+ storage.close();
148
+ }
149
+ catch (error) {
150
+ errors.push(error);
151
+ }
152
+ }
153
+ this.#storages.clear();
154
+ if (errors.length !== 0)
155
+ throw new AggregateError(errors, "Agent receipt cleanup failed.");
156
+ }
157
+ }
158
+ /**
159
+ * Encodes one complete typed identity for provider slots and collision checks.
160
+ */
161
+ const ReceiptIdentity = Object.freeze({
162
+ /**
163
+ * Encodes declared identity fields with stable framing and exact Any bytes.
164
+ *
165
+ * @param key Complete generated identity evidence.
166
+ * @returns Stable v1 tuple text for slot derivation and collision checking.
167
+ */
168
+ text(key) {
169
+ const recipient = key.recipientId;
170
+ const source = key.source;
171
+ const sourceId = source.case === "command"
172
+ ? source.value.uuid
173
+ : source.case === "event"
174
+ ? source.value.value
175
+ : undefined;
176
+ if (!key.stateType || !recipient?.typeUrl || !sourceId || !key.action)
177
+ throw new TypeError("Agent acceptance receipt has incomplete identity.");
178
+ return JSON.stringify([
179
+ "spine.server.agent.AgentAcceptanceKey/v1",
180
+ key.stateType,
181
+ recipient.typeUrl,
182
+ Buffer.from(recipient.value).toString("base64"),
183
+ source.case,
184
+ sourceId,
185
+ key.action,
186
+ ]);
187
+ },
188
+ /**
189
+ * Calculates the fixed provider slot from the complete typed identity.
190
+ *
191
+ * @param key Complete generated identity evidence.
192
+ * @returns Versioned 67-character record slot.
193
+ */
194
+ slot(key) {
195
+ return `v1:${createHash("sha256").update(this.text(key), "utf8").digest("hex")}`;
196
+ },
197
+ });
198
+ //# sourceMappingURL=agent-acceptance-receipts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-acceptance-receipts.js","sourceRoot":"","sources":["../../src/agent/agent-acceptance-receipts.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,23 @@
1
1
  import type { AiRegistry } from "@spine-event-engine/ai";
2
- interface CapacityRequest {
3
- readonly key: string;
4
- readonly signal: AbortSignal;
5
- readonly run: () => Promise<void>;
2
+ /**
3
+ * A local slot retained before an Agent receipt is accepted.
4
+ */
5
+ export interface AgentCapacityReservation {
6
+ /**
7
+ * Settles after this reservation releases or its admitted turn finishes.
8
+ */
9
+ readonly completed: Promise<void>;
10
+ /**
11
+ * Starts work after Inbox acknowledgement and the Agent turn become available.
12
+ *
13
+ * @param onRun Callback to run after capacity admission.
14
+ * @returns Completion after admitted Agent work finishes.
15
+ */
16
+ run(onRun: () => Promise<void>): Promise<void>;
17
+ /**
18
+ * Clears a slot when receipt or acknowledgement admission does not complete.
19
+ */
20
+ release(): void;
6
21
  }
7
22
  /**
8
23
  * Schedules active Agent transitions and resident waiting hints across one AI registry.
@@ -32,12 +47,25 @@ export declare class AgentExecutionCapacity {
32
47
  */
33
48
  full(): boolean;
34
49
  /**
35
- * Tries to retain one descriptor; overflow remains in durable storage.
50
+ * Observes released Agent identities and available registry capacity.
51
+ *
52
+ * @param onAvailable Callback invoked when capacity becomes available.
53
+ * @returns A callback that removes this capacity listener.
54
+ */
55
+ onAvailable(onAvailable: (key: string) => void): () => void;
56
+ /**
57
+ * Captures the current release generation for gap-free rechecking.
58
+ *
59
+ * @returns The current release generation for gap-free rechecking.
60
+ */
61
+ availabilityGeneration(): number;
62
+ /**
63
+ * Acquires bounded resident capacity before a durable Agent receipt attempt.
36
64
  *
37
- * @param request Keyed work hint and cancellation signal from one Bounded Context.
38
- * @returns Completion of retained work, or undefined when admission is declined.
65
+ * @param key Physical or logical identity key.
66
+ * @param signal Signal or cancellation signal for this operation.
67
+ * @returns A capacity reservation or undefined when admission is unavailable.
39
68
  */
40
- trySubmit(request: CapacityRequest): Promise<void> | undefined;
69
+ reserve(key: string, signal: AbortSignal): AgentCapacityReservation | undefined;
41
70
  }
42
- export {};
43
71
  //# sourceMappingURL=agent-execution-capacity.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-execution-capacity.d.ts","sourceRoot":"","sources":["../../src/agent/agent-execution-capacity.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD,UAAU,eAAe;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC;AAWD;;GAEG;AACH,qBAAa,sBAAsB;;IAc/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAR1B;;;;;OAKG;gBAEgB,UAAU,CAAC,EAAE,MAAM,YAAA,EACnB,MAAM,CAAC,EAAE,MAAM,YAAA;IASlC;;;;;OAKG;IACH,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,GAAG,sBAAsB;IAYxD;;;;OAIG;IACH,IAAI,IAAI,OAAO;IASf;;;;;OAKG;IACH,SAAS,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS;CA2E/D"}
1
+ {"version":3,"file":"agent-execution-capacity.d.ts","sourceRoot":"","sources":["../../src/agent/agent-execution-capacity.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAElC;;;;;OAKG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/C;;OAEG;IACH,OAAO,IAAI,IAAI,CAAC;CACjB;AAcD;;GAEG;AACH,qBAAa,sBAAsB;;IAkB/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAR1B;;;;;OAKG;gBAEgB,UAAU,CAAC,EAAE,MAAM,YAAA,EACnB,MAAM,CAAC,EAAE,MAAM,YAAA;IASlC;;;;;OAKG;IACH,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,GAAG,sBAAsB;IAYxD;;;;OAIG;IACH,IAAI,IAAI,OAAO;IASf;;;;;OAKG;IACH,WAAW,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI;IAO3D;;;;OAIG;IACH,sBAAsB,IAAI,MAAM;IAIhC;;;;;;OAMG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,wBAAwB,GAAG,SAAS;CA8GhF"}
@@ -22,6 +22,8 @@ export class AgentExecutionCapacity {
22
22
  #entries = new Map();
23
23
  #active = new Set();
24
24
  #waiting = [];
25
+ #listeners = new Set();
26
+ #availabilityGeneration = 0;
25
27
  /**
26
28
  * Creates a registry gate with optional active and resident waiting limits.
27
29
  *
@@ -62,17 +64,39 @@ export class AgentExecutionCapacity {
62
64
  this.#waiting.length >= this.queued);
63
65
  }
64
66
  /**
65
- * Tries to retain one descriptor; overflow remains in durable storage.
67
+ * Observes released Agent identities and available registry capacity.
66
68
  *
67
- * @param request Keyed work hint and cancellation signal from one Bounded Context.
68
- * @returns Completion of retained work, or undefined when admission is declined.
69
+ * @param onAvailable Callback invoked when capacity becomes available.
70
+ * @returns A callback that removes this capacity listener.
69
71
  */
70
- trySubmit(request) {
71
- if (request.signal.aborted || this.#entries.has(request.key) || this.full())
72
+ onAvailable(onAvailable) {
73
+ this.#listeners.add(onAvailable);
74
+ return () => {
75
+ this.#listeners.delete(onAvailable);
76
+ };
77
+ }
78
+ /**
79
+ * Captures the current release generation for gap-free rechecking.
80
+ *
81
+ * @returns The current release generation for gap-free rechecking.
82
+ */
83
+ availabilityGeneration() {
84
+ return this.#availabilityGeneration;
85
+ }
86
+ /**
87
+ * Acquires bounded resident capacity before a durable Agent receipt attempt.
88
+ *
89
+ * @param key Physical or logical identity key.
90
+ * @param signal Signal or cancellation signal for this operation.
91
+ * @returns A capacity reservation or undefined when admission is unavailable.
92
+ */
93
+ reserve(key, signal) {
94
+ if (signal.aborted || this.#entries.has(key) || this.full())
72
95
  return undefined;
73
96
  const completion = Promise.withResolvers();
74
97
  const entry = {
75
- ...request,
98
+ key,
99
+ signal,
76
100
  completion,
77
101
  started: false,
78
102
  settled: false,
@@ -83,21 +107,39 @@ export class AgentExecutionCapacity {
83
107
  this.#entries.set(entry.key, entry);
84
108
  entry.signal.addEventListener("abort", entry.onAbort, { once: true });
85
109
  if (this.concurrent === undefined || this.#active.size < this.concurrent)
86
- this.#start(entry);
110
+ this.#active.add(entry);
87
111
  else
88
112
  this.#waiting.push(entry);
89
- return completion.promise;
113
+ return {
114
+ completed: entry.completion.promise,
115
+ run: (onRun) => this.#run(entry, onRun),
116
+ release: () => {
117
+ this.#cancelWaiting(entry);
118
+ },
119
+ };
120
+ }
121
+ /**
122
+ * Starts a reserved descriptor only when it has an active slot.
123
+ */
124
+ #run(entry, onRun) {
125
+ if (entry.settled || entry.run !== undefined)
126
+ throw new Error("Agent capacity reservation is no longer available.");
127
+ entry.run = onRun;
128
+ if (this.#active.has(entry))
129
+ this.#start(entry);
130
+ return entry.completion.promise;
90
131
  }
91
132
  /**
92
133
  * Starts a retained descriptor only after it receives an active slot.
93
134
  */
94
135
  #start(entry) {
136
+ if (entry.run === undefined || entry.started || entry.settled)
137
+ return;
95
138
  entry.started = true;
96
- this.#active.add(entry);
97
139
  void Promise.resolve()
98
140
  .then(() => {
99
141
  if (!entry.signal.aborted)
100
- return entry.run();
142
+ return entry.run?.();
101
143
  })
102
144
  .then(() => {
103
145
  this.#finish(entry);
@@ -111,10 +153,15 @@ export class AgentExecutionCapacity {
111
153
  #cancelWaiting(entry) {
112
154
  if (entry.started || entry.settled)
113
155
  return;
114
- const index = this.#waiting.indexOf(entry);
115
- if (index >= 0)
116
- this.#waiting.splice(index, 1);
117
- this.#settle(entry);
156
+ if (this.#active.has(entry))
157
+ this.#finish(entry);
158
+ else {
159
+ const index = this.#waiting.indexOf(entry);
160
+ if (index >= 0)
161
+ this.#waiting.splice(index, 1);
162
+ this.#settle(entry);
163
+ this.#notifyAvailable(entry.key);
164
+ }
118
165
  }
119
166
  /**
120
167
  * Releases a finished slot once, then starts the oldest eligible hint.
@@ -127,9 +174,20 @@ export class AgentExecutionCapacity {
127
174
  while ((this.concurrent === undefined || this.#active.size < this.concurrent) &&
128
175
  this.#waiting.length > 0) {
129
176
  const next = this.#waiting.shift();
130
- if (next !== undefined && !next.settled)
177
+ if (next !== undefined && !next.settled) {
178
+ this.#active.add(next);
131
179
  this.#start(next);
180
+ }
132
181
  }
182
+ this.#notifyAvailable(entry.key);
183
+ }
184
+ /**
185
+ * Wakes eligibility observers after active and queued positions settle.
186
+ */
187
+ #notifyAvailable(key) {
188
+ this.#availabilityGeneration += 1;
189
+ for (const listener of this.#listeners)
190
+ listener(key);
133
191
  }
134
192
  /**
135
193
  * Removes one reservation and completes its bounded wait promise.
@@ -1 +1 @@
1
- {"version":3,"file":"agent-execution-capacity.js","sourceRoot":"","sources":["../../src/agent/agent-execution-capacity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-execution-capacity.js","sourceRoot":"","sources":["../../src/agent/agent-execution-capacity.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { ConversationHistoryRead, HistoryPage, HistoryRead } from "@spine-event-engine/ai";
2
- import type { Event } from "@spine-event-engine/proto";
2
+ import type { ActorContext, Event } from "@spine-event-engine/proto";
3
3
  import { type AgentHistoryEntry, type ConversationRecord } from "@spine-event-engine/proto/agent";
4
4
  import { type AgentHistoryPage, type AgentHistoryStorage, type AgentHistoryView } from "@spine-event-engine/storage/provider";
5
5
  /**
@@ -24,16 +24,16 @@ export interface AgentHistoryScope {
24
24
  readonly entity: string;
25
25
  }
26
26
  /**
27
- * Returns a saved complete page or delegates to a live provider read.
27
+ * Reads a current indexed provider page through one live Agent interceptor.
28
28
  *
29
29
  * @param scope Exact repository and Agent scope.
30
- * @param view Indexed history view.
31
30
  * @param request Public read request.
32
31
  * @param live Loads the current provider page only when needed.
33
32
  * @param maxBytes Optional response-byte ceiling for this read.
34
- * @returns The saved or newly loaded complete provider page.
33
+ * @param present Applies outward policy after accounting for provider bytes.
34
+ * @returns The current complete provider page.
35
35
  */
36
- export type AgentHistoryJournal = (scope: AgentHistoryScope, view: AgentHistoryView, request: HistoryRead, live: () => Promise<AgentHistoryPage>, maxBytes: number | undefined) => Promise<AgentHistoryPage>;
36
+ export type AgentHistoryReadInterceptor = (scope: AgentHistoryScope, request: HistoryRead, live: () => Promise<AgentHistoryPage>, maxBytes: number | undefined, present: (page: AgentHistoryPage) => Promise<HistoryPage<AgentHistoryEntry>>) => Promise<HistoryPage<AgentHistoryEntry>>;
37
37
  /**
38
38
  * Repository binding for an Agent's mandatory indexed history.
39
39
  *
@@ -49,17 +49,37 @@ export interface AgentHistoryBinding<Id> {
49
49
  */
50
50
  readonly entityId: Id;
51
51
  /**
52
- * Full cursor and journal scope.
52
+ * Full cursor and read scope.
53
53
  */
54
54
  readonly scope: AgentHistoryScope;
55
55
  /**
56
- * Optional durable read replay interceptor.
56
+ * Optional live read interceptor.
57
57
  */
58
- readonly journal?: AgentHistoryJournal;
58
+ readonly interceptRead?: AgentHistoryReadInterceptor;
59
59
  /**
60
60
  * Optional maximum serialized entry bytes in one response.
61
61
  */
62
62
  readonly maxBytes?: number;
63
+ /**
64
+ * Admits the complete protected page, including interceptor and provider work.
65
+ * @param onRead Complete page read to admit.
66
+ * @returns Its result after all work settles.
67
+ */
68
+ readonly onAdmit?: (onRead: () => Promise<HistoryPage<AgentHistoryEntry>>) => Promise<HistoryPage<AgentHistoryEntry>>;
69
+ /**
70
+ * Captures active signal metadata before the protected read can await.
71
+ * @returns Detached actor context when a handler supplies one.
72
+ */
73
+ readonly captureActor?: () => ActorContext | undefined;
74
+ /**
75
+ * Transforms outward domain records after provider read and before read completion.
76
+ * @param page Retained provider entries and original continuation.
77
+ * @param view Requested history category.
78
+ * @param request Captured page request.
79
+ * @param actorContext Actor metadata from the active handler, when present.
80
+ * @returns Visible entries with the original continuation.
81
+ */
82
+ readonly filterPage?: (page: HistoryPage<AgentHistoryEntry>, view: AgentHistoryView, request: HistoryRead, actorContext?: ActorContext) => Promise<HistoryPage<AgentHistoryEntry>>;
63
83
  }
64
84
  /**
65
85
  * Internal accessors shared by the Agent base and repository runtime.
@@ -74,13 +94,13 @@ export interface AgentHistoryReadAccess {
74
94
  */
75
95
  bind<Id>(entity: object, binding: AgentHistoryBinding<Id>): void;
76
96
  /**
77
- * Binds a journal that records and replays this handler's history reads.
97
+ * Binds a read interceptor for the current handler invocation.
78
98
  *
79
99
  * @param entity Agent with an existing repository history binding.
80
- * @param journal Intercepts history reads during the handler.
100
+ * @param interceptRead Intercepts current provider reads during the handler.
81
101
  * @returns Callback that restores the original history binding after the handler finishes.
82
102
  */
83
- withJournal(entity: object, journal: AgentHistoryJournal): () => void;
103
+ withReadInterceptor(entity: object, interceptRead: AgentHistoryReadInterceptor): () => void;
84
104
  /**
85
105
  * Reads all categories.
86
106
  *
@@ -129,9 +149,10 @@ export interface AgentHistoryReadAccess {
129
149
  * @param binding Exact Agent repository and tenant storage scope.
130
150
  * @param view Indexed history view.
131
151
  * @param request Public page request.
152
+ * @param actorContext Actor metadata captured at invocation.
132
153
  * @returns Retained entries and opaque continuation.
133
154
  */
134
- readBound<Id>(binding: AgentHistoryBinding<Id>, view: AgentHistoryView, request: HistoryRead): Promise<HistoryPage<AgentHistoryEntry>>;
155
+ readBound<Id>(binding: AgentHistoryBinding<Id>, view: AgentHistoryView, request: HistoryRead, actorContext?: ActorContext): Promise<HistoryPage<AgentHistoryEntry>>;
135
156
  /**
136
157
  * Persists a genuine framework System Event.
137
158
  *
@@ -1 +1 @@
1
- {"version":3,"file":"agent-history.d.ts","sourceRoot":"","sources":["../../src/agent/agent-history.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,uBAAuB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAChG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACxB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACtB,MAAM,sCAAsC,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAChC,KAAK,EAAE,iBAAiB,EACxB,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,EACrC,QAAQ,EAAE,MAAM,GAAG,SAAS,KACzB,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAE/B;;;;GAIG;AACH,MAAM,WAAW,mBAAmB,CAAC,EAAE;IACrC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC,EAAE,CAAC,CAAC;IAE1C;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAElC;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAEvC;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAID;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IAEjE;;;;;;OAMG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,MAAM,IAAI,CAAC;IAEtE;;;;;;OAMG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAEpF;;;;;;OAMG;IACH,YAAY,CACV,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAE5C;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IAE1E;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IAE1E;;;;;;;OAOG;IACH,IAAI,CACF,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAE3C;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,EACV,OAAO,EAAE,mBAAmB,CAAC,EAAE,CAAC,EAChC,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAE3C;;;;;;OAMG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3D;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,sBAkL9B,CAAC"}
1
+ {"version":3,"file":"agent-history.d.ts","sourceRoot":"","sources":["../../src/agent/agent-history.ts"],"names":[],"mappings":"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"}