deepline 0.3.89 → 0.3.91

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (267) hide show
  1. package/contracts/install-commands.json +29 -0
  2. package/dist/bundling-sources/sdk/src/client.ts +221 -43
  3. package/dist/bundling-sources/sdk/src/index.ts +4 -0
  4. package/dist/bundling-sources/sdk/src/monitor-fleet-contract.ts +2 -556
  5. package/dist/bundling-sources/sdk/src/monitor-fleets.ts +2 -2
  6. package/dist/bundling-sources/sdk/src/pagination.ts +25 -0
  7. package/dist/bundling-sources/sdk/src/plays/bundle-play-file.ts +1 -1
  8. package/dist/bundling-sources/sdk/src/release.ts +11 -9
  9. package/dist/bundling-sources/sdk/src/types.ts +29 -1
  10. package/dist/bundling-sources/shared_libs/integration-contracts/monitor-fleet-contract.ts +549 -0
  11. package/dist/bundling-sources/shared_libs/monitors/analytics-public.ts +10 -0
  12. package/dist/bundling-sources/shared_libs/monitors/fleets/errors.ts +96 -0
  13. package/dist/bundling-sources/shared_libs/monitors/fleets/limits.ts +8 -0
  14. package/dist/bundling-sources/shared_libs/monitors/fleets/plan.ts +320 -0
  15. package/dist/bundling-sources/shared_libs/monitors/fleets/verdict.ts +106 -0
  16. package/dist/bundling-sources/shared_libs/monitors/http-error-response.ts +8 -1
  17. package/dist/bundling-sources/shared_libs/monitors/inbound-queue.ts +4 -4
  18. package/dist/bundling-sources/shared_libs/monitors/inventory-reconciliation.ts +59 -0
  19. package/dist/bundling-sources/shared_libs/monitors/lifecycle-notifications.ts +7 -9
  20. package/dist/bundling-sources/shared_libs/monitors/monitor-fleet-limits.ts +2 -12
  21. package/dist/bundling-sources/shared_libs/monitors/package.json +113 -4
  22. package/dist/bundling-sources/shared_libs/monitors/provider-monitor-batch-operation.ts +56 -9
  23. package/dist/bundling-sources/shared_libs/monitors/provider-monitor-consumer-health.ts +2 -2
  24. package/dist/bundling-sources/shared_libs/monitors/provider-monitor-identity-claims.ts +2 -2
  25. package/dist/bundling-sources/shared_libs/monitors/provider-monitor-public-aliases.ts +1 -1
  26. package/dist/bundling-sources/shared_libs/monitors/signal-radars/inbound-dead-letter.ts +245 -0
  27. package/dist/bundling-sources/shared_libs/monitors/signal-radars/inbound-message.ts +38 -0
  28. package/dist/bundling-sources/shared_libs/monitors/signal-radars/inbound-queue-ack-probe.ts +94 -0
  29. package/dist/bundling-sources/shared_libs/monitors/signal-radars/inbound-queue-delivery.ts +60 -0
  30. package/dist/bundling-sources/shared_libs/monitors/signal-radars/inbound-queue.ts +60 -0
  31. package/dist/bundling-sources/shared_libs/monitors/snitcher-install-validation.ts +1 -1
  32. package/dist/bundling-sources/shared_libs/monitors/snitcher-ip2company.ts +2 -2
  33. package/dist/bundling-sources/shared_libs/monitors/snitcher-radar.ts +1 -1
  34. package/dist/bundling-sources/shared_libs/monitors/tracking-provider-integrations.ts +1 -1
  35. package/dist/bundling-sources/shared_libs/observability/build-context.ts +13 -0
  36. package/dist/bundling-sources/shared_libs/observability/log-metadata.ts +160 -0
  37. package/dist/bundling-sources/shared_libs/observability/request-context.ts +68 -0
  38. package/dist/bundling-sources/shared_libs/observability/scheduled-jobs.json +690 -0
  39. package/dist/bundling-sources/shared_libs/observability/scheduled-work-manual.ts +35 -0
  40. package/dist/bundling-sources/shared_libs/observability/scheduled-work.ts +5 -0
  41. package/dist/bundling-sources/shared_libs/play-data-plane/neon-constants.ts +9 -0
  42. package/dist/bundling-sources/shared_libs/play-data-plane/r2.ts +272 -0
  43. package/dist/bundling-sources/shared_libs/play-runtime/app-runtime-api.ts +46 -1
  44. package/dist/bundling-sources/shared_libs/play-runtime/async-operation.ts +66 -1
  45. package/dist/bundling-sources/shared_libs/play-runtime/async-play-invocation.ts +0 -1
  46. package/dist/bundling-sources/shared_libs/play-runtime/bounceban-batching.ts +137 -0
  47. package/dist/bundling-sources/shared_libs/play-runtime/context.ts +779 -140
  48. package/dist/bundling-sources/shared_libs/play-runtime/ctx-types.ts +46 -0
  49. package/dist/bundling-sources/shared_libs/play-runtime/daytona-payload-contract.ts +68 -0
  50. package/dist/bundling-sources/shared_libs/play-runtime/daytona-sandbox-janitor.ts +103 -0
  51. package/dist/bundling-sources/shared_libs/play-runtime/daytona-sandbox-reaper.ts +725 -0
  52. package/dist/bundling-sources/shared_libs/play-runtime/db-session-lease-store.ts +578 -0
  53. package/dist/bundling-sources/shared_libs/play-runtime/deployment/commands/roll-execution-relay.ts +521 -0
  54. package/dist/bundling-sources/shared_libs/play-runtime/deployment/commands/roll-receipt-gateway.ts +1378 -0
  55. package/dist/bundling-sources/shared_libs/play-runtime/deployment/commands/runtime-topology.ts +1024 -0
  56. package/dist/bundling-sources/shared_libs/play-runtime/deployment/fly-gateway-route-probe.ts +193 -0
  57. package/dist/bundling-sources/shared_libs/play-runtime/deployment/fly-machine-lifecycle.ts +104 -0
  58. package/dist/bundling-sources/shared_libs/play-runtime/deployment/fly-machines.ts +1844 -0
  59. package/dist/bundling-sources/shared_libs/play-runtime/deployment/fly-registry.ts +21 -0
  60. package/dist/bundling-sources/shared_libs/play-runtime/deployment/process-tree.ts +40 -0
  61. package/dist/bundling-sources/shared_libs/play-runtime/deployment/runtime-gateway-drain.ts +262 -0
  62. package/dist/bundling-sources/shared_libs/play-runtime/deployment/runtime-surface.ts +98 -0
  63. package/dist/bundling-sources/shared_libs/play-runtime/deployment/runtime-topology.ts +303 -0
  64. package/dist/bundling-sources/shared_libs/play-runtime/deployment/runtime-tuple-publication-guardian.ts +70 -0
  65. package/dist/bundling-sources/shared_libs/play-runtime/deployment/runtime-tuple-recovery.ts +519 -0
  66. package/dist/bundling-sources/shared_libs/play-runtime/deployment/vercel-fly-rollback-alignment.ts +280 -0
  67. package/dist/bundling-sources/shared_libs/play-runtime/deployment/vercel-production-gate.ts +159 -0
  68. package/dist/bundling-sources/shared_libs/play-runtime/durable-call-cache.ts +29 -0
  69. package/dist/bundling-sources/shared_libs/play-runtime/execution-capabilities.ts +23 -0
  70. package/dist/bundling-sources/shared_libs/play-runtime/execution-gateway-invocation-fence.ts +442 -0
  71. package/dist/bundling-sources/shared_libs/play-runtime/execution-protocol.ts +3 -3
  72. package/dist/bundling-sources/shared_libs/play-runtime/fixture-behavior.ts +18 -0
  73. package/dist/bundling-sources/shared_libs/play-runtime/governor/app-runtime-rate-state-backend.ts +9 -0
  74. package/dist/bundling-sources/shared_libs/play-runtime/governor/policy.ts +1 -1
  75. package/dist/bundling-sources/shared_libs/play-runtime/governor/rate-state-backend.ts +1 -1
  76. package/dist/bundling-sources/shared_libs/play-runtime/integration-operation-reader-fence/contracts.ts +66 -0
  77. package/dist/bundling-sources/shared_libs/play-runtime/integration-operation-reader-fence/job.ts +145 -0
  78. package/dist/bundling-sources/shared_libs/play-runtime/integration-operation-reader-fence/memory-store.ts +114 -0
  79. package/dist/bundling-sources/shared_libs/play-runtime/integration-operation-reader-fence/ports.ts +21 -0
  80. package/dist/bundling-sources/shared_libs/play-runtime/integration-operation-reader-fence/postgres-store.ts +170 -0
  81. package/dist/bundling-sources/shared_libs/play-runtime/internal-bootstrap-token.ts +1322 -0
  82. package/dist/bundling-sources/shared_libs/play-runtime/internal-step-ids.ts +2 -2
  83. package/dist/bundling-sources/shared_libs/play-runtime/lane-retirement-gate.ts +1 -1
  84. package/dist/bundling-sources/shared_libs/play-runtime/launch-source-policy.ts +112 -0
  85. package/dist/bundling-sources/shared_libs/play-runtime/map-execution-frame.ts +8 -0
  86. package/dist/bundling-sources/shared_libs/play-runtime/perf-trace.ts +127 -0
  87. package/dist/bundling-sources/shared_libs/play-runtime/play-artifact-runtime-contract.ts +5 -0
  88. package/dist/bundling-sources/shared_libs/play-runtime/play-run-recovery-policy.ts +24 -1
  89. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/admission/contracts.ts +56 -0
  90. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/admission/index.ts +13 -0
  91. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/admission/job.ts +41 -0
  92. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/admission/ports.ts +17 -0
  93. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/admission/postgres-adapter.ts +54 -0
  94. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/attempts/contracts.ts +114 -0
  95. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/attempts/engine-suspension.ts +108 -0
  96. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/attempts/index.ts +36 -0
  97. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/attempts/job.ts +97 -0
  98. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/attempts/ports.ts +104 -0
  99. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/attempts/postgres-fence-adapter.ts +263 -0
  100. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/attempts/worker-terminal-projection.ts +64 -0
  101. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/projection/contracts.ts +29 -0
  102. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/projection/gateway-adapter.ts +56 -0
  103. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/projection/index.ts +15 -0
  104. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/projection/job.ts +65 -0
  105. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/projection/ports.ts +17 -0
  106. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/sandbox-cleanup/contracts.ts +42 -0
  107. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/sandbox-cleanup/index.ts +17 -0
  108. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/sandbox-cleanup/job.ts +142 -0
  109. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/sandbox-cleanup/ports.ts +42 -0
  110. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/sandbox-cleanup/postgres-adapter.ts +102 -0
  111. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/terminal/contracts.ts +60 -0
  112. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/terminal/index.ts +16 -0
  113. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/terminal/job.ts +78 -0
  114. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/terminal/ports.ts +54 -0
  115. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/terminal/postgres-adapter.ts +71 -0
  116. package/dist/bundling-sources/shared_libs/play-runtime/play-runtime-batching-registry.ts +4 -0
  117. package/dist/bundling-sources/shared_libs/play-runtime/protocol.ts +2 -0
  118. package/dist/bundling-sources/shared_libs/play-runtime/receipt-status.ts +5 -8
  119. package/dist/bundling-sources/shared_libs/play-runtime/run-failure.ts +3 -5
  120. package/dist/bundling-sources/shared_libs/play-runtime/run-identity.ts +168 -0
  121. package/dist/bundling-sources/shared_libs/play-runtime/run-ledger.ts +44 -5
  122. package/dist/bundling-sources/shared_libs/play-runtime/runner-app/child-play-resolver.ts +26 -0
  123. package/dist/bundling-sources/shared_libs/play-runtime/runner-app/index.ts +3662 -0
  124. package/dist/bundling-sources/shared_libs/play-runtime/runner-app/progress-sidecar.ts +47 -0
  125. package/dist/bundling-sources/shared_libs/play-runtime/runner-app/runtime-deadline.ts +84 -0
  126. package/dist/bundling-sources/shared_libs/play-runtime/runner-app/runtime-gateway-transport.ts +91 -0
  127. package/dist/bundling-sources/shared_libs/play-runtime/runner-app/runtime-heartbeat.ts +424 -0
  128. package/dist/bundling-sources/shared_libs/play-runtime/runner-app/runtime-progress-push.ts +321 -0
  129. package/dist/bundling-sources/shared_libs/play-runtime/runner-app/runtime-sheet-persistence-retry.ts +110 -0
  130. package/dist/bundling-sources/shared_libs/play-runtime/runner-app/runtime-terminal-push.ts +625 -0
  131. package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/backends/daytona-lifecycle.ts +72 -9
  132. package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/backends/daytona-payload-transport.ts +6 -12
  133. package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/backends/daytona.ts +19 -0
  134. package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/bundle.ts +0 -1
  135. package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/runtime-sandbox-reconciliation.ts +14 -44
  136. package/dist/bundling-sources/shared_libs/play-runtime/runtime-api.ts +103 -208
  137. package/dist/bundling-sources/shared_libs/play-runtime/runtime-authority.ts +201 -0
  138. package/dist/bundling-sources/shared_libs/play-runtime/runtime-env.ts +6 -0
  139. package/dist/bundling-sources/shared_libs/play-runtime/runtime-operation-contract.ts +67 -0
  140. package/dist/bundling-sources/shared_libs/play-runtime/runtime-release-environment.ts +2 -0
  141. package/dist/bundling-sources/shared_libs/play-runtime/runtime-sandbox-contract.ts +68 -0
  142. package/dist/bundling-sources/shared_libs/play-runtime/runtime-scheduler-topology.ts +14 -2
  143. package/dist/bundling-sources/shared_libs/play-runtime/runtime-telemetry.ts +108 -0
  144. package/dist/bundling-sources/shared_libs/play-runtime/sandbox-runs/contract.ts +4 -0
  145. package/dist/bundling-sources/shared_libs/play-runtime/sandbox-runs/runner-backend-adapter.ts +3 -0
  146. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backend.ts +7 -0
  147. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/absurd-deadline-reconciliation.ts +88 -0
  148. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/absurd-play-deploy-task.ts +124 -0
  149. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/absurd-play-run-task.ts +68 -0
  150. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/absurd-pool.ts +193 -0
  151. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/absurd-queue-lifecycle.ts +269 -0
  152. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/absurd-queue-suffix.ts +73 -0
  153. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/absurd-runtime-worker.ts +6642 -0
  154. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/absurd-shared.ts +897 -0
  155. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/absurd-worker-metrics.ts +120 -0
  156. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/absurd-worker-required-env.ts +76 -0
  157. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/absurd.ts +476 -0
  158. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/gateway-heavy-request-admission.ts +47 -0
  159. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/gateway-progress-registry.ts +147 -0
  160. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/index.ts +27 -0
  161. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/lazy.ts +50 -0
  162. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/play-run-recovery.ts +98 -0
  163. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/postgres-budget-state.ts +260 -0
  164. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/postgres-pool.ts +1416 -0
  165. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/postgres-progress.ts +1255 -0
  166. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/postgres-rate-state.ts +942 -0
  167. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/postgres.ts +14636 -0
  168. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/receipt-gateway.ts +888 -0
  169. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/run-ledger-outbox-recovery.ts +355 -0
  170. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/run-terminal-transition.ts +46 -0
  171. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/runner-push.ts +60 -0
  172. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/runtime-api-origin.ts +33 -0
  173. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/runtime-receipt-gateway-health.ts +64 -0
  174. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/runtime-sandbox-capacity.ts +835 -0
  175. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/runtime-sandbox-ledger-reconciliation.ts +1218 -0
  176. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/runtime-sandbox-operation.ts +207 -0
  177. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/runtime-scheduler-schema.ts +10 -0
  178. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/scheduler-capacity.ts +123 -0
  179. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/scheduler-launch-read-observability.ts +78 -0
  180. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/submit-admission.ts +169 -0
  181. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/terminal-contract.ts +20 -0
  182. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/worker-queue-metrics.ts +34 -0
  183. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/worker-resource-metrics.ts +249 -0
  184. package/dist/bundling-sources/shared_libs/play-runtime/sheet-attempt-sql.ts +7 -0
  185. package/dist/bundling-sources/shared_libs/play-runtime/step-progress.ts +296 -0
  186. package/dist/bundling-sources/shared_libs/play-runtime/tool-call/native-batch.ts +3 -3
  187. package/dist/bundling-sources/shared_libs/play-runtime/tool-call/runtime-step-receipts-adapter.ts +20 -1
  188. package/dist/bundling-sources/shared_libs/play-runtime/tool-execute-retry-policy.ts +60 -15
  189. package/dist/bundling-sources/shared_libs/play-runtime/tool-execution-outcome.ts +20 -0
  190. package/dist/bundling-sources/shared_libs/play-runtime/transient-service-error.ts +12 -0
  191. package/dist/bundling-sources/shared_libs/play-runtime/vercel-protection.ts +14 -1
  192. package/dist/bundling-sources/shared_libs/play-runtime/webhook-receipt-retry.ts +50 -0
  193. package/dist/bundling-sources/shared_libs/play-runtime/work-receipt-storage-contract.ts +165 -0
  194. package/dist/bundling-sources/shared_libs/play-runtime/work-receipts.ts +15 -23
  195. package/dist/bundling-sources/shared_libs/play-runtime/workflow-executor-auth.ts +169 -0
  196. package/dist/bundling-sources/shared_libs/play-runtime/zerobounce-batching.ts +122 -0
  197. package/dist/bundling-sources/shared_libs/plays/artifact-types.ts +2 -0
  198. package/dist/bundling-sources/shared_libs/plays/bundling/repository-adapter.ts +24 -0
  199. package/dist/bundling-sources/shared_libs/plays/child-run-projection.ts +174 -0
  200. package/dist/bundling-sources/shared_libs/plays/contracts.ts +2 -0
  201. package/dist/bundling-sources/shared_libs/plays/deploy/api-client.ts +267 -0
  202. package/dist/bundling-sources/shared_libs/plays/deploy/control-plane-types.ts +73 -0
  203. package/dist/bundling-sources/shared_libs/plays/deploy/manifest.ts +162 -0
  204. package/dist/bundling-sources/shared_libs/plays/deploy/project-serializer.ts +87 -0
  205. package/dist/bundling-sources/shared_libs/plays/deploy/source-file-path.ts +26 -0
  206. package/dist/bundling-sources/shared_libs/plays/deploy/target-paths.ts +36 -0
  207. package/dist/bundling-sources/shared_libs/plays/deployment-status.ts +1 -1
  208. package/dist/bundling-sources/shared_libs/plays/docflow.ts +1 -1
  209. package/dist/bundling-sources/shared_libs/plays/launch/input-contract.ts +400 -0
  210. package/dist/bundling-sources/shared_libs/plays/launch/prepare.ts +96 -0
  211. package/dist/bundling-sources/shared_libs/plays/local-file-discovery.ts +385 -0
  212. package/dist/bundling-sources/shared_libs/plays/play-grep-search.ts +112 -0
  213. package/dist/bundling-sources/shared_libs/plays/play-reference.ts +117 -0
  214. package/dist/bundling-sources/shared_libs/plays/run-input-summary.ts +260 -0
  215. package/dist/bundling-sources/shared_libs/plays/run-summary-types.ts +49 -0
  216. package/dist/bundling-sources/shared_libs/plays/secrets/errors.ts +19 -0
  217. package/dist/bundling-sources/shared_libs/plays/share/copy.ts +271 -0
  218. package/dist/bundling-sources/shared_libs/plays/share/metrics.ts +140 -0
  219. package/dist/bundling-sources/shared_libs/plays/share/public-read-model.ts +86 -0
  220. package/dist/bundling-sources/shared_libs/plays/share/seo-quality.ts +181 -0
  221. package/dist/bundling-sources/shared_libs/plays/share/static-pipeline-summary.ts +658 -0
  222. package/dist/bundling-sources/shared_libs/plays/share/types.ts +197 -0
  223. package/dist/bundling-sources/shared_libs/plays/sheet-filter.ts +347 -0
  224. package/dist/bundling-sources/shared_libs/plays/slack-hitl-timeout-error.ts +37 -0
  225. package/dist/bundling-sources/shared_libs/plays/standard-webhooks.ts +117 -0
  226. package/dist/bundling-sources/shared_libs/plays/static-pipeline.ts +6 -1
  227. package/dist/bundling-sources/shared_libs/plays/status-result.ts +388 -0
  228. package/dist/bundling-sources/shared_libs/plays/tool-result-types.ts +1 -1
  229. package/dist/bundling-sources/shared_libs/plays/transform-factor-structure.ts +377 -0
  230. package/dist/bundling-sources/shared_libs/plays/webhook-payload.ts +113 -0
  231. package/dist/bundling-sources/shared_libs/product-notifications/configuration.ts +7 -1
  232. package/dist/bundling-sources/shared_libs/product-notifications/default-policy.ts +3 -2
  233. package/dist/bundling-sources/shared_libs/product-notifications/overflow.ts +18 -0
  234. package/dist/bundling-sources/shared_libs/product-notifications/rolling-limit.ts +24 -0
  235. package/dist/bundling-sources/shared_libs/product-notifications/slack-delivery.ts +624 -0
  236. package/dist/bundling-sources/shared_libs/product-notifications/slack-payload.ts +140 -0
  237. package/dist/bundling-sources/shared_libs/product-notifications/slack-transport.ts +75 -0
  238. package/dist/bundling-sources/shared_libs/runtime-env.ts +6 -0
  239. package/dist/bundling-sources/shared_libs/security/email-blacklist.ts +42 -0
  240. package/dist/bundling-sources/shared_libs/security/header-safe-env.ts +10 -3
  241. package/dist/bundling-sources/shared_libs/security/slack-sanitize.ts +133 -0
  242. package/dist/cli/getting-started.d.mts +52 -0
  243. package/dist/cli/getting-started.d.ts +52 -0
  244. package/dist/cli/getting-started.js +65 -0
  245. package/dist/cli/getting-started.mjs +36 -0
  246. package/dist/cli/index.d.mts +9 -0
  247. package/dist/cli/index.d.ts +9 -0
  248. package/dist/cli/index.js +895 -407
  249. package/dist/cli/index.mjs +893 -414
  250. package/dist/{compiler-manifest-DsLbQaew.d.mts → compiler-manifest-x14KL83E.d.mts} +4 -2
  251. package/dist/{compiler-manifest-DsLbQaew.d.ts → compiler-manifest-x14KL83E.d.ts} +4 -2
  252. package/dist/index.d.mts +124 -154
  253. package/dist/index.d.ts +124 -154
  254. package/dist/index.js +132 -28
  255. package/dist/index.mjs +132 -28
  256. package/dist/install-integrity.json +182 -2
  257. package/dist/monitor-fleet-contract.d.mts +131 -0
  258. package/dist/monitor-fleet-contract.d.ts +131 -0
  259. package/dist/monitor-fleet-contract.js +406 -0
  260. package/dist/monitor-fleet-contract.mjs +367 -0
  261. package/dist/plays/bundle-play-file.d.mts +2 -2
  262. package/dist/plays/bundle-play-file.d.ts +2 -2
  263. package/dist/release.d.mts +255 -0
  264. package/dist/release.d.ts +255 -0
  265. package/dist/release.js +210 -0
  266. package/dist/release.mjs +183 -0
  267. package/package.json +21 -4
@@ -0,0 +1,21 @@
1
+ import { spawnSync } from 'node:child_process';
2
+
3
+ function run(command: string, args: string[], quiet = false): boolean {
4
+ const result = spawnSync(command, args, {
5
+ encoding: 'utf8',
6
+ stdio: quiet ? 'pipe' : 'inherit',
7
+ });
8
+ return result.status === 0;
9
+ }
10
+
11
+ /** Shared immutable-tag presence probe for image builds and rollback planning. */
12
+ export function runtimeImageManifestExists(image: string): boolean {
13
+ return run('docker', ['manifest', 'inspect', image], true);
14
+ }
15
+
16
+ /** Authenticate the local docker client against the Fly registry. */
17
+ export function authenticateFlyRegistry(): void {
18
+ if (!run('flyctl', ['auth', 'docker'])) {
19
+ throw new Error('Fly registry authentication failed.');
20
+ }
21
+ }
@@ -0,0 +1,40 @@
1
+ import type { ChildProcess } from 'node:child_process';
2
+
3
+ type CancellableChildProcess = Pick<
4
+ ChildProcess,
5
+ 'exitCode' | 'kill' | 'pid' | 'signalCode'
6
+ >;
7
+
8
+ /**
9
+ * On POSIX, a detached child leads a new process group. Signalling its
10
+ * negative pid reaches the command and everything it started (notably the
11
+ * synchronous `flyctl` calls inside Bun scripts). That prevents recovery from
12
+ * racing an orphaned provider mutation after GitHub cancels the parent job.
13
+ */
14
+ export function terminateChildProcessTree(
15
+ child: CancellableChildProcess,
16
+ signal: NodeJS.Signals,
17
+ ): void {
18
+ if (child.exitCode !== null || child.signalCode !== null) return;
19
+
20
+ if (process.platform !== 'win32' && child.pid !== undefined) {
21
+ try {
22
+ process.kill(-child.pid, signal);
23
+ return;
24
+ } catch (error) {
25
+ if (error instanceof Error && 'code' in error && error.code === 'ESRCH') {
26
+ return;
27
+ }
28
+ throw new Error(
29
+ `Could not send ${signal} to process group ${child.pid}: ${error instanceof Error ? error.message : String(error)}`,
30
+ { cause: error },
31
+ );
32
+ }
33
+ }
34
+
35
+ child.kill(signal);
36
+ }
37
+
38
+ export function shouldCreateDetachedProcessGroup(): boolean {
39
+ return process.platform !== 'win32';
40
+ }
@@ -0,0 +1,262 @@
1
+ /**
2
+ * Exact-machine gateway drain primitives.
3
+ *
4
+ * A Fly cordon is the admission boundary. It prevents new public ingress but
5
+ * intentionally does not terminate an accepted request. This module makes
6
+ * deletion depend on the old Machine's own live-work gauge instead of a sleep
7
+ * or the deploy runner still being alive.
8
+ */
9
+ import { FlyMachinesClient } from './fly-machines';
10
+ import type { FlyMachine } from './fly-machine-lifecycle';
11
+
12
+ export const GATEWAY_REQUESTS_ACTIVE_METRIC =
13
+ 'deepline_runtime_gateway_requests_active';
14
+ export const GATEWAY_PRIVATE_METRICS_RETRY_DELAYS_MS = [250, 750] as const;
15
+
16
+ /**
17
+ * The release scaler runs inside Fly's private network and addresses a
18
+ * draining Machine directly over 6PN.
19
+ *
20
+ * Do not "simplify" this to a public `fly-force-instance-id` probe. A drain
21
+ * proof must read the gauge on one exact Machine with no possibility of
22
+ * another Machine answering, and 6PN is the only addressing that cannot be
23
+ * re-routed by the proxy. (An earlier comment here claimed a cordoned Machine
24
+ * is unreachable via `fly-force-instance-id`; the receipt gateway proves the
25
+ * opposite on every release, so that is not the reason.)
26
+ */
27
+ export function gatewayPrivateMetricsUrl(input: {
28
+ app: string;
29
+ machineId: string;
30
+ }): string {
31
+ return `http://${input.machineId}.vm.${input.app}.internal:8789/metrics`;
32
+ }
33
+
34
+ export function parseGatewayRequestsActiveGauge(metrics: string): number {
35
+ const match = metrics.match(
36
+ new RegExp(`^${GATEWAY_REQUESTS_ACTIVE_METRIC}\\s+(\\d+)\\s*$`, 'm'),
37
+ );
38
+ if (!match) {
39
+ throw new Error(
40
+ 'Gateway drain proof is missing the live-requests-active metric. This Machine predates the drain contract and must not be deleted by the generic controller.',
41
+ );
42
+ }
43
+ const value = Number(match[1]);
44
+ if (!Number.isSafeInteger(value) || value < 0) {
45
+ throw new Error(
46
+ 'Gateway drain proof reported an invalid live request count.',
47
+ );
48
+ }
49
+ return value;
50
+ }
51
+
52
+ export type GatewayDrainMachine = Pick<FlyMachine, 'id' | 'state' | 'cordoned'>;
53
+
54
+ function isRetryablePrivateMetricsProbeError(error: unknown): boolean {
55
+ if (error instanceof DOMException && error.name === 'AbortError') return true;
56
+ const message = error instanceof Error ? error.message : String(error);
57
+ return /unable to connect|fetch failed|econnreset|econnrefused|etimedout|network|socket/i.test(
58
+ message,
59
+ );
60
+ }
61
+
62
+ async function readPrivateGatewayMetrics(input: {
63
+ app: string;
64
+ machineId: string;
65
+ fetchImpl: typeof fetch;
66
+ retryDelaysMs?: readonly number[];
67
+ sleep?: (delayMs: number) => Promise<void>;
68
+ }): Promise<string> {
69
+ const retryDelaysMs =
70
+ input.retryDelaysMs ?? GATEWAY_PRIVATE_METRICS_RETRY_DELAYS_MS;
71
+ const sleep =
72
+ input.sleep ??
73
+ ((delayMs: number) =>
74
+ new Promise<void>((resolve) => setTimeout(resolve, delayMs)));
75
+ let lastError: unknown;
76
+
77
+ for (let attempt = 0; attempt <= retryDelaysMs.length; attempt += 1) {
78
+ try {
79
+ const response = await input.fetchImpl(
80
+ gatewayPrivateMetricsUrl({
81
+ app: input.app,
82
+ machineId: input.machineId,
83
+ }),
84
+ { signal: AbortSignal.timeout(10_000) },
85
+ );
86
+ if (!response.ok) {
87
+ throw new Error(
88
+ `Gateway drain metrics probe for ${input.machineId} failed with HTTP ${response.status}.`,
89
+ );
90
+ }
91
+ if (
92
+ response.headers.get('x-deepline-gateway-machine-id') !==
93
+ input.machineId
94
+ ) {
95
+ throw new Error(
96
+ `Gateway drain metrics probe did not reach exact Machine ${input.machineId}.`,
97
+ );
98
+ }
99
+ return await response.text();
100
+ } catch (error) {
101
+ lastError = error;
102
+ if (
103
+ attempt === retryDelaysMs.length ||
104
+ !isRetryablePrivateMetricsProbeError(error)
105
+ ) {
106
+ throw error;
107
+ }
108
+ await sleep(retryDelaysMs[attempt]!);
109
+ }
110
+ }
111
+
112
+ throw lastError;
113
+ }
114
+
115
+ /**
116
+ * Return only source Machines which are safely proven empty. An absent source
117
+ * is already provider-confirmed gone. A source that is still public is a
118
+ * sequencing fault, never an excuse to cordon/delete it implicitly.
119
+ */
120
+ export async function selectDrainedGatewaySourceMachines(input: {
121
+ sourceMachineIds: readonly string[];
122
+ inventory: readonly GatewayDrainMachine[];
123
+ readMetrics: (machineId: string) => Promise<string>;
124
+ }): Promise<string[]> {
125
+ const uniqueSourceIds = [...new Set(input.sourceMachineIds)];
126
+ if (uniqueSourceIds.length !== input.sourceMachineIds.length) {
127
+ throw new Error('Gateway drain source identities must be unique.');
128
+ }
129
+ const live = uniqueSourceIds
130
+ .map((id) => input.inventory.find((machine) => machine.id === id))
131
+ .filter((machine): machine is GatewayDrainMachine => Boolean(machine));
132
+ if (live.some((machine) => machine.cordoned !== true)) {
133
+ throw new Error(
134
+ 'Gateway drain refuses a source Machine that is still public; cut over and cordon it first.',
135
+ );
136
+ }
137
+ // A provider-confirmed stopped/suspended Machine cannot retain a live
138
+ // request. Treat it as a deletion-resume candidate without probing its now
139
+ // unreachable metrics endpoint; otherwise an interruption between stop and
140
+ // delete would strand the exact source forever.
141
+ const alreadyStopped = live
142
+ .filter((machine) => ['stopped', 'suspended'].includes(machine.state ?? ''))
143
+ .map((machine) => machine.id!);
144
+ const observed: string[] = [];
145
+ for (const machine of live.filter(
146
+ (entry) => !['stopped', 'suspended'].includes(entry.state ?? ''),
147
+ )) {
148
+ if (
149
+ parseGatewayRequestsActiveGauge(await input.readMetrics(machine.id!)) ===
150
+ 0
151
+ ) {
152
+ observed.push(machine.id!);
153
+ }
154
+ }
155
+ return [...alreadyStopped, ...observed];
156
+ }
157
+
158
+ /** One bounded reconciliation pass. Nonzero work is normal and is retained
159
+ * for the next controller tick; metric/identity errors are intentionally loud
160
+ * so no release can quietly fall back to a timeout-based delete. */
161
+ export async function reconcileGatewaySourceDrain(input: {
162
+ app: string;
163
+ client: FlyMachinesClient;
164
+ sourceMachineIds: readonly string[];
165
+ fetchImpl?: typeof fetch;
166
+ inventory?: readonly FlyMachine[];
167
+ retryDelaysMs?: readonly number[];
168
+ sleep?: (delayMs: number) => Promise<void>;
169
+ }): Promise<{ deletedMachineIds: string[]; pendingMachineIds: string[] }> {
170
+ const inventory = [
171
+ ...(input.inventory ?? (await input.client.listMachines())),
172
+ ];
173
+ const sourceIds = [...new Set(input.sourceMachineIds)];
174
+ const fetchImpl = input.fetchImpl ?? fetch;
175
+ const deletedMachineIds = await selectDrainedGatewaySourceMachines({
176
+ sourceMachineIds: sourceIds,
177
+ inventory,
178
+ readMetrics: async (machineId) => {
179
+ return await readPrivateGatewayMetrics({
180
+ app: input.app,
181
+ machineId,
182
+ fetchImpl,
183
+ retryDelaysMs: input.retryDelaysMs,
184
+ sleep: input.sleep,
185
+ });
186
+ },
187
+ });
188
+ if (deletedMachineIds.length > 0) {
189
+ // Fly's client is asynchronous, so keep the provider inventory fresh
190
+ // between stop and delete rather than pretending the pre-stop snapshot is
191
+ // authoritative. Deletion is still exact-ID and provider-confirmed.
192
+ await Promise.all(
193
+ deletedMachineIds
194
+ .filter((machineId) => {
195
+ const machine = inventory.find((entry) => entry.id === machineId);
196
+ return !['stopped', 'suspended'].includes(machine?.state ?? '');
197
+ })
198
+ .map((machineId) =>
199
+ input.client.stopMachine(machineId, {
200
+ signal: 'SIGTERM',
201
+ timeout: '300s',
202
+ }),
203
+ ),
204
+ );
205
+ const deadline = Date.now() + 10 * 60_000;
206
+ for (;;) {
207
+ const current = await input.client.listMachines();
208
+ const remaining = current.filter((machine) =>
209
+ deletedMachineIds.includes(machine.id ?? ''),
210
+ );
211
+ if (
212
+ remaining.every((machine) =>
213
+ ['stopped', 'suspended'].includes(machine.state ?? ''),
214
+ )
215
+ ) {
216
+ if (remaining.some((machine) => machine.cordoned !== true)) {
217
+ throw new Error(
218
+ 'Gateway drain source Machine became public before deletion.',
219
+ );
220
+ }
221
+ await Promise.all(
222
+ remaining.map((machine) =>
223
+ input.client.deleteMachine(machine.id!, false),
224
+ ),
225
+ );
226
+ break;
227
+ }
228
+ if (Date.now() >= deadline) {
229
+ throw new Error(
230
+ `Gateway drain sources did not stop within 600000 ms: ${remaining.map((machine) => `${machine.id}=${machine.state}`).join(', ')}.`,
231
+ );
232
+ }
233
+ await new Promise((resolve) => setTimeout(resolve, 5_000));
234
+ }
235
+ for (;;) {
236
+ const providerMachineIds = new Set(
237
+ (await input.client.listMachines())
238
+ .map((machine) => machine.id)
239
+ .filter((id): id is string => Boolean(id)),
240
+ );
241
+ if (
242
+ deletedMachineIds.every(
243
+ (machineId) => !providerMachineIds.has(machineId),
244
+ )
245
+ ) {
246
+ break;
247
+ }
248
+ if (Date.now() >= deadline) {
249
+ throw new Error('Gateway source deletion is not provider-confirmed.');
250
+ }
251
+ await new Promise((resolve) => setTimeout(resolve, 5_000));
252
+ }
253
+ }
254
+ return {
255
+ deletedMachineIds,
256
+ pendingMachineIds: sourceIds.filter(
257
+ (id) =>
258
+ inventory.some((machine) => machine.id === id) &&
259
+ !deletedMachineIds.includes(id),
260
+ ),
261
+ };
262
+ }
@@ -0,0 +1,98 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { existsSync, readdirSync, readFileSync, statSync } from 'node:fs';
3
+ import { join, relative } from 'node:path';
4
+
5
+ /**
6
+ * A deliberately broad, content-addressed definition of code that can affect
7
+ * the Vercel ↔ Fly runtime boundary. This is release evidence and an exact
8
+ * cleanup selector, not a versioned customer contract: changing any input
9
+ * automatically changes the fingerprint, so there is no edition number to
10
+ * remember to bump.
11
+ *
12
+ * Every production revision builds an immutable lane. Keep this broad so the
13
+ * evidence continues to describe all code material available to that worker.
14
+ */
15
+ export const RUNTIME_SURFACE_INPUTS = [
16
+ 'packages/integrations/bettercontact/BetterContactOpenAPI.json',
17
+ // Keep these in step with the runtime-worker Dockerfile COPY inputs. The
18
+ // worker does not necessarily import every one of these files today, but
19
+ // hashing the material available to it makes omitted future imports safe.
20
+ '.dockerignore',
21
+ 'apps/deepline-api/package.json',
22
+ 'apps/deepline-api/src/lib',
23
+ 'apps/play-runner',
24
+ 'apps/absurd-runtime-worker',
25
+ 'apps/absurd-release-scaler',
26
+ 'apps/ledger-outbox-projector',
27
+ 'apps/runtime-execution-relay',
28
+ 'apps/runtime-receipt-gateway',
29
+ 'apps/ojos/scripts/build-usage-catalog.ts',
30
+ 'bunfig.toml',
31
+ 'contracts',
32
+ 'deploy',
33
+ 'packages',
34
+ 'patches',
35
+ 'scripts',
36
+ 'shared_libs',
37
+ 'apps/slack-agent/package.json',
38
+ 'apps/deepline-api/src/app/api',
39
+ // Includes scheduler, billing, integration, PlanetScale/Neon, and runtime
40
+ // code without coupling the gate to a hand-maintained subdirectory list.
41
+ 'src/lib',
42
+ '.github/workflows/fly-absurd-worker.yml',
43
+ 'bun.lock',
44
+ 'package.json',
45
+ 'tsconfig.apps.play-runner.json',
46
+ 'tsconfig.json',
47
+ 'turbo.json',
48
+ 'vercel.sh',
49
+ ] as const;
50
+
51
+ const RUNTIME_SURFACE_EXCLUDED_DIRECTORY_NAMES = new Set(['node_modules']);
52
+
53
+ function collectFiles(root: string, path: string, files: string[]): void {
54
+ const absolutePath = join(root, path);
55
+ if (!existsSync(absolutePath)) return;
56
+ if (statSync(absolutePath).isFile()) {
57
+ files.push(path);
58
+ return;
59
+ }
60
+ for (const entry of readdirSync(absolutePath, { withFileTypes: true }).sort(
61
+ (left, right) => left.name.localeCompare(right.name),
62
+ )) {
63
+ // Dependency installation may materialize workspace-local node_modules
64
+ // after release planning. Fly excludes those directories from the Docker
65
+ // context, so including them here would make identical source revisions
66
+ // produce different planned and built fingerprints.
67
+ if (
68
+ entry.isDirectory() &&
69
+ RUNTIME_SURFACE_EXCLUDED_DIRECTORY_NAMES.has(entry.name)
70
+ ) {
71
+ continue;
72
+ }
73
+ const child = relative(root, join(absolutePath, entry.name));
74
+ if (entry.isDirectory()) collectFiles(root, child, files);
75
+ else if (entry.isFile()) files.push(child);
76
+ }
77
+ }
78
+
79
+ export function runtimeSurfaceFiles(root = process.cwd()): string[] {
80
+ const files: string[] = [];
81
+ for (const input of RUNTIME_SURFACE_INPUTS) collectFiles(root, input, files);
82
+ return [...new Set(files)].sort();
83
+ }
84
+
85
+ export function runtimeSurfaceFingerprint(root = process.cwd()): {
86
+ sha256: string;
87
+ files: string[];
88
+ } {
89
+ const files = runtimeSurfaceFiles(root);
90
+ const hash = createHash('sha256');
91
+ for (const file of files) {
92
+ hash.update(file);
93
+ hash.update('\0');
94
+ hash.update(readFileSync(join(root, file)));
95
+ hash.update('\0');
96
+ }
97
+ return { sha256: hash.digest('hex'), files };
98
+ }