deepline 0.3.394 → 0.3.396

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 (110) hide show
  1. package/dist/bundling-sources/sdk/src/client.ts +30 -162
  2. package/dist/bundling-sources/sdk/src/index.ts +1 -0
  3. package/dist/bundling-sources/sdk/src/plays/play-description.ts +167 -0
  4. package/dist/bundling-sources/sdk/src/release.ts +1 -1
  5. package/dist/bundling-sources/sdk/src/types.ts +1 -0
  6. package/dist/bundling-sources/shared_libs/observability/scheduled-jobs.json +1 -1
  7. package/dist/cli/{auth-OSXDAVCF.mjs → auth-3LTD62VL.mjs} +4 -4
  8. package/dist/cli/auth-562JPKOM.js +39 -0
  9. package/dist/cli/{billing-ZNNKX3UR.mjs → billing-DP7ZAJBO.mjs} +5 -4
  10. package/dist/cli/{billing-EKLYOXUY.js → billing-PA5OXEM5.js} +76 -75
  11. package/dist/cli/{chunk-BP33SIZF.mjs → chunk-23GAA3YO.mjs} +1 -1
  12. package/dist/cli/{chunk-KI635JN4.js → chunk-2VOLOWYZ.js} +1087 -1056
  13. package/dist/cli/{chunk-XXUDVEXK.mjs → chunk-3T4MCB5R.mjs} +1026 -995
  14. package/dist/cli/{chunk-VB6KECLU.mjs → chunk-5WNJF2T3.mjs} +102 -36
  15. package/dist/cli/{chunk-KIUMEOM5.js → chunk-772W2SAU.js} +8 -8
  16. package/dist/cli/{chunk-2MDDA7A4.js → chunk-7Z66NHUC.js} +26 -26
  17. package/dist/cli/{chunk-M57J2SK4.mjs → chunk-AUYXWELC.mjs} +2 -2
  18. package/dist/cli/{chunk-354JCXA2.js → chunk-AVHLATII.js} +50 -50
  19. package/dist/cli/{chunk-MLPU5SMZ.js → chunk-DC6LTULT.js} +2 -2
  20. package/dist/cli/chunk-EIMG75BT.mjs +130 -0
  21. package/dist/cli/{chunk-6YAUMG27.js → chunk-GNN4MY5X.js} +1 -1
  22. package/dist/cli/{chunk-UXFSWG3Q.mjs → chunk-I4T4XAA2.mjs} +4 -4
  23. package/dist/cli/{chunk-MFB2VKBO.mjs → chunk-JCN4DHF7.mjs} +2 -2
  24. package/dist/cli/{chunk-VK6FYZLP.js → chunk-KAEZNPUM.js} +23 -8
  25. package/dist/cli/chunk-KXMNM4AQ.js +130 -0
  26. package/dist/cli/{chunk-XRQ2AQL7.mjs → chunk-LOGGNW4H.mjs} +2 -2
  27. package/dist/cli/{chunk-RDXFGPJU.js → chunk-LWERJUKN.js} +218 -218
  28. package/dist/cli/{chunk-QIQBYKLB.js → chunk-ME6XRFLY.js} +15 -15
  29. package/dist/cli/{chunk-JHIJIHFB.mjs → chunk-MR6XCBQJ.mjs} +23 -131
  30. package/dist/cli/{chunk-TJI2EN6K.mjs → chunk-NHB5YUCS.mjs} +1 -1
  31. package/dist/cli/{chunk-ZMVJSS6N.js → chunk-NSOTASOP.js} +101 -35
  32. package/dist/cli/{chunk-ZYBGA4AR.mjs → chunk-QHGPA362.mjs} +18 -3
  33. package/dist/cli/{chunk-4P27AXEA.js → chunk-RMTASUAK.js} +65 -65
  34. package/dist/cli/{chunk-KGNTKMRG.js → chunk-RTO5QZWT.js} +6 -6
  35. package/dist/cli/{chunk-X63FDZJZ.mjs → chunk-TLQ3FZOC.mjs} +3 -3
  36. package/dist/cli/{chunk-CS6RAIVY.js → chunk-V7UP2F4U.js} +4 -4
  37. package/dist/cli/{chunk-FJGW5GXU.mjs → chunk-VE3U3SQC.mjs} +1 -1
  38. package/dist/cli/{chunk-E23BQ5SC.js → chunk-WQJJNIMQ.js} +241 -349
  39. package/dist/cli/{chunk-NR3DFKNF.mjs → chunk-XKZXO7D3.mjs} +1 -1
  40. package/dist/cli/{csv-5AXRB35H.mjs → csv-RLRR74RQ.mjs} +3 -3
  41. package/dist/cli/{csv-LU7O75WE.js → csv-TF576S77.js} +12 -12
  42. package/dist/cli/{db-F7YTFKVM.js → db-FDBJUTFO.js} +30 -29
  43. package/dist/cli/{db-7XP5UWEW.mjs → db-XORGNBIC.mjs} +5 -4
  44. package/dist/cli/{describe-K4ES5LIL.mjs → describe-6O2ENKTP.mjs} +86 -67
  45. package/dist/cli/{describe-FRH32RDV.js → describe-EFWNECHI.js} +100 -81
  46. package/dist/cli/{executions-RZV5XPT2.js → executions-SFYAXPF4.js} +7 -6
  47. package/dist/cli/{executions-IEHEHJUO.mjs → executions-YPP7WR77.mjs} +5 -4
  48. package/dist/cli/{feedback-3P65QTX3.js → feedback-5UZFYMGB.js} +7 -7
  49. package/dist/cli/{feedback-FPUVZBAN.mjs → feedback-RBGA5ARU.mjs} +3 -3
  50. package/dist/cli/git-5LDY5ZID.js +23 -0
  51. package/dist/cli/{git-GLVVP7TY.mjs → git-IRSAJEK2.mjs} +4 -4
  52. package/dist/cli/index.js +93 -93
  53. package/dist/cli/index.mjs +42 -42
  54. package/dist/cli/{legacy-noops-XKSGZR7Q.js → legacy-noops-CVAOQY2F.js} +7 -7
  55. package/dist/cli/{legacy-noops-3MOI6NBM.mjs → legacy-noops-NA7N6ZOU.mjs} +4 -4
  56. package/dist/cli/{monitors-NZ2DYNST.js → monitors-4OMRXCXP.js} +86 -85
  57. package/dist/cli/{monitors-FTBGNEFG.mjs → monitors-ILZ2XHYG.mjs} +5 -4
  58. package/dist/cli/{org-V2J5RBCN.mjs → org-QDDXAE3J.mjs} +5 -4
  59. package/dist/cli/{org-MCKDQXIV.js → org-YGNJDD2X.js} +65 -64
  60. package/dist/cli/{chunk-RBJYWRCF.js → play-L535H26U.js} +270 -325
  61. package/dist/cli/{chunk-5BB2RGAX.mjs → play-VT6OHB2D.mjs} +77 -132
  62. package/dist/cli/{providers-2JEZ2264.js → providers-GPZ6PQAL.js} +8 -7
  63. package/dist/cli/{providers-I6RQJZFZ.mjs → providers-KG4W5MPK.mjs} +5 -4
  64. package/dist/cli/{quickstart-BIDQDMO4.mjs → quickstart-2JDGTXIG.mjs} +3 -3
  65. package/dist/cli/{quickstart-GJ2RPDU3.js → quickstart-UI27S5LO.js} +5 -5
  66. package/dist/cli/search-MGWROZ33.js +28 -0
  67. package/dist/cli/{search-ELRXFWG5.mjs → search-PW3RAUX7.mjs} +6 -5
  68. package/dist/cli/{secrets-SQXGZXIC.mjs → secrets-HNOMK5A2.mjs} +5 -4
  69. package/dist/cli/{secrets-53IT6VXD.js → secrets-WFAXOUZE.js} +14 -13
  70. package/dist/cli/{sessions-CAV5M77Y.js → sessions-366KROUA.js} +5 -5
  71. package/dist/cli/{sessions-2X5QF7SL.mjs → sessions-XLX3E5UO.mjs} +4 -4
  72. package/dist/cli/{settings-532WNAZO.js → settings-GADAG2UK.js} +75 -74
  73. package/dist/cli/{settings-7P67VGCJ.mjs → settings-YNZ4YKCH.mjs} +8 -7
  74. package/dist/cli/{setup-QGGBV2LE.mjs → setup-PSEHIUXO.mjs} +6 -6
  75. package/dist/cli/{setup-6L2VSUWJ.js → setup-R5YO7GT6.js} +41 -41
  76. package/dist/cli/skills-JF2LPEGM.js +28 -0
  77. package/dist/cli/{skills-3FE62WBG.mjs → skills-LTQBP6CZ.mjs} +4 -4
  78. package/dist/cli/tools-CP2PEFRN.js +34 -0
  79. package/dist/cli/{tools-DMR25DEF.mjs → tools-UAXDWU63.mjs} +11 -18
  80. package/dist/cli/update-HZHZOU6C.js +28 -0
  81. package/dist/cli/{update-6RZMHJZP.mjs → update-SMNIBIMS.mjs} +6 -6
  82. package/dist/cli/{workflow-TX4F2PIX.js → workflow-AOQVZHMD.js} +16 -15
  83. package/dist/cli/{workflow-L2DQRE6R.mjs → workflow-IKGMBGF6.mjs} +6 -5
  84. package/dist/{client-C3O1Ipf3.d.ts → client-Bgis7F6-.d.ts} +22 -12
  85. package/dist/{client-BktIPdIj.d.mts → client-DiGl8ska.d.mts} +22 -12
  86. package/dist/index.d.mts +2 -2
  87. package/dist/index.d.ts +2 -2
  88. package/dist/index.js +11 -10
  89. package/dist/index.mjs +9 -8
  90. package/dist/install-integrity.json +83 -78
  91. package/dist/plays/play-description.d.mts +6 -0
  92. package/dist/plays/play-description.d.ts +6 -0
  93. package/dist/plays/play-description.js +11 -0
  94. package/dist/plays/play-description.mjs +11 -0
  95. package/dist/plays/run-request.d.mts +1 -1
  96. package/dist/plays/run-request.d.ts +1 -1
  97. package/dist/release.d.mts +1 -1
  98. package/dist/release.d.ts +1 -1
  99. package/dist/release.js +2 -2
  100. package/dist/release.mjs +1 -1
  101. package/package.json +6 -1
  102. package/dist/cli/auth-IHKISLJQ.js +0 -39
  103. package/dist/cli/git-MFFAWVVX.js +0 -23
  104. package/dist/cli/play-AJFGME3B.mjs +0 -158
  105. package/dist/cli/play-WLSN2EO2.js +0 -158
  106. package/dist/cli/search-5VN4YD4I.js +0 -27
  107. package/dist/cli/skills-S6NPZAN7.js +0 -28
  108. package/dist/cli/tools-647RLXQS.js +0 -41
  109. package/dist/cli/update-WVTSC3EM.js +0 -28
  110. package/dist/cli/{chunk-KZZC33PY.mjs → chunk-H5KLUGY7.mjs} +214 -214
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkKGNTKMRGjs = require('./chunk-KGNTKMRG.js');
5
+ var _chunkRTO5QZWTjs = require('./chunk-RTO5QZWT.js');
6
6
 
7
7
 
8
8
 
@@ -25,7 +25,7 @@ var _chunkKGNTKMRGjs = require('./chunk-KGNTKMRG.js');
25
25
 
26
26
 
27
27
 
28
- var _chunkCS6RAIVYjs = require('./chunk-CS6RAIVY.js');
28
+ var _chunkV7UP2F4Ujs = require('./chunk-V7UP2F4U.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 _chunkCS6RAIVYjs.hostEnvFilePath.call(void 0, baseUrl);
55
+ return _chunkV7UP2F4Ujs.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 = _chunkCS6RAIVYjs.resolveProjectPinTarget.call(void 0, );
68
+ const target = _chunkV7UP2F4Ujs.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 `${_chunkCS6RAIVYjs.hostConfigDirPath.call(void 0, baseUrl)}/pending-auth.json`;
78
+ return `${_chunkV7UP2F4Ujs.hostConfigDirPath.call(void 0, baseUrl)}/pending-auth.json`;
79
79
  }
80
80
  function legacyPendingClaimTokenPath(baseUrl) {
81
- return `${_chunkCS6RAIVYjs.hostConfigDirPath.call(void 0, baseUrl)}/pending-claim-token`;
81
+ return `${_chunkV7UP2F4Ujs.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 _chunkCS6RAIVYjs.detectAgentRuntime.call(void 0, ) !== "claude_cowork";
183
+ return _chunkV7UP2F4Ujs.detectAgentRuntime.call(void 0, ) !== "claude_cowork";
184
184
  }
185
185
  function saveEnvValues(values, baseUrl, scope) {
186
186
  const filtered = {
187
- ...values[_chunkCS6RAIVYjs.HOST_URL_ENV] ? { [_chunkCS6RAIVYjs.HOST_URL_ENV]: values[_chunkCS6RAIVYjs.HOST_URL_ENV] } : {},
188
- ...values[_chunkCS6RAIVYjs.API_KEY_ENV] ? { [_chunkCS6RAIVYjs.API_KEY_ENV]: values[_chunkCS6RAIVYjs.API_KEY_ENV] } : {},
189
- ...values[_chunkCS6RAIVYjs.ACTIVE_ORG_ID_ENV] ? { [_chunkCS6RAIVYjs.ACTIVE_ORG_ID_ENV]: values[_chunkCS6RAIVYjs.ACTIVE_ORG_ID_ENV] } : {},
190
- ...Object.prototype.hasOwnProperty.call(values, _chunkCS6RAIVYjs.ACTIVE_ORG_NAME_ENV) ? { [_chunkCS6RAIVYjs.ACTIVE_ORG_NAME_ENV]: values[_chunkCS6RAIVYjs.ACTIVE_ORG_NAME_ENV] } : {},
187
+ ...values[_chunkV7UP2F4Ujs.HOST_URL_ENV] ? { [_chunkV7UP2F4Ujs.HOST_URL_ENV]: values[_chunkV7UP2F4Ujs.HOST_URL_ENV] } : {},
188
+ ...values[_chunkV7UP2F4Ujs.API_KEY_ENV] ? { [_chunkV7UP2F4Ujs.API_KEY_ENV]: values[_chunkV7UP2F4Ujs.API_KEY_ENV] } : {},
189
+ ...values[_chunkV7UP2F4Ujs.ACTIVE_ORG_ID_ENV] ? { [_chunkV7UP2F4Ujs.ACTIVE_ORG_ID_ENV]: values[_chunkV7UP2F4Ujs.ACTIVE_ORG_ID_ENV] } : {},
190
+ ...Object.prototype.hasOwnProperty.call(values, _chunkV7UP2F4Ujs.ACTIVE_ORG_NAME_ENV) ? { [_chunkV7UP2F4Ujs.ACTIVE_ORG_NAME_ENV]: values[_chunkV7UP2F4Ujs.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, _chunkCS6RAIVYjs.FEATURES_ENV) ? { [_chunkCS6RAIVYjs.FEATURES_ENV]: values[_chunkCS6RAIVYjs.FEATURES_ENV] } : {}
192
+ ...Object.prototype.hasOwnProperty.call(values, _chunkV7UP2F4Ujs.FEATURES_ENV) ? { [_chunkV7UP2F4Ujs.FEATURES_ENV]: values[_chunkV7UP2F4Ujs.FEATURES_ENV] } : {}
193
193
  };
194
194
  if (scope === "folder") {
195
- _chunkCS6RAIVYjs.saveProjectDeeplineEnvValues.call(void 0, filtered);
195
+ _chunkV7UP2F4Ujs.saveProjectDeeplineEnvValues.call(void 0, filtered);
196
196
  } else {
197
- _chunkCS6RAIVYjs.saveHostEnvValues.call(void 0, baseUrl, filtered);
197
+ _chunkV7UP2F4Ujs.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
- [_chunkCS6RAIVYjs.ACTIVE_ORG_ID_ENV]: orgId,
206
- [_chunkCS6RAIVYjs.ACTIVE_ORG_NAME_ENV]: orgName,
207
- ..._chunkCS6RAIVYjs.featureEnvValues.call(void 0, data)
205
+ [_chunkV7UP2F4Ujs.ACTIVE_ORG_ID_ENV]: orgId,
206
+ [_chunkV7UP2F4Ujs.ACTIVE_ORG_NAME_ENV]: orgName,
207
+ ..._chunkV7UP2F4Ujs.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/${_chunkCS6RAIVYjs.SDK_VERSION}`,
213
+ "User-Agent": `deepline-ts-sdk/${_chunkV7UP2F4Ujs.SDK_VERSION}`,
214
214
  "X-Deepline-Client-Family": "sdk",
215
215
  "X-Deepline-CLI-Family": "sdk",
216
- "X-Deepline-Agent-Runtime": _chunkCS6RAIVYjs.detectAgentRuntime.call(void 0, ),
217
- "X-Deepline-CLI-Version": _chunkCS6RAIVYjs.SDK_VERSION,
218
- "X-Deepline-SDK-Version": _chunkCS6RAIVYjs.SDK_VERSION,
219
- "X-Deepline-API-Contract": _chunkCS6RAIVYjs.SDK_API_CONTRACT
216
+ "X-Deepline-Agent-Runtime": _chunkV7UP2F4Ujs.detectAgentRuntime.call(void 0, ),
217
+ "X-Deepline-CLI-Version": _chunkV7UP2F4Ujs.SDK_VERSION,
218
+ "X-Deepline-SDK-Version": _chunkV7UP2F4Ujs.SDK_VERSION,
219
+ "X-Deepline-API-Contract": _chunkV7UP2F4Ujs.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" ? _chunkCS6RAIVYjs.resolveProjectApiKeyForBaseUrl.call(void 0, input.baseUrl) : _chunkCS6RAIVYjs.resolveGlobalApiKeyForBaseUrl.call(void 0, input.baseUrl);
265
+ const apiKey = input.authScope === "folder" ? _chunkV7UP2F4Ujs.resolveProjectApiKeyForBaseUrl.call(void 0, input.baseUrl) : _chunkV7UP2F4Ujs.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 = _chunkCS6RAIVYjs.autoDetectBaseUrl.call(void 0, ).replace(/\/$/, "");
362
+ const baseUrl = _chunkV7UP2F4Ujs.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
- [_chunkCS6RAIVYjs.HOST_URL_ENV]: baseUrl
417
+ [_chunkV7UP2F4Ujs.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" && _chunkCS6RAIVYjs.detectAgentRuntime.call(void 0, ) !== "claude_cowork";
424
+ const shouldOpen = waitMode !== "no" && _chunkV7UP2F4Ujs.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) _chunkKGNTKMRGjs.openInBrowser.call(void 0, claimUrl);
429
+ if (shouldOpen) _chunkRTO5QZWTjs.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
- [_chunkCS6RAIVYjs.HOST_URL_ENV]: baseUrl,
473
- [_chunkCS6RAIVYjs.API_KEY_ENV]: apiKey,
472
+ [_chunkV7UP2F4Ujs.HOST_URL_ENV]: baseUrl,
473
+ [_chunkV7UP2F4Ujs.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 = _chunkCS6RAIVYjs.autoDetectBaseUrl.call(void 0, ).replace(/\/$/, "");
495
+ const baseUrl = _chunkV7UP2F4Ujs.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" ? _chunkCS6RAIVYjs.resolveProjectApiKeyForBaseUrl.call(void 0, baseUrl) : _chunkCS6RAIVYjs.resolveGlobalApiKeyForBaseUrl.call(void 0, baseUrl);
519
+ const scopedApiKey = authScope === "folder" ? _chunkV7UP2F4Ujs.resolveProjectApiKeyForBaseUrl.call(void 0, baseUrl) : _chunkV7UP2F4Ujs.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
- [_chunkCS6RAIVYjs.HOST_URL_ENV]: baseUrl,
563
- [_chunkCS6RAIVYjs.API_KEY_ENV]: apiKey,
562
+ [_chunkV7UP2F4Ujs.HOST_URL_ENV]: baseUrl,
563
+ [_chunkV7UP2F4Ujs.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 = _chunkCS6RAIVYjs.autoDetectBaseUrl.call(void 0, ).replace(/\/$/, "");
588
- const apiKey = _chunkCS6RAIVYjs.resolveApiKeyForBaseUrl.call(void 0, baseUrl);
587
+ const baseUrl = _chunkV7UP2F4Ujs.autoDetectBaseUrl.call(void 0, ).replace(/\/$/, "");
588
+ const apiKey = _chunkV7UP2F4Ujs.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 = _chunkCS6RAIVYjs.autoDetectBaseUrl.call(void 0, ).replace(/\/$/, "");
611
+ const baseUrl = _chunkV7UP2F4Ujs.autoDetectBaseUrl.call(void 0, ).replace(/\/$/, "");
612
612
  const reveal = args.includes("--reveal");
613
- const jsonOutput = _chunkKGNTKMRGjs.argsWantJson.call(void 0, args);
613
+ const jsonOutput = _chunkRTO5QZWTjs.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" ? _chunkCS6RAIVYjs.resolveProjectApiKeyForBaseUrl.call(void 0, baseUrl) : authScope === "global" ? _chunkCS6RAIVYjs.resolveGlobalApiKeyForBaseUrl.call(void 0, baseUrl) : _chunkCS6RAIVYjs.resolveApiKeyForBaseUrl.call(void 0, baseUrl);
654
+ const apiKey = authScope === "folder" ? _chunkV7UP2F4Ujs.resolveProjectApiKeyForBaseUrl.call(void 0, baseUrl) : authScope === "global" ? _chunkV7UP2F4Ujs.resolveGlobalApiKeyForBaseUrl.call(void 0, baseUrl) : _chunkV7UP2F4Ujs.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
- _chunkKGNTKMRGjs.printCommandEnvelope.call(void 0,
661
+ _chunkRTO5QZWTjs.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
- _chunkKGNTKMRGjs.printCommandEnvelope.call(void 0,
682
+ _chunkRTO5QZWTjs.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
- _chunkKGNTKMRGjs.printCommandEnvelope.call(void 0,
715
+ _chunkRTO5QZWTjs.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, () => ( (_chunkCS6RAIVYjs.getResolvedProjectAuthSource.call(void 0, baseUrl, apiKey) ? "folder" : "global")));
742
+ const resolvedAuthScope = _nullishCoalesce(authScope, () => ( (_chunkV7UP2F4Ujs.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
- [_chunkCS6RAIVYjs.HOST_URL_ENV]: baseUrl,
771
- [_chunkCS6RAIVYjs.API_KEY_ENV]: apiKeyResp,
770
+ [_chunkV7UP2F4Ujs.HOST_URL_ENV]: baseUrl,
771
+ [_chunkV7UP2F4Ujs.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 = _chunkCS6RAIVYjs.resolveProjectPinTarget.call(void 0, );
778
+ const target = _chunkV7UP2F4Ujs.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" || _chunkCS6RAIVYjs.storedHostApiKey.call(void 0, baseUrl) === apiKey) {
785
- saveEnvValues(_chunkCS6RAIVYjs.featureEnvValues.call(void 0, data), baseUrl, resolvedAuthScope);
784
+ } else if (resolvedAuthScope === "folder" || _chunkV7UP2F4Ujs.storedHostApiKey.call(void 0, baseUrl) === apiKey) {
785
+ saveEnvValues(_chunkV7UP2F4Ujs.featureEnvValues.call(void 0, data), baseUrl, resolvedAuthScope);
786
786
  }
787
- _chunkKGNTKMRGjs.printCommandEnvelope.call(void 0,
787
+ _chunkRTO5QZWTjs.printCommandEnvelope.call(void 0,
788
788
  {
789
789
  ...payload,
790
- ..._chunkCS6RAIVYjs.detectAgentRuntime.call(void 0, ) !== "unknown" ? {
791
- command_context: _chunkCS6RAIVYjs.resolveCliCommandContext.call(void 0,
790
+ ..._chunkV7UP2F4Ujs.detectAgentRuntime.call(void 0, ) !== "unknown" ? {
791
+ command_context: _chunkV7UP2F4Ujs.resolveCliCommandContext.call(void 0,
792
792
  { baseUrl, apiKey },
793
793
  resolvedAuthScope
794
794
  )
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunk4P27AXEAjs = require('./chunk-4P27AXEA.js');
3
+ var _chunkRMTASUAKjs = require('./chunk-RMTASUAK.js');
4
4
 
5
5
  // src/cli/npm-script-policy.ts
6
6
  var _child_process = require('child_process');
@@ -13,7 +13,7 @@ function npmSupportsAllowScripts(version) {
13
13
  }
14
14
  function readNpmVersion(env) {
15
15
  try {
16
- const plan = _chunk4P27AXEAjs.resolveShellSpawn.call(void 0, "npm", ["--version"], process.platform, env);
16
+ const plan = _chunkRMTASUAKjs.resolveShellSpawn.call(void 0, "npm", ["--version"], process.platform, env);
17
17
  const result = _child_process.spawnSync.call(void 0, plan.command, plan.args, {
18
18
  encoding: "utf8",
19
19
  env,
@@ -0,0 +1,130 @@
1
+ // src/csv-header-matching.ts
2
+ var CSV_HEADER_MATCHING_NOTE = 'A header matches a column when it equals the column name or its default header, ignoring case, spaces and punctuation: LINKEDIN_URL, linkedin-url and "Linkedin Url" all match linkedin_url. A capital inside a word starts a new word, so "LinkedIn URL" reads as linked_in_url and does not match. Map any other header in the input: {"csv":"<path>","columns":{"<column>":"<your header>"}}.';
3
+
4
+ // src/plays/input-example.ts
5
+ function playInputExampleArgs(schema) {
6
+ if (!schema) return " --input '@<input.json>'";
7
+ if (schema.$ref || schema.allOf) return " --input '@<input.json>'";
8
+ const csv = schema.csvInput;
9
+ const csvField = typeof csv?.inputField === "string" ? csv.inputField : null;
10
+ const required = Array.isArray(schema.required) ? schema.required : [];
11
+ const csvOnlyRequired = required.every((key) => key === csvField);
12
+ const alternatives = schema.oneOf ?? schema.anyOf;
13
+ const hasCsvAlternative = Array.isArray(alternatives) && alternatives.some((branch) => {
14
+ if (!branch || typeof branch !== "object") return false;
15
+ const keys = branch.required;
16
+ return Array.isArray(keys) && keys.includes(csvField) && keys.every((key) => key === csvField);
17
+ });
18
+ if (csvField && csvOnlyRequired && (!alternatives || hasCsvAlternative)) {
19
+ if (csvField === "csv") return " --csv '<contacts.csv>'";
20
+ const value = JSON.stringify({ [csvField]: "<contacts.csv>" });
21
+ return ` --input '${value.replace(/'/g, "'\\''")}'`;
22
+ }
23
+ if (Array.isArray(schema.required) && !required.length && !csv && !alternatives) {
24
+ return "";
25
+ }
26
+ return " --input '@<input.json>'";
27
+ }
28
+
29
+ // src/plays/play-description.ts
30
+ function isRecord(value) {
31
+ return Boolean(value) && typeof value === "object" && !Array.isArray(value);
32
+ }
33
+ function compactSchema(schema) {
34
+ if (!schema) return null;
35
+ const fields = Array.isArray(schema.fields) ? schema.fields.map(
36
+ (field) => isRecord(field) ? {
37
+ name: String(field.name ?? ""),
38
+ type: field.type ?? void 0,
39
+ required: field.required ?? void 0
40
+ } : null
41
+ ).filter((field) => Boolean(field?.name)) : [];
42
+ return fields.length > 0 ? { fields } : schema;
43
+ }
44
+ function schemaMetadata(schema, key) {
45
+ const value = isRecord(schema) ? schema[key] : null;
46
+ return isRecord(value) ? value : null;
47
+ }
48
+ function starterPlayPath(play) {
49
+ const target = play.reference || play.name;
50
+ const unqualifiedName = target.split("/").pop() || play.name;
51
+ const safeName = unqualifiedName.trim().toLowerCase().replace(/[^a-z0-9-]/g, "-").replace(/-+/g, "-").replace(/^-|-$/g, "");
52
+ return `./${safeName || "play"}.play.ts`;
53
+ }
54
+ function cloneEditStarter(play) {
55
+ const readonlyPrebuilt = (play.origin === "prebuilt" || play.ownerType === "deepline") && !play.canEdit;
56
+ if (!play.canClone && !readonlyPrebuilt) return void 0;
57
+ const target = play.reference || play.name;
58
+ const path = starterPlayPath(play);
59
+ return {
60
+ path,
61
+ command: `deepline plays get ${target} --source --out ${path}`,
62
+ checkCommand: `deepline plays check ${path}`
63
+ };
64
+ }
65
+ function staticPipeline(play) {
66
+ return isRecord(play.staticPipeline) ? play.staticPipeline : isRecord(play.currentRevision?.staticPipeline) ? play.currentRevision.staticPipeline : isRecord(play.liveRevision?.staticPipeline) ? play.liveRevision.staticPipeline : null;
67
+ }
68
+ function describePlayListItem(play, options = {}) {
69
+ const aliases = play.aliases?.length ? play.aliases : [play.name];
70
+ const csvInput = schemaMetadata(play.inputSchema, "csvInput");
71
+ const rowOutputSchema = schemaMetadata(play.outputSchema, "rowOutputSchema");
72
+ const description = play.description?.trim() || play.currentRevision?.description?.trim() || play.liveRevision?.description?.trim() || null;
73
+ const runCommand = `deepline plays run ${play.reference || play.name}${playInputExampleArgs(play.inputSchema)}`;
74
+ const starter = cloneEditStarter(play);
75
+ return {
76
+ name: play.name,
77
+ // playKey and triggerStatus were projected away here, so `describe`
78
+ // was strictly less informative than `plays list` for the same play — no
79
+ // stable key, and no way to see that a cron was armed.
80
+ ...play.playKey ? { playKey: play.playKey } : {},
81
+ ...play.reference ? { reference: play.reference } : {},
82
+ ...play.displayName ? { displayName: play.displayName } : {},
83
+ ...description ? { description } : {},
84
+ ...play.guidance ? { guidance: play.guidance } : {},
85
+ pinned: Boolean(play.pinned),
86
+ toolCategories: play.toolCategories ?? [],
87
+ origin: play.origin,
88
+ ownerType: play.ownerType,
89
+ canEdit: play.canEdit,
90
+ canClone: play.canClone,
91
+ aliases,
92
+ inputSchema: options.compact ? compactSchema(play.inputSchema) : play.inputSchema ?? null,
93
+ outputSchema: options.compact ? compactSchema(play.outputSchema) : play.outputSchema ?? null,
94
+ ...options.pipeline ? { staticPipeline: staticPipeline(play) } : {},
95
+ ...csvInput ? {
96
+ csvInput: { ...csvInput, headerMatching: CSV_HEADER_MATCHING_NOTE }
97
+ } : {},
98
+ ...rowOutputSchema ? { rowOutputSchema } : {},
99
+ runCommand,
100
+ examples: [runCommand],
101
+ ...starter ? { cloneEditStarter: starter } : {},
102
+ currentPublishedVersion: play.currentPublishedVersion ?? null,
103
+ // Read the live version off the live revision. It was previously only
104
+ // ever written by the publish/live routes, so every list and describe
105
+ // payload reported liveVersion: null even for an actively serving play.
106
+ liveVersion: play.liveRevision?.version ?? null,
107
+ ...play.triggerStatus ? { triggerStatus: play.triggerStatus } : {},
108
+ isDraftDirty: play.isDraftDirty
109
+ };
110
+ }
111
+ function describePlayDetail(detail, options = {}) {
112
+ const play = detail.play;
113
+ return {
114
+ ...describePlayListItem(play, options),
115
+ currentPublishedVersion: play.currentPublishedVersion ?? play.liveRevision?.version ?? null,
116
+ latestRunId: play.latestRunId ?? detail.latestRuns[0]?.workflowId ?? null,
117
+ ...play.triggerMetadata ? { triggerMetadata: play.triggerMetadata } : {},
118
+ ...play.runtimeLimit ? { runtimeLimit: play.runtimeLimit } : {},
119
+ ...play.activeScheduledPlays ? { activeScheduledPlays: play.activeScheduledPlays } : {},
120
+ ...play.observedCost ? { observedCost: play.observedCost } : {}
121
+ };
122
+ }
123
+
124
+ export {
125
+ CSV_HEADER_MATCHING_NOTE,
126
+ playInputExampleArgs,
127
+ cloneEditStarter,
128
+ describePlayListItem,
129
+ describePlayDetail
130
+ };
@@ -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.394",
52
+ version: "0.3.396",
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,17 +1,17 @@
1
1
  import {
2
2
  npmSupportsAllowScripts,
3
3
  readNpmVersion
4
- } from "./chunk-BP33SIZF.mjs";
4
+ } from "./chunk-23GAA3YO.mjs";
5
5
  import {
6
6
  resolveShellSpawn,
7
7
  runSkillsCommand
8
- } from "./chunk-X63FDZJZ.mjs";
8
+ } from "./chunk-TLQ3FZOC.mjs";
9
9
  import {
10
10
  printCommandEnvelope
11
- } from "./chunk-NR3DFKNF.mjs";
11
+ } from "./chunk-XKZXO7D3.mjs";
12
12
  import {
13
13
  autoDetectBaseUrl
14
- } from "./chunk-FJGW5GXU.mjs";
14
+ } from "./chunk-VE3U3SQC.mjs";
15
15
 
16
16
  // src/cli/commands/update.ts
17
17
  import { spawn, spawnSync } from "child_process";
@@ -2,7 +2,7 @@ import {
2
2
  argsWantJson,
3
3
  openInBrowser,
4
4
  printCommandEnvelope
5
- } from "./chunk-NR3DFKNF.mjs";
5
+ } from "./chunk-XKZXO7D3.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-FJGW5GXU.mjs";
28
+ } from "./chunk-VE3U3SQC.mjs";
29
29
 
30
30
  // src/cli/commands/auth.ts
31
31
  import {
@@ -1,14 +1,14 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkE23BQ5SCjs = require('./chunk-E23BQ5SC.js');
3
+ var _chunkWQJJNIMQjs = require('./chunk-WQJJNIMQ.js');
4
4
 
5
5
 
6
6
 
7
- var _chunkKGNTKMRGjs = require('./chunk-KGNTKMRG.js');
7
+ var _chunkRTO5QZWTjs = require('./chunk-RTO5QZWT.js');
8
8
 
9
9
 
10
10
 
11
- var _chunkCS6RAIVYjs = require('./chunk-CS6RAIVY.js');
11
+ var _chunkV7UP2F4Ujs = require('./chunk-V7UP2F4U.js');
12
12
 
13
13
  // src/cli/commands/search.ts
14
14
  var _commander = require('commander');
@@ -18,7 +18,7 @@ var _fs = require('fs');
18
18
  var _path = require('path');
19
19
  var SEARCH_REF_TTL_MS = 15 * 6e4;
20
20
  function lastSearchPath() {
21
- return _path.join.call(void 0, _chunkCS6RAIVYjs.sdkCliStateDirPath.call(void 0, _chunkCS6RAIVYjs.resolveConfig.call(void 0, ).baseUrl), "last-search.json");
21
+ return _path.join.call(void 0, _chunkV7UP2F4Ujs.sdkCliStateDirPath.call(void 0, _chunkV7UP2F4Ujs.resolveConfig.call(void 0, ).baseUrl), "last-search.json");
22
22
  }
23
23
  function rememberSearchRef(searchRef) {
24
24
  try {
@@ -238,6 +238,11 @@ function rateLimitDisplay(item) {
238
238
  );
239
239
  return tightest ? `${tightest.requestsPerWindow}/${_nullishCoalesce(RATE_WINDOW_UNITS[tightest.windowMs], () => ( `${tightest.windowMs / 1e3}s`))}` : "\u2014";
240
240
  }
241
+ function failureRateDisplay(rate) {
242
+ if (typeof rate !== "number") return "\u2014";
243
+ const percent = Math.round(rate * 100);
244
+ return percent === 0 && rate > 0 ? "<1%" : `${percent}%`;
245
+ }
241
246
  function searchRow(item) {
242
247
  const { cost, notes } = pricingDisplay(item);
243
248
  const observedMax = item.billingSource === "own_provider_credentials" ? "" : observedMaxText(item.pricing);
@@ -253,13 +258,16 @@ function searchRow(item) {
253
258
  kind: item.kind,
254
259
  cost,
255
260
  rateLimit: rateLimitDisplay(item),
261
+ // Production share of errored or rate-limited calls; absent when too few
262
+ // calls or orgs used the tool to say.
263
+ failureRate: failureRateDisplay(item.failureRate),
256
264
  summary: clipSummary(_nullishCoalesce(item.description, () => ( ""))),
257
265
  notes
258
266
  };
259
267
  }
260
268
  function renderSearchResults(result) {
261
269
  if (result.results.length === 0)
262
- return _chunkKGNTKMRGjs.renderCommandEnvelopeText.call(void 0, result);
270
+ return _chunkRTO5QZWTjs.renderCommandEnvelopeText.call(void 0, result);
263
271
  const rows = result.results.map(searchRow);
264
272
  const kinds = new Set(rows.map((row) => row.kind));
265
273
  const onlyTools = kinds.size === 1 && kinds.has("tool");
@@ -274,6 +282,13 @@ function renderSearchResults(result) {
274
282
  alignment: "right"
275
283
  }
276
284
  ] : [],
285
+ ...rows.some((row) => row.failureRate !== "\u2014") ? [
286
+ {
287
+ header: "FAILURES",
288
+ value: (row) => row.failureRate,
289
+ alignment: "right"
290
+ }
291
+ ] : [],
277
292
  { header: "SUMMARY", value: (row) => row.summary }
278
293
  ];
279
294
  const render = result.render;
@@ -283,7 +298,7 @@ function renderSearchResults(result) {
283
298
  actions: _optionalChain([render, 'optionalAccess', _11 => _11.actions])
284
299
  };
285
300
  const followUps = _optionalChain([remaining, 'access', _12 => _12.sections, 'optionalAccess', _13 => _13.length]) || _optionalChain([remaining, 'access', _14 => _14.actions, 'optionalAccess', _15 => _15.length]) ? `
286
- ${_chunkKGNTKMRGjs.renderCommandEnvelopeText.call(void 0, { render: remaining })}` : "";
301
+ ${_chunkRTO5QZWTjs.renderCommandEnvelopeText.call(void 0, { render: remaining })}` : "";
287
302
  const notes = rows.flatMap(
288
303
  (row) => row.notes.map((note) => ` ${row.id}: ${note}`)
289
304
  );
@@ -360,7 +375,7 @@ async function runSearch(queryInput, options, types, exclude = []) {
360
375
  console.error(USAGE);
361
376
  return 1;
362
377
  }
363
- const { search_ref: searchRef, ...result } = await new (0, _chunkE23BQ5SCjs.DeeplineClient)().search({
378
+ const { search_ref: searchRef, ...result } = await new (0, _chunkWQJJNIMQjs.DeeplineClient)().search({
364
379
  query,
365
380
  types,
366
381
  exclude,
@@ -374,7 +389,7 @@ async function runSearch(queryInput, options, types, exclude = []) {
374
389
  });
375
390
  if (searchRef) rememberSearchRef(searchRef);
376
391
  pointAtDescribe(result);
377
- _chunkKGNTKMRGjs.printCommandEnvelope.call(void 0, result, {
392
+ _chunkRTO5QZWTjs.printCommandEnvelope.call(void 0, result, {
378
393
  json: options.json === true,
379
394
  text: renderSearchResults(result)
380
395
  });