deepline 0.3.376 → 0.3.378

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 (108) hide show
  1. package/dist/bundling-sources/sdk/src/plays/run-request.ts +3 -0
  2. package/dist/bundling-sources/sdk/src/release.ts +1 -1
  3. package/dist/bundling-sources/sdk/src/types.ts +5 -0
  4. package/dist/cli/auth-GC4ZJ6HO.js +39 -0
  5. package/dist/cli/{auth-MLCDUTJY.mjs → auth-Z4TP4SLF.mjs} +10 -6
  6. package/dist/cli/{billing-IONI4V7P.js → billing-2LO7C4OI.js} +74 -74
  7. package/dist/cli/{billing-OUGNDBL4.mjs → billing-JR4QD4UG.mjs} +5 -5
  8. package/dist/cli/{chunk-V7ZREPSD.mjs → chunk-2TEN5IOR.mjs} +4 -4
  9. package/dist/cli/{chunk-L6OSOKS6.mjs → chunk-3H2Q377V.mjs} +27 -10
  10. package/dist/cli/{chunk-GMRWUGXB.mjs → chunk-3OPJYNS2.mjs} +3 -3
  11. package/dist/cli/{chunk-KHZ6WEVF.js → chunk-4DAUDGO2.js} +26 -26
  12. package/dist/cli/{chunk-H7SLESX6.mjs → chunk-4YJHPJKQ.mjs} +2 -2
  13. package/dist/cli/{chunk-34KUUN3Z.js → chunk-A7VUVXW6.js} +65 -54
  14. package/dist/cli/{chunk-ETUV6RRK.js → chunk-AIRU4XTZ.js} +25 -25
  15. package/dist/cli/{chunk-ZXFGA2VK.js → chunk-BUHZUAEB.js} +8 -8
  16. package/dist/cli/{chunk-SPZNLE2D.mjs → chunk-C47TYIAO.mjs} +2 -2
  17. package/dist/cli/{chunk-UABI2T3Z.mjs → chunk-DNORWBSX.mjs} +2 -2
  18. package/dist/cli/{chunk-VL5ERG22.mjs → chunk-EEXP6W4X.mjs} +2 -2
  19. package/dist/cli/{chunk-VNBAOWN3.mjs → chunk-F2RPSYZC.mjs} +6 -6
  20. package/dist/cli/{chunk-Y5W5IIA4.js → chunk-F7MGUP72.js} +57 -57
  21. package/dist/cli/{chunk-6EYTKUDI.js → chunk-FH3WJOCD.js} +2 -2
  22. package/dist/cli/{chunk-7LX2G2PU.mjs → chunk-FJ3JEYFJ.mjs} +1 -1
  23. package/dist/cli/{chunk-FWF24ULX.mjs → chunk-HVDBGPDP.mjs} +5 -4
  24. package/dist/cli/{chunk-4WINCNNH.js → chunk-HXENYWVS.js} +5 -4
  25. package/dist/cli/{chunk-QSH5CHRI.js → chunk-ISVKLCGQ.js} +6 -6
  26. package/dist/cli/{chunk-5HJHTZI6.mjs → chunk-JORLGBPA.mjs} +1 -1
  27. package/dist/cli/{chunk-MHRDXS7J.mjs → chunk-KTZFOS57.mjs} +1 -1
  28. package/dist/cli/{chunk-7ZZSGV4A.js → chunk-LHBPC7PZ.js} +1 -1
  29. package/dist/cli/{chunk-HDB4GAWY.mjs → chunk-M5HYHFIV.mjs} +1 -1
  30. package/dist/cli/{chunk-47X6MQ7J.js → chunk-NGYNHAAC.js} +60 -60
  31. package/dist/cli/{chunk-LA46MMTL.js → chunk-PAIMOGCM.js} +1 -0
  32. package/dist/cli/{chunk-CBVIJSHF.mjs → chunk-Q6EOHNRH.mjs} +1 -0
  33. package/dist/cli/{chunk-5HDB7XXT.js → chunk-UCDAF3TI.js} +271 -254
  34. package/dist/cli/{chunk-YXQ7SRL3.mjs → chunk-V4TN5MXK.mjs} +15 -4
  35. package/dist/cli/{chunk-UE2UHYT3.mjs → chunk-VB6KECLU.mjs} +57 -6
  36. package/dist/cli/{chunk-4V2Q3JO6.js → chunk-WHEDPNPN.js} +15 -15
  37. package/dist/cli/{chunk-Y4MXBE3V.js → chunk-YSX6SSGW.js} +8 -8
  38. package/dist/cli/{chunk-A6ZTYKYF.js → chunk-ZMVJSS6N.js} +63 -12
  39. package/dist/cli/{chunk-N6KIEYZV.js → chunk-ZNGZPKXT.js} +4 -4
  40. package/dist/cli/command-docs.js +2 -2
  41. package/dist/cli/command-docs.mjs +1 -1
  42. package/dist/cli/{csv-NITSP7QJ.mjs → csv-EQV4HK57.mjs} +3 -3
  43. package/dist/cli/{csv-LPC7BGZ2.js → csv-KEA6YLCU.js} +12 -12
  44. package/dist/cli/{db-WGD54UKM.js → db-BSD7XVVZ.js} +30 -30
  45. package/dist/cli/{db-JVDYEXNC.mjs → db-CXWVEYF5.mjs} +5 -5
  46. package/dist/cli/{describe-SVMLA6SN.mjs → describe-5PIG7QJH.mjs} +12 -10
  47. package/dist/cli/{describe-GA7LSJRY.js → describe-FG5JQWSB.js} +31 -29
  48. package/dist/cli/{executions-P47HEI4N.js → executions-HLJQEBSX.js} +7 -7
  49. package/dist/cli/{executions-CXBJDGMU.mjs → executions-IPUW4YTD.mjs} +5 -5
  50. package/dist/cli/{feedback-GWKWE5CU.js → feedback-6QQVVCSY.js} +7 -7
  51. package/dist/cli/{feedback-34OSXUQ2.mjs → feedback-P2IEMRL7.mjs} +3 -3
  52. package/dist/cli/git-24TVX47T.js +23 -0
  53. package/dist/cli/{git-YAROF6D3.mjs → git-JD6UFEWE.mjs} +4 -4
  54. package/dist/cli/index.js +108 -103
  55. package/dist/cli/index.mjs +58 -53
  56. package/dist/cli/{legacy-noops-MDZQL3QH.js → legacy-noops-JZAEUIHY.js} +7 -7
  57. package/dist/cli/{legacy-noops-2G55OKIU.mjs → legacy-noops-R6FG44MY.mjs} +4 -4
  58. package/dist/cli/{monitors-KUGKMABN.mjs → monitors-7YTG6MUN.mjs} +5 -5
  59. package/dist/cli/{monitors-X7QYWFSP.js → monitors-AEDYTXDI.js} +86 -86
  60. package/dist/cli/{org-6XL3IBT2.js → org-CXXZEKOE.js} +65 -65
  61. package/dist/cli/{org-CNBBAN4W.mjs → org-HFFNL6B2.mjs} +5 -5
  62. package/dist/cli/{play-33ZMPAR5.mjs → play-2LBL27HQ.mjs} +9 -9
  63. package/dist/cli/play-BTDMU7WD.js +155 -0
  64. package/dist/cli/{providers-5POAURDT.js → providers-FYPDMYJD.js} +8 -8
  65. package/dist/cli/{providers-3OSQNFPE.mjs → providers-TSQ4IKGL.mjs} +5 -5
  66. package/dist/cli/{quickstart-LQGPDJTS.js → quickstart-OLB32KQD.js} +5 -5
  67. package/dist/cli/{quickstart-QICTOOW6.mjs → quickstart-X4EK2VUO.mjs} +3 -3
  68. package/dist/cli/{search-HBIX4SF4.mjs → search-DC3MH3SK.mjs} +6 -6
  69. package/dist/cli/search-MHDPSHQG.js +26 -0
  70. package/dist/cli/{secrets-QKPBNQ3E.js → secrets-ND2ZJBTH.js} +14 -14
  71. package/dist/cli/{secrets-6MRGZPHT.mjs → secrets-YS5G7TKA.mjs} +5 -5
  72. package/dist/cli/{sessions-NODY2OW4.mjs → sessions-FJYWJT4E.mjs} +4 -4
  73. package/dist/cli/{sessions-NP7BLZD2.js → sessions-ZAWZ23R4.js} +5 -5
  74. package/dist/cli/{settings-JCEIOTNL.mjs → settings-2PBXGFTK.mjs} +8 -8
  75. package/dist/cli/{settings-42QHXUB2.js → settings-VGSUOAPQ.js} +75 -75
  76. package/dist/cli/{setup-3QR4RGMG.mjs → setup-5EGLDCAF.mjs} +6 -6
  77. package/dist/cli/{setup-5XXWP54Y.js → setup-SBBMRM7G.js} +41 -41
  78. package/dist/cli/{skills-U4OMXLNS.mjs → skills-HGC3BDBU.mjs} +4 -4
  79. package/dist/cli/skills-OSEKG6FD.js +28 -0
  80. package/dist/cli/tools-57UDLV2I.js +40 -0
  81. package/dist/cli/{tools-45OROEZQ.mjs → tools-UTLVTTWW.mjs} +8 -8
  82. package/dist/cli/update-5YD7PJFE.js +28 -0
  83. package/dist/cli/{update-2XCRMJ4R.mjs → update-IFOQMPAX.mjs} +6 -6
  84. package/dist/cli/{workflow-7X3GCOPY.mjs → workflow-JYUD2UHZ.mjs} +6 -6
  85. package/dist/cli/{workflow-47P4LQNC.js → workflow-PAM64TA4.js} +16 -16
  86. package/dist/{client-Cn-txrXv.d.mts → client-0avPvYBP.d.mts} +5 -0
  87. package/dist/{client-fPoIN-3V.d.ts → client-DEKvymBI.d.ts} +5 -0
  88. package/dist/index.d.mts +2 -2
  89. package/dist/index.d.ts +2 -2
  90. package/dist/index.js +7 -7
  91. package/dist/index.mjs +4 -4
  92. package/dist/install-integrity.json +80 -80
  93. package/dist/plays/run-request.d.mts +1 -1
  94. package/dist/plays/run-request.d.ts +1 -1
  95. package/dist/plays/run-request.js +2 -2
  96. package/dist/plays/run-request.mjs +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 +1 -1
  102. package/dist/cli/auth-BTFXJQLT.js +0 -35
  103. package/dist/cli/git-MIPISCON.js +0 -23
  104. package/dist/cli/play-3CM3P2DS.js +0 -155
  105. package/dist/cli/search-A2YLJ4I5.js +0 -26
  106. package/dist/cli/skills-4JJEAA66.js +0 -28
  107. package/dist/cli/tools-FDCFSA7W.js +0 -40
  108. package/dist/cli/update-VYL4TXIE.js +0 -28
@@ -2,7 +2,7 @@ import {
2
2
  argsWantJson,
3
3
  openInBrowser,
4
4
  printCommandEnvelope
5
- } from "./chunk-MHRDXS7J.mjs";
5
+ } from "./chunk-KTZFOS57.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-HDB4GAWY.mjs";
28
+ } from "./chunk-M5HYHFIV.mjs";
29
29
 
30
30
  // src/cli/commands/auth.ts
31
31
  import {
@@ -253,6 +253,14 @@ async function httpJson(method, url, apiKey, body, timeoutMs = AUTH_HTTP_TIMEOUT
253
253
  }
254
254
  throw lastError instanceof Error ? lastError : new Error(String(lastError));
255
255
  }
256
+ async function readStatusBanner(baseUrl) {
257
+ const response = await httpJson(
258
+ "GET",
259
+ `${baseUrl}/api/v2/status-banner`,
260
+ null
261
+ ).catch(() => null);
262
+ return response?.status === 200 ? response.data.banner ?? null : null;
263
+ }
256
264
  async function reportSetupCompleted(input) {
257
265
  const apiKey = input.authScope === "folder" ? resolveProjectApiKeyForBaseUrl(input.baseUrl) : resolveGlobalApiKeyForBaseUrl(input.baseUrl);
258
266
  if (!apiKey) return;
@@ -615,6 +623,7 @@ async function handleStatus(args) {
615
623
  }
616
624
  let hostStatusPayload = null;
617
625
  const hostLines = [];
626
+ const statusBanner = readStatusBanner(baseUrl);
618
627
  try {
619
628
  const { status: hStatus, data: hData } = await httpJson(
620
629
  "GET",
@@ -626,12 +635,12 @@ async function handleStatus(args) {
626
635
  host: baseUrl,
627
636
  hostStatus: hData.status || "ok",
628
637
  hostVersion: hData.version || "(unknown)",
629
- status_banner: hData.status_banner ?? null
638
+ status_banner: await statusBanner
630
639
  };
631
640
  hostLines.push(`Host: ${baseUrl}`);
632
641
  hostLines.push(`Host status: ${hData.status || "ok"}`);
633
642
  hostLines.push(`Host version: ${hData.version || "(unknown)"}`);
634
- const bannerLine = statusBannerLine(hData.status_banner);
643
+ const bannerLine = statusBannerLine(hostStatusPayload.status_banner);
635
644
  if (bannerLine) hostLines.push(bannerLine);
636
645
  }
637
646
  } catch {
@@ -925,11 +934,13 @@ Examples:
925
934
 
926
935
  export {
927
936
  EXIT_WORKSPACE_MISMATCH,
937
+ statusBannerLine,
928
938
  resolvePendingAuthClaimForResume,
929
939
  readPendingAuthClaim,
930
940
  clearPendingClaim,
931
941
  clearSatisfiedPendingClaim,
932
942
  httpJson,
943
+ readStatusBanner,
933
944
  reportSetupCompleted,
934
945
  handleRegister,
935
946
  handleWait,
@@ -93,7 +93,6 @@ function schemaField(name, node, required) {
93
93
  const example = [
94
94
  schema.example,
95
95
  schema.default,
96
- Array.isArray(schema.enum) ? schema.enum[0] : void 0,
97
96
  type === "string" ? NAMED_EXAMPLES[name.toLowerCase()] : void 0
98
97
  ].find((value) => value !== void 0);
99
98
  return {
@@ -174,6 +173,8 @@ function exampleValue(field) {
174
173
  const value = field.type.slice(RECORD.length).replace(/>( \| null)?$/, "");
175
174
  return { key: exampleValue({ ...field, type: value }) };
176
175
  }
176
+ const literal = /^"(?:[^"\\]|\\.)*"/.exec(field.type);
177
+ if (literal) return JSON.parse(literal[0]);
177
178
  const type = field.type.toLowerCase();
178
179
  if (type.includes("[]")) return [];
179
180
  if (type.startsWith(SHAPE)) {
@@ -237,12 +238,58 @@ function namedShapes(roots) {
237
238
  }
238
239
  return named;
239
240
  }
241
+ function withRowInputs(described) {
242
+ const columns = described.rowInputs;
243
+ if (!columns?.length) return described.inputs;
244
+ const join = (...notes) => notes.filter(Boolean).join(" - ");
245
+ const first = columns[0].name;
246
+ return described.inputs.map((field) => {
247
+ if (field.name === described.csvInput) {
248
+ return {
249
+ ...field,
250
+ type: `CsvInput<${SHAPE}>`,
251
+ fields: columns,
252
+ description: join(
253
+ field.description,
254
+ 'Headers match these names ignoring case, spaces and punctuation ("LinkedIn URL" reads as linked_in_url); map any other header in columns.'
255
+ )
256
+ };
257
+ }
258
+ if (field.name === "columns") {
259
+ return {
260
+ ...field,
261
+ type: SHAPE,
262
+ fields: columns.map(({ name }) => ({
263
+ name,
264
+ type: "string | string[]",
265
+ required: false
266
+ })),
267
+ description: join(
268
+ field.description,
269
+ `Your CSV header for a column, e.g. {"${first}": "My Header"}. CLI: --columns.${first} "My Header"`
270
+ )
271
+ };
272
+ }
273
+ return field;
274
+ });
275
+ }
276
+ function withRowOutputs(described) {
277
+ const columns = described.rowOutputs;
278
+ if (!columns?.length) return described.outputs;
279
+ const typed = (field) => ({
280
+ ...field,
281
+ type: `PlayDataset<${SHAPE}>`,
282
+ fields: columns,
283
+ ...described.rowOutputsAddToSource ? { spread: described.csvInput ?? "source row" } : {}
284
+ });
285
+ return described.outputs.some((field) => field.name === "rows") ? described.outputs.map(
286
+ (field) => field.name === "rows" ? typed(field) : field
287
+ ) : [...described.outputs, typed({ name: "rows", type: "", required: true })];
288
+ }
240
289
  function schemaBlocks(described, maxDepth, everyField = false) {
241
290
  const sections = [
242
- ["Inputs:", described.inputs],
243
- ["CSV columns read from each row:", described.rowInputs ?? []],
244
- ["Outputs:", described.outputs],
245
- ["Columns added to each row:", described.rowOutputs ?? []],
291
+ ["Inputs:", withRowInputs(described)],
292
+ ["Outputs:", withRowOutputs(described)],
246
293
  [
247
294
  "Raw response, as declared (read it from result.toolResponse.rawV2; check one real response for its nesting):",
248
295
  everyField ? described.rawResponse ?? [] : []
@@ -272,13 +319,17 @@ function schemaBlocks(described, maxDepth, everyField = false) {
272
319
  ];
273
320
  }
274
321
  if (depth >= maxDepth || field.summarized && !everyField) {
275
- const names = field.fields.map((child) => child.name).join(", ");
322
+ const names = [
323
+ ...field.spread ? [`...${field.spread}`] : [],
324
+ ...field.fields.map((child) => child.name)
325
+ ].join(", ");
276
326
  return [
277
327
  `${start}${before}{ ${names} }${after},${comment([field.means, field.description])}`
278
328
  ];
279
329
  }
280
330
  return [
281
331
  `${start}${before}{${comment([field.means, field.description])}`,
332
+ ...field.spread ? [`${indent} ...${field.spread},`] : [],
282
333
  ...field.fields.flatMap(
283
334
  (child) => fieldLines(child, `${indent} `, depth + 1)
284
335
  ),
@@ -1,17 +1,17 @@
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
3
 
4
- var _chunk6EYTKUDIjs = require('./chunk-6EYTKUDI.js');
4
+ var _chunkFH3WJOCDjs = require('./chunk-FH3WJOCD.js');
5
5
 
6
6
 
7
7
 
8
- var _chunk47X6MQ7Jjs = require('./chunk-47X6MQ7J.js');
8
+ var _chunkNGYNHAACjs = require('./chunk-NGYNHAAC.js');
9
9
 
10
10
 
11
- var _chunkQSH5CHRIjs = require('./chunk-QSH5CHRI.js');
11
+ var _chunkISVKLCGQjs = require('./chunk-ISVKLCGQ.js');
12
12
 
13
13
 
14
- var _chunkN6KIEYZVjs = require('./chunk-N6KIEYZV.js');
14
+ var _chunkZNGZPKXTjs = require('./chunk-ZNGZPKXT.js');
15
15
 
16
16
  // src/cli/commands/update.ts
17
17
  var _child_process = require('child_process');
@@ -489,7 +489,7 @@ function normalizedNpmPrefix(value) {
489
489
  }
490
490
  function resolveNpmGlobalPrefix(env) {
491
491
  try {
492
- const plan = _chunk47X6MQ7Jjs.resolveShellSpawn.call(void 0, "npm", ["prefix", "-g"], process.platform, env);
492
+ const plan = _chunkNGYNHAACjs.resolveShellSpawn.call(void 0, "npm", ["prefix", "-g"], process.platform, env);
493
493
  const result = _child_process.spawnSync.call(void 0, plan.command, plan.args, {
494
494
  encoding: "utf8",
495
495
  env,
@@ -545,8 +545,8 @@ function resolveUpdatePlan(options = {}) {
545
545
  const npmGlobalPrefix = options.npmGlobalPrefix !== void 0 ? options.npmGlobalPrefix : resolveNpmGlobalPrefix(env);
546
546
  const hasVerifiedNpmOwnership = inferredInstallPrefix !== null && normalizedNpmPrefix(inferredInstallPrefix) === normalizedNpmPrefix(npmGlobalPrefix);
547
547
  const installPrefix = options.requireVerifiedNpmOwnership ? hasVerifiedNpmOwnership ? inferredInstallPrefix : null : inferredInstallPrefix;
548
- const npmVersion = options.npmVersion === void 0 ? _chunk6EYTKUDIjs.readNpmVersion.call(void 0, env) : options.npmVersion;
549
- const npmGlobalInstallFlags = _chunk6EYTKUDIjs.npmSupportsAllowScripts.call(void 0, npmVersion) ? [...NPM_SDK_INSTALL_COMMON_FLAGS, "--allow-scripts=esbuild"] : NPM_SDK_INSTALL_COMMON_FLAGS;
548
+ const npmVersion = options.npmVersion === void 0 ? _chunkFH3WJOCDjs.readNpmVersion.call(void 0, env) : options.npmVersion;
549
+ const npmGlobalInstallFlags = _chunkFH3WJOCDjs.npmSupportsAllowScripts.call(void 0, npmVersion) ? [...NPM_SDK_INSTALL_COMMON_FLAGS, "--allow-scripts=esbuild"] : NPM_SDK_INSTALL_COMMON_FLAGS;
550
550
  const args = installPrefix ? [
551
551
  "install",
552
552
  "-g",
@@ -556,7 +556,7 @@ function resolveUpdatePlan(options = {}) {
556
556
  packageSpec
557
557
  ] : ["install", "-g", ...npmGlobalInstallFlags, packageSpec];
558
558
  const fallbackRegistryUrl = options.npmFallbackRegistryUrl !== void 0 ? options.npmFallbackRegistryUrl : publicNpmFallbackRegistryUrl(
559
- _optionalChain([env, 'access', _18 => _18.DEEPLINE_HOST_URL, 'optionalAccess', _19 => _19.trim, 'call', _20 => _20()]) || _chunkN6KIEYZVjs.autoDetectBaseUrl.call(void 0, )
559
+ _optionalChain([env, 'access', _18 => _18.DEEPLINE_HOST_URL, 'optionalAccess', _19 => _19.trim, 'call', _20 => _20()]) || _chunkZNGZPKXTjs.autoDetectBaseUrl.call(void 0, )
560
560
  );
561
561
  return {
562
562
  kind: "npm-global",
@@ -703,7 +703,7 @@ function sidecarInstallFailure(versionDir) {
703
703
  function runCommand(command, args, env = process.env) {
704
704
  return new Promise((resolveResult) => {
705
705
  let output = "";
706
- const plan = _chunk47X6MQ7Jjs.resolveShellSpawn.call(void 0, command, args, process.platform, env);
706
+ const plan = _chunkNGYNHAACjs.resolveShellSpawn.call(void 0, command, args, process.platform, env);
707
707
  const child = _child_process.spawn.call(void 0, plan.command, plan.args, {
708
708
  stdio: ["inherit", "pipe", "pipe"],
709
709
  shell: plan.shell,
@@ -1079,14 +1079,14 @@ async function publishedVersionSupportsPin(version, fallbackRegistryUrl) {
1079
1079
  throw _nullishCoalesce(lastError, () => ( new Error("No npm registry was available")));
1080
1080
  }
1081
1081
  async function runUpdateCommand(options, dependencies = {}) {
1082
- const detectBaseUrl = _nullishCoalesce(dependencies.detectBaseUrl, () => ( _chunkN6KIEYZVjs.autoDetectBaseUrl));
1082
+ const detectBaseUrl = _nullishCoalesce(dependencies.detectBaseUrl, () => ( _chunkZNGZPKXTjs.autoDetectBaseUrl));
1083
1083
  const resolvePlan = _nullishCoalesce(dependencies.resolvePlan, () => ( resolveUpdatePlan));
1084
1084
  const runPlan = _nullishCoalesce(dependencies.runPlan, () => ( runUpdatePlan));
1085
1085
  const syncSkills = _nullishCoalesce(dependencies.syncSkillsIfNeeded, () => ( (async () => {
1086
1086
  const originalWrite = process.stdout.write.bind(process.stdout);
1087
1087
  process.stdout.write = (() => true);
1088
1088
  try {
1089
- const exitCode = await _chunk47X6MQ7Jjs.runSkillsCommand.call(void 0, { json: true });
1089
+ const exitCode = await _chunkNGYNHAACjs.runSkillsCommand.call(void 0, { json: true });
1090
1090
  if (exitCode !== 0) {
1091
1091
  throw new Error(
1092
1092
  `Deepline skills update failed with exit ${exitCode}.`
@@ -1157,11 +1157,11 @@ async function runUpdateCommand(options, dependencies = {}) {
1157
1157
  ]
1158
1158
  };
1159
1159
  if (options.json && !options.executeWithJson) {
1160
- _chunkQSH5CHRIjs.printCommandEnvelope.call(void 0, { ...plan, render }, { json: true });
1160
+ _chunkISVKLCGQjs.printCommandEnvelope.call(void 0, { ...plan, render }, { json: true });
1161
1161
  return 0;
1162
1162
  }
1163
1163
  if (options.printCommand) {
1164
- _chunkQSH5CHRIjs.printCommandEnvelope.call(void 0,
1164
+ _chunkISVKLCGQjs.printCommandEnvelope.call(void 0,
1165
1165
  {
1166
1166
  ...plan,
1167
1167
  render: {
@@ -1174,7 +1174,7 @@ async function runUpdateCommand(options, dependencies = {}) {
1174
1174
  return 0;
1175
1175
  }
1176
1176
  if (plan.kind === "source" || plan.kind === "homebrew") {
1177
- _chunkQSH5CHRIjs.printCommandEnvelope.call(void 0, { ...plan, render }, { json: false });
1177
+ _chunkISVKLCGQjs.printCommandEnvelope.call(void 0, { ...plan, render }, { json: false });
1178
1178
  return 0;
1179
1179
  }
1180
1180
  stderr.write(`Updating Deepline SDK/CLI with: ${plan.manualCommand}
@@ -1204,7 +1204,7 @@ To retry with full installer output, run: deepline skills
1204
1204
  );
1205
1205
  }
1206
1206
  if (options.executeWithJson && options.json) {
1207
- _chunkQSH5CHRIjs.printCommandEnvelope.call(void 0,
1207
+ _chunkISVKLCGQjs.printCommandEnvelope.call(void 0,
1208
1208
  {
1209
1209
  ok: true,
1210
1210
  pinnedVersion
@@ -1,10 +1,10 @@
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
3
 
4
- var _chunkQSH5CHRIjs = require('./chunk-QSH5CHRI.js');
4
+ var _chunkISVKLCGQjs = require('./chunk-ISVKLCGQ.js');
5
5
 
6
6
 
7
- var _chunkN6KIEYZVjs = require('./chunk-N6KIEYZV.js');
7
+ var _chunkZNGZPKXTjs = require('./chunk-ZNGZPKXT.js');
8
8
 
9
9
  // src/cli/commands/sessions.ts
10
10
 
@@ -139,7 +139,7 @@ function currentSessionFile(agent) {
139
139
  const newestFirst = listSessionFiles(agent).sort(
140
140
  (a, b) => b.mtimeMs - a.mtimeMs
141
141
  );
142
- const sessionId = _chunkN6KIEYZVjs.agentSessionIdFromEnvironment.call(void 0, );
142
+ const sessionId = _chunkZNGZPKXTjs.agentSessionIdFromEnvironment.call(void 0, );
143
143
  const cwd = process.cwd();
144
144
  return _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(newestFirst.find((candidate) => candidate.sessionId === sessionId), () => ( newestFirst.find(
145
145
  (candidate) => sessionStartedInDirectory(candidate, cwd)
@@ -448,7 +448,7 @@ function buildSessionUploadContent(raw) {
448
448
  return { encodedContent: encoded, needsChunking: true };
449
449
  }
450
450
  async function uploadPayload(path, payload) {
451
- const { http } = _chunkQSH5CHRIjs.getAuthedHttpClient.call(void 0, );
451
+ const { http } = _chunkISVKLCGQjs.getAuthedHttpClient.call(void 0, );
452
452
  return await http.post(path, payload);
453
453
  }
454
454
  async function uploadChunkedSessions(sessions, options) {
@@ -481,7 +481,7 @@ async function uploadChunkedSessions(sessions, options) {
481
481
  ...options.rating ? { rating: options.rating } : {}
482
482
  });
483
483
  const sessionIds = sessions.map((session) => session.sessionId);
484
- _chunkQSH5CHRIjs.printCommandEnvelope.call(void 0,
484
+ _chunkISVKLCGQjs.printCommandEnvelope.call(void 0,
485
485
  {
486
486
  ...response,
487
487
  ok: true,
@@ -513,7 +513,7 @@ async function handleSessionsSend(options) {
513
513
  filename: _path.basename.call(void 0, filePath),
514
514
  ...rating ? { rating } : {}
515
515
  });
516
- _chunkQSH5CHRIjs.printCommandEnvelope.call(void 0,
516
+ _chunkISVKLCGQjs.printCommandEnvelope.call(void 0,
517
517
  {
518
518
  ...response2,
519
519
  ok: true,
@@ -563,7 +563,7 @@ async function handleSessionsSend(options) {
563
563
  ...rating ? { rating } : {}
564
564
  });
565
565
  const sessionIds = built.map((session) => session.sessionId);
566
- _chunkQSH5CHRIjs.printCommandEnvelope.call(void 0,
566
+ _chunkISVKLCGQjs.printCommandEnvelope.call(void 0,
567
567
  {
568
568
  ...response,
569
569
  ok: true,
@@ -671,7 +671,7 @@ ${refreshMeta}
671
671
  </body>
672
672
  </html>`;
673
673
  _fs.writeFileSync.call(void 0, outputPath, html, "utf8");
674
- _chunkQSH5CHRIjs.printCommandEnvelope.call(void 0,
674
+ _chunkISVKLCGQjs.printCommandEnvelope.call(void 0,
675
675
  {
676
676
  ok: true,
677
677
  file: outputPath,
@@ -93,7 +93,6 @@ function schemaField(name, node, required) {
93
93
  const example = [
94
94
  schema.example,
95
95
  schema.default,
96
- Array.isArray(schema.enum) ? schema.enum[0] : void 0,
97
96
  type === "string" ? NAMED_EXAMPLES[name.toLowerCase()] : void 0
98
97
  ].find((value) => value !== void 0);
99
98
  return {
@@ -174,6 +173,8 @@ function exampleValue(field) {
174
173
  const value = field.type.slice(RECORD.length).replace(/>( \| null)?$/, "");
175
174
  return { key: exampleValue({ ...field, type: value }) };
176
175
  }
176
+ const literal = /^"(?:[^"\\]|\\.)*"/.exec(field.type);
177
+ if (literal) return JSON.parse(literal[0]);
177
178
  const type = field.type.toLowerCase();
178
179
  if (type.includes("[]")) return [];
179
180
  if (type.startsWith(SHAPE)) {
@@ -237,12 +238,58 @@ function namedShapes(roots) {
237
238
  }
238
239
  return named;
239
240
  }
241
+ function withRowInputs(described) {
242
+ const columns = described.rowInputs;
243
+ if (!_optionalChain([columns, 'optionalAccess', _ => _.length])) return described.inputs;
244
+ const join = (...notes) => notes.filter(Boolean).join(" - ");
245
+ const first = columns[0].name;
246
+ return described.inputs.map((field) => {
247
+ if (field.name === described.csvInput) {
248
+ return {
249
+ ...field,
250
+ type: `CsvInput<${SHAPE}>`,
251
+ fields: columns,
252
+ description: join(
253
+ field.description,
254
+ 'Headers match these names ignoring case, spaces and punctuation ("LinkedIn URL" reads as linked_in_url); map any other header in columns.'
255
+ )
256
+ };
257
+ }
258
+ if (field.name === "columns") {
259
+ return {
260
+ ...field,
261
+ type: SHAPE,
262
+ fields: columns.map(({ name }) => ({
263
+ name,
264
+ type: "string | string[]",
265
+ required: false
266
+ })),
267
+ description: join(
268
+ field.description,
269
+ `Your CSV header for a column, e.g. {"${first}": "My Header"}. CLI: --columns.${first} "My Header"`
270
+ )
271
+ };
272
+ }
273
+ return field;
274
+ });
275
+ }
276
+ function withRowOutputs(described) {
277
+ const columns = described.rowOutputs;
278
+ if (!_optionalChain([columns, 'optionalAccess', _2 => _2.length])) return described.outputs;
279
+ const typed = (field) => ({
280
+ ...field,
281
+ type: `PlayDataset<${SHAPE}>`,
282
+ fields: columns,
283
+ ...described.rowOutputsAddToSource ? { spread: _nullishCoalesce(described.csvInput, () => ( "source row")) } : {}
284
+ });
285
+ return described.outputs.some((field) => field.name === "rows") ? described.outputs.map(
286
+ (field) => field.name === "rows" ? typed(field) : field
287
+ ) : [...described.outputs, typed({ name: "rows", type: "", required: true })];
288
+ }
240
289
  function schemaBlocks(described, maxDepth, everyField = false) {
241
290
  const sections = [
242
- ["Inputs:", described.inputs],
243
- ["CSV columns read from each row:", _nullishCoalesce(described.rowInputs, () => ( []))],
244
- ["Outputs:", described.outputs],
245
- ["Columns added to each row:", _nullishCoalesce(described.rowOutputs, () => ( []))],
291
+ ["Inputs:", withRowInputs(described)],
292
+ ["Outputs:", withRowOutputs(described)],
246
293
  [
247
294
  "Raw response, as declared (read it from result.toolResponse.rawV2; check one real response for its nesting):",
248
295
  everyField ? _nullishCoalesce(described.rawResponse, () => ( [])) : []
@@ -272,13 +319,17 @@ function schemaBlocks(described, maxDepth, everyField = false) {
272
319
  ];
273
320
  }
274
321
  if (depth >= maxDepth || field.summarized && !everyField) {
275
- const names = field.fields.map((child) => child.name).join(", ");
322
+ const names = [
323
+ ...field.spread ? [`...${field.spread}`] : [],
324
+ ...field.fields.map((child) => child.name)
325
+ ].join(", ");
276
326
  return [
277
327
  `${start}${before}{ ${names} }${after},${comment([field.means, field.description])}`
278
328
  ];
279
329
  }
280
330
  return [
281
331
  `${start}${before}{${comment([field.means, field.description])}`,
332
+ ...field.spread ? [`${indent} ...${field.spread},`] : [],
282
333
  ...field.fields.flatMap(
283
334
  (child) => fieldLines(child, `${indent} `, depth + 1)
284
335
  ),
@@ -368,7 +419,7 @@ function schemaLines(described, view) {
368
419
  ];
369
420
  }
370
421
  if (view.full) return schemaBlocks(described, Infinity, true);
371
- const raw = _optionalChain([described, 'access', _ => _.rawResponse, 'optionalAccess', _2 => _2.length]) ? [
422
+ const raw = _optionalChain([described, 'access', _3 => _3.rawResponse, 'optionalAccess', _4 => _4.length]) ? [
372
423
  "",
373
424
  `Other response fields (${described.rawResponse.map((field) => field.name).join(", ")}) are in result.toolResponse.rawV2. --full-schema lists them.`
374
425
  ] : [];
@@ -493,15 +544,15 @@ function jsonFields(fields, options) {
493
544
  return [
494
545
  field.name,
495
546
  {
496
- type: field.type.replace(SHAPE, _nullishCoalesce(_optionalChain([shape, 'optionalAccess', _3 => _3.name]), () => ( "object"))),
547
+ type: field.type.replace(SHAPE, _nullishCoalesce(_optionalChain([shape, 'optionalAccess', _5 => _5.name]), () => ( "object"))),
497
548
  ...options.input ? { required: field.required } : {},
498
549
  ...field.means ? { means: field.means } : {},
499
550
  ...field.example !== void 0 ? { example: field.example } : {},
500
- ...field.description && field.description !== _optionalChain([shape, 'optionalAccess', _4 => _4.description]) ? { description: field.description } : {},
551
+ ...field.description && field.description !== _optionalChain([shape, 'optionalAccess', _6 => _6.description]) ? { description: field.description } : {},
501
552
  ...field.secondary ? { secondary: true } : {},
502
553
  ...field.read ? { read: field.read } : {},
503
554
  ...field.in ? { in: field.in } : {},
504
- ..._optionalChain([field, 'access', _5 => _5.paths, 'optionalAccess', _6 => _6.length]) ? { paths: field.paths } : {},
555
+ ..._optionalChain([field, 'access', _7 => _7.paths, 'optionalAccess', _8 => _8.length]) ? { paths: field.paths } : {},
505
556
  ...field.fields && !shape ? { fields: jsonFields(field.fields, options) } : {}
506
557
  }
507
558
  ];
@@ -522,7 +573,7 @@ function describedJson(described, view) {
522
573
  const used = /* @__PURE__ */ new Set();
523
574
  const blocks = Object.fromEntries(
524
575
  sections.flatMap(
525
- ([key, fields, input]) => _optionalChain([fields, 'optionalAccess', _7 => _7.length]) ? [
576
+ ([key, fields, input]) => _optionalChain([fields, 'optionalAccess', _9 => _9.length]) ? [
526
577
  [
527
578
  key,
528
579
  jsonFields(fields, {
@@ -556,7 +607,7 @@ function describedJson(described, view) {
556
607
  ...described.cost ? { cost: described.cost } : {},
557
608
  ...described.rateLimit ? { rateLimit: described.rateLimit } : {},
558
609
  ...described.byok ? { byok: described.byok } : {},
559
- ..._optionalChain([described, 'access', _8 => _8.features, 'optionalAccess', _9 => _9.length]) ? { features: described.features } : {},
610
+ ..._optionalChain([described, 'access', _10 => _10.features, 'optionalAccess', _11 => _11.length]) ? { features: described.features } : {},
560
611
  ...described.guidance.length ? { guidance: described.guidance } : {},
561
612
  ...blocks,
562
613
  ...used.size ? { types } : {},
@@ -14,7 +14,7 @@ var _chunkXNYIZMNQjs = require('./chunk-XNYIZMNQ.js');
14
14
  var _chunk7P5AA3SNjs = require('./chunk-7P5AA3SN.js');
15
15
 
16
16
 
17
- var _chunk7ZZSGV4Ajs = require('./chunk-7ZZSGV4A.js');
17
+ var _chunkLHBPC7PZjs = require('./chunk-LHBPC7PZ.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 = _chunk7ZZSGV4Ajs.SDK_RELEASE.version;
747
- var SDK_API_MAJOR = _chunk7ZZSGV4Ajs.SDK_RELEASE.contracts.api.currentMajor;
748
- var SDK_API_CONTRACT = _nullishCoalesce(_chunk7ZZSGV4Ajs.SDK_RELEASE.contracts.api.legacyWireIds[0], () => ( `api-v${SDK_API_MAJOR}`));
746
+ var SDK_VERSION = _chunkLHBPC7PZjs.SDK_RELEASE.version;
747
+ var SDK_API_MAJOR = _chunkLHBPC7PZjs.SDK_RELEASE.contracts.api.currentMajor;
748
+ var SDK_API_CONTRACT = _nullishCoalesce(_chunkLHBPC7PZjs.SDK_RELEASE.contracts.api.legacyWireIds[0], () => ( `api-v${SDK_API_MAJOR}`));
749
749
 
750
750
  // src/agent-runtime.ts
751
751
 
@@ -3,11 +3,11 @@
3
3
 
4
4
 
5
5
 
6
- var _chunk4WINCNNHjs = require('./chunk-4WINCNNH.js');
6
+ var _chunkHXENYWVSjs = require('./chunk-HXENYWVS.js');
7
7
  require('./chunk-COGTRVWW.js');
8
8
 
9
9
 
10
10
 
11
11
 
12
12
 
13
- exports.COMMAND_DOCS = _chunk4WINCNNHjs.COMMAND_DOCS; exports.commandDocKey = _chunk4WINCNNHjs.commandDocKey; exports.helpDetailFromArgv = _chunk4WINCNNHjs.helpDetailFromArgv; exports.renderCommandExplanation = _chunk4WINCNNHjs.renderCommandExplanation;
13
+ exports.COMMAND_DOCS = _chunkHXENYWVSjs.COMMAND_DOCS; exports.commandDocKey = _chunkHXENYWVSjs.commandDocKey; exports.helpDetailFromArgv = _chunkHXENYWVSjs.helpDetailFromArgv; exports.renderCommandExplanation = _chunkHXENYWVSjs.renderCommandExplanation;
@@ -3,7 +3,7 @@ import {
3
3
  commandDocKey,
4
4
  helpDetailFromArgv,
5
5
  renderCommandExplanation
6
- } from "./chunk-FWF24ULX.mjs";
6
+ } from "./chunk-HVDBGPDP.mjs";
7
7
  import "./chunk-KRD6H754.mjs";
8
8
  export {
9
9
  COMMAND_DOCS,
@@ -4,11 +4,11 @@ import {
4
4
  printCommandEnvelope,
5
5
  printJson,
6
6
  readCsvRows
7
- } from "./chunk-MHRDXS7J.mjs";
8
- import "./chunk-HDB4GAWY.mjs";
7
+ } from "./chunk-KTZFOS57.mjs";
8
+ import "./chunk-M5HYHFIV.mjs";
9
9
  import "./chunk-DLIRSHV6.mjs";
10
10
  import "./chunk-NXGCO4JB.mjs";
11
- import "./chunk-7LX2G2PU.mjs";
11
+ import "./chunk-FJ3JEYFJ.mjs";
12
12
  import "./chunk-WZYKRD7T.mjs";
13
13
  import "./chunk-KRD6H754.mjs";
14
14
 
@@ -4,11 +4,11 @@
4
4
 
5
5
 
6
6
 
7
- var _chunkQSH5CHRIjs = require('./chunk-QSH5CHRI.js');
8
- require('./chunk-N6KIEYZV.js');
7
+ var _chunkISVKLCGQjs = require('./chunk-ISVKLCGQ.js');
8
+ require('./chunk-ZNGZPKXT.js');
9
9
  require('./chunk-XNYIZMNQ.js');
10
10
  require('./chunk-7P5AA3SN.js');
11
- require('./chunk-7ZZSGV4A.js');
11
+ require('./chunk-LHBPC7PZ.js');
12
12
  require('./chunk-OG64RBAC.js');
13
13
  require('./chunk-COGTRVWW.js');
14
14
 
@@ -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 : _chunkQSH5CHRIjs.clip.call(void 0, value, 42)).length;
129
+ return (verbose ? value : _chunkISVKLCGQjs.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 : _chunkQSH5CHRIjs.clip.call(void 0, raw, 42);
139
+ const display = verbose ? raw : _chunkISVKLCGQjs.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 = _chunkQSH5CHRIjs.readCsvRows.call(void 0, csvPath);
159
+ const allRows = _chunkISVKLCGQjs.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
- _chunkQSH5CHRIjs.printJson.call(void 0, {
172
+ _chunkISVKLCGQjs.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(_chunkQSH5CHRIjs.csvStringFromRows.call(void 0, displayRows));
181
+ process.stdout.write(_chunkISVKLCGQjs.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
- _chunkQSH5CHRIjs.printJson.call(void 0, {
196
+ _chunkISVKLCGQjs.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
- ${_chunkQSH5CHRIjs.clip.call(void 0, log, 2e3)}`;
439
+ ${_chunkISVKLCGQjs.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
- _chunkQSH5CHRIjs.printCommandEnvelope.call(void 0, payload, {
490
+ _chunkISVKLCGQjs.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
- _chunkQSH5CHRIjs.printCommandEnvelope.call(void 0, payload, { json: options.json, text });
526
+ _chunkISVKLCGQjs.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"));