deepline 0.3.391 → 0.3.393

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 (154) hide show
  1. package/dist/bundling-sources/sdk/src/client.ts +156 -24
  2. package/dist/bundling-sources/sdk/src/compat.ts +9 -0
  3. package/dist/bundling-sources/sdk/src/http.ts +5 -1
  4. package/dist/bundling-sources/sdk/src/index.ts +5 -0
  5. package/dist/bundling-sources/sdk/src/plays/csv-data-input.ts +3 -0
  6. package/dist/bundling-sources/sdk/src/plays/run-request.ts +182 -6
  7. package/dist/bundling-sources/sdk/src/release.ts +4 -1
  8. package/dist/bundling-sources/sdk/src/types.ts +15 -0
  9. package/dist/bundling-sources/shared_libs/integration-contracts/request-warnings.ts +64 -0
  10. package/dist/bundling-sources/shared_libs/play-data-plane/runtime-sheet-storage-contract.ts +315 -0
  11. package/dist/bundling-sources/shared_libs/play-runtime/async-operation.ts +41 -8
  12. package/dist/bundling-sources/shared_libs/play-runtime/context.ts +418 -44
  13. package/dist/bundling-sources/shared_libs/play-runtime/ctx-types.ts +36 -3
  14. package/dist/bundling-sources/shared_libs/play-runtime/durable-invocation-fence.ts +36 -0
  15. package/dist/bundling-sources/shared_libs/play-runtime/map-execution-frame.ts +11 -3
  16. package/dist/bundling-sources/shared_libs/play-runtime/play-runs/projection/gateway-adapter.ts +1 -0
  17. package/dist/bundling-sources/shared_libs/play-runtime/play-runtime-semantics.ts +19 -1
  18. package/dist/bundling-sources/shared_libs/play-runtime/run-identity.ts +26 -0
  19. package/dist/bundling-sources/shared_libs/play-runtime/runner-app/index.ts +158 -10
  20. package/dist/bundling-sources/shared_libs/play-runtime/runtime-api.ts +235 -2
  21. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/absurd-runtime-worker.ts +92 -58
  22. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/postgres-pool.ts +7 -1
  23. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/postgres-progress.ts +30 -7
  24. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/postgres.ts +1161 -316
  25. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/runtime-event-search.ts +28 -15
  26. package/dist/bundling-sources/shared_libs/play-runtime/tool-execute-retry-policy.ts +24 -3
  27. package/dist/bundling-sources/shared_libs/play-runtime/tool-result.ts +31 -0
  28. package/dist/bundling-sources/shared_libs/plays/authoring-contract.ts +37 -4
  29. package/dist/bundling-sources/shared_libs/plays/dataset.ts +172 -79
  30. package/dist/bundling-sources/shared_libs/plays/extension-bridge.ts +57 -0
  31. package/dist/bundling-sources/shared_libs/plays/run-summary-types.ts +1 -0
  32. package/dist/bundling-sources/shared_libs/plays/static-pipeline.ts +173 -1
  33. package/dist/cli/{auth-6QET7NFP.mjs → auth-5PXHA232.mjs} +4 -4
  34. package/dist/cli/auth-P3MVDTXM.js +39 -0
  35. package/dist/cli/{billing-KJAGTCFR.js → billing-JFB2XLSO.js} +101 -74
  36. package/dist/cli/{billing-HAQ2VDQX.mjs → billing-Z2N7ZAGM.mjs} +32 -5
  37. package/dist/cli/{chunk-556BMGEB.js → chunk-2HAD745V.js} +242 -183
  38. package/dist/cli/{chunk-HFTOOZGN.mjs → chunk-2LGC4EFT.mjs} +3 -3
  39. package/dist/cli/{chunk-QCWIORKR.mjs → chunk-4PT2VA3A.mjs} +2 -2
  40. package/dist/cli/{chunk-KA7X75HC.js → chunk-4XX6443T.js} +176 -87
  41. package/dist/cli/{chunk-YBZY3EZF.mjs → chunk-5KWKZIQR.mjs} +4 -4
  42. package/dist/cli/{chunk-VH4B5OYM.mjs → chunk-5PRVMXKB.mjs} +27 -2
  43. package/dist/cli/{chunk-DSWSEHRX.mjs → chunk-6I73X254.mjs} +1 -1
  44. package/dist/cli/{chunk-6L4P7Z6C.mjs → chunk-7HR7BGZL.mjs} +13 -3
  45. package/dist/cli/{chunk-4S6X74A3.js → chunk-AARX5L4B.js} +2 -2
  46. package/dist/cli/{chunk-MHLCMJ2E.js → chunk-CDFH2DYL.js} +20 -19
  47. package/dist/cli/{chunk-PFPP4BKS.mjs → chunk-FQ6VHPW4.mjs} +2 -2
  48. package/dist/cli/{chunk-5JLQPVNX.js → chunk-GSK6NHVM.js} +1 -0
  49. package/dist/cli/{chunk-TLHF54VX.mjs → chunk-HLEESTCH.mjs} +1 -1
  50. package/dist/cli/{chunk-EDWJY6T4.mjs → chunk-HQXL5526.mjs} +1 -0
  51. package/dist/cli/{chunk-Q6EOHNRH.mjs → chunk-JI2B4RZP.mjs} +119 -6
  52. package/dist/cli/{chunk-I3MKXASV.mjs → chunk-KIYU2TGL.mjs} +2 -2
  53. package/dist/cli/{chunk-Y6VOGHF2.mjs → chunk-KZZC33PY.mjs} +0 -181
  54. package/dist/cli/{chunk-XBPLTHGB.js → chunk-L2SYLGRP.js} +8 -8
  55. package/dist/cli/{chunk-K3ODOHOI.mjs → chunk-LMMEAMA7.mjs} +3 -2
  56. package/dist/cli/{chunk-KWF4HJF7.mjs → chunk-LZPCDB7U.mjs} +3 -2
  57. package/dist/cli/{chunk-I7EVBLTW.js → chunk-M7Y7JYZX.js} +32 -7
  58. package/dist/cli/{chunk-QGKPTBRR.js → chunk-MS6GUPBB.js} +3 -3
  59. package/dist/cli/{chunk-ME2DZAHC.js → chunk-OXNOAD6Y.js} +26 -26
  60. package/dist/cli/{chunk-XEV5LMS2.js → chunk-PTDECJGP.js} +50 -50
  61. package/dist/cli/{chunk-5O4B6AUN.js → chunk-PWSWAN7Q.js} +25 -2
  62. package/dist/cli/{chunk-DRZFTRZJ.mjs → chunk-Q26LUSQ2.mjs} +79 -20
  63. package/dist/cli/{chunk-3VN4FTE3.js → chunk-RDXFGPJU.js} +1 -182
  64. package/dist/cli/{chunk-7E66A24V.mjs → chunk-RKMB3N7K.mjs} +25 -2
  65. package/dist/cli/{chunk-WLODHQ7S.js → chunk-RWHWF5ZJ.js} +3 -2
  66. package/dist/cli/{chunk-H3DCZOXR.mjs → chunk-STNYIMIV.mjs} +97 -8
  67. package/dist/cli/chunk-UBKA33KY.mjs +310 -0
  68. package/dist/cli/{chunk-PAIMOGCM.js → chunk-UHNDVD3P.js} +125 -12
  69. package/dist/cli/{chunk-H2ER7QWR.mjs → chunk-UOGZUA24.mjs} +180 -18
  70. package/dist/cli/{chunk-RTH26NF3.js → chunk-VIQJIX2P.js} +73 -63
  71. package/dist/cli/{chunk-ED42XCOW.js → chunk-VIWE6WRK.js} +629 -467
  72. package/dist/cli/{chunk-RA2SDTSX.js → chunk-W4WOMXR3.js} +15 -15
  73. package/dist/cli/chunk-XDVT3GOM.js +310 -0
  74. package/dist/cli/{chunk-UOSKJIXE.js → chunk-Z3OOZM5L.js} +8 -8
  75. package/dist/cli/{csv-V7UHOBFE.mjs → csv-KJWZHKCH.mjs} +3 -3
  76. package/dist/cli/{csv-2WSF5TEM.js → csv-P3Z3YE7H.js} +12 -12
  77. package/dist/cli/{db-TD375E4N.mjs → db-NCM4CQIS.mjs} +6 -5
  78. package/dist/cli/{db-42RL4FZD.js → db-NUZGJNQC.js} +31 -30
  79. package/dist/cli/{describe-GPUKAWOZ.mjs → describe-WT6MM2GO.mjs} +18 -17
  80. package/dist/cli/{describe-7WFCBZUY.js → describe-YGSEN5WC.js} +25 -24
  81. package/dist/cli/{executions-LGVG3FPH.js → executions-PCOLHN7Q.js} +8 -7
  82. package/dist/cli/{executions-M7O63JNA.mjs → executions-XS2IPJ4W.mjs} +6 -5
  83. package/dist/cli/{feedback-PZZA2M4S.js → feedback-4MSH7TFU.js} +7 -7
  84. package/dist/cli/{feedback-6PBSKVB2.mjs → feedback-CCLTS5SV.mjs} +3 -3
  85. package/dist/cli/{git-2VIFM5DI.mjs → git-K2DHPMPC.mjs} +4 -4
  86. package/dist/cli/git-RNM45FX4.js +23 -0
  87. package/dist/cli/index.js +96 -92
  88. package/dist/cli/index.mjs +46 -42
  89. package/dist/cli/{legacy-noops-DPUBZI7N.mjs → legacy-noops-B5S4AR3P.mjs} +4 -4
  90. package/dist/cli/{legacy-noops-IQ6QTZNZ.js → legacy-noops-GPNOPFXV.js} +7 -7
  91. package/dist/cli/{monitors-KBZVQG2U.mjs → monitors-JLMAIPRG.mjs} +6 -5
  92. package/dist/cli/{monitors-6GWAZFYV.js → monitors-ZAWD7NSN.js} +87 -86
  93. package/dist/cli/{org-JKGTHXOZ.js → org-P2KN4CES.js} +66 -65
  94. package/dist/cli/{org-CP3VSJBX.mjs → org-T3JTHP4G.mjs} +6 -5
  95. package/dist/cli/{play-DD2ME4L4.mjs → play-NK6BLRGL.mjs} +12 -11
  96. package/dist/cli/play-PDXR6JFB.js +158 -0
  97. package/dist/cli/{providers-JUNOFKI7.mjs → providers-3NQRA7IT.mjs} +6 -5
  98. package/dist/cli/{providers-P34QYYG6.js → providers-5QRZN3DT.js} +9 -8
  99. package/dist/cli/{quickstart-N6SWOK7E.mjs → quickstart-PIA2JGPV.mjs} +3 -3
  100. package/dist/cli/{quickstart-UL3DEFA4.js → quickstart-R7NUZGNW.js} +5 -5
  101. package/dist/cli/run-identity-G257GQED.js +25 -0
  102. package/dist/cli/run-identity-MRNCEGV2.mjs +25 -0
  103. package/dist/cli/{search-SC7I56HX.mjs → search-AIDIIGLY.mjs} +7 -6
  104. package/dist/cli/search-QRWL7MFM.js +27 -0
  105. package/dist/cli/{secrets-6ZJE7ZPM.js → secrets-BT3PGMWN.js} +15 -14
  106. package/dist/cli/{secrets-RTARNYF5.mjs → secrets-OQNHL45O.mjs} +6 -5
  107. package/dist/cli/{sessions-6IZ2XHGW.js → sessions-EYXWOSWK.js} +5 -5
  108. package/dist/cli/{sessions-7RKV2T3O.mjs → sessions-SF7WJPJP.mjs} +4 -4
  109. package/dist/cli/{settings-YX3XJDXE.js → settings-BA3GHBOD.js} +76 -75
  110. package/dist/cli/{settings-V6PXA6HY.mjs → settings-Y57JTFDD.mjs} +9 -8
  111. package/dist/cli/{setup-V2O4UJNT.mjs → setup-7GR5GBHA.mjs} +6 -6
  112. package/dist/cli/{setup-CQ5VRNNU.js → setup-RERXYC66.js} +41 -41
  113. package/dist/cli/{skills-VHJZWEHA.mjs → skills-SJWIQAV5.mjs} +4 -4
  114. package/dist/cli/skills-V7EY75HB.js +28 -0
  115. package/dist/cli/tools-H5HLBCHH.js +41 -0
  116. package/dist/cli/{tools-OD5WKEWY.mjs → tools-ZF3JXPNL.mjs} +10 -9
  117. package/dist/cli/update-472HA3LT.js +28 -0
  118. package/dist/cli/{update-CRMNOMJ3.mjs → update-FFFYQAOJ.mjs} +6 -6
  119. package/dist/cli/{workflow-XHORSD5T.js → workflow-SZJVQH4T.js} +17 -16
  120. package/dist/cli/{workflow-EVDYNCDD.mjs → workflow-XVFEEGAS.mjs} +7 -6
  121. package/dist/{client-DpzZi4fU.d.mts → client-DU5dtHDy.d.mts} +157 -4
  122. package/dist/{client-BhK9kix9.d.ts → client-mCE88hC4.d.ts} +157 -4
  123. package/dist/{compiler-manifest-CY2v8ab0.d.ts → compiler-manifest-DE4RdAiY.d.mts} +61 -1
  124. package/dist/{compiler-manifest-CY2v8ab0.d.mts → compiler-manifest-DE4RdAiY.d.ts} +61 -1
  125. package/dist/{index-B9fBZH1g.d.mts → index-BI6nWgaV.d.mts} +1 -1
  126. package/dist/{index-BZ6uzZJl.d.ts → index-Bi-f7HFT.d.ts} +1 -1
  127. package/dist/index.d.mts +5 -5
  128. package/dist/index.d.ts +5 -5
  129. package/dist/index.js +120 -29
  130. package/dist/index.mjs +111 -20
  131. package/dist/install-integrity.json +94 -88
  132. package/dist/plays/bundle-play-file.d.mts +3 -3
  133. package/dist/plays/bundle-play-file.d.ts +3 -3
  134. package/dist/plays/bundle-play-file.mjs +2 -2
  135. package/dist/plays/csv-data-input.d.mts +2 -0
  136. package/dist/plays/csv-data-input.d.ts +2 -0
  137. package/dist/plays/csv-data-input.js +2 -2
  138. package/dist/plays/csv-data-input.mjs +1 -1
  139. package/dist/plays/run-request.d.mts +2 -2
  140. package/dist/plays/run-request.d.ts +2 -2
  141. package/dist/plays/run-request.js +5 -2
  142. package/dist/plays/run-request.mjs +4 -1
  143. package/dist/release.d.mts +4 -1
  144. package/dist/release.d.ts +4 -1
  145. package/dist/release.js +2 -2
  146. package/dist/release.mjs +1 -1
  147. package/package.json +1 -1
  148. package/dist/cli/auth-6ZUH42ZA.js +0 -39
  149. package/dist/cli/git-ZSJD3BID.js +0 -23
  150. package/dist/cli/play-G5GVMIBN.js +0 -157
  151. package/dist/cli/search-W4GXWTOM.js +0 -26
  152. package/dist/cli/skills-LBZPJTPI.js +0 -28
  153. package/dist/cli/tools-TQNM473H.js +0 -40
  154. package/dist/cli/update-QY6GAK6B.js +0 -28
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkI7EVBLTWjs = require('./chunk-I7EVBLTW.js');
5
+ var _chunkM7Y7JYZXjs = require('./chunk-M7Y7JYZX.js');
6
6
 
7
7
 
8
8
 
@@ -25,7 +25,7 @@ var _chunkI7EVBLTWjs = require('./chunk-I7EVBLTW.js');
25
25
 
26
26
 
27
27
 
28
- var _chunkMHLCMJ2Ejs = require('./chunk-MHLCMJ2E.js');
28
+ var _chunkCDFH2DYLjs = require('./chunk-CDFH2DYL.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 _chunkMHLCMJ2Ejs.hostEnvFilePath.call(void 0, baseUrl);
55
+ return _chunkCDFH2DYLjs.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 = _chunkMHLCMJ2Ejs.resolveProjectPinTarget.call(void 0, );
68
+ const target = _chunkCDFH2DYLjs.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 `${_chunkMHLCMJ2Ejs.hostConfigDirPath.call(void 0, baseUrl)}/pending-auth.json`;
78
+ return `${_chunkCDFH2DYLjs.hostConfigDirPath.call(void 0, baseUrl)}/pending-auth.json`;
79
79
  }
80
80
  function legacyPendingClaimTokenPath(baseUrl) {
81
- return `${_chunkMHLCMJ2Ejs.hostConfigDirPath.call(void 0, baseUrl)}/pending-claim-token`;
81
+ return `${_chunkCDFH2DYLjs.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 _chunkMHLCMJ2Ejs.detectAgentRuntime.call(void 0, ) !== "claude_cowork";
183
+ return _chunkCDFH2DYLjs.detectAgentRuntime.call(void 0, ) !== "claude_cowork";
184
184
  }
185
185
  function saveEnvValues(values, baseUrl, scope) {
186
186
  const filtered = {
187
- ...values[_chunkMHLCMJ2Ejs.HOST_URL_ENV] ? { [_chunkMHLCMJ2Ejs.HOST_URL_ENV]: values[_chunkMHLCMJ2Ejs.HOST_URL_ENV] } : {},
188
- ...values[_chunkMHLCMJ2Ejs.API_KEY_ENV] ? { [_chunkMHLCMJ2Ejs.API_KEY_ENV]: values[_chunkMHLCMJ2Ejs.API_KEY_ENV] } : {},
189
- ...values[_chunkMHLCMJ2Ejs.ACTIVE_ORG_ID_ENV] ? { [_chunkMHLCMJ2Ejs.ACTIVE_ORG_ID_ENV]: values[_chunkMHLCMJ2Ejs.ACTIVE_ORG_ID_ENV] } : {},
190
- ...Object.prototype.hasOwnProperty.call(values, _chunkMHLCMJ2Ejs.ACTIVE_ORG_NAME_ENV) ? { [_chunkMHLCMJ2Ejs.ACTIVE_ORG_NAME_ENV]: values[_chunkMHLCMJ2Ejs.ACTIVE_ORG_NAME_ENV] } : {},
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] } : {},
191
191
  // An explicit empty list must reach the store: it clears a stale line.
192
- ...Object.prototype.hasOwnProperty.call(values, _chunkMHLCMJ2Ejs.FEATURES_ENV) ? { [_chunkMHLCMJ2Ejs.FEATURES_ENV]: values[_chunkMHLCMJ2Ejs.FEATURES_ENV] } : {}
192
+ ...Object.prototype.hasOwnProperty.call(values, _chunkCDFH2DYLjs.FEATURES_ENV) ? { [_chunkCDFH2DYLjs.FEATURES_ENV]: values[_chunkCDFH2DYLjs.FEATURES_ENV] } : {}
193
193
  };
194
194
  if (scope === "folder") {
195
- _chunkMHLCMJ2Ejs.saveProjectDeeplineEnvValues.call(void 0, filtered);
195
+ _chunkCDFH2DYLjs.saveProjectDeeplineEnvValues.call(void 0, filtered);
196
196
  } else {
197
- _chunkMHLCMJ2Ejs.saveHostEnvValues.call(void 0, baseUrl, filtered);
197
+ _chunkCDFH2DYLjs.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
- [_chunkMHLCMJ2Ejs.ACTIVE_ORG_ID_ENV]: orgId,
206
- [_chunkMHLCMJ2Ejs.ACTIVE_ORG_NAME_ENV]: orgName,
207
- ..._chunkMHLCMJ2Ejs.featureEnvValues.call(void 0, data)
205
+ [_chunkCDFH2DYLjs.ACTIVE_ORG_ID_ENV]: orgId,
206
+ [_chunkCDFH2DYLjs.ACTIVE_ORG_NAME_ENV]: orgName,
207
+ ..._chunkCDFH2DYLjs.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/${_chunkMHLCMJ2Ejs.SDK_VERSION}`,
213
+ "User-Agent": `deepline-ts-sdk/${_chunkCDFH2DYLjs.SDK_VERSION}`,
214
214
  "X-Deepline-Client-Family": "sdk",
215
215
  "X-Deepline-CLI-Family": "sdk",
216
- "X-Deepline-Agent-Runtime": _chunkMHLCMJ2Ejs.detectAgentRuntime.call(void 0, ),
217
- "X-Deepline-CLI-Version": _chunkMHLCMJ2Ejs.SDK_VERSION,
218
- "X-Deepline-SDK-Version": _chunkMHLCMJ2Ejs.SDK_VERSION,
219
- "X-Deepline-API-Contract": _chunkMHLCMJ2Ejs.SDK_API_CONTRACT
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
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" ? _chunkMHLCMJ2Ejs.resolveProjectApiKeyForBaseUrl.call(void 0, input.baseUrl) : _chunkMHLCMJ2Ejs.resolveGlobalApiKeyForBaseUrl.call(void 0, input.baseUrl);
265
+ const apiKey = input.authScope === "folder" ? _chunkCDFH2DYLjs.resolveProjectApiKeyForBaseUrl.call(void 0, input.baseUrl) : _chunkCDFH2DYLjs.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 = _chunkMHLCMJ2Ejs.autoDetectBaseUrl.call(void 0, ).replace(/\/$/, "");
362
+ const baseUrl = _chunkCDFH2DYLjs.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
- [_chunkMHLCMJ2Ejs.HOST_URL_ENV]: baseUrl
417
+ [_chunkCDFH2DYLjs.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" && _chunkMHLCMJ2Ejs.detectAgentRuntime.call(void 0, ) !== "claude_cowork";
424
+ const shouldOpen = waitMode !== "no" && _chunkCDFH2DYLjs.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) _chunkI7EVBLTWjs.openInBrowser.call(void 0, claimUrl);
429
+ if (shouldOpen) _chunkM7Y7JYZXjs.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
- [_chunkMHLCMJ2Ejs.HOST_URL_ENV]: baseUrl,
473
- [_chunkMHLCMJ2Ejs.API_KEY_ENV]: apiKey,
472
+ [_chunkCDFH2DYLjs.HOST_URL_ENV]: baseUrl,
473
+ [_chunkCDFH2DYLjs.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 = _chunkMHLCMJ2Ejs.autoDetectBaseUrl.call(void 0, ).replace(/\/$/, "");
495
+ const baseUrl = _chunkCDFH2DYLjs.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" ? _chunkMHLCMJ2Ejs.resolveProjectApiKeyForBaseUrl.call(void 0, baseUrl) : _chunkMHLCMJ2Ejs.resolveGlobalApiKeyForBaseUrl.call(void 0, baseUrl);
519
+ const scopedApiKey = authScope === "folder" ? _chunkCDFH2DYLjs.resolveProjectApiKeyForBaseUrl.call(void 0, baseUrl) : _chunkCDFH2DYLjs.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
- [_chunkMHLCMJ2Ejs.HOST_URL_ENV]: baseUrl,
563
- [_chunkMHLCMJ2Ejs.API_KEY_ENV]: apiKey,
562
+ [_chunkCDFH2DYLjs.HOST_URL_ENV]: baseUrl,
563
+ [_chunkCDFH2DYLjs.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 = _chunkMHLCMJ2Ejs.autoDetectBaseUrl.call(void 0, ).replace(/\/$/, "");
588
- const apiKey = _chunkMHLCMJ2Ejs.resolveApiKeyForBaseUrl.call(void 0, baseUrl);
587
+ const baseUrl = _chunkCDFH2DYLjs.autoDetectBaseUrl.call(void 0, ).replace(/\/$/, "");
588
+ const apiKey = _chunkCDFH2DYLjs.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 = _chunkMHLCMJ2Ejs.autoDetectBaseUrl.call(void 0, ).replace(/\/$/, "");
611
+ const baseUrl = _chunkCDFH2DYLjs.autoDetectBaseUrl.call(void 0, ).replace(/\/$/, "");
612
612
  const reveal = args.includes("--reveal");
613
- const jsonOutput = _chunkI7EVBLTWjs.argsWantJson.call(void 0, args);
613
+ const jsonOutput = _chunkM7Y7JYZXjs.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" ? _chunkMHLCMJ2Ejs.resolveProjectApiKeyForBaseUrl.call(void 0, baseUrl) : authScope === "global" ? _chunkMHLCMJ2Ejs.resolveGlobalApiKeyForBaseUrl.call(void 0, baseUrl) : _chunkMHLCMJ2Ejs.resolveApiKeyForBaseUrl.call(void 0, baseUrl);
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);
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
- _chunkI7EVBLTWjs.printCommandEnvelope.call(void 0,
661
+ _chunkM7Y7JYZXjs.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
- _chunkI7EVBLTWjs.printCommandEnvelope.call(void 0,
682
+ _chunkM7Y7JYZXjs.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
- _chunkI7EVBLTWjs.printCommandEnvelope.call(void 0,
715
+ _chunkM7Y7JYZXjs.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, () => ( (_chunkMHLCMJ2Ejs.getResolvedProjectAuthSource.call(void 0, baseUrl, apiKey) ? "folder" : "global")));
742
+ const resolvedAuthScope = _nullishCoalesce(authScope, () => ( (_chunkCDFH2DYLjs.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
- [_chunkMHLCMJ2Ejs.HOST_URL_ENV]: baseUrl,
771
- [_chunkMHLCMJ2Ejs.API_KEY_ENV]: apiKeyResp,
770
+ [_chunkCDFH2DYLjs.HOST_URL_ENV]: baseUrl,
771
+ [_chunkCDFH2DYLjs.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 = _chunkMHLCMJ2Ejs.resolveProjectPinTarget.call(void 0, );
778
+ const target = _chunkCDFH2DYLjs.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" || _chunkMHLCMJ2Ejs.storedHostApiKey.call(void 0, baseUrl) === apiKey) {
785
- saveEnvValues(_chunkMHLCMJ2Ejs.featureEnvValues.call(void 0, data), baseUrl, resolvedAuthScope);
784
+ } else if (resolvedAuthScope === "folder" || _chunkCDFH2DYLjs.storedHostApiKey.call(void 0, baseUrl) === apiKey) {
785
+ saveEnvValues(_chunkCDFH2DYLjs.featureEnvValues.call(void 0, data), baseUrl, resolvedAuthScope);
786
786
  }
787
- _chunkI7EVBLTWjs.printCommandEnvelope.call(void 0,
787
+ _chunkM7Y7JYZXjs.printCommandEnvelope.call(void 0,
788
788
  {
789
789
  ...payload,
790
- ..._chunkMHLCMJ2Ejs.detectAgentRuntime.call(void 0, ) !== "unknown" ? {
791
- command_context: _chunkMHLCMJ2Ejs.resolveCliCommandContext.call(void 0,
790
+ ..._chunkCDFH2DYLjs.detectAgentRuntime.call(void 0, ) !== "unknown" ? {
791
+ command_context: _chunkCDFH2DYLjs.resolveCliCommandContext.call(void 0,
792
792
  { baseUrl, apiKey },
793
793
  resolvedAuthScope
794
794
  )
@@ -12,7 +12,8 @@ var SUPPORTED_PLAY_AUTHORING_CONTRACT_EDITIONS = [
12
12
  7,
13
13
  8,
14
14
  9,
15
- 10
15
+ 10,
16
+ 11
16
17
  ];
17
18
  var PLAY_AUTHORING_CONTRACT_CHANGELOG_DETAILS = [
18
19
  {
@@ -74,6 +75,12 @@ var PLAY_AUTHORING_CONTRACT_CHANGELOG_DETAILS = [
74
75
  compatibilityOwner: "Plays Runtime",
75
76
  newWritesEnd: null,
76
77
  readerRemoval: null
78
+ },
79
+ {
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.',
81
+ compatibilityOwner: "Plays Runtime",
82
+ newWritesEnd: null,
83
+ readerRemoval: null
77
84
  }
78
85
  ];
79
86
  function playToolListGetterMode(edition = PLAY_AUTHORING_CONTRACT_EDITION) {
@@ -985,6 +992,22 @@ var PLAY_AUTHORING_FIELD_REGISTRY = {
985
992
  description: "Stable field or fields used for durable row identity.",
986
993
  errorMessage: "ctx.dataset run key must be a non-empty field, field list, or key function."
987
994
  },
995
+ "ctx.dataset.run.rowIdentity": {
996
+ schema: _typebox.Type.Union([_typebox.Type.Literal("source_row"), _typebox.Type.Literal("key")]),
997
+ fixtures: {
998
+ valid: "source_row",
999
+ invalid: "dedupe",
1000
+ absent: void 0,
1001
+ unresolved: { expression: "rowIdentity" },
1002
+ edition1: "key"
1003
+ },
1004
+ referenceType: "'source_row' | 'key'",
1005
+ required: false,
1006
+ resolution: "static-when-present",
1007
+ 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.",
1009
+ errorMessage: 'ctx.dataset run rowIdentity must be "source_row" or "key".'
1010
+ },
988
1011
  "ctx.dataset.run.onRowError": {
989
1012
  schema: _typebox.Type.Union([_typebox.Type.Literal("isolate"), _typebox.Type.Literal("fail")]),
990
1013
  fixtures: {
@@ -1609,7 +1632,7 @@ var PLAY_AUTHORING_CLOUD_TYPE_DECLARATIONS = [
1609
1632
  "export type StepProgramOutput<TProgram> = TProgram extends StepProgram<unknown, infer Output, unknown> ? Output : never;",
1610
1633
  "export type DatasetRowKey<InputRow extends object> = (keyof InputRow & string) | readonly (keyof InputRow & string)[] | ((row: InputRow, index: number) => string | number | readonly unknown[]);",
1611
1634
  "export type DatasetDefinitionOptions<InputRow extends object> = { key?: DatasetRowKey<InputRow> };",
1612
- `export type DatasetRunOptions<InputRow extends object> = { description?: ${cloudReferenceType("ctx.dataset.run.description")}; key?: DatasetRowKey<InputRow>; onRowError?: ${cloudReferenceType("ctx.dataset.run.onRowError")}; mode?: ${cloudReferenceType("ctx.dataset.run.mode")}; undrawnColumns?: ${cloudReferenceType("ctx.dataset.run.undrawnColumns")} };`,
1635
+ `export type DatasetRunOptions<InputRow extends object> = { description?: ${cloudReferenceType("ctx.dataset.run.description")}; key?: DatasetRowKey<InputRow>; rowIdentity?: ${cloudReferenceType("ctx.dataset.run.rowIdentity")}; onRowError?: ${cloudReferenceType("ctx.dataset.run.onRowError")}; mode?: ${cloudReferenceType("ctx.dataset.run.mode")}; undrawnColumns?: ${cloudReferenceType("ctx.dataset.run.undrawnColumns")} };`,
1613
1636
  "export type DatasetBuilder<InputRow extends object, OutputRow extends object> = {",
1614
1637
  " withColumn<Name extends string, Value>(name: Name, resolver: ColumnResolver<OutputRow, Value>): DatasetBuilder<InputRow, OutputRow & Record<Name, Value>>;",
1615
1638
  " withColumn<Name extends string, Value>(name: Name, definition: DatasetColumnDefinition<OutputRow, Value> & { readonly runIf: (row: OutputRow, index: number) => boolean | Promise<boolean> }): DatasetBuilder<InputRow, OutputRow & Record<Name, Value | null>>;",
@@ -6,14 +6,14 @@ import {
6
6
  } from "./chunk-6IKARAYD.mjs";
7
7
  import {
8
8
  PLAY_RUN_START_STREAM_PATH,
9
- buildPlayRunStartBody,
10
9
  decodePlayRunPublicStatus,
11
10
  isPlayRunPackage,
12
11
  isTerminalPlayRunLifecycleStatus,
13
12
  mintStagedPlayFileUploads,
13
+ preparePlayRunAdmission,
14
14
  stagePlayFiles,
15
15
  startPlayRun
16
- } from "./chunk-Q6EOHNRH.mjs";
16
+ } from "./chunk-JI2B4RZP.mjs";
17
17
  import {
18
18
  COORDINATOR_INTERNAL_TOKEN_HEADER,
19
19
  CustomerDbQueryOutcomeUnknownError,
@@ -21,7 +21,7 @@ import {
21
21
  RETAINED_PIPELINE_RECEIVERS_HEADER,
22
22
  RUNTIME_ENVIRONMENT_TOKEN_HEADER,
23
23
  resolveConfig
24
- } from "./chunk-K3ODOHOI.mjs";
24
+ } from "./chunk-LMMEAMA7.mjs";
25
25
  import {
26
26
  DeeplineError,
27
27
  TOOL_EXECUTION_ERROR_SCHEMA_HEADER,
@@ -3256,6 +3256,7 @@ var DeeplineClient = class _DeeplineClient {
3256
3256
  input: (runId) => this.getRunInput(runId),
3257
3257
  rerun: (runId, options2) => this.rerun(runId, options2),
3258
3258
  exportDatasetRows: (input) => this.getPlaySheetRows(input),
3259
+ rowHistory: (input) => this.getPlayRunRowHistory(input),
3259
3260
  stop: (runId, options2) => this.stopRun(runId, options2),
3260
3261
  stopAll: ((options2) => this.stopAllRuns(options2))
3261
3262
  };
@@ -3264,6 +3265,7 @@ var DeeplineClient = class _DeeplineClient {
3264
3265
  planQuery: (input) => planCustomerDbQuery(input)
3265
3266
  };
3266
3267
  this.billing = {
3268
+ quote: (input) => this.http.post("/api/v2/billing/quote", input),
3267
3269
  entitlements: () => this.http.get("/api/v2/billing/entitlements"),
3268
3270
  topUp: (options2) => this.topUpBillingBalance(options2),
3269
3271
  topUpWithReceipt: (options2) => this.topUpBillingBalanceWithReceipt(options2),
@@ -3737,14 +3739,62 @@ var DeeplineClient = class _DeeplineClient {
3737
3739
  * });
3738
3740
  * ```
3739
3741
  */
3740
- async startPlayRun(request) {
3742
+ async startPlayRun(request, options) {
3741
3743
  const resolved = resolveStartPlayRunRequest(request, this.environment);
3742
3744
  return startPlayRun(
3743
3745
  this.http,
3744
3746
  resolved.request,
3745
- runtimeSelectionHeaders(resolved.runtime, this.environment)
3747
+ runtimeSelectionHeaders(resolved.runtime, this.environment),
3748
+ options?.onSubmission
3746
3749
  );
3747
3750
  }
3751
+ /**
3752
+ * Prepare a tenant-scoped start intent without executing it. Its stream
3753
+ * sender retains the exact body and transport selected during preparation.
3754
+ */
3755
+ async preparePlayRunAdmission(request, options) {
3756
+ const resolved = resolveStartPlayRunRequest(request, this.environment);
3757
+ const prepared = await preparePlayRunAdmission(
3758
+ this.http,
3759
+ resolved.request,
3760
+ options?.onSubmission
3761
+ );
3762
+ const bodyJson = JSON.stringify(prepared.body);
3763
+ const headers = runtimeSelectionHeaders(resolved.runtime, this.environment);
3764
+ const http = this.http;
3765
+ let submitted = false;
3766
+ return {
3767
+ ...prepared,
3768
+ async *startStream(streamOptions) {
3769
+ if (submitted && !prepared.supportsCallerIntent) {
3770
+ throw new DeeplineError(
3771
+ "This server has not enabled caller-owned admission recovery. Do not retry an ambiguous start.",
3772
+ 409,
3773
+ "PLAY_RUN_ADMISSION_RECOVERY_UNSUPPORTED"
3774
+ );
3775
+ }
3776
+ if (submitted) {
3777
+ await preparePlayRunAdmission(
3778
+ http,
3779
+ JSON.parse(bodyJson)
3780
+ );
3781
+ }
3782
+ submitted = true;
3783
+ for await (const event of http.streamSse(
3784
+ PLAY_RUN_START_STREAM_PATH,
3785
+ {
3786
+ method: "POST",
3787
+ body: JSON.parse(bodyJson),
3788
+ headers,
3789
+ signal: streamOptions?.signal,
3790
+ exactUrlOnly: true
3791
+ }
3792
+ )) {
3793
+ if (event.scope === "play") yield event;
3794
+ }
3795
+ }
3796
+ };
3797
+ }
3748
3798
  /**
3749
3799
  * Submit a play run through the legacy event response.
3750
3800
  *
@@ -3759,21 +3809,8 @@ var DeeplineClient = class _DeeplineClient {
3759
3809
  * @returns Async generator of play-scoped live events.
3760
3810
  */
3761
3811
  async *startPlayRunStream(request, options) {
3762
- const resolved = resolveStartPlayRunRequest(request, this.environment);
3763
- const body = buildPlayRunStartBody(resolved.request);
3764
- for await (const event of this.http.streamSse(
3765
- PLAY_RUN_START_STREAM_PATH,
3766
- {
3767
- method: "POST",
3768
- body,
3769
- headers: runtimeSelectionHeaders(resolved.runtime, this.environment),
3770
- signal: options?.signal
3771
- }
3772
- )) {
3773
- if (event.scope === "play") {
3774
- yield event;
3775
- }
3776
- }
3812
+ const prepared = await this.preparePlayRunAdmission(request, options);
3813
+ yield* prepared.startStream({ signal: options?.signal });
3777
3814
  }
3778
3815
  /**
3779
3816
  * Register a bundled play artifact.
@@ -4795,6 +4832,21 @@ var DeeplineClient = class _DeeplineClient {
4795
4832
  { headers, retryApiErrors: true }
4796
4833
  );
4797
4834
  }
4835
+ /**
4836
+ * Read one page of immutable admitted and terminal rows for a Play Run dataset.
4837
+ * Follow nextCursor; coverage explicitly identifies unavailable or incomplete history.
4838
+ */
4839
+ async getPlayRunRowHistory(input) {
4840
+ const params = new URLSearchParams({
4841
+ runId: input.runId,
4842
+ tableNamespace: input.tableNamespace
4843
+ });
4844
+ if (input.limit !== void 0) params.set("limit", String(input.limit));
4845
+ if (input.cursor !== void 0) params.set("cursor", input.cursor);
4846
+ return this.http.get(
4847
+ `/api/v2/plays/${encodeURIComponent(input.playName)}/sheet/history?${params}`
4848
+ );
4849
+ }
4798
4850
  /**
4799
4851
  * Export persisted runtime-sheet rows for a play dataset/table namespace.
4800
4852
  *
@@ -5004,6 +5056,13 @@ var DeeplineClient = class _DeeplineClient {
5004
5056
  async getNotificationSettings() {
5005
5057
  return this.http.get("/api/v2/settings/notifications");
5006
5058
  }
5059
+ /** Save provider-owned credential fields without starting an OAuth browser flow. */
5060
+ async setIntegrationCredentials(provider, credentials) {
5061
+ return this.http.post("/api/v2/integrations/connect", {
5062
+ provider,
5063
+ credentials
5064
+ });
5065
+ }
5007
5066
  /** Start the Slack OAuth flow required by product notifications. */
5008
5067
  async connectNotificationSlack(options) {
5009
5068
  return this.http.post("/api/v2/integrations/connect", {