deepline 0.3.305 → 0.3.307

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 (99) hide show
  1. package/dist/bundling-sources/sdk/src/cli-invocation-id.ts +14 -0
  2. package/dist/bundling-sources/sdk/src/client.ts +24 -1
  3. package/dist/bundling-sources/sdk/src/http.ts +11 -0
  4. package/dist/bundling-sources/sdk/src/release.ts +1 -1
  5. package/dist/bundling-sources/sdk/src/tool-calls.ts +19 -1
  6. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/absurd-shared.ts +10 -5
  7. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/postgres.ts +4 -1
  8. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/runtime-event-search.ts +125 -19
  9. package/dist/cli/{auth-XMYFUM5L.mjs → auth-AJPTFFC7.mjs} +4 -4
  10. package/dist/cli/auth-TUQTQIH4.js +31 -0
  11. package/dist/cli/{billing-RXT6NYAU.mjs → billing-LPDYJLIL.mjs} +4 -4
  12. package/dist/cli/{billing-NDUDRJ7T.js → billing-SPBWUEOS.js} +70 -70
  13. package/dist/cli/chunk-2IKIG333.js +65 -0
  14. package/dist/cli/{chunk-E4YSOJ2H.js → chunk-76MFV3AC.js} +2 -2
  15. package/dist/cli/{chunk-AEMR2R5H.mjs → chunk-7ONALPWY.mjs} +4 -4
  16. package/dist/cli/{chunk-B7PAZBJX.js → chunk-AKE6ZFIJ.js} +10 -4
  17. package/dist/cli/{chunk-TGOAQTY3.mjs → chunk-BDFVIOLY.mjs} +3 -3
  18. package/dist/cli/{chunk-QFSISXKO.mjs → chunk-D55NIPGU.mjs} +1 -1
  19. package/dist/cli/{chunk-XZD3NYOL.js → chunk-DF3XJ2V2.js} +48 -48
  20. package/dist/cli/{chunk-44GHROVJ.mjs → chunk-G4SSYZND.mjs} +1 -1
  21. package/dist/cli/{chunk-DY72E7K2.js → chunk-GUIQWUCB.js} +6 -6
  22. package/dist/cli/{chunk-5UZQ75HD.js → chunk-HWCB5MHF.js} +60 -60
  23. package/dist/cli/{chunk-HELHRPU6.mjs → chunk-ILOCS73R.mjs} +2 -2
  24. package/dist/cli/{chunk-LUBEGHJC.js → chunk-IVXD2KA2.js} +15 -15
  25. package/dist/cli/{chunk-COMHSM6F.js → chunk-JNHXSZPB.js} +6 -6
  26. package/dist/cli/{chunk-ZQOFBLJN.js → chunk-K2CQ2RBJ.js} +6 -6
  27. package/dist/cli/{chunk-KNHD6J3X.js → chunk-KCHBE2J3.js} +275 -239
  28. package/dist/cli/{chunk-6C4SD4U3.mjs → chunk-MPVXXDWH.mjs} +7 -1
  29. package/dist/cli/{chunk-DNSTXIU4.js → chunk-MZQP7CIL.js} +1 -1
  30. package/dist/cli/{chunk-LYPASDJJ.mjs → chunk-O4OESDIN.mjs} +1 -1
  31. package/dist/cli/{chunk-KNK42P4M.mjs → chunk-QACDLYNO.mjs} +1 -1
  32. package/dist/cli/{chunk-445RPDOQ.mjs → chunk-RXYYANYP.mjs} +5 -5
  33. package/dist/cli/{chunk-S3HPQWZ3.mjs → chunk-TLTKAJ6S.mjs} +44 -8
  34. package/dist/cli/chunk-UABLQKTZ.mjs +65 -0
  35. package/dist/cli/{chunk-SCX2AZFY.mjs → chunk-ZGICKTW7.mjs} +2 -2
  36. package/dist/cli/{chunk-UWDFJXBQ.js → chunk-ZIF6JOOI.js} +26 -26
  37. package/dist/cli/{client-WOHHEX5X.mjs → client-7ZL4ROII.mjs} +3 -3
  38. package/dist/cli/client-S3MIFPM2.js +20 -0
  39. package/dist/cli/{csv-WZ5BOOT7.js → csv-JUDFG7JV.js} +12 -12
  40. package/dist/cli/{csv-WNPLDGFR.mjs → csv-Y3LYCTGD.mjs} +3 -3
  41. package/dist/cli/{db-GBK4QSIU.js → db-5IXGEXNT.js} +20 -20
  42. package/dist/cli/{db-GCQJHGME.mjs → db-GCOJD2BD.mjs} +4 -4
  43. package/dist/cli/{executions-MSB6FRNL.mjs → executions-FIICTMSY.mjs} +4 -4
  44. package/dist/cli/{executions-BAS6T2BN.js → executions-LIEQKFT7.js} +6 -6
  45. package/dist/cli/{feedback-VREMIXAX.mjs → feedback-3OVAA3C7.mjs} +3 -3
  46. package/dist/cli/{feedback-UHOHIOPV.js → feedback-FAADYNAR.js} +6 -6
  47. package/dist/cli/{git-GQKD556H.mjs → git-ESMYCYJO.mjs} +4 -4
  48. package/dist/cli/git-GG6LWE2R.js +23 -0
  49. package/dist/cli/index.js +155 -121
  50. package/dist/cli/index.mjs +121 -87
  51. package/dist/cli/{legacy-noops-RI2ROZ6U.mjs → legacy-noops-KP5CPZRK.mjs} +4 -4
  52. package/dist/cli/{legacy-noops-PIL4KNVA.js → legacy-noops-PKI3RFZW.js} +7 -7
  53. package/dist/cli/{monitors-QHLEULAZ.mjs → monitors-A6KGGSBO.mjs} +4 -4
  54. package/dist/cli/{monitors-UVQLZDIO.js → monitors-KCFBLAFZ.js} +85 -85
  55. package/dist/cli/{org-BYWI4VI3.mjs → org-DHI24UOK.mjs} +4 -4
  56. package/dist/cli/{org-KXJJZOSK.js → org-WI6DEXZQ.js} +60 -60
  57. package/dist/cli/{play-WF7AJJ7J.mjs → play-2YXLQD24.mjs} +6 -6
  58. package/dist/cli/{play-3XR54PQY.js → play-4EUUN76H.js} +200 -200
  59. package/dist/cli/{providers-FG67H5N5.mjs → providers-2WZ6KHH2.mjs} +4 -4
  60. package/dist/cli/{providers-4FYRPS4E.js → providers-DWS3XIM6.js} +7 -7
  61. package/dist/cli/{quickstart-3YCFHVKY.js → quickstart-TDTDKM6F.js} +5 -5
  62. package/dist/cli/{quickstart-IBWIR4LX.mjs → quickstart-ZFZVG6UO.mjs} +3 -3
  63. package/dist/cli/{search-OZRXENTS.mjs → search-BBE2ZMCI.mjs} +5 -5
  64. package/dist/cli/{search-6PQ4QBMC.js → search-GMPXRQF4.js} +6 -6
  65. package/dist/cli/{secrets-S3GIROJA.mjs → secrets-JEJL3KIM.mjs} +4 -4
  66. package/dist/cli/{secrets-2JW5HCHH.js → secrets-SMBX4IE6.js} +13 -13
  67. package/dist/cli/{sessions-6HNVWH3C.mjs → sessions-AVU353UT.mjs} +4 -4
  68. package/dist/cli/{sessions-AQQ6WHMK.js → sessions-S6AWG747.js} +5 -5
  69. package/dist/cli/{settings-6FINI54L.mjs → settings-GY5CYRLF.mjs} +7 -7
  70. package/dist/cli/{settings-HSHA2FO5.js → settings-KBW4ROHC.js} +74 -74
  71. package/dist/cli/{setup-XHIBSXCC.mjs → setup-4CW3XGGX.mjs} +6 -6
  72. package/dist/cli/{setup-O7FZ5EUD.js → setup-WSVIDSEV.js} +41 -41
  73. package/dist/cli/skills-6AU3RRAD.js +28 -0
  74. package/dist/cli/{skills-ZFIIWR5G.mjs → skills-U3NXFSFK.mjs} +4 -4
  75. package/dist/cli/{tools-4B4NLVOJ.js → tools-KZKELW25.js} +120 -87
  76. package/dist/cli/{tools-WURPIECI.mjs → tools-XU6KLJZT.mjs} +76 -43
  77. package/dist/cli/update-LVXXQF4A.js +28 -0
  78. package/dist/cli/{update-2THOPAUS.mjs → update-RZLH46DR.mjs} +6 -6
  79. package/dist/cli/{workflow-XS5JSKED.js → workflow-GDOGDGTZ.js} +15 -15
  80. package/dist/cli/{workflow-S2G453ZX.mjs → workflow-ZQUKQI35.mjs} +5 -5
  81. package/dist/{client-BT11xxG8.d.mts → client-Dj8MAkDc.d.mts} +6 -1
  82. package/dist/{client-5Nsl0O0v.d.ts → client-DsrFGXJf.d.ts} +6 -1
  83. package/dist/index.d.mts +2 -2
  84. package/dist/index.d.ts +2 -2
  85. package/dist/index.js +6 -6
  86. package/dist/index.mjs +3 -3
  87. package/dist/install-integrity.json +73 -70
  88. package/dist/plays/run-request.d.mts +1 -1
  89. package/dist/plays/run-request.d.ts +1 -1
  90. package/dist/release.d.mts +1 -1
  91. package/dist/release.d.ts +1 -1
  92. package/dist/release.js +2 -2
  93. package/dist/release.mjs +1 -1
  94. package/package.json +1 -1
  95. package/dist/cli/auth-WRUUITRZ.js +0 -31
  96. package/dist/cli/client-KBAPBERE.js +0 -20
  97. package/dist/cli/git-6QYO4FQH.js +0 -23
  98. package/dist/cli/skills-3ASRSEF2.js +0 -28
  99. package/dist/cli/update-7ZPTMO6H.js +0 -28
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-DLIRSHV6.mjs";
5
5
  import {
6
6
  SDK_RELEASE
7
- } from "./chunk-KNK42P4M.mjs";
7
+ } from "./chunk-QACDLYNO.mjs";
8
8
  import {
9
9
  DeeplineError,
10
10
  TOOL_EXECUTION_ERROR_SCHEMA_VERSION,
@@ -1221,6 +1221,7 @@ var MAX_DIAGNOSTIC_HEADER_LENGTH = 120;
1221
1221
  var COWORK_NETWORK_HINT = "Claude Cowork appears to be running Deepline in a network-restricted sandbox. In Claude Desktop, open Settings > Capabilities, turn on Allow network egress, and set Domain allowlist to All domains for the Cowork session.";
1222
1222
  var REQUEST_TIMEOUT_MARKER = Symbol("deeplineRequestTimeout");
1223
1223
  var REQUEST_ABORT_MARKER = Symbol("deeplineRequestAbort");
1224
+ var MAX_AUTOMATIC_RETRY_WAIT_MS = 3e4;
1224
1225
  function requestCancelledError(signal) {
1225
1226
  const error = withErrorCause(new Error("Request aborted"), signal.reason);
1226
1227
  error[REQUEST_ABORT_MARKER] = true;
@@ -1424,6 +1425,7 @@ var HttpClient = class {
1424
1425
  let lastError = null;
1425
1426
  const candidateUrls = options?.exactUrlOnly ? [url] : buildCandidateUrls(url);
1426
1427
  let retryAfterDelayMs = null;
1428
+ let totalRetryWaitMs = 0;
1427
1429
  const maxRetries = options?.maxRetries ?? this.config.maxRetries;
1428
1430
  requestAttempts: for (let attempt = 0; attempt <= maxRetries; attempt++) {
1429
1431
  if (options?.signal?.aborted) {
@@ -1435,6 +1437,10 @@ var HttpClient = class {
1435
1437
  const backoffMs = Math.min(1e3 * Math.pow(2, attempt - 1), 3e4);
1436
1438
  const delayMs = retryAfterDelayMs === null ? backoffMs : Math.max(backoffMs, retryAfterDelayMs);
1437
1439
  retryAfterDelayMs = null;
1440
+ if (totalRetryWaitMs + delayMs > MAX_AUTOMATIC_RETRY_WAIT_MS) {
1441
+ break requestAttempts;
1442
+ }
1443
+ totalRetryWaitMs += delayMs;
1438
1444
  networkPhase = "retry_wait";
1439
1445
  try {
1440
1446
  await sleep(delayMs, options?.signal);
@@ -49,7 +49,7 @@ var SDK_RELEASE = {
49
49
  // getters keep their established compatibility behavior.
50
50
  // 0.3.1 deprecated the legacy `deepline enrich` command in favor of Plays.
51
51
  // 0.3.90 is the first deliberately versioned SDK release for API v3.
52
- version: "0.3.305",
52
+ version: "0.3.307",
53
53
  updateSummary: "Play grep now returns concise results with the matched fields and terms. Automatic CLI updates are enabled by default; use `deepline settings autoupdate off` to opt out, `deepline settings autoupdate on` to re-enable updates, or `deepline settings autoupdate pin <version>` to hold an exact release.",
54
54
  packageCapabilities: {
55
55
  updatePreferences: 1
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getAuthedHttpClient,
3
3
  printCommandEnvelope
4
- } from "./chunk-QFSISXKO.mjs";
4
+ } from "./chunk-D55NIPGU.mjs";
5
5
 
6
6
  // src/cli/commands/sessions.ts
7
7
  import {
@@ -49,7 +49,7 @@ var SDK_RELEASE = {
49
49
  // getters keep their established compatibility behavior.
50
50
  // 0.3.1 deprecated the legacy `deepline enrich` command in favor of Plays.
51
51
  // 0.3.90 is the first deliberately versioned SDK release for API v3.
52
- version: "0.3.305",
52
+ version: "0.3.307",
53
53
  updateSummary: "Play grep now returns concise results with the matched fields and terms. Automatic CLI updates are enabled by default; use `deepline settings autoupdate off` to opt out, `deepline settings autoupdate on` to re-enable updates, or `deepline settings autoupdate pin <version>` to hold an exact release.",
54
54
  packageCapabilities: {
55
55
  updatePreferences: 1
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-GAMFK2ZP.mjs";
4
4
  import {
5
5
  printCommandEnvelope
6
- } from "./chunk-QFSISXKO.mjs";
6
+ } from "./chunk-D55NIPGU.mjs";
7
7
  import {
8
8
  DEFAULT_SKILL_AGENTS,
9
9
  KNOWN_SKILL_AGENTS,
@@ -22,7 +22,7 @@ import {
22
22
  sdkCliStateDirPath,
23
23
  skillsAgentPathSegment,
24
24
  writeSdkSkillsLocalVersion
25
- } from "./chunk-6C4SD4U3.mjs";
25
+ } from "./chunk-MPVXXDWH.mjs";
26
26
  import {
27
27
  DeeplineError
28
28
  } from "./chunk-NXGCO4JB.mjs";
@@ -1605,13 +1605,13 @@ async function syncSdkSkillsIfNeeded(baseUrl, options = {}) {
1605
1605
  if (leases) recordOwnPidOnInProgressSkillsSync(baseUrl, leases);
1606
1606
  const claimedVersion = leases ? claimedSkillsVersion(leases) : "";
1607
1607
  if (options.mode === "detached" && agents.length > 0 && options.update === void 0 && !claimedVersion) {
1608
- const outcome = claimAndSpawnDetachedSkillsSync(
1608
+ claimAndSpawnDetachedSkillsSync(
1609
1609
  baseUrl,
1610
1610
  agents,
1611
1611
  UNRESOLVED_SKILLS_CLAIM_VERSION,
1612
1612
  options.spawnDetached ?? spawnDetachedSkillsSyncChild
1613
1613
  );
1614
- if (outcome !== "unavailable") return;
1614
+ return;
1615
1615
  }
1616
1616
  try {
1617
1617
  const localVersion = readSdkSkillsLocalVersion(baseUrl);
@@ -1669,7 +1669,7 @@ async function syncSdkSkillsIfNeeded(baseUrl, options = {}) {
1669
1669
  );
1670
1670
  return;
1671
1671
  }
1672
- if (isDefaultAgentSet(agents)) return;
1672
+ return;
1673
1673
  }
1674
1674
  await runInlineSkillsSync(
1675
1675
  baseUrl,
@@ -14,7 +14,7 @@ import {
14
14
  RETAINED_PIPELINE_RECEIVERS_HEADER,
15
15
  RUNTIME_ENVIRONMENT_TOKEN_HEADER,
16
16
  resolveConfig
17
- } from "./chunk-6C4SD4U3.mjs";
17
+ } from "./chunk-MPVXXDWH.mjs";
18
18
  import {
19
19
  PLAY_RUNTIME_BACKENDS,
20
20
  RAW_V2_TOOL_RESPONSE_CONTRACT,
@@ -172,6 +172,18 @@ function usesExtendedBetterContactLauncherBudget(toolId) {
172
172
  return BETTERCONTACT_LAUNCHER_TOOL_IDS.has(toolId.trim().toLowerCase());
173
173
  }
174
174
 
175
+ // src/cli-invocation-id.ts
176
+ var CLI_INVOCATION_ID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
177
+ function validateCliInvocationId(value) {
178
+ if (!CLI_INVOCATION_ID_PATTERN.test(value)) {
179
+ throw new DeeplineError(
180
+ "CLI invocation IDs must be UUID v4 values.",
181
+ void 0,
182
+ "CLI_INVOCATION_ID_INVALID"
183
+ );
184
+ }
185
+ }
186
+
175
187
  // src/tool-calls.ts
176
188
  var INCLUDE_TOOL_METADATA_HEADER = "x-deepline-include-tool-metadata";
177
189
  var EXECUTE_RESPONSE_CONTRACT_HEADER = "x-deepline-execute-response-contract";
@@ -305,6 +317,9 @@ var ToolCalls = class {
305
317
  this.configuredRequestTimeoutMs = configuredRequestTimeoutMs;
306
318
  }
307
319
  async call(toolId, input, options) {
320
+ if (options?.cliInvocationId !== void 0) {
321
+ validateCliInvocationId(options.cliInvocationId);
322
+ }
308
323
  const inputSnapshot = JSON.parse(JSON.stringify(input));
309
324
  const metadataSnapshot = options?.metadata ? JSON.parse(JSON.stringify(options.metadata)) : void 0;
310
325
  const idempotencyKey = options?.idempotencyKey ?? (options?.recover ? crypto.randomUUID() : void 0);
@@ -325,7 +340,11 @@ var ToolCalls = class {
325
340
  this.configuredRequestTimeoutMs
326
341
  );
327
342
  if (idempotencyKey !== void 0) {
328
- await this.lookupExecutionByKey(idempotencyKey, timeoutMs);
343
+ await this.lookupExecutionByKey(
344
+ idempotencyKey,
345
+ timeoutMs,
346
+ options?.cliInvocationId
347
+ );
329
348
  }
330
349
  const isApifySync = toolId.trim().toLowerCase() === "apify_run_actor_sync";
331
350
  const headers = {
@@ -337,7 +356,8 @@ var ToolCalls = class {
337
356
  ...options?.includeToolMetadata ? { [INCLUDE_TOOL_METADATA_HEADER]: "true" } : {},
338
357
  [EXECUTE_RESPONSE_INTENT_HEADER]: options?.responseIntent ?? "raw",
339
358
  ...idempotencyKey ? { "Idempotency-Key": idempotencyKey } : {},
340
- ...options?.searchRef ? { "x-deepline-search-ref": options.searchRef } : {}
359
+ ...options?.searchRef ? { "x-deepline-search-ref": options.searchRef } : {},
360
+ ...options?.cliInvocationId !== void 0 ? { "x-deepline-cli-invocation-id": options.cliInvocationId } : {}
341
361
  };
342
362
  const request = (requestTimeoutMs) => this.http.post(
343
363
  `/api/v2/integrations/${encodeURIComponent(toolId)}/execute`,
@@ -384,7 +404,8 @@ var ToolCalls = class {
384
404
  timeoutMs,
385
405
  this.defaultRequestTimeoutMs,
386
406
  remainingMs
387
- )
407
+ ),
408
+ options?.cliInvocationId
388
409
  );
389
410
  } catch (error) {
390
411
  if (!isRecoverableExecutionLookupError(error)) throw error;
@@ -464,7 +485,7 @@ var ToolCalls = class {
464
485
  }
465
486
  return result;
466
487
  }
467
- async lookupExecutionByKey(idempotencyKey, timeoutMs) {
488
+ async lookupExecutionByKey(idempotencyKey, timeoutMs, cliInvocationId) {
468
489
  validateExecutionIdempotencyKey(idempotencyKey);
469
490
  let supported = false;
470
491
  const result = await this.http.get(
@@ -475,6 +496,7 @@ var ToolCalls = class {
475
496
  timeout: timeoutMs,
476
497
  idempotencyKey,
477
498
  allowNotFound: true,
499
+ ...cliInvocationId !== void 0 ? { headers: { "x-deepline-cli-invocation-id": cliInvocationId } } : {},
478
500
  onResponse: (response) => {
479
501
  supported = response.headers.get("X-Deepline-Idempotency-Supported") === "true";
480
502
  }
@@ -2870,7 +2892,10 @@ var DeeplineClient = class _DeeplineClient {
2870
2892
  * console.log(`Input schema:`, meta.inputSchema);
2871
2893
  * ```
2872
2894
  */
2873
- async getTool(toolId) {
2895
+ async getTool(toolId, options) {
2896
+ if (options?.cliInvocationId !== void 0) {
2897
+ validateCliInvocationId(options.cliInvocationId);
2898
+ }
2874
2899
  return this.http.request(
2875
2900
  `/api/v2/integrations/${encodeURIComponent(toolId)}/get`,
2876
2901
  {
@@ -2880,7 +2905,8 @@ var DeeplineClient = class _DeeplineClient {
2880
2905
  // other GET catalog methods such as searchTools().
2881
2906
  retryApiErrors: true,
2882
2907
  headers: {
2883
- "x-deepline-tool-meta-only": "1"
2908
+ "x-deepline-tool-meta-only": "1",
2909
+ ...options?.cliInvocationId !== void 0 ? { "x-deepline-cli-invocation-id": options.cliInvocationId } : {}
2884
2910
  }
2885
2911
  }
2886
2912
  );
@@ -4456,6 +4482,9 @@ var DeeplineClient = class _DeeplineClient {
4456
4482
  * contracts and stable run behavior.
4457
4483
  */
4458
4484
  async searchPlays(options) {
4485
+ if (options.cliInvocationId !== void 0) {
4486
+ validateCliInvocationId(options.cliInvocationId);
4487
+ }
4459
4488
  const params = new URLSearchParams();
4460
4489
  params.set("search", options.query.trim());
4461
4490
  const scope = options.scope ?? "prebuilt";
@@ -4463,7 +4492,14 @@ var DeeplineClient = class _DeeplineClient {
4463
4492
  params.set("origin", scope);
4464
4493
  }
4465
4494
  const response = await this.http.get(
4466
- `/api/v2/plays?${params.toString()}`
4495
+ `/api/v2/plays?${params.toString()}`,
4496
+ {
4497
+ ...options.cliInvocationId !== void 0 ? {
4498
+ headers: {
4499
+ "x-deepline-cli-invocation-id": options.cliInvocationId
4500
+ }
4501
+ } : {}
4502
+ }
4467
4503
  );
4468
4504
  const plays = (response.plays ?? []).map(
4469
4505
  (play) => this.summarizePlayListItem(play, options)
@@ -0,0 +1,65 @@
1
+ // src/cli/tool-execute-observability.ts
2
+ import { randomUUID } from "crypto";
3
+ var TOOL_EXECUTE_PROGRESS_INTERVAL_MS = 15e3;
4
+ var activeToolExecuteCommand = null;
5
+ function beginToolExecuteCommand() {
6
+ if (activeToolExecuteCommand) return activeToolExecuteCommand.invocationId;
7
+ const invocationId = randomUUID();
8
+ activeToolExecuteCommand = {
9
+ invocationId,
10
+ startedAt: performance.now()
11
+ };
12
+ console.error(`[tools execute ${invocationId}] started`);
13
+ return invocationId;
14
+ }
15
+ function getToolExecuteInvocationId() {
16
+ return activeToolExecuteCommand?.invocationId ?? null;
17
+ }
18
+ async function runToolExecuteStage(stage, action) {
19
+ const command = activeToolExecuteCommand;
20
+ if (!command) return action();
21
+ const startedAt = performance.now();
22
+ const elapsedMs = () => Math.round(performance.now() - startedAt);
23
+ console.error(`[tools execute ${command.invocationId}] ${stage} started`);
24
+ const progressTimer = setInterval(() => {
25
+ console.error(
26
+ `[tools execute ${command.invocationId}] ${stage} still running (${elapsedMs()}ms)`
27
+ );
28
+ }, TOOL_EXECUTE_PROGRESS_INTERVAL_MS);
29
+ progressTimer.unref?.();
30
+ try {
31
+ const result = await action();
32
+ if (result === false) {
33
+ console.error(
34
+ `[tools execute ${command.invocationId}] ${stage} failed after ${elapsedMs()}ms`
35
+ );
36
+ } else {
37
+ console.error(
38
+ `[tools execute ${command.invocationId}] ${stage} completed in ${elapsedMs()}ms`
39
+ );
40
+ }
41
+ return result;
42
+ } catch (error) {
43
+ console.error(
44
+ `[tools execute ${command.invocationId}] ${stage} failed after ${elapsedMs()}ms`
45
+ );
46
+ throw error;
47
+ } finally {
48
+ clearInterval(progressTimer);
49
+ }
50
+ }
51
+ function finishToolExecuteCommand() {
52
+ const command = activeToolExecuteCommand;
53
+ if (!command) return;
54
+ console.error(
55
+ `[tools execute ${command.invocationId}] finished in ${Math.round(performance.now() - command.startedAt)}ms`
56
+ );
57
+ activeToolExecuteCommand = null;
58
+ }
59
+
60
+ export {
61
+ beginToolExecuteCommand,
62
+ getToolExecuteInvocationId,
63
+ runToolExecuteStage,
64
+ finishToolExecuteCommand
65
+ };
@@ -2,7 +2,7 @@ import {
2
2
  argsWantJson,
3
3
  openInBrowser,
4
4
  printCommandEnvelope
5
- } from "./chunk-QFSISXKO.mjs";
5
+ } from "./chunk-D55NIPGU.mjs";
6
6
  import {
7
7
  ACTIVE_ORG_ID_ENV,
8
8
  ACTIVE_ORG_NAME_ENV,
@@ -25,7 +25,7 @@ import {
25
25
  saveHostEnvValues,
26
26
  saveProjectDeeplineEnvValues,
27
27
  storedHostApiKey
28
- } from "./chunk-6C4SD4U3.mjs";
28
+ } from "./chunk-MPVXXDWH.mjs";
29
29
 
30
30
  // src/cli/commands/auth.ts
31
31
  import {
@@ -2,10 +2,10 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkCOMHSM6Fjs = require('./chunk-COMHSM6F.js');
5
+ var _chunkJNHXSZPBjs = require('./chunk-JNHXSZPB.js');
6
6
 
7
7
 
8
- var _chunkB7PAZBJXjs = require('./chunk-B7PAZBJX.js');
8
+ var _chunkAKE6ZFIJjs = require('./chunk-AKE6ZFIJ.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 } = _chunkCOMHSM6Fjs.getAuthedHttpClient.call(void 0, );
35
+ const { http } = _chunkJNHXSZPBjs.getAuthedHttpClient.call(void 0, );
36
36
  const payload = await http.get(
37
37
  `/api/v2/play-projects${options.all ? "?includeDisabled=1" : ""}`
38
38
  );
39
- _chunkCOMHSM6Fjs.printCommandEnvelope.call(void 0,
39
+ _chunkJNHXSZPBjs.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 } = _chunkCOMHSM6Fjs.getAuthedHttpClient.call(void 0, );
76
+ const { http } = _chunkJNHXSZPBjs.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
- _chunkCOMHSM6Fjs.printCommandEnvelope.call(void 0,
139
+ _chunkJNHXSZPBjs.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 } = _chunkCOMHSM6Fjs.getAuthedHttpClient.call(void 0, );
150
+ const { http } = _chunkJNHXSZPBjs.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
- _chunkCOMHSM6Fjs.printCommandEnvelope.call(void 0,
153
+ _chunkJNHXSZPBjs.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 } = _chunkCOMHSM6Fjs.getAuthedHttpClient.call(void 0, );
174
+ const { http } = _chunkJNHXSZPBjs.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 } = _chunkCOMHSM6Fjs.getAuthedHttpClient.call(void 0, );
191
+ const { http } = _chunkJNHXSZPBjs.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
- _chunkCOMHSM6Fjs.printCommandEnvelope.call(void 0,
200
+ _chunkJNHXSZPBjs.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 } = _chunkCOMHSM6Fjs.getAuthedHttpClient.call(void 0, );
223
+ const { http } = _chunkJNHXSZPBjs.getAuthedHttpClient.call(void 0, );
224
224
  const payload = await http.get(
225
225
  `/api/v2/play-projects/${encodeURIComponent(id)}`
226
226
  );
227
- _chunkCOMHSM6Fjs.printCommandEnvelope.call(void 0,
227
+ _chunkJNHXSZPBjs.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 } = _chunkCOMHSM6Fjs.getAuthedHttpClient.call(void 0, );
243
+ const { http } = _chunkJNHXSZPBjs.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
- _chunkCOMHSM6Fjs.printCommandEnvelope.call(void 0,
254
+ _chunkJNHXSZPBjs.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 } = _chunkCOMHSM6Fjs.getAuthedHttpClient.call(void 0, );
267
+ const { http } = _chunkJNHXSZPBjs.getAuthedHttpClient.call(void 0, );
268
268
  await http.delete(`/api/v2/play-projects/${encodeURIComponent(id)}`);
269
- _chunkCOMHSM6Fjs.printCommandEnvelope.call(void 0,
269
+ _chunkJNHXSZPBjs.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 = _chunkB7PAZBJXjs.resolveBaseUrlOnly.call(void 0, );
289
+ const baseUrl = _chunkAKE6ZFIJjs.resolveBaseUrlOnly.call(void 0, );
290
290
  const connectUrl = `${baseUrl.replace(/\/$/, "")}/api/v2/github/connect`;
291
- const opened = _chunkCOMHSM6Fjs.openInBrowser.call(void 0, connectUrl);
292
- _chunkCOMHSM6Fjs.printCommandEnvelope.call(void 0,
291
+ const opened = _chunkJNHXSZPBjs.openInBrowser.call(void 0, connectUrl);
292
+ _chunkJNHXSZPBjs.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 } = _chunkCOMHSM6Fjs.getAuthedHttpClient.call(void 0, );
314
+ const { http } = _chunkJNHXSZPBjs.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
- _chunkCOMHSM6Fjs.printCommandEnvelope.call(void 0,
322
+ _chunkJNHXSZPBjs.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 } = _chunkCOMHSM6Fjs.getAuthedHttpClient.call(void 0, );
366
+ const { http } = _chunkJNHXSZPBjs.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
- _chunkCOMHSM6Fjs.printCommandEnvelope.call(void 0,
371
+ _chunkJNHXSZPBjs.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 } = _chunkCOMHSM6Fjs.getAuthedHttpClient.call(void 0, );
390
+ const { http } = _chunkJNHXSZPBjs.getAuthedHttpClient.call(void 0, );
391
391
  const payload = await http.post(`/api/v2/deployments/${encodeURIComponent(id)}/cancel`, {});
392
- _chunkCOMHSM6Fjs.printCommandEnvelope.call(void 0,
392
+ _chunkJNHXSZPBjs.printCommandEnvelope.call(void 0,
393
393
  {
394
394
  cancelled: payload.cancelled,
395
395
  deployment: payload.deployment,
@@ -3,11 +3,11 @@ import {
3
3
  MONITOR_JOB_PHASES,
4
4
  MONITOR_JOB_RECONCILIATION_STATES,
5
5
  MONITOR_JOB_STATES
6
- } from "./chunk-S3HPQWZ3.mjs";
6
+ } from "./chunk-TLTKAJ6S.mjs";
7
7
  import "./chunk-CBVIJSHF.mjs";
8
- import "./chunk-6C4SD4U3.mjs";
8
+ import "./chunk-MPVXXDWH.mjs";
9
9
  import "./chunk-DLIRSHV6.mjs";
10
- import "./chunk-KNK42P4M.mjs";
10
+ import "./chunk-QACDLYNO.mjs";
11
11
  import "./chunk-6IKARAYD.mjs";
12
12
  import "./chunk-NXGCO4JB.mjs";
13
13
  import "./chunk-WZYKRD7T.mjs";
@@ -0,0 +1,20 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+
4
+
5
+
6
+ var _chunkKCHBE2J3js = require('./chunk-KCHBE2J3.js');
7
+ require('./chunk-LA46MMTL.js');
8
+ require('./chunk-AKE6ZFIJ.js');
9
+ require('./chunk-XNYIZMNQ.js');
10
+ require('./chunk-MZQP7CIL.js');
11
+ require('./chunk-S6R3OX7B.js');
12
+ require('./chunk-7P5AA3SN.js');
13
+ require('./chunk-OG64RBAC.js');
14
+ require('./chunk-COGTRVWW.js');
15
+
16
+
17
+
18
+
19
+
20
+ exports.DeeplineClient = _chunkKCHBE2J3js.DeeplineClient; exports.MONITOR_JOB_PHASES = _chunkKCHBE2J3js.MONITOR_JOB_PHASES; exports.MONITOR_JOB_RECONCILIATION_STATES = _chunkKCHBE2J3js.MONITOR_JOB_RECONCILIATION_STATES; exports.MONITOR_JOB_STATES = _chunkKCHBE2J3js.MONITOR_JOB_STATES;
@@ -4,10 +4,10 @@
4
4
 
5
5
 
6
6
 
7
- var _chunkCOMHSM6Fjs = require('./chunk-COMHSM6F.js');
8
- require('./chunk-B7PAZBJX.js');
7
+ var _chunkJNHXSZPBjs = require('./chunk-JNHXSZPB.js');
8
+ require('./chunk-AKE6ZFIJ.js');
9
9
  require('./chunk-XNYIZMNQ.js');
10
- require('./chunk-DNSTXIU4.js');
10
+ require('./chunk-MZQP7CIL.js');
11
11
  require('./chunk-7P5AA3SN.js');
12
12
  require('./chunk-OG64RBAC.js');
13
13
  require('./chunk-COGTRVWW.js');
@@ -126,7 +126,7 @@ function renderTable(rows, totalRows, verbose, footer = `showing ${rows.length}
126
126
  column.length,
127
127
  ...rows.map((row) => {
128
128
  const value = _nullishCoalesce(row[column], () => ( ""));
129
- return (verbose ? value : _chunkCOMHSM6Fjs.clip.call(void 0, value, 42)).length;
129
+ return (verbose ? value : _chunkJNHXSZPBjs.clip.call(void 0, value, 42)).length;
130
130
  })
131
131
  )
132
132
  ])
@@ -136,7 +136,7 @@ function renderTable(rows, totalRows, verbose, footer = `showing ${rows.length}
136
136
  const body = rows.map(
137
137
  (row) => columns.map((column) => {
138
138
  const raw = _nullishCoalesce(row[column], () => ( ""));
139
- const display = verbose ? raw : _chunkCOMHSM6Fjs.clip.call(void 0, raw, 42);
139
+ const display = verbose ? raw : _chunkJNHXSZPBjs.clip.call(void 0, raw, 42);
140
140
  return display.padEnd(widths[column]);
141
141
  }).join(" | ")
142
142
  );
@@ -156,7 +156,7 @@ async function handleCsvShow(path, options, command) {
156
156
  { exitCode: 2 }
157
157
  );
158
158
  }
159
- const allRows = _chunkCOMHSM6Fjs.readCsvRows.call(void 0, csvPath);
159
+ const allRows = _chunkJNHXSZPBjs.readCsvRows.call(void 0, csvPath);
160
160
  const [rowStart, rowEnd] = parseRowRange(options.rows);
161
161
  const rows = options.summary && options.rows === void 0 ? allRows : selectRows(allRows, rowStart, rowEnd);
162
162
  const { rows: selected, columns } = selectColumns(
@@ -169,7 +169,7 @@ async function handleCsvShow(path, options, command) {
169
169
  if (options.summary) {
170
170
  const summaries = summarizeColumns(selected, columns);
171
171
  if (format === "json") {
172
- _chunkCOMHSM6Fjs.printJson.call(void 0, {
172
+ _chunkJNHXSZPBjs.printJson.call(void 0, {
173
173
  rows: summaries,
174
174
  total_rows: selected.length,
175
175
  source_total_rows: allRows.length
@@ -178,7 +178,7 @@ async function handleCsvShow(path, options, command) {
178
178
  }
179
179
  const displayRows = summaryDisplayRows(summaries);
180
180
  if (format === "csv") {
181
- process.stdout.write(_chunkCOMHSM6Fjs.csvStringFromRows.call(void 0, displayRows));
181
+ process.stdout.write(_chunkJNHXSZPBjs.csvStringFromRows.call(void 0, displayRows));
182
182
  return;
183
183
  }
184
184
  process.stdout.write(
@@ -193,7 +193,7 @@ async function handleCsvShow(path, options, command) {
193
193
  return;
194
194
  }
195
195
  if (format === "json") {
196
- _chunkCOMHSM6Fjs.printJson.call(void 0, {
196
+ _chunkJNHXSZPBjs.printJson.call(void 0, {
197
197
  rows: selected.map((row, index) => ({ __row: rowStart + index, ...row }))
198
198
  });
199
199
  return;
@@ -436,7 +436,7 @@ async function handleCsvRenderStart(options) {
436
436
  if (log) {
437
437
  detail = `
438
438
  CSV render log:
439
- ${_chunkCOMHSM6Fjs.clip.call(void 0, log, 2e3)}`;
439
+ ${_chunkJNHXSZPBjs.clip.call(void 0, log, 2e3)}`;
440
440
  }
441
441
  } catch (e7) {
442
442
  }
@@ -487,7 +487,7 @@ async function handleCsvRenderStatus(options) {
487
487
  if (payload.pid) lines.push(`Render PID: ${payload.pid}`);
488
488
  if (payload.url) lines.push(`Render URL: ${payload.url}`);
489
489
  lines.push(`Render Health: ${payload.health_status}`);
490
- _chunkCOMHSM6Fjs.printCommandEnvelope.call(void 0, payload, {
490
+ _chunkJNHXSZPBjs.printCommandEnvelope.call(void 0, payload, {
491
491
  json: options.json,
492
492
  text: `${lines.join("\n")}
493
493
  `
@@ -523,7 +523,7 @@ async function handleCsvRenderStop(options) {
523
523
  };
524
524
  const text = stopped.length > 0 ? `Stopped CSV render process(es): ${stopped.join(" ")}
525
525
  ` : "No running CSV render process found.\n";
526
- _chunkCOMHSM6Fjs.printCommandEnvelope.call(void 0, payload, { json: options.json, text });
526
+ _chunkJNHXSZPBjs.printCommandEnvelope.call(void 0, payload, { json: options.json, text });
527
527
  }
528
528
  async function handleCsvRender(action, options) {
529
529
  const normalized = _nullishCoalesce(action, () => ( "start"));
@@ -4,10 +4,10 @@ import {
4
4
  printCommandEnvelope,
5
5
  printJson,
6
6
  readCsvRows
7
- } from "./chunk-QFSISXKO.mjs";
8
- import "./chunk-6C4SD4U3.mjs";
7
+ } from "./chunk-D55NIPGU.mjs";
8
+ import "./chunk-MPVXXDWH.mjs";
9
9
  import "./chunk-DLIRSHV6.mjs";
10
- import "./chunk-KNK42P4M.mjs";
10
+ import "./chunk-QACDLYNO.mjs";
11
11
  import "./chunk-NXGCO4JB.mjs";
12
12
  import "./chunk-WZYKRD7T.mjs";
13
13
  import "./chunk-KRD6H754.mjs";