deepline 0.3.393 → 0.3.394

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 (122) hide show
  1. package/dist/bundling-sources/sdk/src/release.ts +1 -1
  2. package/dist/bundling-sources/shared_libs/play-runtime/context.ts +477 -10
  3. package/dist/bundling-sources/shared_libs/play-runtime/ctx-types.ts +5 -1
  4. package/dist/bundling-sources/shared_libs/play-runtime/durable-call-policy.ts +28 -0
  5. package/dist/bundling-sources/shared_libs/play-runtime/freshness-receipt-execution.ts +251 -0
  6. package/dist/bundling-sources/shared_libs/play-runtime/play-runtime-semantics.ts +12 -1
  7. package/dist/bundling-sources/shared_libs/play-runtime/runner-app/index.ts +10 -0
  8. package/dist/bundling-sources/shared_libs/play-runtime/runtime-api.ts +25 -16
  9. package/dist/bundling-sources/shared_libs/play-runtime/tool-result.ts +1 -0
  10. package/dist/bundling-sources/shared_libs/plays/authoring-contract.ts +69 -22
  11. package/dist/bundling-sources/shared_libs/plays/core.ts +1 -1
  12. package/dist/bundling-sources/shared_libs/plays/tool-result-types.ts +18 -0
  13. package/dist/cli/auth-IHKISLJQ.js +39 -0
  14. package/dist/cli/{auth-5PXHA232.mjs → auth-OSXDAVCF.mjs} +4 -4
  15. package/dist/cli/{billing-JFB2XLSO.js → billing-EKLYOXUY.js} +75 -75
  16. package/dist/cli/{billing-Z2N7ZAGM.mjs → billing-ZNNKX3UR.mjs} +4 -4
  17. package/dist/cli/{chunk-OXNOAD6Y.js → chunk-2MDDA7A4.js} +26 -26
  18. package/dist/cli/{chunk-PTDECJGP.js → chunk-354JCXA2.js} +50 -50
  19. package/dist/cli/{chunk-RKMB3N7K.mjs → chunk-3HU47EGZ.mjs} +48 -9
  20. package/dist/cli/{chunk-6I73X254.mjs → chunk-3HWALOL2.mjs} +1 -1
  21. package/dist/cli/{chunk-VIQJIX2P.js → chunk-4P27AXEA.js} +65 -65
  22. package/dist/cli/{chunk-UOGZUA24.mjs → chunk-5BB2RGAX.mjs} +18 -8
  23. package/dist/cli/{chunk-RWHWF5ZJ.js → chunk-6YAUMG27.js} +1 -1
  24. package/dist/cli/{chunk-HLEESTCH.mjs → chunk-BP33SIZF.mjs} +1 -1
  25. package/dist/cli/{chunk-CDFH2DYL.js → chunk-CS6RAIVY.js} +4 -4
  26. package/dist/cli/{chunk-2HAD745V.js → chunk-E23BQ5SC.js} +9 -9
  27. package/dist/cli/{chunk-LMMEAMA7.mjs → chunk-FJGW5GXU.mjs} +1 -1
  28. package/dist/cli/{chunk-Q26LUSQ2.mjs → chunk-JHIJIHFB.mjs} +1 -1
  29. package/dist/cli/{chunk-PWSWAN7Q.js → chunk-KB4SDX5S.js} +48 -9
  30. package/dist/cli/{chunk-M7Y7JYZX.js → chunk-KGNTKMRG.js} +6 -6
  31. package/dist/cli/{chunk-4XX6443T.js → chunk-KI635JN4.js} +59 -59
  32. package/dist/cli/{chunk-Z3OOZM5L.js → chunk-KIUMEOM5.js} +8 -8
  33. package/dist/cli/{chunk-KIYU2TGL.mjs → chunk-M57J2SK4.mjs} +2 -2
  34. package/dist/cli/{chunk-FQ6VHPW4.mjs → chunk-MFB2VKBO.mjs} +2 -2
  35. package/dist/cli/{chunk-MS6GUPBB.js → chunk-MH73HMPV.js} +3 -3
  36. package/dist/cli/{chunk-AARX5L4B.js → chunk-MLPU5SMZ.js} +2 -2
  37. package/dist/cli/{chunk-5PRVMXKB.mjs → chunk-NR3DFKNF.mjs} +1 -1
  38. package/dist/cli/{chunk-W4WOMXR3.js → chunk-QIQBYKLB.js} +15 -15
  39. package/dist/cli/{chunk-VIWE6WRK.js → chunk-RBJYWRCF.js} +260 -250
  40. package/dist/cli/{chunk-LZPCDB7U.mjs → chunk-TJI2EN6K.mjs} +1 -1
  41. package/dist/cli/{chunk-4TCT77UF.js → chunk-URWF7NGQ.js} +6 -1
  42. package/dist/cli/{chunk-5KWKZIQR.mjs → chunk-UXFSWG3Q.mjs} +4 -4
  43. package/dist/cli/{chunk-L2SYLGRP.js → chunk-VK6FYZLP.js} +8 -8
  44. package/dist/cli/{chunk-7HR7BGZL.mjs → chunk-X63FDZJZ.mjs} +3 -3
  45. package/dist/cli/{chunk-4PT2VA3A.mjs → chunk-XRQ2AQL7.mjs} +2 -2
  46. package/dist/cli/{chunk-STNYIMIV.mjs → chunk-XXUDVEXK.mjs} +6 -6
  47. package/dist/cli/{chunk-PQSA443V.mjs → chunk-ZI2ZNDJK.mjs} +6 -1
  48. package/dist/cli/{chunk-2LGC4EFT.mjs → chunk-ZYBGA4AR.mjs} +3 -3
  49. package/dist/cli/command-docs.js +2 -2
  50. package/dist/cli/command-docs.mjs +1 -1
  51. package/dist/cli/{csv-KJWZHKCH.mjs → csv-5AXRB35H.mjs} +3 -3
  52. package/dist/cli/{csv-P3Z3YE7H.js → csv-LU7O75WE.js} +12 -12
  53. package/dist/cli/{db-NCM4CQIS.mjs → db-7XP5UWEW.mjs} +4 -4
  54. package/dist/cli/{db-NUZGJNQC.js → db-F7YTFKVM.js} +29 -29
  55. package/dist/cli/{describe-YGSEN5WC.js → describe-FRH32RDV.js} +20 -20
  56. package/dist/cli/{describe-WT6MM2GO.mjs → describe-K4ES5LIL.mjs} +10 -10
  57. package/dist/cli/{executions-XS2IPJ4W.mjs → executions-IEHEHJUO.mjs} +4 -4
  58. package/dist/cli/{executions-PCOLHN7Q.js → executions-RZV5XPT2.js} +6 -6
  59. package/dist/cli/{feedback-4MSH7TFU.js → feedback-3P65QTX3.js} +7 -7
  60. package/dist/cli/{feedback-CCLTS5SV.mjs → feedback-FPUVZBAN.mjs} +3 -3
  61. package/dist/cli/{git-K2DHPMPC.mjs → git-GLVVP7TY.mjs} +4 -4
  62. package/dist/cli/git-MFFAWVVX.js +23 -0
  63. package/dist/cli/index.js +95 -95
  64. package/dist/cli/index.mjs +33 -33
  65. package/dist/cli/{legacy-noops-B5S4AR3P.mjs → legacy-noops-3MOI6NBM.mjs} +4 -4
  66. package/dist/cli/{legacy-noops-GPNOPFXV.js → legacy-noops-XKSGZR7Q.js} +7 -7
  67. package/dist/cli/{monitors-JLMAIPRG.mjs → monitors-FTBGNEFG.mjs} +4 -4
  68. package/dist/cli/{monitors-ZAWD7NSN.js → monitors-NZ2DYNST.js} +85 -85
  69. package/dist/cli/{org-P2KN4CES.js → org-MCKDQXIV.js} +64 -64
  70. package/dist/cli/{org-T3JTHP4G.mjs → org-V2J5RBCN.mjs} +4 -4
  71. package/dist/cli/{play-NK6BLRGL.mjs → play-AJFGME3B.mjs} +9 -9
  72. package/dist/cli/play-WLSN2EO2.js +158 -0
  73. package/dist/cli/{providers-5QRZN3DT.js → providers-2JEZ2264.js} +7 -7
  74. package/dist/cli/{providers-3NQRA7IT.mjs → providers-I6RQJZFZ.mjs} +4 -4
  75. package/dist/cli/{quickstart-PIA2JGPV.mjs → quickstart-BIDQDMO4.mjs} +3 -3
  76. package/dist/cli/{quickstart-R7NUZGNW.js → quickstart-GJ2RPDU3.js} +5 -5
  77. package/dist/cli/search-5VN4YD4I.js +27 -0
  78. package/dist/cli/{search-AIDIIGLY.mjs → search-ELRXFWG5.mjs} +5 -5
  79. package/dist/cli/{secrets-BT3PGMWN.js → secrets-53IT6VXD.js} +13 -13
  80. package/dist/cli/{secrets-OQNHL45O.mjs → secrets-SQXGZXIC.mjs} +4 -4
  81. package/dist/cli/{sessions-SF7WJPJP.mjs → sessions-2X5QF7SL.mjs} +4 -4
  82. package/dist/cli/{sessions-EYXWOSWK.js → sessions-CAV5M77Y.js} +5 -5
  83. package/dist/cli/{settings-BA3GHBOD.js → settings-532WNAZO.js} +74 -74
  84. package/dist/cli/{settings-Y57JTFDD.mjs → settings-7P67VGCJ.mjs} +7 -7
  85. package/dist/cli/{setup-RERXYC66.js → setup-6L2VSUWJ.js} +41 -41
  86. package/dist/cli/{setup-7GR5GBHA.mjs → setup-QGGBV2LE.mjs} +6 -6
  87. package/dist/cli/{skills-SJWIQAV5.mjs → skills-3FE62WBG.mjs} +4 -4
  88. package/dist/cli/skills-S6NPZAN7.js +28 -0
  89. package/dist/cli/tools-647RLXQS.js +41 -0
  90. package/dist/cli/{tools-ZF3JXPNL.mjs → tools-DMR25DEF.mjs} +7 -7
  91. package/dist/cli/{update-FFFYQAOJ.mjs → update-6RZMHJZP.mjs} +6 -6
  92. package/dist/cli/update-WVTSC3EM.js +28 -0
  93. package/dist/cli/{workflow-XVFEEGAS.mjs → workflow-L2DQRE6R.mjs} +5 -5
  94. package/dist/cli/{workflow-SZJVQH4T.js → workflow-TX4F2PIX.js} +15 -15
  95. package/dist/{client-DU5dtHDy.d.mts → client-BktIPdIj.d.mts} +1 -1
  96. package/dist/{client-mCE88hC4.d.ts → client-C3O1Ipf3.d.ts} +1 -1
  97. package/dist/{compiler-manifest-DE4RdAiY.d.ts → compiler-manifest-DLxUY5kI.d.mts} +65 -11
  98. package/dist/{compiler-manifest-DE4RdAiY.d.mts → compiler-manifest-DLxUY5kI.d.ts} +65 -11
  99. package/dist/{index-Bi-f7HFT.d.ts → index-B_GM9E3q.d.ts} +1 -1
  100. package/dist/{index-BI6nWgaV.d.mts → index-SCb0NvDb.d.mts} +1 -1
  101. package/dist/index.d.mts +5 -5
  102. package/dist/index.d.ts +5 -5
  103. package/dist/index.js +7 -7
  104. package/dist/index.mjs +4 -4
  105. package/dist/install-integrity.json +85 -84
  106. package/dist/plays/bundle-play-file.d.mts +3 -3
  107. package/dist/plays/bundle-play-file.d.ts +3 -3
  108. package/dist/plays/bundle-play-file.mjs +2 -2
  109. package/dist/plays/run-request.d.mts +2 -2
  110. package/dist/plays/run-request.d.ts +2 -2
  111. package/dist/release.d.mts +1 -1
  112. package/dist/release.d.ts +1 -1
  113. package/dist/release.js +2 -2
  114. package/dist/release.mjs +1 -1
  115. package/package.json +1 -1
  116. package/dist/cli/auth-P3MVDTXM.js +0 -39
  117. package/dist/cli/git-RNM45FX4.js +0 -23
  118. package/dist/cli/play-PDXR6JFB.js +0 -158
  119. package/dist/cli/search-QRWL7MFM.js +0 -27
  120. package/dist/cli/skills-V7EY75HB.js +0 -28
  121. package/dist/cli/tools-H5HLBCHH.js +0 -41
  122. package/dist/cli/update-472HA3LT.js +0 -28
@@ -2,10 +2,10 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkM7Y7JYZXjs = require('./chunk-M7Y7JYZX.js');
5
+ var _chunkKGNTKMRGjs = require('./chunk-KGNTKMRG.js');
6
6
 
7
7
 
8
- var _chunkCDFH2DYLjs = require('./chunk-CDFH2DYL.js');
8
+ var _chunkCS6RAIVYjs = require('./chunk-CS6RAIVY.js');
9
9
 
10
10
  // src/cli/commands/git.ts
11
11
  function shellQuote(value) {
@@ -32,11 +32,11 @@ function renderDeployment(deployment) {
32
32
  return `${deployment.id} ${source} (${kind}) - ${deployment.status}${suffix}`;
33
33
  }
34
34
  async function handleList(options) {
35
- const { http } = _chunkM7Y7JYZXjs.getAuthedHttpClient.call(void 0, );
35
+ const { http } = _chunkKGNTKMRGjs.getAuthedHttpClient.call(void 0, );
36
36
  const payload = await http.get(
37
37
  `/api/v2/play-projects${options.all ? "?includeDisabled=1" : ""}`
38
38
  );
39
- _chunkM7Y7JYZXjs.printCommandEnvelope.call(void 0,
39
+ _chunkKGNTKMRGjs.printCommandEnvelope.call(void 0,
40
40
  {
41
41
  projects: payload.projects,
42
42
  count: payload.projects.length,
@@ -73,7 +73,7 @@ function describeInstallationStatus(installation) {
73
73
  }
74
74
  }
75
75
  async function handleStatus(options) {
76
- const { http } = _chunkM7Y7JYZXjs.getAuthedHttpClient.call(void 0, );
76
+ const { http } = _chunkKGNTKMRGjs.getAuthedHttpClient.call(void 0, );
77
77
  const payload = await http.get("/api/v2/github/installation");
78
78
  const installation = payload.installation;
79
79
  const others = (_nullishCoalesce(payload.installations, () => ( []))).filter(
@@ -136,7 +136,7 @@ async function handleStatus(options) {
136
136
  )
137
137
  );
138
138
  }
139
- _chunkM7Y7JYZXjs.printCommandEnvelope.call(void 0,
139
+ _chunkKGNTKMRGjs.printCommandEnvelope.call(void 0,
140
140
  {
141
141
  installation,
142
142
  installations: _nullishCoalesce(payload.installations, () => ( [])),
@@ -147,10 +147,10 @@ async function handleStatus(options) {
147
147
  );
148
148
  }
149
149
  async function handleRepos(options) {
150
- const { http } = _chunkM7Y7JYZXjs.getAuthedHttpClient.call(void 0, );
150
+ const { http } = _chunkKGNTKMRGjs.getAuthedHttpClient.call(void 0, );
151
151
  const query = options.installation ? `?installationId=${encodeURIComponent(options.installation)}` : "";
152
152
  const payload = await http.get(`/api/v2/github/repos${query}`);
153
- _chunkM7Y7JYZXjs.printCommandEnvelope.call(void 0,
153
+ _chunkKGNTKMRGjs.printCommandEnvelope.call(void 0,
154
154
  {
155
155
  installation: payload.installation,
156
156
  repositories: payload.repositories,
@@ -171,7 +171,7 @@ async function handleRepos(options) {
171
171
  }
172
172
  async function resolveRepoId(repo, installation) {
173
173
  if (/^\d+$/.test(repo)) return Number(repo);
174
- const { http } = _chunkM7Y7JYZXjs.getAuthedHttpClient.call(void 0, );
174
+ const { http } = _chunkKGNTKMRGjs.getAuthedHttpClient.call(void 0, );
175
175
  const query = installation ? `?installationId=${encodeURIComponent(installation)}` : "";
176
176
  const payload = await http.get(
177
177
  `/api/v2/github/repos${query}`
@@ -188,7 +188,7 @@ async function resolveRepoId(repo, installation) {
188
188
  }
189
189
  async function handleLink(repo, options) {
190
190
  const repoId = await resolveRepoId(repo, options.installation);
191
- const { http } = _chunkM7Y7JYZXjs.getAuthedHttpClient.call(void 0, );
191
+ const { http } = _chunkKGNTKMRGjs.getAuthedHttpClient.call(void 0, );
192
192
  const payload = await http.post("/api/v2/play-projects", {
193
193
  repoId,
194
194
  ...options.installation !== void 0 ? { installationId: options.installation } : {},
@@ -197,7 +197,7 @@ async function handleLink(repo, options) {
197
197
  ...options.branch !== void 0 ? { productionBranch: options.branch } : {},
198
198
  ...options.prChecks !== void 0 ? { checkOnPullRequest: options.prChecks } : {}
199
199
  });
200
- _chunkM7Y7JYZXjs.printCommandEnvelope.call(void 0,
200
+ _chunkKGNTKMRGjs.printCommandEnvelope.call(void 0,
201
201
  {
202
202
  project: payload.project,
203
203
  render: {
@@ -220,11 +220,11 @@ async function handleLink(repo, options) {
220
220
  );
221
221
  }
222
222
  async function handleGet(id, options) {
223
- const { http } = _chunkM7Y7JYZXjs.getAuthedHttpClient.call(void 0, );
223
+ const { http } = _chunkKGNTKMRGjs.getAuthedHttpClient.call(void 0, );
224
224
  const payload = await http.get(
225
225
  `/api/v2/play-projects/${encodeURIComponent(id)}`
226
226
  );
227
- _chunkM7Y7JYZXjs.printCommandEnvelope.call(void 0,
227
+ _chunkKGNTKMRGjs.printCommandEnvelope.call(void 0,
228
228
  {
229
229
  project: payload.project,
230
230
  render: {
@@ -240,7 +240,7 @@ async function handleGet(id, options) {
240
240
  );
241
241
  }
242
242
  async function handleSet(id, options) {
243
- const { http } = _chunkM7Y7JYZXjs.getAuthedHttpClient.call(void 0, );
243
+ const { http } = _chunkKGNTKMRGjs.getAuthedHttpClient.call(void 0, );
244
244
  const payload = await http.patch(
245
245
  `/api/v2/play-projects/${encodeURIComponent(id)}`,
246
246
  {
@@ -251,7 +251,7 @@ async function handleSet(id, options) {
251
251
  ...options.disabled !== void 0 ? { disabled: options.disabled } : {}
252
252
  }
253
253
  );
254
- _chunkM7Y7JYZXjs.printCommandEnvelope.call(void 0,
254
+ _chunkKGNTKMRGjs.printCommandEnvelope.call(void 0,
255
255
  {
256
256
  project: payload.project,
257
257
  render: {
@@ -264,9 +264,9 @@ async function handleSet(id, options) {
264
264
  );
265
265
  }
266
266
  async function handleUnlink(id, options) {
267
- const { http } = _chunkM7Y7JYZXjs.getAuthedHttpClient.call(void 0, );
267
+ const { http } = _chunkKGNTKMRGjs.getAuthedHttpClient.call(void 0, );
268
268
  await http.delete(`/api/v2/play-projects/${encodeURIComponent(id)}`);
269
- _chunkM7Y7JYZXjs.printCommandEnvelope.call(void 0,
269
+ _chunkKGNTKMRGjs.printCommandEnvelope.call(void 0,
270
270
  {
271
271
  ok: true,
272
272
  id,
@@ -286,10 +286,10 @@ async function handleUnlink(id, options) {
286
286
  );
287
287
  }
288
288
  async function handleConnect(options) {
289
- const baseUrl = _chunkCDFH2DYLjs.resolveBaseUrlOnly.call(void 0, );
289
+ const baseUrl = _chunkCS6RAIVYjs.resolveBaseUrlOnly.call(void 0, );
290
290
  const connectUrl = `${baseUrl.replace(/\/$/, "")}/api/v2/github/connect`;
291
- const opened = _chunkM7Y7JYZXjs.openInBrowser.call(void 0, connectUrl);
292
- _chunkM7Y7JYZXjs.printCommandEnvelope.call(void 0,
291
+ const opened = _chunkKGNTKMRGjs.openInBrowser.call(void 0, connectUrl);
292
+ _chunkKGNTKMRGjs.printCommandEnvelope.call(void 0,
293
293
  {
294
294
  connectUrl,
295
295
  browser: opened,
@@ -311,7 +311,7 @@ async function handleConnect(options) {
311
311
  );
312
312
  }
313
313
  async function handleDeploymentsList(options) {
314
- const { http } = _chunkM7Y7JYZXjs.getAuthedHttpClient.call(void 0, );
314
+ const { http } = _chunkKGNTKMRGjs.getAuthedHttpClient.call(void 0, );
315
315
  const query = new URLSearchParams();
316
316
  if (options.repo) query.set("projectId", options.repo);
317
317
  if (options.limit) query.set("limit", options.limit);
@@ -319,7 +319,7 @@ async function handleDeploymentsList(options) {
319
319
  const payload = await http.get(
320
320
  `/api/v2/deployments${suffix}`
321
321
  );
322
- _chunkM7Y7JYZXjs.printCommandEnvelope.call(void 0,
322
+ _chunkKGNTKMRGjs.printCommandEnvelope.call(void 0,
323
323
  {
324
324
  deployments: payload.deployments,
325
325
  count: payload.deployments.length,
@@ -363,12 +363,12 @@ function renderDeploymentMonitorLines(results) {
363
363
  ]);
364
364
  }
365
365
  async function handleDeploymentGet(id, options) {
366
- const { http } = _chunkM7Y7JYZXjs.getAuthedHttpClient.call(void 0, );
366
+ const { http } = _chunkKGNTKMRGjs.getAuthedHttpClient.call(void 0, );
367
367
  const payload = await http.get(`/api/v2/deployments/${encodeURIComponent(id)}`);
368
368
  const playLines = renderDeploymentPlayLines(payload.deployment.results);
369
369
  const monitorLines = renderDeploymentMonitorLines(payload.deployment.results);
370
370
  const repository = _nullishCoalesce(_optionalChain([payload, 'access', _10 => _10.project, 'optionalAccess', _11 => _11.repoFullName]), () => ( payload.deployment.repoFullName));
371
- _chunkM7Y7JYZXjs.printCommandEnvelope.call(void 0,
371
+ _chunkKGNTKMRGjs.printCommandEnvelope.call(void 0,
372
372
  {
373
373
  deployment: payload.deployment,
374
374
  project: payload.project,
@@ -387,9 +387,9 @@ async function handleDeploymentGet(id, options) {
387
387
  );
388
388
  }
389
389
  async function handleDeploymentCancel(id, options) {
390
- const { http } = _chunkM7Y7JYZXjs.getAuthedHttpClient.call(void 0, );
390
+ const { http } = _chunkKGNTKMRGjs.getAuthedHttpClient.call(void 0, );
391
391
  const payload = await http.post(`/api/v2/deployments/${encodeURIComponent(id)}/cancel`, {});
392
- _chunkM7Y7JYZXjs.printCommandEnvelope.call(void 0,
392
+ _chunkKGNTKMRGjs.printCommandEnvelope.call(void 0,
393
393
  {
394
394
  cancelled: payload.cancelled,
395
395
  deployment: payload.deployment,
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkM7Y7JYZXjs = require('./chunk-M7Y7JYZX.js');
5
+ var _chunkKGNTKMRGjs = require('./chunk-KGNTKMRG.js');
6
6
 
7
7
 
8
8
 
@@ -25,7 +25,7 @@ var _chunkM7Y7JYZXjs = require('./chunk-M7Y7JYZX.js');
25
25
 
26
26
 
27
27
 
28
- var _chunkCDFH2DYLjs = require('./chunk-CDFH2DYL.js');
28
+ var _chunkCS6RAIVYjs = require('./chunk-CS6RAIVY.js');
29
29
 
30
30
  // src/cli/commands/auth.ts
31
31
 
@@ -52,7 +52,7 @@ function statusBannerLine(value) {
52
52
  return `Service notice: ${banner.message}`;
53
53
  }
54
54
  function envFilePath(baseUrl) {
55
- return _chunkCDFH2DYLjs.hostEnvFilePath.call(void 0, baseUrl);
55
+ return _chunkCS6RAIVYjs.hostEnvFilePath.call(void 0, baseUrl);
56
56
  }
57
57
  function normalizeAuthScope(value) {
58
58
  if (!value || value === "global") return "global";
@@ -65,7 +65,7 @@ function parseAuthScope(args) {
65
65
  }
66
66
  function pendingClaimPath(baseUrl, scope) {
67
67
  if (scope === "folder") {
68
- const target = _chunkCDFH2DYLjs.resolveProjectPinTarget.call(void 0, );
68
+ const target = _chunkCS6RAIVYjs.resolveProjectPinTarget.call(void 0, );
69
69
  if (!target.ok) {
70
70
  throw new Error(
71
71
  `Cowork project folder is ambiguous. Candidate folders: ${target.candidates.join(
@@ -75,10 +75,10 @@ function pendingClaimPath(baseUrl, scope) {
75
75
  }
76
76
  return _path.join.call(void 0, target.dir, ".deepline", "setup", "pending-auth.json");
77
77
  }
78
- return `${_chunkCDFH2DYLjs.hostConfigDirPath.call(void 0, baseUrl)}/pending-auth.json`;
78
+ return `${_chunkCS6RAIVYjs.hostConfigDirPath.call(void 0, baseUrl)}/pending-auth.json`;
79
79
  }
80
80
  function legacyPendingClaimTokenPath(baseUrl) {
81
- return `${_chunkCDFH2DYLjs.hostConfigDirPath.call(void 0, baseUrl)}/pending-claim-token`;
81
+ return `${_chunkCS6RAIVYjs.hostConfigDirPath.call(void 0, baseUrl)}/pending-claim-token`;
82
82
  }
83
83
  function savePendingClaim(baseUrl, claim) {
84
84
  const filePath = pendingClaimPath(baseUrl, claim.scope);
@@ -180,21 +180,21 @@ function parseRegisterWaitMode(args) {
180
180
  function shouldWaitForRegisterClaim(mode) {
181
181
  if (mode === "yes") return true;
182
182
  if (mode === "no") return false;
183
- return _chunkCDFH2DYLjs.detectAgentRuntime.call(void 0, ) !== "claude_cowork";
183
+ return _chunkCS6RAIVYjs.detectAgentRuntime.call(void 0, ) !== "claude_cowork";
184
184
  }
185
185
  function saveEnvValues(values, baseUrl, scope) {
186
186
  const filtered = {
187
- ...values[_chunkCDFH2DYLjs.HOST_URL_ENV] ? { [_chunkCDFH2DYLjs.HOST_URL_ENV]: values[_chunkCDFH2DYLjs.HOST_URL_ENV] } : {},
188
- ...values[_chunkCDFH2DYLjs.API_KEY_ENV] ? { [_chunkCDFH2DYLjs.API_KEY_ENV]: values[_chunkCDFH2DYLjs.API_KEY_ENV] } : {},
189
- ...values[_chunkCDFH2DYLjs.ACTIVE_ORG_ID_ENV] ? { [_chunkCDFH2DYLjs.ACTIVE_ORG_ID_ENV]: values[_chunkCDFH2DYLjs.ACTIVE_ORG_ID_ENV] } : {},
190
- ...Object.prototype.hasOwnProperty.call(values, _chunkCDFH2DYLjs.ACTIVE_ORG_NAME_ENV) ? { [_chunkCDFH2DYLjs.ACTIVE_ORG_NAME_ENV]: values[_chunkCDFH2DYLjs.ACTIVE_ORG_NAME_ENV] } : {},
187
+ ...values[_chunkCS6RAIVYjs.HOST_URL_ENV] ? { [_chunkCS6RAIVYjs.HOST_URL_ENV]: values[_chunkCS6RAIVYjs.HOST_URL_ENV] } : {},
188
+ ...values[_chunkCS6RAIVYjs.API_KEY_ENV] ? { [_chunkCS6RAIVYjs.API_KEY_ENV]: values[_chunkCS6RAIVYjs.API_KEY_ENV] } : {},
189
+ ...values[_chunkCS6RAIVYjs.ACTIVE_ORG_ID_ENV] ? { [_chunkCS6RAIVYjs.ACTIVE_ORG_ID_ENV]: values[_chunkCS6RAIVYjs.ACTIVE_ORG_ID_ENV] } : {},
190
+ ...Object.prototype.hasOwnProperty.call(values, _chunkCS6RAIVYjs.ACTIVE_ORG_NAME_ENV) ? { [_chunkCS6RAIVYjs.ACTIVE_ORG_NAME_ENV]: values[_chunkCS6RAIVYjs.ACTIVE_ORG_NAME_ENV] } : {},
191
191
  // An explicit empty list must reach the store: it clears a stale line.
192
- ...Object.prototype.hasOwnProperty.call(values, _chunkCDFH2DYLjs.FEATURES_ENV) ? { [_chunkCDFH2DYLjs.FEATURES_ENV]: values[_chunkCDFH2DYLjs.FEATURES_ENV] } : {}
192
+ ...Object.prototype.hasOwnProperty.call(values, _chunkCS6RAIVYjs.FEATURES_ENV) ? { [_chunkCS6RAIVYjs.FEATURES_ENV]: values[_chunkCS6RAIVYjs.FEATURES_ENV] } : {}
193
193
  };
194
194
  if (scope === "folder") {
195
- _chunkCDFH2DYLjs.saveProjectDeeplineEnvValues.call(void 0, filtered);
195
+ _chunkCS6RAIVYjs.saveProjectDeeplineEnvValues.call(void 0, filtered);
196
196
  } else {
197
- _chunkCDFH2DYLjs.saveHostEnvValues.call(void 0, baseUrl, filtered);
197
+ _chunkCS6RAIVYjs.saveHostEnvValues.call(void 0, baseUrl, filtered);
198
198
  }
199
199
  }
200
200
  function activeOrgEnvValues(data) {
@@ -202,21 +202,21 @@ function activeOrgEnvValues(data) {
202
202
  if (!orgId) return {};
203
203
  const orgName = typeof data.org_name === "string" ? data.org_name.trim() : "";
204
204
  return {
205
- [_chunkCDFH2DYLjs.ACTIVE_ORG_ID_ENV]: orgId,
206
- [_chunkCDFH2DYLjs.ACTIVE_ORG_NAME_ENV]: orgName,
207
- ..._chunkCDFH2DYLjs.featureEnvValues.call(void 0, data)
205
+ [_chunkCS6RAIVYjs.ACTIVE_ORG_ID_ENV]: orgId,
206
+ [_chunkCS6RAIVYjs.ACTIVE_ORG_NAME_ENV]: orgName,
207
+ ..._chunkCS6RAIVYjs.featureEnvValues.call(void 0, data)
208
208
  };
209
209
  }
210
210
  async function httpJson(method, url, apiKey, body, timeoutMs = AUTH_HTTP_TIMEOUT_MS) {
211
211
  const headers = {
212
212
  "Content-Type": "application/json",
213
- "User-Agent": `deepline-ts-sdk/${_chunkCDFH2DYLjs.SDK_VERSION}`,
213
+ "User-Agent": `deepline-ts-sdk/${_chunkCS6RAIVYjs.SDK_VERSION}`,
214
214
  "X-Deepline-Client-Family": "sdk",
215
215
  "X-Deepline-CLI-Family": "sdk",
216
- "X-Deepline-Agent-Runtime": _chunkCDFH2DYLjs.detectAgentRuntime.call(void 0, ),
217
- "X-Deepline-CLI-Version": _chunkCDFH2DYLjs.SDK_VERSION,
218
- "X-Deepline-SDK-Version": _chunkCDFH2DYLjs.SDK_VERSION,
219
- "X-Deepline-API-Contract": _chunkCDFH2DYLjs.SDK_API_CONTRACT
216
+ "X-Deepline-Agent-Runtime": _chunkCS6RAIVYjs.detectAgentRuntime.call(void 0, ),
217
+ "X-Deepline-CLI-Version": _chunkCS6RAIVYjs.SDK_VERSION,
218
+ "X-Deepline-SDK-Version": _chunkCS6RAIVYjs.SDK_VERSION,
219
+ "X-Deepline-API-Contract": _chunkCS6RAIVYjs.SDK_API_CONTRACT
220
220
  };
221
221
  if (apiKey) headers["Authorization"] = `Bearer ${apiKey}`;
222
222
  const bypassToken = _optionalChain([process, 'access', _7 => _7.env, 'access', _8 => _8.VERCEL_PROTECTION_BYPASS_TOKEN, 'optionalAccess', _9 => _9.trim, 'call', _10 => _10()]);
@@ -262,7 +262,7 @@ async function readStatusBanner(baseUrl) {
262
262
  return _optionalChain([response, 'optionalAccess', _11 => _11.status]) === 200 ? _nullishCoalesce(response.data.banner, () => ( null)) : null;
263
263
  }
264
264
  async function reportSetupCompleted(input) {
265
- const apiKey = input.authScope === "folder" ? _chunkCDFH2DYLjs.resolveProjectApiKeyForBaseUrl.call(void 0, input.baseUrl) : _chunkCDFH2DYLjs.resolveGlobalApiKeyForBaseUrl.call(void 0, input.baseUrl);
265
+ const apiKey = input.authScope === "folder" ? _chunkCS6RAIVYjs.resolveProjectApiKeyForBaseUrl.call(void 0, input.baseUrl) : _chunkCS6RAIVYjs.resolveGlobalApiKeyForBaseUrl.call(void 0, input.baseUrl);
266
266
  if (!apiKey) return;
267
267
  try {
268
268
  await httpJson(
@@ -359,7 +359,7 @@ async function printClaimSuccessBanner(baseUrl, apiKey, statusData) {
359
359
  }
360
360
  }
361
361
  async function handleRegister(args) {
362
- const baseUrl = _chunkCDFH2DYLjs.autoDetectBaseUrl.call(void 0, ).replace(/\/$/, "");
362
+ const baseUrl = _chunkCS6RAIVYjs.autoDetectBaseUrl.call(void 0, ).replace(/\/$/, "");
363
363
  let orgName = "";
364
364
  let orgId = "";
365
365
  let agentName = "";
@@ -414,19 +414,19 @@ async function handleRegister(args) {
414
414
  });
415
415
  saveEnvValues(
416
416
  {
417
- [_chunkCDFH2DYLjs.HOST_URL_ENV]: baseUrl
417
+ [_chunkCS6RAIVYjs.HOST_URL_ENV]: baseUrl
418
418
  },
419
419
  baseUrl,
420
420
  authScope
421
421
  );
422
422
  }
423
423
  if (claimUrl) {
424
- const shouldOpen = waitMode !== "no" && _chunkCDFH2DYLjs.detectAgentRuntime.call(void 0, ) !== "claude_cowork";
424
+ const shouldOpen = waitMode !== "no" && _chunkCS6RAIVYjs.detectAgentRuntime.call(void 0, ) !== "claude_cowork";
425
425
  console.log(
426
426
  shouldOpen ? " Opening approval page in your browser." : " Open this approval page in your browser:"
427
427
  );
428
428
  console.log(` ${claimUrl}`);
429
- if (shouldOpen) _chunkM7Y7JYZXjs.openInBrowser.call(void 0, claimUrl);
429
+ if (shouldOpen) _chunkKGNTKMRGjs.openInBrowser.call(void 0, claimUrl);
430
430
  }
431
431
  if (data.cli_message) {
432
432
  console.log(String(data.cli_message));
@@ -469,8 +469,8 @@ async function handleRegister(args) {
469
469
  if (apiKey) {
470
470
  saveEnvValues(
471
471
  {
472
- [_chunkCDFH2DYLjs.HOST_URL_ENV]: baseUrl,
473
- [_chunkCDFH2DYLjs.API_KEY_ENV]: apiKey,
472
+ [_chunkCS6RAIVYjs.HOST_URL_ENV]: baseUrl,
473
+ [_chunkCS6RAIVYjs.API_KEY_ENV]: apiKey,
474
474
  ...activeOrgEnvValues(statusData)
475
475
  },
476
476
  baseUrl,
@@ -492,7 +492,7 @@ async function handleRegister(args) {
492
492
  }
493
493
  }
494
494
  async function handleWait(args) {
495
- const baseUrl = _chunkCDFH2DYLjs.autoDetectBaseUrl.call(void 0, ).replace(/\/$/, "");
495
+ const baseUrl = _chunkCS6RAIVYjs.autoDetectBaseUrl.call(void 0, ).replace(/\/$/, "");
496
496
  let timeoutSeconds = 300;
497
497
  let requestedScope;
498
498
  if (args.includes("--auth-scope")) {
@@ -516,7 +516,7 @@ async function handleWait(args) {
516
516
  const authScope = resumed.scope;
517
517
  const claimToken = _nullishCoalesce(_optionalChain([pendingClaim, 'optionalAccess', _12 => _12.claimToken]), () => ( ""));
518
518
  if (!pendingClaim) {
519
- const scopedApiKey = authScope === "folder" ? _chunkCDFH2DYLjs.resolveProjectApiKeyForBaseUrl.call(void 0, baseUrl) : _chunkCDFH2DYLjs.resolveGlobalApiKeyForBaseUrl.call(void 0, baseUrl);
519
+ const scopedApiKey = authScope === "folder" ? _chunkCS6RAIVYjs.resolveProjectApiKeyForBaseUrl.call(void 0, baseUrl) : _chunkCS6RAIVYjs.resolveGlobalApiKeyForBaseUrl.call(void 0, baseUrl);
520
520
  if (scopedApiKey) {
521
521
  console.log("Already connected.");
522
522
  return EXIT_OK;
@@ -559,8 +559,8 @@ async function handleWait(args) {
559
559
  if (apiKey) {
560
560
  saveEnvValues(
561
561
  {
562
- [_chunkCDFH2DYLjs.HOST_URL_ENV]: baseUrl,
563
- [_chunkCDFH2DYLjs.API_KEY_ENV]: apiKey,
562
+ [_chunkCS6RAIVYjs.HOST_URL_ENV]: baseUrl,
563
+ [_chunkCS6RAIVYjs.API_KEY_ENV]: apiKey,
564
564
  ...activeOrgEnvValues(data)
565
565
  },
566
566
  baseUrl,
@@ -584,8 +584,8 @@ async function handleWait(args) {
584
584
  return EXIT_AUTH;
585
585
  }
586
586
  async function authStatusLine(timeoutMs = 3e3) {
587
- const baseUrl = _chunkCDFH2DYLjs.autoDetectBaseUrl.call(void 0, ).replace(/\/$/, "");
588
- const apiKey = _chunkCDFH2DYLjs.resolveApiKeyForBaseUrl.call(void 0, baseUrl);
587
+ const baseUrl = _chunkCS6RAIVYjs.autoDetectBaseUrl.call(void 0, ).replace(/\/$/, "");
588
+ const apiKey = _chunkCS6RAIVYjs.resolveApiKeyForBaseUrl.call(void 0, baseUrl);
589
589
  if (!apiKey) return `Auth: not connected (${baseUrl})`;
590
590
  try {
591
591
  const { status, data } = await httpJson(
@@ -608,9 +608,9 @@ async function authStatusLine(timeoutMs = 3e3) {
608
608
  }
609
609
  }
610
610
  async function handleStatus(args) {
611
- const baseUrl = _chunkCDFH2DYLjs.autoDetectBaseUrl.call(void 0, ).replace(/\/$/, "");
611
+ const baseUrl = _chunkCS6RAIVYjs.autoDetectBaseUrl.call(void 0, ).replace(/\/$/, "");
612
612
  const reveal = args.includes("--reveal");
613
- const jsonOutput = _chunkM7Y7JYZXjs.argsWantJson.call(void 0, args);
613
+ const jsonOutput = _chunkKGNTKMRGjs.argsWantJson.call(void 0, args);
614
614
  const hasExplicitAuthScope = args.includes("--auth-scope");
615
615
  let authScope = null;
616
616
  if (hasExplicitAuthScope) {
@@ -651,14 +651,14 @@ async function handleStatus(args) {
651
651
  };
652
652
  hostLines.push(`Host: ${baseUrl} (unreachable)`);
653
653
  }
654
- const apiKey = authScope === "folder" ? _chunkCDFH2DYLjs.resolveProjectApiKeyForBaseUrl.call(void 0, baseUrl) : authScope === "global" ? _chunkCDFH2DYLjs.resolveGlobalApiKeyForBaseUrl.call(void 0, baseUrl) : _chunkCDFH2DYLjs.resolveApiKeyForBaseUrl.call(void 0, baseUrl);
654
+ const apiKey = authScope === "folder" ? _chunkCS6RAIVYjs.resolveProjectApiKeyForBaseUrl.call(void 0, baseUrl) : authScope === "global" ? _chunkCS6RAIVYjs.resolveGlobalApiKeyForBaseUrl.call(void 0, baseUrl) : _chunkCS6RAIVYjs.resolveApiKeyForBaseUrl.call(void 0, baseUrl);
655
655
  if (!apiKey) {
656
656
  const { claim: pendingClaim } = resolvePendingAuthClaimForResume(
657
657
  baseUrl,
658
658
  _nullishCoalesce(authScope, () => ( void 0))
659
659
  );
660
660
  if (pendingClaim) {
661
- _chunkM7Y7JYZXjs.printCommandEnvelope.call(void 0,
661
+ _chunkKGNTKMRGjs.printCommandEnvelope.call(void 0,
662
662
  {
663
663
  ..._nullishCoalesce(hostStatusPayload, () => ( { host: baseUrl })),
664
664
  status: "pending",
@@ -679,7 +679,7 @@ async function handleStatus(args) {
679
679
  );
680
680
  return EXIT_OK;
681
681
  }
682
- _chunkM7Y7JYZXjs.printCommandEnvelope.call(void 0,
682
+ _chunkKGNTKMRGjs.printCommandEnvelope.call(void 0,
683
683
  {
684
684
  ..._nullishCoalesce(hostStatusPayload, () => ( { host: baseUrl })),
685
685
  status: "not connected",
@@ -712,7 +712,7 @@ async function handleStatus(args) {
712
712
  }
713
713
  );
714
714
  if (status === 401 || status === 403) {
715
- _chunkM7Y7JYZXjs.printCommandEnvelope.call(void 0,
715
+ _chunkKGNTKMRGjs.printCommandEnvelope.call(void 0,
716
716
  {
717
717
  ..._nullishCoalesce(hostStatusPayload, () => ( { host: baseUrl })),
718
718
  status: "unauthorized",
@@ -739,7 +739,7 @@ async function handleStatus(args) {
739
739
  console.error(`Auth status error (status ${status}).`);
740
740
  return EXIT_SERVER;
741
741
  }
742
- const resolvedAuthScope = _nullishCoalesce(authScope, () => ( (_chunkCDFH2DYLjs.getResolvedProjectAuthSource.call(void 0, baseUrl, apiKey) ? "folder" : "global")));
742
+ const resolvedAuthScope = _nullishCoalesce(authScope, () => ( (_chunkCS6RAIVYjs.getResolvedProjectAuthSource.call(void 0, baseUrl, apiKey) ? "folder" : "global")));
743
743
  clearSatisfiedPendingClaim(
744
744
  baseUrl,
745
745
  resolvedAuthScope,
@@ -767,28 +767,28 @@ async function handleStatus(args) {
767
767
  if (apiKeyResp) {
768
768
  saveEnvValues(
769
769
  {
770
- [_chunkCDFH2DYLjs.HOST_URL_ENV]: baseUrl,
771
- [_chunkCDFH2DYLjs.API_KEY_ENV]: apiKeyResp,
770
+ [_chunkCS6RAIVYjs.HOST_URL_ENV]: baseUrl,
771
+ [_chunkCS6RAIVYjs.API_KEY_ENV]: apiKeyResp,
772
772
  ...activeOrgEnvValues(data)
773
773
  },
774
774
  baseUrl,
775
775
  resolvedAuthScope
776
776
  );
777
777
  if (resolvedAuthScope === "folder") {
778
- const target = _chunkCDFH2DYLjs.resolveProjectPinTarget.call(void 0, );
778
+ const target = _chunkCS6RAIVYjs.resolveProjectPinTarget.call(void 0, );
779
779
  savedApiKeyPath = target.ok ? _path.join.call(void 0, target.dir, ".env.deepline") : null;
780
780
  } else {
781
781
  savedApiKeyPath = envFilePath(baseUrl);
782
782
  }
783
783
  }
784
- } else if (resolvedAuthScope === "folder" || _chunkCDFH2DYLjs.storedHostApiKey.call(void 0, baseUrl) === apiKey) {
785
- saveEnvValues(_chunkCDFH2DYLjs.featureEnvValues.call(void 0, data), baseUrl, resolvedAuthScope);
784
+ } else if (resolvedAuthScope === "folder" || _chunkCS6RAIVYjs.storedHostApiKey.call(void 0, baseUrl) === apiKey) {
785
+ saveEnvValues(_chunkCS6RAIVYjs.featureEnvValues.call(void 0, data), baseUrl, resolvedAuthScope);
786
786
  }
787
- _chunkM7Y7JYZXjs.printCommandEnvelope.call(void 0,
787
+ _chunkKGNTKMRGjs.printCommandEnvelope.call(void 0,
788
788
  {
789
789
  ...payload,
790
- ..._chunkCDFH2DYLjs.detectAgentRuntime.call(void 0, ) !== "unknown" ? {
791
- command_context: _chunkCDFH2DYLjs.resolveCliCommandContext.call(void 0,
790
+ ..._chunkCS6RAIVYjs.detectAgentRuntime.call(void 0, ) !== "unknown" ? {
791
+ command_context: _chunkCS6RAIVYjs.resolveCliCommandContext.call(void 0,
792
792
  { baseUrl, apiKey },
793
793
  resolvedAuthScope
794
794
  )
@@ -2,6 +2,13 @@
2
2
  import { Type } from "@sinclair/typebox";
3
3
  import { Value } from "@sinclair/typebox/value";
4
4
  var PLAY_AUTHORING_CONTRACT_EDITION = 10;
5
+ var EXPLICIT_FRESHNESS_STALE_AFTER_SECONDS_DESCRIPTION = [
6
+ "Edition 11 requires an explicit choice.",
7
+ "`0` starts a fresh logical call, though a matching operation receipt may recover that same operation after resume;",
8
+ "`null` allows indefinite result reuse;",
9
+ "a positive integer is the maximum result age in seconds.",
10
+ "Omitted values retain legacy behavior in older editions."
11
+ ].join(" ");
5
12
  var SUPPORTED_PLAY_AUTHORING_CONTRACT_EDITIONS = [
6
13
  1,
7
14
  2,
@@ -77,7 +84,7 @@ var PLAY_AUTHORING_CONTRACT_CHANGELOG_DETAILS = [
77
84
  readerRemoval: null
78
85
  },
79
86
  {
80
- changed: 'CSV datasets always use source row identity and process every input occurrence, even when key or rowIdentity: "key" is supplied. Editions 1\u201310 retain their admitted row identity and completed receipts; non-CSV datasets retain explicit key deduplication.',
87
+ changed: 'Requires explicit freshness and semantic identity for supported durable calls, and gives CSV datasets source-row identity so every input occurrence is processed even when key or rowIdentity: "key" is supplied. Edition 10 retains its list-getter behavior and editions 1\u201310 retain their admitted CSV identity and completed receipts; non-CSV datasets keep explicit key deduplication.',
81
88
  compatibilityOwner: "Plays Runtime",
82
89
  newWritesEnd: null,
83
90
  readerRemoval: null
@@ -742,7 +749,7 @@ var PLAY_AUTHORING_FIELD_REGISTRY = {
742
749
  required: false,
743
750
  resolution: "runtime-allowed",
744
751
  issueCode: "play_authoring_durable_policy_invalid",
745
- description: "`0` always executes; `null`/omitted never expires; a positive integer is a TTL in seconds.",
752
+ description: EXPLICIT_FRESHNESS_STALE_AFTER_SECONDS_DESCRIPTION,
746
753
  errorMessage: "staleAfterSeconds must be null, 0 (always execute), or a positive whole number of seconds."
747
754
  },
748
755
  "ctx.tools.execute.id": {
@@ -1005,7 +1012,7 @@ var PLAY_AUTHORING_FIELD_REGISTRY = {
1005
1012
  required: false,
1006
1013
  resolution: "static-when-present",
1007
1014
  issueCode: "play_authoring_dataset_option_invalid",
1008
- description: "Select source_row to process every input occurrence. CSV datasets default to source_row in edition 11; earlier editions retain key identity. Select key only to intentionally deduplicate business keys.",
1015
+ description: "Edition 11 CSV inputs always use source-row occurrence identity, even with rowIdentity: key; key-based deduplication remains available for non-CSV inputs and editions 1\u201310.",
1009
1016
  errorMessage: 'ctx.dataset run rowIdentity must be "source_row" or "key".'
1010
1017
  },
1011
1018
  "ctx.dataset.run.onRowError": {
@@ -1101,7 +1108,7 @@ var PLAY_AUTHORING_FIELD_REGISTRY = {
1101
1108
  required: false,
1102
1109
  resolution: "runtime-dynamic",
1103
1110
  issueCode: "play_authoring_durable_policy_invalid",
1104
- description: "Checkpoint freshness: null/omitted never expires, 0 always executes.",
1111
+ description: EXPLICIT_FRESHNESS_STALE_AFTER_SECONDS_DESCRIPTION,
1105
1112
  errorMessage: "staleAfterSeconds must be null, 0 (always execute), or a positive whole number of seconds."
1106
1113
  },
1107
1114
  "ctx.fetch.key": {
@@ -1134,7 +1141,7 @@ var PLAY_AUTHORING_FIELD_REGISTRY = {
1134
1141
  required: false,
1135
1142
  resolution: "runtime-dynamic",
1136
1143
  issueCode: "play_authoring_durable_policy_invalid",
1137
- description: "Fetch freshness: null/omitted never expires, 0 always executes.",
1144
+ description: EXPLICIT_FRESHNESS_STALE_AFTER_SECONDS_DESCRIPTION,
1138
1145
  errorMessage: "staleAfterSeconds must be null, 0 (always execute), or a positive whole number of seconds."
1139
1146
  },
1140
1147
  "ctx.runPlay.key": {
@@ -1379,6 +1386,38 @@ var PLAY_AUTHORING_FIELD_REGISTRY = {
1379
1386
  description: "One non-empty Customer DB SQL string; the deprecated SqlQuery object is accepted only without parameter values.",
1380
1387
  errorMessage: "ctx.customerDb.query statement must be a non-empty SQL string. Deprecated SqlQuery objects cannot contain parameter values."
1381
1388
  },
1389
+ "ctx.customerDb.query.options.id": {
1390
+ schema: Type.String({ pattern: "\\S" }),
1391
+ fixtures: {
1392
+ valid: "customer-report-read",
1393
+ invalid: "",
1394
+ absent: void 0,
1395
+ unresolved: { expression: "operationId" },
1396
+ edition1: "query"
1397
+ },
1398
+ referenceType: "string",
1399
+ required: true,
1400
+ resolution: "runtime-dynamic",
1401
+ issueCode: "play_authoring_tool_request_invalid",
1402
+ description: "Stable operation identity for Customer DB query recovery.",
1403
+ errorMessage: "ctx.customerDb.query options.id must be a non-empty stable string."
1404
+ },
1405
+ "ctx.customerDb.query.options.staleAfterSeconds": {
1406
+ schema: Type.Literal(0),
1407
+ fixtures: {
1408
+ valid: 0,
1409
+ invalid: 1,
1410
+ absent: void 0,
1411
+ unresolved: { expression: "ttl" },
1412
+ edition1: 0
1413
+ },
1414
+ referenceType: "number | null",
1415
+ required: false,
1416
+ resolution: "runtime-dynamic",
1417
+ issueCode: "play_authoring_durable_policy_invalid",
1418
+ description: "Customer DB queries always execute with freshness 0.",
1419
+ errorMessage: "Customer DB queries must use staleAfterSeconds: 0."
1420
+ },
1382
1421
  "ctx.customerDb.query.options.maxRows": {
1383
1422
  schema: Type.Integer({ minimum: 1 }),
1384
1423
  fixtures: {
@@ -1621,13 +1660,13 @@ var PLAY_AUTHORING_CLOUD_TYPE_DECLARATIONS = [
1621
1660
  "export type DatasetColumnRunInput<Row, Value> = { readonly row: Row; readonly ctx: DeeplinePlayRuntimeContext; readonly index: number; readonly previousCell?: PreviousCell<Value> };",
1622
1661
  "export type DatasetColumnDefinition<Row, Value> = { readonly run: (input: DatasetColumnRunInput<Row, Value>) => Value | Promise<Value>; readonly runIf?: (row: Row, index: number) => boolean | Promise<boolean> };",
1623
1662
  "export type ConditionalStepResolver<Row, Value, Else = null> = { readonly kind: 'conditional'; readonly when: (row: Row, index: number) => boolean | Promise<boolean>; readonly run: StepResolver<Row, Value>; readonly elseValue: Else; else<ValueElse>(value: ValueElse): ConditionalStepResolver<Row, Value, ValueElse>; };",
1624
- "export type StepOptions<Row, Value = unknown> = { readonly runIf?: (row: Row, index: number) => boolean | Promise<boolean>; readonly recompute?: boolean; readonly recomputeOnError?: boolean; readonly staleAfterSeconds?: number };",
1663
+ "export type StepOptions<Row, Value = unknown> = { readonly runIf?: (row: Row, index: number) => boolean | Promise<boolean>; readonly recompute?: boolean; readonly recomputeOnError?: boolean; readonly staleAfterSeconds?: DurableCallStaleAfterSeconds };",
1625
1664
  "export type StepProgramOptions = { readonly continueOnProviderUnavailable?: boolean };",
1626
1665
  "export type StepProgram<Input, Output, Return = Output> = { readonly kind: 'steps'; readonly steps: readonly PlayStepProgramStep[]; readonly returnResolver?: StepResolver<Output, Return>; readonly continueOnProviderUnavailable?: boolean; readonly __inputType?: (input: Input) => void; step<Name extends string, Value>(name: Name, resolver: StepResolver<Output, Value> | ConditionalStepResolver<Output, Value> | StepProgramResolver<Output, Value>): StepProgram<Input, Output & Record<Name, Value>, Return>; step<Name extends string, Value>(name: Name, resolver: StepResolver<Output, Value> | StepProgramResolver<Output, Value>, options: StepOptions<Output, Value>): StepProgram<Input, Output & Record<Name, Value | null>, Return>; return<Value>(resolver: StepResolver<Output, Value>): StepProgram<Input, Output, Value>; };",
1627
1666
  "export type StepProgramResolver<Input, Return> = { readonly kind: 'steps'; readonly steps: readonly PlayStepProgramStep[]; readonly returnResolver?: StepResolver<never, Return>; readonly __inputType?: (input: Input) => void };",
1628
1667
  "export type RunnableStepProgram<Input, Return> = Pick<StepProgram<Input, never, Return>, 'kind' | 'steps' | 'returnResolver' | '__inputType'>;",
1629
1668
  "export type RunnableColumnStepProgram<Return> = Pick<StepProgramResolver<unknown, Return>, 'kind' | 'steps' | 'returnResolver'>;",
1630
- "export type PlayStepProgramStep = { readonly name: string; readonly recompute?: boolean; readonly recomputeOnError?: boolean; readonly staleAfterSeconds?: number; readonly resolver: StepResolver<Record<string, unknown>, unknown> | ConditionalStepResolver<Record<string, unknown>, unknown> | StepProgramResolver<Record<string, unknown>, unknown> };",
1669
+ "export type PlayStepProgramStep = { readonly name: string; readonly recompute?: boolean; readonly recomputeOnError?: boolean; readonly staleAfterSeconds?: DurableCallStaleAfterSeconds; readonly resolver: StepResolver<Record<string, unknown>, unknown> | ConditionalStepResolver<Record<string, unknown>, unknown> | StepProgramResolver<Record<string, unknown>, unknown> };",
1631
1670
  "export type ColumnResolver<Row, Value> = StepResolver<Row, Value> | ConditionalStepResolver<Row, Value> | RunnableColumnStepProgram<Value>;",
1632
1671
  "export type StepProgramOutput<TProgram> = TProgram extends StepProgram<unknown, infer Output, unknown> ? Output : never;",
1633
1672
  "export type DatasetRowKey<InputRow extends object> = (keyof InputRow & string) | readonly (keyof InputRow & string)[] | ((row: InputRow, index: number) => string | number | readonly unknown[]);",
@@ -1652,8 +1691,8 @@ var PLAY_AUTHORING_CLOUD_TYPE_DECLARATIONS = [
1652
1691
  " readonly run: { readonly id: string };",
1653
1692
  ` runSteps<TInput extends Record<string, unknown>, TOutput>(program: RunnableStepProgram<TInput, TOutput>, input: TInput, options?: { description?: ${cloudReferenceType("ctx.runSteps.options.description")} }): Promise<TOutput>;`,
1654
1693
  " tools: { execute<K extends string>(request: ToolExecutionRequest<K>): Promise<ToolExecutionOutput<K>> };",
1655
- ` customerDb: { query<TRow extends Record<string, unknown> = Record<string, unknown>>(statement: SqlQuery, options?: { maxRows?: ${cloudReferenceType("ctx.customerDb.query.options.maxRows")}; timeoutMs?: ${cloudReferenceType("ctx.customerDb.query.options.timeoutMs")} }): Promise<TRow[]> };`,
1656
- ` tool<K extends string>(key: ${cloudReferenceType("ctx.tool.key")}, toolId: K, input: ${cloudReferenceType("ctx.tool.input")}, options?: { description?: ${cloudReferenceType("ctx.tool.options.description")} }): Promise<ToolExecutionOutput<K>>;`,
1694
+ ` customerDb: { query<TRow extends Record<string, unknown> = Record<string, unknown>>(statement: SqlQuery, options?: { id?: ${cloudReferenceType("ctx.customerDb.query.options.id")}; staleAfterSeconds?: ${cloudReferenceType("ctx.customerDb.query.options.staleAfterSeconds")}; maxRows?: ${cloudReferenceType("ctx.customerDb.query.options.maxRows")}; timeoutMs?: ${cloudReferenceType("ctx.customerDb.query.options.timeoutMs")} }): Promise<TRow[]> };`,
1695
+ ` tool<K extends string>(key: ${cloudReferenceType("ctx.tool.key")}, toolId: K, input: ${cloudReferenceType("ctx.tool.input")}, options?: { description?: ${cloudReferenceType("ctx.tool.options.description")}; staleAfterSeconds?: DurableCallStaleAfterSeconds }): Promise<ToolExecutionOutput<K>>;`,
1657
1696
  " step<T>(id: string, run: () => T | Promise<T>, options?: RuntimeStepOptions): Promise<T>;",
1658
1697
  " fetch(key: string, url: string | URL, init?: RequestInit & { headers?: HeadersInit & { 'Idempotency-Key'?: string; 'X-Idempotency-Key'?: string }; auth?: SecretAuthInput }, options?: FetchOptions): Promise<PlayFetchResponse>;",
1659
1698
  " secrets: { get(name: string): SecretPromise; bearer(secret: string | SecretPromise | SecretHandle): SecretAuth; header(header: string, secret: string | SecretPromise | SecretHandle): SecretAuth };",
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-H7HIDGZ7.mjs";
4
4
  import {
5
5
  PLAY_AUTHORING_CONTRACT_EDITION
6
- } from "./chunk-RKMB3N7K.mjs";
6
+ } from "./chunk-3HU47EGZ.mjs";
7
7
  import {
8
8
  PLAY_ARTIFACT_KINDS,
9
9
  PLAY_RUNTIME_BACKENDS,