deepline 0.3.392 → 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.
- package/dist/bundling-sources/sdk/src/client.ts +156 -24
- package/dist/bundling-sources/sdk/src/compat.ts +9 -0
- package/dist/bundling-sources/sdk/src/http.ts +5 -1
- package/dist/bundling-sources/sdk/src/index.ts +5 -0
- package/dist/bundling-sources/sdk/src/plays/run-request.ts +182 -6
- package/dist/bundling-sources/sdk/src/release.ts +4 -1
- package/dist/bundling-sources/sdk/src/types.ts +13 -0
- package/dist/bundling-sources/shared_libs/integration-contracts/request-warnings.ts +64 -0
- package/dist/bundling-sources/shared_libs/play-data-plane/runtime-sheet-storage-contract.ts +315 -0
- package/dist/bundling-sources/shared_libs/play-runtime/async-operation.ts +41 -8
- package/dist/bundling-sources/shared_libs/play-runtime/context.ts +418 -44
- package/dist/bundling-sources/shared_libs/play-runtime/ctx-types.ts +36 -3
- package/dist/bundling-sources/shared_libs/play-runtime/durable-invocation-fence.ts +36 -0
- package/dist/bundling-sources/shared_libs/play-runtime/map-execution-frame.ts +11 -3
- package/dist/bundling-sources/shared_libs/play-runtime/play-runs/projection/gateway-adapter.ts +1 -0
- package/dist/bundling-sources/shared_libs/play-runtime/play-runtime-semantics.ts +19 -1
- package/dist/bundling-sources/shared_libs/play-runtime/run-identity.ts +26 -0
- package/dist/bundling-sources/shared_libs/play-runtime/runner-app/index.ts +158 -10
- package/dist/bundling-sources/shared_libs/play-runtime/runtime-api.ts +235 -2
- package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/absurd-runtime-worker.ts +92 -58
- package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/postgres-pool.ts +7 -1
- package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/postgres-progress.ts +30 -7
- package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/postgres.ts +1161 -316
- package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/runtime-event-search.ts +28 -15
- package/dist/bundling-sources/shared_libs/play-runtime/tool-execute-retry-policy.ts +24 -3
- package/dist/bundling-sources/shared_libs/play-runtime/tool-result.ts +31 -0
- package/dist/bundling-sources/shared_libs/plays/authoring-contract.ts +37 -4
- package/dist/bundling-sources/shared_libs/plays/dataset.ts +172 -79
- package/dist/bundling-sources/shared_libs/plays/static-pipeline.ts +173 -1
- package/dist/cli/{auth-6JSA2ZCW.mjs → auth-5PXHA232.mjs} +4 -4
- package/dist/cli/auth-P3MVDTXM.js +39 -0
- package/dist/cli/{billing-Q5BLQHIU.js → billing-JFB2XLSO.js} +101 -74
- package/dist/cli/{billing-MRRO643H.mjs → billing-Z2N7ZAGM.mjs} +32 -5
- package/dist/cli/{chunk-CVLM3WMJ.js → chunk-2HAD745V.js} +242 -183
- package/dist/cli/{chunk-HGYBEAQP.mjs → chunk-2LGC4EFT.mjs} +3 -3
- package/dist/cli/{chunk-A3APGZFP.mjs → chunk-4PT2VA3A.mjs} +2 -2
- package/dist/cli/{chunk-6DBOU7UH.js → chunk-4XX6443T.js} +176 -87
- package/dist/cli/{chunk-2QLML6G4.mjs → chunk-5KWKZIQR.mjs} +4 -4
- package/dist/cli/{chunk-2G7DXFHI.mjs → chunk-5PRVMXKB.mjs} +27 -2
- package/dist/cli/{chunk-DSWSEHRX.mjs → chunk-6I73X254.mjs} +1 -1
- package/dist/cli/{chunk-ZTACINO5.mjs → chunk-7HR7BGZL.mjs} +13 -3
- package/dist/cli/{chunk-BB3FNYFY.js → chunk-AARX5L4B.js} +2 -2
- package/dist/cli/{chunk-WMS5U6YB.js → chunk-CDFH2DYL.js} +20 -19
- package/dist/cli/{chunk-R3O2CZ4H.mjs → chunk-FQ6VHPW4.mjs} +2 -2
- package/dist/cli/{chunk-MU6M3URX.mjs → chunk-HLEESTCH.mjs} +1 -1
- package/dist/cli/{chunk-Q6EOHNRH.mjs → chunk-JI2B4RZP.mjs} +119 -6
- package/dist/cli/{chunk-2Q3GEFL4.mjs → chunk-KIYU2TGL.mjs} +2 -2
- package/dist/cli/{chunk-Y6VOGHF2.mjs → chunk-KZZC33PY.mjs} +0 -181
- package/dist/cli/{chunk-UCKJQG25.js → chunk-L2SYLGRP.js} +8 -8
- package/dist/cli/{chunk-2GAHHSLB.mjs → chunk-LMMEAMA7.mjs} +3 -2
- package/dist/cli/{chunk-YAZCDBXX.mjs → chunk-LZPCDB7U.mjs} +3 -2
- package/dist/cli/{chunk-RV6ALZIX.js → chunk-M7Y7JYZX.js} +32 -7
- package/dist/cli/{chunk-QGKPTBRR.js → chunk-MS6GUPBB.js} +3 -3
- package/dist/cli/{chunk-4SFPVW7A.js → chunk-OXNOAD6Y.js} +26 -26
- package/dist/cli/{chunk-JOFPQGXW.js → chunk-PTDECJGP.js} +50 -50
- package/dist/cli/{chunk-5O4B6AUN.js → chunk-PWSWAN7Q.js} +25 -2
- package/dist/cli/{chunk-YN6YA7ZZ.mjs → chunk-Q26LUSQ2.mjs} +79 -20
- package/dist/cli/{chunk-3VN4FTE3.js → chunk-RDXFGPJU.js} +1 -182
- package/dist/cli/{chunk-7E66A24V.mjs → chunk-RKMB3N7K.mjs} +25 -2
- package/dist/cli/{chunk-JSLPHFP7.js → chunk-RWHWF5ZJ.js} +3 -2
- package/dist/cli/{chunk-3FV4GBRK.mjs → chunk-STNYIMIV.mjs} +97 -8
- package/dist/cli/chunk-UBKA33KY.mjs +310 -0
- package/dist/cli/{chunk-PAIMOGCM.js → chunk-UHNDVD3P.js} +125 -12
- package/dist/cli/{chunk-24VEN5PQ.mjs → chunk-UOGZUA24.mjs} +179 -17
- package/dist/cli/{chunk-T7OKJ2T6.js → chunk-VIQJIX2P.js} +73 -63
- package/dist/cli/{chunk-RIV2GS5E.js → chunk-VIWE6WRK.js} +627 -465
- package/dist/cli/{chunk-EY7RFC6A.js → chunk-W4WOMXR3.js} +15 -15
- package/dist/cli/chunk-XDVT3GOM.js +310 -0
- package/dist/cli/{chunk-2FQG2HU4.js → chunk-Z3OOZM5L.js} +8 -8
- package/dist/cli/{csv-E4QGUIGI.mjs → csv-KJWZHKCH.mjs} +3 -3
- package/dist/cli/{csv-26U5T24Z.js → csv-P3Z3YE7H.js} +12 -12
- package/dist/cli/{db-JTRJIAQW.mjs → db-NCM4CQIS.mjs} +6 -5
- package/dist/cli/{db-QHBFLMVL.js → db-NUZGJNQC.js} +31 -30
- package/dist/cli/{describe-E3DE3ZK3.mjs → describe-WT6MM2GO.mjs} +17 -16
- package/dist/cli/{describe-FDV2V74F.js → describe-YGSEN5WC.js} +24 -23
- package/dist/cli/{executions-VZYOGVQY.js → executions-PCOLHN7Q.js} +8 -7
- package/dist/cli/{executions-B3GTNPRE.mjs → executions-XS2IPJ4W.mjs} +6 -5
- package/dist/cli/{feedback-CR55FJA2.js → feedback-4MSH7TFU.js} +7 -7
- package/dist/cli/{feedback-4CEBR3OV.mjs → feedback-CCLTS5SV.mjs} +3 -3
- package/dist/cli/{git-NM2PHHZ4.mjs → git-K2DHPMPC.mjs} +4 -4
- package/dist/cli/git-RNM45FX4.js +23 -0
- package/dist/cli/index.js +96 -92
- package/dist/cli/index.mjs +46 -42
- package/dist/cli/{legacy-noops-A7MSW5ND.mjs → legacy-noops-B5S4AR3P.mjs} +4 -4
- package/dist/cli/{legacy-noops-ZUA4YFIH.js → legacy-noops-GPNOPFXV.js} +7 -7
- package/dist/cli/{monitors-NVPRQYP3.mjs → monitors-JLMAIPRG.mjs} +6 -5
- package/dist/cli/{monitors-ZE3TLZ4H.js → monitors-ZAWD7NSN.js} +87 -86
- package/dist/cli/{org-U7A6DV5D.js → org-P2KN4CES.js} +66 -65
- package/dist/cli/{org-KUBILNQV.mjs → org-T3JTHP4G.mjs} +6 -5
- package/dist/cli/{play-HRDXQ4QE.mjs → play-NK6BLRGL.mjs} +11 -10
- package/dist/cli/play-PDXR6JFB.js +158 -0
- package/dist/cli/{providers-OHIWI453.mjs → providers-3NQRA7IT.mjs} +6 -5
- package/dist/cli/{providers-VD6YTVQZ.js → providers-5QRZN3DT.js} +9 -8
- package/dist/cli/{quickstart-UBV2FONF.mjs → quickstart-PIA2JGPV.mjs} +3 -3
- package/dist/cli/{quickstart-ETTCWPA4.js → quickstart-R7NUZGNW.js} +5 -5
- package/dist/cli/run-identity-G257GQED.js +25 -0
- package/dist/cli/run-identity-MRNCEGV2.mjs +25 -0
- package/dist/cli/{search-F44IZRT7.mjs → search-AIDIIGLY.mjs} +7 -6
- package/dist/cli/search-QRWL7MFM.js +27 -0
- package/dist/cli/{secrets-CAEMRORF.js → secrets-BT3PGMWN.js} +15 -14
- package/dist/cli/{secrets-R6XOJZKU.mjs → secrets-OQNHL45O.mjs} +6 -5
- package/dist/cli/{sessions-6GC7OFTT.js → sessions-EYXWOSWK.js} +5 -5
- package/dist/cli/{sessions-RLN6UQS3.mjs → sessions-SF7WJPJP.mjs} +4 -4
- package/dist/cli/{settings-DPNVUAV2.js → settings-BA3GHBOD.js} +76 -75
- package/dist/cli/{settings-KIPAMRPP.mjs → settings-Y57JTFDD.mjs} +9 -8
- package/dist/cli/{setup-TU2F7PU5.mjs → setup-7GR5GBHA.mjs} +6 -6
- package/dist/cli/{setup-DTL3L5SG.js → setup-RERXYC66.js} +41 -41
- package/dist/cli/{skills-UV5MYJ46.mjs → skills-SJWIQAV5.mjs} +4 -4
- package/dist/cli/skills-V7EY75HB.js +28 -0
- package/dist/cli/tools-H5HLBCHH.js +41 -0
- package/dist/cli/{tools-QRRNDCQ7.mjs → tools-ZF3JXPNL.mjs} +10 -9
- package/dist/cli/update-472HA3LT.js +28 -0
- package/dist/cli/{update-4426TF35.mjs → update-FFFYQAOJ.mjs} +6 -6
- package/dist/cli/{workflow-HNLOVISB.js → workflow-SZJVQH4T.js} +17 -16
- package/dist/cli/{workflow-N4U5VLZ3.mjs → workflow-XVFEEGAS.mjs} +7 -6
- package/dist/{client-e6Qh5ZIg.d.mts → client-DU5dtHDy.d.mts} +153 -4
- package/dist/{client-Uxuy-xQ2.d.ts → client-mCE88hC4.d.ts} +153 -4
- package/dist/{compiler-manifest-CY2v8ab0.d.ts → compiler-manifest-DE4RdAiY.d.mts} +61 -1
- package/dist/{compiler-manifest-CY2v8ab0.d.mts → compiler-manifest-DE4RdAiY.d.ts} +61 -1
- package/dist/{index-B9fBZH1g.d.mts → index-BI6nWgaV.d.mts} +1 -1
- package/dist/{index-BZ6uzZJl.d.ts → index-Bi-f7HFT.d.ts} +1 -1
- package/dist/index.d.mts +5 -5
- package/dist/index.d.ts +5 -5
- package/dist/index.js +120 -29
- package/dist/index.mjs +111 -20
- package/dist/install-integrity.json +91 -86
- package/dist/plays/bundle-play-file.d.mts +3 -3
- package/dist/plays/bundle-play-file.d.ts +3 -3
- package/dist/plays/bundle-play-file.mjs +2 -2
- package/dist/plays/run-request.d.mts +2 -2
- package/dist/plays/run-request.d.ts +2 -2
- package/dist/plays/run-request.js +5 -2
- package/dist/plays/run-request.mjs +4 -1
- package/dist/release.d.mts +4 -1
- package/dist/release.d.ts +4 -1
- package/dist/release.js +2 -2
- package/dist/release.mjs +1 -1
- package/package.json +1 -1
- package/dist/cli/auth-67TAELQL.js +0 -39
- package/dist/cli/git-I5JTK6YU.js +0 -23
- package/dist/cli/play-A2V7YDU7.js +0 -157
- package/dist/cli/search-WWXMBVPH.js +0 -26
- package/dist/cli/skills-SWOSEZLB.js +0 -28
- package/dist/cli/tools-IL2YCDQ6.js +0 -40
- package/dist/cli/update-BERDPEYR.js +0 -28
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var _chunkM7Y7JYZXjs = require('./chunk-M7Y7JYZX.js');
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
@@ -25,7 +25,7 @@ var _chunkRV6ALZIXjs = require('./chunk-RV6ALZIX.js');
|
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
|
|
28
|
-
var
|
|
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
|
|
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 =
|
|
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 `${
|
|
78
|
+
return `${_chunkCDFH2DYLjs.hostConfigDirPath.call(void 0, baseUrl)}/pending-auth.json`;
|
|
79
79
|
}
|
|
80
80
|
function legacyPendingClaimTokenPath(baseUrl) {
|
|
81
|
-
return `${
|
|
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
|
|
183
|
+
return _chunkCDFH2DYLjs.detectAgentRuntime.call(void 0, ) !== "claude_cowork";
|
|
184
184
|
}
|
|
185
185
|
function saveEnvValues(values, baseUrl, scope) {
|
|
186
186
|
const filtered = {
|
|
187
|
-
...values[
|
|
188
|
-
...values[
|
|
189
|
-
...values[
|
|
190
|
-
...Object.prototype.hasOwnProperty.call(values,
|
|
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,
|
|
192
|
+
...Object.prototype.hasOwnProperty.call(values, _chunkCDFH2DYLjs.FEATURES_ENV) ? { [_chunkCDFH2DYLjs.FEATURES_ENV]: values[_chunkCDFH2DYLjs.FEATURES_ENV] } : {}
|
|
193
193
|
};
|
|
194
194
|
if (scope === "folder") {
|
|
195
|
-
|
|
195
|
+
_chunkCDFH2DYLjs.saveProjectDeeplineEnvValues.call(void 0, filtered);
|
|
196
196
|
} else {
|
|
197
|
-
|
|
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
|
-
[
|
|
206
|
-
[
|
|
207
|
-
...
|
|
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/${
|
|
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":
|
|
217
|
-
"X-Deepline-CLI-Version":
|
|
218
|
-
"X-Deepline-SDK-Version":
|
|
219
|
-
"X-Deepline-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" ?
|
|
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 =
|
|
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
|
-
[
|
|
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" &&
|
|
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)
|
|
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
|
-
[
|
|
473
|
-
[
|
|
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 =
|
|
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" ?
|
|
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
|
-
[
|
|
563
|
-
[
|
|
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 =
|
|
588
|
-
const apiKey =
|
|
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 =
|
|
611
|
+
const baseUrl = _chunkCDFH2DYLjs.autoDetectBaseUrl.call(void 0, ).replace(/\/$/, "");
|
|
612
612
|
const reveal = args.includes("--reveal");
|
|
613
|
-
const jsonOutput =
|
|
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" ?
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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, () => ( (
|
|
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
|
-
[
|
|
771
|
-
[
|
|
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 =
|
|
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" ||
|
|
785
|
-
saveEnvValues(
|
|
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
|
-
|
|
787
|
+
_chunkM7Y7JYZXjs.printCommandEnvelope.call(void 0,
|
|
788
788
|
{
|
|
789
789
|
...payload,
|
|
790
|
-
...
|
|
791
|
-
command_context:
|
|
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-
|
|
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-
|
|
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
|
|
3763
|
-
|
|
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", {
|