deepline 0.3.381 → 0.3.382

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 (90) hide show
  1. package/dist/bundling-sources/sdk/src/release.ts +1 -1
  2. package/dist/cli/auth-GFQMA47B.js +39 -0
  3. package/dist/cli/{auth-M2WCVLXM.mjs → auth-K7TZOYYE.mjs} +4 -4
  4. package/dist/cli/{billing-J5FSVZB4.js → billing-4P4N53UW.js} +73 -73
  5. package/dist/cli/{billing-B4XB5L63.mjs → billing-TDW5SHSL.mjs} +4 -4
  6. package/dist/cli/{chunk-D2G6W7ES.js → chunk-3BRXZZNU.js} +50 -50
  7. package/dist/cli/{chunk-RJDYOGD3.mjs → chunk-3QHSILOH.mjs} +2 -2
  8. package/dist/cli/{chunk-OKGOQKW7.js → chunk-5WVT7NHI.js} +48 -48
  9. package/dist/cli/{chunk-Z2EKAUHJ.mjs → chunk-5XYEFAFI.mjs} +1 -1
  10. package/dist/cli/{chunk-QOK7SKSZ.mjs → chunk-ANHZWK2M.mjs} +3 -3
  11. package/dist/cli/{chunk-CFHQRESG.mjs → chunk-BNRRVGGW.mjs} +1 -1
  12. package/dist/cli/{chunk-PPO4FG7O.js → chunk-BSPOALWK.js} +432 -392
  13. package/dist/cli/{chunk-Y3FOW4TU.mjs → chunk-DHV54G6M.mjs} +5 -5
  14. package/dist/cli/{chunk-RWSPU3RI.js → chunk-ERGADEMS.js} +2 -2
  15. package/dist/cli/{chunk-IXRQGX74.mjs → chunk-FEIKELZA.mjs} +4 -4
  16. package/dist/cli/{chunk-4Q4SQJBF.mjs → chunk-H4Q2JRPD.mjs} +1 -1
  17. package/dist/cli/{chunk-2IB2RBCY.js → chunk-ID57OQBZ.js} +1 -1
  18. package/dist/cli/{chunk-5UC6VEXF.js → chunk-IMKWP4UQ.js} +4 -4
  19. package/dist/cli/{chunk-SPJI6J44.js → chunk-IWNJYV27.js} +8 -8
  20. package/dist/cli/{chunk-Q7VDVBZW.mjs → chunk-J6253YWF.mjs} +3 -3
  21. package/dist/cli/{chunk-AQ4HP2GF.js → chunk-JLNMJAWS.js} +9 -9
  22. package/dist/cli/{chunk-N36BQUUU.mjs → chunk-LFY4APCO.mjs} +3 -2
  23. package/dist/cli/{chunk-NEU3YVPF.mjs → chunk-NYS7324H.mjs} +50 -10
  24. package/dist/cli/{chunk-IX6IEN5B.mjs → chunk-QGBXUPY3.mjs} +2 -2
  25. package/dist/cli/{chunk-RK72YKI7.js → chunk-SGG4X23E.js} +26 -26
  26. package/dist/cli/{chunk-KQFDSP5O.js → chunk-SK6KH37M.js} +8 -8
  27. package/dist/cli/{chunk-UTVDVZTM.js → chunk-TOLORRDI.js} +62 -61
  28. package/dist/cli/{chunk-4P35MBCK.mjs → chunk-UKG2DJLZ.mjs} +1 -1
  29. package/dist/cli/{chunk-FDB2YGWF.js → chunk-YYHROETZ.js} +15 -15
  30. package/dist/cli/{chunk-HJWXXZVG.js → chunk-ZP7Z3TZ3.js} +8 -8
  31. package/dist/cli/{chunk-PWCQM4SD.mjs → chunk-ZPD4NZKT.mjs} +2 -2
  32. package/dist/cli/{csv-RG6EPZAF.js → csv-GJB3PQ6I.js} +12 -12
  33. package/dist/cli/{csv-XK2U7OOP.mjs → csv-T4A374D5.mjs} +3 -3
  34. package/dist/cli/{db-LVXEM4JK.mjs → db-CMXCGD3G.mjs} +4 -4
  35. package/dist/cli/{db-LVFZMURX.js → db-J2J5BJOH.js} +29 -29
  36. package/dist/cli/{describe-F52KVIU5.js → describe-HW2SROYB.js} +44 -18
  37. package/dist/cli/{describe-CGNNGI7D.mjs → describe-MN4MJ6DD.mjs} +36 -10
  38. package/dist/cli/{executions-QVNYM6G5.js → executions-DZB6R7OV.js} +6 -6
  39. package/dist/cli/{executions-IFQ4VFOW.mjs → executions-O4CCBVC4.mjs} +4 -4
  40. package/dist/cli/{feedback-GE2HJ3RV.js → feedback-N6HDCLQ6.js} +7 -7
  41. package/dist/cli/{feedback-XQZGZLJD.mjs → feedback-YMOM6INL.mjs} +3 -3
  42. package/dist/cli/git-FCDTBBB3.js +23 -0
  43. package/dist/cli/{git-VHYPESNC.mjs → git-LEC7GJLK.mjs} +4 -4
  44. package/dist/cli/index.js +174 -83
  45. package/dist/cli/index.mjs +123 -32
  46. package/dist/cli/{legacy-noops-MEVZKOQO.js → legacy-noops-GFXVUEHX.js} +7 -7
  47. package/dist/cli/{legacy-noops-H3LBMAJD.mjs → legacy-noops-K27TS7LE.mjs} +4 -4
  48. package/dist/cli/{monitors-6LBPWRV2.js → monitors-HFT37OOR.js} +85 -85
  49. package/dist/cli/{monitors-QCDXTRJG.mjs → monitors-QCLSYMKW.mjs} +4 -4
  50. package/dist/cli/{org-ZCGJFGH2.js → org-4CADZYFV.js} +64 -64
  51. package/dist/cli/{org-R3Q75N6B.mjs → org-UXQ6LVOX.mjs} +4 -4
  52. package/dist/cli/play-2EJN5QAI.js +157 -0
  53. package/dist/cli/{play-AQ6P4KHZ.mjs → play-FOQPC7BY.mjs} +9 -7
  54. package/dist/cli/{providers-DD7F2EB3.mjs → providers-HG3GZRFS.mjs} +4 -4
  55. package/dist/cli/{providers-HQRVMENG.js → providers-W3RK2G2A.js} +7 -7
  56. package/dist/cli/{quickstart-IHSZ24SF.js → quickstart-7VXWMWC6.js} +5 -5
  57. package/dist/cli/{quickstart-IQOBN4JH.mjs → quickstart-DQKAUJFG.mjs} +3 -3
  58. package/dist/cli/{search-DQERH2AR.mjs → search-LDGEJTLL.mjs} +5 -5
  59. package/dist/cli/search-MLQXX25Z.js +26 -0
  60. package/dist/cli/{secrets-XY5226V2.js → secrets-3NHMB236.js} +13 -13
  61. package/dist/cli/{secrets-WNAU3O75.mjs → secrets-VEOZ5FT6.mjs} +4 -4
  62. package/dist/cli/{sessions-R53JPCM4.js → sessions-I4FKREEM.js} +5 -5
  63. package/dist/cli/{sessions-P7UZU5LC.mjs → sessions-UYLIL756.mjs} +4 -4
  64. package/dist/cli/{settings-5QHIIX4A.js → settings-BLNPNNLM.js} +74 -74
  65. package/dist/cli/{settings-JQLWULCE.mjs → settings-RA3XIJWS.mjs} +7 -7
  66. package/dist/cli/{setup-BKCG5BRF.mjs → setup-OAU6HQOG.mjs} +6 -6
  67. package/dist/cli/{setup-3UXOGSKW.js → setup-YFJJQF6T.js} +41 -41
  68. package/dist/cli/skills-P3HX4XRQ.js +28 -0
  69. package/dist/cli/{skills-5BBTJHXZ.mjs → skills-XF7YND7M.mjs} +4 -4
  70. package/dist/cli/{tools-7EQFFGWU.mjs → tools-7CJTNQDV.mjs} +6 -6
  71. package/dist/cli/tools-SHVTCQ2K.js +40 -0
  72. package/dist/cli/update-TI6YJEOZ.js +28 -0
  73. package/dist/cli/{update-KFMOWN7F.mjs → update-WD2X3EZD.mjs} +6 -6
  74. package/dist/cli/{workflow-PGSPHWFA.js → workflow-32EMNRWX.js} +15 -15
  75. package/dist/cli/{workflow-JMBTBZGY.mjs → workflow-AW6GZHG2.mjs} +5 -5
  76. package/dist/index.js +6 -6
  77. package/dist/index.mjs +3 -3
  78. package/dist/install-integrity.json +72 -72
  79. package/dist/release.d.mts +1 -1
  80. package/dist/release.d.ts +1 -1
  81. package/dist/release.js +2 -2
  82. package/dist/release.mjs +1 -1
  83. package/package.json +1 -1
  84. package/dist/cli/auth-T3F2NI55.js +0 -39
  85. package/dist/cli/git-QADGD7ZL.js +0 -23
  86. package/dist/cli/play-AFDVNXFL.js +0 -155
  87. package/dist/cli/search-KQNM6AHE.js +0 -26
  88. package/dist/cli/skills-7X24WLXD.js +0 -28
  89. package/dist/cli/tools-HQFR3CYC.js +0 -40
  90. package/dist/cli/update-MP6SY5LY.js +0 -28
@@ -13,7 +13,7 @@ import {
13
13
  observedMaxText,
14
14
  recentSearchRef,
15
15
  registerDeprecatedSearchCommand
16
- } from "./chunk-Q7VDVBZW.mjs";
16
+ } from "./chunk-J6253YWF.mjs";
17
17
  import {
18
18
  DEEPLINE_EXTRACTOR_TARGET_DEFINITIONS,
19
19
  EMAIL_STATUS_JSON_SCHEMA,
@@ -32,7 +32,7 @@ import {
32
32
  import {
33
33
  DeeplineClient,
34
34
  validateExecutionIdempotencyKey
35
- } from "./chunk-Z2EKAUHJ.mjs";
35
+ } from "./chunk-5XYEFAFI.mjs";
36
36
  import {
37
37
  beginToolExecuteCommand,
38
38
  getToolExecuteInvocationId,
@@ -46,11 +46,11 @@ import {
46
46
  printJsonError,
47
47
  renderCommandEnvelopeText,
48
48
  shouldEmitJson
49
- } from "./chunk-QOK7SKSZ.mjs";
49
+ } from "./chunk-ANHZWK2M.mjs";
50
50
  import {
51
51
  resolveConfig,
52
52
  sdkCliStateDirPath
53
- } from "./chunk-4P35MBCK.mjs";
53
+ } from "./chunk-UKG2DJLZ.mjs";
54
54
  import {
55
55
  DeeplineError
56
56
  } from "./chunk-NXGCO4JB.mjs";
@@ -1112,7 +1112,7 @@ Examples:
1112
1112
  process.exitCode = await narrowView();
1113
1113
  return;
1114
1114
  }
1115
- const { describeAnything } = await import("./describe-CGNNGI7D.mjs");
1115
+ const { describeAnything } = await import("./describe-MN4MJ6DD.mjs");
1116
1116
  process.exitCode = await describeAnything(
1117
1117
  toolId,
1118
1118
  {
@@ -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 _chunkUTVDVZTMjs = require('./chunk-UTVDVZTM.js');
3
+ var _chunkTOLORRDIjs = require('./chunk-TOLORRDI.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 = _chunkUTVDVZTMjs.resolveShellSpawn.call(void 0, "npm", ["--version"], process.platform, env);
16
+ const plan = _chunkTOLORRDIjs.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,
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  npmSupportsAllowScripts,
3
3
  readNpmVersion
4
- } from "./chunk-4Q4SQJBF.mjs";
4
+ } from "./chunk-H4Q2JRPD.mjs";
5
5
  import {
6
6
  resolveShellSpawn,
7
7
  runSkillsCommand
8
- } from "./chunk-N36BQUUU.mjs";
8
+ } from "./chunk-LFY4APCO.mjs";
9
9
  import {
10
10
  printCommandEnvelope
11
- } from "./chunk-QOK7SKSZ.mjs";
11
+ } from "./chunk-ANHZWK2M.mjs";
12
12
  import {
13
13
  autoDetectBaseUrl
14
- } from "./chunk-4P35MBCK.mjs";
14
+ } from "./chunk-UKG2DJLZ.mjs";
15
15
 
16
16
  // src/cli/commands/update.ts
17
17
  import { spawn, spawnSync } from "child_process";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolveShellSpawn
3
- } from "./chunk-N36BQUUU.mjs";
3
+ } from "./chunk-LFY4APCO.mjs";
4
4
 
5
5
  // src/cli/npm-script-policy.ts
6
6
  import { spawnSync } from "child_process";
@@ -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.381",
52
+ version: "0.3.382",
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
@@ -14,7 +14,7 @@ var _chunkXNYIZMNQjs = require('./chunk-XNYIZMNQ.js');
14
14
  var _chunk7P5AA3SNjs = require('./chunk-7P5AA3SN.js');
15
15
 
16
16
 
17
- var _chunk2IB2RBCYjs = require('./chunk-2IB2RBCY.js');
17
+ var _chunkID57OQBZjs = require('./chunk-ID57OQBZ.js');
18
18
 
19
19
  // src/errors.ts
20
20
  var CustomerDbQueryOutcomeUnknownError = (_class = class extends _chunk7P5AA3SNjs.DeeplineError {
@@ -743,9 +743,9 @@ function resolveCliCommandContext(inputConfig, requestedScope) {
743
743
  }
744
744
 
745
745
  // src/version.ts
746
- var SDK_VERSION = _chunk2IB2RBCYjs.SDK_RELEASE.version;
747
- var SDK_API_MAJOR = _chunk2IB2RBCYjs.SDK_RELEASE.contracts.api.currentMajor;
748
- var SDK_API_CONTRACT = _nullishCoalesce(_chunk2IB2RBCYjs.SDK_RELEASE.contracts.api.legacyWireIds[0], () => ( `api-v${SDK_API_MAJOR}`));
746
+ var SDK_VERSION = _chunkID57OQBZjs.SDK_RELEASE.version;
747
+ var SDK_API_MAJOR = _chunkID57OQBZjs.SDK_RELEASE.contracts.api.currentMajor;
748
+ var SDK_API_CONTRACT = _nullishCoalesce(_chunkID57OQBZjs.SDK_RELEASE.contracts.api.legacyWireIds[0], () => ( `api-v${SDK_API_MAJOR}`));
749
749
 
750
750
  // src/agent-runtime.ts
751
751
 
@@ -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 _chunkAQ4HP2GFjs = require('./chunk-AQ4HP2GF.js');
3
+ var _chunkJLNMJAWSjs = require('./chunk-JLNMJAWS.js');
4
4
 
5
5
 
6
6
 
7
- var _chunkKQFDSP5Ojs = require('./chunk-KQFDSP5O.js');
7
+ var _chunkSK6KH37Mjs = require('./chunk-SK6KH37M.js');
8
8
 
9
9
 
10
10
 
11
- var _chunk5UC6VEXFjs = require('./chunk-5UC6VEXF.js');
11
+ var _chunkIMKWP4UQjs = require('./chunk-IMKWP4UQ.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, _chunk5UC6VEXFjs.sdkCliStateDirPath.call(void 0, _chunk5UC6VEXFjs.resolveConfig.call(void 0, ).baseUrl), "last-search.json");
21
+ return _path.join.call(void 0, _chunkIMKWP4UQjs.sdkCliStateDirPath.call(void 0, _chunkIMKWP4UQjs.resolveConfig.call(void 0, ).baseUrl), "last-search.json");
22
22
  }
23
23
  function rememberSearchRef(searchRef) {
24
24
  try {
@@ -259,7 +259,7 @@ function searchRow(item) {
259
259
  }
260
260
  function renderSearchResults(result) {
261
261
  if (result.results.length === 0)
262
- return _chunkKQFDSP5Ojs.renderCommandEnvelopeText.call(void 0, result);
262
+ return _chunkSK6KH37Mjs.renderCommandEnvelopeText.call(void 0, result);
263
263
  const rows = result.results.map(searchRow);
264
264
  const kinds = new Set(rows.map((row) => row.kind));
265
265
  const onlyTools = kinds.size === 1 && kinds.has("tool");
@@ -283,7 +283,7 @@ function renderSearchResults(result) {
283
283
  actions: _optionalChain([render, 'optionalAccess', _11 => _11.actions])
284
284
  };
285
285
  const followUps = _optionalChain([remaining, 'access', _12 => _12.sections, 'optionalAccess', _13 => _13.length]) || _optionalChain([remaining, 'access', _14 => _14.actions, 'optionalAccess', _15 => _15.length]) ? `
286
- ${_chunkKQFDSP5Ojs.renderCommandEnvelopeText.call(void 0, { render: remaining })}` : "";
286
+ ${_chunkSK6KH37Mjs.renderCommandEnvelopeText.call(void 0, { render: remaining })}` : "";
287
287
  const notes = rows.flatMap(
288
288
  (row) => row.notes.map((note) => ` ${row.id}: ${note}`)
289
289
  );
@@ -360,7 +360,7 @@ async function runSearch(queryInput, options, types, exclude = []) {
360
360
  console.error(USAGE);
361
361
  return 1;
362
362
  }
363
- const { search_ref: searchRef, ...result } = await new (0, _chunkAQ4HP2GFjs.DeeplineClient)().search({
363
+ const { search_ref: searchRef, ...result } = await new (0, _chunkJLNMJAWSjs.DeeplineClient)().search({
364
364
  query,
365
365
  types,
366
366
  exclude,
@@ -374,7 +374,7 @@ async function runSearch(queryInput, options, types, exclude = []) {
374
374
  });
375
375
  if (searchRef) rememberSearchRef(searchRef);
376
376
  pointAtDescribe(result);
377
- _chunkKQFDSP5Ojs.printCommandEnvelope.call(void 0, result, {
377
+ _chunkSK6KH37Mjs.printCommandEnvelope.call(void 0, result, {
378
378
  json: options.json === true,
379
379
  text: renderSearchResults(result)
380
380
  });
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  DeeplineClient
3
- } from "./chunk-Z2EKAUHJ.mjs";
3
+ } from "./chunk-5XYEFAFI.mjs";
4
4
  import {
5
5
  printCommandEnvelope,
6
6
  renderCommandEnvelopeText
7
- } from "./chunk-QOK7SKSZ.mjs";
7
+ } from "./chunk-ANHZWK2M.mjs";
8
8
  import {
9
9
  resolveConfig,
10
10
  sdkCliStateDirPath
11
- } from "./chunk-4P35MBCK.mjs";
11
+ } from "./chunk-UKG2DJLZ.mjs";
12
12
 
13
13
  // src/cli/commands/search.ts
14
14
  import { Option } from "commander";
@@ -21,7 +21,7 @@ var _chunkPAIMOGCMjs = require('./chunk-PAIMOGCM.js');
21
21
 
22
22
 
23
23
 
24
- var _chunk5UC6VEXFjs = require('./chunk-5UC6VEXF.js');
24
+ var _chunkIMKWP4UQjs = require('./chunk-IMKWP4UQ.js');
25
25
 
26
26
 
27
27
 
@@ -137,7 +137,7 @@ async function queryCustomerDatabase(http, input) {
137
137
  if (error instanceof _chunk7P5AA3SNjs.DeeplineError && (_optionalChain([error, 'access', _ => _.code, 'optionalAccess', _2 => _2.startsWith, 'call', _3 => _3("NETWORK_")]) || // Older API readers return PostgreSQL errors as HTTP 400, including
138
138
  // lost connections and explicitly unknown transaction resolution.
139
139
  /^08[A-Z0-9]{3}$/.test(_nullishCoalesce(error.code, () => ( ""))) || ["57P01", "57P02", "57P03"].includes(_nullishCoalesce(error.code, () => ( ""))) || error.statusCode === 408 || (_nullishCoalesce(error.statusCode, () => ( 0))) >= 500)) {
140
- throw new (0, _chunk5UC6VEXFjs.CustomerDbQueryOutcomeUnknownError)(
140
+ throw new (0, _chunkIMKWP4UQjs.CustomerDbQueryOutcomeUnknownError)(
141
141
  error,
142
142
  plan.request.body.operation_key
143
143
  );
@@ -145,7 +145,7 @@ async function queryCustomerDatabase(http, input) {
145
145
  throw error;
146
146
  }
147
147
  if (!result || typeof result !== "object" || Array.isArray(result) || typeof result.command !== "string" || !Array.isArray(result.columns) || !Array.isArray(result.rows) || typeof result.truncated !== "boolean" || result.row_count !== null && (!Number.isSafeInteger(result.row_count) || result.row_count < 0) || !Number.isSafeInteger(result.row_count_returned) || result.row_count_returned < 0) {
148
- throw new (0, _chunk5UC6VEXFjs.CustomerDbQueryOutcomeUnknownError)(
148
+ throw new (0, _chunkIMKWP4UQjs.CustomerDbQueryOutcomeUnknownError)(
149
149
  new (0, _chunk7P5AA3SNjs.DeeplineError)(
150
150
  "The SQL response did not contain a valid result.",
151
151
  200,
@@ -156,7 +156,7 @@ async function queryCustomerDatabase(http, input) {
156
156
  }
157
157
  const operation = result.operation;
158
158
  if (input.operationKey !== void 0 && (!operation || operation.operation_key !== input.operationKey || !Number.isSafeInteger(operation.completed_at_ms) || operation.completed_at_ms < 0 || !["executed", "operation_recovery"].includes(operation.source))) {
159
- throw new (0, _chunk5UC6VEXFjs.CustomerDbQueryOutcomeUnknownError)(
159
+ throw new (0, _chunkIMKWP4UQjs.CustomerDbQueryOutcomeUnknownError)(
160
160
  new (0, _chunk7P5AA3SNjs.DeeplineError)(
161
161
  "The server did not confirm the original atomic SQL operation.",
162
162
  200,
@@ -2910,8 +2910,8 @@ function runtimeSelectionHeaders(runtime) {
2910
2910
  }
2911
2911
  const receivers = _optionalChain([process, 'access', _104 => _104.env, 'access', _105 => _105.DEEPLINE_RUNTIME_RETAINED_PIPELINE_RECEIVERS, 'optionalAccess', _106 => _106.trim, 'call', _107 => _107()]);
2912
2912
  return {
2913
- [_chunk5UC6VEXFjs.RUNTIME_ENVIRONMENT_TOKEN_HEADER]: token,
2914
- ...receivers ? { [_chunk5UC6VEXFjs.RETAINED_PIPELINE_RECEIVERS_HEADER]: receivers } : {}
2913
+ [_chunkIMKWP4UQjs.RUNTIME_ENVIRONMENT_TOKEN_HEADER]: token,
2914
+ ...receivers ? { [_chunkIMKWP4UQjs.RETAINED_PIPELINE_RECEIVERS_HEADER]: receivers } : {}
2915
2915
  };
2916
2916
  }
2917
2917
  function isolatedCiRuntimeEventReadHeaders() {
@@ -2927,7 +2927,7 @@ function isolatedCiRuntimeEventReadHeaders() {
2927
2927
  "RUNTIME_EVENT_INTERNAL_TOKEN_REQUIRED"
2928
2928
  );
2929
2929
  }
2930
- return { [_chunk5UC6VEXFjs.COORDINATOR_INTERNAL_TOKEN_HEADER]: token };
2930
+ return { [_chunkIMKWP4UQjs.COORDINATOR_INTERNAL_TOKEN_HEADER]: token };
2931
2931
  }
2932
2932
  function normalizeTestPolicyOverrides(value, source) {
2933
2933
  if (value && typeof value === "object" && !Array.isArray(value)) {
@@ -3217,8 +3217,8 @@ var DeeplineClient = (_class = class _DeeplineClient {
3217
3217
  * @throws {@link ConfigError} if no API key can be resolved from any source.
3218
3218
  */
3219
3219
  constructor(options) {
3220
- this.config = _chunk5UC6VEXFjs.resolveConfig.call(void 0, options);
3221
- this.http = new (0, _chunk5UC6VEXFjs.HttpClient)(this.config);
3220
+ this.config = _chunkIMKWP4UQjs.resolveConfig.call(void 0, options);
3221
+ this.http = new (0, _chunkIMKWP4UQjs.HttpClient)(this.config);
3222
3222
  this.toolCalls = new ToolCalls(
3223
3223
  this.http,
3224
3224
  this.config.timeout,
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-GAMFK2ZP.mjs";
4
4
  import {
5
5
  printCommandEnvelope
6
- } from "./chunk-QOK7SKSZ.mjs";
6
+ } from "./chunk-ANHZWK2M.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-4P35MBCK.mjs";
25
+ } from "./chunk-UKG2DJLZ.mjs";
26
26
  import {
27
27
  DeeplineError
28
28
  } from "./chunk-NXGCO4JB.mjs";
@@ -2366,6 +2366,7 @@ export {
2366
2366
  isCiEnvironment,
2367
2367
  enforceSdkCompatibilityResponse,
2368
2368
  resolveShellSpawn,
2369
+ sanitizeCommand,
2369
2370
  resolveSdkCliFailureExitCode,
2370
2371
  maybeReportSdkCliFailure,
2371
2372
  flushDeferredSkillsSyncNotices,
@@ -19,11 +19,11 @@ import {
19
19
  } from "./chunk-EDWJY6T4.mjs";
20
20
  import {
21
21
  registerDeprecatedSearchCommand
22
- } from "./chunk-Q7VDVBZW.mjs";
22
+ } from "./chunk-J6253YWF.mjs";
23
23
  import {
24
24
  handleDeploymentGet,
25
25
  handleDeploymentsList
26
- } from "./chunk-IX6IEN5B.mjs";
26
+ } from "./chunk-QGBXUPY3.mjs";
27
27
  import {
28
28
  pinLocalPlayImports,
29
29
  planLocalPlayExecution
@@ -42,7 +42,7 @@ import {
42
42
  normalizeRunEventOperationRequest,
43
43
  parseLogLevel,
44
44
  playInputExampleArgs
45
- } from "./chunk-Z2EKAUHJ.mjs";
45
+ } from "./chunk-5XYEFAFI.mjs";
46
46
  import {
47
47
  CSV_DATA_INPUT_KEY,
48
48
  buildNamedPlayRunRequest,
@@ -75,10 +75,10 @@ import {
75
75
  printJsonError,
76
76
  renderCommandEnvelopeText,
77
77
  shouldEmitJson
78
- } from "./chunk-QOK7SKSZ.mjs";
78
+ } from "./chunk-ANHZWK2M.mjs";
79
79
  import {
80
80
  fetchWithDeploymentProtection
81
- } from "./chunk-4P35MBCK.mjs";
81
+ } from "./chunk-UKG2DJLZ.mjs";
82
82
  import {
83
83
  DeeplineError
84
84
  } from "./chunk-NXGCO4JB.mjs";
@@ -9442,6 +9442,11 @@ function buildPlayDashboardUrl(baseUrl, playName) {
9442
9442
  const encodedPlayName = encodeURIComponent(playName);
9443
9443
  return `${trimmedBase}/dashboard/plays/${encodedPlayName}`;
9444
9444
  }
9445
+ function resolveRunPlayName(status, runId) {
9446
+ const packaged = status.package?.run?.playName;
9447
+ if (typeof packaged === "string" && packaged.trim()) return packaged.trim();
9448
+ return extractRunPlayName(status) ?? /^play\/(.+)\/(?:run|webhook)\//.exec(runId)?.[1] ?? null;
9449
+ }
9445
9450
  function openPlayDashboard(dashboardUrl, open2) {
9446
9451
  if (open2 && dashboardUrl) {
9447
9452
  openInBrowser(dashboardUrl);
@@ -13589,6 +13594,7 @@ function renderRunOverviewText(overview, extras = {}) {
13589
13594
  const lines = [
13590
13595
  `${runGlyph} ${runLabel.word} ${run.id}`,
13591
13596
  ` play: ${run.playName}`,
13597
+ ...extras.dashboardUrl ? [` play page: ${extras.dashboardUrl}`] : [],
13592
13598
  ...extras.credits ? [` credits: ${formatRunCreditsLine(extras.credits)}`] : [],
13593
13599
  ...formatRunTimingTextLines(run),
13594
13600
  ...buildRunActivityTextLines(run),
@@ -13716,7 +13722,7 @@ async function handleRunGet(args) {
13716
13722
  args.includes("--config") ? "config" : "get"
13717
13723
  );
13718
13724
  args = selection.args;
13719
- const usage2 = "Usage: deepline runs get <run-id> [--json] [--full] [--input] [--config]";
13725
+ const usage2 = "Usage: deepline runs get <run-id> [--json] [--full] [--input] [--config] [--web-url]";
13720
13726
  let runId;
13721
13727
  try {
13722
13728
  runId = parseRunIdPositional(args, usage2);
@@ -13725,6 +13731,21 @@ async function handleRunGet(args) {
13725
13731
  return 1;
13726
13732
  }
13727
13733
  const client = new DeeplineClient();
13734
+ if (args.includes("--web-url")) {
13735
+ const status2 = await client.runs.get(runId, { full: false });
13736
+ const playName2 = resolveRunPlayName(status2, runId);
13737
+ if (!playName2) {
13738
+ console.error(`Run ${runId} does not name its play; no play page URL.`);
13739
+ return 1;
13740
+ }
13741
+ const dashboardUrl2 = buildPlayDashboardUrl(client.baseUrl, playName2);
13742
+ printCommandEnvelope(
13743
+ { dashboardUrl: dashboardUrl2 },
13744
+ { json: args.includes("--json"), text: `${dashboardUrl2}
13745
+ ` }
13746
+ );
13747
+ return 0;
13748
+ }
13728
13749
  if (args.includes("--config")) {
13729
13750
  if (args.some((arg) => ["--input", "--full", "--log-failed"].includes(arg))) {
13730
13751
  console.error(
@@ -13760,13 +13781,24 @@ async function handleRunGet(args) {
13760
13781
  full: true,
13761
13782
  failedLogs: args.includes("--log-failed")
13762
13783
  }) : status;
13784
+ const legacyPlayName = resolveRunPlayName(legacyStatus, runId);
13785
+ const legacyDashboardUrl = legacyPlayName ? buildPlayDashboardUrl(client.baseUrl, legacyPlayName) : null;
13763
13786
  if (argsWantJson(args)) {
13764
13787
  printCommandEnvelope(
13765
- full ? legacyStatus : compactPlayStatus(legacyStatus),
13788
+ {
13789
+ ...full ? legacyStatus : compactPlayStatus(legacyStatus),
13790
+ ...legacyDashboardUrl ? { dashboardUrl: legacyDashboardUrl } : {}
13791
+ },
13766
13792
  { json: true, fields: selection.fields }
13767
13793
  );
13768
13794
  } else {
13769
13795
  writePlayResult(legacyStatus, false, { fullJson: full });
13796
+ if (legacyDashboardUrl)
13797
+ printCommandEnvelope(
13798
+ { dashboardUrl: legacyDashboardUrl },
13799
+ { json: false, text: `play page: ${legacyDashboardUrl}
13800
+ ` }
13801
+ );
13770
13802
  }
13771
13803
  return 0;
13772
13804
  }
@@ -13778,16 +13810,19 @@ async function handleRunGet(args) {
13778
13810
  ]);
13779
13811
  const hitLines = formatRunHitsLines(hits);
13780
13812
  const json = argsWantJson(args);
13813
+ const playName = resolveRunPlayName(status, runId);
13814
+ const dashboardUrl = playName ? buildPlayDashboardUrl(client.baseUrl, playName) : void 0;
13781
13815
  printCommandEnvelope(
13782
13816
  {
13783
13817
  ...overview,
13818
+ ...dashboardUrl ? { dashboardUrl } : {},
13784
13819
  credits,
13785
13820
  ...hits ? { hits } : {}
13786
13821
  },
13787
13822
  {
13788
13823
  json,
13789
13824
  ...json ? {} : {
13790
- text: `${renderRunOverviewText(overview, { credits })}${hitLines.length > 0 ? `${hitLines.join("\n")}
13825
+ text: `${renderRunOverviewText(overview, { credits, dashboardUrl })}${hitLines.length > 0 ? `${hitLines.join("\n")}
13791
13826
  ` : ""}`
13792
13827
  },
13793
13828
  fields: selection.fields
@@ -16511,7 +16546,7 @@ Examples:
16511
16546
  process.exitCode = await ownView();
16512
16547
  return;
16513
16548
  }
16514
- const { describeAnything } = await import("./describe-CGNNGI7D.mjs");
16549
+ const { describeAnything } = await import("./describe-MN4MJ6DD.mjs");
16515
16550
  process.exitCode = await describeAnything(
16516
16551
  name,
16517
16552
  {
@@ -16782,10 +16817,13 @@ Notes:
16782
16817
  --json run.status,datasets.name,actions selects fields without flattening.
16783
16818
  Selection changes stdout only, not the server query. Optional missing paths
16784
16819
  are omitted; array positions are preserved. --json diagnostics needs --full.
16820
+ dashboardUrl (text: "play page:") links the run's play page; link it in a
16821
+ final answer. --web-url prints only that URL (with --json: {"dashboardUrl"}).
16785
16822
 
16786
16823
  Examples:
16787
16824
  deepline runs get play/my-play/run/20260501t000000-000
16788
16825
  deepline runs get play/my-play/run/20260501t000000-000
16826
+ deepline runs get play/my-play/run/20260501t000000-000 --web-url
16789
16827
  deepline runs logs play/my-play/run/20260501t000000-000 --failed
16790
16828
  deepline runs get play/my-play/run/20260501t000000-000 --full
16791
16829
  deepline runs get play/my-play/run/20260501t000000-000 --input
@@ -16803,12 +16841,13 @@ Examples:
16803
16841
  ).option(
16804
16842
  "--config",
16805
16843
  "Explicitly print the recorded configuration, without full results"
16806
- ).addOption(
16844
+ ).option("--web-url", "Print only the run's play page URL").addOption(
16807
16845
  new Option2("--log-failed", "Attach terminal-failure logs").hideHelp()
16808
16846
  ).action(async (runId, options) => {
16809
16847
  process.exitCode = await handleRunGet([
16810
16848
  runId,
16811
16849
  ...jsonFieldArgs(options.json),
16850
+ ...options.webUrl ? ["--web-url"] : [],
16812
16851
  ...options.full ? ["--full"] : [],
16813
16852
  ...options.input ? ["--input"] : [],
16814
16853
  ...options.config ? ["--config"] : [],
@@ -17474,6 +17513,7 @@ export {
17474
17513
  getProgressLinesFromLiveEvent,
17475
17514
  shouldPrintPlayProgressLine,
17476
17515
  getRunningHeartbeatLine,
17516
+ buildPlayDashboardUrl,
17477
17517
  waitForPlayCompletionByWatch,
17478
17518
  startAndWaitForPlayCompletionByStream,
17479
17519
  truncateErrorForDisplay,
@@ -2,10 +2,10 @@ import {
2
2
  getAuthedHttpClient,
3
3
  openInBrowser,
4
4
  printCommandEnvelope
5
- } from "./chunk-QOK7SKSZ.mjs";
5
+ } from "./chunk-ANHZWK2M.mjs";
6
6
  import {
7
7
  resolveBaseUrlOnly
8
- } from "./chunk-4P35MBCK.mjs";
8
+ } from "./chunk-UKG2DJLZ.mjs";
9
9
 
10
10
  // src/cli/commands/git.ts
11
11
  function shellQuote(value) {