deepline 0.3.461 → 0.3.463
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundling-sources/sdk/src/client-core.ts +7593 -0
- package/dist/bundling-sources/sdk/src/client.ts +8 -7366
- package/dist/bundling-sources/sdk/src/http-core.ts +1239 -0
- package/dist/bundling-sources/sdk/src/http.ts +6 -1231
- package/dist/bundling-sources/sdk/src/index.ts +4 -1
- package/dist/bundling-sources/sdk/src/play.ts +5 -5
- package/dist/bundling-sources/sdk/src/plays/client-core.ts +437 -0
- package/dist/bundling-sources/sdk/src/plays/client.ts +4 -421
- package/dist/bundling-sources/sdk/src/plays/input-example.ts +3 -4
- package/dist/bundling-sources/sdk/src/plays/play-description.ts +1 -1
- package/dist/bundling-sources/sdk/src/plays/run-request.ts +1 -1
- package/dist/bundling-sources/sdk/src/release.ts +1 -1
- package/dist/bundling-sources/sdk/src/server.ts +43 -0
- package/dist/bundling-sources/sdk/src/types.ts +15 -5
- package/dist/bundling-sources/shared_libs/integration-contracts/billing-entitlements.ts +15 -0
- package/dist/bundling-sources/shared_libs/monitors/billing/tamradar.ts +17 -17
- package/dist/bundling-sources/shared_libs/monitors/callback-security.ts +0 -307
- package/dist/bundling-sources/shared_libs/monitors/http-error-response.ts +3 -0
- package/dist/bundling-sources/shared_libs/monitors/lifecycle-notifications.ts +3 -2
- package/dist/bundling-sources/shared_libs/monitors/package.json +2 -0
- package/dist/bundling-sources/shared_libs/monitors/provider-callback-verification.ts +34 -0
- package/dist/bundling-sources/shared_libs/monitors/provider-monitor-batch-operation.ts +61 -0
- package/dist/bundling-sources/shared_libs/monitors/provider-monitor-upstream-identity.ts +122 -2
- package/dist/bundling-sources/shared_libs/monitors/signal-radars/inbound-dead-letter.ts +11 -1
- package/dist/bundling-sources/shared_libs/monitors/signal-radars/inbound-failure-codes.ts +24 -0
- package/dist/bundling-sources/shared_libs/observability/dlq.ts +32 -0
- package/dist/bundling-sources/shared_libs/observability/scheduled-jobs.json +57 -3
- package/dist/bundling-sources/shared_libs/observability/scheduled-work.ts +1 -0
- package/dist/bundling-sources/shared_libs/play-data-plane/r2.ts +66 -1
- package/dist/bundling-sources/shared_libs/play-data-plane/sheet-column-storage.ts +36 -7
- package/dist/bundling-sources/shared_libs/play-runtime/app-runtime-api.ts +250 -11
- package/dist/bundling-sources/shared_libs/play-runtime/array-input-store.ts +319 -0
- package/dist/bundling-sources/shared_libs/play-runtime/context.ts +991 -359
- package/dist/bundling-sources/shared_libs/play-runtime/ctx-types.ts +17 -0
- package/dist/bundling-sources/shared_libs/play-runtime/daytona-sandbox-janitor.ts +13 -0
- package/dist/bundling-sources/shared_libs/play-runtime/daytona-sandbox-reaper.ts +110 -0
- package/dist/bundling-sources/shared_libs/play-runtime/deployment/fly-machines.ts +155 -6
- package/dist/bundling-sources/shared_libs/play-runtime/deployment/fly-registry.ts +110 -6
- package/dist/bundling-sources/shared_libs/play-runtime/durable-receipt-execution.ts +127 -13
- package/dist/bundling-sources/shared_libs/play-runtime/execution-capabilities.ts +14 -1
- package/dist/bundling-sources/shared_libs/play-runtime/fixture-behavior.ts +57 -1
- package/dist/bundling-sources/shared_libs/play-runtime/free-company-lookup-batching.ts +218 -0
- package/dist/bundling-sources/shared_libs/play-runtime/gateway-postgres-admission.ts +42 -5
- package/dist/bundling-sources/shared_libs/play-runtime/governor/app-runtime-budget-state-backend.ts +6 -1
- package/dist/bundling-sources/shared_libs/play-runtime/governor/app-runtime-rate-state-backend.ts +92 -31
- package/dist/bundling-sources/shared_libs/play-runtime/governor/block-reserving-budget-state-backend.ts +69 -14
- package/dist/bundling-sources/shared_libs/play-runtime/governor/governor.ts +93 -23
- package/dist/bundling-sources/shared_libs/play-runtime/governor/in-memory-rate-state-backend.ts +15 -4
- package/dist/bundling-sources/shared_libs/play-runtime/governor/policy.ts +22 -18
- package/dist/bundling-sources/shared_libs/play-runtime/governor/rate-state-backend.ts +5 -0
- package/dist/bundling-sources/shared_libs/play-runtime/launch-identity.ts +2 -0
- package/dist/bundling-sources/shared_libs/play-runtime/map-memory-limits.ts +190 -14
- package/dist/bundling-sources/shared_libs/play-runtime/memory-ledger.ts +131 -0
- package/dist/bundling-sources/shared_libs/play-runtime/modal-runtime-config.ts +77 -2
- package/dist/bundling-sources/shared_libs/play-runtime/output-size-limits.ts +271 -2
- package/dist/bundling-sources/shared_libs/play-runtime/play-run-recovery-policy.ts +51 -0
- package/dist/bundling-sources/shared_libs/play-runtime/play-runs/sandbox-cleanup/contracts.ts +2 -0
- package/dist/bundling-sources/shared_libs/play-runtime/play-runs/sandbox-cleanup/job.ts +27 -1
- package/dist/bundling-sources/shared_libs/play-runtime/play-runtime-batching-registry.ts +2 -0
- package/dist/bundling-sources/shared_libs/play-runtime/protocol.ts +3 -0
- package/dist/bundling-sources/shared_libs/play-runtime/provider-text-for-log.ts +63 -0
- package/dist/bundling-sources/shared_libs/play-runtime/resource-governor.ts +19 -0
- package/dist/bundling-sources/shared_libs/play-runtime/run-ledger-event-transport.ts +112 -16
- package/dist/bundling-sources/shared_libs/play-runtime/run-ledger.ts +104 -2
- package/dist/bundling-sources/shared_libs/play-runtime/runner-app/index.ts +265 -151
- package/dist/bundling-sources/shared_libs/play-runtime/runner-app/runtime-gateway-transport.ts +17 -0
- package/dist/bundling-sources/shared_libs/play-runtime/runner-app/runtime-progress-push.ts +35 -14
- package/dist/bundling-sources/shared_libs/play-runtime/runner-app/runtime-sheet-persistence-retry.ts +12 -1
- package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/backends/daytona-control-transport.ts +4 -0
- package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/backends/daytona-labels.ts +36 -0
- package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/backends/daytona-launch-transport.ts +136 -70
- package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/backends/daytona-lifecycle.ts +237 -36
- package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/backends/daytona-runtime-watchdog.ts +148 -4
- package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/backends/daytona-session-execution.ts +6 -0
- package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/backends/daytona.ts +285 -32
- package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/backends/modal.ts +251 -56
- package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/runtime-sandbox-reconciliation.ts +29 -4
- package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/sandbox-create-outcome.ts +27 -0
- package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/types.ts +22 -1
- package/dist/bundling-sources/shared_libs/play-runtime/runtime-api.ts +1397 -382
- package/dist/bundling-sources/shared_libs/play-runtime/runtime-array-input-receipts.ts +920 -0
- package/dist/bundling-sources/shared_libs/play-runtime/runtime-constants.ts +16 -0
- package/dist/bundling-sources/shared_libs/play-runtime/runtime-environment.ts +38 -0
- package/dist/bundling-sources/shared_libs/play-runtime/runtime-flow.ts +6 -0
- package/dist/bundling-sources/shared_libs/play-runtime/runtime-incident-drills.ts +26 -1
- package/dist/bundling-sources/shared_libs/play-runtime/runtime-operation-contract.ts +30 -0
- package/dist/bundling-sources/shared_libs/play-runtime/runtime-receipt-store-adapter.ts +14 -3
- package/dist/bundling-sources/shared_libs/play-runtime/runtime-receipt-writer.ts +31 -4
- package/dist/bundling-sources/shared_libs/play-runtime/runtime-sheet-row-transition.ts +47 -0
- package/dist/bundling-sources/shared_libs/play-runtime/sandbox-compute-usage.ts +20 -7
- package/dist/bundling-sources/shared_libs/play-runtime/sandbox-runs/contract.ts +12 -0
- package/dist/bundling-sources/shared_libs/play-runtime/sandbox-runs/index.ts +9 -0
- package/dist/bundling-sources/shared_libs/play-runtime/sandbox-runs/runner-backend-adapter.ts +10 -0
- package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backend.ts +4 -0
- package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/absurd-runtime-worker.ts +1496 -320
- package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/absurd-worker-required-env.ts +31 -1
- package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/postgres.ts +1389 -129
- package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/receipt-gateway.ts +36 -0
- package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/run-ledger-dispatch-authority.ts +4 -0
- package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/run-ledger-outbox-recovery.ts +162 -23
- package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/runtime-event-search.ts +499 -115
- package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/runtime-sandbox-capacity.ts +377 -9
- package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/runtime-sandbox-ledger-reconciliation.ts +117 -8
- package/dist/bundling-sources/shared_libs/play-runtime/secret-resolution-retry-policy.ts +25 -0
- package/dist/bundling-sources/shared_libs/play-runtime/terminal-runtime-performance.ts +391 -0
- package/dist/bundling-sources/shared_libs/play-runtime/test-runtime-seams.ts +40 -0
- package/dist/bundling-sources/shared_libs/play-runtime/tool-call/index.ts +6 -0
- package/dist/bundling-sources/shared_libs/play-runtime/tool-call/mapped-calls.ts +171 -0
- package/dist/bundling-sources/shared_libs/play-runtime/tool-call/receipt-cohort.ts +16 -1
- package/dist/bundling-sources/shared_libs/play-runtime/tool-execute-retry-policy.ts +38 -12
- package/dist/bundling-sources/shared_libs/play-runtime/tool-result.ts +33 -9
- package/dist/bundling-sources/shared_libs/play-runtime/transport-error-diagnostics.ts +28 -0
- package/dist/bundling-sources/shared_libs/play-runtime/work-receipt-storage-contract.ts +55 -5
- package/dist/bundling-sources/shared_libs/plays/authoring-contract.ts +41 -1
- package/dist/bundling-sources/shared_libs/plays/contracts.ts +4 -0
- package/dist/bundling-sources/shared_libs/plays/dataset.ts +9 -3
- package/dist/bundling-sources/shared_libs/plays/deploy/manifest-contract.ts +2 -0
- package/dist/bundling-sources/shared_libs/plays/deploy/manifest.ts +3 -2
- package/dist/bundling-sources/shared_libs/plays/deploy/project-serializer.ts +2 -2
- package/dist/bundling-sources/shared_libs/plays/run-output-summary.ts +66 -0
- package/dist/bundling-sources/shared_libs/plays/script-entry.ts +1 -1
- package/dist/bundling-sources/shared_libs/product-notifications/catalog.ts +43 -1
- package/dist/bundling-sources/shared_libs/product-notifications/content.ts +9 -0
- package/dist/bundling-sources/shared_libs/product-notifications/email.ts +91 -13
- package/dist/bundling-sources/shared_libs/product-notifications/events.ts +3 -0
- package/dist/bundling-sources/shared_libs/product-notifications/slack-delivery.ts +41 -24
- package/dist/bundling-sources/shared_libs/security/attested-client-ip.ts +91 -0
- package/dist/bundling-sources/shared_libs/security/internal-actor.ts +0 -11
- package/dist/cli/{auth-6HJXNWUG.mjs → auth-LZLBR4C3.mjs} +5 -4
- package/dist/cli/auth-XPGKBJKB.js +41 -0
- package/dist/cli/{billing-6P5HO6QG.js → billing-6TJPNJQD.js} +152 -78
- package/dist/cli/{billing-MJ42N7YF.mjs → billing-OTOP5RE4.mjs} +84 -10
- package/dist/cli/{chunk-FCAZQ7WV.js → chunk-2NISBXMN.js} +52 -50
- package/dist/cli/{chunk-PNATXKLP.js → chunk-2ZIRCBYG.js} +6 -6
- package/dist/cli/{chunk-5FDKJQZE.js → chunk-3BOIOCNX.js} +1 -1
- package/dist/cli/chunk-3BVLLJ3H.mjs +1038 -0
- package/dist/cli/{chunk-FJZILBL7.mjs → chunk-3U5EAP6E.mjs} +5 -5
- package/dist/cli/{describe-FRAVCY5F.mjs → chunk-4YZKBBLZ.mjs} +19 -36
- package/dist/cli/{chunk-QWRHGGUH.js → chunk-5DRNNC72.js} +20 -2
- package/dist/cli/{chunk-Z2GUFYT6.js → chunk-5LEAXRHV.js} +11 -11
- package/dist/cli/{chunk-5MDIZX7M.js → chunk-5LHXOIPT.js} +8 -6
- package/dist/cli/{chunk-NMJ4D2WO.js → chunk-6PMCRYDA.js} +216 -91
- package/dist/cli/{chunk-EBU7LQ64.js → chunk-6V7KVRR5.js} +3 -3
- package/dist/cli/{chunk-MGXEUZHL.mjs → chunk-7D6X7IXW.mjs} +7 -5
- package/dist/cli/{chunk-SAZFZQRI.js → chunk-7FCYPAPP.js} +2 -2
- package/dist/cli/{chunk-ACCR7POB.js → chunk-7XYDDCQ2.js} +27 -27
- package/dist/cli/{chunk-5IYOUBFZ.js → chunk-ALZBANZI.js} +28 -54
- package/dist/cli/{chunk-3DNKFH2G.mjs → chunk-BAPTQDLF.mjs} +19 -1
- package/dist/cli/chunk-BGNWI3KH.js +827 -0
- package/dist/cli/{chunk-V7REJRDZ.mjs → chunk-C25QE4CH.mjs} +1 -1
- package/dist/cli/{chunk-FGMX4HUZ.js → chunk-CBZP6J3V.js} +29 -27
- package/dist/cli/{chunk-QEYHTIV4.mjs → chunk-CTQ56DXP.mjs} +10 -1
- package/dist/cli/{chunk-IHHLTHE7.mjs → chunk-CVQ7N5CV.mjs} +267 -38
- package/dist/cli/{chunk-7DH2FD7Y.mjs → chunk-D464JW3N.mjs} +5 -85
- package/dist/cli/{chunk-MEAIOXJL.mjs → chunk-DHXCBITQ.mjs} +7 -5
- package/dist/cli/chunk-F2RHUPVH.mjs +827 -0
- package/dist/cli/chunk-F6QV42MC.mjs +91 -0
- package/dist/cli/{chunk-OZBWRICM.js → chunk-FK2HNDCN.js} +2 -2
- package/dist/cli/{chunk-BGY2PLP7.mjs → chunk-GUT7CLOL.mjs} +23 -49
- package/dist/cli/{chunk-RY4IVOU3.mjs → chunk-I624J4H5.mjs} +16 -806
- package/dist/cli/{chunk-Z2XUZC34.js → chunk-IAYSWZDJ.js} +188 -76
- package/dist/cli/{chunk-FGLKOWSC.mjs → chunk-IKWRUNAP.mjs} +1 -1
- package/dist/cli/{chunk-KCCOQ5G5.js → chunk-JVDKZJUH.js} +511 -282
- package/dist/cli/{chunk-HDFRJ4IT.mjs → chunk-JVHOS3K3.mjs} +177 -65
- package/dist/cli/chunk-LYFKBLJI.mjs +1039 -0
- package/dist/cli/{chunk-SLEUWLJE.mjs → chunk-MSY22NQW.mjs} +5 -5
- package/dist/cli/{chunk-5FY72YOV.js → chunk-NAPTMYTY.js} +8 -8
- package/dist/cli/{chunk-O6QOMHCH.js → chunk-NDHJR2WZ.js} +37 -35
- package/dist/cli/{chunk-KXMNM4AQ.js → chunk-NMU3VR5U.js} +4 -5
- package/dist/cli/chunk-NTLI6P6Y.mjs +19 -0
- package/dist/cli/{chunk-RFONC4WJ.mjs → chunk-O3BJYD6D.mjs} +3 -3
- package/dist/cli/{describe-2WQY7ZCY.js → chunk-PVY4DPPF.js} +27 -44
- package/dist/cli/{chunk-WIYWSYDS.mjs → chunk-Q2EIZKVX.mjs} +3 -3
- package/dist/cli/{chunk-VZBCEA5S.mjs → chunk-RD6IQ2JY.mjs} +223 -92
- package/dist/cli/chunk-RGOUCIIZ.js +1039 -0
- package/dist/cli/{chunk-EIMG75BT.mjs → chunk-S3A4IXBQ.mjs} +4 -5
- package/dist/cli/{chunk-QIW7TVV6.mjs → chunk-S4XQCFES.mjs} +14 -12
- package/dist/cli/chunk-SKU6ECIY.js +19 -0
- package/dist/cli/{chunk-CRYOUPEB.js → chunk-TIRBDQ3W.js} +16 -16
- package/dist/cli/{chunk-G7L27KZB.mjs → chunk-TKAQR3IB.mjs} +31 -21
- package/dist/cli/{chunk-MDJPEGVN.js → chunk-UC4SFYNU.js} +392 -261
- package/dist/cli/{chunk-3BMLICF7.mjs → chunk-UIURR26V.mjs} +13 -8
- package/dist/cli/{chunk-TNMBPMMC.js → chunk-UROQDCVW.js} +13 -4
- package/dist/cli/{chunk-R64BGGRQ.mjs → chunk-VDGTTH7K.mjs} +2 -2
- package/dist/cli/chunk-VLEVVDWG.js +91 -0
- package/dist/cli/{chunk-R2GLGLDR.mjs → chunk-VPHN2HAL.mjs} +216 -91
- package/dist/cli/chunk-VY2GBNTX.js +1038 -0
- package/dist/cli/{chunk-CFUTOWE4.js → chunk-WG3KGAII.js} +8 -88
- package/dist/cli/{chunk-QAJAJPKK.mjs → chunk-WUMIYOXQ.mjs} +4 -2
- package/dist/cli/{chunk-SCIR5JXW.js → chunk-WUZS2HK6.js} +56 -51
- package/dist/cli/{chunk-T3MVIPHG.mjs → chunk-XDWS2JJT.mjs} +1 -1
- package/dist/cli/{chunk-KGQNIA37.js → chunk-XQCTG5OO.js} +44 -34
- package/dist/cli/{chunk-KVJ5VHW5.mjs → chunk-XW2JIYG7.mjs} +2 -2
- package/dist/cli/chunk-YGGIZ3VT.js +920 -0
- package/dist/cli/command-docs.d.mts +5 -0
- package/dist/cli/command-docs.d.ts +5 -0
- package/dist/cli/command-docs.js +2 -2
- package/dist/cli/command-docs.mjs +1 -1
- package/dist/cli/{csv-NX7NO3O6.js → csv-EH5QWR4O.js} +13 -12
- package/dist/cli/{csv-DQ6GW5B5.mjs → csv-OK45Z5XQ.mjs} +4 -3
- package/dist/cli/{db-R72DFMP6.js → db-3ESJKETS.js} +30 -27
- package/dist/cli/{db-2YP33M4K.mjs → db-6Z5E4HKN.mjs} +10 -7
- package/dist/cli/describe-PNDQB7YS.mjs +48 -0
- package/dist/cli/describe-QUF7VTTR.js +48 -0
- package/dist/cli/describe-core.d.mts +153 -5
- package/dist/cli/describe-core.d.ts +153 -5
- package/dist/cli/describe-core.js +9 -5
- package/dist/cli/describe-core.mjs +10 -6
- package/dist/cli/{executions-WFBU7L2Q.mjs → executions-2NTWQFEG.mjs} +7 -5
- package/dist/cli/{executions-ZLHD4QIT.js → executions-KUOBRX5V.js} +9 -7
- package/dist/cli/{feedback-CN3HJFVF.mjs → feedback-7RPRMSGY.mjs} +6 -5
- package/dist/cli/{feedback-NDV6TPHG.js → feedback-UPHAZJ4C.js} +10 -9
- package/dist/cli/getting-started.d.mts +6 -6
- package/dist/cli/getting-started.d.ts +6 -6
- package/dist/cli/getting-started.js +2 -2
- package/dist/cli/getting-started.mjs +1 -1
- package/dist/cli/{git-QAD6E3HW.mjs → git-SCYP6WSZ.mjs} +5 -4
- package/dist/cli/git-UH653WHV.js +25 -0
- package/dist/cli/index.js +152 -142
- package/dist/cli/index.mjs +56 -46
- package/dist/cli/{legacy-noops-KVC5QJ74.js → legacy-noops-7XMFCVRG.js} +8 -7
- package/dist/cli/{legacy-noops-TPTKNBI2.mjs → legacy-noops-A4KYAGI6.mjs} +5 -4
- package/dist/cli/{monitors-SV57JFLO.mjs → monitors-FLC5J7RI.mjs} +19 -6
- package/dist/cli/{monitors-KCROV6PJ.js → monitors-NZV6IX5H.js} +103 -90
- package/dist/cli/{org-NJYX5743.js → org-IZ7UP3XF.js} +70 -67
- package/dist/cli/{org-KX6QIR7A.mjs → org-LUETJ7Z5.mjs} +9 -6
- package/dist/cli/pages-22ML3O7O.js +252 -0
- package/dist/cli/pages-EUX5EAGF.mjs +252 -0
- package/dist/cli/{play-IQQ57L7Z.mjs → play-CDHPAKKM.mjs} +512 -1508
- package/dist/cli/{play-32L7EQN4.js → play-USJBQADG.js} +1090 -2086
- package/dist/cli/{providers-4WEC2EQN.mjs → providers-CCXZ3SQF.mjs} +7 -5
- package/dist/cli/{providers-ZQV6QLVQ.js → providers-WFEUNPGC.js} +10 -8
- package/dist/cli/{quickstart-HKUSFADF.js → quickstart-O4JSUORZ.js} +13 -12
- package/dist/cli/{quickstart-RQ76RIUE.mjs → quickstart-ZUULI635.mjs} +5 -4
- package/dist/cli/run-ISDJYJMU.js +443 -0
- package/dist/cli/run-QJ4NX5F5.mjs +443 -0
- package/dist/cli/{search-ZRAVFBZC.mjs → search-IX3XKZJ3.mjs} +8 -6
- package/dist/cli/search-TIFNLRPM.js +32 -0
- package/dist/cli/{secrets-CMJOVNVH.mjs → secrets-7VUDXTUZ.mjs} +7 -5
- package/dist/cli/{secrets-J3G5Y43U.js → secrets-ELQSNCTR.js} +16 -14
- package/dist/cli/{sessions-WY7VN4AE.js → sessions-A3FG3AZX.js} +6 -5
- package/dist/cli/{sessions-MDQYY5CB.mjs → sessions-VOIQ62GB.mjs} +5 -4
- package/dist/cli/{settings-4RWZPCT5.mjs → settings-S6N6EFBG.mjs} +14 -11
- package/dist/cli/{settings-HTNTFKCE.js → settings-ZTXQEMZI.js} +80 -77
- package/dist/cli/{setup-P3GYYZWG.mjs → setup-AYPIK4JE.mjs} +12 -10
- package/dist/cli/{setup-QGCAP62X.js → setup-Y3WOIFLS.js} +53 -51
- package/dist/cli/{skills-7NAE4ICL.mjs → skills-5SF5QWNI.mjs} +7 -6
- package/dist/cli/skills-MWFRMG3H.js +31 -0
- package/dist/cli/tools-3XNZ4J64.mjs +55 -0
- package/dist/cli/tools-XEC4OD3R.js +55 -0
- package/dist/cli/{update-GODLRKNB.mjs → update-3U4OVX5R.mjs} +9 -8
- package/dist/cli/update-DWYEYTZE.js +33 -0
- package/dist/cli/{workflow-4BXOUVEO.mjs → workflow-2M5JP7SA.mjs} +10 -8
- package/dist/cli/{workflow-AO3A6LXN.js → workflow-RM7H7555.js} +20 -18
- package/dist/client-DS2IWYZF.d.ts +10 -0
- package/dist/client-DTwnz_AW.d.mts +10 -0
- package/dist/{client-CYqG23K1.d.ts → client-core-B_6HAIBy.d.ts} +385 -12
- package/dist/{client-BbU5_j7n.d.mts → client-core-DzBSlY1U.d.mts} +385 -12
- package/dist/{compiler-manifest-CWz_sNOQ.d.ts → compiler-manifest-Dcyd3-Zd.d.mts} +43 -1
- package/dist/{compiler-manifest-CWz_sNOQ.d.mts → compiler-manifest-Dcyd3-Zd.d.ts} +43 -1
- package/dist/errors-d-sTrZhe.d.mts +142 -0
- package/dist/errors-yQwfgrcX.d.ts +142 -0
- package/dist/{index-BF2JB_Ug.d.mts → index-C6oXchjN.d.mts} +1 -1
- package/dist/{index-4NPXDzlD.d.ts → index-P56zy_z5.d.ts} +1 -1
- package/dist/index.d.mts +11 -147
- package/dist/index.d.ts +11 -147
- package/dist/index.js +16 -12
- package/dist/index.mjs +15 -11
- package/dist/install-integrity.json +141 -104
- package/dist/plays/bundle-play-file.d.mts +3 -3
- package/dist/plays/bundle-play-file.d.ts +3 -3
- package/dist/plays/bundle-play-file.mjs +2 -1
- package/dist/plays/play-description.d.mts +2 -2
- package/dist/plays/play-description.d.ts +2 -2
- package/dist/plays/play-description.js +2 -2
- package/dist/plays/play-description.mjs +1 -1
- package/dist/plays/run-request.d.mts +2 -2
- package/dist/plays/run-request.d.ts +2 -2
- package/dist/release.d.mts +1 -1
- package/dist/release.d.ts +1 -1
- package/dist/release.js +2 -2
- package/dist/release.mjs +1 -1
- package/dist/server.d.mts +17 -0
- package/dist/server.d.ts +17 -0
- package/dist/server.js +76 -0
- package/dist/server.mjs +76 -0
- package/package.json +6 -1
- package/dist/cli/auth-IACERYQH.js +0 -40
- package/dist/cli/chunk-PQUUWFXY.js +0 -95
- package/dist/cli/chunk-YBWAG72P.mjs +0 -95
- package/dist/cli/chunk-YQDUODZW.js +0 -1710
- package/dist/cli/git-JVI36ZFV.js +0 -24
- package/dist/cli/search-75X5LTDE.js +0 -30
- package/dist/cli/skills-BKJ53JOQ.js +0 -30
- package/dist/cli/tools-COWMIEJ6.mjs +0 -45
- package/dist/cli/tools-TASOCE7I.js +0 -45
- package/dist/cli/update-SJIKVME6.js +0 -32
package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/receipt-gateway.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { hydrateRetainedPlayPipelines } from '../../plays/execution-pipeline';
|
|
2
|
+
import { isInternalWorkReceiptKey } from '../work-receipt-storage-contract';
|
|
2
3
|
/**
|
|
3
4
|
* Runtime receipt gateway dispatch.
|
|
4
5
|
*
|
|
@@ -962,6 +963,41 @@ export function createReceiptGatewayDispatcher(input: {
|
|
|
962
963
|
);
|
|
963
964
|
const scopeError = requireReceiptScope(scope, body);
|
|
964
965
|
if (scopeError) return scopeError;
|
|
966
|
+
if (
|
|
967
|
+
body.action !== 'get_runtime_step_receipt' &&
|
|
968
|
+
body.action !== 'get_runtime_step_receipts'
|
|
969
|
+
) {
|
|
970
|
+
// Raw callers may carry extra fields. No key-bearing field can shadow another.
|
|
971
|
+
const keys: string[] = [];
|
|
972
|
+
if ('key' in body && typeof body.key === 'string') keys.push(body.key);
|
|
973
|
+
if ('keys' in body && Array.isArray(body.keys)) {
|
|
974
|
+
keys.push(
|
|
975
|
+
...body.keys.filter((key): key is string => typeof key === 'string'),
|
|
976
|
+
);
|
|
977
|
+
}
|
|
978
|
+
if ('receipts' in body && Array.isArray(body.receipts)) {
|
|
979
|
+
keys.push(
|
|
980
|
+
...body.receipts.flatMap((receipt) =>
|
|
981
|
+
receipt &&
|
|
982
|
+
typeof receipt === 'object' &&
|
|
983
|
+
'key' in receipt &&
|
|
984
|
+
typeof receipt.key === 'string'
|
|
985
|
+
? [receipt.key]
|
|
986
|
+
: [],
|
|
987
|
+
),
|
|
988
|
+
);
|
|
989
|
+
}
|
|
990
|
+
// Reject before value persistence or an injected/coalesced commit path.
|
|
991
|
+
if (keys.some((key) => isInternalWorkReceiptKey(key.trim()))) {
|
|
992
|
+
return receiptGatewayJsonResponse(
|
|
993
|
+
{
|
|
994
|
+
error:
|
|
995
|
+
'Internal runtime facts cannot be mutated through generic work receipt operations.',
|
|
996
|
+
},
|
|
997
|
+
{ status: 400 },
|
|
998
|
+
);
|
|
999
|
+
}
|
|
1000
|
+
}
|
|
965
1001
|
const runId = String(body.runId || scope.runId);
|
|
966
1002
|
// Additive read presentation. Older callers omit this and receive the
|
|
967
1003
|
// exact hydrated body they did before; only a Foundation cache probe asks
|
|
@@ -15,6 +15,8 @@ export type RunLedgerDispatchLaunch = Pick<
|
|
|
15
15
|
| 'runLedgerExecutorToken'
|
|
16
16
|
| 'baseUrl'
|
|
17
17
|
| 'runtimeApiBaseUrl'
|
|
18
|
+
| 'arrayInputTerminalRetirementSupported'
|
|
19
|
+
| 'arrayInputTerminalProjectionOrigin'
|
|
18
20
|
| 'runtimeTokenOrigin'
|
|
19
21
|
| 'orgId'
|
|
20
22
|
| 'runtimeAuthority'
|
|
@@ -33,6 +35,8 @@ export function runLedgerDispatchLaunchSql(alias: string): string {
|
|
|
33
35
|
'runLedgerExecutorToken',
|
|
34
36
|
'baseUrl',
|
|
35
37
|
'runtimeApiBaseUrl',
|
|
38
|
+
'arrayInputTerminalRetirementSupported',
|
|
39
|
+
'arrayInputTerminalProjectionOrigin',
|
|
36
40
|
'runtimeTokenOrigin',
|
|
37
41
|
'orgId',
|
|
38
42
|
'runtimeAuthority',
|
|
@@ -12,6 +12,7 @@ import { isIsolatedRuntimeSchedulerSchema } from '../runtime-scheduler-topology'
|
|
|
12
12
|
import {
|
|
13
13
|
dispatchRunLedgerOutboxToLedgerBatchOnceWithClientScope,
|
|
14
14
|
postgresSchedulerNotifyChannel,
|
|
15
|
+
readPostgresSchedulerOutboxAdmissionHints,
|
|
15
16
|
readPostgresSchedulerOutboxNextDueAt,
|
|
16
17
|
type PostgresSchedulerOptions,
|
|
17
18
|
type PostgresSchedulerOutboxProjectionResult,
|
|
@@ -19,6 +20,7 @@ import {
|
|
|
19
20
|
type RunLedgerOutboxHeadPriority,
|
|
20
21
|
type RunLedgerOutboxTokenAuthority,
|
|
21
22
|
type RunLedgerOutboxWithClient,
|
|
23
|
+
type RunLedgerOutboxAdmissionHint,
|
|
22
24
|
} from './postgres';
|
|
23
25
|
import {
|
|
24
26
|
acquirePgNotifyHub,
|
|
@@ -74,7 +76,11 @@ export const RUN_LEDGER_OUTBOX_RECOVERY_MAX_IN_FLIGHT = 32;
|
|
|
74
76
|
// The higher exported ceiling remains available to isolated recovery callers,
|
|
75
77
|
// but it is not the steady-state production setting.
|
|
76
78
|
const RUN_LEDGER_OUTBOX_RECOVERY_PRODUCTION_IN_FLIGHT = 8;
|
|
77
|
-
|
|
79
|
+
// Production runs two projector replicas, so four index deliveries per
|
|
80
|
+
// replica provide eight shared slots. Preview has one projector replica; give
|
|
81
|
+
// it the same total bounded search-index capacity.
|
|
82
|
+
const RUN_LEDGER_OUTBOX_RECOVERY_PRODUCTION_INDEX_IN_FLIGHT = 4;
|
|
83
|
+
const RUN_LEDGER_OUTBOX_RECOVERY_PREVIEW_INDEX_IN_FLIGHT = 8;
|
|
78
84
|
// Admissions retain three of four claim opportunities. The fourth selects
|
|
79
85
|
// the oldest eligible causal head across all runs, preventing terminal work
|
|
80
86
|
// from starving behind continuous new admissions. An empty class never costs
|
|
@@ -94,6 +100,11 @@ export type RunLedgerOutboxRecoveryDeps = {
|
|
|
94
100
|
headPriority: RunLedgerOutboxHeadPriority,
|
|
95
101
|
runId?: string,
|
|
96
102
|
) => Promise<PostgresSchedulerOutboxProjectionResult>;
|
|
103
|
+
/** Discardable admission candidates after a productive global delivery. */
|
|
104
|
+
discoverAdmissionHints?: (input: {
|
|
105
|
+
limit: number;
|
|
106
|
+
excludeRunIds: readonly string[];
|
|
107
|
+
}) => Promise<RunLedgerOutboxAdmissionHint[]>;
|
|
97
108
|
/** Independent index deliveries share this controller and notification source. */
|
|
98
109
|
dispatchObservabilityOnce?: (
|
|
99
110
|
runId?: string,
|
|
@@ -134,6 +145,14 @@ export function runLedgerOutboxRecoveryParallelism(
|
|
|
134
145
|
: RUN_LEDGER_OUTBOX_RECOVERY_PRODUCTION_IN_FLIGHT;
|
|
135
146
|
}
|
|
136
147
|
|
|
148
|
+
export function runLedgerOutboxObservabilityParallelism(
|
|
149
|
+
environment: 'preview' | 'production',
|
|
150
|
+
): number {
|
|
151
|
+
return environment === 'preview'
|
|
152
|
+
? RUN_LEDGER_OUTBOX_RECOVERY_PREVIEW_INDEX_IN_FLIGHT
|
|
153
|
+
: RUN_LEDGER_OUTBOX_RECOVERY_PRODUCTION_INDEX_IN_FLIGHT;
|
|
154
|
+
}
|
|
155
|
+
|
|
137
156
|
export type RunLedgerOutboxRecoveryController = {
|
|
138
157
|
/**
|
|
139
158
|
* Ask the singleton projector to re-read durable outbox work. This is
|
|
@@ -264,15 +283,21 @@ export function startRunLedgerOutboxRecovery(
|
|
|
264
283
|
let nextDispatchId = 0;
|
|
265
284
|
let lastDispatchSettledAt: number | null = null;
|
|
266
285
|
let admissionTurns = 0;
|
|
286
|
+
type LifecycleOrigin = 'global' | 'producer_hint' | 'admission_snapshot';
|
|
267
287
|
const dispatchOnce = async (
|
|
268
288
|
observability = false,
|
|
269
289
|
runId?: string,
|
|
290
|
+
origin: LifecycleOrigin = runId === undefined ? 'global' : 'producer_hint',
|
|
270
291
|
): Promise<PostgresSchedulerOutboxProjectionResult> => {
|
|
271
292
|
const oldestReady =
|
|
272
293
|
admissionTurns === ADMISSION_TURNS_PER_OLDEST_READY_TURN;
|
|
273
|
-
//
|
|
274
|
-
//
|
|
275
|
-
if (!observability &&
|
|
294
|
+
// Producer hints do not choose a global winner. Admission snapshots do,
|
|
295
|
+
// even though their final claim is scoped and can lose to another owner.
|
|
296
|
+
if (!observability && origin === 'admission_snapshot' && oldestReady)
|
|
297
|
+
throw new Error(
|
|
298
|
+
'The oldest-ready opportunity requires a fresh global claim.',
|
|
299
|
+
);
|
|
300
|
+
if (!observability && origin !== 'producer_hint')
|
|
276
301
|
admissionTurns = oldestReady ? 0 : admissionTurns + 1;
|
|
277
302
|
const id = nextDispatchId++;
|
|
278
303
|
inFlightStartedAt.set(id, now());
|
|
@@ -373,7 +398,7 @@ export function startRunLedgerOutboxRecovery(
|
|
|
373
398
|
};
|
|
374
399
|
|
|
375
400
|
const scheduleFailureRetry = (
|
|
376
|
-
stage: 'dispatch' | 'next_due',
|
|
401
|
+
stage: 'dispatch' | 'next_due' | 'admission_discovery',
|
|
377
402
|
error: unknown,
|
|
378
403
|
) => {
|
|
379
404
|
failureCount += 1;
|
|
@@ -549,13 +574,24 @@ export function startRunLedgerOutboxRecovery(
|
|
|
549
574
|
id: symbol;
|
|
550
575
|
observability: boolean;
|
|
551
576
|
runId?: string;
|
|
577
|
+
origin: LifecycleOrigin;
|
|
552
578
|
result:
|
|
553
579
|
| PromiseSettledResult<PostgresSchedulerOutboxProjectionResult>
|
|
554
580
|
| { status: 'skipped' };
|
|
555
581
|
};
|
|
556
582
|
const pending = new Set<symbol>();
|
|
557
583
|
const pendingObservability = new Set<symbol>();
|
|
584
|
+
const pendingRunIds = new Map<symbol, string>();
|
|
558
585
|
const deliveries: Delivery[] = [];
|
|
586
|
+
let admissionHints: RunLedgerOutboxAdmissionHint[] = [];
|
|
587
|
+
let discoveryPending: Promise<void> | null = null;
|
|
588
|
+
let admissionWindowGeneration = 0;
|
|
589
|
+
// Reserve scheduling order without consuming fairness turns before the
|
|
590
|
+
// actual handoff. launch() defers dispatch by one microtask.
|
|
591
|
+
let scheduledGlobalTurns = 0;
|
|
592
|
+
const nextGlobalTurn = () =>
|
|
593
|
+
(admissionTurns + scheduledGlobalTurns) %
|
|
594
|
+
(ADMISSION_TURNS_PER_OLDEST_READY_TURN + 1);
|
|
559
595
|
let refill = false;
|
|
560
596
|
let observabilityRefill = false;
|
|
561
597
|
let dispatchFailed = false;
|
|
@@ -583,21 +619,41 @@ export function startRunLedgerOutboxRecovery(
|
|
|
583
619
|
completed = attempted = projected = retrying = blocked = 0;
|
|
584
620
|
};
|
|
585
621
|
|
|
586
|
-
const launch = (
|
|
622
|
+
const launch = (
|
|
623
|
+
observability = false,
|
|
624
|
+
runId?: string,
|
|
625
|
+
origin: LifecycleOrigin = runId === undefined
|
|
626
|
+
? 'global'
|
|
627
|
+
: 'producer_hint',
|
|
628
|
+
) => {
|
|
587
629
|
const id = Symbol();
|
|
630
|
+
if (
|
|
631
|
+
!observability &&
|
|
632
|
+
origin === 'global' &&
|
|
633
|
+
nextGlobalTurn() === ADMISSION_TURNS_PER_OLDEST_READY_TURN
|
|
634
|
+
) {
|
|
635
|
+
// A newly eligible oldest run must win from a fresh global snapshot.
|
|
636
|
+
// Nothing read for the preceding admission window survives this turn.
|
|
637
|
+
admissionHints = [];
|
|
638
|
+
admissionWindowGeneration++;
|
|
639
|
+
}
|
|
588
640
|
pending.add(id);
|
|
589
641
|
if (observability) pendingObservability.add(id);
|
|
642
|
+
if (!observability && runId !== undefined) pendingRunIds.set(id, runId);
|
|
643
|
+
if (!observability && origin !== 'producer_hint') scheduledGlobalTurns++;
|
|
590
644
|
const settle = (result: Delivery['result']) => {
|
|
591
645
|
if (result.status === 'rejected' && !dispatchFailed) {
|
|
592
646
|
dispatchFailed = true;
|
|
593
647
|
scheduleFailureRetry('dispatch', result.reason);
|
|
594
648
|
}
|
|
595
|
-
deliveries.push({ id, observability, runId, result });
|
|
649
|
+
deliveries.push({ id, observability, runId, origin, result });
|
|
596
650
|
wakeActiveDrain?.();
|
|
597
651
|
};
|
|
598
652
|
// Subscribe once per delivery. Repeated Promise.race calls would retain
|
|
599
653
|
// a new reaction on a slow callback every time a faster slot completes.
|
|
600
654
|
void Promise.resolve().then(async () => {
|
|
655
|
+
if (!observability && origin !== 'producer_hint')
|
|
656
|
+
scheduledGlobalTurns--;
|
|
601
657
|
if (closed || dispatchFailed || cooldownUntilMs !== null) {
|
|
602
658
|
settle({ status: 'skipped' });
|
|
603
659
|
return;
|
|
@@ -605,7 +661,7 @@ export function startRunLedgerOutboxRecovery(
|
|
|
605
661
|
try {
|
|
606
662
|
settle({
|
|
607
663
|
status: 'fulfilled',
|
|
608
|
-
value: await dispatchOnce(observability, runId),
|
|
664
|
+
value: await dispatchOnce(observability, runId, origin),
|
|
609
665
|
});
|
|
610
666
|
} catch (reason) {
|
|
611
667
|
settle({ status: 'rejected', reason });
|
|
@@ -613,6 +669,51 @@ export function startRunLedgerOutboxRecovery(
|
|
|
613
669
|
});
|
|
614
670
|
};
|
|
615
671
|
|
|
672
|
+
const discover = (limit: number) => {
|
|
673
|
+
const generation = admissionWindowGeneration;
|
|
674
|
+
discoveryPending = Promise.resolve()
|
|
675
|
+
.then(() =>
|
|
676
|
+
deps.discoverAdmissionHints!({
|
|
677
|
+
limit,
|
|
678
|
+
excludeRunIds: [...new Set(pendingRunIds.values())],
|
|
679
|
+
}),
|
|
680
|
+
)
|
|
681
|
+
.then((hints) => {
|
|
682
|
+
if (
|
|
683
|
+
closed ||
|
|
684
|
+
dispatchFailed ||
|
|
685
|
+
cooldownUntilMs !== null ||
|
|
686
|
+
generation !== admissionWindowGeneration
|
|
687
|
+
)
|
|
688
|
+
return;
|
|
689
|
+
if (
|
|
690
|
+
hints.length > limit ||
|
|
691
|
+
hints.some(
|
|
692
|
+
(hint) => hint.origin !== 'admission_snapshot' || !hint.runId,
|
|
693
|
+
) ||
|
|
694
|
+
new Set(hints.map((hint) => hint.runId)).size !== hints.length
|
|
695
|
+
)
|
|
696
|
+
throw new Error(
|
|
697
|
+
'Outbox admission discovery returned an invalid bounded window.',
|
|
698
|
+
);
|
|
699
|
+
admissionHints = hints;
|
|
700
|
+
if (hints.length === 0) {
|
|
701
|
+
refill = false;
|
|
702
|
+
void scheduleNextDue();
|
|
703
|
+
}
|
|
704
|
+
})
|
|
705
|
+
.catch((error) => {
|
|
706
|
+
if (!dispatchFailed) {
|
|
707
|
+
dispatchFailed = true;
|
|
708
|
+
scheduleFailureRetry('admission_discovery', error);
|
|
709
|
+
}
|
|
710
|
+
})
|
|
711
|
+
.finally(() => {
|
|
712
|
+
discoveryPending = null;
|
|
713
|
+
wakeActiveDrain?.();
|
|
714
|
+
});
|
|
715
|
+
};
|
|
716
|
+
|
|
616
717
|
const canProbeLifecycle = () =>
|
|
617
718
|
!closed &&
|
|
618
719
|
!dispatchFailed &&
|
|
@@ -659,12 +760,33 @@ export function startRunLedgerOutboxRecovery(
|
|
|
659
760
|
while (
|
|
660
761
|
pending.size < parallelism &&
|
|
661
762
|
pending.size - pendingObservability.size < lifecycleParallelism
|
|
662
|
-
)
|
|
663
|
-
|
|
664
|
-
|
|
763
|
+
) {
|
|
764
|
+
if (!deps.discoverAdmissionHints) {
|
|
765
|
+
launch();
|
|
766
|
+
continue;
|
|
767
|
+
}
|
|
768
|
+
const turn = nextGlobalTurn();
|
|
769
|
+
if (turn === ADMISSION_TURNS_PER_OLDEST_READY_TURN) {
|
|
770
|
+
launch();
|
|
771
|
+
continue;
|
|
772
|
+
}
|
|
773
|
+
const hint = admissionHints.shift();
|
|
774
|
+
if (hint) {
|
|
775
|
+
launch(false, hint.runId, hint.origin);
|
|
776
|
+
continue;
|
|
777
|
+
}
|
|
778
|
+
if (!discoveryPending)
|
|
779
|
+
discover(ADMISSION_TURNS_PER_OLDEST_READY_TURN - turn);
|
|
780
|
+
break;
|
|
781
|
+
}
|
|
782
|
+
if (!discoveryPending)
|
|
783
|
+
refill =
|
|
784
|
+
admissionHints.length > 0 ||
|
|
785
|
+
(deps.discoverAdmissionHints !== undefined &&
|
|
786
|
+
nextGlobalTurn() === ADMISSION_TURNS_PER_OLDEST_READY_TURN);
|
|
665
787
|
}
|
|
666
788
|
}
|
|
667
|
-
if (pending.size === 0) {
|
|
789
|
+
if (pending.size === 0 && discoveryPending === null) {
|
|
668
790
|
reportDeliveries();
|
|
669
791
|
// Metadata discovery is single-flight, but never owns a claim slot.
|
|
670
792
|
// A slow snapshot must not delay a producer's next scoped claim.
|
|
@@ -678,7 +800,14 @@ export function startRunLedgerOutboxRecovery(
|
|
|
678
800
|
if (
|
|
679
801
|
deliveries.length > 0 ||
|
|
680
802
|
canProbeLifecycle() ||
|
|
681
|
-
canProbeObservability()
|
|
803
|
+
canProbeObservability() ||
|
|
804
|
+
(!closed &&
|
|
805
|
+
!dispatchFailed &&
|
|
806
|
+
cooldownUntilMs === null &&
|
|
807
|
+
refill &&
|
|
808
|
+
discoveryPending === null &&
|
|
809
|
+
pending.size < parallelism &&
|
|
810
|
+
pending.size - pendingObservability.size < lifecycleParallelism)
|
|
682
811
|
)
|
|
683
812
|
resolve();
|
|
684
813
|
});
|
|
@@ -687,6 +816,7 @@ export function startRunLedgerOutboxRecovery(
|
|
|
687
816
|
if (!delivery) continue;
|
|
688
817
|
pending.delete(delivery.id);
|
|
689
818
|
pendingObservability.delete(delivery.id);
|
|
819
|
+
pendingRunIds.delete(delivery.id);
|
|
690
820
|
if (delivery.result.status !== 'fulfilled') {
|
|
691
821
|
// Stop new claims but settle every already-started delivery before
|
|
692
822
|
// cooldown or close can hand ownership to another drain.
|
|
@@ -706,7 +836,7 @@ export function startRunLedgerOutboxRecovery(
|
|
|
706
836
|
}
|
|
707
837
|
if (
|
|
708
838
|
result.retrying > 0 ||
|
|
709
|
-
(delivery.
|
|
839
|
+
(delivery.origin !== 'producer_hint' && result.attempted > 0)
|
|
710
840
|
)
|
|
711
841
|
dueClockKnownLane = null;
|
|
712
842
|
if (result.retrying > 0) dueClockGeneration += 1;
|
|
@@ -731,7 +861,7 @@ export function startRunLedgerOutboxRecovery(
|
|
|
731
861
|
void scheduleNextDue(result.retrying > 0);
|
|
732
862
|
// Retryable rows own durable retry clocks. The SQL claim keeps their
|
|
733
863
|
// run ordered while successful slots keep unrelated runs moving.
|
|
734
|
-
if (delivery.runId !== undefined) {
|
|
864
|
+
if (delivery.runId !== undefined && delivery.origin === 'producer_hint') {
|
|
735
865
|
// Continue only the notified run. Refilling with global claims here
|
|
736
866
|
// would turn one productive scoped claim back into whole-outbox scans.
|
|
737
867
|
if (result.attempted > 0) {
|
|
@@ -749,7 +879,7 @@ export function startRunLedgerOutboxRecovery(
|
|
|
749
879
|
}
|
|
750
880
|
} else if (delivery.observability) {
|
|
751
881
|
observabilityRefill = result.attempted > 0;
|
|
752
|
-
} else
|
|
882
|
+
} else if (result.attempted > 0) refill = true;
|
|
753
883
|
}
|
|
754
884
|
};
|
|
755
885
|
|
|
@@ -1037,11 +1167,14 @@ export function startRunLedgerOutboxRecoveryController(input: {
|
|
|
1037
1167
|
onDelivered?: (deliveries: readonly RunLedgerOutboxDeliveredRow[]) => void;
|
|
1038
1168
|
}): RunLedgerOutboxRecoveryController {
|
|
1039
1169
|
const schedulerOptions = input.schedulerOptions ?? {};
|
|
1170
|
+
const environment = input.environment ?? 'production';
|
|
1171
|
+
const observabilityParallelism =
|
|
1172
|
+
runLedgerOutboxObservabilityParallelism(environment);
|
|
1040
1173
|
const observabilityPoolOptions: RuntimeSchedulerPoolOptions = {
|
|
1041
1174
|
...input.poolOptions,
|
|
1042
1175
|
purpose: 'observability',
|
|
1043
1176
|
applicationName: 'deepline-runtime-observability',
|
|
1044
|
-
maxClients:
|
|
1177
|
+
maxClients: observabilityParallelism,
|
|
1045
1178
|
};
|
|
1046
1179
|
const dispatch = (
|
|
1047
1180
|
headPriority: RunLedgerOutboxHeadPriority,
|
|
@@ -1088,15 +1221,21 @@ export function startRunLedgerOutboxRecoveryController(input: {
|
|
|
1088
1221
|
}),
|
|
1089
1222
|
),
|
|
1090
1223
|
dispatchOnce: (headPriority, runId) => dispatch(headPriority, false, runId),
|
|
1224
|
+
discoverAdmissionHints: (discovery) =>
|
|
1225
|
+
withRuntimeSchedulerClient(input.poolOptions, (client) =>
|
|
1226
|
+
readPostgresSchedulerOutboxAdmissionHints(
|
|
1227
|
+
client,
|
|
1228
|
+
discovery,
|
|
1229
|
+
schedulerOptions,
|
|
1230
|
+
),
|
|
1231
|
+
),
|
|
1091
1232
|
dispatchObservabilityOnce: (runId) => dispatch('oldest_ready', true, runId),
|
|
1092
|
-
observabilityParallelism
|
|
1233
|
+
observabilityParallelism,
|
|
1093
1234
|
// `dispatchRunLedgerOutboxToLedgerBatchOnceWithClientScope` releases each
|
|
1094
1235
|
// short scheduler checkout before it calls the Vercel gateway. Production
|
|
1095
|
-
// retains two replicas at eight slots each; one
|
|
1096
|
-
//
|
|
1097
|
-
parallelism: runLedgerOutboxRecoveryParallelism(
|
|
1098
|
-
input.environment ?? 'production',
|
|
1099
|
-
),
|
|
1236
|
+
// retains two replicas at eight lifecycle and four search slots each; one
|
|
1237
|
+
// Preview replica uses 32 lifecycle and eight search slots.
|
|
1238
|
+
parallelism: runLedgerOutboxRecoveryParallelism(environment),
|
|
1100
1239
|
notifyUnavailableSafetyWakeMs: runLedgerOutboxNotifySafetyWakeMs(
|
|
1101
1240
|
schedulerOptions.schema,
|
|
1102
1241
|
),
|