@graphrefly/ts 0.0.0 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +135 -0
- package/dist/actions-types-CSC3NMDl.d.ts +657 -0
- package/dist/actions-types-wl9Mgkmr.d.cts +657 -0
- package/dist/adapters/index.cjs +5219 -2974
- package/dist/adapters/index.cjs.map +1 -1
- package/dist/adapters/index.d.cts +204 -192
- package/dist/adapters/index.d.ts +204 -192
- package/dist/adapters/index.js +3685 -1833
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/nestjs/microservices.cjs +841 -0
- package/dist/adapters/nestjs/microservices.cjs.map +1 -0
- package/dist/adapters/nestjs/microservices.d.cts +45 -0
- package/dist/adapters/nestjs/microservices.d.ts +45 -0
- package/dist/adapters/nestjs/microservices.js +206 -0
- package/dist/adapters/nestjs/microservices.js.map +1 -0
- package/dist/adapters/nestjs/native.cjs +1391 -0
- package/dist/adapters/nestjs/native.cjs.map +1 -0
- package/dist/adapters/nestjs/native.d.cts +111 -0
- package/dist/adapters/nestjs/native.d.ts +111 -0
- package/dist/adapters/nestjs/native.js +577 -0
- package/dist/adapters/nestjs/native.js.map +1 -0
- package/dist/adapters/nestjs/websockets.cjs +924 -0
- package/dist/adapters/nestjs/websockets.cjs.map +1 -0
- package/dist/adapters/nestjs/websockets.d.cts +47 -0
- package/dist/adapters/nestjs/websockets.d.ts +47 -0
- package/dist/adapters/nestjs/websockets.js +286 -0
- package/dist/adapters/nestjs/websockets.js.map +1 -0
- package/dist/adapters/nestjs.cjs +1085 -0
- package/dist/adapters/nestjs.cjs.map +1 -0
- package/dist/adapters/nestjs.d.cts +385 -0
- package/dist/adapters/nestjs.d.ts +385 -0
- package/dist/adapters/nestjs.js +112 -0
- package/dist/adapters/nestjs.js.map +1 -0
- package/dist/adapters/observe-storage.d.cts +4 -4
- package/dist/adapters/observe-storage.d.ts +4 -4
- package/dist/adapters/observe-storage.js +5 -4
- package/dist/adapters/observe-storage.js.map +1 -1
- package/dist/adapters/react.cjs +166 -0
- package/dist/adapters/react.cjs.map +1 -0
- package/dist/adapters/react.d.cts +31 -0
- package/dist/adapters/react.d.ts +31 -0
- package/dist/adapters/react.js +51 -0
- package/dist/adapters/react.js.map +1 -0
- package/dist/adapters/solid.cjs +157 -0
- package/dist/adapters/solid.cjs.map +1 -0
- package/dist/adapters/solid.d.cts +26 -0
- package/dist/adapters/solid.d.ts +26 -0
- package/dist/adapters/solid.js +48 -0
- package/dist/adapters/solid.js.map +1 -0
- package/dist/adapters/svelte.cjs +148 -0
- package/dist/adapters/svelte.cjs.map +1 -0
- package/dist/adapters/svelte.d.cts +31 -0
- package/dist/adapters/svelte.d.ts +31 -0
- package/dist/adapters/svelte.js +46 -0
- package/dist/adapters/svelte.js.map +1 -0
- package/dist/adapters/vue.cjs +155 -0
- package/dist/adapters/vue.cjs.map +1 -0
- package/dist/adapters/vue.d.cts +26 -0
- package/dist/adapters/vue.d.ts +26 -0
- package/dist/adapters/vue.js +46 -0
- package/dist/adapters/vue.js.map +1 -0
- package/dist/agent-runtime-types-core-CaXfKNtY.d.cts +406 -0
- package/dist/agent-runtime-types-core-hU299uIC.d.ts +406 -0
- package/dist/agent-runtime-types-tool-BEpSINol.d.ts +695 -0
- package/dist/agent-runtime-types-tool-DninPEzk.d.cts +695 -0
- package/dist/agentic-memory-retention-BmGX368S.d.ts +14 -0
- package/dist/agentic-memory-retention-Ih1qhX9Z.d.cts +14 -0
- package/dist/agentic-memory-types-CVSUS6XR.d.ts +473 -0
- package/dist/agentic-memory-types-FnnYlVUs.d.cts +473 -0
- package/dist/capability-admission-BW2CziT6.d.ts +102 -0
- package/dist/capability-admission-lwSecxXs.d.cts +102 -0
- package/dist/chunk-2KUAG2GZ.js +9693 -0
- package/dist/chunk-2KUAG2GZ.js.map +1 -0
- package/dist/chunk-2NJP6GO4.js +1320 -0
- package/dist/chunk-2NJP6GO4.js.map +1 -0
- package/dist/{chunk-GDL26N2T.js → chunk-3KN7NJDR.js} +2 -2
- package/dist/{chunk-COHO25CZ.js → chunk-4NWSNI4K.js} +2232 -1672
- package/dist/chunk-4NWSNI4K.js.map +1 -0
- package/dist/{chunk-Z2ANQ6JW.js → chunk-4Q77MMJY.js} +2 -2
- package/dist/chunk-6E76H4OU.js +132 -0
- package/dist/chunk-6E76H4OU.js.map +1 -0
- package/dist/chunk-7GOTIIQ7.js +819 -0
- package/dist/chunk-7GOTIIQ7.js.map +1 -0
- package/dist/{chunk-D6BG7U6A.js → chunk-7HZRJMN6.js} +3 -3
- package/dist/{chunk-SCRFRCGR.js → chunk-BSQGE5PS.js} +1 -1
- package/dist/{chunk-PKVBHGBM.js → chunk-CJIFGJQG.js} +7 -7
- package/dist/{chunk-G4M3NHRJ.js → chunk-CX6B6PO2.js} +93 -10
- package/dist/chunk-CX6B6PO2.js.map +1 -0
- package/dist/chunk-DGUM43GV.js +11 -0
- package/dist/chunk-DGUM43GV.js.map +1 -0
- package/dist/{chunk-JIMUDQN3.js → chunk-E4QCH32M.js} +449 -447
- package/dist/chunk-E4QCH32M.js.map +1 -0
- package/dist/{chunk-RIIOUTGM.js → chunk-ECURQ3HD.js} +19 -129
- package/dist/chunk-ECURQ3HD.js.map +1 -0
- package/dist/{chunk-2ILL7HQI.js → chunk-EOKT4QFF.js} +134 -128
- package/dist/chunk-EOKT4QFF.js.map +1 -0
- package/dist/{chunk-K3FXTC3I.js → chunk-HJACH5PU.js} +3 -3
- package/dist/{chunk-GTPCOEOZ.js → chunk-IDMLXLLG.js} +3 -3
- package/dist/{chunk-DKP56CSW.js → chunk-JKAYLDQV.js} +2 -2
- package/dist/{chunk-4VLAQHZI.js → chunk-K7FB3JTD.js} +17 -1
- package/dist/chunk-K7FB3JTD.js.map +1 -0
- package/dist/chunk-L6LDXRWE.js +219 -0
- package/dist/chunk-L6LDXRWE.js.map +1 -0
- package/dist/chunk-M7J6Z4IJ.js +1930 -0
- package/dist/chunk-M7J6Z4IJ.js.map +1 -0
- package/dist/chunk-MQEQMS7B.js +1009 -0
- package/dist/chunk-MQEQMS7B.js.map +1 -0
- package/dist/chunk-MTELVIYR.js +1421 -0
- package/dist/chunk-MTELVIYR.js.map +1 -0
- package/dist/chunk-PVC7WDKI.js +885 -0
- package/dist/chunk-PVC7WDKI.js.map +1 -0
- package/dist/chunk-RAHNUYA5.js +368 -0
- package/dist/chunk-RAHNUYA5.js.map +1 -0
- package/dist/{chunk-DK554R7P.js → chunk-S6HXABGL.js} +2 -1
- package/dist/chunk-S6HXABGL.js.map +1 -0
- package/dist/{chunk-I3IHOHCJ.js → chunk-SHZDP2MQ.js} +1181 -1001
- package/dist/chunk-SHZDP2MQ.js.map +1 -0
- package/dist/{chunk-Y3ZLRGHC.js → chunk-SIDJO2T4.js} +16 -16
- package/dist/chunk-STXRMPW4.js +4131 -0
- package/dist/chunk-STXRMPW4.js.map +1 -0
- package/dist/{chunk-JR4IKCR2.js → chunk-TPND5MJS.js} +5 -5
- package/dist/chunk-TQPCAIQI.js +612 -0
- package/dist/chunk-TQPCAIQI.js.map +1 -0
- package/dist/chunk-UT3MHJCW.js +49 -0
- package/dist/chunk-UT3MHJCW.js.map +1 -0
- package/dist/{chunk-TEW47IVR.js → chunk-VPEFSDME.js} +2 -2
- package/dist/{chunk-SWTLEQL6.js → chunk-WQIA3GFB.js} +2 -2
- package/dist/chunk-WQIA3GFB.js.map +1 -0
- package/dist/{chunk-DJC4CHLQ.js → chunk-YDWBXXQZ.js} +5 -5
- package/dist/{chunk-6PHB5CJS.js → chunk-ZLFRB6FI.js} +2 -2
- package/dist/composition/index.cjs +1256 -1059
- package/dist/composition/index.cjs.map +1 -1
- package/dist/composition/index.d.cts +4 -4
- package/dist/composition/index.d.ts +4 -4
- package/dist/composition/index.js +7 -6
- package/dist/core/index.cjs +1218 -1021
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.cts +2 -2
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.js +5 -4
- package/dist/cqrs/index.cjs.map +1 -1
- package/dist/cqrs/index.d.cts +4 -4
- package/dist/cqrs/index.d.ts +4 -4
- package/dist/cqrs/index.js +3 -2
- package/dist/cqrs/index.js.map +1 -1
- package/dist/cqrs/messaging.cjs +312 -0
- package/dist/cqrs/messaging.cjs.map +1 -0
- package/dist/cqrs/messaging.d.cts +57 -0
- package/dist/cqrs/messaging.d.ts +57 -0
- package/dist/cqrs/messaging.js +274 -0
- package/dist/cqrs/messaging.js.map +1 -0
- package/dist/cqrs/work-queue.cjs +329 -0
- package/dist/cqrs/work-queue.cjs.map +1 -0
- package/dist/cqrs/work-queue.d.cts +90 -0
- package/dist/cqrs/work-queue.d.ts +90 -0
- package/dist/cqrs/work-queue.js +292 -0
- package/dist/cqrs/work-queue.js.map +1 -0
- package/dist/data/index.cjs +19 -0
- package/dist/data/index.cjs.map +1 -0
- package/dist/data/index.d.cts +36 -0
- package/dist/data/index.d.ts +36 -0
- package/dist/data/index.js +1 -0
- package/dist/data/index.js.map +1 -0
- package/dist/data-structures/index.cjs +1252 -1052
- package/dist/data-structures/index.cjs.map +1 -1
- package/dist/data-structures/index.d.cts +9 -8
- package/dist/data-structures/index.d.ts +9 -8
- package/dist/data-structures/index.js +9 -7
- package/dist/{describe-BZb7AS2y.d.ts → describe-B_A5fbXH.d.ts} +1 -1
- package/dist/{describe-Ciu8SUnN.d.cts → describe-CQRrkv-Q.d.cts} +1 -1
- package/dist/executors/tool-provider-adapters.cjs +3091 -0
- package/dist/executors/tool-provider-adapters.cjs.map +1 -0
- package/dist/executors/tool-provider-adapters.d.cts +174 -0
- package/dist/executors/tool-provider-adapters.d.ts +174 -0
- package/dist/executors/tool-provider-adapters.js +1336 -0
- package/dist/executors/tool-provider-adapters.js.map +1 -0
- package/dist/executors/tool-provider-runtime.cjs +5178 -0
- package/dist/executors/tool-provider-runtime.cjs.map +1 -0
- package/dist/executors/tool-provider-runtime.d.cts +17 -0
- package/dist/executors/tool-provider-runtime.d.ts +17 -0
- package/dist/executors/tool-provider-runtime.js +15 -0
- package/dist/executors/tool-provider-runtime.js.map +1 -0
- package/dist/executors/tool-provider.cjs +6392 -0
- package/dist/executors/tool-provider.cjs.map +1 -0
- package/dist/executors/tool-provider.d.cts +60 -0
- package/dist/executors/tool-provider.d.ts +60 -0
- package/dist/executors/tool-provider.js +89 -0
- package/dist/executors/tool-provider.js.map +1 -0
- package/dist/executors/work-queue.cjs +342 -0
- package/dist/executors/work-queue.cjs.map +1 -0
- package/dist/executors/work-queue.d.cts +90 -0
- package/dist/executors/work-queue.d.ts +90 -0
- package/dist/executors/work-queue.js +306 -0
- package/dist/executors/work-queue.js.map +1 -0
- package/dist/graph/index.cjs +1536 -1324
- package/dist/graph/index.cjs.map +1 -1
- package/dist/graph/index.d.cts +10 -9
- package/dist/graph/index.d.ts +10 -9
- package/dist/graph/index.js +22 -20
- package/dist/{graph-s23RbbFO.d.cts → graph-CWK3HLPB.d.cts} +134 -132
- package/dist/{graph-DfdF9zy4.d.ts → graph-ho5sotHP.d.ts} +134 -132
- package/dist/{index-SnzZu3x7.d.ts → index-CQWcE0Dw.d.ts} +18 -4
- package/dist/{index-CAEmLCYF.d.cts → index-DHA1i67c.d.cts} +18 -4
- package/dist/index.cjs +3331 -3020
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +14 -10
- package/dist/index.d.ts +14 -10
- package/dist/index.js +114 -108
- package/dist/inspection/boundary.cjs +98 -0
- package/dist/inspection/boundary.cjs.map +1 -0
- package/dist/inspection/boundary.d.cts +61 -0
- package/dist/inspection/boundary.d.ts +61 -0
- package/dist/inspection/boundary.js +75 -0
- package/dist/inspection/boundary.js.map +1 -0
- package/dist/measurements-C0mAvWU1.d.cts +164 -0
- package/dist/measurements-OMpCeBwh.d.ts +164 -0
- package/dist/{messages-BZqrGGm1.d.ts → messages-CAzUPPJM.d.cts} +10 -5
- package/dist/{messages-BZqrGGm1.d.cts → messages-CAzUPPJM.d.ts} +10 -5
- package/dist/messaging/index.cjs +756 -619
- package/dist/messaging/index.cjs.map +1 -1
- package/dist/messaging/index.d.cts +17 -226
- package/dist/messaging/index.d.ts +17 -226
- package/dist/messaging/index.js +19 -749
- package/dist/messaging/index.js.map +1 -1
- package/dist/operators/index.cjs +1256 -1059
- package/dist/operators/index.cjs.map +1 -1
- package/dist/operators/index.d.cts +6 -6
- package/dist/operators/index.d.ts +6 -6
- package/dist/operators/index.js +9 -8
- package/dist/orchestration/index.cjs +8664 -2617
- package/dist/orchestration/index.cjs.map +1 -1
- package/dist/orchestration/index.d.cts +171 -221
- package/dist/orchestration/index.d.ts +171 -221
- package/dist/orchestration/index.js +74 -982
- package/dist/orchestration/index.js.map +1 -1
- package/dist/orchestration/messaging.cjs +314 -0
- package/dist/orchestration/messaging.cjs.map +1 -0
- package/dist/orchestration/messaging.d.cts +56 -0
- package/dist/orchestration/messaging.d.ts +56 -0
- package/dist/orchestration/messaging.js +276 -0
- package/dist/orchestration/messaging.js.map +1 -0
- package/dist/orchestration/work-queue.cjs +1500 -0
- package/dist/orchestration/work-queue.cjs.map +1 -0
- package/dist/orchestration/work-queue.d.cts +196 -0
- package/dist/orchestration/work-queue.d.ts +196 -0
- package/dist/orchestration/work-queue.js +1289 -0
- package/dist/orchestration/work-queue.js.map +1 -0
- package/dist/patterns/event-flow.cjs +433 -0
- package/dist/patterns/event-flow.cjs.map +1 -0
- package/dist/patterns/event-flow.d.cts +115 -0
- package/dist/patterns/event-flow.d.ts +115 -0
- package/dist/patterns/event-flow.js +14 -0
- package/dist/patterns/event-flow.js.map +1 -0
- package/dist/patterns/index.cjs +748 -355
- package/dist/patterns/index.cjs.map +1 -1
- package/dist/patterns/index.d.cts +9 -5
- package/dist/patterns/index.d.ts +9 -5
- package/dist/patterns/index.js +13 -4
- package/dist/process-types-C9uMYz3i.d.ts +200 -0
- package/dist/process-types-h3uRlzDc.d.cts +200 -0
- package/dist/{reactive-collection-BxBqtIOE.d.cts → reactive-collection-B9R0Bl1P.d.cts} +11 -41
- package/dist/{reactive-collection-Cb1II1Fi.d.ts → reactive-collection-BXFrH0U2.d.ts} +11 -41
- package/dist/{reactive-collection-storage-D-KmjE0J.d.cts → reactive-collection-storage-BLGv8Xp8.d.cts} +5 -5
- package/dist/{reactive-collection-storage-BNiEc-Gd.d.ts → reactive-collection-storage-a4zD3665.d.ts} +5 -5
- package/dist/{reactive-map-BcB4KsQR.d.ts → reactive-map-C_8sOfdS.d.cts} +7 -6
- package/dist/{reactive-map-D-g3dv8I.d.cts → reactive-map-jle5dnok.d.ts} +7 -6
- package/dist/render/index.d.cts +3 -3
- package/dist/render/index.d.ts +3 -3
- package/dist/render/index.js +1 -0
- package/dist/scheduled-readiness-5rwQlyjV.d.ts +91 -0
- package/dist/scheduled-readiness-DpRY8jI0.d.cts +91 -0
- package/dist/semantic-memory-graph-C2ZUwIlq.d.ts +30 -0
- package/dist/semantic-memory-graph-DlZBD_Eu.d.cts +30 -0
- package/dist/{semantic-memory-graph-BYoIlP35.d.cts → semantic-memory-graph-types-BvzdqmkY.d.cts} +2 -28
- package/dist/{semantic-memory-graph-CxyXLms3.d.ts → semantic-memory-graph-types-Ci-OtahO.d.ts} +2 -28
- package/dist/solutions/index.cjs +6788 -2128
- package/dist/solutions/index.cjs.map +1 -1
- package/dist/solutions/index.d.cts +15 -519
- package/dist/solutions/index.d.ts +15 -519
- package/dist/solutions/index.js +91 -7
- package/dist/solutions/reactive-layout/browser/index.cjs +457 -0
- package/dist/solutions/reactive-layout/browser/index.cjs.map +1 -0
- package/dist/solutions/reactive-layout/browser/index.d.cts +44 -0
- package/dist/solutions/reactive-layout/browser/index.d.ts +44 -0
- package/dist/solutions/reactive-layout/browser/index.js +69 -0
- package/dist/solutions/reactive-layout/browser/index.js.map +1 -0
- package/dist/solutions/reactive-layout/index.cjs +4494 -0
- package/dist/solutions/reactive-layout/index.cjs.map +1 -0
- package/dist/solutions/reactive-layout/index.d.cts +37 -0
- package/dist/solutions/reactive-layout/index.d.ts +37 -0
- package/dist/solutions/reactive-layout/index.js +146 -0
- package/dist/solutions/reactive-layout/index.js.map +1 -0
- package/dist/solutions/reactive-layout/node-canvas/index.cjs +555 -0
- package/dist/solutions/reactive-layout/node-canvas/index.cjs.map +1 -0
- package/dist/solutions/reactive-layout/node-canvas/index.d.cts +54 -0
- package/dist/solutions/reactive-layout/node-canvas/index.d.ts +54 -0
- package/dist/solutions/reactive-layout/node-canvas/index.js +131 -0
- package/dist/solutions/reactive-layout/node-canvas/index.js.map +1 -0
- package/dist/solutions/reactive-layout/react-native/index.cjs +504 -0
- package/dist/solutions/reactive-layout/react-native/index.cjs.map +1 -0
- package/dist/solutions/reactive-layout/react-native/index.d.cts +51 -0
- package/dist/solutions/reactive-layout/react-native/index.d.ts +51 -0
- package/dist/solutions/reactive-layout/react-native/index.js +77 -0
- package/dist/solutions/reactive-layout/react-native/index.js.map +1 -0
- package/dist/solutions/reactive-layout/skia/index.cjs +557 -0
- package/dist/solutions/reactive-layout/skia/index.cjs.map +1 -0
- package/dist/solutions/reactive-layout/skia/index.d.cts +64 -0
- package/dist/solutions/reactive-layout/skia/index.d.ts +64 -0
- package/dist/solutions/reactive-layout/skia/index.js +70 -0
- package/dist/solutions/reactive-layout/skia/index.js.map +1 -0
- package/dist/solutions/work-item/actions.cjs +2345 -0
- package/dist/solutions/work-item/actions.cjs.map +1 -0
- package/dist/solutions/work-item/actions.d.cts +40 -0
- package/dist/solutions/work-item/actions.d.ts +40 -0
- package/dist/solutions/work-item/actions.js +2078 -0
- package/dist/solutions/work-item/actions.js.map +1 -0
- package/dist/solutions/work-item/scheduling.cjs +9797 -0
- package/dist/solutions/work-item/scheduling.cjs.map +1 -0
- package/dist/solutions/work-item/scheduling.d.cts +1868 -0
- package/dist/solutions/work-item/scheduling.d.ts +1868 -0
- package/dist/solutions/work-item/scheduling.js +146 -0
- package/dist/solutions/work-item/scheduling.js.map +1 -0
- package/dist/solutions/work-item/work-queue.cjs +306 -0
- package/dist/solutions/work-item/work-queue.cjs.map +1 -0
- package/dist/solutions/work-item/work-queue.d.cts +71 -0
- package/dist/solutions/work-item/work-queue.d.ts +71 -0
- package/dist/solutions/work-item/work-queue.js +270 -0
- package/dist/solutions/work-item/work-queue.js.map +1 -0
- package/dist/sources/browser.cjs +1399 -1052
- package/dist/sources/browser.cjs.map +1 -1
- package/dist/sources/browser.d.cts +33 -6
- package/dist/sources/browser.d.ts +33 -6
- package/dist/sources/browser.js +73 -6
- package/dist/sources/browser.js.map +1 -1
- package/dist/sources/index.cjs +1345 -1065
- package/dist/sources/index.cjs.map +1 -1
- package/dist/sources/index.d.cts +5 -5
- package/dist/sources/index.d.ts +5 -5
- package/dist/sources/index.js +7 -6
- package/dist/sources/node.cjs.map +1 -1
- package/dist/sources/node.d.cts +4 -4
- package/dist/sources/node.d.ts +4 -4
- package/dist/sources/node.js +2 -1
- package/dist/sources/node.js.map +1 -1
- package/dist/storage/browser.cjs +16 -0
- package/dist/storage/browser.cjs.map +1 -1
- package/dist/storage/browser.js +4 -3
- package/dist/storage/browser.js.map +1 -1
- package/dist/storage/index.cjs +16 -0
- package/dist/storage/index.cjs.map +1 -1
- package/dist/storage/index.d.cts +6 -5
- package/dist/storage/index.d.ts +6 -5
- package/dist/storage/index.js +10 -9
- package/dist/storage/node.cjs +16 -0
- package/dist/storage/node.cjs.map +1 -1
- package/dist/storage/node.js +4 -3
- package/dist/storage/node.js.map +1 -1
- package/dist/store-BmtEs9mG.d.ts +123 -0
- package/dist/store-PAAsYvML.d.cts +123 -0
- package/dist/testing/index.cjs +1 -0
- package/dist/testing/index.cjs.map +1 -1
- package/dist/testing/index.d.cts +1 -1
- package/dist/testing/index.d.ts +1 -1
- package/dist/testing/index.js +3 -2
- package/dist/types-BRNKoFHj.d.ts +357 -0
- package/dist/{types-h12mNYbq.d.ts → types-BS6CyR-x.d.cts} +49 -130
- package/dist/types-BWK2ay3e.d.cts +457 -0
- package/dist/types-BXKSAoE1.d.cts +357 -0
- package/dist/types-BaPpZItj.d.ts +457 -0
- package/dist/types-BhveCMg5.d.cts +274 -0
- package/dist/{types-bNMSWKqF.d.cts → types-C9NOgNJw.d.ts} +49 -130
- package/dist/types-CTsQ8Ww4.d.ts +274 -0
- package/dist/types-DL_05n2M.d.ts +34 -0
- package/dist/types-XDoqxYO9.d.cts +34 -0
- package/dist/work-item-runtime-types-BqtWnSCS.d.ts +138 -0
- package/dist/work-item-runtime-types-CHO03AKh.d.cts +138 -0
- package/dist/work-queue/index.cjs +1136 -0
- package/dist/work-queue/index.cjs.map +1 -0
- package/dist/work-queue/index.d.cts +21 -0
- package/dist/work-queue/index.d.ts +21 -0
- package/dist/work-queue/index.js +1082 -0
- package/dist/work-queue/index.js.map +1 -0
- package/package.json +603 -249
- package/dist/chunk-2ILL7HQI.js.map +0 -1
- package/dist/chunk-4VLAQHZI.js.map +0 -1
- package/dist/chunk-COHO25CZ.js.map +0 -1
- package/dist/chunk-DK554R7P.js.map +0 -1
- package/dist/chunk-G4M3NHRJ.js.map +0 -1
- package/dist/chunk-I3IHOHCJ.js.map +0 -1
- package/dist/chunk-JIMUDQN3.js.map +0 -1
- package/dist/chunk-RIIOUTGM.js.map +0 -1
- package/dist/chunk-SWTLEQL6.js.map +0 -1
- /package/dist/{chunk-GDL26N2T.js.map → chunk-3KN7NJDR.js.map} +0 -0
- /package/dist/{chunk-Z2ANQ6JW.js.map → chunk-4Q77MMJY.js.map} +0 -0
- /package/dist/{chunk-D6BG7U6A.js.map → chunk-7HZRJMN6.js.map} +0 -0
- /package/dist/{chunk-SCRFRCGR.js.map → chunk-BSQGE5PS.js.map} +0 -0
- /package/dist/{chunk-PKVBHGBM.js.map → chunk-CJIFGJQG.js.map} +0 -0
- /package/dist/{chunk-K3FXTC3I.js.map → chunk-HJACH5PU.js.map} +0 -0
- /package/dist/{chunk-GTPCOEOZ.js.map → chunk-IDMLXLLG.js.map} +0 -0
- /package/dist/{chunk-DKP56CSW.js.map → chunk-JKAYLDQV.js.map} +0 -0
- /package/dist/{chunk-Y3ZLRGHC.js.map → chunk-SIDJO2T4.js.map} +0 -0
- /package/dist/{chunk-JR4IKCR2.js.map → chunk-TPND5MJS.js.map} +0 -0
- /package/dist/{chunk-TEW47IVR.js.map → chunk-VPEFSDME.js.map} +0 -0
- /package/dist/{chunk-DJC4CHLQ.js.map → chunk-YDWBXXQZ.js.map} +0 -0
- /package/dist/{chunk-6PHB5CJS.js.map → chunk-ZLFRB6FI.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/orchestration/agent-runtime-effect-completion.ts","../src/orchestration/agent-runtime-decision-interpreter.ts","../src/orchestration/agent-runtime-fakes.ts","../src/orchestration/agent-runtime-request-ledger.ts","../src/orchestration/agent-runtime-request-satisfaction.ts","../src/orchestration/agent-runtime-tool-provider-run-admission.ts","../src/orchestration/agent-runtime-tool-provider-run-retry.ts","../src/orchestration/agent-runtime-types-core.ts","../src/orchestration/process-utils.ts","../src/orchestration/process.ts","../src/orchestration/resilience-bundles.ts","../src/orchestration/scheduled-readiness.ts"],"sourcesContent":["import { type Ctx, depBatch } from \"../ctx/types.js\";\nimport type { DataIssue } from \"../data/index.js\";\nimport type { Graph } from \"../graph/graph.js\";\nimport type { Node } from \"../node/node.js\";\nimport { dataIssue, forEachDepBatch, projectRuntimeFact, ref } from \"./agent-runtime-common.js\";\nimport { candidateFromDecision } from \"./agent-runtime-decision-interpreter.js\";\nimport type {\n\tAgentDecision,\n\tAgentRuntimeAuditRecord,\n\tEffectRunCompletionBundle,\n\tEffectRunCompletionStatus,\n\tEffectRunResult,\n} from \"./agent-runtime-types-agent.js\";\nimport type {\n\tAgentRequestFact,\n\tAgentRequestIssued,\n\tAgentRequestStatus,\n\tAgentRequestStatusChanged,\n\tEffectRun,\n\tSourceRef,\n} from \"./agent-runtime-types-core.js\";\n\nexport function effectRunCompletionProjector(\n\tgraph: Graph,\n\topts: {\n\t\treadonly name?: string;\n\t\treadonly effectRuns: Node<EffectRun>;\n\t\treadonly decisions?: readonly Node<AgentDecision>[];\n\t\treadonly requestStatuses?: readonly Node<AgentRequestStatusChanged>[];\n\t\treadonly requestFacts?: readonly Node<AgentRequestFact>[];\n\t\treadonly resultCandidates?: readonly Node<EffectRunResult>[];\n\t\treadonly now?: () => number;\n\t},\n): EffectRunCompletionBundle {\n\tconst name = opts.name ?? \"effectRunCompletion\";\n\tconst decisions = opts.decisions ?? [];\n\tconst requestStatuses = opts.requestStatuses ?? [];\n\tconst requestFacts = opts.requestFacts ?? [];\n\tconst resultCandidates = opts.resultCandidates ?? [];\n\tconst deps = [\n\t\topts.effectRuns,\n\t\t...decisions,\n\t\t...requestStatuses,\n\t\t...requestFacts,\n\t\t...resultCandidates,\n\t];\n\tconst decisionStart = 1;\n\tconst requestStatusStart = decisionStart + decisions.length;\n\tconst requestFactStart = requestStatusStart + requestStatuses.length;\n\tconst resultCandidateStart = requestFactStart + requestFacts.length;\n\tconst now = opts.now ?? Date.now;\n\tconst runtime = graph.node<EffectRunCompletionFact>(\n\t\tdeps,\n\t\t(ctx) => {\n\t\t\tconst state = ctx.state.get<EffectRunCompletionState>() ?? emptyEffectRunCompletionState();\n\t\t\tconst touchedEffectRunIds = new Set<string>();\n\t\t\tfor (const raw of depBatch(ctx, 0) ?? []) {\n\t\t\t\tconst run = raw as EffectRun;\n\t\t\t\tstate.runs.set(run.effectRunId, run);\n\t\t\t\ttouchedEffectRunIds.add(run.effectRunId);\n\t\t\t}\n\t\t\tforEachDepBatch(ctx, requestFactStart, requestFacts.length, (raw) => {\n\t\t\t\tconst fact = raw as AgentRequestFact;\n\t\t\t\tif (fact.kind === \"issued\") {\n\t\t\t\t\tstate.requests.set(fact.requestId, fact);\n\t\t\t\t\ttouchedEffectRunIds.add(fact.effectRunId);\n\t\t\t\t\tconst existingStatus = state.statusByRequest.get(fact.requestId);\n\t\t\t\t\tif (existingStatus !== undefined && !statusMatchesRequest(existingStatus, fact)) {\n\t\t\t\t\t\temitEffectRunIssue(\n\t\t\t\t\t\t\tctx,\n\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\"stale-request-status\",\n\t\t\t\t\t\t\t`AgentRequest status for '${fact.requestId}' did not match its issued effectRun/operation identity`,\n\t\t\t\t\t\t\tfact.effectRunId,\n\t\t\t\t\t\t\t[ref(\"agent-request\", fact.requestId)],\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tconst result = state.resultsByEffectRun.get(fact.effectRunId);\n\t\t\t\t\tif (result !== undefined && fact.required) {\n\t\t\t\t\t\tstate.issueSeq += 1;\n\t\t\t\t\t\tconst issue = dataIssue(\n\t\t\t\t\t\t\t\"late-required-request-after-effect-run-result\",\n\t\t\t\t\t\t\t`Required request '${fact.requestId}' arrived after EffectRun '${fact.effectRunId}' already had a terminal result`,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tsubjectId: fact.effectRunId,\n\t\t\t\t\t\t\t\trefs: [\n\t\t\t\t\t\t\t\t\tref(\"agent-request\", fact.requestId),\n\t\t\t\t\t\t\t\t\tref(\"effect-run-result\", result.resultId),\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t\tctx.down([\n\t\t\t\t\t\t\t[\"DATA\", { kind: \"issue\", issue } satisfies EffectRunCompletionFact],\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\"DATA\",\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tkind: \"audit\",\n\t\t\t\t\t\t\t\t\taudit: {\n\t\t\t\t\t\t\t\t\t\tid: `${fact.effectRunId}:late-required-request:${state.issueSeq}`,\n\t\t\t\t\t\t\t\t\t\tkind: \"late-required-request-after-effect-run-result\",\n\t\t\t\t\t\t\t\t\t\tsubjectId: fact.effectRunId,\n\t\t\t\t\t\t\t\t\t\tissueCode: issue.code,\n\t\t\t\t\t\t\t\t\t\tsourceRefs: [\n\t\t\t\t\t\t\t\t\t\t\tref(\"agent-request\", fact.requestId),\n\t\t\t\t\t\t\t\t\t\t\tref(\"effect-run-result\", result.resultId),\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t} satisfies EffectRunCompletionFact,\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t]);\n\t\t\t\t\t}\n\t\t\t\t} else if (fact.kind === \"status\") {\n\t\t\t\t\tacceptRequestStatus(ctx, state, fact);\n\t\t\t\t\ttouchedEffectRunIds.add(fact.effectRunId);\n\t\t\t\t}\n\t\t\t});\n\t\t\tforEachDepBatch(ctx, requestStatusStart, requestStatuses.length, (raw) => {\n\t\t\t\tconst status = raw as AgentRequestStatusChanged;\n\t\t\t\tacceptRequestStatus(ctx, state, status);\n\t\t\t\ttouchedEffectRunIds.add(status.effectRunId);\n\t\t\t});\n\t\t\tforEachDepBatch(ctx, resultCandidateStart, resultCandidates.length, (raw) => {\n\t\t\t\tacceptEffectRunResultCandidate(ctx, state, raw as EffectRunResult);\n\t\t\t});\n\t\t\tforEachDepBatch(ctx, decisionStart, decisions.length, (raw) => {\n\t\t\t\tconst decision = raw as AgentDecision;\n\t\t\t\tstate.decisions.set(decision.decisionId, decision);\n\t\t\t\ttouchedEffectRunIds.add(decision.effectRunId);\n\t\t\t});\n\t\t\tfor (const decision of state.decisions.values()) {\n\t\t\t\tif (state.resultsByEffectRun.has(decision.effectRunId)) continue;\n\t\t\t\tconst candidate = candidateFromDecision(decision, state, now());\n\t\t\t\tif (candidate === undefined) continue;\n\t\t\t\tacceptEffectRunResultCandidate(ctx, state, candidate);\n\t\t\t}\n\t\t\tfor (const effectRunId of touchedEffectRunIds) {\n\t\t\t\tif (!state.resultsByEffectRun.has(effectRunId)) {\n\t\t\t\t\temitEffectRunStatus(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\teffectRunId,\n\t\t\t\t\t\t\"pending\",\n\t\t\t\t\t\trequiredPendingRequests(effectRunId, state),\n\t\t\t\t\t\trequiredTerminalRequests(effectRunId, state),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\tctx.state.set(state);\n\t\t},\n\t\t{ name: `${name}/runtime`, factory: \"effectRunCompletionProjector\" },\n\t);\n\treturn {\n\t\tresults: projectRuntimeFact(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/results`,\n\t\t\t\"effectRunCompletionResults\",\n\t\t\t(fact) => (fact.kind === \"result\" ? fact.result : undefined),\n\t\t),\n\t\tstatus: projectRuntimeFact(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/status`,\n\t\t\t\"effectRunCompletionStatus\",\n\t\t\t(fact) => (fact.kind === \"status\" ? fact.status : undefined),\n\t\t),\n\t\tissues: projectRuntimeFact(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/issues`,\n\t\t\t\"effectRunCompletionIssues\",\n\t\t\t(fact) => (fact.kind === \"issue\" ? fact.issue : undefined),\n\t\t),\n\t\taudit: projectRuntimeFact(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/audit`,\n\t\t\t\"effectRunCompletionAudit\",\n\t\t\t(fact) => (fact.kind === \"audit\" ? fact.audit : undefined),\n\t\t),\n\t};\n}\n\nexport type EffectRunCompletionFact =\n\t| { readonly kind: \"result\"; readonly result: EffectRunResult }\n\t| { readonly kind: \"status\"; readonly status: EffectRunCompletionStatus }\n\t| { readonly kind: \"issue\"; readonly issue: DataIssue }\n\t| { readonly kind: \"audit\"; readonly audit: AgentRuntimeAuditRecord };\n\nexport interface EffectRunCompletionState {\n\truns: Map<string, EffectRun>;\n\trequests: Map<string, AgentRequestIssued>;\n\tstatusByRequest: Map<string, AgentRequestStatusChanged>;\n\tdecisions: Map<string, AgentDecision>;\n\tresultsByEffectRun: Map<string, EffectRunResult>;\n\tissueSeq: number;\n}\n\nexport function acceptEffectRunResultCandidate(\n\tctx: Ctx,\n\tstate: EffectRunCompletionState,\n\tcandidate: EffectRunResult,\n): void {\n\tif (!state.runs.has(candidate.effectRunId)) {\n\t\temitEffectRunIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t\"unknown-effect-run-result-candidate\",\n\t\t\t`EffectRunResult candidate '${candidate.resultId}' references unknown EffectRun '${candidate.effectRunId}'`,\n\t\t\tcandidate.effectRunId,\n\t\t\tcandidate.sourceRefs,\n\t\t);\n\t\treturn;\n\t}\n\tconst existing = state.resultsByEffectRun.get(candidate.effectRunId);\n\tif (existing !== undefined) {\n\t\tstate.issueSeq += 1;\n\t\tconst duplicate = sameTerminalResult(existing, candidate);\n\t\tconst code = duplicate ? \"duplicate-effect-run-result\" : \"conflicting-effect-run-result\";\n\t\tconst issue = dataIssue(\n\t\t\tcode,\n\t\t\t`EffectRun '${candidate.effectRunId}' already has a terminal result`,\n\t\t\t{\n\t\t\t\tsubjectId: candidate.effectRunId,\n\t\t\t\trefs: candidate.sourceRefs,\n\t\t\t},\n\t\t);\n\t\tctx.down([\n\t\t\t[\"DATA\", { kind: \"issue\", issue } satisfies EffectRunCompletionFact],\n\t\t\t[\n\t\t\t\t\"DATA\",\n\t\t\t\t{\n\t\t\t\t\tkind: \"audit\",\n\t\t\t\t\taudit: {\n\t\t\t\t\t\tid: `${candidate.effectRunId}:${code}:${state.issueSeq}`,\n\t\t\t\t\t\tkind: duplicate ? \"effect-run-result-duplicate\" : \"effect-run-result-conflict\",\n\t\t\t\t\t\tsubjectId: candidate.effectRunId,\n\t\t\t\t\t\tissueCode: issue.code,\n\t\t\t\t\t\tsourceRefs: candidate.sourceRefs,\n\t\t\t\t\t},\n\t\t\t\t} satisfies EffectRunCompletionFact,\n\t\t\t],\n\t\t]);\n\t\treturn;\n\t}\n\tstate.resultsByEffectRun.set(candidate.effectRunId, candidate);\n\tctx.down([\n\t\t[\"DATA\", { kind: \"result\", result: candidate } satisfies EffectRunCompletionFact],\n\t\t[\n\t\t\t\"DATA\",\n\t\t\t{\n\t\t\t\tkind: \"status\",\n\t\t\t\tstatus: {\n\t\t\t\t\teffectRunId: candidate.effectRunId,\n\t\t\t\t\tstate: candidate.status,\n\t\t\t\t\trequiredPending: [],\n\t\t\t\t\trequiredTerminal: requiredTerminalRequests(candidate.effectRunId, state),\n\t\t\t\t\tsourceRefs: candidate.sourceRefs,\n\t\t\t\t},\n\t\t\t} satisfies EffectRunCompletionFact,\n\t\t],\n\t\t[\n\t\t\t\"DATA\",\n\t\t\t{\n\t\t\t\tkind: \"audit\",\n\t\t\t\taudit: {\n\t\t\t\t\tid: `${candidate.effectRunId}:terminal-result`,\n\t\t\t\t\tkind: \"effect-run-terminal-result\",\n\t\t\t\t\tsubjectId: candidate.effectRunId,\n\t\t\t\t\tsourceRefs: candidate.sourceRefs,\n\t\t\t\t\tmetadata: { status: candidate.status },\n\t\t\t\t},\n\t\t\t} satisfies EffectRunCompletionFact,\n\t\t],\n\t]);\n}\n\nexport function emitEffectRunStatus(\n\tctx: Ctx,\n\teffectRunId: string,\n\tstate: EffectRunCompletionStatus[\"state\"],\n\trequiredPending: readonly string[],\n\trequiredTerminal: readonly string[],\n): void {\n\tctx.down([\n\t\t[\n\t\t\t\"DATA\",\n\t\t\t{\n\t\t\t\tkind: \"status\",\n\t\t\t\tstatus: { effectRunId, state, requiredPending, requiredTerminal },\n\t\t\t} satisfies EffectRunCompletionFact,\n\t\t],\n\t]);\n}\n\nexport function requiredPendingRequests(\n\teffectRunId: string,\n\tstate: EffectRunCompletionState,\n): readonly string[] {\n\tconst pending: string[] = [];\n\tfor (const request of state.requests.values()) {\n\t\tif (request.effectRunId !== effectRunId || !request.required) continue;\n\t\tconst statusFact = matchingStatusForRequest(state, request);\n\t\tconst status = statusFact?.status;\n\t\tif (status === undefined || !isTerminalRequestStatus(status)) pending.push(request.requestId);\n\t}\n\treturn pending;\n}\n\nexport function requiredTerminalRequests(\n\teffectRunId: string,\n\tstate: EffectRunCompletionState,\n): readonly string[] {\n\tconst terminal: string[] = [];\n\tfor (const request of state.requests.values()) {\n\t\tif (request.effectRunId !== effectRunId || !request.required) continue;\n\t\tconst statusFact = matchingStatusForRequest(state, request);\n\t\tconst status = statusFact?.status;\n\t\tif (status !== undefined && isTerminalRequestStatus(status)) terminal.push(request.requestId);\n\t}\n\treturn terminal;\n}\n\nexport function isTerminalRequestStatus(status: AgentRequestStatus): boolean {\n\treturn (\n\t\tstatus === \"completed\" ||\n\t\tstatus === \"failed\" ||\n\t\tstatus === \"blocked\" ||\n\t\tstatus === \"canceled\" ||\n\t\tstatus === \"timeout\" ||\n\t\tstatus === \"waived\" ||\n\t\tstatus === \"retry-exhausted\"\n\t);\n}\n\nexport function decisionSourceRequestTerminal(\n\tdecision: AgentDecision,\n\tstate: EffectRunCompletionState,\n): boolean {\n\tconst request = state.requests.get(decision.source.requestId);\n\tif (request === undefined) return false;\n\tif (\n\t\trequest.effectRunId !== decision.effectRunId ||\n\t\trequest.operationId !== decision.source.operationId\n\t) {\n\t\treturn false;\n\t}\n\tconst status = matchingStatusForRequest(state, request)?.status;\n\treturn status !== undefined && isTerminalRequestStatus(status);\n}\n\nexport function acceptRequestStatus(\n\tctx: Ctx,\n\tstate: EffectRunCompletionState,\n\tstatus: AgentRequestStatusChanged,\n): void {\n\tconst request = state.requests.get(status.requestId);\n\tif (request !== undefined && !statusMatchesRequest(status, request)) {\n\t\temitEffectRunIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t\"stale-request-status\",\n\t\t\t`AgentRequest status for '${status.requestId}' did not match its issued effectRun/operation identity`,\n\t\t\trequest.effectRunId,\n\t\t\t[ref(\"agent-request\", status.requestId)],\n\t\t);\n\t\treturn;\n\t}\n\tstate.statusByRequest.set(status.requestId, status);\n}\n\nexport function matchingStatusForRequest(\n\tstate: EffectRunCompletionState,\n\trequest: AgentRequestIssued,\n): AgentRequestStatusChanged | undefined {\n\tconst status = state.statusByRequest.get(request.requestId);\n\tif (status === undefined) return undefined;\n\treturn statusMatchesRequest(status, request) ? status : undefined;\n}\n\nexport function statusMatchesRequest(\n\tstatus: AgentRequestStatusChanged,\n\trequest: AgentRequestIssued,\n): boolean {\n\treturn (\n\t\tstatus.effectRunId === request.effectRunId &&\n\t\t(status.operationId === undefined || status.operationId === request.operationId)\n\t);\n}\n\nexport function emitEffectRunIssue(\n\tctx: Ctx,\n\tstate: EffectRunCompletionState,\n\tcode: string,\n\tmessage: string,\n\tsubjectId?: string,\n\tsourceRefs?: readonly SourceRef[],\n): void {\n\tstate.issueSeq += 1;\n\tconst issue = dataIssue(code, message, { subjectId, refs: sourceRefs });\n\tctx.down([\n\t\t[\"DATA\", { kind: \"issue\", issue } satisfies EffectRunCompletionFact],\n\t\t[\n\t\t\t\"DATA\",\n\t\t\t{\n\t\t\t\tkind: \"audit\",\n\t\t\t\taudit: {\n\t\t\t\t\tid: `${subjectId ?? \"effect-run\"}:${code}:${state.issueSeq}`,\n\t\t\t\t\tkind: \"effect-run-issue\",\n\t\t\t\t\tsubjectId,\n\t\t\t\t\tissueCode: code,\n\t\t\t\t\tmessage,\n\t\t\t\t\tsourceRefs,\n\t\t\t\t},\n\t\t\t} satisfies EffectRunCompletionFact,\n\t\t],\n\t]);\n}\n\nexport function sameTerminalResult(a: EffectRunResult, b: EffectRunResult): boolean {\n\treturn (\n\t\ta.status === b.status && a.resultId === b.resultId && JSON.stringify(a) === JSON.stringify(b)\n\t);\n}\n\nexport function emptyEffectRunCompletionState(): EffectRunCompletionState {\n\treturn {\n\t\truns: new Map<string, EffectRun>(),\n\t\trequests: new Map<string, AgentRequestIssued>(),\n\t\tstatusByRequest: new Map<string, AgentRequestStatusChanged>(),\n\t\tdecisions: new Map<string, AgentDecision>(),\n\t\tresultsByEffectRun: new Map<string, EffectRunResult>(),\n\t\tissueSeq: 0,\n\t};\n}\n","import { type Ctx, depBatch } from \"../ctx/types.js\";\nimport type { DataIssue } from \"../data/index.js\";\nimport type { Graph } from \"../graph/graph.js\";\nimport type { Node } from \"../node/node.js\";\nimport {\n\tdataIssue,\n\tforEachDepBatch,\n\tisRecord,\n\tprojectRuntimeFact,\n\tref,\n} from \"./agent-runtime-common.js\";\nimport type { EffectRunCompletionState } from \"./agent-runtime-effect-completion.js\";\nimport {\n\tdecisionSourceRequestTerminal,\n\trequiredPendingRequests,\n} from \"./agent-runtime-effect-completion.js\";\nimport type {\n\tAgentDecision,\n\tAgentDecisionBlocked,\n\tAgentDecisionContinue,\n\tAgentDecisionFinal,\n\tAgentRuntimeAuditRecord,\n\tEffectRunResult,\n\tStructuredAgentDecisionEnvelope,\n\tStructuredAgentDecisionInterpreterBundle,\n} from \"./agent-runtime-types-agent.js\";\nimport type {\n\tAgentRequestFact,\n\tAgentRequestIssued,\n\tExecutorOutcome,\n} from \"./agent-runtime-types-core.js\";\n\nexport function structuredAgentDecisionInterpreter(\n\tgraph: Graph,\n\toutcomes: Node<ExecutorOutcome>,\n\topts: {\n\t\treadonly name?: string;\n\t\treadonly schemaRef?: string;\n\t\treadonly requestFacts?: readonly Node<AgentRequestFact>[];\n\t} = {},\n): StructuredAgentDecisionInterpreterBundle {\n\tconst name = opts.name ?? \"structuredAgentDecisionInterpreter\";\n\tconst requestFacts = opts.requestFacts ?? [];\n\tconst runtime = graph.node<StructuredAgentDecisionInterpreterFact>(\n\t\t[outcomes, ...requestFacts],\n\t\t(ctx) => {\n\t\t\tconst state = ctx.state.get<StructuredInterpreterState>() ?? {\n\t\t\t\trequests: new Map<string, AgentRequestIssued>(),\n\t\t\t\tissueSeq: 0,\n\t\t\t};\n\t\t\tforEachDepBatch(ctx, 1, requestFacts.length, (raw) => {\n\t\t\t\tconst fact = raw as AgentRequestFact;\n\t\t\t\tif (fact.kind === \"issued\") state.requests.set(fact.requestId, fact);\n\t\t\t});\n\t\t\tfor (const raw of depBatch(ctx, 0) ?? []) {\n\t\t\t\tconst outcome = raw as ExecutorOutcome;\n\t\t\t\tif (outcome.kind !== \"result\") {\n\t\t\t\t\tstate.issueSeq += 1;\n\t\t\t\t\temitInterpreterIssue(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\tstate.issueSeq,\n\t\t\t\t\t\toutcome,\n\t\t\t\t\t\t\"non-result-outcome\",\n\t\t\t\t\t\t\"Only result outcomes can carry AgentDecision envelopes\",\n\t\t\t\t\t);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst value = outcome.result.value;\n\t\t\t\tif (!isRecord(value)) {\n\t\t\t\t\tstate.issueSeq += 1;\n\t\t\t\t\temitInterpreterIssue(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\tstate.issueSeq,\n\t\t\t\t\t\toutcome,\n\t\t\t\t\t\t\"malformed-agent-decision\",\n\t\t\t\t\t\t\"ExecutorOutcome result must carry a structured agent-decision envelope\",\n\t\t\t\t\t);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst envelope = value as Partial<StructuredAgentDecisionEnvelope>;\n\t\t\t\tif (envelope.kind !== \"agent-decision\" || !isRecord(envelope.decision)) {\n\t\t\t\t\tstate.issueSeq += 1;\n\t\t\t\t\temitInterpreterIssue(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\tstate.issueSeq,\n\t\t\t\t\t\toutcome,\n\t\t\t\t\t\t\"malformed-agent-decision\",\n\t\t\t\t\t\t\"Structured agent-decision envelope is missing kind or decision\",\n\t\t\t\t\t);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (typeof envelope.schemaRef !== \"string\" || envelope.schemaRef.length === 0) {\n\t\t\t\t\tstate.issueSeq += 1;\n\t\t\t\t\temitInterpreterIssue(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\tstate.issueSeq,\n\t\t\t\t\t\toutcome,\n\t\t\t\t\t\t\"missing-agent-decision-schema\",\n\t\t\t\t\t\t\"Structured agent-decision envelope must carry schemaRef evidence\",\n\t\t\t\t\t);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (opts.schemaRef !== undefined && envelope.schemaRef !== opts.schemaRef) {\n\t\t\t\t\tstate.issueSeq += 1;\n\t\t\t\t\temitInterpreterIssue(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\tstate.issueSeq,\n\t\t\t\t\t\toutcome,\n\t\t\t\t\t\t\"agent-decision-schema-mismatch\",\n\t\t\t\t\t\t\"Structured agent-decision envelope schemaRef did not match\",\n\t\t\t\t\t);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst decision = validateAgentDecision(envelope.decision, outcome);\n\t\t\t\tif (typeof decision === \"string\") {\n\t\t\t\t\tstate.issueSeq += 1;\n\t\t\t\t\temitInterpreterIssue(ctx, state.issueSeq, outcome, \"malformed-agent-decision\", decision);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst request = state.requests.get(decision.source.requestId);\n\t\t\t\tif (request === undefined) {\n\t\t\t\t\tstate.issueSeq += 1;\n\t\t\t\t\temitInterpreterIssue(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\tstate.issueSeq,\n\t\t\t\t\t\toutcome,\n\t\t\t\t\t\t\"missing-agent-decision-request\",\n\t\t\t\t\t\t\"AgentDecision source request must be present in the request ledger\",\n\t\t\t\t\t);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\trequest.effectRunId !== decision.effectRunId ||\n\t\t\t\t\trequest.operationId !== decision.source.operationId\n\t\t\t\t) {\n\t\t\t\t\tstate.issueSeq += 1;\n\t\t\t\t\temitInterpreterIssue(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\tstate.issueSeq,\n\t\t\t\t\t\toutcome,\n\t\t\t\t\t\t\"stale-agent-decision-source\",\n\t\t\t\t\t\t\"AgentDecision source request/effectRun/operation identity did not match the request ledger\",\n\t\t\t\t\t);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tctx.down([\n\t\t\t\t\t[\"DATA\", { kind: \"decision\", decision } satisfies StructuredAgentDecisionInterpreterFact],\n\t\t\t\t\t[\n\t\t\t\t\t\t\"DATA\",\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tkind: \"audit\",\n\t\t\t\t\t\t\taudit: {\n\t\t\t\t\t\t\t\tid: `${outcome.outcomeId}:agent-decision-interpreted`,\n\t\t\t\t\t\t\t\tkind: \"agent-decision-interpreted\",\n\t\t\t\t\t\t\t\tsubjectId: decision.effectRunId,\n\t\t\t\t\t\t\t\tsourceRefs: [ref(\"executor-outcome\", outcome.outcomeId)],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} satisfies StructuredAgentDecisionInterpreterFact,\n\t\t\t\t\t],\n\t\t\t\t]);\n\t\t\t}\n\t\t\tctx.state.set(state);\n\t\t},\n\t\t{ name: `${name}/runtime`, factory: \"structuredAgentDecisionInterpreter\" },\n\t);\n\treturn {\n\t\tdecisions: projectRuntimeFact(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/decisions`,\n\t\t\t\"structuredAgentDecisions\",\n\t\t\t(fact) => (fact.kind === \"decision\" ? fact.decision : undefined),\n\t\t),\n\t\tissues: projectRuntimeFact(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/issues`,\n\t\t\t\"structuredAgentDecisionIssues\",\n\t\t\t(fact) => (fact.kind === \"issue\" ? fact.issue : undefined),\n\t\t),\n\t\taudit: projectRuntimeFact(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/audit`,\n\t\t\t\"structuredAgentDecisionAudit\",\n\t\t\t(fact) => (fact.kind === \"audit\" ? fact.audit : undefined),\n\t\t),\n\t};\n}\n\nexport type StructuredAgentDecisionInterpreterFact =\n\t| { readonly kind: \"decision\"; readonly decision: AgentDecision }\n\t| { readonly kind: \"issue\"; readonly issue: DataIssue }\n\t| { readonly kind: \"audit\"; readonly audit: AgentRuntimeAuditRecord };\n\nexport interface StructuredInterpreterState {\n\trequests: Map<string, AgentRequestIssued>;\n\tissueSeq: number;\n}\n\nexport function emitInterpreterIssue(\n\tctx: Ctx,\n\tseq: number,\n\toutcome: ExecutorOutcome,\n\tcode: string,\n\tmessage: string,\n): void {\n\tconst issue = dataIssue(code, message, {\n\t\tsubjectId: outcome.requestId,\n\t\trefs: [ref(\"executor-outcome\", outcome.outcomeId)],\n\t});\n\tctx.down([\n\t\t[\"DATA\", { kind: \"issue\", issue } satisfies StructuredAgentDecisionInterpreterFact],\n\t\t[\n\t\t\t\"DATA\",\n\t\t\t{\n\t\t\t\tkind: \"audit\",\n\t\t\t\taudit: {\n\t\t\t\t\tid: `${outcome.outcomeId}:agent-decision-issue:${seq}`,\n\t\t\t\t\tkind: \"agent-decision-issue\",\n\t\t\t\t\tsubjectId: outcome.requestId,\n\t\t\t\t\tissueCode: code,\n\t\t\t\t\tmessage,\n\t\t\t\t\tsourceRefs: [ref(\"executor-outcome\", outcome.outcomeId)],\n\t\t\t\t},\n\t\t\t} satisfies StructuredAgentDecisionInterpreterFact,\n\t\t],\n\t]);\n}\n\nexport function validateAgentDecision(\n\traw: unknown,\n\toutcome: ExecutorOutcome,\n): AgentDecision | string {\n\tif (!isRecord(raw)) return \"AgentDecision must be an object\";\n\tconst kind = raw.kind;\n\tif (kind !== \"continue\" && kind !== \"final\" && kind !== \"blocked\") {\n\t\treturn \"AgentDecision kind must be continue, final, or blocked\";\n\t}\n\tif (typeof raw.decisionId !== \"string\" || raw.decisionId.length === 0)\n\t\treturn \"AgentDecision decisionId must be a non-empty string\";\n\tif (\n\t\traw.effectRunId === undefined ||\n\t\ttypeof raw.effectRunId !== \"string\" ||\n\t\traw.effectRunId.length === 0\n\t)\n\t\treturn \"AgentDecision effectRunId must be a non-empty string\";\n\tif (typeof raw.agentRunId !== \"string\" || raw.agentRunId.length === 0)\n\t\treturn \"AgentDecision agentRunId must be a non-empty string\";\n\tconst source = raw.source;\n\tif (\n\t\t!isRecord(source) ||\n\t\tsource.requestId !== outcome.requestId ||\n\t\tsource.operationId !== outcome.operationId ||\n\t\tsource.outcomeId !== outcome.outcomeId\n\t) {\n\t\treturn \"AgentDecision source must match the ExecutorOutcome requestId, operationId, and outcomeId\";\n\t}\n\tif (kind === \"continue\") {\n\t\tif (!Array.isArray(raw.next)) return \"AgentDecision.continue next must be an array\";\n\t\tfor (const proposal of raw.next) {\n\t\t\tif (!isAgentRequestProposalLike(proposal, raw.effectRunId)) {\n\t\t\t\treturn \"AgentDecision.continue next entries must be AgentRequestProposal-like objects\";\n\t\t\t}\n\t\t}\n\t\treturn raw as unknown as AgentDecisionContinue;\n\t}\n\tif (kind === \"final\") {\n\t\tif (!isRecord(raw.output) || typeof raw.output.kind !== \"string\")\n\t\t\treturn \"AgentDecision.final output must be an envelope with kind\";\n\t\treturn raw as unknown as AgentDecisionFinal;\n\t}\n\tif (!Array.isArray(raw.needs)) return \"AgentDecision.blocked needs must be an array\";\n\tfor (const need of raw.needs) {\n\t\tif (!isAgentNeedLike(need))\n\t\t\treturn \"AgentDecision.blocked needs entries must be AgentNeed-like objects\";\n\t}\n\treturn raw as unknown as AgentDecisionBlocked;\n}\n\nexport function isAgentRequestProposalLike(value: unknown, effectRunId: string): boolean {\n\tif (!isRecord(value)) return false;\n\tif (value.kind !== \"proposal\") return false;\n\tif (typeof value.proposalId !== \"string\" || value.proposalId.length === 0) return false;\n\tif (value.effectRunId !== effectRunId) return false;\n\treturn (\n\t\tvalue.requestKind === \"context\" ||\n\t\tvalue.requestKind === \"prompt\" ||\n\t\tvalue.requestKind === \"executor\"\n\t);\n}\n\nexport function isAgentNeedLike(value: unknown): boolean {\n\treturn isRecord(value) && typeof value.kind === \"string\" && value.kind.length > 0;\n}\n\nexport function candidateFromDecision(\n\tdecision: AgentDecision,\n\tstate: EffectRunCompletionState,\n\tcompletedAtMs: number,\n): EffectRunResult | undefined {\n\tconst run = state.runs.get(decision.effectRunId);\n\tif (run === undefined) return undefined;\n\tif (!decisionSourceRequestTerminal(decision, state)) return undefined;\n\tconst requiredPending = requiredPendingRequests(decision.effectRunId, state);\n\tif (decision.kind === \"final\") {\n\t\tif (requiredPending.length > 0) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn {\n\t\t\tkind: \"effect-run-result\",\n\t\t\tresultId: `${decision.effectRunId}:result`,\n\t\t\tstatus: \"completed\",\n\t\t\teffectRunId: decision.effectRunId,\n\t\t\tsubjectRefs: run.subjectRefs,\n\t\t\toperationId: decision.source.operationId,\n\t\t\tsourceRefs: [\n\t\t\t\tref(\"agent-decision\", decision.decisionId),\n\t\t\t\tref(\"executor-outcome\", decision.source.outcomeId),\n\t\t\t],\n\t\t\tcompletedAtMs,\n\t\t\toutput: decision.output,\n\t\t};\n\t}\n\tif (decision.kind === \"blocked\" && requiredPending.length === 0) {\n\t\treturn {\n\t\t\tkind: \"effect-run-result\",\n\t\t\tresultId: `${decision.effectRunId}:result`,\n\t\t\tstatus: \"blocked\",\n\t\t\teffectRunId: decision.effectRunId,\n\t\t\tsubjectRefs: run.subjectRefs,\n\t\t\toperationId: decision.source.operationId,\n\t\t\tsourceRefs: [\n\t\t\t\tref(\"agent-decision\", decision.decisionId),\n\t\t\t\tref(\"executor-outcome\", decision.source.outcomeId),\n\t\t\t],\n\t\t\tcompletedAtMs,\n\t\t\tneeds: decision.needs,\n\t\t};\n\t}\n\treturn undefined;\n}\n","import type { DataIssue } from \"../data/index.js\";\nimport type { AgentNeed } from \"./agent-runtime-types-agent.js\";\nimport type {\n\tAgentOutputEnvelope,\n\tExecutorOutcome,\n\tExecutorOutcomeBase,\n} from \"./agent-runtime-types-core.js\";\n\nexport function fakeExecutorResult<T>(\n\topts: Omit<ExecutorOutcomeBase, \"kind\"> & { readonly result: AgentOutputEnvelope<T> },\n): ExecutorOutcome<T> {\n\treturn { kind: \"result\", ...opts };\n}\n\nexport function fakeExecutorFailure(\n\topts: Omit<ExecutorOutcomeBase, \"kind\"> & {\n\t\treadonly error: DataIssue;\n\t\treadonly retryable?: boolean;\n\t},\n): ExecutorOutcome {\n\treturn { kind: \"failure\", ...opts };\n}\n\nexport function fakeExecutorBlocked(\n\topts: Omit<ExecutorOutcomeBase, \"kind\"> & { readonly needs: readonly AgentNeed[] },\n): ExecutorOutcome {\n\treturn { kind: \"blocked\", ...opts };\n}\n\nexport function fakeExecutorTimeout(\n\topts: Omit<ExecutorOutcomeBase, \"kind\"> & {\n\t\treadonly timeoutMs?: number;\n\t\treadonly retryable?: boolean;\n\t},\n): ExecutorOutcome {\n\treturn { kind: \"timeout\", ...opts };\n}\n\nexport function fakeExecutorCanceled(\n\topts: Omit<ExecutorOutcomeBase, \"kind\"> & { readonly reason?: string },\n): ExecutorOutcome {\n\treturn { kind: \"canceled\", ...opts };\n}\n","import { depBatch } from \"../ctx/types.js\";\nimport type { DataIssue } from \"../data/index.js\";\nimport type { Graph } from \"../graph/graph.js\";\nimport type { Node } from \"../node/node.js\";\nimport {\n\tboundPublicText,\n\tcloneGraphVisibleMaterial,\n\tmaxPublicReasonChars,\n\tpublicMaterialForbiddenKeys,\n\tref,\n\tsanitizeAdapterInputIssue,\n\tsanitizeAdapterInputSourceRefs,\n\tsanitizeProviderGraphVisibleRecord,\n} from \"./agent-runtime-common.js\";\nimport { isTerminalRequestStatus } from \"./agent-runtime-effect-completion.js\";\nimport type {\n\tAgentDecisionContinue,\n\tAgentRuntimeAuditRecord,\n} from \"./agent-runtime-types-agent.js\";\nimport type {\n\tAgentRequestAdmitted,\n\tAgentRequestFact,\n\tAgentRequestInput,\n\tAgentRequestIssued,\n\tAgentRequestLedgerBundle,\n\tAgentRequestProposal,\n\tAgentRequestStatusChanged,\n\tAgentRequestViews,\n\tSourceRef,\n} from \"./agent-runtime-types-core.js\";\n\nexport function agentRequestProposalFromDecision(\n\tdecision: AgentDecisionContinue,\n\tproposal: Omit<AgentRequestProposal, \"kind\" | \"effectRunId\" | \"agentRunId\" | \"sourceDecisionId\">,\n): AgentRequestProposal {\n\treturn {\n\t\tkind: \"proposal\",\n\t\t...proposal,\n\t\teffectRunId: decision.effectRunId,\n\t\tagentRunId: decision.agentRunId,\n\t\tsourceDecisionId: decision.decisionId,\n\t\tevidenceRefs: proposal.evidenceRefs ?? decision.evidenceRefs,\n\t};\n}\n\nexport function admitAgentRequestProposal(\n\tproposal: AgentRequestProposal,\n\topts: {\n\t\treadonly requestId: string;\n\t\treadonly operationId: string;\n\t\treadonly admittedAtMs?: number;\n\t\treadonly reason?: string;\n\t\treadonly sourceRefs?: readonly SourceRef[];\n\t\treadonly metadata?: Record<string, unknown>;\n\t},\n): AgentRequestAdmitted {\n\tconst sourceRefs =\n\t\topts.sourceRefs === undefined ? undefined : sanitizeAdapterInputSourceRefs(opts.sourceRefs);\n\tconst metadata = sanitizeProviderGraphVisibleRecord(opts.metadata);\n\treturn {\n\t\tkind: \"admitted\",\n\t\tproposalId: proposal.proposalId,\n\t\trequestId: opts.requestId,\n\t\toperationId: opts.operationId,\n\t\teffectRunId: proposal.effectRunId,\n\t\tagentRunId: proposal.agentRunId,\n\t\tadmittedAtMs: opts.admittedAtMs,\n\t\t...(opts.reason === undefined\n\t\t\t? {}\n\t\t\t: { reason: boundPublicText(opts.reason, maxPublicReasonChars()).text }),\n\t\t...(sourceRefs === undefined || sourceRefs.length === 0 ? {} : { sourceRefs }),\n\t\t...(metadata === undefined ? {} : { metadata }),\n\t};\n}\n\nexport function issueAgentRequest(\n\tproposal: AgentRequestProposal,\n\tadmission: AgentRequestAdmitted,\n\topts: { readonly issuedAtMs?: number; readonly sourceRefs?: readonly SourceRef[] } = {},\n): AgentRequestIssued {\n\tconst input = sanitizeAgentRequestInput(proposal.input);\n\tconst payload = sanitizeAgentRequestMaterial(proposal.payload);\n\tconst sourceRefs = sanitizeAdapterInputSourceRefs(opts.sourceRefs ?? admission.sourceRefs ?? []);\n\tconst metadata = sanitizeProviderGraphVisibleRecord(proposal.metadata);\n\treturn {\n\t\tkind: \"issued\",\n\t\trequestId: admission.requestId,\n\t\toperationId: admission.operationId,\n\t\teffectRunId: admission.effectRunId,\n\t\tagentRunId: admission.agentRunId,\n\t\tproposalId: proposal.proposalId,\n\t\tparentRequestId: proposal.parentRequestId,\n\t\trequestKind: proposal.requestKind,\n\t\trequired: proposal.required ?? true,\n\t\t...(input === undefined ? {} : { input }),\n\t\t...(payload === undefined ? {} : { payload }),\n\t\tissuedAtMs: opts.issuedAtMs,\n\t\t...(sourceRefs.length === 0 ? {} : { sourceRefs }),\n\t\t...(metadata === undefined ? {} : { metadata }),\n\t};\n}\n\nexport function sanitizeAgentRequestInput<T>(\n\tinput: AgentRequestInput<T> | undefined,\n): AgentRequestInput<T> | undefined {\n\tif (input === undefined) return undefined;\n\tconst {\n\t\tvalue: rawValue,\n\t\tsubjectRefs: rawSubjectRefs,\n\t\tmetadata: rawMetadata,\n\t\t...inputFields\n\t} = input;\n\tconst value = sanitizeAgentRequestMaterial(rawValue);\n\tconst subjectRefs =\n\t\trawSubjectRefs === undefined ? undefined : sanitizeAdapterInputSourceRefs(rawSubjectRefs);\n\tconst metadata = sanitizeProviderGraphVisibleRecord(rawMetadata);\n\treturn Object.freeze({\n\t\t...inputFields,\n\t\t...(value === undefined ? {} : { value }),\n\t\t...(subjectRefs === undefined || subjectRefs.length === 0 ? {} : { subjectRefs }),\n\t\t...(metadata === undefined ? {} : { metadata }),\n\t} satisfies AgentRequestInput<T>) as AgentRequestInput<T>;\n}\n\nexport function sanitizeAgentRequestMaterial<T>(value: T | undefined): T | undefined {\n\tif (value === undefined) return undefined;\n\tif (publicMaterialForbiddenKeys(value, \"provider\").length > 0) return undefined;\n\treturn cloneGraphVisibleMaterial(value) as T;\n}\n\nexport function sanitizeAgentRequestIssued(request: AgentRequestIssued): AgentRequestIssued {\n\tconst input = sanitizeAgentRequestInput(request.input);\n\tconst payload = sanitizeAgentRequestMaterial(request.payload);\n\tconst sourceRefs =\n\t\trequest.sourceRefs === undefined\n\t\t\t? undefined\n\t\t\t: sanitizeAdapterInputSourceRefs(request.sourceRefs);\n\tconst metadata = sanitizeProviderGraphVisibleRecord(request.metadata);\n\treturn Object.freeze({\n\t\tkind: \"issued\",\n\t\trequestId: request.requestId,\n\t\toperationId: request.operationId,\n\t\teffectRunId: request.effectRunId,\n\t\t...(request.agentRunId === undefined ? {} : { agentRunId: request.agentRunId }),\n\t\t...(request.proposalId === undefined ? {} : { proposalId: request.proposalId }),\n\t\t...(request.parentRequestId === undefined ? {} : { parentRequestId: request.parentRequestId }),\n\t\trequestKind: request.requestKind,\n\t\trequired: request.required,\n\t\t...(input === undefined ? {} : { input }),\n\t\t...(payload === undefined ? {} : { payload }),\n\t\t...(request.issuedAtMs === undefined ? {} : { issuedAtMs: request.issuedAtMs }),\n\t\t...(sourceRefs === undefined || sourceRefs.length === 0 ? {} : { sourceRefs }),\n\t\t...(metadata === undefined ? {} : { metadata }),\n\t} satisfies AgentRequestIssued);\n}\n\nexport function agentRequestLedgerViews(\n\tgraph: Graph,\n\tfacts: Node<AgentRequestFact>,\n\topts: { readonly name?: string } = {},\n): AgentRequestLedgerBundle {\n\tconst name = opts.name ?? \"agentRequests\";\n\tconst views = graph.node<AgentRequestViews>(\n\t\t[facts],\n\t\t(ctx) => {\n\t\t\tconst prev = ctx.state.get<AgentRequestViewsState>() ?? emptyAgentRequestViewsState();\n\t\t\tconst next = cloneAgentRequestViewsState(prev);\n\t\t\tfor (const raw of depBatch(ctx, 0) ?? []) {\n\t\t\t\tconst fact = raw as AgentRequestFact;\n\t\t\t\treduceAgentRequestViews(next, fact);\n\t\t\t}\n\t\t\tctx.state.set(next);\n\t\t\tctx.down([[\"DATA\", freezeAgentRequestViews(next)]]);\n\t\t},\n\t\t{ name: `${name}/views`, factory: \"agentRequestLedgerViews\" },\n\t);\n\tconst issues = graph.node<DataIssue>(\n\t\t[facts],\n\t\t(ctx) => {\n\t\t\tfor (const raw of depBatch(ctx, 0) ?? []) {\n\t\t\t\tconst fact = raw as AgentRequestFact;\n\t\t\t\tif (fact.kind === \"rejected\") ctx.down([[\"DATA\", sanitizeAdapterInputIssue(fact.issue)]]);\n\t\t\t\tif (fact.kind === \"status\") {\n\t\t\t\t\tfor (const issue of fact.issues ?? []) {\n\t\t\t\t\t\tctx.down([[\"DATA\", sanitizeAdapterInputIssue(issue)]]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{ name: `${name}/issues`, factory: \"agentRequestLedgerIssues\" },\n\t);\n\tconst audit = graph.node<AgentRuntimeAuditRecord>(\n\t\t[facts],\n\t\t(ctx) => {\n\t\t\tlet seq = ctx.state.get<number>() ?? 0;\n\t\t\tfor (const raw of depBatch(ctx, 0) ?? []) {\n\t\t\t\tseq += 1;\n\t\t\t\tconst fact = raw as AgentRequestFact;\n\t\t\t\tctx.down([\n\t\t\t\t\t[\n\t\t\t\t\t\t\"DATA\",\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: `${name}:ledger:${seq}`,\n\t\t\t\t\t\t\tkind: `agent-request-${fact.kind}`,\n\t\t\t\t\t\t\tsubjectId: \"requestId\" in fact ? fact.requestId : fact.proposalId,\n\t\t\t\t\t\t} satisfies AgentRuntimeAuditRecord,\n\t\t\t\t\t],\n\t\t\t\t]);\n\t\t\t}\n\t\t\tctx.state.set(seq);\n\t\t},\n\t\t{ name: `${name}/audit`, factory: \"agentRequestLedgerAudit\" },\n\t);\n\treturn { views, issues, audit };\n}\n\nexport interface AgentRequestViewsState {\n\trequestsById: Map<string, AgentRequestIssued>;\n\trequestsByEffectRun: Map<string, string[]>;\n\tstatusByRequest: Map<string, AgentRequestStatusChanged>;\n\tissues: DataIssue[];\n\taudit: AgentRuntimeAuditRecord[];\n\tauditSeq: number;\n}\n\nexport function emptyAgentRequestViewsState(): AgentRequestViewsState {\n\treturn {\n\t\trequestsById: new Map<string, AgentRequestIssued>(),\n\t\trequestsByEffectRun: new Map<string, string[]>(),\n\t\tstatusByRequest: new Map<string, AgentRequestStatusChanged>(),\n\t\tissues: [],\n\t\taudit: [],\n\t\tauditSeq: 0,\n\t};\n}\n\nexport function cloneAgentRequestViewsState(state: AgentRequestViewsState): AgentRequestViewsState {\n\treturn {\n\t\trequestsById: new Map(state.requestsById),\n\t\trequestsByEffectRun: new Map(Array.from(state.requestsByEffectRun, ([k, v]) => [k, [...v]])),\n\t\tstatusByRequest: new Map(state.statusByRequest),\n\t\tissues: [...state.issues],\n\t\taudit: [...state.audit],\n\t\tauditSeq: state.auditSeq,\n\t};\n}\n\nexport function reduceAgentRequestViews(\n\tstate: AgentRequestViewsState,\n\tfact: AgentRequestFact,\n): void {\n\tstate.auditSeq += 1;\n\tif (fact.kind === \"issued\") {\n\t\tconst request = sanitizeAgentRequestIssued(fact);\n\t\tstate.requestsById.set(request.requestId, request);\n\t\tconst requestIds = state.requestsByEffectRun.get(request.effectRunId) ?? [];\n\t\tif (!requestIds.includes(request.requestId)) requestIds.push(request.requestId);\n\t\tstate.requestsByEffectRun.set(request.effectRunId, requestIds);\n\t\tstate.statusByRequest.set(request.requestId, {\n\t\t\tkind: \"status\",\n\t\t\trequestId: request.requestId,\n\t\t\toperationId: request.operationId,\n\t\t\teffectRunId: request.effectRunId,\n\t\t\tstatus: \"issued\",\n\t\t\tsourceRefs: [ref(\"agent-request\", request.requestId)],\n\t\t});\n\t} else if (fact.kind === \"status\") {\n\t\tconst status = sanitizeAgentRequestStatusChanged(fact);\n\t\tstate.statusByRequest.set(status.requestId, status);\n\t\tif (status.issues !== undefined) state.issues.push(...status.issues);\n\t} else if (fact.kind === \"rejected\") {\n\t\tstate.issues.push(sanitizeAdapterInputIssue(fact.issue));\n\t}\n\tstate.audit.push({\n\t\tid: `agent-request-ledger:${state.auditSeq}`,\n\t\tkind: `agent-request-${fact.kind}`,\n\t\tsubjectId: \"requestId\" in fact ? fact.requestId : fact.proposalId,\n\t});\n}\n\nexport function sanitizeAgentRequestStatusChanged(\n\tstatus: AgentRequestStatusChanged,\n): AgentRequestStatusChanged {\n\tconst sourceRefs =\n\t\tstatus.sourceRefs === undefined ? undefined : sanitizeAdapterInputSourceRefs(status.sourceRefs);\n\tconst issues =\n\t\tstatus.issues === undefined\n\t\t\t? undefined\n\t\t\t: Object.freeze(status.issues.map((issue) => sanitizeAdapterInputIssue(issue)));\n\tconst metadata = sanitizeProviderGraphVisibleRecord(status.metadata);\n\treturn Object.freeze({\n\t\tkind: \"status\",\n\t\trequestId: status.requestId,\n\t\t...(status.operationId === undefined ? {} : { operationId: status.operationId }),\n\t\teffectRunId: status.effectRunId,\n\t\tstatus: status.status,\n\t\t...(sourceRefs === undefined || sourceRefs.length === 0 ? {} : { sourceRefs }),\n\t\t...(issues === undefined || issues.length === 0 ? {} : { issues }),\n\t\t...(metadata === undefined ? {} : { metadata }),\n\t} satisfies AgentRequestStatusChanged);\n}\n\nexport function freezeAgentRequestViews(state: AgentRequestViewsState): AgentRequestViews {\n\tconst pending = Array.from(state.requestsById.values()).filter((request) => {\n\t\tconst status = state.statusByRequest.get(request.requestId)?.status;\n\t\treturn status === undefined || !isTerminalRequestStatus(status);\n\t});\n\tconst awaitingProvider = pending.filter(\n\t\t(request) => state.statusByRequest.get(request.requestId)?.status === \"awaiting-provider\",\n\t);\n\treturn {\n\t\trequestsById: new Map(state.requestsById),\n\t\trequestsByEffectRun: new Map(\n\t\t\tArray.from(state.requestsByEffectRun, ([key, value]) => [key, Object.freeze([...value])]),\n\t\t),\n\t\tstatusByRequest: new Map(state.statusByRequest),\n\t\tpending: Object.freeze(pending),\n\t\tawaitingProvider: Object.freeze(awaitingProvider),\n\t\tissues: Object.freeze([...state.issues]),\n\t\taudit: Object.freeze([...state.audit]),\n\t};\n}\n","import { type Ctx, depBatch } from \"../ctx/types.js\";\nimport type { DataIssue } from \"../data/index.js\";\nimport type { Graph } from \"../graph/graph.js\";\nimport type { Node } from \"../node/node.js\";\nimport {\n\tdataIssue,\n\tforEachDepBatch,\n\tref,\n\tsanitizeAdapterInputIssue,\n\tsanitizeAdapterInputSourceRefs,\n} from \"./agent-runtime-common.js\";\nimport type {\n\tAgentRequestSatisfactionBundle,\n\tAgentRuntimeAuditRecord,\n\tContextContribution,\n\tPromptBundle,\n} from \"./agent-runtime-types-agent.js\";\nimport type {\n\tAgentRequestFact,\n\tAgentRequestIssued,\n\tAgentRequestStatus,\n\tAgentRequestStatusChanged,\n\tExecutorOutcome,\n\tExecutorProfile,\n\tExecutorRoute,\n\tSourceRef,\n} from \"./agent-runtime-types-core.js\";\n\nexport interface RequestSatisfactionState {\n\trequests: Map<string, AgentRequestIssued>;\n\tprofiles: Map<string, ExecutorProfile>;\n\troutes: Map<string, ExecutorRoute>;\n\toutcomes: Map<string, ExecutorOutcome>;\n\tcontexts: Map<string, ContextContribution>;\n\tprompts: Map<string, PromptBundle>;\n\tcompatibleRoutesByRouteId: Map<string, ExecutorRoute>;\n\tterminalRequests: Set<string>;\n\tacceptedTerminalFactIds: Set<string>;\n\tissueKeys: Set<string>;\n\tstatusKeys: Set<string>;\n\tissueSeq: number;\n\tauditSeq: number;\n}\n\nexport function requestSatisfactionProjector(\n\tgraph: Graph,\n\topts: {\n\t\treadonly name?: string;\n\t\treadonly requestFacts: Node<AgentRequestFact>;\n\t\treadonly executorProfiles?: readonly Node<ExecutorProfile>[];\n\t\treadonly executorRoutes?: readonly Node<ExecutorRoute>[];\n\t\treadonly executorOutcomes?: readonly Node<ExecutorOutcome>[];\n\t\treadonly contextContributions?: readonly Node<ContextContribution>[];\n\t\treadonly promptBundles?: readonly Node<PromptBundle>[];\n\t},\n): AgentRequestSatisfactionBundle {\n\tconst name = opts.name ?? \"requestSatisfaction\";\n\tconst profileDeps = opts.executorProfiles ?? [];\n\tconst routeDeps = opts.executorRoutes ?? [];\n\tconst outcomeDeps = opts.executorOutcomes ?? [];\n\tconst contextDeps = opts.contextContributions ?? [];\n\tconst promptDeps = opts.promptBundles ?? [];\n\tconst deps = [\n\t\topts.requestFacts,\n\t\t...profileDeps,\n\t\t...routeDeps,\n\t\t...outcomeDeps,\n\t\t...contextDeps,\n\t\t...promptDeps,\n\t];\n\tconst profileStart = 1;\n\tconst routeStart = profileStart + profileDeps.length;\n\tconst outcomeStart = routeStart + routeDeps.length;\n\tconst contextStart = outcomeStart + outcomeDeps.length;\n\tconst promptStart = contextStart + contextDeps.length;\n\tconst runtime = graph.node<AgentRequestSatisfactionFact>(\n\t\tdeps,\n\t\t(ctx) => {\n\t\t\tconst state = ctx.state.get<RequestSatisfactionState>() ?? {\n\t\t\t\trequests: new Map<string, AgentRequestIssued>(),\n\t\t\t\tprofiles: new Map<string, ExecutorProfile>(),\n\t\t\t\troutes: new Map<string, ExecutorRoute>(),\n\t\t\t\toutcomes: new Map<string, ExecutorOutcome>(),\n\t\t\t\tcontexts: new Map<string, ContextContribution>(),\n\t\t\t\tprompts: new Map<string, PromptBundle>(),\n\t\t\t\tcompatibleRoutesByRouteId: new Map<string, ExecutorRoute>(),\n\t\t\t\tterminalRequests: new Set<string>(),\n\t\t\t\tacceptedTerminalFactIds: new Set<string>(),\n\t\t\t\tissueKeys: new Set<string>(),\n\t\t\t\tstatusKeys: new Set<string>(),\n\t\t\t\tissueSeq: 0,\n\t\t\t\tauditSeq: 0,\n\t\t\t};\n\t\t\tfor (const fact of depBatch(ctx, 0) ?? []) {\n\t\t\t\tif ((fact as AgentRequestFact).kind === \"issued\") {\n\t\t\t\t\tconst request = fact as AgentRequestIssued;\n\t\t\t\t\tstate.requests.set(request.requestId, request);\n\t\t\t\t\temitStatus(ctx, state, request, initialRequestStatus(request), [\n\t\t\t\t\t\tref(\"agent-request\", request.requestId),\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tforEachDepBatch(ctx, profileStart, profileDeps.length, (raw) => {\n\t\t\t\tconst profile = raw as ExecutorProfile;\n\t\t\t\tstate.profiles.set(profile.profileId, profile);\n\t\t\t});\n\t\t\tforEachDepBatch(ctx, routeStart, routeDeps.length, (raw) => {\n\t\t\t\tconst route = raw as ExecutorRoute;\n\t\t\t\tstate.routes.set(route.routeId, route);\n\t\t\t});\n\t\t\tforEachDepBatch(ctx, outcomeStart, outcomeDeps.length, (raw) => {\n\t\t\t\tconst outcome = raw as ExecutorOutcome;\n\t\t\t\tstate.outcomes.set(outcome.outcomeId, outcome);\n\t\t\t});\n\t\t\tforEachDepBatch(ctx, contextStart, contextDeps.length, (raw) => {\n\t\t\t\tconst contribution = raw as ContextContribution;\n\t\t\t\tstate.contexts.set(contribution.contributionId, contribution);\n\t\t\t});\n\t\t\tforEachDepBatch(ctx, promptStart, promptDeps.length, (raw) => {\n\t\t\t\tconst prompt = raw as PromptBundle;\n\t\t\t\tstate.prompts.set(prompt.promptId, prompt);\n\t\t\t});\n\t\t\tevaluateRequestSatisfaction(ctx, state);\n\t\t\tctx.state.set(state);\n\t\t},\n\t\t{ name: `${name}/runtime`, factory: \"requestSatisfactionProjector\" },\n\t);\n\tconst status = graph.node<AgentRequestStatusChanged>(\n\t\t[runtime],\n\t\t(ctx) => {\n\t\t\tfor (const fact of depBatch(ctx, 0) ?? []) {\n\t\t\t\tconst typed = fact as AgentRequestSatisfactionFact;\n\t\t\t\tif (typed.kind === \"status\") ctx.down([[\"DATA\", typed.status]]);\n\t\t\t}\n\t\t},\n\t\t{ name: `${name}/status`, factory: \"requestSatisfactionStatus\" },\n\t);\n\tconst issues = graph.node<DataIssue>(\n\t\t[runtime],\n\t\t(ctx) => {\n\t\t\tfor (const fact of depBatch(ctx, 0) ?? []) {\n\t\t\t\tconst typed = fact as AgentRequestSatisfactionFact;\n\t\t\t\tif (typed.kind === \"issue\") ctx.down([[\"DATA\", typed.issue]]);\n\t\t\t}\n\t\t},\n\t\t{ name: `${name}/issues`, factory: \"requestSatisfactionIssues\" },\n\t);\n\tconst audit = graph.node<AgentRuntimeAuditRecord>(\n\t\t[runtime],\n\t\t(ctx) => {\n\t\t\tfor (const fact of depBatch(ctx, 0) ?? []) {\n\t\t\t\tconst typed = fact as AgentRequestSatisfactionFact;\n\t\t\t\tif (typed.kind === \"audit\") ctx.down([[\"DATA\", typed.audit]]);\n\t\t\t}\n\t\t},\n\t\t{ name: `${name}/audit`, factory: \"requestSatisfactionAudit\" },\n\t);\n\treturn { status, issues, audit };\n}\n\nexport type AgentRequestSatisfactionFact =\n\t| { readonly kind: \"status\"; readonly status: AgentRequestStatusChanged }\n\t| { readonly kind: \"issue\"; readonly issue: DataIssue }\n\t| { readonly kind: \"audit\"; readonly audit: AgentRuntimeAuditRecord };\n\nexport function initialRequestStatus(request: AgentRequestIssued): AgentRequestStatus {\n\tif (request.requestKind === \"context\") return \"awaiting-context\";\n\tif (request.requestKind === \"prompt\") return \"awaiting-prompt\";\n\treturn \"awaiting-route\";\n}\n\nexport function evaluateRequestSatisfaction(ctx: Ctx, state: RequestSatisfactionState): void {\n\tfor (const route of state.routes.values()) handleRoute(ctx, state, route);\n\tfor (const contribution of state.contexts.values())\n\t\thandleContextContribution(ctx, state, contribution);\n\tfor (const prompt of state.prompts.values()) handlePromptBundle(ctx, state, prompt);\n\tfor (const outcome of state.outcomes.values()) handleExecutorOutcome(ctx, state, outcome);\n}\n\nexport function handleRoute(ctx: Ctx, state: RequestSatisfactionState, route: ExecutorRoute): void {\n\tconst request = state.requests.get(route.requestId);\n\tif (request === undefined) {\n\t\treturn;\n\t}\n\tif (state.terminalRequests.has(request.requestId)) {\n\t\tif (state.compatibleRoutesByRouteId.get(route.routeId)?.requestId !== request.requestId) {\n\t\t\temitIssueOnce(\n\t\t\t\tctx,\n\t\t\t\tstate,\n\t\t\t\t`late-route:${route.routeId}`,\n\t\t\t\t\"late-route-after-terminal\",\n\t\t\t\t`ExecutorRoute '${route.routeId}' arrived after request '${request.requestId}' was already terminal`,\n\t\t\t\trequest.requestId,\n\t\t\t\t[ref(\"executor-route\", route.routeId), ref(\"agent-request\", request.requestId)],\n\t\t\t);\n\t\t}\n\t\treturn;\n\t}\n\tif (request.operationId !== route.operationId) {\n\t\temitIssueOnce(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`stale-route:${route.routeId}`,\n\t\t\t\"stale-route-operation\",\n\t\t\t`ExecutorRoute '${route.routeId}' operationId does not match request '${request.requestId}'`,\n\t\t\trequest.requestId,\n\t\t\t[ref(\"executor-route\", route.routeId), ref(\"agent-request\", request.requestId)],\n\t\t);\n\t\treturn;\n\t}\n\tconst profile = state.profiles.get(route.profileId);\n\tif (profile === undefined) {\n\t\treturn;\n\t}\n\tconst compatibilityIssue = routeCompatibilityIssue(request, route, profile);\n\tif (compatibilityIssue !== undefined) {\n\t\temitIssueOnce(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`route-incompatible:${route.routeId}:${compatibilityIssue}`,\n\t\t\tcompatibilityIssue,\n\t\t\t`ExecutorRoute '${route.routeId}' is incompatible with request '${request.requestId}'`,\n\t\t\trequest.requestId,\n\t\t\t[\n\t\t\t\tref(\"executor-route\", route.routeId),\n\t\t\t\tref(\"executor-profile\", profile.profileId),\n\t\t\t\tref(\"agent-request\", request.requestId),\n\t\t\t],\n\t\t);\n\t\treturn;\n\t}\n\tstate.compatibleRoutesByRouteId.set(route.routeId, route);\n\temitStatusOnce(\n\t\tctx,\n\t\tstate,\n\t\t`route:${route.routeId}:awaiting-provider`,\n\t\trequest,\n\t\t\"awaiting-provider\",\n\t\t[\n\t\t\tref(\"executor-route\", route.routeId),\n\t\t\tref(\"executor-profile\", profile.profileId),\n\t\t\tref(\"agent-request\", request.requestId),\n\t\t],\n\t);\n}\n\nexport function handleExecutorOutcome(\n\tctx: Ctx,\n\tstate: RequestSatisfactionState,\n\toutcome: ExecutorOutcome,\n): void {\n\tconst request = state.requests.get(outcome.requestId);\n\tif (request === undefined) {\n\t\treturn;\n\t}\n\tif (request.operationId !== outcome.operationId) {\n\t\temitIssueOnce(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`stale-outcome:${outcome.outcomeId}`,\n\t\t\t\"stale-outcome-operation\",\n\t\t\t`ExecutorOutcome '${outcome.outcomeId}' operationId does not match request '${request.requestId}'`,\n\t\t\trequest.requestId,\n\t\t\t[ref(\"executor-outcome\", outcome.outcomeId), ref(\"agent-request\", request.requestId)],\n\t\t);\n\t\treturn;\n\t}\n\tconst route = state.compatibleRoutesByRouteId.get(outcome.routeId);\n\tif (route === undefined || route.requestId !== request.requestId) {\n\t\temitIssueOnce(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`missing-route:${outcome.outcomeId}`,\n\t\t\t\"missing-compatible-route\",\n\t\t\t`ExecutorOutcome '${outcome.outcomeId}' has no compatible route for request '${request.requestId}'`,\n\t\t\trequest.requestId,\n\t\t\t[ref(\"executor-outcome\", outcome.outcomeId), ref(\"agent-request\", request.requestId)],\n\t\t);\n\t\treturn;\n\t}\n\tconst outcomeIssue = outcomeCompatibilityIssue(request, route, outcome);\n\tif (outcomeIssue !== undefined) {\n\t\temitIssueOnce(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`outcome-incompatible:${outcome.outcomeId}:${outcomeIssue}`,\n\t\t\toutcomeIssue,\n\t\t\t`ExecutorOutcome '${outcome.outcomeId}' is incompatible with route '${route.routeId}' for request '${request.requestId}'`,\n\t\t\trequest.requestId,\n\t\t\t[\n\t\t\t\tref(\"executor-outcome\", outcome.outcomeId),\n\t\t\t\tref(\"executor-route\", route.routeId),\n\t\t\t\tref(\"agent-request\", request.requestId),\n\t\t\t],\n\t\t);\n\t\treturn;\n\t}\n\tif (state.terminalRequests.has(request.requestId)) {\n\t\tif (state.acceptedTerminalFactIds.has(`outcome:${outcome.outcomeId}`)) return;\n\t\temitIssueOnce(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`duplicate-outcome:${outcome.outcomeId}`,\n\t\t\t\"duplicate-terminal-outcome\",\n\t\t\t`ExecutorOutcome '${outcome.outcomeId}' arrived after request '${request.requestId}' was already terminal`,\n\t\t\trequest.requestId,\n\t\t\t[ref(\"executor-outcome\", outcome.outcomeId), ref(\"agent-request\", request.requestId)],\n\t\t);\n\t\treturn;\n\t}\n\tstate.terminalRequests.add(request.requestId);\n\tstate.acceptedTerminalFactIds.add(`outcome:${outcome.outcomeId}`);\n\tconst status = outcomeStatus(outcome);\n\temitStatus(ctx, state, request, status, [\n\t\tref(\"executor-outcome\", outcome.outcomeId),\n\t\tref(\"executor-route\", route.routeId),\n\t\tref(\"agent-request\", request.requestId),\n\t]);\n}\n\nexport function handleContextContribution(\n\tctx: Ctx,\n\tstate: RequestSatisfactionState,\n\tcontribution: ContextContribution,\n): void {\n\tconst request = state.requests.get(contribution.requestId);\n\tif (request === undefined) return;\n\tif (request.operationId !== contribution.operationId) {\n\t\temitIssueOnce(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`stale-context:${contribution.contributionId}`,\n\t\t\t\"stale-context-operation\",\n\t\t\t`ContextContribution '${contribution.contributionId}' operationId does not match request '${request.requestId}'`,\n\t\t\trequest.requestId,\n\t\t\t[ref(\"context-contribution\", contribution.contributionId)],\n\t\t);\n\t\treturn;\n\t}\n\tif (request.requestKind !== \"context\") {\n\t\temitIssueOnce(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`wrong-context-kind:${contribution.contributionId}`,\n\t\t\t\"wrong-kind-context-satisfaction\",\n\t\t\t`ContextContribution '${contribution.contributionId}' cannot satisfy ${request.requestKind} request '${request.requestId}'`,\n\t\t\trequest.requestId,\n\t\t\t[ref(\"context-contribution\", contribution.contributionId)],\n\t\t);\n\t\treturn;\n\t}\n\tif (state.terminalRequests.has(request.requestId)) {\n\t\tif (\n\t\t\tstate.acceptedTerminalFactIds.has(`context:${contribution.contributionId}`) ||\n\t\t\tstate.statusKeys.has(`context:${contribution.contributionId}:awaiting-context`)\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\temitIssueOnce(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`duplicate-context:${contribution.contributionId}`,\n\t\t\t\"duplicate-terminal-context\",\n\t\t\t`ContextContribution '${contribution.contributionId}' arrived after request '${request.requestId}' was already terminal`,\n\t\t\trequest.requestId,\n\t\t\t[\n\t\t\t\tref(\"context-contribution\", contribution.contributionId),\n\t\t\t\tref(\"agent-request\", request.requestId),\n\t\t\t],\n\t\t);\n\t\treturn;\n\t}\n\tif (contribution.status === \"pending\")\n\t\temitStatusOnce(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`context:${contribution.contributionId}:awaiting-context`,\n\t\t\trequest,\n\t\t\t\"awaiting-context\",\n\t\t\t[ref(\"context-contribution\", contribution.contributionId)],\n\t\t);\n\telse {\n\t\tstate.terminalRequests.add(request.requestId);\n\t\tstate.acceptedTerminalFactIds.add(`context:${contribution.contributionId}`);\n\t\temitStatus(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\trequest,\n\t\t\tcontribution.status === \"ready\" ? \"completed\" : \"failed\",\n\t\t\t[ref(\"context-contribution\", contribution.contributionId)],\n\t\t\tcontribution.issues,\n\t\t);\n\t}\n}\n\nexport function handlePromptBundle(\n\tctx: Ctx,\n\tstate: RequestSatisfactionState,\n\tprompt: PromptBundle,\n): void {\n\tconst request = state.requests.get(prompt.requestId);\n\tif (request === undefined) return;\n\tif (request.operationId !== prompt.operationId) {\n\t\temitIssueOnce(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`stale-prompt:${prompt.promptId}`,\n\t\t\t\"stale-prompt-operation\",\n\t\t\t`PromptBundle '${prompt.promptId}' operationId does not match request '${request.requestId}'`,\n\t\t\trequest.requestId,\n\t\t\t[ref(\"prompt-bundle\", prompt.promptId)],\n\t\t);\n\t\treturn;\n\t}\n\tif (request.requestKind !== \"prompt\") {\n\t\temitIssueOnce(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`wrong-prompt-kind:${prompt.promptId}`,\n\t\t\t\"wrong-kind-prompt-satisfaction\",\n\t\t\t`PromptBundle '${prompt.promptId}' cannot satisfy ${request.requestKind} request '${request.requestId}'`,\n\t\t\trequest.requestId,\n\t\t\t[ref(\"prompt-bundle\", prompt.promptId)],\n\t\t);\n\t\treturn;\n\t}\n\tif (state.terminalRequests.has(request.requestId)) {\n\t\tif (\n\t\t\tstate.acceptedTerminalFactIds.has(`prompt:${prompt.promptId}`) ||\n\t\t\tstate.statusKeys.has(`prompt:${prompt.promptId}:awaiting-prompt`)\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\temitIssueOnce(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`duplicate-prompt:${prompt.promptId}`,\n\t\t\t\"duplicate-terminal-prompt\",\n\t\t\t`PromptBundle '${prompt.promptId}' arrived after request '${request.requestId}' was already terminal`,\n\t\t\trequest.requestId,\n\t\t\t[ref(\"prompt-bundle\", prompt.promptId), ref(\"agent-request\", request.requestId)],\n\t\t);\n\t\treturn;\n\t}\n\tif (prompt.status === \"ready\") {\n\t\tstate.terminalRequests.add(request.requestId);\n\t\tstate.acceptedTerminalFactIds.add(`prompt:${prompt.promptId}`);\n\t\temitStatus(ctx, state, request, \"completed\", [ref(\"prompt-bundle\", prompt.promptId)]);\n\t} else if (prompt.status === \"issue\") {\n\t\tstate.terminalRequests.add(request.requestId);\n\t\tstate.acceptedTerminalFactIds.add(`prompt:${prompt.promptId}`);\n\t\temitStatus(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\trequest,\n\t\t\t\"failed\",\n\t\t\t[ref(\"prompt-bundle\", prompt.promptId)],\n\t\t\tprompt.issues,\n\t\t);\n\t} else {\n\t\temitStatusOnce(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\t`prompt:${prompt.promptId}:awaiting-prompt`,\n\t\t\trequest,\n\t\t\t\"awaiting-prompt\",\n\t\t\t[ref(\"prompt-bundle\", prompt.promptId)],\n\t\t\tprompt.issues,\n\t\t);\n\t}\n}\n\nexport function routeCompatibilityIssue(\n\trequest: AgentRequestIssued,\n\troute: ExecutorRoute,\n\tprofile: ExecutorProfile,\n): string | undefined {\n\tif (request.requestKind !== \"executor\") return \"route-for-non-executor-request\";\n\tif (route.executorId !== profile.executorId) return \"route-profile-executor-mismatch\";\n\tif (\n\t\trequest.input?.inputId !== undefined &&\n\t\troute.inputId !== undefined &&\n\t\trequest.input.inputId !== route.inputId\n\t) {\n\t\treturn \"route-input-mismatch\";\n\t}\n\tif (\n\t\trequest.input?.inputKind !== undefined &&\n\t\troute.inputKind !== undefined &&\n\t\trequest.input.inputKind !== route.inputKind\n\t) {\n\t\treturn \"route-input-kind-mismatch\";\n\t}\n\tconst inputKind = request.input?.inputKind ?? route.inputKind;\n\tif (inputKind !== undefined && !profileKindAcceptsInput(profile.kind, inputKind))\n\t\treturn \"profile-kind-input-incompatible\";\n\tif (\n\t\tinputKind !== undefined &&\n\t\tprofile.acceptedInputKinds !== undefined &&\n\t\t!profile.acceptedInputKinds.includes(inputKind)\n\t) {\n\t\treturn \"profile-rejects-input-kind\";\n\t}\n\tif (\n\t\trequest.input?.schemaRef !== undefined &&\n\t\tprofile.acceptedSchemaRefs !== undefined &&\n\t\t!profile.acceptedSchemaRefs.includes(request.input.schemaRef)\n\t) {\n\t\treturn \"profile-rejects-schema\";\n\t}\n\treturn undefined;\n}\n\nexport function outcomeCompatibilityIssue(\n\trequest: AgentRequestIssued,\n\troute: ExecutorRoute,\n\toutcome: ExecutorOutcome,\n): string | undefined {\n\tif (outcome.executorId !== route.executorId) return \"outcome-route-executor-mismatch\";\n\tif (outcome.profileId !== route.profileId) return \"outcome-route-profile-mismatch\";\n\tif (\n\t\troute.inputId !== undefined &&\n\t\t(outcome.inputId === undefined || outcome.inputId !== route.inputId)\n\t) {\n\t\treturn \"outcome-route-input-mismatch\";\n\t}\n\tif (\n\t\trequest.input?.inputId !== undefined &&\n\t\toutcome.inputId !== undefined &&\n\t\toutcome.inputId !== request.input.inputId\n\t) {\n\t\treturn \"outcome-request-input-mismatch\";\n\t}\n\tif (\n\t\troute.inputKind !== undefined &&\n\t\t(outcome.inputKind === undefined || outcome.inputKind !== route.inputKind)\n\t) {\n\t\treturn \"outcome-route-input-kind-mismatch\";\n\t}\n\tif (\n\t\trequest.input?.inputKind !== undefined &&\n\t\toutcome.inputKind !== undefined &&\n\t\toutcome.inputKind !== request.input.inputKind\n\t) {\n\t\treturn \"outcome-request-input-kind-mismatch\";\n\t}\n\treturn undefined;\n}\n\nexport function profileKindAcceptsInput(kind: ExecutorProfile[\"kind\"], inputKind: string): boolean {\n\tif (kind === \"llm\") return inputKind === \"llm-call\";\n\tif (kind === \"tool\") return inputKind === \"tool-call\";\n\tif (kind === \"human\") return inputKind === \"human-task\";\n\treturn inputKind === \"agent-task\";\n}\n\nexport function outcomeStatus(outcome: ExecutorOutcome): AgentRequestStatus {\n\tif (outcome.kind === \"result\") return \"completed\";\n\tif (outcome.kind === \"failure\") return \"failed\";\n\tif (outcome.kind === \"timeout\") return \"timeout\";\n\tif (outcome.kind === \"canceled\") return \"canceled\";\n\treturn \"blocked\";\n}\n\nexport function emitStatus(\n\tctx: Ctx,\n\tstate: RequestSatisfactionState,\n\trequest: AgentRequestIssued,\n\tstatus: AgentRequestStatus,\n\tsourceRefs?: readonly SourceRef[],\n\tissues?: readonly DataIssue[],\n): void {\n\tconst cleanSourceRefs =\n\t\tsourceRefs === undefined ? undefined : sanitizeAdapterInputSourceRefs(sourceRefs);\n\tconst cleanIssues =\n\t\tissues === undefined\n\t\t\t? undefined\n\t\t\t: Object.freeze(issues.map((issue) => sanitizeAdapterInputIssue(issue)));\n\tconst fact: AgentRequestStatusChanged = {\n\t\tkind: \"status\",\n\t\trequestId: request.requestId,\n\t\toperationId: request.operationId,\n\t\teffectRunId: request.effectRunId,\n\t\tstatus,\n\t\tsourceRefs: cleanSourceRefs,\n\t\tissues: cleanIssues,\n\t};\n\tstate.auditSeq += 1;\n\tctx.down([\n\t\t[\"DATA\", { kind: \"status\", status: fact } satisfies AgentRequestSatisfactionFact],\n\t\t[\n\t\t\t\"DATA\",\n\t\t\t{\n\t\t\t\tkind: \"audit\",\n\t\t\t\taudit: {\n\t\t\t\t\tid: `${request.requestId}:status:${state.auditSeq}`,\n\t\t\t\t\tkind: \"agent-request-status\",\n\t\t\t\t\tsubjectId: request.requestId,\n\t\t\t\t\tsourceRefs: cleanSourceRefs,\n\t\t\t\t\tmetadata: { status },\n\t\t\t\t},\n\t\t\t} satisfies AgentRequestSatisfactionFact,\n\t\t],\n\t]);\n}\n\nexport function emitStatusOnce(\n\tctx: Ctx,\n\tstate: RequestSatisfactionState,\n\tkey: string,\n\trequest: AgentRequestIssued,\n\tstatus: AgentRequestStatus,\n\tsourceRefs?: readonly SourceRef[],\n\tissues?: readonly DataIssue[],\n): void {\n\tif (state.statusKeys.has(key)) return;\n\tstate.statusKeys.add(key);\n\temitStatus(ctx, state, request, status, sourceRefs, issues);\n}\n\nexport function emitIssue(\n\tctx: Ctx,\n\tstate: RequestSatisfactionState,\n\tcode: string,\n\tmessage: string,\n\tsubjectId?: string,\n\trefs?: readonly SourceRef[],\n): void {\n\tstate.issueSeq += 1;\n\tconst issue = dataIssue(code, message, { subjectId, refs });\n\tstate.auditSeq += 1;\n\tctx.down([\n\t\t[\"DATA\", { kind: \"issue\", issue } satisfies AgentRequestSatisfactionFact],\n\t\t[\n\t\t\t\"DATA\",\n\t\t\t{\n\t\t\t\tkind: \"audit\",\n\t\t\t\taudit: {\n\t\t\t\t\tid: `${subjectId ?? \"request\"}:issue:${state.auditSeq}`,\n\t\t\t\t\tkind: \"agent-request-issue\",\n\t\t\t\t\tsubjectId,\n\t\t\t\t\tissueCode: code,\n\t\t\t\t\tmessage,\n\t\t\t\t\tsourceRefs: refs,\n\t\t\t\t},\n\t\t\t} satisfies AgentRequestSatisfactionFact,\n\t\t],\n\t]);\n}\n\nexport function emitIssueOnce(\n\tctx: Ctx,\n\tstate: RequestSatisfactionState,\n\tkey: string,\n\tcode: string,\n\tmessage: string,\n\tsubjectId?: string,\n\trefs?: readonly SourceRef[],\n): void {\n\tif (state.issueKeys.has(key)) return;\n\tstate.issueKeys.add(key);\n\temitIssue(ctx, state, code, message, subjectId, refs);\n}\n","import { depBatch } from \"../ctx/types.js\";\nimport type { DataIssue } from \"../data/index.js\";\nimport type { Graph } from \"../graph/graph.js\";\nimport type { Node } from \"../node/node.js\";\nimport {\n\trequestToolProviderAdapterRun,\n\trunRequestIdentityIssues,\n} from \"./agent-runtime-adapter-run.js\";\nimport {\n\tdataIssue,\n\tforEachDepBatch,\n\tprojectRuntimeFact,\n\tref,\n\tsanitizeAdapterInputSourceRefs,\n\tsanitizeProviderGraphVisibleRecord,\n\tuniqueSourceRefs,\n} from \"./agent-runtime-common.js\";\nimport type { AgentNeed, AgentRuntimeAuditRecord } from \"./agent-runtime-types-agent.js\";\nimport type { SourceRef } from \"./agent-runtime-types-core.js\";\nimport type {\n\tToolProviderAdapterInput,\n\tToolProviderAdapterRunRequested,\n\tToolProviderApprovalPolicy,\n\tToolProviderExecutionPolicy,\n\tToolProviderRunAdmission,\n\tToolProviderRunAdmissionBundle,\n\tToolProviderRunAdmissionDecision,\n\tToolProviderRunAdmissionOutcome,\n\tToolProviderRunAdmissionProposal,\n\tToolProviderRunAdmissionState,\n\tToolProviderRunAdmissionStatus,\n\tToolProviderRunAdmissionViews,\n} from \"./agent-runtime-types-tool.js\";\n\nexport function toolProviderRunAdmissionProjector(\n\tgraph: Graph,\n\topts: {\n\t\treadonly name?: string;\n\t\treadonly inputs: Node<ToolProviderAdapterInput>;\n\t\treadonly runRequests: readonly Node<ToolProviderAdapterRunRequested>[];\n\t\treadonly decisions?: readonly Node<ToolProviderRunAdmissionDecision>[];\n\t\treadonly now?: () => number;\n\t},\n): ToolProviderRunAdmissionBundle {\n\tconst name = opts.name ?? \"toolProviderRunAdmission\";\n\tconst decisionDeps = opts.decisions ?? [];\n\tconst runtime = graph.node<ToolProviderRunAdmissionFact>(\n\t\t[opts.inputs, ...opts.runRequests, ...decisionDeps],\n\t\t(ctx) => {\n\t\t\tconst state = ctx.state.get<ToolProviderRunAdmissionProjectorState>() ?? {\n\t\t\t\tinputs: new Map<string, ToolProviderAdapterInput>(),\n\t\t\t\tproposalsById: new Map<string, InternalAdmissionProposal>(),\n\t\t\t\tproposalsByRun: new Map<string, ToolProviderRunAdmissionProposal[]>(),\n\t\t\t\tdecisionsByProposal: new Map<string, ToolProviderRunAdmissionDecision>(),\n\t\t\t\tadmissionsByProposal: new Map<string, ToolProviderRunAdmission>(),\n\t\t\t\tadmissionsByRun: new Map<string, ToolProviderRunAdmission[]>(),\n\t\t\t\tproposalKeys: new Set<string>(),\n\t\t\t\tadmissionKeys: new Set<string>(),\n\t\t\t\tapprovedRunKeys: new Set<string>(),\n\t\t\t\tstatusKeys: new Set<string>(),\n\t\t\t\tissueKeys: new Set<string>(),\n\t\t\t\tauditSeq: 0,\n\t\t\t};\n\t\t\tfor (const raw of depBatch(ctx, 0) ?? []) {\n\t\t\t\tconst input = raw as ToolProviderAdapterInput;\n\t\t\t\tstate.inputs.set(input.adapterInputId, input);\n\t\t\t}\n\t\t\tforEachDepBatch(ctx, 1, opts.runRequests.length, (raw) => {\n\t\t\t\tconst request = raw as ToolProviderAdapterRunRequested;\n\t\t\t\tconst input = state.inputs.get(request.adapterInputId);\n\t\t\t\tif (input === undefined) {\n\t\t\t\t\temitAdmissionIssue(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\tdataIssue(\n\t\t\t\t\t\t\t\"tool-provider-run-admission-missing-input\",\n\t\t\t\t\t\t\t\"Tool provider run admission request references an unknown adapter input.\",\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tsubjectId: request.adapterInputId,\n\t\t\t\t\t\t\t\trefs: sanitizeAdapterInputSourceRefs([\n\t\t\t\t\t\t\t\t\tref(\"tool-provider-adapter-run\", request.runId),\n\t\t\t\t\t\t\t\t\t...(request.sourceRefs ?? []),\n\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\t\temitAdmissionStatus(ctx, state, {\n\t\t\t\t\t\tkind: \"tool-provider-run-admission-status\",\n\t\t\t\t\t\tproposalId: `${request.runId}:admission-proposal`,\n\t\t\t\t\t\trunId: request.runId,\n\t\t\t\t\t\tadapterInputId: request.adapterInputId,\n\t\t\t\t\t\trequestId: request.requestId,\n\t\t\t\t\t\toperationId: request.operationId,\n\t\t\t\t\t\tstate: \"issue\",\n\t\t\t\t\t\tsourceRefs: request.sourceRefs,\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\thandleRunRequest(ctx, state, input, request, opts.now);\n\t\t\t});\n\t\t\tforEachDepBatch(ctx, 1 + opts.runRequests.length, decisionDeps.length, (raw) => {\n\t\t\t\tconst decision = sanitizeAdmissionDecision(raw as ToolProviderRunAdmissionDecision);\n\t\t\t\tstate.decisionsByProposal.set(decision.proposalId, decision);\n\t\t\t\tconst internal = state.proposalsById.get(decision.proposalId);\n\t\t\t\tif (internal !== undefined) applyDecision(ctx, state, internal, decision, opts.now);\n\t\t\t});\n\t\t\tctx.down([[\"DATA\", { kind: \"views\", views: buildAdmissionViews(state) }]]);\n\t\t\tctx.state.set(state);\n\t\t},\n\t\t{ name: `${name}/runtime`, factory: \"toolProviderRunAdmissionProjector\", partial: true },\n\t);\n\treturn {\n\t\tproposals: projectRuntimeFact(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/proposals`,\n\t\t\t\"toolProviderRunAdmissionProposals\",\n\t\t\t(fact) => (fact.kind === \"proposal\" ? fact.proposal : undefined),\n\t\t),\n\t\tadmissions: projectRuntimeFact(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/admissions`,\n\t\t\t\"toolProviderRunAdmissions\",\n\t\t\t(fact) => (fact.kind === \"admission\" ? fact.admission : undefined),\n\t\t),\n\t\tapprovedRunRequests: projectRuntimeFact(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/approvedRunRequests`,\n\t\t\t\"toolProviderRunAdmissionApprovedRunRequests\",\n\t\t\t(fact) => (fact.kind === \"approved-run-request\" ? fact.request : undefined),\n\t\t),\n\t\tstatus: projectRuntimeFact(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/status`,\n\t\t\t\"toolProviderRunAdmissionStatus\",\n\t\t\t(fact) => (fact.kind === \"status\" ? fact.status : undefined),\n\t\t),\n\t\tissues: projectRuntimeFact(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/issues`,\n\t\t\t\"toolProviderRunAdmissionIssues\",\n\t\t\t(fact) => (fact.kind === \"issue\" ? fact.issue : undefined),\n\t\t),\n\t\taudit: projectRuntimeFact(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/audit`,\n\t\t\t\"toolProviderRunAdmissionAudit\",\n\t\t\t(fact) => (fact.kind === \"audit\" ? fact.audit : undefined),\n\t\t),\n\t\tviews: projectRuntimeFact(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/views`,\n\t\t\t\"toolProviderRunAdmissionViews\",\n\t\t\t(fact) => (fact.kind === \"views\" ? fact.views : undefined),\n\t\t),\n\t};\n}\n\ntype ToolProviderRunAdmissionFact =\n\t| { readonly kind: \"proposal\"; readonly proposal: ToolProviderRunAdmissionProposal }\n\t| { readonly kind: \"admission\"; readonly admission: ToolProviderRunAdmission }\n\t| { readonly kind: \"approved-run-request\"; readonly request: ToolProviderAdapterRunRequested }\n\t| { readonly kind: \"status\"; readonly status: ToolProviderRunAdmissionStatus }\n\t| { readonly kind: \"issue\"; readonly issue: DataIssue }\n\t| { readonly kind: \"audit\"; readonly audit: AgentRuntimeAuditRecord }\n\t| { readonly kind: \"views\"; readonly views: ToolProviderRunAdmissionViews };\n\ninterface InternalAdmissionProposal {\n\treadonly proposal: ToolProviderRunAdmissionProposal;\n\treadonly request: ToolProviderAdapterRunRequested;\n\treadonly input: ToolProviderAdapterInput;\n}\n\ninterface ToolProviderRunAdmissionProjectorState {\n\tinputs: Map<string, ToolProviderAdapterInput>;\n\tproposalsById: Map<string, InternalAdmissionProposal>;\n\tproposalsByRun: Map<string, ToolProviderRunAdmissionProposal[]>;\n\tdecisionsByProposal: Map<string, ToolProviderRunAdmissionDecision>;\n\tadmissionsByProposal: Map<string, ToolProviderRunAdmission>;\n\tadmissionsByRun: Map<string, ToolProviderRunAdmission[]>;\n\tproposalKeys: Set<string>;\n\tadmissionKeys: Set<string>;\n\tapprovedRunKeys: Set<string>;\n\tstatusKeys: Set<string>;\n\tissueKeys: Set<string>;\n\tauditSeq: number;\n}\n\nfunction handleRunRequest(\n\tctx: { down: (msgs: readonly [\"DATA\", ToolProviderRunAdmissionFact][]) => void },\n\tstate: ToolProviderRunAdmissionProjectorState,\n\tinput: ToolProviderAdapterInput,\n\trequest: ToolProviderAdapterRunRequested,\n\tnow: (() => number) | undefined,\n): void {\n\tconst issues = runRequestIdentityIssues(request, input);\n\tif (input.status !== \"ready\") {\n\t\tissues.push(\n\t\t\tdataIssue(\n\t\t\t\t\"tool-provider-run-admission-input-not-ready\",\n\t\t\t\t\"Tool provider run admission requires a ready adapter input.\",\n\t\t\t\t{\n\t\t\t\t\tsubjectId: input.requestId,\n\t\t\t\t\trefs: [ref(\"tool-provider-adapter-input\", input.adapterInputId)],\n\t\t\t\t\tdetails: { status: input.status },\n\t\t\t\t},\n\t\t\t),\n\t\t);\n\t}\n\tif (issues.length > 0) {\n\t\tfor (const issue of issues) emitAdmissionIssue(ctx, state, issue);\n\t\temitAdmissionStatus(ctx, state, {\n\t\t\tkind: \"tool-provider-run-admission-status\",\n\t\t\tproposalId: `${request.runId}:admission-proposal`,\n\t\t\trunId: request.runId,\n\t\t\tadapterInputId: request.adapterInputId,\n\t\t\trequestId: request.requestId,\n\t\t\toperationId: request.operationId,\n\t\t\tstate: \"issue\",\n\t\t\tissues: Object.freeze(issues),\n\t\t\tsourceRefs: request.sourceRefs,\n\t\t});\n\t\temitAdmissionAudit(ctx, state, \"tool-provider-run-admission-request-rejected\", request, {\n\t\t\tissueCodes: issues.map((issue) => issue.code),\n\t\t});\n\t\treturn;\n\t}\n\tconst approval = resolveApprovalPolicy(input);\n\tconst proposal = admissionProposal(input, request, approval);\n\tconst internal = { proposal, request, input };\n\tstate.proposalsById.set(proposal.proposalId, internal);\n\tpushMapArrayBy(state.proposalsByRun, request.runId, proposal, (entry) => entry.proposalId);\n\temitProposal(ctx, state, proposal);\n\temitAdmissionAudit(ctx, state, \"tool-provider-run-admission-proposed\", proposal, {\n\t\tapprovalMode: proposal.approvalMode,\n\t});\n\tif (proposal.approvalMode === \"auto\") {\n\t\tadmit(ctx, state, internal, undefined, now);\n\t\treturn;\n\t}\n\tif (proposal.approvalMode === \"never\") {\n\t\trecordAdmission(ctx, state, internal, \"blocked\", {\n\t\t\treason: \"blocked by tool provider approval policy\",\n\t\t\tnow,\n\t\t});\n\t\treturn;\n\t}\n\tconst decision = state.decisionsByProposal.get(proposal.proposalId);\n\tif (decision === undefined) {\n\t\temitAdmissionStatus(ctx, state, {\n\t\t\tkind: \"tool-provider-run-admission-status\",\n\t\t\tproposalId: proposal.proposalId,\n\t\t\trunId: request.runId,\n\t\t\tadapterInputId: request.adapterInputId,\n\t\t\trequestId: request.requestId,\n\t\t\toperationId: request.operationId,\n\t\t\tstate: \"waiting\",\n\t\t\tsourceRefs: proposal.sourceRefs,\n\t\t});\n\t\treturn;\n\t}\n\tapplyDecision(ctx, state, internal, decision, now);\n}\n\nfunction applyDecision(\n\tctx: { down: (msgs: readonly [\"DATA\", ToolProviderRunAdmissionFact][]) => void },\n\tstate: ToolProviderRunAdmissionProjectorState,\n\tinternal: InternalAdmissionProposal,\n\tdecision: ToolProviderRunAdmissionDecision,\n\tnow: (() => number) | undefined,\n): void {\n\tconst existing = state.admissionsByProposal.get(internal.proposal.proposalId);\n\tif (existing !== undefined) {\n\t\tif (existing.decisionId === decision.decisionId) return;\n\t\tconst issue = dataIssue(\n\t\t\t\"tool-provider-run-admission-duplicate-decision\",\n\t\t\t\"Tool provider run admission proposal already has a terminal admission decision.\",\n\t\t\t{\n\t\t\t\tsubjectId: internal.input.requestId,\n\t\t\t\trefs: admissionSourceRefs(internal, decision),\n\t\t\t\tseverity: \"warning\",\n\t\t\t\tdetails: {\n\t\t\t\t\tproposalId: internal.proposal.proposalId,\n\t\t\t\t\texistingDecisionId: existing.decisionId,\n\t\t\t\t\trejectedDecisionId: decision.decisionId,\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\t\temitAdmissionIssue(ctx, state, issue);\n\t\temitAdmissionStatus(ctx, state, {\n\t\t\tkind: \"tool-provider-run-admission-status\",\n\t\t\tproposalId: internal.proposal.proposalId,\n\t\t\trunId: internal.request.runId,\n\t\t\tadapterInputId: internal.input.adapterInputId,\n\t\t\trequestId: internal.input.requestId,\n\t\t\toperationId: internal.input.operationId,\n\t\t\tstate: \"issue\",\n\t\t\tissues: Object.freeze([issue]),\n\t\t\tsourceRefs: admissionSourceRefs(internal, decision),\n\t\t});\n\t\temitAdmissionAudit(ctx, state, \"tool-provider-run-admission-duplicate-decision\", decision, {\n\t\t\tproposalId: internal.proposal.proposalId,\n\t\t\texistingDecisionId: existing.decisionId,\n\t\t});\n\t\treturn;\n\t}\n\tif (decision.outcome === \"admit\") {\n\t\tadmit(ctx, state, internal, decision, now);\n\t\treturn;\n\t}\n\trecordAdmission(ctx, state, internal, admissionStateForOutcome(decision.outcome), {\n\t\tdecision,\n\t\treason: decision.reason,\n\t\tnow,\n\t});\n}\n\nfunction admit(\n\tctx: { down: (msgs: readonly [\"DATA\", ToolProviderRunAdmissionFact][]) => void },\n\tstate: ToolProviderRunAdmissionProjectorState,\n\tinternal: InternalAdmissionProposal,\n\tdecision: ToolProviderRunAdmissionDecision | undefined,\n\tnow: (() => number) | undefined,\n): void {\n\tconst approvedRunId =\n\t\tdecision?.approvedRunId ??\n\t\t(decision === undefined\n\t\t\t? `${internal.request.runId}:admitted`\n\t\t\t: `${internal.request.runId}:admitted:${decision.decisionId}`);\n\tconst admission = recordAdmission(ctx, state, internal, \"admitted\", {\n\t\tdecision,\n\t\tapprovedRunId,\n\t\treason: decision?.reason,\n\t\tnow,\n\t});\n\tconst approvedRequest = requestToolProviderAdapterRun(internal.input, {\n\t\trunId: approvedRunId,\n\t\tattempt: internal.request.attempt,\n\t\treason: internal.request.reason,\n\t\tretryOfOutcomeId: internal.request.retryOfOutcomeId,\n\t\tpolicyRefs: internal.request.policyRefs ?? internal.input.policyRefs,\n\t\tsourceRefs: uniqueSourceRefs([\n\t\t\tref(\"tool-provider-adapter-run\", internal.request.runId),\n\t\t\tref(\"tool-provider-run-admission-proposal\", internal.proposal.proposalId),\n\t\t\tref(\"tool-provider-run-admission\", admission.admissionId),\n\t\t\t...(decision === undefined\n\t\t\t\t? []\n\t\t\t\t: [ref(\"tool-provider-run-admission-decision\", decision.decisionId)]),\n\t\t\t...(internal.request.sourceRefs ?? []),\n\t\t]),\n\t\tmetadata: {\n\t\t\t...(internal.request.metadata ?? {}),\n\t\t\tapproval: \"granted\",\n\t\t\tapprovalGranted: true,\n\t\t\tadmissionId: admission.admissionId,\n\t\t\tproposalId: internal.proposal.proposalId,\n\t\t\tapprovedFromRunId: internal.request.runId,\n\t\t\t...(decision === undefined ? {} : { decisionId: decision.decisionId }),\n\t\t},\n\t\trequestedAtMs: now?.(),\n\t});\n\temitApprovedRunRequest(ctx, state, approvedRequest);\n\temitAdmissionAudit(\n\t\tctx,\n\t\tstate,\n\t\t\"tool-provider-run-admission-approved-run-requested\",\n\t\t{\n\t\t\tproposalId: internal.proposal.proposalId,\n\t\t\trunId: approvedRequest.runId,\n\t\t},\n\t\t{\n\t\t\tapprovedFromRunId: internal.request.runId,\n\t\t\tdecisionId: decision?.decisionId,\n\t\t},\n\t);\n}\n\nfunction recordAdmission(\n\tctx: { down: (msgs: readonly [\"DATA\", ToolProviderRunAdmissionFact][]) => void },\n\tstate: ToolProviderRunAdmissionProjectorState,\n\tinternal: InternalAdmissionProposal,\n\tadmissionState: ToolProviderRunAdmissionState,\n\topts: {\n\t\treadonly decision?: ToolProviderRunAdmissionDecision;\n\t\treadonly approvedRunId?: string;\n\t\treadonly reason?: string;\n\t\treadonly now?: (() => number) | undefined;\n\t},\n): ToolProviderRunAdmission {\n\tconst admissionId = opts.decision?.admissionId ?? `${internal.proposal.proposalId}:admission`;\n\tconst sourceRefs = admissionSourceRefs(internal, opts.decision);\n\tconst admission: ToolProviderRunAdmission = Object.freeze({\n\t\tkind: \"tool-provider-run-admission\",\n\t\tadmissionId,\n\t\tproposalId: internal.proposal.proposalId,\n\t\trunId: internal.request.runId,\n\t\tadapterInputId: internal.input.adapterInputId,\n\t\trequestId: internal.input.requestId,\n\t\toperationId: internal.input.operationId,\n\t\tstate: admissionState,\n\t\t...(opts.decision === undefined ? {} : { decisionId: opts.decision.decisionId }),\n\t\t...(opts.approvedRunId === undefined ? {} : { approvedRunId: opts.approvedRunId }),\n\t\t...(opts.reason === undefined ? {} : { reason: opts.reason }),\n\t\tsourceRefs,\n\t\tmetadata: sanitizeProviderGraphVisibleRecord({\n\t\t\tapprovalMode: internal.proposal.approvalMode,\n\t\t\toccurredAtMs: opts.now?.(),\n\t\t}),\n\t});\n\tstate.admissionsByProposal.set(admission.proposalId, admission);\n\tpushMapArrayBy(state.admissionsByRun, admission.runId, admission, (entry) => entry.admissionId);\n\temitAdmission(ctx, state, admission);\n\tif (admissionState === \"blocked\") {\n\t\temitAdmissionIssue(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\tdataIssue(\n\t\t\t\t\"tool-provider-run-admission-blocked\",\n\t\t\t\t\"Tool provider run admission blocked the candidate run request.\",\n\t\t\t\t{\n\t\t\t\t\tsubjectId: internal.input.requestId,\n\t\t\t\t\trefs: sourceRefs,\n\t\t\t\t\tseverity: \"warning\",\n\t\t\t\t\tdetails: { approvalMode: internal.proposal.approvalMode },\n\t\t\t\t},\n\t\t\t),\n\t\t);\n\t}\n\temitAdmissionStatus(ctx, state, {\n\t\tkind: \"tool-provider-run-admission-status\",\n\t\tproposalId: admission.proposalId,\n\t\trunId: admission.runId,\n\t\tadapterInputId: admission.adapterInputId,\n\t\trequestId: admission.requestId,\n\t\toperationId: admission.operationId,\n\t\tstate: admission.state,\n\t\tadmissionId: admission.admissionId,\n\t\t...(admission.decisionId === undefined ? {} : { decisionId: admission.decisionId }),\n\t\t...(admission.approvedRunId === undefined ? {} : { approvedRunId: admission.approvedRunId }),\n\t\tsourceRefs,\n\t});\n\temitAdmissionAudit(ctx, state, `tool-provider-run-admission-${admissionState}`, admission, {\n\t\tdecisionId: opts.decision?.decisionId,\n\t});\n\treturn admission;\n}\n\nfunction admissionProposal(\n\tinput: ToolProviderAdapterInput,\n\trequest: ToolProviderAdapterRunRequested,\n\tapproval: ResolvedApprovalPolicy,\n): ToolProviderRunAdmissionProposal {\n\tconst sourceRefs = uniqueSourceRefs([\n\t\tref(\"tool-provider-adapter-run\", request.runId),\n\t\tref(\"tool-provider-adapter-input\", input.adapterInputId),\n\t\t...(request.sourceRefs ?? []),\n\t\t...(input.sourceRefs ?? []),\n\t\t...(approval.policy?.approval?.sourceRefs ?? []),\n\t\t...(approval.policy?.sourceRefs ?? []),\n\t]);\n\treturn Object.freeze({\n\t\tkind: \"tool-provider-run-admission-proposal\",\n\t\tproposalId: `${request.runId}:admission-proposal`,\n\t\trunId: request.runId,\n\t\tadapterInputId: input.adapterInputId,\n\t\trequestId: input.requestId,\n\t\toperationId: input.operationId,\n\t\trouteId: input.routeId,\n\t\tproviderId: input.providerId,\n\t\texecutorId: input.executorId,\n\t\tprofileId: input.profileId,\n\t\ttoolName: input.toolName,\n\t\toperation: input.operation,\n\t\tattempt: request.attempt,\n\t\treason: request.reason,\n\t\tapprovalMode: approval.mode,\n\t\tpolicyRefs: sanitizeAdapterInputSourceRefs([\n\t\t\t...(request.policyRefs ?? []),\n\t\t\t...(input.policyRefs ?? []),\n\t\t\t...(approval.policy === undefined\n\t\t\t\t? []\n\t\t\t\t: [ref(\"tool-provider-execution-policy\", approval.policy.policyId)]),\n\t\t]),\n\t\tsourceRefs: sanitizeAdapterInputSourceRefs(sourceRefs),\n\t\tneeds:\n\t\t\tapproval.mode === \"require\" || approval.mode === \"custom\"\n\t\t\t\t? approvalNeeds(approval.policy?.approval)\n\t\t\t\t: undefined,\n\t\tmetadata: sanitizeProviderGraphVisibleRecord({\n\t\t\tapprovalPolicyId: approval.policy?.policyId,\n\t\t\tapprovalMode: approval.mode,\n\t\t}),\n\t});\n}\n\nfunction resolveApprovalPolicy(input: ToolProviderAdapterInput): ResolvedApprovalPolicy {\n\tfor (const policy of input.policies ?? []) {\n\t\tconst approval = policy.approval;\n\t\tconst mode = approval?.mode ?? \"auto\";\n\t\tif (matchesApprovalSelector(input, approval)) return { mode, policy };\n\t}\n\treturn { mode: \"auto\" };\n}\n\ninterface ResolvedApprovalPolicy {\n\treadonly mode: \"auto\" | \"require\" | \"never\" | \"custom\" | (string & {});\n\treadonly policy?: ToolProviderExecutionPolicy;\n}\n\nfunction matchesApprovalSelector(\n\tinput: ToolProviderAdapterInput,\n\tapproval: ToolProviderApprovalPolicy | undefined,\n): boolean {\n\tif (approval === undefined) return true;\n\tconst names = approval.requiredForToolNames;\n\tconst operations = approval.requiredForOperations;\n\tconst matchesName =\n\t\tnames === undefined || (input.toolName !== undefined && names.includes(input.toolName));\n\tconst matchesOperation =\n\t\toperations === undefined ||\n\t\t(input.operation !== undefined && operations.includes(input.operation));\n\treturn matchesName && matchesOperation;\n}\n\nfunction approvalNeeds(approval: ToolProviderApprovalPolicy | undefined): readonly AgentNeed[] {\n\treturn Object.freeze([\n\t\t{\n\t\t\tkind: \"approval\",\n\t\t\tmessage: \"Tool provider run requires graph-visible admission.\",\n\t\t\trefs: sanitizeAdapterInputSourceRefs(approval?.approverRefs ?? []),\n\t\t\tmetadata: sanitizeProviderGraphVisibleRecord({ approvalMode: approval?.mode ?? \"require\" }),\n\t\t},\n\t]);\n}\n\nfunction admissionStateForOutcome(\n\toutcome: ToolProviderRunAdmissionOutcome,\n): ToolProviderRunAdmissionState {\n\tif (outcome === \"admit\") return \"admitted\";\n\tif (outcome === \"defer\") return \"deferred\";\n\treturn \"blocked\";\n}\n\nfunction admissionSourceRefs(\n\tinternal: InternalAdmissionProposal,\n\tdecision: ToolProviderRunAdmissionDecision | undefined,\n): readonly SourceRef[] {\n\treturn sanitizeAdapterInputSourceRefs([\n\t\tref(\"tool-provider-run-admission-proposal\", internal.proposal.proposalId),\n\t\tref(\"tool-provider-adapter-run\", internal.request.runId),\n\t\tref(\"tool-provider-adapter-input\", internal.input.adapterInputId),\n\t\t...(decision === undefined\n\t\t\t? []\n\t\t\t: [ref(\"tool-provider-run-admission-decision\", decision.decisionId)]),\n\t\t...(decision?.sourceRefs ?? []),\n\t]);\n}\n\nfunction sanitizeAdmissionDecision(\n\tdecision: ToolProviderRunAdmissionDecision,\n): ToolProviderRunAdmissionDecision {\n\treturn Object.freeze({\n\t\tkind: \"tool-provider-run-admission-decision\",\n\t\tdecisionId: decision.decisionId,\n\t\tproposalId: decision.proposalId,\n\t\tadmissionId: decision.admissionId,\n\t\toutcome: decision.outcome,\n\t\t...(decision.approvedRunId === undefined ? {} : { approvedRunId: decision.approvedRunId }),\n\t\t...(decision.reason === undefined ? {} : { reason: decision.reason }),\n\t\t...(decision.decidedByRef === undefined\n\t\t\t? {}\n\t\t\t: { decidedByRef: sanitizeAdapterInputSourceRefs([decision.decidedByRef])[0] }),\n\t\t...(decision.sourceRefs === undefined\n\t\t\t? {}\n\t\t\t: { sourceRefs: sanitizeAdapterInputSourceRefs(decision.sourceRefs) }),\n\t\tmetadata: sanitizeProviderGraphVisibleRecord(decision.metadata),\n\t});\n}\n\nfunction emitProposal(\n\tctx: { down: (msgs: readonly [\"DATA\", ToolProviderRunAdmissionFact][]) => void },\n\tstate: ToolProviderRunAdmissionProjectorState,\n\tproposal: ToolProviderRunAdmissionProposal,\n): void {\n\tconst key = `proposal:${proposal.proposalId}`;\n\tif (state.proposalKeys.has(key)) return;\n\tstate.proposalKeys.add(key);\n\tctx.down([[\"DATA\", { kind: \"proposal\", proposal }]]);\n}\n\nfunction emitAdmission(\n\tctx: { down: (msgs: readonly [\"DATA\", ToolProviderRunAdmissionFact][]) => void },\n\tstate: ToolProviderRunAdmissionProjectorState,\n\tadmission: ToolProviderRunAdmission,\n): void {\n\tconst key = `admission:${admission.admissionId}:${admission.state}:${admission.decisionId ?? \"\"}:${admission.approvedRunId ?? \"\"}`;\n\tif (state.admissionKeys.has(key)) return;\n\tstate.admissionKeys.add(key);\n\tctx.down([[\"DATA\", { kind: \"admission\", admission }]]);\n}\n\nfunction emitApprovedRunRequest(\n\tctx: { down: (msgs: readonly [\"DATA\", ToolProviderRunAdmissionFact][]) => void },\n\tstate: ToolProviderRunAdmissionProjectorState,\n\trequest: ToolProviderAdapterRunRequested,\n): void {\n\tconst key = `approved-run:${request.runId}`;\n\tif (state.approvedRunKeys.has(key)) return;\n\tstate.approvedRunKeys.add(key);\n\tctx.down([[\"DATA\", { kind: \"approved-run-request\", request }]]);\n}\n\nfunction emitAdmissionStatus(\n\tctx: { down: (msgs: readonly [\"DATA\", ToolProviderRunAdmissionFact][]) => void },\n\tstate: ToolProviderRunAdmissionProjectorState,\n\tstatus: ToolProviderRunAdmissionStatus,\n): void {\n\tconst key = `status:${status.proposalId}:${status.state}:${status.admissionId ?? \"\"}:${status.decisionId ?? \"\"}:${status.approvedRunId ?? \"\"}`;\n\tif (state.statusKeys.has(key)) return;\n\tstate.statusKeys.add(key);\n\tctx.down([[\"DATA\", { kind: \"status\", status }]]);\n}\n\nfunction emitAdmissionIssue(\n\tctx: { down: (msgs: readonly [\"DATA\", ToolProviderRunAdmissionFact][]) => void },\n\tstate: ToolProviderRunAdmissionProjectorState,\n\tissue: DataIssue,\n): void {\n\tconst key = `issue:${issue.code}:${issue.subjectId ?? \"\"}:${JSON.stringify(issue.details ?? {})}`;\n\tif (state.issueKeys.has(key)) return;\n\tstate.issueKeys.add(key);\n\tctx.down([[\"DATA\", { kind: \"issue\", issue }]]);\n}\n\nfunction emitAdmissionAudit(\n\tctx: { down: (msgs: readonly [\"DATA\", ToolProviderRunAdmissionFact][]) => void },\n\tstate: ToolProviderRunAdmissionProjectorState,\n\tkind: string,\n\tsubject: unknown,\n\tmetadata?: Record<string, unknown>,\n): void {\n\tstate.auditSeq += 1;\n\tctx.down([\n\t\t[\n\t\t\t\"DATA\",\n\t\t\t{\n\t\t\t\tkind: \"audit\",\n\t\t\t\taudit: Object.freeze({\n\t\t\t\t\tid: `tool-provider-run-admission-audit-${state.auditSeq}`,\n\t\t\t\t\tkind,\n\t\t\t\t\tmessage: kind,\n\t\t\t\t\tsourceRefs: [],\n\t\t\t\t\tmetadata: sanitizeProviderGraphVisibleRecord({\n\t\t\t\t\t\t...metadata,\n\t\t\t\t\t\tsubject,\n\t\t\t\t\t}),\n\t\t\t\t} satisfies AgentRuntimeAuditRecord),\n\t\t\t},\n\t\t],\n\t]);\n}\n\nfunction buildAdmissionViews(\n\tstate: ToolProviderRunAdmissionProjectorState,\n): ToolProviderRunAdmissionViews {\n\treturn Object.freeze({\n\t\tadmissionsByProposal: new Map(state.admissionsByProposal),\n\t\tadmissionsByRun: new Map(\n\t\t\tArray.from(state.admissionsByRun.entries()).map(([key, value]) => [\n\t\t\t\tkey,\n\t\t\t\tObject.freeze([...value]),\n\t\t\t]),\n\t\t),\n\t\tproposalsByRun: new Map(\n\t\t\tArray.from(state.proposalsByRun.entries()).map(([key, value]) => [\n\t\t\t\tkey,\n\t\t\t\tObject.freeze([...value]),\n\t\t\t]),\n\t\t),\n\t});\n}\n\nfunction pushMapArrayBy<T>(\n\tmap: Map<string, T[]>,\n\tkey: string,\n\tvalue: T,\n\tentryKey: (entry: T) => string,\n): void {\n\tconst existing = map.get(key);\n\tif (existing === undefined) {\n\t\tmap.set(key, [value]);\n\t\treturn;\n\t}\n\tconst valueKey = entryKey(value);\n\tif (existing.some((entry) => entryKey(entry) === valueKey)) return;\n\texisting.push(value);\n}\n","import { depBatch } from \"../ctx/types.js\";\nimport type { DataIssue } from \"../data/index.js\";\nimport type { Graph } from \"../graph/graph.js\";\nimport type { RetryPolicy } from \"../graph/resilience.js\";\nimport { nextRetryDelayMs, shouldRetry } from \"../graph/resilience.js\";\nimport type { Node } from \"../node/node.js\";\nimport { requestToolProviderAdapterRun } from \"./agent-runtime-adapter-run.js\";\nimport {\n\tdataIssue,\n\tforEachDepBatch,\n\tisRecord,\n\tprojectRuntimeFact,\n\tref,\n\tsanitizeAdapterInputIssue,\n\tsanitizeAdapterInputSourceRefs,\n\tsanitizeProviderGraphVisibleRecord,\n\tuniqueSourceRefs,\n} from \"./agent-runtime-common.js\";\nimport type { AgentRuntimeAuditRecord } from \"./agent-runtime-types-agent.js\";\nimport type { ExecutorOutcome, SourceRef } from \"./agent-runtime-types-core.js\";\nimport type {\n\tToolProviderAdapterInput,\n\tToolProviderAdapterRunRequested,\n\tToolProviderRunRetryBundle,\n\tToolProviderRunRetryPolicy,\n\tToolProviderRunRetryProposal,\n\tToolProviderRunRetryScheduled,\n\tToolProviderRunRetryStatus,\n\tToolProviderRunRetryStatusState,\n\tToolProviderRunRetryViews,\n} from \"./agent-runtime-types-tool.js\";\nimport type {\n\tScheduledReadinessReady,\n\tScheduledReadinessRequested,\n} from \"./scheduled-readiness.js\";\n\nexport function toolProviderRunRetryProjector(\n\tgraph: Graph,\n\topts: {\n\t\treadonly name?: string;\n\t\treadonly inputs: Node<ToolProviderAdapterInput>;\n\t\treadonly outcomes: Node<ExecutorOutcome>;\n\t\treadonly policies?: readonly Node<ToolProviderRunRetryPolicy>[];\n\t\treadonly nowMs?: Node<number>;\n\t\treadonly readiness?: readonly Node<ScheduledReadinessReady>[];\n\t},\n): ToolProviderRunRetryBundle {\n\tconst name = opts.name ?? \"toolProviderRunRetry\";\n\tconst policyDeps = opts.policies ?? [];\n\tconst nowDeps = opts.nowMs === undefined ? [] : [opts.nowMs];\n\tconst readinessDeps = opts.readiness ?? [];\n\tconst outcomeDepIndex = 1 + policyDeps.length;\n\tconst nowDepIndex = outcomeDepIndex + 1;\n\tconst readinessDepStart = nowDepIndex + nowDeps.length;\n\tconst runtime = graph.node<ToolProviderRunRetryFact>(\n\t\t[opts.inputs, ...policyDeps, opts.outcomes, ...nowDeps, ...readinessDeps],\n\t\t(ctx) => {\n\t\t\tconst state = ctx.state.get<ToolProviderRunRetryProjectorState>() ?? initialRetryState();\n\t\t\tstate.usesSharedReadiness = readinessDeps.length > 0;\n\t\t\tfor (const raw of depBatch(ctx, 0) ?? []) {\n\t\t\t\tconst input = raw as ToolProviderAdapterInput;\n\t\t\t\tstate.inputsById.set(input.adapterInputId, input);\n\t\t\t\tlet inputIds = state.inputIdsByRequest.get(input.requestId);\n\t\t\t\tif (inputIds === undefined) {\n\t\t\t\t\tinputIds = new Set();\n\t\t\t\t\tstate.inputIdsByRequest.set(input.requestId, inputIds);\n\t\t\t\t}\n\t\t\t\tinputIds.add(input.adapterInputId);\n\t\t\t}\n\t\t\tforEachDepBatch(ctx, 1, policyDeps.length, (raw) => {\n\t\t\t\tconst policy = sanitizeToolProviderRunRetryPolicy(raw as ToolProviderRunRetryPolicy);\n\t\t\t\tstate.policies.set(policy.policyId, policy);\n\t\t\t});\n\t\t\tfor (const rawNow of depBatch(ctx, nowDepIndex) ?? []) {\n\t\t\t\tif (typeof rawNow === \"number\" && Number.isFinite(rawNow)) state.nowMs = rawNow;\n\t\t\t}\n\t\t\tforEachDepBatch(ctx, readinessDepStart, readinessDeps.length, (raw) => {\n\t\t\t\tconst ready = sanitizeRetryReadinessReady(raw);\n\t\t\t\tif (!ready.ok) {\n\t\t\t\t\temitIssue(ctx, state, ready.issue);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tstate.readinessBySchedule.set(ready.scheduleId, ready);\n\t\t\t});\n\t\t\tfor (const raw of depBatch(ctx, outcomeDepIndex) ?? []) {\n\t\t\t\tretainOutcome(state, raw as ExecutorOutcome);\n\t\t\t}\n\t\t\tevaluateOutcomes(ctx, state);\n\t\t\tprocessDueRetries(ctx, state);\n\t\t\tctx.down([[\"DATA\", { kind: \"views\", views: buildRetryViews(state) }]]);\n\t\t\tctx.state.set(state);\n\t\t},\n\t\t{ name: `${name}/runtime`, factory: \"toolProviderRunRetryProjector\", partial: true },\n\t);\n\treturn {\n\t\tproposals: projectRuntimeFact(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/proposals`,\n\t\t\t\"toolProviderRunRetryProposals\",\n\t\t\t(fact) => (fact.kind === \"proposal\" ? fact.proposal : undefined),\n\t\t),\n\t\tscheduled: projectRuntimeFact(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/scheduled`,\n\t\t\t\"toolProviderRunRetryScheduled\",\n\t\t\t(fact) => (fact.kind === \"scheduled\" ? fact.scheduled : undefined),\n\t\t),\n\t\treadinessSchedules: projectRuntimeFact(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/readinessSchedules`,\n\t\t\t\"toolProviderRunRetryReadinessSchedules\",\n\t\t\t(fact) => (fact.kind === \"readiness-schedule\" ? fact.schedule : undefined),\n\t\t),\n\t\trunRequests: projectRuntimeFact(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/runRequests`,\n\t\t\t\"toolProviderRunRetryRunRequests\",\n\t\t\t(fact) => (fact.kind === \"run-request\" ? fact.request : undefined),\n\t\t),\n\t\tstatus: projectRuntimeFact(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/status`,\n\t\t\t\"toolProviderRunRetryStatus\",\n\t\t\t(fact) => (fact.kind === \"status\" ? fact.status : undefined),\n\t\t),\n\t\tissues: projectRuntimeFact(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/issues`,\n\t\t\t\"toolProviderRunRetryIssues\",\n\t\t\t(fact) => (fact.kind === \"issue\" ? fact.issue : undefined),\n\t\t),\n\t\taudit: projectRuntimeFact(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/audit`,\n\t\t\t\"toolProviderRunRetryAudit\",\n\t\t\t(fact) => (fact.kind === \"audit\" ? fact.audit : undefined),\n\t\t),\n\t\tviews: projectRuntimeFact(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/views`,\n\t\t\t\"toolProviderRunRetryViews\",\n\t\t\t(fact) => (fact.kind === \"views\" ? fact.views : undefined),\n\t\t),\n\t};\n}\n\ntype ToolProviderRunRetryFact =\n\t| { readonly kind: \"proposal\"; readonly proposal: ToolProviderRunRetryProposal }\n\t| { readonly kind: \"scheduled\"; readonly scheduled: ToolProviderRunRetryScheduled }\n\t| { readonly kind: \"readiness-schedule\"; readonly schedule: ScheduledReadinessRequested }\n\t| { readonly kind: \"run-request\"; readonly request: ToolProviderAdapterRunRequested }\n\t| { readonly kind: \"status\"; readonly status: ToolProviderRunRetryStatus }\n\t| { readonly kind: \"issue\"; readonly issue: DataIssue }\n\t| { readonly kind: \"audit\"; readonly audit: AgentRuntimeAuditRecord }\n\t| { readonly kind: \"views\"; readonly views: ToolProviderRunRetryViews };\n\ninterface ToolProviderRunRetryProjectorState {\n\tinputIdsByRequest: Map<string, Set<string>>;\n\tinputsById: Map<string, ToolProviderAdapterInput>;\n\tpolicies: Map<string, ToolProviderRunRetryPolicy>;\n\toutcomesById: Map<string, ExecutorOutcome>;\n\tproposalsByOutcome: Map<string, ToolProviderRunRetryProposal>;\n\tscheduledByOutcome: Map<string, ToolProviderRunRetryScheduled>;\n\treadinessSchedulesByOutcome: Map<string, ScheduledReadinessRequested>;\n\treadinessBySchedule: Map<string, ScheduledReadinessReady>;\n\tnextRequestsByOutcome: Map<string, ToolProviderAdapterRunRequested>;\n\tstatusByOutcome: Map<string, ToolProviderRunRetryStatus>;\n\tproposalKeys: Set<string>;\n\tscheduledKeys: Set<string>;\n\treadinessScheduleKeys: Set<string>;\n\trequestKeys: Set<string>;\n\tstatusKeys: Set<string>;\n\tissueKeys: Set<string>;\n\tauditSeq: number;\n\tnowMs: number | undefined;\n\tusesSharedReadiness: boolean;\n}\n\ninterface RetryPolicyChoice {\n\treadonly policy: ToolProviderRunRetryPolicy;\n\treadonly score: number;\n}\n\nfunction initialRetryState(): ToolProviderRunRetryProjectorState {\n\treturn {\n\t\tinputIdsByRequest: new Map(),\n\t\tinputsById: new Map(),\n\t\tpolicies: new Map(),\n\t\toutcomesById: new Map(),\n\t\tproposalsByOutcome: new Map(),\n\t\tscheduledByOutcome: new Map(),\n\t\treadinessSchedulesByOutcome: new Map(),\n\t\treadinessBySchedule: new Map(),\n\t\tnextRequestsByOutcome: new Map(),\n\t\tstatusByOutcome: new Map(),\n\t\tproposalKeys: new Set(),\n\t\tscheduledKeys: new Set(),\n\t\treadinessScheduleKeys: new Set(),\n\t\trequestKeys: new Set(),\n\t\tstatusKeys: new Set(),\n\t\tissueKeys: new Set(),\n\t\tauditSeq: 0,\n\t\tnowMs: undefined,\n\t\tusesSharedReadiness: false,\n\t};\n}\n\nfunction retainOutcome(state: ToolProviderRunRetryProjectorState, outcome: ExecutorOutcome): void {\n\tif (!state.outcomesById.has(outcome.outcomeId))\n\t\tstate.outcomesById.set(outcome.outcomeId, outcome);\n}\n\nfunction inputForOutcome(\n\tstate: ToolProviderRunRetryProjectorState,\n\toutcome: ExecutorOutcome,\n):\n\t| { readonly ok: true; readonly input: ToolProviderAdapterInput }\n\t| { readonly ok: false; readonly issue: DataIssue } {\n\tif (typeof outcome.inputId === \"string\" && outcome.inputId.length > 0) {\n\t\tconst exactInput = state.inputsById.get(outcome.inputId);\n\t\tif (exactInput !== undefined) return { ok: true, input: exactInput };\n\t\treturn {\n\t\t\tok: false,\n\t\t\tissue: dataIssue(\n\t\t\t\t\"tool-provider-run-retry-missing-input\",\n\t\t\t\t\"Tool provider run retry requires the retained adapter input identified by the outcome.\",\n\t\t\t\t{\n\t\t\t\t\tsubjectId: outcome.inputId,\n\t\t\t\t\trefs: [ref(\"executor-outcome\", outcome.outcomeId)],\n\t\t\t\t},\n\t\t\t),\n\t\t};\n\t}\n\tconst inputIds = state.inputIdsByRequest.get(outcome.requestId);\n\tif (inputIds === undefined || inputIds.size === 0) {\n\t\treturn {\n\t\t\tok: false,\n\t\t\tissue: dataIssue(\n\t\t\t\t\"tool-provider-run-retry-missing-input\",\n\t\t\t\t\"Tool provider run retry requires a retained adapter input for the outcome request.\",\n\t\t\t\t{ subjectId: outcome.requestId, refs: [ref(\"executor-outcome\", outcome.outcomeId)] },\n\t\t\t),\n\t\t};\n\t}\n\tif (inputIds.size > 1) {\n\t\treturn {\n\t\t\tok: false,\n\t\t\tissue: dataIssue(\n\t\t\t\t\"tool-provider-run-retry-ambiguous-input\",\n\t\t\t\t\"Tool provider run retry requires an exact outcome inputId when multiple adapter inputs share a request.\",\n\t\t\t\t{\n\t\t\t\t\tsubjectId: outcome.requestId,\n\t\t\t\t\trefs: [ref(\"executor-outcome\", outcome.outcomeId)],\n\t\t\t\t\tdetails: { inputIds: [...inputIds].sort() },\n\t\t\t\t},\n\t\t\t),\n\t\t};\n\t}\n\tconst [inputId] = inputIds;\n\tconst input = inputId === undefined ? undefined : state.inputsById.get(inputId);\n\tif (input !== undefined) return { ok: true, input };\n\treturn {\n\t\tok: false,\n\t\tissue: dataIssue(\n\t\t\t\"tool-provider-run-retry-missing-input\",\n\t\t\t\"Tool provider run retry requires a retained adapter input for the outcome request.\",\n\t\t\t{ subjectId: outcome.requestId, refs: [ref(\"executor-outcome\", outcome.outcomeId)] },\n\t\t),\n\t};\n}\n\nfunction evaluateOutcomes(\n\tctx: { down: (msgs: readonly [\"DATA\", ToolProviderRunRetryFact][]) => void },\n\tstate: ToolProviderRunRetryProjectorState,\n): void {\n\tfor (const outcome of state.outcomesById.values()) evaluateOutcome(ctx, state, outcome);\n}\n\nfunction evaluateOutcome(\n\tctx: { down: (msgs: readonly [\"DATA\", ToolProviderRunRetryFact][]) => void },\n\tstate: ToolProviderRunRetryProjectorState,\n\toutcome: ExecutorOutcome,\n): void {\n\tconst inputResolution = inputForOutcome(state, outcome);\n\tif (!inputResolution.ok) {\n\t\temitIssue(ctx, state, inputResolution.issue);\n\t\temitStatus(ctx, state, statusForMissingInput(outcome, \"blocked\", [inputResolution.issue]));\n\t\treturn;\n\t}\n\tconst input = inputResolution.input;\n\tif (input.status !== \"ready\") {\n\t\tconst issue = dataIssue(\n\t\t\t\"tool-provider-run-retry-input-not-ready\",\n\t\t\t\"Tool provider run retry requires a ready adapter input.\",\n\t\t\t{\n\t\t\t\tsubjectId: input.adapterInputId,\n\t\t\t\trefs: [\n\t\t\t\t\tref(\"executor-outcome\", outcome.outcomeId),\n\t\t\t\t\tref(\"tool-provider-adapter-input\", input.adapterInputId),\n\t\t\t\t],\n\t\t\t\tdetails: { status: input.status },\n\t\t\t},\n\t\t);\n\t\temitIssue(ctx, state, issue);\n\t\temitStatus(ctx, state, statusForOutcome(outcome, input, \"blocked\", { issues: [issue] }));\n\t\treturn;\n\t}\n\tif (!isRetryableOutcome(outcome)) {\n\t\temitStatus(ctx, state, statusForOutcome(outcome, input, \"not-retryable\"));\n\t\treturn;\n\t}\n\tif (\n\t\tstate.scheduledByOutcome.has(outcome.outcomeId) ||\n\t\tstate.nextRequestsByOutcome.has(outcome.outcomeId)\n\t) {\n\t\treturn;\n\t}\n\tconst choice = chooseRetryPolicy(state, input, outcome);\n\tif (choice === undefined) {\n\t\tconst issue = dataIssue(\n\t\t\t\"tool-provider-run-retry-policy-missing\",\n\t\t\t\"Tool provider run retry requires an explicit retry policy fact.\",\n\t\t\t{\n\t\t\t\tsubjectId: input.adapterInputId,\n\t\t\t\trefs: [\n\t\t\t\t\tref(\"executor-outcome\", outcome.outcomeId),\n\t\t\t\t\tref(\"tool-provider-adapter-input\", input.adapterInputId),\n\t\t\t\t],\n\t\t\t},\n\t\t);\n\t\temitIssue(ctx, state, issue);\n\t\temitStatus(ctx, state, statusForOutcome(outcome, input, \"not-retryable\", { issues: [issue] }));\n\t\treturn;\n\t}\n\tif (!shouldRetry(choice.policy.retryPolicy, outcome.attempt)) {\n\t\tconst issue = dataIssue(\n\t\t\t\"tool-provider-run-retry-exhausted\",\n\t\t\t\"Tool provider run retry policy exhausted available attempts.\",\n\t\t\t{\n\t\t\t\tsubjectId: input.adapterInputId,\n\t\t\t\trefs: retrySourceRefs(input, outcome, choice.policy),\n\t\t\t\tseverity: \"warning\",\n\t\t\t\tdetails: {\n\t\t\t\t\tattempt: outcome.attempt,\n\t\t\t\t\tmaxAttempts: choice.policy.retryPolicy.maxAttempts,\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\t\temitIssue(ctx, state, issue);\n\t\temitStatus(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\tstatusForOutcome(outcome, input, \"exhausted\", { choice, issues: [issue] }),\n\t\t);\n\t\treturn;\n\t}\n\tconst nextAttempt = outcome.attempt + 1;\n\tconst delayMs = nextRetryDelayMs(choice.policy.retryPolicy, nextAttempt);\n\tif (delayMs === undefined) {\n\t\tconst issue = dataIssue(\n\t\t\t\"tool-provider-run-retry-delay-unavailable\",\n\t\t\t\"Tool provider run retry could not compute a delay for the next attempt.\",\n\t\t\t{\n\t\t\t\tsubjectId: input.adapterInputId,\n\t\t\t\trefs: retrySourceRefs(input, outcome, choice.policy),\n\t\t\t},\n\t\t);\n\t\temitIssue(ctx, state, issue);\n\t\temitStatus(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\tstatusForOutcome(outcome, input, \"blocked\", { choice, issues: [issue] }),\n\t\t);\n\t\treturn;\n\t}\n\tconst proposal = retryProposal(input, outcome, choice, delayMs);\n\tstate.proposalsByOutcome.set(outcome.outcomeId, proposal);\n\temitProposal(ctx, state, proposal);\n\tif (delayMs <= 0) {\n\t\temitRunRequest(ctx, state, input, proposal, \"immediate\");\n\t\treturn;\n\t}\n\tif (state.nowMs === undefined) {\n\t\tconst issue = dataIssue(\n\t\t\t\"tool-provider-run-retry-now-missing\",\n\t\t\t\"Tool provider delayed retry requires a graph-visible nowMs input.\",\n\t\t\t{\n\t\t\t\tsubjectId: input.adapterInputId,\n\t\t\t\trefs: retrySourceRefs(input, outcome, choice.policy),\n\t\t\t},\n\t\t);\n\t\temitIssue(ctx, state, issue);\n\t\temitStatus(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\tstatusForOutcome(outcome, input, \"blocked\", { choice, proposal, issues: [issue], delayMs }),\n\t\t);\n\t\treturn;\n\t}\n\tconst scheduled = retryScheduled(input, outcome, proposal, state.nowMs + delayMs, delayMs);\n\tstate.scheduledByOutcome.set(outcome.outcomeId, scheduled);\n\temitScheduled(ctx, state, scheduled);\n\tconst readinessSchedule = retryReadinessSchedule(input, outcome, proposal, scheduled);\n\tstate.readinessSchedulesByOutcome.set(outcome.outcomeId, readinessSchedule);\n\temitReadinessSchedule(ctx, state, readinessSchedule);\n\temitStatus(\n\t\tctx,\n\t\tstate,\n\t\tstatusForOutcome(outcome, input, \"scheduled\", {\n\t\t\tchoice,\n\t\t\tproposal,\n\t\t\tdelayMs,\n\t\t\tretryAtMs: scheduled.retryAtMs,\n\t\t}),\n\t);\n}\n\nfunction processDueRetries(\n\tctx: { down: (msgs: readonly [\"DATA\", ToolProviderRunRetryFact][]) => void },\n\tstate: ToolProviderRunRetryProjectorState,\n): void {\n\tfor (const [outcomeId, scheduled] of state.scheduledByOutcome) {\n\t\tconst readiness = state.readinessBySchedule.get(\n\t\t\tscheduled.readinessScheduleId ?? scheduled.scheduleId,\n\t\t);\n\t\tconst readinessSchedule = state.readinessSchedulesByOutcome.get(outcomeId);\n\t\tconst readyByReadiness =\n\t\t\treadiness !== undefined &&\n\t\t\treadiness.readyAtMs === scheduled.retryAtMs &&\n\t\t\treadiness.nowMs >= scheduled.retryAtMs &&\n\t\t\treadinessSchedule !== undefined &&\n\t\t\treadinessMatchesSchedule(readiness, readinessSchedule);\n\t\tif (readiness !== undefined && !readyByReadiness) {\n\t\t\temitIssue(\n\t\t\t\tctx,\n\t\t\t\tstate,\n\t\t\t\tdataIssue(\n\t\t\t\t\t\"tool-provider-run-retry-readiness-mismatch\",\n\t\t\t\t\t\"Tool provider delayed retry readiness fact does not match the scheduled retry eligibility.\",\n\t\t\t\t\t{\n\t\t\t\t\t\tsubjectId: scheduled.scheduleId,\n\t\t\t\t\t\trefs: sanitizeAdapterInputSourceRefs([\n\t\t\t\t\t\t\tref(\"tool-provider-run-retry-scheduled\", scheduled.scheduleId),\n\t\t\t\t\t\t\tref(\"scheduled-readiness-ready\", readiness.scheduleId),\n\t\t\t\t\t\t]),\n\t\t\t\t\t\tdetails: {\n\t\t\t\t\t\t\tretryAtMs: scheduled.retryAtMs,\n\t\t\t\t\t\t\treadyAtMs: readiness.readyAtMs,\n\t\t\t\t\t\t\tnowMs: readiness.nowMs,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t\tconst readyByClock =\n\t\t\t!state.usesSharedReadiness && state.nowMs !== undefined && scheduled.retryAtMs <= state.nowMs;\n\t\tif (!readyByReadiness && !readyByClock) continue;\n\t\tif (state.nextRequestsByOutcome.has(outcomeId)) continue;\n\t\tconst proposal = state.proposalsByOutcome.get(outcomeId);\n\t\tif (proposal === undefined) continue;\n\t\tconst input = state.inputsById.get(proposal.adapterInputId);\n\t\tif (input === undefined) continue;\n\t\temitRunRequest(ctx, state, input, proposal, \"scheduled\", readiness);\n\t}\n}\n\nfunction sanitizeRetryReadinessReady(\n\traw: unknown,\n):\n\t| ({ readonly ok: true } & ScheduledReadinessReady)\n\t| { readonly ok: false; readonly issue: DataIssue } {\n\tif (\n\t\t!isRecord(raw) ||\n\t\traw.kind !== \"scheduled-readiness-ready\" ||\n\t\ttypeof raw.scheduleId !== \"string\" ||\n\t\traw.scheduleId.length === 0 ||\n\t\ttypeof raw.readyAtMs !== \"number\" ||\n\t\t!Number.isFinite(raw.readyAtMs) ||\n\t\ttypeof raw.nowMs !== \"number\" ||\n\t\t!Number.isFinite(raw.nowMs) ||\n\t\t!Array.isArray(raw.subjectRefs) ||\n\t\t(raw.sourceRefs !== undefined && !Array.isArray(raw.sourceRefs))\n\t) {\n\t\treturn {\n\t\t\tok: false,\n\t\t\tissue: dataIssue(\n\t\t\t\t\"tool-provider-run-retry-readiness-malformed\",\n\t\t\t\t\"Tool provider delayed retry readiness fact must be graph-visible scheduled readiness material.\",\n\t\t\t\t{\n\t\t\t\t\tsubjectId:\n\t\t\t\t\t\tisRecord(raw) && typeof raw.scheduleId === \"string\"\n\t\t\t\t\t\t\t? raw.scheduleId\n\t\t\t\t\t\t\t: \"unknown-scheduled-readiness\",\n\t\t\t\t},\n\t\t\t),\n\t\t};\n\t}\n\treturn Object.freeze({\n\t\tok: true,\n\t\tkind: \"scheduled-readiness-ready\",\n\t\tscheduleId: raw.scheduleId,\n\t\tsubjectRefs: sanitizeAdapterInputSourceRefs(\n\t\t\traw.subjectRefs.flatMap((entry) => {\n\t\t\t\tconst sourceRef = sourceRefOrUndefined(entry);\n\t\t\t\treturn sourceRef === undefined ? [] : [sourceRef];\n\t\t\t}),\n\t\t),\n\t\treadyAtMs: raw.readyAtMs,\n\t\t...(typeof raw.deadlineMs === \"number\" && Number.isFinite(raw.deadlineMs)\n\t\t\t? { deadlineMs: raw.deadlineMs }\n\t\t\t: {}),\n\t\tnowMs: raw.nowMs,\n\t\t...(raw.sourceRefs === undefined\n\t\t\t? {}\n\t\t\t: {\n\t\t\t\t\tsourceRefs: sanitizeAdapterInputSourceRefs(\n\t\t\t\t\t\traw.sourceRefs.flatMap((entry) => {\n\t\t\t\t\t\t\tconst sourceRef = sourceRefOrUndefined(entry);\n\t\t\t\t\t\t\treturn sourceRef === undefined ? [] : [sourceRef];\n\t\t\t\t\t\t}),\n\t\t\t\t\t),\n\t\t\t\t}),\n\t\t...(isRecord(raw.metadata)\n\t\t\t? { metadata: sanitizeProviderGraphVisibleRecord(raw.metadata) }\n\t\t\t: {}),\n\t});\n}\n\nfunction readinessMatchesSchedule(\n\treadiness: ScheduledReadinessReady,\n\tschedule: ScheduledReadinessRequested,\n): boolean {\n\tconst subjectRefs = sanitizeAdapterInputSourceRefs(schedule.subjectRefs);\n\tconst readySubjectRefs = sanitizeAdapterInputSourceRefs(readiness.subjectRefs);\n\tif (!sourceRefsContainAll(readySubjectRefs, subjectRefs)) return false;\n\treturn sourceRefsContainAll(sanitizeAdapterInputSourceRefs(readiness.sourceRefs ?? []), [\n\t\tref(\"scheduled-readiness\", schedule.scheduleId),\n\t\t...(schedule.sourceRefs ?? []),\n\t]);\n}\n\nfunction sourceRefsContainAll(\n\tactual: readonly SourceRef[],\n\texpected: readonly SourceRef[],\n): boolean {\n\tconst actualKeys = new Set(actual.map(sourceRefKey));\n\treturn expected.every((sourceRef) => actualKeys.has(sourceRefKey(sourceRef)));\n}\n\nfunction sourceRefKey(sourceRef: SourceRef): string {\n\treturn `${sourceRef.kind}:${sourceRef.id}`;\n}\n\nfunction sourceRefOrUndefined(value: unknown): SourceRef | undefined {\n\tif (!isRecord(value)) return undefined;\n\tif (typeof value.kind !== \"string\" || value.kind.length === 0) return undefined;\n\tif (typeof value.id !== \"string\" || value.id.length === 0) return undefined;\n\treturn isRecord(value.metadata)\n\t\t? { kind: value.kind, id: value.id, metadata: value.metadata }\n\t\t: { kind: value.kind, id: value.id };\n}\n\nfunction sanitizeToolProviderRunRetryPolicy(\n\traw: ToolProviderRunRetryPolicy,\n): ToolProviderRunRetryPolicy {\n\tconst metadata = sanitizeProviderGraphVisibleRecord(raw.metadata);\n\treturn Object.freeze({\n\t\tkind: \"tool-provider-run-retry-policy\",\n\t\tpolicyId: raw.policyId,\n\t\tretryPolicy: sanitizeRetryPolicy(raw.retryPolicy),\n\t\t...(raw.runId === undefined ? {} : { runId: raw.runId }),\n\t\t...(raw.requestId === undefined ? {} : { requestId: raw.requestId }),\n\t\t...(raw.adapterInputId === undefined ? {} : { adapterInputId: raw.adapterInputId }),\n\t\tsourceRefs: sanitizeAdapterInputSourceRefs(raw.sourceRefs ?? []),\n\t\t...(metadata === undefined ? {} : { metadata }),\n\t} satisfies ToolProviderRunRetryPolicy);\n}\n\nfunction sanitizeRetryPolicy(policy: RetryPolicy): RetryPolicy {\n\tif (!Number.isInteger(policy.maxAttempts) || policy.maxAttempts <= 0) {\n\t\treturn Object.freeze({ maxAttempts: 1, backoff: { kind: \"none\" as const } });\n\t}\n\treturn Object.freeze(policy);\n}\n\nfunction chooseRetryPolicy(\n\tstate: ToolProviderRunRetryProjectorState,\n\tinput: ToolProviderAdapterInput,\n\toutcome: ExecutorOutcome,\n): RetryPolicyChoice | undefined {\n\tlet best: RetryPolicyChoice | undefined;\n\tfor (const policy of state.policies.values()) {\n\t\tconst score = retryPolicyScore(policy, input, outcome);\n\t\tif (score === undefined) continue;\n\t\tif (best === undefined || score > best.score) best = { policy, score };\n\t}\n\treturn best;\n}\n\nfunction retryPolicyScore(\n\tpolicy: ToolProviderRunRetryPolicy,\n\tinput: ToolProviderAdapterInput,\n\toutcome: ExecutorOutcome,\n): number | undefined {\n\tlet score = 0;\n\tif (policy.adapterInputId !== undefined) {\n\t\tif (policy.adapterInputId !== input.adapterInputId) return undefined;\n\t\tscore += 8;\n\t}\n\tif (policy.requestId !== undefined) {\n\t\tif (policy.requestId !== outcome.requestId) return undefined;\n\t\tscore += 4;\n\t}\n\tif (policy.runId !== undefined) {\n\t\tif (policy.runId !== outcomeRunId(outcome)) return undefined;\n\t\tscore += 2;\n\t}\n\treturn score;\n}\n\nfunction retryProposal(\n\tinput: ToolProviderAdapterInput,\n\toutcome: ExecutorOutcome,\n\tchoice: RetryPolicyChoice,\n\tdelayMs: number,\n): ToolProviderRunRetryProposal {\n\tconst fromRunId = outcomeRunId(outcome);\n\tconst nextAttempt = outcome.attempt + 1;\n\tconst policyRefs = retryPolicyRefs(input, choice.policy);\n\tconst sourceRefs = retrySourceRefs(input, outcome, choice.policy);\n\treturn Object.freeze({\n\t\tkind: \"tool-provider-run-retry-proposal\",\n\t\tproposalId: `${outcome.outcomeId}:retry-proposal`,\n\t\toutcomeId: outcome.outcomeId,\n\t\tfromRunId,\n\t\tfromRequestId: outcome.requestId,\n\t\tfromAttempt: outcome.attempt,\n\t\tnextAttempt,\n\t\tnextRunId: `${fromRunId}:retry-${nextAttempt}`,\n\t\tadapterInputId: input.adapterInputId,\n\t\trequestId: input.requestId,\n\t\toperationId: input.operationId,\n\t\tpolicyId: choice.policy.policyId,\n\t\tpolicyRefs,\n\t\tmaxAttempts: choice.policy.retryPolicy.maxAttempts,\n\t\tnextDelayMs: delayMs,\n\t\tsourceRefs,\n\t\tmetadata: sanitizeProviderGraphVisibleRecord({ policyScore: choice.score }),\n\t} satisfies ToolProviderRunRetryProposal);\n}\n\nfunction retryScheduled(\n\tinput: ToolProviderAdapterInput,\n\toutcome: ExecutorOutcome,\n\tproposal: ToolProviderRunRetryProposal,\n\tretryAtMs: number,\n\tdelayMs: number,\n): ToolProviderRunRetryScheduled {\n\treturn Object.freeze({\n\t\tkind: \"tool-provider-run-retry-scheduled\",\n\t\tscheduleId: `${proposal.proposalId}:scheduled`,\n\t\treadinessScheduleId: `${proposal.proposalId}:scheduled-readiness`,\n\t\toutcomeId: outcome.outcomeId,\n\t\tproposalId: proposal.proposalId,\n\t\tfromRunId: proposal.fromRunId,\n\t\tnextRunId: proposal.nextRunId,\n\t\tnextAttempt: proposal.nextAttempt,\n\t\tretryAtMs,\n\t\tretryAfterMs: delayMs,\n\t\tsourceRefs: sanitizeAdapterInputSourceRefs([\n\t\t\tref(\"executor-outcome\", outcome.outcomeId),\n\t\t\tref(\"tool-provider-run-retry-proposal\", proposal.proposalId),\n\t\t\tref(\"tool-provider-adapter-input\", input.adapterInputId),\n\t\t]),\n\t} satisfies ToolProviderRunRetryScheduled);\n}\n\nfunction retryReadinessSchedule(\n\tinput: ToolProviderAdapterInput,\n\toutcome: ExecutorOutcome,\n\tproposal: ToolProviderRunRetryProposal,\n\tscheduled: ToolProviderRunRetryScheduled,\n): ScheduledReadinessRequested {\n\treturn Object.freeze({\n\t\tkind: \"scheduled-readiness-requested\",\n\t\tscheduleId: scheduled.readinessScheduleId ?? scheduled.scheduleId,\n\t\tsubjectRefs: sanitizeAdapterInputSourceRefs([\n\t\t\tref(\"tool-provider-run-retry-proposal\", proposal.proposalId),\n\t\t\tref(\"tool-provider-run-retry-scheduled\", scheduled.scheduleId),\n\t\t\tref(\"tool-provider-adapter-input\", input.adapterInputId),\n\t\t]),\n\t\treadyAtMs: scheduled.retryAtMs,\n\t\treason: \"tool-provider-retry\",\n\t\tpolicyRefs: proposal.policyRefs,\n\t\tsourceRefs: sanitizeAdapterInputSourceRefs([\n\t\t\tref(\"executor-outcome\", outcome.outcomeId),\n\t\t\tref(\"tool-provider-run-retry-proposal\", proposal.proposalId),\n\t\t\tref(\"tool-provider-run-retry-scheduled\", scheduled.scheduleId),\n\t\t\t...(scheduled.sourceRefs ?? []),\n\t\t]),\n\t\tmetadata: sanitizeProviderGraphVisibleRecord({\n\t\t\toutcomeId: outcome.outcomeId,\n\t\t\tnextRunId: proposal.nextRunId,\n\t\t\tnextAttempt: proposal.nextAttempt,\n\t\t\tretryAfterMs: scheduled.retryAfterMs,\n\t\t}),\n\t} satisfies ScheduledReadinessRequested);\n}\n\nfunction emitRunRequest(\n\tctx: { down: (msgs: readonly [\"DATA\", ToolProviderRunRetryFact][]) => void },\n\tstate: ToolProviderRunRetryProjectorState,\n\tinput: ToolProviderAdapterInput,\n\tproposal: ToolProviderRunRetryProposal,\n\tmode: \"immediate\" | \"scheduled\",\n\treadiness?: ScheduledReadinessReady,\n): void {\n\tconst key = `request:${proposal.outcomeId}:${proposal.nextRunId}`;\n\tif (state.requestKeys.has(key)) return;\n\tstate.requestKeys.add(key);\n\tconst request = requestToolProviderAdapterRun(input, {\n\t\trunId: proposal.nextRunId,\n\t\tattempt: proposal.nextAttempt,\n\t\treason: \"retry\",\n\t\tretryOfOutcomeId: proposal.outcomeId,\n\t\tpolicyRefs: proposal.policyRefs,\n\t\tsourceRefs: uniqueSourceRefs([\n\t\t\t...(proposal.sourceRefs ?? []),\n\t\t\tref(\"tool-provider-run-retry-proposal\", proposal.proposalId),\n\t\t\t...(mode === \"scheduled\"\n\t\t\t\t? [ref(\"tool-provider-run-retry-scheduled\", `${proposal.proposalId}:scheduled`)]\n\t\t\t\t: []),\n\t\t\t...(readiness === undefined\n\t\t\t\t? []\n\t\t\t\t: [\n\t\t\t\t\t\tref(\"scheduled-readiness-ready\", readiness.scheduleId),\n\t\t\t\t\t\t...(readiness.sourceRefs ?? []),\n\t\t\t\t\t]),\n\t\t]),\n\t\tmetadata: {\n\t\t\tretryMode: mode,\n\t\t\tretryProposalId: proposal.proposalId,\n\t\t\tretryOfOutcomeId: proposal.outcomeId,\n\t\t\t...(readiness === undefined ? {} : { readinessScheduleId: readiness.scheduleId }),\n\t\t},\n\t});\n\tstate.nextRequestsByOutcome.set(proposal.outcomeId, request);\n\temitStatus(ctx, state, statusForProposal(input, proposal, \"ready\"));\n\temitAudit(ctx, state, \"tool-provider-run-retry-run-requested\", {\n\t\tsubjectId: request.requestId,\n\t\tsourceRefs: request.sourceRefs,\n\t\tmetadata: {\n\t\t\trunId: request.runId,\n\t\t\tadapterInputId: request.adapterInputId,\n\t\t\tattempt: request.attempt,\n\t\t\tretryOfOutcomeId: request.retryOfOutcomeId,\n\t\t\tretryMode: mode,\n\t\t},\n\t});\n\tctx.down([[\"DATA\", { kind: \"run-request\", request }]]);\n}\n\nfunction emitProposal(\n\tctx: { down: (msgs: readonly [\"DATA\", ToolProviderRunRetryFact][]) => void },\n\tstate: ToolProviderRunRetryProjectorState,\n\tproposal: ToolProviderRunRetryProposal,\n): void {\n\tconst key = `proposal:${proposal.proposalId}`;\n\tif (state.proposalKeys.has(key)) return;\n\tstate.proposalKeys.add(key);\n\temitAudit(ctx, state, \"tool-provider-run-retry-proposed\", {\n\t\tsubjectId: proposal.requestId,\n\t\tsourceRefs: proposal.sourceRefs,\n\t\tmetadata: {\n\t\t\tproposalId: proposal.proposalId,\n\t\t\toutcomeId: proposal.outcomeId,\n\t\t\tnextAttempt: proposal.nextAttempt,\n\t\t\tnextDelayMs: proposal.nextDelayMs,\n\t\t},\n\t});\n\tctx.down([[\"DATA\", { kind: \"proposal\", proposal }]]);\n}\n\nfunction emitScheduled(\n\tctx: { down: (msgs: readonly [\"DATA\", ToolProviderRunRetryFact][]) => void },\n\tstate: ToolProviderRunRetryProjectorState,\n\tscheduled: ToolProviderRunRetryScheduled,\n): void {\n\tconst key = `scheduled:${scheduled.scheduleId}`;\n\tif (state.scheduledKeys.has(key)) return;\n\tstate.scheduledKeys.add(key);\n\temitAudit(ctx, state, \"tool-provider-run-retry-scheduled\", {\n\t\tsourceRefs: scheduled.sourceRefs,\n\t\tmetadata: {\n\t\t\tscheduleId: scheduled.scheduleId,\n\t\t\toutcomeId: scheduled.outcomeId,\n\t\t\tnextAttempt: scheduled.nextAttempt,\n\t\t\tretryAtMs: scheduled.retryAtMs,\n\t\t},\n\t});\n\tctx.down([[\"DATA\", { kind: \"scheduled\", scheduled }]]);\n}\n\nfunction emitReadinessSchedule(\n\tctx: { down: (msgs: readonly [\"DATA\", ToolProviderRunRetryFact][]) => void },\n\tstate: ToolProviderRunRetryProjectorState,\n\tschedule: ScheduledReadinessRequested,\n): void {\n\tconst key = `readiness-schedule:${schedule.scheduleId}`;\n\tif (state.readinessScheduleKeys.has(key)) return;\n\tstate.readinessScheduleKeys.add(key);\n\temitAudit(ctx, state, \"tool-provider-run-retry-readiness-scheduled\", {\n\t\tsourceRefs: schedule.sourceRefs,\n\t\tmetadata: {\n\t\t\tscheduleId: schedule.scheduleId,\n\t\t\treadyAtMs: schedule.readyAtMs,\n\t\t},\n\t});\n\tctx.down([[\"DATA\", { kind: \"readiness-schedule\", schedule }]]);\n}\n\nfunction emitStatus(\n\tctx: { down: (msgs: readonly [\"DATA\", ToolProviderRunRetryFact][]) => void },\n\tstate: ToolProviderRunRetryProjectorState,\n\tstatus: ToolProviderRunRetryStatus,\n): void {\n\tconst key = `${status.outcomeId}:${status.state}:${status.nextAttempt ?? \"\"}:${status.nextRetryAtMs ?? \"\"}:${(status.issueCodes ?? []).join(\",\")}`;\n\tif (state.statusKeys.has(key)) return;\n\tstate.statusKeys.add(key);\n\tstate.statusByOutcome.set(status.outcomeId, status);\n\tctx.down([[\"DATA\", { kind: \"status\", status }]]);\n}\n\nfunction emitIssue(\n\tctx: { down: (msgs: readonly [\"DATA\", ToolProviderRunRetryFact][]) => void },\n\tstate: ToolProviderRunRetryProjectorState,\n\tissue: DataIssue,\n): void {\n\tconst sanitized = sanitizeAdapterInputIssue(issue);\n\tconst key = `${sanitized.code}:${sanitized.subjectId ?? \"\"}:${JSON.stringify(sanitized.details ?? {})}`;\n\tif (state.issueKeys.has(key)) return;\n\tstate.issueKeys.add(key);\n\tctx.down([[\"DATA\", { kind: \"issue\", issue: sanitized }]]);\n}\n\nfunction emitAudit(\n\tctx: { down: (msgs: readonly [\"DATA\", ToolProviderRunRetryFact][]) => void },\n\tstate: ToolProviderRunRetryProjectorState,\n\tkind: string,\n\topts: {\n\t\treadonly subjectId?: string;\n\t\treadonly sourceRefs?: readonly SourceRef[];\n\t\treadonly metadata?: Record<string, unknown>;\n\t} = {},\n): void {\n\tstate.auditSeq += 1;\n\tconst metadata = sanitizeProviderGraphVisibleRecord(opts.metadata);\n\tctx.down([\n\t\t[\n\t\t\t\"DATA\",\n\t\t\t{\n\t\t\t\tkind: \"audit\",\n\t\t\t\taudit: Object.freeze({\n\t\t\t\t\tid: `tool-provider-run-retry-audit-${state.auditSeq}`,\n\t\t\t\t\tkind,\n\t\t\t\t\t...(opts.subjectId === undefined ? {} : { subjectId: opts.subjectId }),\n\t\t\t\t\t...(opts.sourceRefs === undefined\n\t\t\t\t\t\t? {}\n\t\t\t\t\t\t: { sourceRefs: sanitizeAdapterInputSourceRefs(opts.sourceRefs) }),\n\t\t\t\t\t...(metadata === undefined ? {} : { metadata }),\n\t\t\t\t} satisfies AgentRuntimeAuditRecord),\n\t\t\t},\n\t\t],\n\t]);\n}\n\nfunction statusForOutcome(\n\toutcome: ExecutorOutcome,\n\tinput: ToolProviderAdapterInput,\n\tstate: ToolProviderRunRetryStatusState,\n\topts: {\n\t\treadonly choice?: RetryPolicyChoice;\n\t\treadonly proposal?: ToolProviderRunRetryProposal;\n\t\treadonly issues?: readonly DataIssue[];\n\t\treadonly delayMs?: number;\n\t\treadonly retryAtMs?: number;\n\t} = {},\n): ToolProviderRunRetryStatus {\n\tconst proposal = opts.proposal;\n\tconst nextAttempt =\n\t\tproposal?.nextAttempt ?? (opts.choice === undefined ? undefined : outcome.attempt + 1);\n\treturn Object.freeze({\n\t\tkind: \"tool-provider-run-retry-status\",\n\t\tstatusId: `${outcome.outcomeId}:retry-status:${state}`,\n\t\toutcomeId: outcome.outcomeId,\n\t\tproposalId: proposal?.proposalId ?? `${outcome.outcomeId}:retry-proposal`,\n\t\tfromRunId: outcomeRunId(outcome),\n\t\tadapterInputId: input.adapterInputId,\n\t\trequestId: input.requestId,\n\t\toperationId: input.operationId,\n\t\t...(proposal?.nextRunId === undefined ? {} : { nextRunId: proposal.nextRunId }),\n\t\t...(nextAttempt === undefined ? {} : { nextAttempt }),\n\t\t...(opts.retryAtMs === undefined ? {} : { nextRetryAtMs: opts.retryAtMs }),\n\t\tstate,\n\t\tsourceRefs: retrySourceRefs(input, outcome, opts.choice?.policy),\n\t\t...(opts.issues === undefined || opts.issues.length === 0\n\t\t\t? {}\n\t\t\t: { issueCodes: Object.freeze(opts.issues.map((issue) => issue.code)) }),\n\t\t...optionalMetadata({\n\t\t\t...(opts.delayMs === undefined ? {} : { delayMs: opts.delayMs }),\n\t\t\t...(opts.choice === undefined\n\t\t\t\t? {}\n\t\t\t\t: { maxAttempts: opts.choice.policy.retryPolicy.maxAttempts }),\n\t\t}),\n\t} satisfies ToolProviderRunRetryStatus);\n}\n\nfunction statusForProposal(\n\tinput: ToolProviderAdapterInput,\n\tproposal: ToolProviderRunRetryProposal,\n\tstate: ToolProviderRunRetryStatusState,\n): ToolProviderRunRetryStatus {\n\treturn Object.freeze({\n\t\tkind: \"tool-provider-run-retry-status\",\n\t\tstatusId: `${proposal.outcomeId}:retry-status:${state}`,\n\t\toutcomeId: proposal.outcomeId,\n\t\tproposalId: proposal.proposalId,\n\t\tfromRunId: proposal.fromRunId,\n\t\tadapterInputId: input.adapterInputId,\n\t\trequestId: input.requestId,\n\t\toperationId: input.operationId,\n\t\tnextRunId: proposal.nextRunId,\n\t\tnextAttempt: proposal.nextAttempt,\n\t\tstate,\n\t\tsourceRefs: proposal.sourceRefs,\n\t\t...optionalMetadata({ maxAttempts: proposal.maxAttempts }),\n\t} satisfies ToolProviderRunRetryStatus);\n}\n\nfunction statusForMissingInput(\n\toutcome: ExecutorOutcome,\n\tstate: ToolProviderRunRetryStatusState,\n\tissues: readonly DataIssue[],\n): ToolProviderRunRetryStatus {\n\treturn Object.freeze({\n\t\tkind: \"tool-provider-run-retry-status\",\n\t\tstatusId: `${outcome.outcomeId}:retry-status:${state}`,\n\t\toutcomeId: outcome.outcomeId,\n\t\tproposalId: `${outcome.outcomeId}:retry-proposal`,\n\t\tfromRunId: outcomeRunId(outcome),\n\t\tadapterInputId: outcome.inputId ?? outcome.requestId,\n\t\trequestId: outcome.requestId,\n\t\toperationId: outcome.operationId,\n\t\tstate,\n\t\tsourceRefs: [ref(\"executor-outcome\", outcome.outcomeId)],\n\t\tissueCodes: Object.freeze(issues.map((issue) => issue.code)),\n\t} satisfies ToolProviderRunRetryStatus);\n}\n\nfunction isRetryableOutcome(outcome: ExecutorOutcome): boolean {\n\treturn (outcome.kind === \"failure\" || outcome.kind === \"timeout\") && outcome.retryable === true;\n}\n\nfunction retryPolicyRefs(\n\tinput: ToolProviderAdapterInput,\n\tpolicy: ToolProviderRunRetryPolicy,\n): readonly SourceRef[] {\n\treturn sanitizeAdapterInputSourceRefs([\n\t\tref(\"tool-provider-run-retry-policy\", policy.policyId),\n\t\t...(policy.sourceRefs ?? []),\n\t\t...(input.policyRefs ?? []),\n\t]);\n}\n\nfunction retrySourceRefs(\n\tinput: ToolProviderAdapterInput,\n\toutcome: ExecutorOutcome,\n\tpolicy?: ToolProviderRunRetryPolicy,\n): readonly SourceRef[] {\n\treturn sanitizeAdapterInputSourceRefs([\n\t\tref(\"executor-outcome\", outcome.outcomeId),\n\t\tref(\"tool-provider-adapter-input\", input.adapterInputId),\n\t\t...(outcome.evidenceRefs ?? []),\n\t\t...(input.sourceRefs ?? []),\n\t\t...(policy === undefined ? [] : retryPolicyRefs(input, policy)),\n\t]);\n}\n\nfunction outcomeRunId(outcome: ExecutorOutcome): string {\n\tconst runId = isRecord(outcome.metadata) ? outcome.metadata.runId : undefined;\n\tif (typeof runId === \"string\" && runId.length > 0) return runId;\n\treturn `${outcome.requestId}:attempt-${outcome.attempt}`;\n}\n\nfunction optionalMetadata(value: Record<string, unknown>): {\n\treadonly metadata?: Record<string, unknown>;\n} {\n\tconst metadata = sanitizeProviderGraphVisibleRecord(value);\n\treturn metadata === undefined ? {} : { metadata };\n}\n\nfunction buildRetryViews(state: ToolProviderRunRetryProjectorState): ToolProviderRunRetryViews {\n\treturn Object.freeze({\n\t\tproposalsByOutcome: new Map(state.proposalsByOutcome),\n\t\tscheduledByOutcome: new Map(state.scheduledByOutcome),\n\t\treadinessSchedulesByOutcome: new Map(state.readinessSchedulesByOutcome),\n\t\treadinessBySchedule: new Map(state.readinessBySchedule),\n\t\tnextRunRequestsByOutcome: new Map(state.nextRequestsByOutcome),\n\t\tstatusByOutcome: new Map(state.statusByOutcome),\n\t});\n}\n","import type { DataIssue } from \"../data/index.js\";\nimport type { Node } from \"../node/node.js\";\nimport type { AgentNeed, AgentRuntimeAuditRecord } from \"./agent-runtime-types-agent.js\";\n\nexport interface SourceRef {\n\treadonly kind: string;\n\treadonly id: string;\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport interface AgentRequestInput<T = unknown> {\n\treadonly inputId: string;\n\treadonly inputKind: string;\n\treadonly dataMode?: \"ref\" | \"summary\" | \"inline\";\n\treadonly ref?: string;\n\treadonly summary?: string;\n\treadonly value?: T;\n\treadonly schemaRef?: string;\n\treadonly subjectRefs?: readonly SourceRef[];\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport interface EffectRunGoal<TInput = unknown> {\n\treadonly kind: string;\n\treadonly summary?: string;\n\treadonly detailRef?: string;\n\treadonly input?: AgentRequestInput<TInput>;\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport interface EffectRunLimits {\n\treadonly maxSteps?: number;\n\treadonly maxRequests?: number;\n\treadonly maxAttemptsPerOperation?: number;\n\treadonly maxPendingRequests?: number;\n\treadonly maxCostUsd?: number;\n\treadonly timeoutMs?: number;\n}\n\nexport interface EffectRun<TInput = unknown> {\n\treadonly kind: \"effect-run\";\n\treadonly effectRunId: string;\n\treadonly agentRunId?: string;\n\treadonly subjectRefs?: readonly SourceRef[];\n\treadonly goal: EffectRunGoal<TInput>;\n\treadonly sourceRefs?: readonly SourceRef[];\n\treadonly policyRefs?: readonly SourceRef[];\n\treadonly limits?: EffectRunLimits;\n\treadonly createdBy?: string;\n\treadonly createdAtMs?: number;\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport interface EffectRunOptions<TInput = unknown> {\n\treadonly effectRunId: string;\n\treadonly agentRunId?: string;\n\treadonly subjectRefs?: readonly SourceRef[];\n\treadonly goal: EffectRunGoal<TInput>;\n\treadonly sourceRefs?: readonly SourceRef[];\n\treadonly policyRefs?: readonly SourceRef[];\n\treadonly limits?: EffectRunLimits;\n\treadonly createdBy?: string;\n\treadonly createdAtMs?: number;\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport function effectRun<TInput = unknown>(opts: EffectRunOptions<TInput>): EffectRun<TInput> {\n\treturn {\n\t\tkind: \"effect-run\",\n\t\teffectRunId: opts.effectRunId,\n\t\tagentRunId: opts.agentRunId,\n\t\tsubjectRefs: opts.subjectRefs,\n\t\tgoal: opts.goal,\n\t\tsourceRefs: opts.sourceRefs,\n\t\tpolicyRefs: opts.policyRefs,\n\t\tlimits: opts.limits,\n\t\tcreatedBy: opts.createdBy,\n\t\tcreatedAtMs: opts.createdAtMs,\n\t\tmetadata: opts.metadata,\n\t};\n}\n\nexport type AgentRequestKind = \"context\" | \"prompt\" | \"executor\";\n\nexport interface AgentRequestProposal<TPayload = unknown> {\n\treadonly kind: \"proposal\";\n\treadonly proposalId: string;\n\treadonly effectRunId: string;\n\treadonly agentRunId?: string;\n\treadonly parentRequestId?: string;\n\treadonly sourceDecisionId?: string;\n\treadonly requestKind: AgentRequestKind;\n\treadonly required?: boolean;\n\treadonly subjectId?: string;\n\treadonly input?: AgentRequestInput<TPayload>;\n\treadonly payload?: TPayload;\n\treadonly reason?: string;\n\treadonly evidenceRefs?: readonly SourceRef[];\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport interface AgentRequestAdmitted {\n\treadonly kind: \"admitted\";\n\treadonly proposalId: string;\n\treadonly requestId: string;\n\treadonly operationId: string;\n\treadonly effectRunId: string;\n\treadonly agentRunId?: string;\n\treadonly admittedAtMs?: number;\n\treadonly reason?: string;\n\treadonly sourceRefs?: readonly SourceRef[];\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport interface AgentRequestRejected {\n\treadonly kind: \"rejected\";\n\treadonly proposalId: string;\n\treadonly effectRunId: string;\n\treadonly issue: DataIssue;\n\treadonly sourceRefs?: readonly SourceRef[];\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport interface AgentRequestDeferred {\n\treadonly kind: \"deferred\";\n\treadonly proposalId: string;\n\treadonly effectRunId: string;\n\treadonly reason?: string;\n\treadonly untilRef?: string;\n\treadonly sourceRefs?: readonly SourceRef[];\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport interface AgentRequestMerged {\n\treadonly kind: \"merged\";\n\treadonly proposalId: string;\n\treadonly effectRunId: string;\n\treadonly targetRequestId: string;\n\treadonly reason?: string;\n\treadonly sourceRefs?: readonly SourceRef[];\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport interface AgentRequestIssued<TPayload = unknown> {\n\treadonly kind: \"issued\";\n\treadonly requestId: string;\n\treadonly operationId: string;\n\treadonly effectRunId: string;\n\treadonly agentRunId?: string;\n\treadonly proposalId?: string;\n\treadonly parentRequestId?: string;\n\treadonly requestKind: AgentRequestKind;\n\treadonly required: boolean;\n\treadonly input?: AgentRequestInput<TPayload>;\n\treadonly payload?: TPayload;\n\treadonly issuedAtMs?: number;\n\treadonly sourceRefs?: readonly SourceRef[];\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport type AgentRequestStatus =\n\t| \"proposed\"\n\t| \"admitted\"\n\t| \"rejected\"\n\t| \"deferred\"\n\t| \"merged\"\n\t| \"issued\"\n\t| \"awaiting-context\"\n\t| \"awaiting-prompt\"\n\t| \"awaiting-route\"\n\t| \"awaiting-provider\"\n\t| \"in-flight\"\n\t| \"completed\"\n\t| \"failed\"\n\t| \"blocked\"\n\t| \"canceled\"\n\t| \"timeout\"\n\t| \"waived\"\n\t| \"retry-exhausted\";\n\nexport interface AgentRequestStatusChanged {\n\treadonly kind: \"status\";\n\treadonly requestId: string;\n\treadonly operationId?: string;\n\treadonly effectRunId: string;\n\treadonly status: AgentRequestStatus;\n\treadonly sourceRefs?: readonly SourceRef[];\n\treadonly issues?: readonly DataIssue[];\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport type AgentRequestFact<TPayload = unknown> =\n\t| AgentRequestProposal<TPayload>\n\t| AgentRequestAdmitted\n\t| AgentRequestRejected\n\t| AgentRequestDeferred\n\t| AgentRequestMerged\n\t| AgentRequestIssued<TPayload>\n\t| AgentRequestStatusChanged;\n\nexport interface AgentRequestViews {\n\treadonly requestsById: ReadonlyMap<string, AgentRequestIssued>;\n\treadonly requestsByEffectRun: ReadonlyMap<string, readonly string[]>;\n\treadonly statusByRequest: ReadonlyMap<string, AgentRequestStatusChanged>;\n\treadonly pending: readonly AgentRequestIssued[];\n\treadonly awaitingProvider: readonly AgentRequestIssued[];\n\treadonly issues: readonly DataIssue[];\n\treadonly audit: readonly AgentRuntimeAuditRecord[];\n}\n\nexport interface AgentRequestLedgerBundle {\n\treadonly views: Node<AgentRequestViews>;\n\treadonly issues: Node<DataIssue>;\n\treadonly audit: Node<AgentRuntimeAuditRecord>;\n}\n\nexport interface ExecutorProfile {\n\treadonly profileId: string;\n\treadonly executorId: string;\n\treadonly kind: \"llm\" | \"tool\" | \"human\" | \"agent\";\n\treadonly acceptedInputKinds?: readonly string[];\n\treadonly acceptedSchemaRefs?: readonly string[];\n\treadonly acceptedResultKinds?: readonly string[];\n\treadonly capabilities?: Record<string, unknown>;\n\treadonly limits?: Record<string, number>;\n\treadonly policyRefs?: readonly SourceRef[];\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport interface ExecutorRoute {\n\treadonly kind: \"executor-route\";\n\treadonly routeId: string;\n\treadonly requestId: string;\n\treadonly operationId: string;\n\treadonly inputId?: string;\n\treadonly inputKind?: string;\n\treadonly executorId: string;\n\treadonly profileId: string;\n\treadonly allowedParams?: Record<string, unknown>;\n\treadonly reason?: string;\n\treadonly evidenceRefs?: readonly SourceRef[];\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport type ExecutorOutcomeStatus = \"result\" | \"failure\" | \"canceled\" | \"timeout\" | \"blocked\";\n\nexport interface ExecutorUsage {\n\treadonly inputTokens?: number;\n\treadonly outputTokens?: number;\n\treadonly cacheHitTokens?: number;\n\treadonly cacheMissTokens?: number;\n\treadonly cacheWriteTokens?: number;\n\treadonly cacheMode?: string;\n\treadonly costUsd?: number;\n\treadonly latencyMs?: number;\n}\n\nexport interface SizeCapacityEvidence {\n\treadonly kind: \"size-capacity-evidence\";\n\treadonly unit: string;\n\treadonly quantity: number;\n\treadonly measurementSource: string;\n\treadonly estimated?: boolean;\n\treadonly encoding?: string;\n\treadonly mediaType?: string;\n\treadonly sourceRefs?: readonly SourceRef[];\n\treadonly refs?: readonly SourceRef[];\n\treadonly issues?: readonly DataIssue[];\n\treadonly sensitivity?: readonly string[];\n\treadonly redaction?: Record<string, unknown>;\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport interface ExecutorOutcomeBase {\n\treadonly kind: ExecutorOutcomeStatus;\n\treadonly outcomeId: string;\n\treadonly requestId: string;\n\treadonly operationId: string;\n\treadonly routeId: string;\n\treadonly executorId: string;\n\treadonly profileId: string;\n\treadonly attempt: number;\n\treadonly inputId?: string;\n\treadonly inputKind?: string;\n\treadonly occurredAtMs?: number;\n\treadonly evidenceRefs?: readonly SourceRef[];\n\treadonly issues?: readonly DataIssue[];\n\treadonly usage?: ExecutorUsage;\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport interface AgentOutputEnvelope<T = unknown> {\n\treadonly kind: string;\n\treadonly value?: T;\n\treadonly refs?: readonly SourceRef[];\n\treadonly summary?: string;\n\treadonly artifacts?: readonly ExecutorArtifactMaterial[];\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport interface ExecutorArtifactMaterial<T = unknown> {\n\treadonly kind: string;\n\treadonly format?: string;\n\treadonly schemaRef?: string;\n\treadonly schemaKind?: string;\n\treadonly mimeType?: string;\n\treadonly mediaType?: string;\n\treadonly filename?: string;\n\treadonly byteLength?: number;\n\treadonly digest?: string;\n\treadonly encoding?: string;\n\treadonly dataMode: \"inline\" | \"summary\" | \"ref\" | (string & {});\n\treadonly summary?: string;\n\treadonly value?: T;\n\treadonly ref?: SourceRef;\n\treadonly refs?: readonly SourceRef[];\n\treadonly sourceRefs?: readonly SourceRef[];\n\treadonly sizeEvidence?: readonly SizeCapacityEvidence[];\n\treadonly sensitivity?: readonly string[];\n\treadonly redaction?: Record<string, unknown>;\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport type ExecutorOutcome<T = unknown> =\n\t| (ExecutorOutcomeBase & { readonly kind: \"result\"; readonly result: AgentOutputEnvelope<T> })\n\t| (ExecutorOutcomeBase & {\n\t\t\treadonly kind: \"failure\";\n\t\t\treadonly error: DataIssue;\n\t\t\treadonly retryable?: boolean;\n\t })\n\t| (ExecutorOutcomeBase & { readonly kind: \"canceled\"; readonly reason?: string })\n\t| (ExecutorOutcomeBase & {\n\t\t\treadonly kind: \"timeout\";\n\t\t\treadonly timeoutMs?: number;\n\t\t\treadonly retryable?: boolean;\n\t })\n\t| (ExecutorOutcomeBase & {\n\t\t\treadonly kind: \"blocked\";\n\t\t\treadonly needs: readonly AgentNeed[];\n\t });\n","export type CloneProcessStateResult<TState> =\n\t| { readonly ok: true; readonly value: TState }\n\t| { readonly ok: false; readonly message: string };\n\nexport function cloneProcessState<TState>(state: TState): CloneProcessStateResult<TState> {\n\tif (typeof state !== \"object\" || state === null) return { ok: true, value: state };\n\ttry {\n\t\tif (typeof globalThis.structuredClone === \"function\") {\n\t\t\treturn { ok: true, value: globalThis.structuredClone(state) as TState };\n\t\t}\n\t\treturn { ok: true, value: JSON.parse(JSON.stringify(state)) as TState };\n\t} catch (error) {\n\t\treturn {\n\t\t\tok: false,\n\t\t\tmessage: `processBundle: state must be cloneable before reducer execution (${errorMessage(error)})`,\n\t\t};\n\t}\n}\n\nexport function readTimestampMs(now: () => number): number | string {\n\ttry {\n\t\tconst timestampMs = now();\n\t\tif (!Number.isFinite(timestampMs)) return \"processBundle: now() must return a finite number\";\n\t\treturn timestampMs;\n\t} catch (error) {\n\t\treturn errorMessage(error);\n\t}\n}\n\nexport function rethrowGraphRuntimeInvariant(error: unknown): void {\n\tconst message = errorMessage(error);\n\tif (\n\t\tmessage.includes(\"R-reentrancy\") ||\n\t\tmessage.includes(\"R-rewire\") ||\n\t\tmessage.includes(\"R-graph-domain\") ||\n\t\tmessage.includes(\"D37\") ||\n\t\tmessage.includes(\"D22\") ||\n\t\tmessage.includes(\"different graph\") ||\n\t\tmessage.includes(\"cross-graph\") ||\n\t\tmessage.includes(\"wire bridge\") ||\n\t\tmessage.includes(\"mid-fn topology mutation\") ||\n\t\tmessage.includes(\"reentrant dep mutation\") ||\n\t\tmessage.includes(\"feedback cycle\")\n\t) {\n\t\tthrow error;\n\t}\n}\n\nexport function isObjectRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nexport function errorMessage(error: unknown): string {\n\treturn error instanceof Error ? error.message : String(error);\n}\n","/**\n * Graph-visible ProcessBundle orchestration helpers (D136/D156).\n */\n\nimport { depBatch, type NodeFn } from \"../ctx/types.js\";\nimport type { Graph, TopologyGroup } from \"../graph/graph.js\";\nimport type { Node } from \"../node/node.js\";\nimport type {\n\tProcessAuditRecord,\n\tProcessBundle,\n\tProcessBundleOptions,\n\tProcessCommand,\n\tProcessCursor,\n\tProcessEffectCommandPayload,\n\tProcessEffectCommandType,\n\tProcessEffectOutcome,\n\tProcessEffectRequest,\n\tProcessEffectRequestDraft,\n\tProcessEffectRunnerBundle,\n\tProcessEffectRunnerError,\n\tProcessEffectRunnerOptions,\n\tProcessEffectRunnerStatus,\n\tProcessError,\n\tProcessErrorCode,\n\tProcessEvent,\n\tProcessEventDraft,\n\tProcessReducer,\n\tProcessReduction,\n\tProcessStatus,\n} from \"./process-types.js\";\nimport {\n\tcloneProcessState,\n\terrorMessage,\n\tisObjectRecord,\n\treadTimestampMs,\n\trethrowGraphRuntimeInvariant,\n} from \"./process-utils.js\";\n\nexport type {\n\tProcessAuditRecord,\n\tProcessBundle,\n\tProcessBundleOptions,\n\tProcessCommand,\n\tProcessCursor,\n\tProcessEffectCommandPayload,\n\tProcessEffectCommandType,\n\tProcessEffectOutcome,\n\tProcessEffectRequest,\n\tProcessEffectRequestDraft,\n\tProcessEffectRunnerBundle,\n\tProcessEffectRunnerError,\n\tProcessEffectRunnerOptions,\n\tProcessEffectRunnerStatus,\n\tProcessError,\n\tProcessErrorCode,\n\tProcessEvent,\n\tProcessEventDraft,\n\tProcessReducer,\n\tProcessReduction,\n\tProcessStatus,\n} from \"./process-types.js\";\n\ntype ProcessRuntimeFact<TState = unknown, TEvent = unknown, TEffect = unknown> =\n\t| { readonly kind: \"state\"; readonly state: TState; readonly cursor: ProcessCursor }\n\t| { readonly kind: \"event\"; readonly event: ProcessEvent<TEvent> }\n\t| { readonly kind: \"effect-request\"; readonly effect: ProcessEffectRequest<TEffect> }\n\t| { readonly kind: \"status\"; readonly status: ProcessStatus }\n\t| { readonly kind: \"error\"; readonly error: ProcessError }\n\t| { readonly kind: \"audit\"; readonly audit: ProcessAuditRecord }\n\t| { readonly kind: \"cursor\"; readonly cursor: ProcessCursor };\n\ntype ProcessEffectRunnerFact<TResult = unknown> =\n\t| { readonly kind: \"outcome\"; readonly outcome: ProcessEffectOutcome<TResult> }\n\t| {\n\t\t\treadonly kind: \"command\";\n\t\t\treadonly command: ProcessCommand<ProcessEffectCommandPayload<TResult>>;\n\t }\n\t| { readonly kind: \"error\"; readonly error: ProcessEffectRunnerError };\n\ninterface AttachedProcessCommandSources<TCommand> {\n\tsources: Node<ProcessCommand<TCommand>>[];\n}\n\nconst processCommandSources = new WeakMap<\n\tProcessBundle<unknown, unknown, unknown, unknown>,\n\tAttachedProcessCommandSources<unknown>\n>();\n\n/**\n * Build a D136 ProcessBundle from graph-visible command facts and a reducer.\n *\n * The bundle retains its runtime/projection nodes until `release()` is called.\n * Reducer and validation failures are emitted as DATA error/status/audit facts;\n * they do not mint protocol ERROR messages or own restore/hydration behavior.\n */\nexport function processBundle<\n\tTCommand = unknown,\n\tTState = unknown,\n\tTEvent = unknown,\n\tTEffect = unknown,\n>(\n\tgraph: Graph,\n\topts: ProcessBundleOptions<TCommand, TState, TEvent, TEffect>,\n): ProcessBundle<TCommand, TState, TEvent, TEffect> {\n\tif (typeof opts.reduce !== \"function\") {\n\t\tthrow new TypeError(\"processBundle: reduce must be a function\");\n\t}\n\tif (opts.initialState === undefined) {\n\t\tthrow new TypeError(\"processBundle: initialState must not be undefined\");\n\t}\n\tconst name = opts.name ?? \"process\";\n\tconst now = opts.now ?? Date.now;\n\tconst topology = graph.topologyGroup({ name: `${name}.process` });\n\tconst command = topology.node<ProcessCommand<TCommand>>([], null, {\n\t\tname: `${name}/command`,\n\t\tfactory: \"processCommand\",\n\t\tcompleteWhenDepsComplete: false,\n\t\terrorWhenDepsError: false,\n\t});\n\tconst runtime = topology.node<ProcessRuntimeFact<TState, TEvent, TEffect>>(\n\t\t[command],\n\t\t(ctx) => {\n\t\t\tlet state =\n\t\t\t\tctx.state.get<ProcessRuntimeState<TState>>() ??\n\t\t\t\t({\n\t\t\t\t\teventSeq: 0,\n\t\t\t\t\teffectSeq: 0,\n\t\t\t\t\tcommandCount: 0,\n\t\t\t\t\terrorCount: 0,\n\t\t\t\t\tauditSeq: 0,\n\t\t\t\t\tseenEventIds: [],\n\t\t\t\t\tseenEffectIds: [],\n\t\t\t\t\tstate: opts.initialState,\n\t\t\t\t} satisfies ProcessRuntimeState<TState>);\n\t\t\tctx.state.persist(true);\n\t\t\tfor (const raw of depBatch(ctx, 0) ?? []) {\n\t\t\t\tstate = reduceProcessCommandFact(\n\t\t\t\t\traw,\n\t\t\t\t\tstate,\n\t\t\t\t\topts.reduce as ProcessReducer<unknown, TState, unknown, unknown>,\n\t\t\t\t\tnow,\n\t\t\t\t\t(fact) => ctx.down([[\"DATA\", fact as ProcessRuntimeFact<TState, TEvent, TEffect>]]),\n\t\t\t\t);\n\t\t\t\tctx.state.set(state);\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tname: `${name}/runtime`,\n\t\t\tfactory: \"processRuntime\",\n\t\t\tmeta: { process: \"facts-plus-reducer\", d: \"D136\" },\n\t\t\tcompleteWhenDepsComplete: false,\n\t\t\terrorWhenDepsError: false,\n\t\t},\n\t);\n\tconst events = processProjection<ProcessEvent<TEvent>, TState, TEvent, TEffect>(\n\t\ttopology,\n\t\truntime,\n\t\t`${name}/events`,\n\t\t\"processEvents\",\n\t\t(fact) => (fact.kind === \"event\" ? fact.event : undefined),\n\t);\n\tconst state = processProjection<TState, TState, TEvent, TEffect>(\n\t\ttopology,\n\t\truntime,\n\t\t`${name}/state`,\n\t\t\"processState\",\n\t\t(fact) => (fact.kind === \"state\" ? fact.state : undefined),\n\t);\n\tconst audit = processProjection<ProcessAuditRecord, TState, TEvent, TEffect>(\n\t\ttopology,\n\t\truntime,\n\t\t`${name}/audit`,\n\t\t\"processAudit\",\n\t\t(fact) => (fact.kind === \"audit\" ? fact.audit : undefined),\n\t);\n\tconst effectRequests = processProjection<ProcessEffectRequest<TEffect>, TState, TEvent, TEffect>(\n\t\ttopology,\n\t\truntime,\n\t\t`${name}/effectRequests`,\n\t\t\"processEffectRequests\",\n\t\t(fact) => (fact.kind === \"effect-request\" ? fact.effect : undefined),\n\t);\n\tconst status = processProjection<ProcessStatus, TState, TEvent, TEffect>(\n\t\ttopology,\n\t\truntime,\n\t\t`${name}/status`,\n\t\t\"processStatus\",\n\t\t(fact) => (fact.kind === \"status\" ? fact.status : undefined),\n\t);\n\tconst errors = processProjection<ProcessError, TState, TEvent, TEffect>(\n\t\ttopology,\n\t\truntime,\n\t\t`${name}/errors`,\n\t\t\"processErrors\",\n\t\t(fact) => (fact.kind === \"error\" ? fact.error : undefined),\n\t);\n\tconst cursor = processProjection<ProcessCursor, TState, TEvent, TEffect>(\n\t\ttopology,\n\t\truntime,\n\t\t`${name}/cursor`,\n\t\t\"processCursor\",\n\t\t(fact) => (fact.kind === \"cursor\" ? fact.cursor : undefined),\n\t);\n\tconst retainProcessNodes = () => [\n\t\tgraph.retain(runtime, { reason: `${name}.process.runtime` }),\n\t\tgraph.retain(events, { reason: `${name}.process.events` }),\n\t\tgraph.retain(state, { reason: `${name}.process.state` }),\n\t\tgraph.retain(audit, { reason: `${name}.process.audit` }),\n\t\tgraph.retain(effectRequests, { reason: `${name}.process.effectRequests` }),\n\t\tgraph.retain(status, { reason: `${name}.process.status` }),\n\t\tgraph.retain(errors, { reason: `${name}.process.errors` }),\n\t\tgraph.retain(cursor, { reason: `${name}.process.cursor` }),\n\t];\n\tlet releaseRetains = retainProcessNodes();\n\tlet released = false;\n\tconst bundle: ProcessBundle<TCommand, TState, TEvent, TEffect> = {\n\t\tcommand,\n\t\tevents,\n\t\tstate,\n\t\taudit,\n\t\teffectRequests,\n\t\tstatus,\n\t\terrors,\n\t\tcursor,\n\t\tdispatch(next) {\n\t\t\tcommand.down([[\"DATA\", next]]);\n\t\t\treturn next;\n\t\t},\n\t\trelease() {\n\t\t\tif (released) return;\n\t\t\tconst activeRetains = releaseRetains;\n\t\t\treleaseRetains = [];\n\t\t\tfor (const releaseRetain of activeRetains) releaseRetain();\n\t\t\ttry {\n\t\t\t\ttopology.release({ reason: `${name}.process.release` });\n\t\t\t\treleased = true;\n\t\t\t\tprocessCommandSources.delete(\n\t\t\t\t\tbundle as unknown as ProcessBundle<unknown, unknown, unknown, unknown>,\n\t\t\t\t);\n\t\t\t} catch (error) {\n\t\t\t\treleaseRetains = retainProcessNodes();\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t};\n\tprocessCommandSources.set(\n\t\tbundle as unknown as ProcessBundle<unknown, unknown, unknown, unknown>,\n\t\t{ sources: [] },\n\t);\n\treturn bundle;\n}\n\n/**\n * Build a D156 graph-visible effect runner adapter over a ProcessBundle.\n *\n * The runner consumes visible effect-request and outcome facts, then publishes\n * ordinary ProcessCommand DATA facts back through process.command via a declared\n * graph edge. Async handlers, timers, and process state ownership stay outside\n * this helper.\n */\nexport function processEffectRunner<TEffect = unknown, TResult = unknown>(\n\tgraph: Graph,\n\tprocess: ProcessBundle<unknown, unknown, unknown, TEffect>,\n\topts: ProcessEffectRunnerOptions<TResult>,\n): ProcessEffectRunnerBundle<TEffect, TResult> {\n\tif (opts.outcomes.length === 0) {\n\t\tthrow new RangeError(\"processEffectRunner: outcomes must contain at least one node\");\n\t}\n\tconst name = opts.name ?? \"processEffectRunner\";\n\tconst topology = graph.topologyGroup({ name: `${name}.effectRunner` });\n\tconst requests = topology.node<ProcessEffectRequest<TEffect>>(\n\t\t[process.effectRequests],\n\t\t(ctx) => {\n\t\t\tfor (const request of depBatch(ctx, 0) ?? []) {\n\t\t\t\tctx.down([[\"DATA\", request as ProcessEffectRequest<TEffect>]]);\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tname: `${name}/requests`,\n\t\t\tfactory: \"processEffectRunnerRequests\",\n\t\t\tpartial: true,\n\t\t\tcompleteWhenDepsComplete: false,\n\t\t\terrorWhenDepsError: false,\n\t\t},\n\t);\n\tconst runtime = topology.node<ProcessEffectRunnerFact<TResult>>(\n\t\t[...opts.outcomes],\n\t\t(ctx) => {\n\t\t\tfor (let i = 0; i < opts.outcomes.length; i += 1) {\n\t\t\t\tfor (const raw of depBatch(ctx, i) ?? []) {\n\t\t\t\t\tconst parsed = parseProcessEffectOutcome<TResult>(raw);\n\t\t\t\t\tif (typeof parsed === \"string\") {\n\t\t\t\t\t\tconst error = {\n\t\t\t\t\t\t\tcode: \"malformed-outcome\",\n\t\t\t\t\t\t\tmessage: parsed,\n\t\t\t\t\t\t\toutcome: raw,\n\t\t\t\t\t\t} satisfies ProcessEffectRunnerError;\n\t\t\t\t\t\tctx.down([[\"DATA\", { kind: \"error\", error }]]);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tconst outcome = parsed as ProcessEffectOutcome<TResult>;\n\t\t\t\t\tconst command = processEffectOutcomeCommand(outcome);\n\t\t\t\t\tctx.down([[\"DATA\", { kind: \"outcome\", outcome }]]);\n\t\t\t\t\tctx.down([[\"DATA\", { kind: \"command\", command }]]);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tname: `${name}/runtime`,\n\t\t\tfactory: \"processEffectRunner\",\n\t\t\tmeta: { process: \"effect-runner\", d: \"D156\" },\n\t\t\tpartial: true,\n\t\t\tcompleteWhenDepsComplete: false,\n\t\t\terrorWhenDepsError: false,\n\t\t},\n\t);\n\tconst outcomes = processEffectRunnerProjection<ProcessEffectOutcome<TResult>, TResult>(\n\t\ttopology,\n\t\truntime,\n\t\t`${name}/outcomes`,\n\t\t\"processEffectRunnerOutcomes\",\n\t\t(fact) => (fact.kind === \"outcome\" ? fact.outcome : undefined),\n\t);\n\tconst commands = processEffectRunnerProjection<\n\t\tProcessCommand<ProcessEffectCommandPayload<TResult>>,\n\t\tTResult\n\t>(topology, runtime, `${name}/commands`, \"processEffectRunnerCommands\", (fact) =>\n\t\tfact.kind === \"command\" ? fact.command : undefined,\n\t);\n\tconst errors = processEffectRunnerProjection<ProcessEffectRunnerError, TResult>(\n\t\ttopology,\n\t\truntime,\n\t\t`${name}/errors`,\n\t\t\"processEffectRunnerErrors\",\n\t\t(fact) => (fact.kind === \"error\" ? fact.error : undefined),\n\t);\n\tconst status = topology.node<ProcessEffectRunnerStatus>(\n\t\t[requests, runtime],\n\t\t(ctx) => {\n\t\t\tlet state =\n\t\t\t\tctx.state.get<ProcessEffectRunnerState>() ??\n\t\t\t\t({ requested: 0, commanded: 0, rejected: 0 } satisfies ProcessEffectRunnerState);\n\t\t\tfor (const request of depBatch(ctx, 0) ?? []) {\n\t\t\t\tstate = { ...state, requested: state.requested + 1 };\n\t\t\t\tconst typedRequest = request as ProcessEffectRequest<TEffect>;\n\t\t\t\tctx.down([\n\t\t\t\t\t[\n\t\t\t\t\t\t\"DATA\",\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tstate: \"requested\",\n\t\t\t\t\t\t\teffectId: typedRequest.id,\n\t\t\t\t\t\t\teffectType: typedRequest.type,\n\t\t\t\t\t\t\trequested: state.requested,\n\t\t\t\t\t\t\tcommanded: state.commanded,\n\t\t\t\t\t\t\trejected: state.rejected,\n\t\t\t\t\t\t} satisfies ProcessEffectRunnerStatus,\n\t\t\t\t\t],\n\t\t\t\t]);\n\t\t\t}\n\t\t\tfor (const fact of depBatch(ctx, 1) ?? []) {\n\t\t\t\tconst typedFact = fact as ProcessEffectRunnerFact<TResult>;\n\t\t\t\tif (typedFact.kind === \"command\") {\n\t\t\t\t\tstate = { ...state, commanded: state.commanded + 1 };\n\t\t\t\t\tctx.down([\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\"DATA\",\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tstate: \"commanded\",\n\t\t\t\t\t\t\t\teffectId: typedFact.command.payload.effectId,\n\t\t\t\t\t\t\t\teffectType: typedFact.command.payload.effectType,\n\t\t\t\t\t\t\t\tcommandId: typedFact.command.id,\n\t\t\t\t\t\t\t\tcommandType: typedFact.command.type as ProcessEffectCommandType,\n\t\t\t\t\t\t\t\trequested: state.requested,\n\t\t\t\t\t\t\t\tcommanded: state.commanded,\n\t\t\t\t\t\t\t\trejected: state.rejected,\n\t\t\t\t\t\t\t} satisfies ProcessEffectRunnerStatus,\n\t\t\t\t\t\t],\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tif (typedFact.kind === \"error\") {\n\t\t\t\t\tstate = { ...state, rejected: state.rejected + 1 };\n\t\t\t\t\tctx.down([\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\"DATA\",\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tstate: \"rejected\",\n\t\t\t\t\t\t\t\teffectId: typedFact.error.effectId,\n\t\t\t\t\t\t\t\teffectType: typedFact.error.effectType,\n\t\t\t\t\t\t\t\trequested: state.requested,\n\t\t\t\t\t\t\t\tcommanded: state.commanded,\n\t\t\t\t\t\t\t\trejected: state.rejected,\n\t\t\t\t\t\t\t} satisfies ProcessEffectRunnerStatus,\n\t\t\t\t\t\t],\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tctx.state.set(state);\n\t\t},\n\t\t{\n\t\t\tname: `${name}/status`,\n\t\t\tfactory: \"processEffectRunnerStatus\",\n\t\t\tpartial: true,\n\t\t\tcompleteWhenDepsComplete: false,\n\t\t\terrorWhenDepsError: false,\n\t\t},\n\t);\n\tconst retainRunnerNodes = () => [\n\t\tgraph.retain(requests, { reason: `${name}.effectRunner.requests` }),\n\t\tgraph.retain(outcomes, { reason: `${name}.effectRunner.outcomes` }),\n\t\tgraph.retain(commands, { reason: `${name}.effectRunner.commands` }),\n\t\tgraph.retain(status, { reason: `${name}.effectRunner.status` }),\n\t\tgraph.retain(errors, { reason: `${name}.effectRunner.errors` }),\n\t];\n\tlet releaseRetains = retainRunnerNodes();\n\ttry {\n\t\tattachProcessCommandSource(process, commands);\n\t} catch (error) {\n\t\tfor (const releaseRetain of releaseRetains) releaseRetain();\n\t\treleaseRetains = [];\n\t\ttopology.release({ reason: `${name}.effectRunner.failedAttach` });\n\t\tthrow error;\n\t}\n\tlet released = false;\n\treturn {\n\t\trequests,\n\t\toutcomes,\n\t\tcommands,\n\t\tstatus,\n\t\terrors,\n\t\trelease() {\n\t\t\tif (released) return;\n\t\t\tconst activeRetains = releaseRetains;\n\t\t\treleaseRetains = [];\n\t\t\tfor (const releaseRetain of activeRetains) releaseRetain();\n\t\t\tdetachProcessCommandSource(process, commands);\n\t\t\ttry {\n\t\t\t\ttopology.release({ reason: `${name}.effectRunner.release` });\n\t\t\t\treleased = true;\n\t\t\t} catch (error) {\n\t\t\t\tattachProcessCommandSource(process, commands);\n\t\t\t\treleaseRetains = retainRunnerNodes();\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t};\n}\n\ninterface ProcessEffectRunnerState {\n\trequested: number;\n\tcommanded: number;\n\trejected: number;\n}\n\ninterface ProcessRuntimeState<TState> {\n\teventSeq: number;\n\teffectSeq: number;\n\tcommandCount: number;\n\terrorCount: number;\n\tauditSeq: number;\n\tseenEventIds: string[];\n\tseenEffectIds: string[];\n\tstate: TState;\n}\n\nfunction processEffectRunnerProjection<T, TResult>(\n\ttopology: TopologyGroup,\n\truntime: Node<ProcessEffectRunnerFact<TResult>>,\n\tname: string,\n\tfactory: string,\n\tpick: (fact: ProcessEffectRunnerFact<TResult>) => T | undefined,\n): Node<T> {\n\treturn topology.node<T>(\n\t\t[runtime],\n\t\t(ctx) => {\n\t\t\tfor (const fact of depBatch(ctx, 0) ?? []) {\n\t\t\t\tconst value = pick(fact as ProcessEffectRunnerFact<TResult>);\n\t\t\t\tif (value !== undefined) ctx.down([[\"DATA\", value]]);\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tname,\n\t\t\tfactory,\n\t\t\tpartial: true,\n\t\t\tcompleteWhenDepsComplete: false,\n\t\t\terrorWhenDepsError: false,\n\t\t},\n\t);\n}\n\nfunction parseProcessEffectOutcome<TResult>(raw: unknown): ProcessEffectOutcome<TResult> | string {\n\tif (!isObjectRecord(raw)) return \"processEffectRunner: outcome must be an object\";\n\tif (typeof raw.kind !== \"string\") {\n\t\treturn \"processEffectRunner: outcome kind must be a string\";\n\t}\n\tif (\n\t\traw.kind !== \"result\" &&\n\t\traw.kind !== \"failure\" &&\n\t\traw.kind !== \"cancel\" &&\n\t\traw.kind !== \"timeout\"\n\t) {\n\t\treturn \"processEffectRunner: outcome kind must be result, failure, cancel, or timeout\";\n\t}\n\tif (typeof raw.effectId !== \"string\" || raw.effectId.length === 0) {\n\t\treturn \"processEffectRunner: outcome effectId must be a non-empty string\";\n\t}\n\tif (typeof raw.effectType !== \"string\" || raw.effectType.length === 0) {\n\t\treturn \"processEffectRunner: outcome effectType must be a non-empty string\";\n\t}\n\tif (\"commandId\" in raw && raw.commandId !== undefined) {\n\t\tif (typeof raw.commandId !== \"string\" || raw.commandId.length === 0) {\n\t\t\treturn \"processEffectRunner: outcome commandId must be a non-empty string\";\n\t\t}\n\t}\n\tfor (const key of [\"processId\", \"correlationId\", \"causationId\"] as const) {\n\t\tif (key in raw && raw[key] !== undefined && typeof raw[key] !== \"string\") {\n\t\t\treturn `processEffectRunner: outcome ${key} must be a string`;\n\t\t}\n\t}\n\tif (\"metadata\" in raw && raw.metadata !== undefined && !isObjectRecord(raw.metadata)) {\n\t\treturn \"processEffectRunner: outcome metadata must be a plain object\";\n\t}\n\tif (raw.kind === \"result\" && !(\"value\" in raw)) {\n\t\treturn \"processEffectRunner: result outcome must carry value\";\n\t}\n\tif ((raw.kind === \"failure\" || raw.kind === \"timeout\") && !(\"error\" in raw)) {\n\t\treturn `processEffectRunner: ${raw.kind} outcome must carry error`;\n\t}\n\tif (\n\t\traw.kind === \"cancel\" &&\n\t\t\"reason\" in raw &&\n\t\traw.reason !== undefined &&\n\t\ttypeof raw.reason !== \"string\"\n\t) {\n\t\treturn \"processEffectRunner: cancel outcome reason must be a string\";\n\t}\n\treturn raw as unknown as ProcessEffectOutcome<TResult>;\n}\n\nfunction processEffectOutcomeCommand<TResult>(\n\toutcome: ProcessEffectOutcome<TResult>,\n): ProcessCommand<ProcessEffectCommandPayload<TResult>> {\n\tconst commandType = processEffectCommandType(outcome.kind);\n\treturn {\n\t\tid: outcome.commandId ?? `${outcome.effectId}:${commandType}`,\n\t\ttype: commandType,\n\t\tpayload: processEffectCommandPayload(outcome),\n\t\tprocessId: outcome.processId,\n\t\tcorrelationId: outcome.correlationId,\n\t\tcausationId: outcome.causationId,\n\t\tmetadata: outcome.metadata,\n\t};\n}\n\nfunction processEffectCommandType(kind: ProcessEffectOutcome[\"kind\"]): ProcessEffectCommandType {\n\tswitch (kind) {\n\t\tcase \"result\":\n\t\t\treturn \"effect.result\";\n\t\tcase \"failure\":\n\t\t\treturn \"effect.failure\";\n\t\tcase \"cancel\":\n\t\t\treturn \"effect.cancel\";\n\t\tcase \"timeout\":\n\t\t\treturn \"effect.timeout\";\n\t}\n}\n\nfunction processEffectCommandPayload<TResult>(\n\toutcome: ProcessEffectOutcome<TResult>,\n): ProcessEffectCommandPayload<TResult> {\n\tconst base = {\n\t\teffectId: outcome.effectId,\n\t\teffectType: outcome.effectType,\n\t\tprocessId: outcome.processId,\n\t\tcorrelationId: outcome.correlationId,\n\t\tcausationId: outcome.causationId,\n\t\tmetadata: outcome.metadata,\n\t};\n\tswitch (outcome.kind) {\n\t\tcase \"result\":\n\t\t\treturn { ...base, kind: \"result\", value: outcome.value };\n\t\tcase \"failure\":\n\t\t\treturn { ...base, kind: \"failure\", error: outcome.error };\n\t\tcase \"cancel\":\n\t\t\treturn { ...base, kind: \"cancel\", reason: outcome.reason };\n\t\tcase \"timeout\":\n\t\t\treturn { ...base, kind: \"timeout\", error: outcome.error };\n\t}\n}\n\nfunction attachProcessCommandSource(\n\tprocess: ProcessBundle<unknown, unknown, unknown, unknown>,\n\tsource: Node<ProcessCommand<unknown>>,\n): void {\n\tconst attached = processCommandSources.get(process);\n\tif (attached === undefined) {\n\t\tthrow new Error(\"processEffectRunner: process command source registry missing\");\n\t}\n\tconst sources = attached.sources as Node<ProcessCommand<unknown>>[];\n\tconst previousSources = [...sources];\n\tif (!sources.includes(source)) sources.push(source);\n\ttry {\n\t\tprocess.command.replaceDeps([...sources], processCommandSourceFn(sources.length));\n\t} catch (error) {\n\t\tsources.splice(0, sources.length, ...previousSources);\n\t\tprocess.command.replaceDeps(\n\t\t\t[...previousSources],\n\t\t\tprocessCommandSourceFn(previousSources.length),\n\t\t);\n\t\tthrow error;\n\t}\n}\n\nfunction detachProcessCommandSource(\n\tprocess: ProcessBundle<unknown, unknown, unknown, unknown>,\n\tsource: Node<ProcessCommand<unknown>>,\n): void {\n\tconst attached = processCommandSources.get(process);\n\tif (attached === undefined) {\n\t\tthrow new Error(\"processEffectRunner: process command source registry missing\");\n\t}\n\tconst sources = attached.sources as Node<ProcessCommand<unknown>>[];\n\tif (!sources.includes(source)) return;\n\tconst previousSources = [...sources];\n\tconst nextSources = sources.filter((candidate) => candidate !== source);\n\tsources.splice(0, sources.length, ...nextSources);\n\ttry {\n\t\tprocess.command.replaceDeps([...nextSources], processCommandSourceFn(nextSources.length));\n\t} catch (error) {\n\t\tsources.splice(0, sources.length, ...previousSources);\n\t\tprocess.command.replaceDeps(\n\t\t\t[...previousSources],\n\t\t\tprocessCommandSourceFn(previousSources.length),\n\t\t);\n\t\tthrow error;\n\t}\n}\n\nfunction processCommandSourceFn(sourceCount: number) {\n\treturn (ctx: Parameters<NodeFn>[0]) => {\n\t\tfor (let i = 0; i < sourceCount; i += 1) {\n\t\t\tfor (const command of depBatch(ctx, i) ?? []) {\n\t\t\t\tctx.down([[\"DATA\", command as ProcessCommand<unknown>]]);\n\t\t\t}\n\t\t}\n\t};\n}\n\nfunction processRuntimeDraft<TState>(\n\tstate: ProcessRuntimeState<TState>,\n): ProcessRuntimeState<TState> {\n\treturn {\n\t\teventSeq: state.eventSeq,\n\t\teffectSeq: state.effectSeq,\n\t\tcommandCount: state.commandCount,\n\t\terrorCount: state.errorCount,\n\t\tauditSeq: state.auditSeq,\n\t\tseenEventIds: [...state.seenEventIds],\n\t\tseenEffectIds: [...state.seenEffectIds],\n\t\tstate: state.state,\n\t};\n}\n\nfunction reduceProcessCommandFact<TState>(\n\traw: unknown,\n\tstate: ProcessRuntimeState<TState>,\n\treduce: ProcessReducer<unknown, TState, unknown, unknown>,\n\tnow: () => number,\n\temit: (fact: ProcessRuntimeFact<TState, unknown, unknown>) => void,\n): ProcessRuntimeState<TState> {\n\tconst draft = processRuntimeDraft(state);\n\tdraft.commandCount += 1;\n\tconst parsed = parseProcessCommand(raw);\n\tif (typeof parsed === \"string\") {\n\t\temitProcessFailure(draft, emit, raw, undefined, \"malformed-command\", parsed);\n\t\treturn draft;\n\t}\n\tconst command = parsed as ProcessCommand<unknown>;\n\tlet reduction: ProcessReduction<TState, unknown, unknown>;\n\tconst reducerState = cloneProcessState(state.state);\n\tif (!reducerState.ok) {\n\t\temitProcessFailure(draft, emit, command, command, \"malformed-state\", reducerState.message);\n\t\treturn draft;\n\t}\n\ttry {\n\t\treduction = reduce(command, reducerState.value);\n\t} catch (error) {\n\t\trethrowGraphRuntimeInvariant(error);\n\t\temitProcessFailure(draft, emit, command, command, \"reducer-threw\", errorMessage(error));\n\t\treturn draft;\n\t}\n\tif (!isObjectRecord(reduction) || !(\"state\" in reduction)) {\n\t\temitProcessFailure(\n\t\t\tdraft,\n\t\t\temit,\n\t\t\tcommand,\n\t\t\tcommand,\n\t\t\t\"malformed-state\",\n\t\t\t\"processBundle: reducer must return { state, events?, effects? }\",\n\t\t);\n\t\treturn draft;\n\t}\n\tif (reduction.state === undefined) {\n\t\temitProcessFailure(\n\t\t\tdraft,\n\t\t\temit,\n\t\t\tcommand,\n\t\t\tcommand,\n\t\t\t\"malformed-state\",\n\t\t\t\"processBundle: reducer state must not be undefined\",\n\t\t);\n\t\treturn draft;\n\t}\n\tconst privateState = cloneProcessState(reduction.state);\n\tif (!privateState.ok) {\n\t\temitProcessFailure(draft, emit, command, command, \"malformed-state\", privateState.message);\n\t\treturn draft;\n\t}\n\tconst visibleState = cloneProcessState(privateState.value);\n\tif (!visibleState.ok) {\n\t\temitProcessFailure(draft, emit, command, command, \"malformed-state\", visibleState.message);\n\t\treturn draft;\n\t}\n\tconst preparedEvents = prepareProcessEvents(command, draft, reduction.events ?? []);\n\tif (typeof preparedEvents === \"string\") {\n\t\temitProcessFailure(draft, emit, command, command, \"malformed-event\", preparedEvents);\n\t\treturn draft;\n\t}\n\tconst preparedEffects = prepareProcessEffects(command, draft, reduction.effects ?? []);\n\tif (typeof preparedEffects === \"string\") {\n\t\temitProcessFailure(draft, emit, command, command, \"malformed-effect\", preparedEffects);\n\t\treturn draft;\n\t}\n\tconst timestampMs = readTimestampMs(now);\n\tif (typeof timestampMs === \"string\") {\n\t\temitProcessFailure(draft, emit, command, command, \"clock-threw\", timestampMs);\n\t\treturn draft;\n\t}\n\tdraft.state = privateState.value;\n\temit({ kind: \"state\", state: visibleState.value, cursor: processCursorOf(draft) });\n\tconst events: ProcessEvent<unknown>[] = [];\n\tfor (const eventDraft of preparedEvents) {\n\t\tdraft.eventSeq += 1;\n\t\tdraft.seenEventIds.push(eventDraft.id);\n\t\tconst event: ProcessEvent<unknown> = {\n\t\t\tid: eventDraft.id,\n\t\t\ttype: eventDraft.type,\n\t\t\tseq: draft.eventSeq,\n\t\t\tcursor: draft.eventSeq,\n\t\t\tcommandId: command.id,\n\t\t\tcommandType: command.type,\n\t\t\tpayload: eventDraft.payload,\n\t\t\ttimestampMs,\n\t\t\t...(eventDraft.processId === undefined ? {} : { processId: eventDraft.processId }),\n\t\t\t...(eventDraft.correlationId === undefined\n\t\t\t\t? {}\n\t\t\t\t: { correlationId: eventDraft.correlationId }),\n\t\t\t...(eventDraft.causationId === undefined ? {} : { causationId: eventDraft.causationId }),\n\t\t\t...(eventDraft.metadata === undefined ? {} : { metadata: eventDraft.metadata }),\n\t\t};\n\t\tevents.push(event);\n\t\temit({ kind: \"event\", event });\n\t}\n\tconst effects: ProcessEffectRequest<unknown>[] = [];\n\tfor (const effectDraft of preparedEffects) {\n\t\tdraft.effectSeq += 1;\n\t\tdraft.seenEffectIds.push(effectDraft.id);\n\t\tconst effect: ProcessEffectRequest<unknown> = {\n\t\t\tid: effectDraft.id,\n\t\t\ttype: effectDraft.type,\n\t\t\tseq: draft.effectSeq,\n\t\t\tcursor: draft.effectSeq,\n\t\t\tcommandId: command.id,\n\t\t\tcommandType: command.type,\n\t\t\tpayload: effectDraft.payload,\n\t\t\ttimestampMs,\n\t\t\t...(effectDraft.processId === undefined ? {} : { processId: effectDraft.processId }),\n\t\t\t...(effectDraft.correlationId === undefined\n\t\t\t\t? {}\n\t\t\t\t: { correlationId: effectDraft.correlationId }),\n\t\t\t...(effectDraft.causationId === undefined ? {} : { causationId: effectDraft.causationId }),\n\t\t\t...(effectDraft.metadata === undefined ? {} : { metadata: effectDraft.metadata }),\n\t\t};\n\t\teffects.push(effect);\n\t\temit({ kind: \"effect-request\", effect });\n\t}\n\temitProcessStatus(draft, emit, command, \"accepted\", events.length, effects.length);\n\temitProcessAudit(draft, emit, command, \"success\", events, effects, undefined, undefined);\n\temit({ kind: \"cursor\", cursor: processCursorOf(draft) });\n\treturn draft;\n}\n\nfunction processProjection<TOut, TState, TEvent, TEffect>(\n\tgraph: Graph | TopologyGroup,\n\truntime: Node<ProcessRuntimeFact<TState, TEvent, TEffect>>,\n\tname: string,\n\tfactory: string,\n\tselect: (fact: ProcessRuntimeFact<TState, TEvent, TEffect>) => TOut | undefined,\n): Node<TOut> {\n\treturn graph.node<TOut>(\n\t\t[runtime],\n\t\t(ctx) => {\n\t\t\tfor (const raw of depBatch(ctx, 0) ?? []) {\n\t\t\t\tconst selected = select(raw as ProcessRuntimeFact<TState, TEvent, TEffect>);\n\t\t\t\tif (selected !== undefined) ctx.down([[\"DATA\", selected]]);\n\t\t\t}\n\t\t},\n\t\t{ name, factory, completeWhenDepsComplete: false, errorWhenDepsError: false },\n\t);\n}\n\nfunction parseProcessCommand(value: unknown): ProcessCommand<unknown> | string {\n\tif (!isObjectRecord(value)) return \"processBundle: command fact must be an object\";\n\tif (typeof value.id !== \"string\" || value.id.length === 0) {\n\t\treturn \"processBundle: command id must be a non-empty string\";\n\t}\n\tif (typeof value.type !== \"string\" || value.type.length === 0) {\n\t\treturn \"processBundle: command type must be a non-empty string\";\n\t}\n\treturn {\n\t\tid: value.id,\n\t\ttype: value.type,\n\t\tpayload: value.payload,\n\t\t...(typeof value.processId === \"string\" ? { processId: value.processId } : {}),\n\t\t...(typeof value.correlationId === \"string\" ? { correlationId: value.correlationId } : {}),\n\t\t...(typeof value.causationId === \"string\" ? { causationId: value.causationId } : {}),\n\t\t...(isObjectRecord(value.metadata) ? { metadata: value.metadata } : {}),\n\t};\n}\n\nfunction prepareProcessEvents(\n\tcommand: ProcessCommand<unknown>,\n\tstate: ProcessRuntimeState<unknown>,\n\tdrafts: readonly ProcessEventDraft<unknown>[],\n): Array<ProcessEventDraft<unknown> & { readonly id: string }> | string {\n\tif (!Array.isArray(drafts)) return \"processBundle: events must be an array\";\n\tconst seen = new Set<string>();\n\tconst out: Array<ProcessEventDraft<unknown> & { readonly id: string }> = [];\n\tfor (let i = 0; i < drafts.length; i += 1) {\n\t\tconst draft = drafts[i];\n\t\tif (!isObjectRecord(draft) || typeof draft.type !== \"string\" || draft.type.length === 0) {\n\t\t\treturn \"processBundle: event draft must have a non-empty type\";\n\t\t}\n\t\tconst id =\n\t\t\ttypeof draft.id === \"string\" && draft.id.length > 0\n\t\t\t\t? draft.id\n\t\t\t\t: `${command.id}:event:${state.eventSeq + i + 1}`;\n\t\tif (seen.has(id)) return `processBundle: duplicate event '${id}'`;\n\t\tif (state.seenEventIds.includes(id)) return `processBundle: duplicate event '${id}'`;\n\t\tseen.add(id);\n\t\tout.push({\n\t\t\tid,\n\t\t\ttype: draft.type,\n\t\t\tpayload: draft.payload,\n\t\t\t...(typeof draft.processId === \"string\" ? { processId: draft.processId } : {}),\n\t\t\t...(typeof draft.correlationId === \"string\" ? { correlationId: draft.correlationId } : {}),\n\t\t\t...(typeof draft.causationId === \"string\" ? { causationId: draft.causationId } : {}),\n\t\t\t...(isObjectRecord(draft.metadata) ? { metadata: draft.metadata } : {}),\n\t\t});\n\t}\n\treturn out;\n}\n\nfunction prepareProcessEffects(\n\tcommand: ProcessCommand<unknown>,\n\tstate: ProcessRuntimeState<unknown>,\n\tdrafts: readonly ProcessEffectRequestDraft<unknown>[],\n): Array<ProcessEffectRequestDraft<unknown> & { readonly id: string }> | string {\n\tif (!Array.isArray(drafts)) return \"processBundle: effects must be an array\";\n\tconst seen = new Set<string>();\n\tconst out: Array<ProcessEffectRequestDraft<unknown> & { readonly id: string }> = [];\n\tfor (let i = 0; i < drafts.length; i += 1) {\n\t\tconst draft = drafts[i];\n\t\tif (!isObjectRecord(draft) || typeof draft.type !== \"string\" || draft.type.length === 0) {\n\t\t\treturn \"processBundle: effect draft must have a non-empty type\";\n\t\t}\n\t\tconst id =\n\t\t\ttypeof draft.id === \"string\" && draft.id.length > 0\n\t\t\t\t? draft.id\n\t\t\t\t: `${command.id}:effect:${state.effectSeq + i + 1}`;\n\t\tif (seen.has(id)) return `processBundle: duplicate effect '${id}'`;\n\t\tif (state.seenEffectIds.includes(id)) return `processBundle: duplicate effect '${id}'`;\n\t\tseen.add(id);\n\t\tout.push({\n\t\t\tid,\n\t\t\ttype: draft.type,\n\t\t\tpayload: draft.payload,\n\t\t\t...(typeof draft.processId === \"string\" ? { processId: draft.processId } : {}),\n\t\t\t...(typeof draft.correlationId === \"string\" ? { correlationId: draft.correlationId } : {}),\n\t\t\t...(typeof draft.causationId === \"string\" ? { causationId: draft.causationId } : {}),\n\t\t\t...(isObjectRecord(draft.metadata) ? { metadata: draft.metadata } : {}),\n\t\t});\n\t}\n\treturn out;\n}\n\nfunction emitProcessFailure<TState>(\n\tstate: ProcessRuntimeState<TState>,\n\temit: (fact: ProcessRuntimeFact<TState, unknown, unknown>) => void,\n\traw: unknown,\n\tcommand: ProcessCommand<unknown> | undefined,\n\tcode: ProcessErrorCode,\n\tmessage: string,\n): void {\n\tstate.errorCount += 1;\n\tconst cursor = processCursorOf(state);\n\tconst error: ProcessError = {\n\t\tcode,\n\t\tmessage,\n\t\tcommand: raw,\n\t\t...(command === undefined ? {} : { commandId: command.id, commandType: command.type }),\n\t\tcursor,\n\t};\n\temit({ kind: \"error\", error });\n\temitProcessStatus(state, emit, command, \"rejected\", 0, 0, code);\n\temitProcessAudit(state, emit, command, \"failure\", [], [], code, message);\n\temit({ kind: \"cursor\", cursor: processCursorOf(state) });\n}\n\nfunction emitProcessStatus<TState>(\n\tstate: ProcessRuntimeState<TState>,\n\temit: (fact: ProcessRuntimeFact<TState, unknown, unknown>) => void,\n\tcommand: ProcessCommand<unknown> | undefined,\n\tstatusState: ProcessStatus[\"state\"],\n\teventCount: number,\n\teffectCount: number,\n\terrorCode?: ProcessErrorCode,\n): void {\n\temit({\n\t\tkind: \"status\",\n\t\tstatus: {\n\t\t\tstate: statusState,\n\t\t\t...(command === undefined ? {} : { commandId: command.id, commandType: command.type }),\n\t\t\teventCount,\n\t\t\teffectCount,\n\t\t\t...(errorCode === undefined ? {} : { errorCode }),\n\t\t\tcursor: processCursorOf(state),\n\t\t},\n\t});\n}\n\nfunction emitProcessAudit<TState>(\n\tstate: ProcessRuntimeState<TState>,\n\temit: (fact: ProcessRuntimeFact<TState, unknown, unknown>) => void,\n\tcommand: ProcessCommand<unknown> | undefined,\n\toutcome: ProcessAuditRecord[\"outcome\"],\n\tevents: readonly ProcessEvent<unknown>[],\n\teffects: readonly ProcessEffectRequest<unknown>[],\n\terrorCode: ProcessErrorCode | undefined,\n\terrorMessage: string | undefined,\n): void {\n\tstate.auditSeq += 1;\n\temit({\n\t\tkind: \"audit\",\n\t\taudit: {\n\t\t\tseq: state.auditSeq,\n\t\t\t...(command === undefined ? {} : { commandId: command.id, commandType: command.type }),\n\t\t\toutcome,\n\t\t\teventIds: events.map((event) => event.id),\n\t\t\teventTypes: events.map((event) => event.type),\n\t\t\teffectIds: effects.map((effect) => effect.id),\n\t\t\teffectTypes: effects.map((effect) => effect.type),\n\t\t\t...(errorCode === undefined ? {} : { errorCode }),\n\t\t\t...(errorMessage === undefined ? {} : { errorMessage }),\n\t\t\tcursor: processCursorOf(state),\n\t\t},\n\t});\n}\n\nfunction processCursorOf(state: ProcessRuntimeState<unknown>): ProcessCursor {\n\treturn {\n\t\teventSeq: state.eventSeq,\n\t\teffectSeq: state.effectSeq,\n\t\tcommandCount: state.commandCount,\n\t\terrorCount: state.errorCount,\n\t\tauditSeq: state.auditSeq,\n\t};\n}\n","import { depBatch } from \"../ctx/types.js\";\nimport type { Graph } from \"../graph/graph.js\";\nimport {\n\ttype BackoffPolicy,\n\tnextRetryDelayMs,\n\ttype RetryPolicy,\n\ttype RetryStatus,\n\tretryPolicy,\n\tshouldRetry,\n} from \"../graph/resilience.js\";\nimport { timeout as timeoutOperator } from \"../graph/time.js\";\nimport type { Node } from \"../node/node.js\";\n\nexport type ResilienceEvent =\n\t| { readonly kind: \"attempt\"; readonly attempt: number }\n\t| {\n\t\t\treadonly kind: \"retry\";\n\t\t\treadonly attempt: number;\n\t\t\treadonly delayMs: number;\n\t\t\treadonly error: unknown;\n\t }\n\t| { readonly kind: \"success\"; readonly attempt?: number }\n\t| { readonly kind: \"failure\"; readonly attempt?: number; readonly error: unknown }\n\t| { readonly kind: \"exhausted\"; readonly attempt: number; readonly error: unknown };\n\nexport interface RetryStatusBundle {\n\treadonly status: Node<RetryStatus>;\n\treadonly errors: Node<unknown>;\n}\n\nexport interface BreakerOptions {\n\treadonly failureThreshold: number;\n\treadonly resetAfterMs?: number;\n\treadonly now?: () => number;\n\treadonly name?: string;\n}\n\nexport interface BreakerStatus {\n\treadonly state: \"closed\" | \"open\" | \"half-open\";\n\treadonly failures: number;\n\treadonly openedAtMs?: number;\n}\n\nexport interface BreakerBundle {\n\treadonly status: Node<BreakerStatus>;\n\treadonly allowed: Node<boolean>;\n}\n\nexport interface RateLimitOptions {\n\treadonly max: number;\n\treadonly windowMs: number;\n\treadonly now?: () => number;\n\treadonly name?: string;\n}\n\nexport interface RateLimitStatus {\n\treadonly allowed: number;\n\treadonly dropped: number;\n\treadonly remaining: number;\n\treadonly resetAtMs: number;\n}\n\nexport interface RateLimitBundle<T> {\n\treadonly allowed: Node<T>;\n\treadonly dropped: Node<T>;\n\treadonly status: Node<RateLimitStatus>;\n}\n\ntype RateLimitEvent<T> =\n\t| { readonly kind: \"allowed\"; readonly value: T; readonly status: RateLimitStatus }\n\t| { readonly kind: \"dropped\"; readonly value: T; readonly status: RateLimitStatus };\n\nexport interface TimeoutBundle<T> {\n\treadonly node: Node<T>;\n\treadonly status: Node<\"running\" | \"completed\" | \"errored\">;\n\treadonly errors: Node<unknown>;\n}\n\nexport function retryStatusBundle(\n\tgraph: Graph,\n\tevents: Node<ResilienceEvent>,\n\topts: { name?: string; policy?: RetryPolicy } = {},\n): RetryStatusBundle {\n\tconst policy = opts.policy ?? retryPolicy();\n\tconst name = opts.name ?? \"retry\";\n\tconst status = graph.node<RetryStatus>(\n\t\t[events],\n\t\t(ctx) => {\n\t\t\tlet next =\n\t\t\t\tctx.state.get<RetryStatus>() ??\n\t\t\t\t({ state: \"idle\", attempt: 0, maxAttempts: policy.maxAttempts } satisfies RetryStatus);\n\t\t\tfor (const raw of depBatch(ctx, 0) ?? []) {\n\t\t\t\tconst event = raw as ResilienceEvent;\n\t\t\t\tif (event.kind === \"attempt\") {\n\t\t\t\t\tnext = { state: \"running\", attempt: event.attempt, maxAttempts: policy.maxAttempts };\n\t\t\t\t} else if (event.kind === \"retry\") {\n\t\t\t\t\tnext = {\n\t\t\t\t\t\tstate: \"waiting\",\n\t\t\t\t\t\tattempt: event.attempt,\n\t\t\t\t\t\tmaxAttempts: policy.maxAttempts,\n\t\t\t\t\t\tdelayMs: event.delayMs,\n\t\t\t\t\t};\n\t\t\t\t} else if (event.kind === \"success\") {\n\t\t\t\t\tnext = {\n\t\t\t\t\t\tstate: \"succeeded\",\n\t\t\t\t\t\tattempt: event.attempt ?? next.attempt,\n\t\t\t\t\t\tmaxAttempts: policy.maxAttempts,\n\t\t\t\t\t};\n\t\t\t\t} else if (event.kind === \"failure\") {\n\t\t\t\t\tconst attempt = event.attempt ?? next.attempt;\n\t\t\t\t\tnext = {\n\t\t\t\t\t\tstate: shouldRetry(policy, attempt) ? \"failed\" : \"exhausted\",\n\t\t\t\t\t\tattempt,\n\t\t\t\t\t\tmaxAttempts: policy.maxAttempts,\n\t\t\t\t\t\tdelayMs: shouldRetry(policy, attempt)\n\t\t\t\t\t\t\t? nextRetryDelayMs(policy, attempt + 1)\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\tnext = {\n\t\t\t\t\t\tstate: \"exhausted\",\n\t\t\t\t\t\tattempt: event.attempt,\n\t\t\t\t\t\tmaxAttempts: policy.maxAttempts,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t\tctx.state.set(next);\n\t\t\tctx.down([[\"DATA\", next]]);\n\t\t},\n\t\t{ name: `${name}/status`, factory: \"retryStatus\" },\n\t);\n\tconst errors = graph.node<unknown>(\n\t\t[events],\n\t\t(ctx) => {\n\t\t\tfor (const raw of depBatch(ctx, 0) ?? []) {\n\t\t\t\tconst event = raw as ResilienceEvent;\n\t\t\t\tif (\"error\" in event) ctx.down([[\"DATA\", event.error]]);\n\t\t\t}\n\t\t},\n\t\t{ name: `${name}/errors`, factory: \"retryErrors\" },\n\t);\n\treturn { status, errors };\n}\n\nexport function breakerBundle(\n\tgraph: Graph,\n\tevents: Node<ResilienceEvent>,\n\topts: BreakerOptions,\n): BreakerBundle {\n\tif (!Number.isInteger(opts.failureThreshold) || opts.failureThreshold <= 0) {\n\t\tthrow new RangeError(\"breakerBundle: failureThreshold must be a positive integer\");\n\t}\n\tconst name = opts.name ?? \"breaker\";\n\tconst now = opts.now ?? Date.now;\n\tconst status = graph.node<BreakerStatus>(\n\t\t[events],\n\t\t(ctx) => {\n\t\t\tlet next =\n\t\t\t\tctx.state.get<BreakerStatus>() ??\n\t\t\t\t({ state: \"closed\", failures: 0 } satisfies BreakerStatus);\n\t\t\tif (\n\t\t\t\tnext.state === \"open\" &&\n\t\t\t\topts.resetAfterMs !== undefined &&\n\t\t\t\tnext.openedAtMs !== undefined &&\n\t\t\t\tnow() - next.openedAtMs >= opts.resetAfterMs\n\t\t\t) {\n\t\t\t\tnext = { ...next, state: \"half-open\" };\n\t\t\t}\n\t\t\tfor (const raw of depBatch(ctx, 0) ?? []) {\n\t\t\t\tconst event = raw as ResilienceEvent;\n\t\t\t\tif (event.kind === \"success\") {\n\t\t\t\t\tnext = { state: \"closed\", failures: 0 };\n\t\t\t\t} else if (event.kind === \"failure\" || event.kind === \"exhausted\") {\n\t\t\t\t\tconst failures = next.failures + 1;\n\t\t\t\t\tnext =\n\t\t\t\t\t\tfailures >= opts.failureThreshold\n\t\t\t\t\t\t\t? { state: \"open\", failures, openedAtMs: now() }\n\t\t\t\t\t\t\t: { ...next, failures };\n\t\t\t\t}\n\t\t\t}\n\t\t\tctx.state.set(next);\n\t\t\tctx.down([[\"DATA\", next]]);\n\t\t},\n\t\t{ name: `${name}/status`, factory: \"breakerStatus\" },\n\t);\n\tconst allowed = graph.node<boolean>(\n\t\t[status],\n\t\t(ctx) => {\n\t\t\tconst statusBatch = depBatch(ctx, 0) ?? [];\n\t\t\tfor (const value of statusBatch) {\n\t\t\t\tctx.down([[\"DATA\", (value as BreakerStatus).state !== \"open\"]]);\n\t\t\t}\n\t\t},\n\t\t{ name: `${name}/allowed`, factory: \"breakerAllowed\" },\n\t);\n\treturn { status, allowed };\n}\n\nexport function rateLimitBundle<T>(\n\tgraph: Graph,\n\tsource: Node<T>,\n\topts: RateLimitOptions,\n): RateLimitBundle<T> {\n\tif (!Number.isInteger(opts.max) || opts.max <= 0) {\n\t\tthrow new RangeError(\"rateLimitBundle: max must be a positive integer\");\n\t}\n\tif (!Number.isFinite(opts.windowMs) || opts.windowMs <= 0) {\n\t\tthrow new RangeError(\"rateLimitBundle: windowMs must be positive\");\n\t}\n\tconst now = opts.now ?? Date.now;\n\tconst name = opts.name ?? \"rateLimit\";\n\tconst events = graph.node<RateLimitEvent<T>>(\n\t\t[source],\n\t\t(ctx) => {\n\t\t\ttype State = { count: number; resetAtMs: number; allowed: number; dropped: number };\n\t\t\tconst current = now();\n\t\t\tlet state =\n\t\t\t\tctx.state.get<State>() ??\n\t\t\t\t({ count: 0, resetAtMs: current + opts.windowMs, allowed: 0, dropped: 0 } satisfies State);\n\t\t\tif (current >= state.resetAtMs) {\n\t\t\t\tstate = { ...state, count: 0, resetAtMs: current + opts.windowMs };\n\t\t\t}\n\t\t\tfor (const value of depBatch(ctx, 0) ?? []) {\n\t\t\t\tconst allowed = state.count < opts.max;\n\t\t\t\tstate = allowed\n\t\t\t\t\t? { ...state, count: state.count + 1, allowed: state.allowed + 1 }\n\t\t\t\t\t: { ...state, dropped: state.dropped + 1 };\n\t\t\t\tconst status = {\n\t\t\t\t\tallowed: state.allowed,\n\t\t\t\t\tdropped: state.dropped,\n\t\t\t\t\tremaining: Math.max(0, opts.max - state.count),\n\t\t\t\t\tresetAtMs: state.resetAtMs,\n\t\t\t\t} satisfies RateLimitStatus;\n\t\t\t\tctx.down([\n\t\t\t\t\t[\n\t\t\t\t\t\t\"DATA\",\n\t\t\t\t\t\tallowed\n\t\t\t\t\t\t\t? ({ kind: \"allowed\", value: value as T, status } satisfies RateLimitEvent<T>)\n\t\t\t\t\t\t\t: ({ kind: \"dropped\", value: value as T, status } satisfies RateLimitEvent<T>),\n\t\t\t\t\t],\n\t\t\t\t]);\n\t\t\t}\n\t\t\tctx.state.set(state);\n\t\t},\n\t\t{ name: `${name}/events`, factory: \"rateLimitEvents\" },\n\t);\n\tconst allowed = graph.node<T>(\n\t\t[events],\n\t\t(ctx) => {\n\t\t\tfor (const event of depBatch(ctx, 0) ?? []) {\n\t\t\t\tconst typed = event as RateLimitEvent<T>;\n\t\t\t\tif (typed.kind === \"allowed\") ctx.down([[\"DATA\", typed.value]]);\n\t\t\t}\n\t\t},\n\t\t{ name: `${name}/allowed`, factory: \"rateLimitAllowed\" },\n\t);\n\tconst dropped = graph.node<T>(\n\t\t[events],\n\t\t(ctx) => {\n\t\t\tfor (const event of depBatch(ctx, 0) ?? []) {\n\t\t\t\tconst typed = event as RateLimitEvent<T>;\n\t\t\t\tif (typed.kind === \"dropped\") ctx.down([[\"DATA\", typed.value]]);\n\t\t\t}\n\t\t},\n\t\t{ name: `${name}/dropped`, factory: \"rateLimitDropped\" },\n\t);\n\tconst status = graph.node<RateLimitStatus>(\n\t\t[events],\n\t\t(ctx) => {\n\t\t\tfor (const event of depBatch(ctx, 0) ?? []) {\n\t\t\t\tctx.down([[\"DATA\", (event as RateLimitEvent<T>).status]]);\n\t\t\t}\n\t\t},\n\t\t{ name: `${name}/status`, factory: \"rateLimitStatus\" },\n\t);\n\treturn { allowed, dropped, status };\n}\n\nexport function timeoutBundle<T>(\n\tgraph: Graph,\n\tsource: Node<T>,\n\tms: number,\n\topts: { name?: string } = {},\n): TimeoutBundle<T> {\n\tconst name = opts.name ?? \"timeout\";\n\tconst node = timeoutOperator(source, ms);\n\tconst status = graph.node<\"running\" | \"completed\" | \"errored\">(\n\t\t[node],\n\t\t(ctx) => {\n\t\t\tconst terminal = ctx.terminal[0];\n\t\t\tif (terminal === true) ctx.down([[\"DATA\", \"completed\"]]);\n\t\t\telse if (terminal !== false && terminal !== undefined) ctx.down([[\"DATA\", \"errored\"]]);\n\t\t\telse if ((depBatch(ctx, 0) ?? []).length > 0) ctx.down([[\"DATA\", \"running\"]]);\n\t\t},\n\t\t{ name: `${name}/status`, factory: \"timeoutStatus\" },\n\t);\n\tconst errors = graph.node<unknown>(\n\t\t[node],\n\t\t(ctx) => {\n\t\t\tconst terminal = ctx.terminal[0];\n\t\t\tif (terminal !== true && terminal !== false && terminal !== undefined) {\n\t\t\t\tctx.down([[\"DATA\", terminal]]);\n\t\t\t}\n\t\t},\n\t\t{ name: `${name}/errors`, factory: \"timeoutErrors\" },\n\t);\n\treturn { node, status, errors };\n}\n\nexport function constantBackoff(delayMs: number): BackoffPolicy {\n\treturn { kind: \"constant\", delayMs };\n}\n","import type { DataIssue } from \"../data/index.js\";\nimport type { Graph } from \"../graph/graph.js\";\nimport type { Node } from \"../node/node.js\";\nimport {\n\tcanonicalPublicSourceRefs,\n\tdataIssue,\n\tforEachDepBatch,\n\tprojectRuntimeFact,\n\tref,\n\tsanitizeGraphVisibleRecord,\n\tstableJsonStringify,\n\tuniqueSourceRefs,\n} from \"./agent-runtime-common.js\";\nimport type { AgentRuntimeAuditRecord } from \"./agent-runtime-types-agent.js\";\nimport type { SourceRef } from \"./agent-runtime-types-core.js\";\n\nexport interface ScheduledReadinessRequested {\n\treadonly kind: \"scheduled-readiness-requested\";\n\treadonly scheduleId: string;\n\treadonly subjectRefs: readonly SourceRef[];\n\treadonly readyAtMs: number;\n\treadonly deadlineMs?: number;\n\treadonly reason?: string;\n\treadonly policyRefs?: readonly SourceRef[];\n\treadonly sourceRefs?: readonly SourceRef[];\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport interface ScheduledReadinessClock {\n\treadonly kind: \"scheduled-readiness-clock\";\n\treadonly clockId: string;\n\treadonly nowMs: number;\n\treadonly sourceRefs?: readonly SourceRef[];\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport interface ScheduledReadinessPending {\n\treadonly kind: \"scheduled-readiness-pending\";\n\treadonly scheduleId: string;\n\treadonly subjectRefs: readonly SourceRef[];\n\treadonly readyAtMs: number;\n\treadonly deadlineMs?: number;\n\treadonly nowMs?: number;\n\treadonly sourceRefs?: readonly SourceRef[];\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport interface ScheduledReadinessReady {\n\treadonly kind: \"scheduled-readiness-ready\";\n\treadonly scheduleId: string;\n\treadonly subjectRefs: readonly SourceRef[];\n\treadonly readyAtMs: number;\n\treadonly deadlineMs?: number;\n\treadonly nowMs: number;\n\treadonly sourceRefs?: readonly SourceRef[];\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport interface ScheduledReadinessOverdue {\n\treadonly kind: \"scheduled-readiness-overdue\";\n\treadonly scheduleId: string;\n\treadonly subjectRefs: readonly SourceRef[];\n\treadonly readyAtMs: number;\n\treadonly deadlineMs: number;\n\treadonly nowMs: number;\n\treadonly sourceRefs?: readonly SourceRef[];\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport type ScheduledReadinessStatusState = \"pending\" | \"ready\" | \"overdue\" | \"issue\";\n\nexport interface ScheduledReadinessStatus {\n\treadonly kind: \"scheduled-readiness-status\";\n\treadonly statusId: string;\n\treadonly scheduleId: string;\n\treadonly state: ScheduledReadinessStatusState;\n\treadonly subjectRefs?: readonly SourceRef[];\n\treadonly readyAtMs?: number;\n\treadonly deadlineMs?: number;\n\treadonly nowMs?: number;\n\treadonly sourceRefs?: readonly SourceRef[];\n\treadonly issueCodes?: readonly string[];\n\treadonly metadata?: Record<string, unknown>;\n}\n\nexport interface ScheduledReadinessViews {\n\treadonly schedulesById: ReadonlyMap<string, ScheduledReadinessRequested>;\n\treadonly pendingById: ReadonlyMap<string, ScheduledReadinessPending>;\n\treadonly readyById: ReadonlyMap<string, ScheduledReadinessReady>;\n\treadonly overdueById: ReadonlyMap<string, ScheduledReadinessOverdue>;\n\treadonly statusById: ReadonlyMap<string, ScheduledReadinessStatus>;\n\treadonly nowMs?: number;\n}\n\nexport interface ScheduledReadinessBundle {\n\treadonly pending: Node<ScheduledReadinessPending>;\n\treadonly ready: Node<ScheduledReadinessReady>;\n\treadonly overdue: Node<ScheduledReadinessOverdue>;\n\treadonly status: Node<ScheduledReadinessStatus>;\n\treadonly issues: Node<DataIssue>;\n\treadonly audit: Node<AgentRuntimeAuditRecord>;\n\treadonly views: Node<ScheduledReadinessViews>;\n}\n\nexport function scheduledReadinessProjector(\n\tgraph: Graph,\n\topts: {\n\t\treadonly name?: string;\n\t\treadonly schedules: readonly Node<ScheduledReadinessRequested>[];\n\t\treadonly clocks?: readonly Node<ScheduledReadinessClock>[];\n\t},\n): ScheduledReadinessBundle {\n\tconst name = opts.name ?? \"scheduledReadiness\";\n\tconst clockDeps = opts.clocks ?? [];\n\tconst runtime = graph.node<ScheduledReadinessFact>(\n\t\t[...opts.schedules, ...clockDeps],\n\t\t(ctx) => {\n\t\t\tconst state = ctx.state.get<ScheduledReadinessProjectorState>() ?? initialState();\n\t\t\tforEachDepBatch(ctx, 0, opts.schedules.length, (raw) => {\n\t\t\t\tconst retained = sanitizeSchedule(raw);\n\t\t\t\tif (retained.ok) {\n\t\t\t\t\tconst existing = state.schedules.get(retained.schedule.scheduleId);\n\t\t\t\t\tif (existing === undefined) {\n\t\t\t\t\t\tstate.schedules.set(retained.schedule.scheduleId, retained.schedule);\n\t\t\t\t\t} else if (scheduleIdentity(existing) !== scheduleIdentity(retained.schedule)) {\n\t\t\t\t\t\tconst issue = dataIssue(\n\t\t\t\t\t\t\t\"scheduled-readiness-schedule-conflict\",\n\t\t\t\t\t\t\t\"Scheduled readiness scheduleId was replayed with conflicting schedule material; the first valid schedule was retained.\",\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tsubjectId: retained.schedule.scheduleId,\n\t\t\t\t\t\t\t\trefs: scheduleSourceRefs(retained.schedule, state.clockSourceRefs),\n\t\t\t\t\t\t\t\tdetails: {\n\t\t\t\t\t\t\t\t\texistingReadyAtMs: readinessMs(existing),\n\t\t\t\t\t\t\t\t\tincomingReadyAtMs: readinessMs(retained.schedule),\n\t\t\t\t\t\t\t\t\texistingDeadlineMs: existing.deadlineMs,\n\t\t\t\t\t\t\t\t\tincomingDeadlineMs: retained.schedule.deadlineMs,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t\temitIssue(ctx, state, issue);\n\t\t\t\t\t\temitStatus(ctx, state, {\n\t\t\t\t\t\t\tkind: \"scheduled-readiness-status\",\n\t\t\t\t\t\t\tstatusId: `${retained.schedule.scheduleId}:scheduled-readiness-status:issue`,\n\t\t\t\t\t\t\tscheduleId: retained.schedule.scheduleId,\n\t\t\t\t\t\t\tstate: \"issue\",\n\t\t\t\t\t\t\tsubjectRefs: scheduleSubjectRefs(existing),\n\t\t\t\t\t\t\treadyAtMs: readinessMs(existing),\n\t\t\t\t\t\t\t...(existing.deadlineMs === undefined ? {} : { deadlineMs: existing.deadlineMs }),\n\t\t\t\t\t\t\tnowMs: state.nowMs,\n\t\t\t\t\t\t\tsourceRefs: scheduleSourceRefs(existing, state.clockSourceRefs),\n\t\t\t\t\t\t\tissueCodes: [issue.code],\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\temitIssue(ctx, state, retained.issue);\n\t\t\t\t\temitStatus(ctx, state, {\n\t\t\t\t\t\tkind: \"scheduled-readiness-status\",\n\t\t\t\t\t\tstatusId: `${retained.scheduleId}:scheduled-readiness-status:issue`,\n\t\t\t\t\t\tscheduleId: retained.scheduleId,\n\t\t\t\t\t\tstate: \"issue\",\n\t\t\t\t\t\tsourceRefs: retained.sourceRefs,\n\t\t\t\t\t\tissueCodes: [retained.issue.code],\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t\tforEachDepBatch(ctx, opts.schedules.length, clockDeps.length, (raw) => {\n\t\t\t\tconst clock = sanitizeClock(raw);\n\t\t\t\tif (clock.ok) {\n\t\t\t\t\tif (state.nowMs !== undefined && clock.clock.nowMs < state.nowMs) {\n\t\t\t\t\t\temitIssue(\n\t\t\t\t\t\t\tctx,\n\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\tdataIssue(\n\t\t\t\t\t\t\t\t\"scheduled-readiness-clock-rollback\",\n\t\t\t\t\t\t\t\t\"Scheduled readiness clock facts must be monotonic; rollback was ignored.\",\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tsubjectId: clock.clock.clockId,\n\t\t\t\t\t\t\t\t\trefs: clock.clock.sourceRefs,\n\t\t\t\t\t\t\t\t\tseverity: \"warning\",\n\t\t\t\t\t\t\t\t\tdetails: { nowMs: clock.clock.nowMs, previousNowMs: state.nowMs },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tstate.nowMs = clock.clock.nowMs;\n\t\t\t\t\tstate.clockSourceRefs = clock.clock.sourceRefs;\n\t\t\t\t} else {\n\t\t\t\t\temitIssue(ctx, state, clock.issue);\n\t\t\t\t}\n\t\t\t});\n\t\t\tevaluateSchedules(ctx, state);\n\t\t\tctx.down([[\"DATA\", { kind: \"views\", views: buildViews(state) }]]);\n\t\t\tctx.state.set(state);\n\t\t},\n\t\t{ name: `${name}/runtime`, factory: \"scheduledReadinessProjector\", partial: true },\n\t);\n\treturn {\n\t\tpending: projectRuntimeFact(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/pending`,\n\t\t\t\"scheduledReadinessPending\",\n\t\t\t(fact) => (fact.kind === \"pending\" ? fact.pending : undefined),\n\t\t),\n\t\tready: projectRuntimeFact(graph, runtime, `${name}/ready`, \"scheduledReadinessReady\", (fact) =>\n\t\t\tfact.kind === \"ready\" ? fact.ready : undefined,\n\t\t),\n\t\toverdue: projectRuntimeFact(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/overdue`,\n\t\t\t\"scheduledReadinessOverdue\",\n\t\t\t(fact) => (fact.kind === \"overdue\" ? fact.overdue : undefined),\n\t\t),\n\t\tstatus: projectRuntimeFact(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/status`,\n\t\t\t\"scheduledReadinessStatus\",\n\t\t\t(fact) => (fact.kind === \"status\" ? fact.status : undefined),\n\t\t),\n\t\tissues: projectRuntimeFact(\n\t\t\tgraph,\n\t\t\truntime,\n\t\t\t`${name}/issues`,\n\t\t\t\"scheduledReadinessIssues\",\n\t\t\t(fact) => (fact.kind === \"issue\" ? fact.issue : undefined),\n\t\t),\n\t\taudit: projectRuntimeFact(graph, runtime, `${name}/audit`, \"scheduledReadinessAudit\", (fact) =>\n\t\t\tfact.kind === \"audit\" ? fact.audit : undefined,\n\t\t),\n\t\tviews: projectRuntimeFact(graph, runtime, `${name}/views`, \"scheduledReadinessViews\", (fact) =>\n\t\t\tfact.kind === \"views\" ? fact.views : undefined,\n\t\t),\n\t};\n}\n\ntype ScheduledReadinessFact =\n\t| { readonly kind: \"pending\"; readonly pending: ScheduledReadinessPending }\n\t| { readonly kind: \"ready\"; readonly ready: ScheduledReadinessReady }\n\t| { readonly kind: \"overdue\"; readonly overdue: ScheduledReadinessOverdue }\n\t| { readonly kind: \"status\"; readonly status: ScheduledReadinessStatus }\n\t| { readonly kind: \"issue\"; readonly issue: DataIssue }\n\t| { readonly kind: \"audit\"; readonly audit: AgentRuntimeAuditRecord }\n\t| { readonly kind: \"views\"; readonly views: ScheduledReadinessViews };\n\ninterface ScheduledReadinessProjectorState {\n\tschedules: Map<string, ScheduledReadinessRequested>;\n\tpendingById: Map<string, ScheduledReadinessPending>;\n\treadyById: Map<string, ScheduledReadinessReady>;\n\toverdueById: Map<string, ScheduledReadinessOverdue>;\n\tstatusById: Map<string, ScheduledReadinessStatus>;\n\temittedKeys: Set<string>;\n\tissueKeys: Set<string>;\n\tauditSeq: number;\n\tnowMs: number | undefined;\n\tclockSourceRefs: readonly SourceRef[] | undefined;\n}\n\nfunction initialState(): ScheduledReadinessProjectorState {\n\treturn {\n\t\tschedules: new Map(),\n\t\tpendingById: new Map(),\n\t\treadyById: new Map(),\n\t\toverdueById: new Map(),\n\t\tstatusById: new Map(),\n\t\temittedKeys: new Set(),\n\t\tissueKeys: new Set(),\n\t\tauditSeq: 0,\n\t\tnowMs: undefined,\n\t\tclockSourceRefs: undefined,\n\t};\n}\n\nfunction evaluateSchedules(\n\tctx: { down: (msgs: readonly [\"DATA\", ScheduledReadinessFact][]) => void },\n\tstate: ScheduledReadinessProjectorState,\n): void {\n\tfor (const schedule of state.schedules.values()) {\n\t\tconst readyAtMs = readinessMs(schedule);\n\t\tconst subjectRefs = scheduleSubjectRefs(schedule);\n\t\tconst sourceRefs = scheduleSourceRefs(schedule, state.clockSourceRefs);\n\t\tconst baseMetadata = sanitizeScheduledReadinessMetadata({\n\t\t\t...(schedule.reason === undefined ? {} : { reason: schedule.reason }),\n\t\t\t...(schedule.metadata ?? {}),\n\t\t});\n\t\tif (state.nowMs === undefined || state.nowMs < readyAtMs) {\n\t\t\tconst pending = Object.freeze({\n\t\t\t\tkind: \"scheduled-readiness-pending\",\n\t\t\t\tscheduleId: schedule.scheduleId,\n\t\t\t\tsubjectRefs,\n\t\t\t\treadyAtMs,\n\t\t\t\t...(schedule.deadlineMs === undefined ? {} : { deadlineMs: schedule.deadlineMs }),\n\t\t\t\t...(state.nowMs === undefined ? {} : { nowMs: state.nowMs }),\n\t\t\t\tsourceRefs,\n\t\t\t\t...(baseMetadata === undefined ? {} : { metadata: baseMetadata }),\n\t\t\t} satisfies ScheduledReadinessPending);\n\t\t\temitPending(ctx, state, pending);\n\t\t\temitStatus(\n\t\t\t\tctx,\n\t\t\t\tstate,\n\t\t\t\tstatusFor(schedule, \"pending\", {\n\t\t\t\t\tsubjectRefs,\n\t\t\t\t\treadyAtMs,\n\t\t\t\t\tsourceRefs,\n\t\t\t\t\tnowMs: state.nowMs,\n\t\t\t\t}),\n\t\t\t);\n\t\t\tcontinue;\n\t\t}\n\t\tconst ready = Object.freeze({\n\t\t\tkind: \"scheduled-readiness-ready\",\n\t\t\tscheduleId: schedule.scheduleId,\n\t\t\tsubjectRefs,\n\t\t\treadyAtMs,\n\t\t\t...(schedule.deadlineMs === undefined ? {} : { deadlineMs: schedule.deadlineMs }),\n\t\t\tnowMs: state.nowMs,\n\t\t\tsourceRefs,\n\t\t\t...(baseMetadata === undefined ? {} : { metadata: baseMetadata }),\n\t\t} satisfies ScheduledReadinessReady);\n\t\temitReady(ctx, state, ready);\n\t\temitStatus(\n\t\t\tctx,\n\t\t\tstate,\n\t\t\tstatusFor(schedule, \"ready\", {\n\t\t\t\tsubjectRefs,\n\t\t\t\treadyAtMs,\n\t\t\t\tsourceRefs,\n\t\t\t\tnowMs: state.nowMs,\n\t\t\t}),\n\t\t);\n\t\tif (schedule.deadlineMs !== undefined && state.nowMs > schedule.deadlineMs) {\n\t\t\tconst overdue = Object.freeze({\n\t\t\t\tkind: \"scheduled-readiness-overdue\",\n\t\t\t\tscheduleId: schedule.scheduleId,\n\t\t\t\tsubjectRefs,\n\t\t\t\treadyAtMs,\n\t\t\t\tdeadlineMs: schedule.deadlineMs,\n\t\t\t\tnowMs: state.nowMs,\n\t\t\t\tsourceRefs,\n\t\t\t\t...(baseMetadata === undefined ? {} : { metadata: baseMetadata }),\n\t\t\t} satisfies ScheduledReadinessOverdue);\n\t\t\temitOverdue(ctx, state, overdue);\n\t\t\temitStatus(\n\t\t\t\tctx,\n\t\t\t\tstate,\n\t\t\t\tstatusFor(schedule, \"overdue\", {\n\t\t\t\t\tsubjectRefs,\n\t\t\t\t\treadyAtMs,\n\t\t\t\t\tsourceRefs,\n\t\t\t\t\tnowMs: state.nowMs,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t}\n}\n\nfunction sanitizeSchedule(raw: unknown):\n\t| { readonly ok: true; readonly schedule: ScheduledReadinessRequested }\n\t| {\n\t\t\treadonly ok: false;\n\t\t\treadonly scheduleId: string;\n\t\t\treadonly issue: DataIssue;\n\t\t\treadonly sourceRefs?: readonly SourceRef[];\n\t } {\n\tif (!isPlainRecord(raw)) {\n\t\treturn {\n\t\t\tok: false,\n\t\t\tscheduleId: \"unknown-scheduled-readiness\",\n\t\t\tsourceRefs: [],\n\t\t\tissue: dataIssue(\n\t\t\t\t\"scheduled-readiness-malformed-schedule\",\n\t\t\t\t\"Scheduled readiness requires a stable scheduleId, subjectRefs array, and finite readyAtMs.\",\n\t\t\t\t{ subjectId: \"unknown-scheduled-readiness\", refs: [] },\n\t\t\t),\n\t\t};\n\t}\n\tconst scheduleId =\n\t\ttypeof raw.scheduleId === \"string\" && raw.scheduleId.length > 0\n\t\t\t? raw.scheduleId\n\t\t\t: \"unknown-scheduled-readiness\";\n\tconst refs = sourceRefArray(raw.sourceRefs);\n\tconst hasDeadlineMs = Object.hasOwn(raw, \"deadlineMs\");\n\tconst readyAtMs = finiteNumberOrUndefined(raw.readyAtMs);\n\tconst deadlineMs = finiteNumberOrUndefined(raw.deadlineMs);\n\tif (\n\t\traw.kind !== \"scheduled-readiness-requested\" ||\n\t\ttypeof raw.scheduleId !== \"string\" ||\n\t\traw.scheduleId.length === 0 ||\n\t\treadyAtMs === undefined ||\n\t\t(hasDeadlineMs && deadlineMs === undefined) ||\n\t\traw.subjectRef !== undefined ||\n\t\t!Array.isArray(raw.subjectRefs) ||\n\t\traw.notBeforeMs !== undefined ||\n\t\t(raw.policyRefs !== undefined && !Array.isArray(raw.policyRefs)) ||\n\t\t(raw.sourceRefs !== undefined && !Array.isArray(raw.sourceRefs))\n\t) {\n\t\treturn {\n\t\t\tok: false,\n\t\t\tscheduleId,\n\t\t\tsourceRefs: refs,\n\t\t\tissue: dataIssue(\n\t\t\t\t\"scheduled-readiness-malformed-schedule\",\n\t\t\t\t\"Scheduled readiness requires a stable scheduleId, subjectRefs array, and finite readyAtMs.\",\n\t\t\t\t{ subjectId: scheduleId, refs },\n\t\t\t),\n\t\t};\n\t}\n\tconst subjectRefs = sourceRefArray(raw.subjectRefs);\n\tconst policyRefs = sourceRefArray(raw.policyRefs);\n\tconst metadata = sanitizeScheduledReadinessMetadata(\n\t\tisPlainRecord(raw.metadata) ? raw.metadata : undefined,\n\t);\n\treturn {\n\t\tok: true,\n\t\tschedule: Object.freeze({\n\t\t\tkind: \"scheduled-readiness-requested\",\n\t\t\tscheduleId: raw.scheduleId,\n\t\t\tsubjectRefs,\n\t\t\treadyAtMs,\n\t\t\t...(deadlineMs === undefined ? {} : { deadlineMs }),\n\t\t\t...(typeof raw.reason === \"string\" ? { reason: raw.reason } : {}),\n\t\t\t...(policyRefs.length === 0 ? {} : { policyRefs }),\n\t\t\tsourceRefs: refs,\n\t\t\t...(metadata === undefined ? {} : { metadata }),\n\t\t} satisfies ScheduledReadinessRequested),\n\t};\n}\n\nfunction sanitizeClock(\n\traw: unknown,\n):\n\t| { readonly ok: true; readonly clock: ScheduledReadinessClock }\n\t| { readonly ok: false; readonly issue: DataIssue } {\n\tif (!isPlainRecord(raw)) {\n\t\treturn {\n\t\t\tok: false,\n\t\t\tissue: dataIssue(\n\t\t\t\t\"scheduled-readiness-malformed-clock\",\n\t\t\t\t\"Scheduled readiness clock facts require a stable clockId and finite nowMs.\",\n\t\t\t\t{ subjectId: \"unknown-scheduled-readiness-clock\", refs: [] },\n\t\t\t),\n\t\t};\n\t}\n\tconst refs = sourceRefArray(raw.sourceRefs);\n\tconst nowMs = finiteNumberOrUndefined(raw.nowMs);\n\tif (\n\t\traw.kind !== \"scheduled-readiness-clock\" ||\n\t\ttypeof raw.clockId !== \"string\" ||\n\t\traw.clockId.length === 0 ||\n\t\tnowMs === undefined ||\n\t\t(raw.sourceRefs !== undefined && !Array.isArray(raw.sourceRefs))\n\t) {\n\t\tconst clockSubjectId =\n\t\t\ttypeof raw.clockId === \"string\" && raw.clockId.length > 0\n\t\t\t\t? raw.clockId\n\t\t\t\t: \"unknown-scheduled-readiness-clock\";\n\t\treturn {\n\t\t\tok: false,\n\t\t\tissue: dataIssue(\n\t\t\t\t\"scheduled-readiness-malformed-clock\",\n\t\t\t\t\"Scheduled readiness clock facts require a stable clockId and finite nowMs.\",\n\t\t\t\t{ subjectId: clockSubjectId, refs },\n\t\t\t),\n\t\t};\n\t}\n\tconst metadata = sanitizeScheduledReadinessMetadata(\n\t\tisPlainRecord(raw.metadata) ? raw.metadata : undefined,\n\t);\n\treturn {\n\t\tok: true,\n\t\tclock: Object.freeze({\n\t\t\tkind: \"scheduled-readiness-clock\",\n\t\t\tclockId: raw.clockId,\n\t\t\tnowMs,\n\t\t\tsourceRefs: refs,\n\t\t\t...(metadata === undefined ? {} : { metadata }),\n\t\t} satisfies ScheduledReadinessClock),\n\t};\n}\n\nfunction emitPending(\n\tctx: { down: (msgs: readonly [\"DATA\", ScheduledReadinessFact][]) => void },\n\tstate: ScheduledReadinessProjectorState,\n\tpending: ScheduledReadinessPending,\n): void {\n\tstate.pendingById.set(pending.scheduleId, pending);\n\tconst key = `pending:${pending.scheduleId}`;\n\tif (state.emittedKeys.has(key)) return;\n\tstate.emittedKeys.add(key);\n\tctx.down([[\"DATA\", { kind: \"pending\", pending }]]);\n}\n\nfunction emitReady(\n\tctx: { down: (msgs: readonly [\"DATA\", ScheduledReadinessFact][]) => void },\n\tstate: ScheduledReadinessProjectorState,\n\tready: ScheduledReadinessReady,\n): void {\n\tconst key = `ready:${ready.scheduleId}`;\n\tif (state.emittedKeys.has(key)) return;\n\tstate.emittedKeys.add(key);\n\tstate.readyById.set(ready.scheduleId, ready);\n\tstate.pendingById.delete(ready.scheduleId);\n\temitAudit(ctx, state, \"scheduled-readiness-ready\", {\n\t\tsubjectId: ready.scheduleId,\n\t\tsourceRefs: ready.sourceRefs,\n\t\tmetadata: { nowMs: ready.nowMs, readyAtMs: ready.readyAtMs },\n\t});\n\tctx.down([[\"DATA\", { kind: \"ready\", ready }]]);\n}\n\nfunction emitOverdue(\n\tctx: { down: (msgs: readonly [\"DATA\", ScheduledReadinessFact][]) => void },\n\tstate: ScheduledReadinessProjectorState,\n\toverdue: ScheduledReadinessOverdue,\n): void {\n\tconst key = `overdue:${overdue.scheduleId}`;\n\tif (state.emittedKeys.has(key)) return;\n\tstate.emittedKeys.add(key);\n\tstate.overdueById.set(overdue.scheduleId, overdue);\n\temitAudit(ctx, state, \"scheduled-readiness-overdue\", {\n\t\tsubjectId: overdue.scheduleId,\n\t\tsourceRefs: overdue.sourceRefs,\n\t\tmetadata: {\n\t\t\tnowMs: overdue.nowMs,\n\t\t\treadyAtMs: overdue.readyAtMs,\n\t\t\tdeadlineMs: overdue.deadlineMs,\n\t\t},\n\t});\n\tctx.down([[\"DATA\", { kind: \"overdue\", overdue }]]);\n}\n\nfunction emitStatus(\n\tctx: { down: (msgs: readonly [\"DATA\", ScheduledReadinessFact][]) => void },\n\tstate: ScheduledReadinessProjectorState,\n\tstatus: ScheduledReadinessStatus,\n): void {\n\tstate.statusById.set(status.scheduleId, status);\n\tconst key = `status:${stableJsonStringify(status)}`;\n\tif (state.emittedKeys.has(key)) return;\n\tstate.emittedKeys.add(key);\n\tctx.down([[\"DATA\", { kind: \"status\", status }]]);\n}\n\nfunction emitIssue(\n\tctx: { down: (msgs: readonly [\"DATA\", ScheduledReadinessFact][]) => void },\n\tstate: ScheduledReadinessProjectorState,\n\tissue: DataIssue,\n): void {\n\tconst key = `${issue.code}:${issue.subjectId ?? \"\"}:${JSON.stringify(issue.details ?? {})}`;\n\tif (state.issueKeys.has(key)) return;\n\tstate.issueKeys.add(key);\n\tctx.down([[\"DATA\", { kind: \"issue\", issue }]]);\n}\n\nfunction emitAudit(\n\tctx: { down: (msgs: readonly [\"DATA\", ScheduledReadinessFact][]) => void },\n\tstate: ScheduledReadinessProjectorState,\n\tkind: string,\n\topts: {\n\t\treadonly subjectId?: string;\n\t\treadonly sourceRefs?: readonly SourceRef[];\n\t\treadonly metadata?: Record<string, unknown>;\n\t} = {},\n): void {\n\tstate.auditSeq += 1;\n\tconst metadata = sanitizeGraphVisibleRecord(opts.metadata);\n\tctx.down([\n\t\t[\n\t\t\t\"DATA\",\n\t\t\t{\n\t\t\t\tkind: \"audit\",\n\t\t\t\taudit: Object.freeze({\n\t\t\t\t\tid: `scheduled-readiness-audit-${state.auditSeq}`,\n\t\t\t\t\tkind,\n\t\t\t\t\t...(opts.subjectId === undefined ? {} : { subjectId: opts.subjectId }),\n\t\t\t\t\t...(opts.sourceRefs === undefined\n\t\t\t\t\t\t? {}\n\t\t\t\t\t\t: { sourceRefs: canonicalPublicSourceRefs(opts.sourceRefs) }),\n\t\t\t\t\t...(metadata === undefined ? {} : { metadata }),\n\t\t\t\t} satisfies AgentRuntimeAuditRecord),\n\t\t\t},\n\t\t],\n\t]);\n}\n\nfunction statusFor(\n\tschedule: ScheduledReadinessRequested,\n\tstate: ScheduledReadinessStatusState,\n\topts: {\n\t\treadonly subjectRefs: readonly SourceRef[];\n\t\treadonly readyAtMs: number;\n\t\treadonly sourceRefs: readonly SourceRef[];\n\t\treadonly nowMs?: number;\n\t},\n): ScheduledReadinessStatus {\n\tconst metadata = sanitizeGraphVisibleRecord({\n\t\t...(schedule.reason === undefined ? {} : { reason: schedule.reason }),\n\t});\n\treturn Object.freeze({\n\t\tkind: \"scheduled-readiness-status\",\n\t\tstatusId: `${schedule.scheduleId}:scheduled-readiness-status:${state}`,\n\t\tscheduleId: schedule.scheduleId,\n\t\tstate,\n\t\tsubjectRefs: opts.subjectRefs,\n\t\treadyAtMs: opts.readyAtMs,\n\t\t...(schedule.deadlineMs === undefined ? {} : { deadlineMs: schedule.deadlineMs }),\n\t\t...(opts.nowMs === undefined ? {} : { nowMs: opts.nowMs }),\n\t\tsourceRefs: opts.sourceRefs,\n\t\t...(metadata === undefined ? {} : { metadata }),\n\t} satisfies ScheduledReadinessStatus);\n}\n\nfunction readinessMs(schedule: ScheduledReadinessRequested): number {\n\treturn schedule.readyAtMs;\n}\n\nfunction scheduleIdentity(schedule: ScheduledReadinessRequested): string {\n\treturn stableJsonStringify({\n\t\tscheduleId: schedule.scheduleId,\n\t\tsubjectRefs: schedule.subjectRefs,\n\t\treadyAtMs: schedule.readyAtMs,\n\t\tdeadlineMs: schedule.deadlineMs,\n\t\treason: schedule.reason,\n\t\tpolicyRefs: schedule.policyRefs,\n\t\tsourceRefs: schedule.sourceRefs,\n\t\tmetadata: schedule.metadata,\n\t});\n}\n\nfunction scheduleSubjectRefs(schedule: ScheduledReadinessRequested): readonly SourceRef[] {\n\treturn canonicalPublicSourceRefs(uniqueSourceRefs(schedule.subjectRefs));\n}\n\nfunction scheduleSourceRefs(\n\tschedule: ScheduledReadinessRequested,\n\tclockSourceRefs: readonly SourceRef[] | undefined,\n): readonly SourceRef[] {\n\treturn canonicalPublicSourceRefs(\n\t\tuniqueSourceRefs([\n\t\t\tref(\"scheduled-readiness\", schedule.scheduleId),\n\t\t\t...(schedule.sourceRefs ?? []),\n\t\t\t...(schedule.policyRefs ?? []),\n\t\t\t...(clockSourceRefs ?? []),\n\t\t]),\n\t);\n}\n\nfunction sanitizeScheduledReadinessMetadata(\n\tvalue: Record<string, unknown> | undefined,\n): Record<string, unknown> | undefined {\n\tconst filtered = omitRuntimeMetadata(value);\n\treturn sanitizeGraphVisibleRecord(filtered);\n}\n\nfunction omitRuntimeMetadata(value: unknown): Record<string, unknown> | undefined {\n\tif (!isPlainRecord(value)) return undefined;\n\tconst out: Record<string, unknown> = {};\n\tfor (const [key, child] of Object.entries(value)) {\n\t\tif (isRuntimeMetadataKey(key)) continue;\n\t\tconst filteredChild = Array.isArray(child)\n\t\t\t? child.map((entry) => (isPlainRecord(entry) ? omitRuntimeMetadata(entry) : entry))\n\t\t\t: isPlainRecord(child)\n\t\t\t\t? omitRuntimeMetadata(child)\n\t\t\t\t: child;\n\t\tif (filteredChild !== undefined) out[key] = filteredChild;\n\t}\n\treturn Object.keys(out).length === 0 ? undefined : out;\n}\n\nfunction isPlainRecord(value: unknown): value is Record<string, unknown> {\n\treturn value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction finiteNumberOrUndefined(value: unknown): number | undefined {\n\treturn typeof value === \"number\" && Number.isFinite(value) ? value : undefined;\n}\n\nfunction sourceRefArray(value: unknown): readonly SourceRef[] {\n\tif (!Array.isArray(value)) return [];\n\treturn canonicalPublicSourceRefs(\n\t\tvalue.flatMap((entry) => {\n\t\t\tconst sourceRef = sourceRefOrUndefined(entry);\n\t\t\treturn sourceRef === undefined ? [] : [sourceRef];\n\t\t}),\n\t);\n}\n\nfunction sourceRefOrUndefined(value: unknown): SourceRef | undefined {\n\tif (!isPlainRecord(value)) return undefined;\n\tif (typeof value.kind !== \"string\" || value.kind.length === 0) return undefined;\n\tif (typeof value.id !== \"string\" || value.id.length === 0) return undefined;\n\treturn isPlainRecord(value.metadata)\n\t\t? { kind: value.kind, id: value.id, metadata: value.metadata }\n\t\t: { kind: value.kind, id: value.id };\n}\n\nfunction isRuntimeMetadataKey(key: string): boolean {\n\treturn /^(apiKey|api_key|secret|client|transport|subprocess|sdk|oauth|credential|credentials|accessToken|access_token|refreshToken|refresh_token|idToken|id_token|token|password|passphrase|authorization|authHeader|auth_header|bearer|privateKey|private_key|sessionCookie|session_cookie|cookie|stdout|stderr|stack|stackTrace|stack_trace|providerRaw|provider_raw|rawResponse|raw_response|rawResponseBody|raw_response_body|diff|patch|fileContents|file_contents|binary|media)$/i.test(\n\t\tkey,\n\t);\n}\n\nfunction buildViews(state: ScheduledReadinessProjectorState): ScheduledReadinessViews {\n\treturn Object.freeze({\n\t\tschedulesById: new Map(state.schedules),\n\t\tpendingById: new Map(state.pendingById),\n\t\treadyById: new Map(state.readyById),\n\t\toverdueById: new Map(state.overdueById),\n\t\tstatusById: new Map(state.statusById),\n\t\t...(state.nowMs === undefined ? {} : { nowMs: state.nowMs }),\n\t});\n}\n"],"mappings":"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","names":["emitIssue","emitStatus","emitProposal","state","errorMessage","allowed","status","emitIssue","emitStatus","emitAudit","sourceRefOrUndefined"]}
|