deepline 0.3.89 → 0.3.90

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 (211) hide show
  1. package/contracts/install-commands.json +29 -0
  2. package/dist/bundling-sources/sdk/src/client.ts +120 -37
  3. package/dist/bundling-sources/sdk/src/index.ts +4 -0
  4. package/dist/bundling-sources/sdk/src/pagination.ts +25 -0
  5. package/dist/bundling-sources/sdk/src/plays/bundle-play-file.ts +1 -1
  6. package/dist/bundling-sources/sdk/src/release.ts +16 -9
  7. package/dist/bundling-sources/sdk/src/types.ts +23 -0
  8. package/dist/bundling-sources/shared_libs/monitors/analytics-public.ts +10 -0
  9. package/dist/bundling-sources/shared_libs/monitors/http-error-response.ts +3 -0
  10. package/dist/bundling-sources/shared_libs/monitors/inbound-queue.ts +4 -4
  11. package/dist/bundling-sources/shared_libs/monitors/inventory-reconciliation.ts +59 -0
  12. package/dist/bundling-sources/shared_libs/monitors/lifecycle-notifications.ts +7 -9
  13. package/dist/bundling-sources/shared_libs/monitors/package.json +7 -0
  14. package/dist/bundling-sources/shared_libs/monitors/provider-monitor-batch-operation.ts +44 -2
  15. package/dist/bundling-sources/shared_libs/monitors/provider-monitor-consumer-health.ts +2 -2
  16. package/dist/bundling-sources/shared_libs/monitors/provider-monitor-identity-claims.ts +2 -2
  17. package/dist/bundling-sources/shared_libs/monitors/provider-monitor-public-aliases.ts +1 -1
  18. package/dist/bundling-sources/shared_libs/monitors/signal-radars/inbound-dead-letter.ts +245 -0
  19. package/dist/bundling-sources/shared_libs/monitors/signal-radars/inbound-message.ts +38 -0
  20. package/dist/bundling-sources/shared_libs/monitors/signal-radars/inbound-queue-ack-probe.ts +94 -0
  21. package/dist/bundling-sources/shared_libs/monitors/signal-radars/inbound-queue-delivery.ts +60 -0
  22. package/dist/bundling-sources/shared_libs/monitors/signal-radars/inbound-queue.ts +60 -0
  23. package/dist/bundling-sources/shared_libs/monitors/snitcher-install-validation.ts +1 -1
  24. package/dist/bundling-sources/shared_libs/monitors/snitcher-ip2company.ts +2 -2
  25. package/dist/bundling-sources/shared_libs/monitors/snitcher-radar.ts +1 -1
  26. package/dist/bundling-sources/shared_libs/monitors/tracking-provider-integrations.ts +1 -1
  27. package/dist/bundling-sources/shared_libs/observability/build-context.ts +13 -0
  28. package/dist/bundling-sources/shared_libs/observability/log-metadata.ts +160 -0
  29. package/dist/bundling-sources/shared_libs/observability/request-context.ts +68 -0
  30. package/dist/bundling-sources/shared_libs/observability/scheduled-jobs.json +654 -0
  31. package/dist/bundling-sources/shared_libs/observability/scheduled-work-manual.ts +35 -0
  32. package/dist/bundling-sources/shared_libs/observability/scheduled-work.ts +5 -0
  33. package/dist/bundling-sources/shared_libs/play-data-plane/neon-constants.ts +9 -0
  34. package/dist/bundling-sources/shared_libs/play-data-plane/r2.ts +272 -0
  35. package/dist/bundling-sources/shared_libs/play-runtime/app-runtime-api.ts +45 -0
  36. package/dist/bundling-sources/shared_libs/play-runtime/async-operation.ts +66 -1
  37. package/dist/bundling-sources/shared_libs/play-runtime/async-play-invocation.ts +0 -1
  38. package/dist/bundling-sources/shared_libs/play-runtime/bounceban-batching.ts +137 -0
  39. package/dist/bundling-sources/shared_libs/play-runtime/context.ts +779 -140
  40. package/dist/bundling-sources/shared_libs/play-runtime/ctx-types.ts +46 -0
  41. package/dist/bundling-sources/shared_libs/play-runtime/daytona-payload-contract.ts +68 -0
  42. package/dist/bundling-sources/shared_libs/play-runtime/daytona-sandbox-janitor.ts +103 -0
  43. package/dist/bundling-sources/shared_libs/play-runtime/daytona-sandbox-reaper.ts +725 -0
  44. package/dist/bundling-sources/shared_libs/play-runtime/durable-call-cache.ts +29 -0
  45. package/dist/bundling-sources/shared_libs/play-runtime/execution-capabilities.ts +23 -0
  46. package/dist/bundling-sources/shared_libs/play-runtime/execution-gateway-invocation-fence.ts +442 -0
  47. package/dist/bundling-sources/shared_libs/play-runtime/execution-protocol.ts +3 -3
  48. package/dist/bundling-sources/shared_libs/play-runtime/fixture-behavior.ts +18 -0
  49. package/dist/bundling-sources/shared_libs/play-runtime/governor/app-runtime-rate-state-backend.ts +9 -0
  50. package/dist/bundling-sources/shared_libs/play-runtime/governor/policy.ts +1 -1
  51. package/dist/bundling-sources/shared_libs/play-runtime/governor/rate-state-backend.ts +1 -1
  52. package/dist/bundling-sources/shared_libs/play-runtime/integration-operation-reader-fence/contracts.ts +66 -0
  53. package/dist/bundling-sources/shared_libs/play-runtime/integration-operation-reader-fence/job.ts +145 -0
  54. package/dist/bundling-sources/shared_libs/play-runtime/integration-operation-reader-fence/ports.ts +21 -0
  55. package/dist/bundling-sources/shared_libs/play-runtime/integration-operation-reader-fence/postgres-store.ts +170 -0
  56. package/dist/bundling-sources/shared_libs/play-runtime/internal-bootstrap-token.ts +1322 -0
  57. package/dist/bundling-sources/shared_libs/play-runtime/internal-step-ids.ts +2 -2
  58. package/dist/bundling-sources/shared_libs/play-runtime/lane-retirement-gate.ts +1 -1
  59. package/dist/bundling-sources/shared_libs/play-runtime/launch-source-policy.ts +112 -0
  60. package/dist/bundling-sources/shared_libs/play-runtime/map-execution-frame.ts +8 -0
  61. package/dist/bundling-sources/shared_libs/play-runtime/perf-trace.ts +127 -0
  62. package/dist/bundling-sources/shared_libs/play-runtime/play-artifact-runtime-contract.ts +5 -0
  63. package/dist/bundling-sources/shared_libs/play-runtime/play-run-recovery-policy.ts +24 -1
  64. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/admission/contracts.ts +56 -0
  65. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/admission/index.ts +13 -0
  66. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/admission/job.ts +41 -0
  67. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/admission/ports.ts +17 -0
  68. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/admission/postgres-adapter.ts +54 -0
  69. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/attempts/contracts.ts +114 -0
  70. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/attempts/engine-suspension.ts +108 -0
  71. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/attempts/index.ts +36 -0
  72. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/attempts/job.ts +97 -0
  73. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/attempts/ports.ts +104 -0
  74. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/attempts/postgres-fence-adapter.ts +263 -0
  75. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/attempts/worker-terminal-projection.ts +64 -0
  76. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/projection/contracts.ts +29 -0
  77. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/projection/gateway-adapter.ts +56 -0
  78. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/projection/index.ts +15 -0
  79. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/projection/job.ts +65 -0
  80. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/projection/ports.ts +17 -0
  81. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/sandbox-cleanup/contracts.ts +42 -0
  82. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/sandbox-cleanup/index.ts +17 -0
  83. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/sandbox-cleanup/job.ts +142 -0
  84. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/sandbox-cleanup/ports.ts +42 -0
  85. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/sandbox-cleanup/postgres-adapter.ts +102 -0
  86. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/terminal/contracts.ts +60 -0
  87. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/terminal/index.ts +16 -0
  88. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/terminal/job.ts +78 -0
  89. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/terminal/ports.ts +54 -0
  90. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/terminal/postgres-adapter.ts +71 -0
  91. package/dist/bundling-sources/shared_libs/play-runtime/play-runtime-batching-registry.ts +4 -0
  92. package/dist/bundling-sources/shared_libs/play-runtime/protocol.ts +2 -0
  93. package/dist/bundling-sources/shared_libs/play-runtime/receipt-status.ts +5 -8
  94. package/dist/bundling-sources/shared_libs/play-runtime/run-failure.ts +3 -5
  95. package/dist/bundling-sources/shared_libs/play-runtime/run-identity.ts +168 -0
  96. package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/backends/daytona-lifecycle.ts +72 -9
  97. package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/backends/daytona-payload-transport.ts +6 -12
  98. package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/backends/daytona.ts +19 -0
  99. package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/bundle.ts +0 -1
  100. package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/runtime-sandbox-reconciliation.ts +14 -44
  101. package/dist/bundling-sources/shared_libs/play-runtime/runtime-api.ts +57 -205
  102. package/dist/bundling-sources/shared_libs/play-runtime/runtime-authority.ts +201 -0
  103. package/dist/bundling-sources/shared_libs/play-runtime/runtime-env.ts +6 -0
  104. package/dist/bundling-sources/shared_libs/play-runtime/runtime-operation-contract.ts +67 -0
  105. package/dist/bundling-sources/shared_libs/play-runtime/runtime-release-environment.ts +2 -0
  106. package/dist/bundling-sources/shared_libs/play-runtime/runtime-sandbox-contract.ts +68 -0
  107. package/dist/bundling-sources/shared_libs/play-runtime/runtime-scheduler-topology.ts +14 -2
  108. package/dist/bundling-sources/shared_libs/play-runtime/runtime-telemetry.ts +108 -0
  109. package/dist/bundling-sources/shared_libs/play-runtime/sandbox-runs/contract.ts +4 -0
  110. package/dist/bundling-sources/shared_libs/play-runtime/sandbox-runs/runner-backend-adapter.ts +3 -0
  111. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backend.ts +7 -0
  112. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/absurd-deadline-reconciliation.ts +88 -0
  113. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/absurd-play-deploy-task.ts +124 -0
  114. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/absurd-play-run-task.ts +68 -0
  115. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/absurd-pool.ts +193 -0
  116. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/absurd-queue-lifecycle.ts +269 -0
  117. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/absurd-queue-suffix.ts +73 -0
  118. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/absurd-runtime-worker.ts +6642 -0
  119. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/absurd-shared.ts +897 -0
  120. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/absurd-worker-metrics.ts +120 -0
  121. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/absurd-worker-required-env.ts +76 -0
  122. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/absurd.ts +476 -0
  123. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/gateway-heavy-request-admission.ts +47 -0
  124. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/gateway-progress-registry.ts +147 -0
  125. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/index.ts +27 -0
  126. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/lazy.ts +50 -0
  127. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/play-run-recovery.ts +98 -0
  128. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/postgres-budget-state.ts +260 -0
  129. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/postgres-pool.ts +1416 -0
  130. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/postgres-progress.ts +1255 -0
  131. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/postgres-rate-state.ts +942 -0
  132. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/postgres.ts +14636 -0
  133. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/receipt-gateway.ts +888 -0
  134. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/run-ledger-outbox-recovery.ts +355 -0
  135. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/run-terminal-transition.ts +46 -0
  136. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/runner-push.ts +60 -0
  137. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/runtime-api-origin.ts +33 -0
  138. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/runtime-receipt-gateway-health.ts +64 -0
  139. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/runtime-sandbox-capacity.ts +835 -0
  140. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/runtime-sandbox-ledger-reconciliation.ts +1218 -0
  141. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/runtime-sandbox-operation.ts +207 -0
  142. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/runtime-scheduler-schema.ts +10 -0
  143. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/scheduler-capacity.ts +123 -0
  144. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/scheduler-launch-read-observability.ts +78 -0
  145. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/submit-admission.ts +169 -0
  146. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/terminal-contract.ts +20 -0
  147. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/worker-queue-metrics.ts +34 -0
  148. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/worker-resource-metrics.ts +249 -0
  149. package/dist/bundling-sources/shared_libs/play-runtime/sheet-attempt-sql.ts +7 -0
  150. package/dist/bundling-sources/shared_libs/play-runtime/step-progress.ts +296 -0
  151. package/dist/bundling-sources/shared_libs/play-runtime/tool-call/native-batch.ts +3 -3
  152. package/dist/bundling-sources/shared_libs/play-runtime/tool-call/runtime-step-receipts-adapter.ts +20 -1
  153. package/dist/bundling-sources/shared_libs/play-runtime/tool-execute-retry-policy.ts +60 -15
  154. package/dist/bundling-sources/shared_libs/play-runtime/tool-execution-outcome.ts +20 -0
  155. package/dist/bundling-sources/shared_libs/play-runtime/transient-service-error.ts +12 -0
  156. package/dist/bundling-sources/shared_libs/play-runtime/vercel-protection.ts +14 -1
  157. package/dist/bundling-sources/shared_libs/play-runtime/work-receipt-storage-contract.ts +165 -0
  158. package/dist/bundling-sources/shared_libs/play-runtime/work-receipts.ts +15 -23
  159. package/dist/bundling-sources/shared_libs/play-runtime/workflow-executor-auth.ts +169 -0
  160. package/dist/bundling-sources/shared_libs/play-runtime/zerobounce-batching.ts +122 -0
  161. package/dist/bundling-sources/shared_libs/plays/artifact-types.ts +2 -0
  162. package/dist/bundling-sources/shared_libs/plays/contracts.ts +2 -0
  163. package/dist/bundling-sources/shared_libs/plays/deployment-status.ts +1 -1
  164. package/dist/bundling-sources/shared_libs/plays/docflow.ts +1 -1
  165. package/dist/bundling-sources/shared_libs/plays/play-grep-search.ts +39 -0
  166. package/dist/bundling-sources/shared_libs/plays/share/copy.ts +271 -0
  167. package/dist/bundling-sources/shared_libs/plays/share/metrics.ts +140 -0
  168. package/dist/bundling-sources/shared_libs/plays/share/public-read-model.ts +86 -0
  169. package/dist/bundling-sources/shared_libs/plays/share/seo-quality.ts +181 -0
  170. package/dist/bundling-sources/shared_libs/plays/share/static-pipeline-summary.ts +658 -0
  171. package/dist/bundling-sources/shared_libs/plays/share/types.ts +197 -0
  172. package/dist/bundling-sources/shared_libs/plays/slack-hitl-timeout-error.ts +37 -0
  173. package/dist/bundling-sources/shared_libs/plays/static-pipeline.ts +6 -1
  174. package/dist/bundling-sources/shared_libs/plays/tool-result-types.ts +1 -1
  175. package/dist/bundling-sources/shared_libs/product-notifications/configuration.ts +7 -1
  176. package/dist/bundling-sources/shared_libs/product-notifications/default-policy.ts +3 -2
  177. package/dist/bundling-sources/shared_libs/product-notifications/overflow.ts +18 -0
  178. package/dist/bundling-sources/shared_libs/product-notifications/rolling-limit.ts +24 -0
  179. package/dist/bundling-sources/shared_libs/product-notifications/slack-delivery.ts +624 -0
  180. package/dist/bundling-sources/shared_libs/product-notifications/slack-payload.ts +140 -0
  181. package/dist/bundling-sources/shared_libs/product-notifications/slack-transport.ts +75 -0
  182. package/dist/bundling-sources/shared_libs/runtime-env.ts +6 -0
  183. package/dist/bundling-sources/shared_libs/security/email-blacklist.ts +42 -0
  184. package/dist/bundling-sources/shared_libs/security/header-safe-env.ts +10 -3
  185. package/dist/bundling-sources/shared_libs/security/slack-sanitize.ts +133 -0
  186. package/dist/cli/getting-started.d.mts +52 -0
  187. package/dist/cli/getting-started.d.ts +52 -0
  188. package/dist/cli/getting-started.js +65 -0
  189. package/dist/cli/getting-started.mjs +36 -0
  190. package/dist/cli/index.d.mts +9 -0
  191. package/dist/cli/index.d.ts +9 -0
  192. package/dist/cli/index.js +545 -264
  193. package/dist/cli/index.mjs +543 -271
  194. package/dist/{compiler-manifest-DsLbQaew.d.mts → compiler-manifest-BaJfE-5H.d.mts} +5 -3
  195. package/dist/{compiler-manifest-DsLbQaew.d.ts → compiler-manifest-BaJfE-5H.d.ts} +5 -3
  196. package/dist/index.d.mts +81 -148
  197. package/dist/index.d.ts +81 -148
  198. package/dist/index.js +83 -26
  199. package/dist/index.mjs +83 -26
  200. package/dist/install-integrity.json +130 -2
  201. package/dist/monitor-fleet-contract.d.mts +138 -0
  202. package/dist/monitor-fleet-contract.d.ts +138 -0
  203. package/dist/monitor-fleet-contract.js +404 -0
  204. package/dist/monitor-fleet-contract.mjs +367 -0
  205. package/dist/plays/bundle-play-file.d.mts +2 -2
  206. package/dist/plays/bundle-play-file.d.ts +2 -2
  207. package/dist/release.d.mts +255 -0
  208. package/dist/release.d.ts +255 -0
  209. package/dist/release.js +215 -0
  210. package/dist/release.mjs +188 -0
  211. package/package.json +21 -4
@@ -0,0 +1,367 @@
1
+ // src/monitor-fleet-contract.ts
2
+ var MONITOR_FLEET_MAX_MEMBERS = 1e3;
3
+ var MONITOR_FLEET_FRONTIER_MAX_ROWS = 1e4;
4
+ var MONITOR_FLEET_AUTHORING_CONTRACT_EDITION = 1;
5
+ var SUPPORTED_MONITOR_FLEET_AUTHORING_CONTRACT_EDITIONS = [
6
+ MONITOR_FLEET_AUTHORING_CONTRACT_EDITION
7
+ ];
8
+ var MONITOR_FLEET_AUTHORING_CONTRACT_CHANGELOG = [
9
+ {
10
+ edition: 1,
11
+ changed: "Initial Fleet JSON contract: bounded sticky table membership, one daily sync, and a seven-day removal grace.",
12
+ compatibilityOwner: "Monitors Runtime",
13
+ newWritesEnd: null,
14
+ readerRemoval: null
15
+ }
16
+ ];
17
+ var MONITOR_FLEET_REMOVAL_GRACE_MS = 7 * 24 * 60 * 6e4;
18
+ var MONITOR_FLEET_DOCUMENTATION = {
19
+ summary: "A Monitor Fleet keeps one bounded, sticky set of ordinary monitors aligned with Customer DB rows.",
20
+ authoredFields: {
21
+ id: "Stable lowercase fleet id used by sync, get, and deactivate.",
22
+ source: "Customer DB table, unique row key, and optional equality filters that select candidate rows.",
23
+ member: "Ordinary monitor tool, stable key template, and payload evaluated for each selected source row.",
24
+ selection: "Deterministic ranking and an active-member limit between 1 and 1,000."
25
+ },
26
+ fixedPolicy: {
27
+ cadence: "daily",
28
+ membership: "sticky",
29
+ removalGrace: "7d",
30
+ onRemoved: "deactivate",
31
+ ownership: "A Fleet may adopt a same-tool ordinary monitor with its deterministic member key. The first Fleet claim wins; another Fleet or a different tool receives a conflict.",
32
+ billing: "No Fleet fee, permit, or renewal. Dry-run reports ordinary monitor lifecycle charges due now."
33
+ },
34
+ stickyMembership: "Ranking fills vacancies but never replaces a current member merely because another row ranks higher.",
35
+ columnExpression: 'Use { "$fleet": "column", "name": "column_name" } in a member key or payload to read a value from each source row.'
36
+ };
37
+ function record(value) {
38
+ return value && typeof value === "object" && !Array.isArray(value) ? value : null;
39
+ }
40
+ function identifier(value) {
41
+ return typeof value === "string" && /^[A-Za-z_][A-Za-z0-9_]*$/.test(value);
42
+ }
43
+ function exactKeys(input, keys, path, issues) {
44
+ if (!input) return;
45
+ for (const key of Object.keys(input)) {
46
+ if (keys.includes(key)) continue;
47
+ issues.push({
48
+ path: path ? `${path}.${key}` : key,
49
+ code: "unknown_fleet_field",
50
+ message: `${path || "Fleet"} does not accept '${key}'.`
51
+ });
52
+ }
53
+ }
54
+ function jsonValue(value, path, issues) {
55
+ if (value === null || typeof value === "string" || typeof value === "boolean" || typeof value === "number" && Number.isFinite(value)) {
56
+ return;
57
+ }
58
+ if (Array.isArray(value)) {
59
+ value.forEach((item, index) => jsonValue(item, `${path}.${index}`, issues));
60
+ return;
61
+ }
62
+ const input = record(value);
63
+ if (!input) {
64
+ issues.push({
65
+ path,
66
+ code: "invalid_fleet_json_value",
67
+ message: "Fleet payload values must be JSON values."
68
+ });
69
+ return;
70
+ }
71
+ for (const [key, item] of Object.entries(input)) {
72
+ jsonValue(item, `${path}.${key}`, issues);
73
+ }
74
+ }
75
+ function fleetColumn(name) {
76
+ if (!identifier(name)) throw new Error(`Invalid fleet column '${name}'.`);
77
+ return { $fleet: "column", name };
78
+ }
79
+ function fleetKey(...parts) {
80
+ if (parts.length === 0)
81
+ throw new Error("A fleet key needs at least one part.");
82
+ return { $fleet: "template", parts };
83
+ }
84
+ function defineMonitorFleet(definition) {
85
+ return definition;
86
+ }
87
+ function validateExpression(value, path, issues) {
88
+ const input = record(value);
89
+ if (!input || input.$fleet !== "column" || !identifier(input.name)) {
90
+ issues.push({
91
+ path,
92
+ code: "invalid_fleet_expression",
93
+ message: "Fleet expressions must be an exact tagged column reference."
94
+ });
95
+ return;
96
+ }
97
+ exactKeys(input, ["$fleet", "name"], path, issues);
98
+ }
99
+ function walkPayload(value, path, issues) {
100
+ if (Array.isArray(value)) {
101
+ value.forEach(
102
+ (item, index) => walkPayload(item, `${path}.${index}`, issues)
103
+ );
104
+ return;
105
+ }
106
+ const input = record(value);
107
+ if (!input) return;
108
+ if ("$fleet" in input) {
109
+ validateExpression(input, path, issues);
110
+ return;
111
+ }
112
+ for (const [key, item] of Object.entries(input)) {
113
+ walkPayload(item, `${path}.${key}`, issues);
114
+ }
115
+ }
116
+ function validateMonitorFleetDefinition(value) {
117
+ const issues = [];
118
+ const input = record(value);
119
+ if (!input) {
120
+ return {
121
+ valid: false,
122
+ issues: [
123
+ {
124
+ path: "",
125
+ code: "invalid_fleet",
126
+ message: "Fleet must be an object."
127
+ }
128
+ ]
129
+ };
130
+ }
131
+ exactKeys(input, ["id", "source", "member", "selection"], "", issues);
132
+ if (typeof input.id !== "string" || !/^[a-z][a-z0-9-]{0,199}$/.test(input.id)) {
133
+ issues.push({
134
+ path: "id",
135
+ code: "invalid_fleet_id",
136
+ message: "Fleet id must be lowercase kebab-case."
137
+ });
138
+ }
139
+ const source = record(input.source);
140
+ exactKeys(
141
+ source,
142
+ ["kind", "schema", "table", "key", "where"],
143
+ "source",
144
+ issues
145
+ );
146
+ if (!source || source.kind !== "customer_db_table") {
147
+ issues.push({
148
+ path: "source.kind",
149
+ code: "invalid_fleet_source",
150
+ message: "Beta fleets require customer_db_table."
151
+ });
152
+ }
153
+ if (!identifier(source?.schema) || !identifier(source?.table)) {
154
+ issues.push({
155
+ path: "source",
156
+ code: "invalid_fleet_table",
157
+ message: "Source schema and table must be SQL identifiers."
158
+ });
159
+ }
160
+ const sourceKey = record(source?.key);
161
+ exactKeys(sourceKey, ["column", "type"], "source.key", issues);
162
+ if (!sourceKey || !identifier(sourceKey.column) || !["text", "uuid", "int4", "int8"].includes(String(sourceKey.type))) {
163
+ issues.push({
164
+ path: "source.key",
165
+ code: "invalid_fleet_source_key",
166
+ message: "Source key must name a supported typed column."
167
+ });
168
+ }
169
+ if (source?.where !== void 0) {
170
+ const where = record(source.where);
171
+ if (!where) {
172
+ issues.push({
173
+ path: "source.where",
174
+ code: "invalid_fleet_where",
175
+ message: "source.where must be an object of equality values."
176
+ });
177
+ } else {
178
+ for (const [column, expected] of Object.entries(where)) {
179
+ if (!identifier(column)) {
180
+ issues.push({
181
+ path: `source.where.${column}`,
182
+ code: "invalid_fleet_where_column",
183
+ message: "source.where keys must be SQL identifiers."
184
+ });
185
+ }
186
+ if (expected !== null && typeof expected !== "string" && typeof expected !== "boolean" && !(typeof expected === "number" && Number.isFinite(expected))) {
187
+ issues.push({
188
+ path: `source.where.${column}`,
189
+ code: "invalid_fleet_where_value",
190
+ message: "source.where values must be finite JSON scalars or null."
191
+ });
192
+ }
193
+ }
194
+ }
195
+ }
196
+ const member = record(input.member);
197
+ exactKeys(member, ["tool", "key", "payload"], "member", issues);
198
+ const key = record(member?.key);
199
+ if (!member || typeof member.tool !== "string" || !member.tool.trim()) {
200
+ issues.push({
201
+ path: "member.tool",
202
+ code: "invalid_fleet_tool",
203
+ message: "Member tool is required."
204
+ });
205
+ }
206
+ if (!key || key.$fleet !== "template" || !Array.isArray(key.parts) || key.parts.length === 0) {
207
+ issues.push({
208
+ path: "member.key",
209
+ code: "invalid_fleet_key",
210
+ message: "Member key must be a tagged fleet template."
211
+ });
212
+ } else {
213
+ exactKeys(key, ["$fleet", "parts"], "member.key", issues);
214
+ for (const [index, part] of key.parts.entries()) {
215
+ if (typeof part !== "string")
216
+ validateExpression(part, `member.key.parts.${index}`, issues);
217
+ }
218
+ if (sourceKey && !key.parts.some(
219
+ (part) => record(part)?.$fleet === "column" && record(part)?.name === sourceKey.column
220
+ )) {
221
+ issues.push({
222
+ path: "member.key.parts",
223
+ code: "fleet_key_missing_source_key",
224
+ message: "Member key must include the source key column."
225
+ });
226
+ }
227
+ }
228
+ if (!member || !("payload" in member)) {
229
+ issues.push({
230
+ path: "member.payload",
231
+ code: "invalid_fleet_payload",
232
+ message: "Member payload is required."
233
+ });
234
+ } else {
235
+ jsonValue(member.payload, "member.payload", issues);
236
+ }
237
+ walkPayload(member?.payload, "member.payload", issues);
238
+ const selection = record(input.selection);
239
+ exactKeys(selection, ["limit", "orderBy", "membership"], "selection", issues);
240
+ if (!selection || !Number.isSafeInteger(selection.limit) || Number(selection.limit) < 1 || Number(selection.limit) > MONITOR_FLEET_MAX_MEMBERS) {
241
+ issues.push({
242
+ path: "selection.limit",
243
+ code: "MONITOR_FLEET_LIMIT_EXCEEDED",
244
+ message: "selection.limit must be between 1 and 1,000."
245
+ });
246
+ }
247
+ if (selection?.membership !== "sticky") {
248
+ issues.push({
249
+ path: "selection.membership",
250
+ code: "invalid_fleet_membership",
251
+ message: `Fleet membership is fixed to ${MONITOR_FLEET_DOCUMENTATION.fixedPolicy.membership}. ${MONITOR_FLEET_DOCUMENTATION.stickyMembership}`
252
+ });
253
+ }
254
+ const orderBy = selection?.orderBy;
255
+ if (!Array.isArray(orderBy) || orderBy.length === 0) {
256
+ issues.push({
257
+ path: "selection.orderBy",
258
+ code: "invalid_fleet_order",
259
+ message: "At least one deterministic order field is required."
260
+ });
261
+ } else {
262
+ const orderColumns = /* @__PURE__ */ new Set();
263
+ for (const [index, order] of orderBy.entries()) {
264
+ const item = record(order);
265
+ exactKeys(
266
+ item,
267
+ ["column", "direction"],
268
+ `selection.orderBy.${index}`,
269
+ issues
270
+ );
271
+ if (!item || !identifier(item.column) || !["asc", "desc"].includes(String(item.direction))) {
272
+ issues.push({
273
+ path: `selection.orderBy.${index}`,
274
+ code: "invalid_fleet_order",
275
+ message: "Order fields need a column and asc/desc direction."
276
+ });
277
+ } else if (orderColumns.has(item.column)) {
278
+ issues.push({
279
+ path: `selection.orderBy.${index}.column`,
280
+ code: "duplicate_fleet_order_column",
281
+ message: "Each selection order column may appear only once."
282
+ });
283
+ } else {
284
+ orderColumns.add(item.column);
285
+ }
286
+ }
287
+ if (sourceKey && record(orderBy.at(-1))?.column !== sourceKey.column) {
288
+ issues.push({
289
+ path: "selection.orderBy",
290
+ code: "fleet_order_missing_key",
291
+ message: "The final order field must be the source key."
292
+ });
293
+ }
294
+ }
295
+ for (const removedOption of ["spendLimits", "lifecycle", "reconciliation"]) {
296
+ if (removedOption in input) {
297
+ issues.push({
298
+ path: removedOption,
299
+ code: "unsupported_fleet_option",
300
+ message: `${removedOption} is fixed by Monitor Fleets and must be omitted. Fleets sync ${MONITOR_FLEET_DOCUMENTATION.fixedPolicy.cadence} and ${MONITOR_FLEET_DOCUMENTATION.fixedPolicy.onRemoved} members after ${MONITOR_FLEET_DOCUMENTATION.fixedPolicy.removalGrace} absent from the source.`
301
+ });
302
+ }
303
+ }
304
+ return issues.length === 0 ? { valid: true, definition: value, issues } : { valid: false, issues };
305
+ }
306
+ function admitMonitorFleetAuthoringContract(value, edition = MONITOR_FLEET_AUTHORING_CONTRACT_EDITION) {
307
+ if (!SUPPORTED_MONITOR_FLEET_AUTHORING_CONTRACT_EDITIONS.includes(
308
+ edition
309
+ )) {
310
+ return {
311
+ valid: false,
312
+ issues: [
313
+ {
314
+ path: "authoring_contract_edition",
315
+ code: "unsupported_fleet_authoring_contract_edition",
316
+ message: `Monitor Fleet authoring contract edition ${edition} is not supported.`
317
+ }
318
+ ]
319
+ };
320
+ }
321
+ const result = validateMonitorFleetDefinition(value);
322
+ return result.valid && result.definition ? {
323
+ valid: true,
324
+ contract: {
325
+ edition,
326
+ // JSON cloning prevents later caller mutation from changing the
327
+ // admitted snapshot.
328
+ definition: JSON.parse(
329
+ JSON.stringify(result.definition)
330
+ )
331
+ },
332
+ issues: []
333
+ } : { valid: false, issues: result.issues };
334
+ }
335
+ function evaluateMonitorFleetValue(value, row) {
336
+ if (Array.isArray(value))
337
+ return value.map((item) => evaluateMonitorFleetValue(item, row));
338
+ const input = record(value);
339
+ if (!input) return value;
340
+ if (input.$fleet === "column") return row[String(input.name)];
341
+ if (input.$fleet === "template" && Array.isArray(input.parts)) {
342
+ return input.parts.map(
343
+ (part) => typeof part === "string" ? part : String(evaluateMonitorFleetValue(part, row) ?? "")
344
+ ).join("");
345
+ }
346
+ return Object.fromEntries(
347
+ Object.entries(input).map(([key, item]) => [
348
+ key,
349
+ evaluateMonitorFleetValue(item, row)
350
+ ])
351
+ );
352
+ }
353
+ export {
354
+ MONITOR_FLEET_AUTHORING_CONTRACT_CHANGELOG,
355
+ MONITOR_FLEET_AUTHORING_CONTRACT_EDITION,
356
+ MONITOR_FLEET_DOCUMENTATION,
357
+ MONITOR_FLEET_FRONTIER_MAX_ROWS,
358
+ MONITOR_FLEET_MAX_MEMBERS,
359
+ MONITOR_FLEET_REMOVAL_GRACE_MS,
360
+ SUPPORTED_MONITOR_FLEET_AUTHORING_CONTRACT_EDITIONS,
361
+ admitMonitorFleetAuthoringContract,
362
+ defineMonitorFleet,
363
+ evaluateMonitorFleetValue,
364
+ fleetColumn,
365
+ fleetKey,
366
+ validateMonitorFleetDefinition
367
+ };
@@ -1,6 +1,6 @@
1
1
  /// <reference path="./text-imports.d.ts" />
2
- import { P as PlayArtifactKind, a as PlayBundleArtifact, b as PlaySandboxRuntimeDeclaration, c as PlayCompilerManifest } from '../compiler-manifest-DsLbQaew.mjs';
3
- export { d as PLAY_ARTIFACT_KINDS, e as PlayArtifactCompatibility, f as PlayImportPolicy, g as PlayPackageImport, h as PlayRuntimeFeature } from '../compiler-manifest-DsLbQaew.mjs';
2
+ import { ae as PlayArtifactKind, af as PlayBundleArtifact, ag as PlaySandboxRuntimeDeclaration, P as PlayCompilerManifest } from '../compiler-manifest-BaJfE-5H.mjs';
3
+ export { ah as PLAY_ARTIFACT_KINDS, ai as PlayArtifactCompatibility, aj as PlayImportPolicy, ak as PlayPackageImport, al as PlayRuntimeFeature } from '../compiler-manifest-BaJfE-5H.mjs';
4
4
  import '@sinclair/typebox';
5
5
 
6
6
  type ImportedPlayDependency = {
@@ -1,6 +1,6 @@
1
1
  /// <reference path="./text-imports.d.ts" />
2
- import { P as PlayArtifactKind, a as PlayBundleArtifact, b as PlaySandboxRuntimeDeclaration, c as PlayCompilerManifest } from '../compiler-manifest-DsLbQaew.js';
3
- export { d as PLAY_ARTIFACT_KINDS, e as PlayArtifactCompatibility, f as PlayImportPolicy, g as PlayPackageImport, h as PlayRuntimeFeature } from '../compiler-manifest-DsLbQaew.js';
2
+ import { ae as PlayArtifactKind, af as PlayBundleArtifact, ag as PlaySandboxRuntimeDeclaration, P as PlayCompilerManifest } from '../compiler-manifest-BaJfE-5H.js';
3
+ export { ah as PLAY_ARTIFACT_KINDS, ai as PlayArtifactCompatibility, aj as PlayImportPolicy, ak as PlayPackageImport, al as PlayRuntimeFeature } from '../compiler-manifest-BaJfE-5H.js';
4
4
  import '@sinclair/typebox';
5
5
 
6
6
  type ImportedPlayDependency = {
@@ -0,0 +1,255 @@
1
+ /// <reference path="./text-imports.d.ts" />
2
+ /**
3
+ * Single source of truth for SDK release metadata.
4
+ *
5
+ * Ordinary SDK PRs do NOT bump `version` here. Patch version selection
6
+ * happens at publish time: on push to main, `.github/workflows/sdk-release.yml`
7
+ * (via `scripts/sdk-release-autobump.ts`) compares the built package against
8
+ * the latest published npm tarball and, when the content changed, stamps the
9
+ * next unpublished patch into `version` in the CI workspace only and
10
+ * publishes it in the same run. That patch stamp is not
11
+ * committed back to main; production endpoints read npm metadata when they
12
+ * need the newest patch-level SDK/CLI version.
13
+ *
14
+ * Edit THIS file by hand only for deliberate release decisions:
15
+ * - minor/major version bumps (set `version`),
16
+ * - API-major cutovers (set `contracts.api.currentMajor`; leave `version` to the
17
+ * publish-time patch selector),
18
+ * - support-window moves (`minimumSupported` / `deprecatedBelow`).
19
+ * The automation never touches API compatibility policy, `minimumSupported`, or
20
+ * `deprecatedBelow`.
21
+ *
22
+ * Everything else derives from these values:
23
+ *
24
+ * - `packages/sdk/src/version.ts` re-exports `SDK_VERSION` and `SDK_API_CONTRACT`.
25
+ * - `apps/deepline-api/src/lib/sdk/release-policy.ts` re-exports `SDK_RELEASE_POLICY`.
26
+ * - `packages/sdk/package.json` `version` is stamped from `SDK_RELEASE.version` by
27
+ * `scripts/sync-sdk-package-version.ts`, which runs as part of
28
+ * `bun run sdk:build`.
29
+ * - `contracts/sdk-api.manifest.json` is regenerated at build time from
30
+ * `apps/deepline-api/src/lib/sdk/api-routes.ts` and the apiContract here; the matching
31
+ * `contracts/sdk-api.manifest.hash` is an ignored local/CI audit artifact.
32
+ *
33
+ * Any drift between release source and derived release locations is a
34
+ * `check:sdk-release-readiness` failure with a one-shot fix command; SDK/API
35
+ * compatibility policy is enforced by `bun run sdk:api-contract:check`.
36
+ */
37
+ type SdkReleaseChannel = 'latest' | 'next' | 'beta';
38
+ /**
39
+ * The named public protocols. These are intentionally independent:
40
+ *
41
+ * - `api` is the HTTP SDK/CLI protocol. It is additive within a major.
42
+ * - `playArtifact` is the immutable client-bundled Play payload ABI.
43
+ * - `release` controls promotion/publishing; it is not a client protocol.
44
+ *
45
+ * Do not use an SDK package version or a date string as an artifact ABI.
46
+ */
47
+ type DeeplineContractPolicy = {
48
+ api: {
49
+ name: 'sdk-http-api';
50
+ currentMajor: number;
51
+ supportedMajors: readonly number[];
52
+ /** Transitional value for installed SDKs that only send the old header. */
53
+ legacyWireIds: readonly string[];
54
+ };
55
+ playArtifact: {
56
+ name: 'play-artifact-runtime';
57
+ currentVersion: number;
58
+ supportedVersions: readonly number[];
59
+ };
60
+ release: {
61
+ name: 'production-sdk-release';
62
+ /** npm may publish only from the active, healthy Production SHA. */
63
+ publishFrom: 'latest-successful-production-deployment';
64
+ /** A newer merge cancels an in-flight decision; reconciliation picks the last healthy SHA. */
65
+ coalesce: 'latest-healthy';
66
+ };
67
+ };
68
+ type SdkSupportPolicy = {
69
+ /**
70
+ * Anything strictly below this returns `status: "unsupported"` from
71
+ * `/api/v2/sdk/compat` and the CLI must hard-fail with the update command.
72
+ * Only advance after the support window closes.
73
+ */
74
+ minimumSupported: string;
75
+ /**
76
+ * Anything strictly below this returns `status: "deprecated"` (still works,
77
+ * warns). Advance when a release becomes the new floor.
78
+ */
79
+ deprecatedBelow: string;
80
+ /**
81
+ * Command-scoped support floors for SDK CLI workflows whose local behavior
82
+ * can break while the network API contract remains compatible.
83
+ */
84
+ commandMinimumSupported?: ReadonlyArray<{
85
+ command: string;
86
+ displayCommand?: string;
87
+ minimumSupported: string;
88
+ reason: string;
89
+ }>;
90
+ /**
91
+ * The version that first shipped a command.
92
+ *
93
+ * Deliberately not a support floor. `commandMinimumSupported` says an older
94
+ * client is BROKEN for a command and forces an update; this says only that
95
+ * an older client never had the command at all. That difference matters in
96
+ * both directions: introducing a command must not independently require an
97
+ * update, and a support floor may not exceed the version being released,
98
+ * while an introduction version is a fact about an already-published
99
+ * release. The general default-on freshness policy may still update an older
100
+ * installed CLI.
101
+ *
102
+ * It exists because agent skills are served by the backend and re-synced on
103
+ * nearly every CLI invocation, while the CLI stays pinned. A release that
104
+ * adds a command and documents it in the same commit therefore hands every
105
+ * installed client instructions it cannot follow, and `unknown command` is
106
+ * all the author sees. Recording the version lets the CLI say which release
107
+ * added it. `check:skill-cli-commands` requires an entry here before a skill
108
+ * may document a command.
109
+ */
110
+ commandIntroducedIn?: ReadonlyArray<{
111
+ command: string;
112
+ introducedIn: string;
113
+ reason: string;
114
+ }>;
115
+ /** Previously published wire contracts that remain supported. */
116
+ compatibleApiContracts?: readonly string[];
117
+ /**
118
+ * Published package versions that must keep working for direct SDK tool
119
+ * callers. CI installs each package from npm and exercises `tools.get` and
120
+ * `tools.execute` without involving the CLI or Play runtime.
121
+ */
122
+ directToolsCompatibilityVersions?: readonly string[];
123
+ /**
124
+ * Diagnostic freshness threshold reported by `/api/v2/sdk/compat`.
125
+ * Ownership-aware installed CLIs auto-update when older; this value remains
126
+ * metadata for clients and operational diagnostics.
127
+ */
128
+ autoUpdatePatchLag?: number;
129
+ };
130
+ type SdkRelease = {
131
+ /**
132
+ * Version published to npm. Usually stamped by the release workflow at
133
+ * publish time (auto-bump); edit by hand only for minor/major releases.
134
+ */
135
+ version: string;
136
+ /**
137
+ * One concise, agent-readable explanation shown while this release is an
138
+ * available update. Keep it actionable; the compatibility route includes it
139
+ * in its existing update message so older installed CLIs can print it too.
140
+ */
141
+ updateSummary?: string;
142
+ /** Capabilities stamped into the published package's `deepline` metadata. */
143
+ packageCapabilities: {
144
+ updatePreferences: 1;
145
+ };
146
+ /** Named compatibility policies. This is the only authored contract policy. */
147
+ contracts: DeeplineContractPolicy;
148
+ /** Public support policy reported by `/api/v2/sdk/compat`. */
149
+ supportPolicy: SdkSupportPolicy;
150
+ };
151
+ declare const SDK_RELEASE: {
152
+ readonly version: "0.3.90";
153
+ readonly updateSummary: "Play grep now uses one source-only Convex full-text index. It no longer scans the registry, pages through the complete indexed match set, and rejects retired grep modes. Automatic CLI updates are enabled by default; use `deepline settings autoupdate off` to opt out, `deepline settings autoupdate on` to re-enable updates, or `deepline settings autoupdate pin <version>` to hold an exact release.";
154
+ readonly packageCapabilities: {
155
+ readonly updatePreferences: 1;
156
+ };
157
+ readonly contracts: {
158
+ readonly api: {
159
+ readonly name: "sdk-http-api";
160
+ readonly currentMajor: 3;
161
+ readonly supportedMajors: readonly [3, 2];
162
+ readonly legacyWireIds: readonly ["2026-09-play-grep-convex-index-hard-cutover", "2026-07-admin-cli-local-cutover", "2026-07-native-monitor-launch-hard-cutover"];
163
+ };
164
+ readonly playArtifact: {
165
+ readonly name: "play-artifact-runtime";
166
+ readonly currentVersion: 2;
167
+ readonly supportedVersions: readonly [1, 2];
168
+ };
169
+ readonly release: {
170
+ readonly name: "production-sdk-release";
171
+ readonly publishFrom: "latest-successful-production-deployment";
172
+ readonly coalesce: "latest-healthy";
173
+ };
174
+ };
175
+ readonly supportPolicy: {
176
+ readonly minimumSupported: "0.1.53";
177
+ readonly deprecatedBelow: "0.3.1";
178
+ readonly commandIntroducedIn: readonly [{
179
+ readonly command: "notifications";
180
+ readonly introducedIn: "0.2.40";
181
+ readonly reason: "deepline notifications was added in SDK CLI 0.2.40. Older versions have no way to configure a Play failure alert, so a cron Play that dies reports to nobody.";
182
+ }];
183
+ readonly commandMinimumSupported: readonly [{
184
+ readonly command: "enrich";
185
+ readonly minimumSupported: "0.1.238";
186
+ readonly reason: "Older SDK CLI enrich generated stale play source; SDK CLI enrich 0.1.153 generated removed StepOptions fields in play source; SDK CLI enrich before 0.1.175 could silently succeed on the empty-waterfall bug when a requested waterfall returned no values for selected rows; SDK CLI enrich before 0.1.230 could convert extractor failures into successful unmatched results; SDK CLI enrich before 0.1.238 could drop a nested provider email match during generic pick(\"email\") extraction and materialize it as NO_MATCH.";
187
+ }, {
188
+ readonly command: "plays";
189
+ readonly minimumSupported: "0.1.241";
190
+ readonly reason: "Older SDK CLI versions predate dataset-native Play results and can emit the retired esm_workers artifact contract. Update before checking, publishing, or running plays.";
191
+ }, {
192
+ readonly command: "plays run";
193
+ readonly minimumSupported: "0.1.253";
194
+ readonly reason: "Older SDK CLI versions predate dataset-native Play results and can emit the retired esm_workers artifact contract; versions before 0.1.253 open the play page by default and accept the removed --no-open flag.";
195
+ }, {
196
+ readonly command: "run";
197
+ readonly displayCommand: "plays run";
198
+ readonly minimumSupported: "0.1.253";
199
+ readonly reason: "Older SDK CLI versions predate dataset-native Play results and can emit the retired esm_workers artifact contract; versions before 0.1.253 open the play page by default and accept the removed --no-open flag.";
200
+ }, {
201
+ readonly command: "plays check";
202
+ readonly minimumSupported: "0.1.241";
203
+ readonly reason: "Older SDK CLI versions predate dataset-native Play authoring and validate against the retired esm_workers artifact contract.";
204
+ }, {
205
+ readonly command: "check";
206
+ readonly displayCommand: "plays check";
207
+ readonly minimumSupported: "0.1.241";
208
+ readonly reason: "Older SDK CLI versions predate dataset-native Play authoring and validate against the retired esm_workers artifact contract.";
209
+ }, {
210
+ readonly command: "plays publish";
211
+ readonly minimumSupported: "0.1.241";
212
+ readonly reason: "Older SDK CLI versions predate dataset-native Play artifacts and can publish the retired esm_workers artifact contract.";
213
+ }, {
214
+ readonly command: "publish";
215
+ readonly displayCommand: "plays publish";
216
+ readonly minimumSupported: "0.1.241";
217
+ readonly reason: "Older SDK CLI versions predate dataset-native Play artifacts and can publish the retired esm_workers artifact contract.";
218
+ }, {
219
+ readonly command: "plays set-live";
220
+ readonly minimumSupported: "0.1.241";
221
+ readonly reason: "Older SDK CLI versions predate dataset-native Play artifacts and can publish the retired esm_workers artifact contract.";
222
+ }, {
223
+ readonly command: "set-live";
224
+ readonly displayCommand: "plays set-live";
225
+ readonly minimumSupported: "0.1.241";
226
+ readonly reason: "Older SDK CLI versions predate dataset-native Play artifacts and can publish the retired esm_workers artifact contract.";
227
+ }, {
228
+ readonly command: "runs";
229
+ readonly minimumSupported: "0.1.111";
230
+ readonly reason: "Run result rows now render as dataset handles with explicit export commands.";
231
+ }, {
232
+ readonly command: "runs get";
233
+ readonly minimumSupported: "0.1.111";
234
+ readonly reason: "Run result rows now render as dataset handles with explicit export commands.";
235
+ }, {
236
+ readonly command: "get";
237
+ readonly displayCommand: "runs get";
238
+ readonly minimumSupported: "0.1.111";
239
+ readonly reason: "Run result rows now render as dataset handles with explicit export commands.";
240
+ }, {
241
+ readonly command: "runs export";
242
+ readonly minimumSupported: "0.1.111";
243
+ readonly reason: "Run result row datasets now use the dataset-handle export contract.";
244
+ }, {
245
+ readonly command: "export";
246
+ readonly displayCommand: "runs export";
247
+ readonly minimumSupported: "0.1.111";
248
+ readonly reason: "Run result row datasets now use the dataset-handle export contract.";
249
+ }];
250
+ readonly directToolsCompatibilityVersions: readonly ["0.1.171"];
251
+ readonly autoUpdatePatchLag: 2;
252
+ };
253
+ };
254
+
255
+ export { type DeeplineContractPolicy, SDK_RELEASE, type SdkRelease, type SdkReleaseChannel, type SdkSupportPolicy };