deepline 0.3.311 → 0.3.313

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 (114) hide show
  1. package/dist/bundling-sources/sdk/src/play.ts +7 -1
  2. package/dist/bundling-sources/sdk/src/release.ts +1 -1
  3. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/postgres.ts +159 -61
  4. package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/run-ledger-outbox-recovery.ts +11 -6
  5. package/dist/bundling-sources/shared_libs/plays/authoring-contract.ts +23 -1
  6. package/dist/bundling-sources/shared_libs/plays/core.ts +7 -1
  7. package/dist/bundling-sources/shared_libs/plays/settings-contract.ts +29 -3
  8. package/dist/cli/auth-56NYRTQK.js +31 -0
  9. package/dist/cli/{auth-2A7OYHFJ.mjs → auth-LNA6WCQA.mjs} +4 -4
  10. package/dist/cli/{billing-P7GIAP3U.mjs → billing-D37QNIE3.mjs} +5 -5
  11. package/dist/cli/{billing-2PQ4VDRR.js → billing-GJJUUCOZ.js} +71 -71
  12. package/dist/cli/{chunk-DUEHAEPM.mjs → chunk-3ZC4PHJ6.mjs} +1 -1
  13. package/dist/cli/{chunk-LRI2FQF2.js → chunk-4UXNEC5C.js} +26 -26
  14. package/dist/cli/{tools-WN7T25LW.js → chunk-6G7ZYA6E.js} +231 -87
  15. package/dist/cli/chunk-76VKBPOC.mjs +406 -0
  16. package/dist/cli/{chunk-HOCPOTDX.mjs → chunk-BLMO3JMZ.mjs} +2 -2
  17. package/dist/cli/{play-SOG5Q2GE.mjs → chunk-BS4GAUMH.mjs} +166 -90
  18. package/dist/cli/{chunk-SPUTBCUR.mjs → chunk-CSH4PKPJ.mjs} +1 -1
  19. package/dist/cli/{chunk-Q3LYQTSO.mjs → chunk-DOI3UBGV.mjs} +1 -1
  20. package/dist/cli/{chunk-GCX3343L.js → chunk-FJUIXWZF.js} +48 -48
  21. package/dist/cli/{chunk-RNJ74JDH.js → chunk-FSZTWQFK.js} +4 -4
  22. package/dist/cli/{chunk-XDUQQTIS.js → chunk-GQXEHX5X.js} +6 -6
  23. package/dist/cli/{chunk-SGTSJCOA.mjs → chunk-HM2TSTCT.mjs} +1 -1
  24. package/dist/cli/{chunk-FYPZ43Y4.js → chunk-HY2SSFRI.js} +1 -1
  25. package/dist/cli/{chunk-7TT4LZIR.js → chunk-I4FHFGMA.js} +60 -60
  26. package/dist/cli/{chunk-W7INSYJS.js → chunk-IALPYID6.js} +3 -3
  27. package/dist/cli/{chunk-VODJJUKE.js → chunk-JG2ZTDZV.js} +15 -15
  28. package/dist/cli/{chunk-5IBHISKA.js → chunk-KNGTN7NE.js} +6 -6
  29. package/dist/cli/{chunk-QO3GH6UP.js → chunk-MHETTUWR.js} +2 -2
  30. package/dist/cli/{chunk-TBX7AA7Y.mjs → chunk-N2DXWS6W.mjs} +2 -2
  31. package/dist/cli/{chunk-WB6Z2Q44.mjs → chunk-N5V2SBB2.mjs} +19 -1
  32. package/dist/cli/{chunk-ZDO3TO3M.js → chunk-OJ243ZA5.js} +19 -1
  33. package/dist/cli/{chunk-QJA6SJHA.mjs → chunk-OTA5C7DD.mjs} +1 -1
  34. package/dist/cli/{play-BCMGFYTF.js → chunk-P4N7233B.js} +342 -266
  35. package/dist/cli/{chunk-4WFNAWVO.mjs → chunk-QCXDLOGA.mjs} +2 -2
  36. package/dist/cli/{chunk-IB7OGQGH.js → chunk-QQMKX7JW.js} +29 -9
  37. package/dist/cli/{chunk-ICZB4GTY.mjs → chunk-RDUS2EDE.mjs} +23 -3
  38. package/dist/cli/{tools-G4HGCHNQ.mjs → chunk-UQBMMN4U.mjs} +180 -36
  39. package/dist/cli/{chunk-4NIQA6S7.mjs → chunk-US4S3E4Y.mjs} +1 -1
  40. package/dist/cli/{chunk-QYL5ZV4U.js → chunk-VSAYSOVC.js} +6 -6
  41. package/dist/cli/{chunk-G3QP2WYR.mjs → chunk-XFEPRIW7.mjs} +4 -4
  42. package/dist/cli/chunk-XNL3SEMC.js +406 -0
  43. package/dist/cli/{chunk-5OVNL6LS.mjs → chunk-YZ5PP6TX.mjs} +1 -1
  44. package/dist/cli/{client-PNLDT2M3.mjs → client-6RVRZ4OY.mjs} +3 -3
  45. package/dist/cli/client-XUTMYJDL.js +20 -0
  46. package/dist/cli/{csv-L5DN7F45.js → csv-2UHRG67O.js} +12 -12
  47. package/dist/cli/{csv-KUAATBZQ.mjs → csv-SBOHBKEG.mjs} +3 -3
  48. package/dist/cli/{db-WZOD6NP5.mjs → db-TUFTPYEA.mjs} +4 -4
  49. package/dist/cli/{db-6NIH4KTZ.js → db-VRE7CLIQ.js} +20 -20
  50. package/dist/cli/describe-GS5A2XH4.js +236 -0
  51. package/dist/cli/describe-WCBZTSOF.mjs +236 -0
  52. package/dist/cli/{executions-TQ5WRHDS.js → executions-ENMOOKWH.js} +6 -6
  53. package/dist/cli/{executions-RDDXGT2Y.mjs → executions-UTN3O372.mjs} +4 -4
  54. package/dist/cli/{feedback-NYKLEQB6.js → feedback-BLN6SIRG.js} +6 -6
  55. package/dist/cli/{feedback-ZB4WKBSS.mjs → feedback-PXBA3AG7.mjs} +3 -3
  56. package/dist/cli/git-26D3VD2I.js +23 -0
  57. package/dist/cli/{git-E6DKAX3X.mjs → git-YDMIRW3Q.mjs} +4 -4
  58. package/dist/cli/index.js +82 -78
  59. package/dist/cli/index.mjs +45 -41
  60. package/dist/cli/{legacy-noops-26Y5NSU6.js → legacy-noops-CWTUWTDB.js} +7 -7
  61. package/dist/cli/{legacy-noops-25B7JCOZ.mjs → legacy-noops-OVG2SICQ.mjs} +4 -4
  62. package/dist/cli/{monitors-WRTHO7DT.mjs → monitors-ATIDXJA4.mjs} +7 -7
  63. package/dist/cli/{monitors-L3GFT4MG.js → monitors-T63OPBTY.js} +88 -88
  64. package/dist/cli/{org-BNCTGPWF.js → org-7RVAPMRN.js} +60 -60
  65. package/dist/cli/{org-ZTHOFVEO.mjs → org-NXKNIM3H.mjs} +4 -4
  66. package/dist/cli/play-B62OVHD4.mjs +152 -0
  67. package/dist/cli/play-WM3NZVE7.js +152 -0
  68. package/dist/cli/{providers-MLOKTD6O.js → providers-EITVEGXD.js} +7 -7
  69. package/dist/cli/{providers-SLAPPVMU.mjs → providers-U7B7JEYY.mjs} +4 -4
  70. package/dist/cli/{quickstart-IWJLGET3.js → quickstart-G64F2XRU.js} +5 -5
  71. package/dist/cli/{quickstart-LZRKZLNQ.mjs → quickstart-VSWTYNJM.mjs} +3 -3
  72. package/dist/cli/{search-RCDGSNWW.mjs → search-SKYTFKKF.mjs} +13 -5
  73. package/dist/cli/search-TXQJJQWY.js +26 -0
  74. package/dist/cli/{secrets-GDPYV6OC.mjs → secrets-4DNS7KWS.mjs} +4 -4
  75. package/dist/cli/{secrets-24KEMSCU.js → secrets-JSFHSCGM.js} +13 -13
  76. package/dist/cli/{sessions-ST5XQQZN.mjs → sessions-HB7RQ4XN.mjs} +4 -4
  77. package/dist/cli/{sessions-QOUUGVP3.js → sessions-MLTYPPCG.js} +5 -5
  78. package/dist/cli/{settings-4XWDMAA2.js → settings-3PCKNBPU.js} +74 -74
  79. package/dist/cli/{settings-V6Z775TO.mjs → settings-BT5WCU65.mjs} +7 -7
  80. package/dist/cli/{setup-QPZLP25U.mjs → setup-EIWDTMCK.mjs} +6 -6
  81. package/dist/cli/{setup-W7SPZTUL.js → setup-EYZWTDJI.js} +41 -41
  82. package/dist/cli/skills-73T4BSDE.js +28 -0
  83. package/dist/cli/{skills-QG22R2EI.mjs → skills-AQ3ORN2C.mjs} +4 -4
  84. package/dist/cli/tools-OFTB2BGP.mjs +38 -0
  85. package/dist/cli/tools-ZGSOHWBY.js +38 -0
  86. package/dist/cli/{update-5PSYBGVU.mjs → update-ERQTFSAR.mjs} +6 -6
  87. package/dist/cli/update-L4V5TF7I.js +28 -0
  88. package/dist/cli/{workflow-ZEQ46MGG.js → workflow-6D6NHUH4.js} +16 -16
  89. package/dist/cli/{workflow-EK7DV4AQ.mjs → workflow-SRLWGGBM.mjs} +6 -6
  90. package/dist/{client-DpnkGBn-.d.mts → client-CtVdLZux.d.mts} +21 -4
  91. package/dist/{client-ypdBvf1o.d.ts → client-OBwghxPC.d.ts} +21 -4
  92. package/dist/{compiler-manifest-qtTNYvBl.d.ts → compiler-manifest-wOKNiXpa.d.mts} +21 -0
  93. package/dist/{compiler-manifest-qtTNYvBl.d.mts → compiler-manifest-wOKNiXpa.d.ts} +21 -0
  94. package/dist/index.d.mts +4 -4
  95. package/dist/index.d.ts +4 -4
  96. package/dist/index.js +13 -10
  97. package/dist/index.mjs +16 -13
  98. package/dist/install-integrity.json +84 -76
  99. package/dist/plays/bundle-play-file.d.mts +2 -2
  100. package/dist/plays/bundle-play-file.d.ts +2 -2
  101. package/dist/plays/bundle-play-file.mjs +2 -2
  102. package/dist/plays/run-request.d.mts +2 -2
  103. package/dist/plays/run-request.d.ts +2 -2
  104. package/dist/release.d.mts +1 -1
  105. package/dist/release.d.ts +1 -1
  106. package/dist/release.js +2 -2
  107. package/dist/release.mjs +1 -1
  108. package/package.json +1 -1
  109. package/dist/cli/auth-66JFXP6C.js +0 -31
  110. package/dist/cli/client-ADWRS22F.js +0 -20
  111. package/dist/cli/git-E56KOYJR.js +0 -23
  112. package/dist/cli/search-6FBDSA3K.js +0 -18
  113. package/dist/cli/skills-WKOQBJY7.js +0 -28
  114. package/dist/cli/update-WKVCWGYY.js +0 -28
@@ -1,13 +1,17 @@
1
1
  import {
2
- handleDeploymentGet,
3
- handleDeploymentsList
4
- } from "./chunk-4WFNAWVO.mjs";
2
+ addDescribeOptions,
3
+ schemaFields
4
+ } from "./chunk-76VKBPOC.mjs";
5
5
  import {
6
6
  parseCsvDataInput
7
7
  } from "./chunk-EDWJY6T4.mjs";
8
8
  import {
9
9
  registerDeprecatedSearchCommand
10
- } from "./chunk-ICZB4GTY.mjs";
10
+ } from "./chunk-RDUS2EDE.mjs";
11
+ import {
12
+ handleDeploymentGet,
13
+ handleDeploymentsList
14
+ } from "./chunk-QCXDLOGA.mjs";
11
15
  import {
12
16
  PLAY_BOOTSTRAP_COMPANY_PROVIDER_CATEGORY,
13
17
  PLAY_BOOTSTRAP_OUTPUT_FIELD_BY_FINDER,
@@ -30,7 +34,7 @@ import {
30
34
  normalizeRunEventOperationRequest,
31
35
  parseLogLevel,
32
36
  playInputExampleArgs
33
- } from "./chunk-5OVNL6LS.mjs";
37
+ } from "./chunk-YZ5PP6TX.mjs";
34
38
  import {
35
39
  CSV_DATA_INPUT_KEY,
36
40
  buildNamedPlayRunRequest,
@@ -62,12 +66,10 @@ import {
62
66
  printJson,
63
67
  printJsonError,
64
68
  renderCommandEnvelopeText
65
- } from "./chunk-SPUTBCUR.mjs";
69
+ } from "./chunk-CSH4PKPJ.mjs";
66
70
  import {
67
71
  fetchWithDeploymentProtection
68
- } from "./chunk-Q3LYQTSO.mjs";
69
- import "./chunk-DLIRSHV6.mjs";
70
- import "./chunk-SGTSJCOA.mjs";
72
+ } from "./chunk-DOI3UBGV.mjs";
71
73
  import {
72
74
  PLAY_DEFAULT_EXPORT,
73
75
  extractDefinedPlayName,
@@ -75,14 +77,10 @@ import {
75
77
  listPlayFileExports,
76
78
  parsePlaySourceForAnalysis,
77
79
  resolveEnabledExecutionProfile
78
- } from "./chunk-4NIQA6S7.mjs";
79
- import "./chunk-H7HIDGZ7.mjs";
80
- import "./chunk-WB6Z2Q44.mjs";
81
- import "./chunk-6IKARAYD.mjs";
80
+ } from "./chunk-US4S3E4Y.mjs";
82
81
  import {
83
82
  DeeplineError
84
83
  } from "./chunk-NXGCO4JB.mjs";
85
- import "./chunk-WZYKRD7T.mjs";
86
84
  import {
87
85
  __commonJS,
88
86
  __toESM
@@ -1917,6 +1915,7 @@ function displayPlayPath(path, ownerName) {
1917
1915
  ...path?.folders ?? []
1918
1916
  ].join(" / ");
1919
1917
  }
1918
+ var playDisplayNameSchema = z.string().trim().nullable().transform((value) => value || null);
1920
1919
  var PLAY_SETTING_FIELDS = {
1921
1920
  path: {
1922
1921
  schema: playPathSchema.default(null).describe(
@@ -1937,9 +1936,26 @@ var PLAY_SETTING_FIELDS = {
1937
1936
  "null"
1938
1937
  ],
1939
1938
  parse: (value) => value === "null" ? null : parsePlayPath(value),
1940
- format: formatPlayPath
1939
+ format: (value) => formatPlayPath(playPathSchema.parse(value))
1941
1940
  },
1942
1941
  ui: { control: "play-location-picker" }
1942
+ },
1943
+ displayName: {
1944
+ schema: playDisplayNameSchema.default(null).describe(
1945
+ "Optional human-readable Play name. Null uses the name derived from the identifier."
1946
+ ),
1947
+ label: "Display name",
1948
+ description: "Optional name shown in the UI. Leave empty to use the name derived from the Play identifier.",
1949
+ get defaultValue() {
1950
+ return this.schema.parse(void 0);
1951
+ },
1952
+ cli: {
1953
+ valueSyntax: "text | null",
1954
+ examples: ["Find verified emails", "null"],
1955
+ parse: (value) => value === "null" ? null : value,
1956
+ format: (value) => playDisplayNameSchema.parse(value) ?? "null"
1957
+ },
1958
+ ui: { control: "text" }
1943
1959
  }
1944
1960
  };
1945
1961
  var playSettingsSchema = z.object(
@@ -2043,6 +2059,7 @@ function resolveField(key, command) {
2043
2059
  return entry[1];
2044
2060
  }
2045
2061
  function printSettings(result, json, name) {
2062
+ result = { ...result, settings: parsePlaySettings(result.settings) };
2046
2063
  const selected = fields.filter(([key]) => !name || key === name);
2047
2064
  printCommandEnvelope(
2048
2065
  {
@@ -4295,7 +4312,7 @@ Example: deepline plays bootstrap people-email --from csv:data/leads.csv --using
4295
4312
  `Unknown plays bootstrap template: ${rawTemplate}
4296
4313
  Supported templates: ${formatPlayBootstrapTemplates()}|${MONITOR_BOOTSTRAP_TEMPLATE}` + (looksLikePlayReference ? `
4297
4314
 
4298
- "${rawTemplate}" looks like an existing play reference or file, not a bootstrap template. Do not run plays bootstrap on prebuilt/<play-name>. Use "deepline plays run ${rawTemplate} --input '{...}'" to run it directly, "deepline plays describe ${rawTemplate} --json" to inspect its contract, or "deepline plays get ${rawTemplate} --source --out scratchpad.play.ts" to clone/edit it.` : "")
4315
+ "${rawTemplate}" looks like an existing play reference or file, not a bootstrap template. Do not run plays bootstrap on prebuilt/<play-name>. Use "deepline plays run ${rawTemplate} --input '{...}'" to run it directly, "deepline describe ${rawTemplate}" to inspect its contract, or "deepline plays get ${rawTemplate} --source --out scratchpad.play.ts" to clone/edit it.` : "")
4299
4316
  );
4300
4317
  }
4301
4318
  return rawTemplate;
@@ -4798,7 +4815,7 @@ function generateSourceProviderInputObject(input) {
4798
4815
  );
4799
4816
  const lines = [
4800
4817
  `${indent}// TODO: fill ${entity} source inputs for ${label}.`,
4801
- `${indent}// Inspect: deepline tools describe ${label} --json`
4818
+ `${indent}// Inspect: deepline describe ${label}`
4802
4819
  ];
4803
4820
  for (const field of required) {
4804
4821
  lines.push(`${indent}// ${field}: ${exampleValueComment(field)},`);
@@ -4891,7 +4908,7 @@ function safeIdentifier(value) {
4891
4908
  return value.replace(/[^A-Za-z0-9_]+/g, "_");
4892
4909
  }
4893
4910
  function playInspectionComments(playRef, indent) {
4894
- return [`${indent}// Inspect: deepline plays describe ${playRef} --json`];
4911
+ return [`${indent}// Inspect: deepline describe ${playRef}`];
4895
4912
  }
4896
4913
  function accessorExpression(base, field) {
4897
4914
  return /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(field) ? `${base}.${field}` : `${base}[${jsString(field)}]`;
@@ -5005,7 +5022,7 @@ function validateBootstrapRoutes(input) {
5005
5022
  }
5006
5023
  if (getterNamesFromTool(tool, "list").length === 0) {
5007
5024
  throw new PlayBootstrapValidationError(
5008
- `Cannot use ${tool.toolId} as a ${config.sourceEntity} source: it exposes no extracted list getters. Run: deepline tools describe ${tool.toolId} --json`
5025
+ `Cannot use ${tool.toolId} as a ${config.sourceEntity} source: it exposes no extracted list getters. Run: deepline describe ${tool.toolId}`
5009
5026
  );
5010
5027
  }
5011
5028
  }
@@ -5034,7 +5051,7 @@ function validateBootstrapRoutes(input) {
5034
5051
  }
5035
5052
  if (getterNamesFromTool(tool, "value").length === 0) {
5036
5053
  throw new PlayBootstrapValidationError(
5037
- `Cannot use ${tool.toolId} as a ${finder}: it exposes no extracted value getters. Run: deepline tools describe ${tool.toolId} --json`
5054
+ `Cannot use ${tool.toolId} as a ${finder}: it exposes no extracted value getters. Run: deepline describe ${tool.toolId}`
5038
5055
  );
5039
5056
  }
5040
5057
  }
@@ -6956,7 +6973,7 @@ function stringValue2(value) {
6956
6973
  }
6957
6974
 
6958
6975
  // src/cli/play-check-hints.ts
6959
- var EXTRACTED_GETTER_ERROR_HINT = "Deepline hint: extractedValues/extractedLists .get() only works for declared Deepline getters listed by `deepline tools describe <tool> --json`. Read tool-specific fields from `toolExecutionResult.toolResponse.rawV2` using the nesting shown in the response example, and use `toolExecutionResult.extractedLists.<name>.get()` for declared row/list outputs.";
6976
+ var EXTRACTED_GETTER_ERROR_HINT = "Deepline hint: extractedValues/extractedLists .get() only works for declared Deepline getters listed by `deepline describe <tool>`. Read tool-specific fields from `toolExecutionResult.toolResponse.rawV2` using the nesting shown in the response example, and use `toolExecutionResult.extractedLists.<name>.get()` for declared row/list outputs.";
6960
6977
  var DATASET_API_HINT = "Deepline hint: PlayDataset is lazy, durable, and async-only. Use `.count()`, `.first()`, `.at(index)`, `.peek(n)`, `.materialize(limit)`, or async iteration; do not use `.length`, numeric indexing, spread, synchronous iteration, `.rows`, or `.toArray()`.";
6961
6978
  var ROW_PROPERTY_HINT = "Deepline hint: this row type only contains fields produced by the CSV/schema and previous map steps. Check source column casing and the exact output field names from earlier steps before scaling.";
6962
6979
  var TOOLS_EXECUTE_SIGNATURE_HINT = "Deepline hint: ctx.tools.execute requires a request object: `ctx.tools.execute({ id, tool, input, description })`. The stable `id` is required for logs, metadata, and result-cache identity; terminal cache reuse is based on play, tool, semantic input, auth scope, provider action version, and cache policy.";
@@ -9359,9 +9376,7 @@ function buildPlayReferenceNotFoundMessage(input) {
9359
9376
  ` deepline plays versions --name ${suggestion.reference} --json`
9360
9377
  );
9361
9378
  } else {
9362
- lines.push(
9363
- ` deepline plays describe ${suggestion.reference} --json`
9364
- );
9379
+ lines.push(` deepline describe ${suggestion.reference}`);
9365
9380
  }
9366
9381
  }
9367
9382
  }
@@ -9611,7 +9626,7 @@ function parseJsonInput(raw, flag = "--input") {
9611
9626
  parsed = JSON.parse(source);
9612
9627
  } catch {
9613
9628
  throw new DeeplineError(
9614
- `${flag} expects a valid JSON object or @input.json. A bare file path is not JSON.${flag === "--input" ? " Use the field names and run example from plays check <file> or plays describe <play>. --csv contacts.csv supplies input.csv only when the Play declares that field." : ""}`,
9629
+ `${flag} expects a valid JSON object or @input.json. A bare file path is not JSON.${flag === "--input" ? " Use the field names and run example from plays check <file> or deepline describe <play>. --csv contacts.csv supplies input.csv only when the Play declares that field." : ""}`,
9615
9630
  void 0,
9616
9631
  "INVALID_JSON"
9617
9632
  );
@@ -16738,6 +16753,42 @@ function csvColumnLines(csvInput) {
16738
16753
  CSV_HEADER_MATCHING_NOTE
16739
16754
  ];
16740
16755
  }
16756
+ function describedPlay(play) {
16757
+ const reference = formatPlayListReference(play);
16758
+ const starter = play.cloneEditStarter ?? buildCloneEditStarter(play);
16759
+ const csv = play.csvInput ?? {};
16760
+ const headers = isRecord3(csv.defaultColumns) ? csv.defaultColumns : {};
16761
+ const rowInputs = schemaFields(csv.rowInputSchema).map((field) => {
16762
+ const header = [headers[field.name]].flat().filter((name) => name && name !== field.name).join(" or ");
16763
+ return header ? {
16764
+ ...field,
16765
+ description: [field.description, `CSV header: ${header}`].filter(Boolean).join(" - ")
16766
+ } : field;
16767
+ });
16768
+ const rowOutput = play.rowOutputSchema ?? {};
16769
+ const added = isRecord3(rowOutput.addedColumns) ? rowOutput.addedColumns : {};
16770
+ const rowOutputs = schemaFields(
16771
+ Object.keys(added).length ? { properties: added } : rowOutput
16772
+ ).map((field) => ({ ...field, required: true }));
16773
+ return {
16774
+ kind: play.ownerType === "deepline" ? "prebuilt_play" : "custom_play",
16775
+ id: reference,
16776
+ ...play.displayName && play.displayName !== play.name ? { displayName: play.displayName } : {},
16777
+ ...play.description ? { description: play.description } : {},
16778
+ guidance: [],
16779
+ inputs: schemaFields(play.inputSchema),
16780
+ outputs: schemaFields(play.outputSchema),
16781
+ ...rowInputs.length ? { rowInputs } : {},
16782
+ ...rowOutputs.length ? { rowOutputs } : {},
16783
+ runner: {
16784
+ via: "play",
16785
+ reference,
16786
+ // A CSV play's run command is built by the server around its columns.
16787
+ ...play.csvInput ? { cli: play.runCommand } : {}
16788
+ },
16789
+ ...starter ? { source: starter.command } : {}
16790
+ };
16791
+ }
16741
16792
  function printPlayDescription(play) {
16742
16793
  const reference = formatPlayListReference(play);
16743
16794
  const labels = [
@@ -16816,7 +16867,7 @@ function printPlayDescription(play) {
16816
16867
  );
16817
16868
  }
16818
16869
  printScheduledPlayCapacity(play.activeScheduledPlays);
16819
- console.log(` Describe: deepline plays describe ${reference} --json`);
16870
+ console.log(` Describe: deepline describe ${reference}`);
16820
16871
  console.log(` Run: ${play.runCommand}`);
16821
16872
  const cloneEditStarter = play.cloneEditStarter ?? buildCloneEditStarter(play);
16822
16873
  if (cloneEditStarter) {
@@ -16827,10 +16878,11 @@ function printPlayDescription(play) {
16827
16878
  function summarizePlayGrepResult(play) {
16828
16879
  const reference = formatPlayListReference(play);
16829
16880
  return {
16830
- name: play.displayName?.trim() || play.name,
16881
+ name: play.name,
16882
+ ...play.displayName ? { displayName: play.displayName } : {},
16831
16883
  reference,
16832
16884
  matches: play.matches ?? [],
16833
- describe: `deepline plays describe ${reference} --json`
16885
+ describe: `deepline describe ${reference}`
16834
16886
  };
16835
16887
  }
16836
16888
  function formatPlayGrepMatches(matches) {
@@ -16861,7 +16913,7 @@ async function handlePlayGrep(args) {
16861
16913
  `
16862
16914
  );
16863
16915
  for (const result of results) {
16864
- console.log(result.name);
16916
+ console.log(result.displayName?.trim() || result.name);
16865
16917
  const matches = formatPlayGrepMatches(result.matches);
16866
16918
  if (matches) console.log(` Matched: ${matches}`);
16867
16919
  console.log(` Describe: ${result.describe}`);
@@ -16902,7 +16954,7 @@ async function handlePlayDescribe(args) {
16902
16954
  })() : null;
16903
16955
  const next = [
16904
16956
  `deepline plays check ${playName}`,
16905
- ...definedName ? [`deepline plays describe <workspace>/${definedName}`] : []
16957
+ ...definedName ? [`deepline describe <workspace>/${definedName}`] : []
16906
16958
  ];
16907
16959
  if (argsWantJson(args)) {
16908
16960
  printCompactJson({
@@ -17404,7 +17456,7 @@ Concepts:
17404
17456
 
17405
17457
  Run and retrieve results:
17406
17458
  1. Discover a Play: deepline plays search email --json
17407
- Inspect its input contract: deepline plays describe <play-name> --json
17459
+ Inspect its input contract: deepline describe <play-name>
17408
17460
  2. Start and follow a new run: deepline plays run workflow.play.ts --csv contacts.csv
17409
17461
  This example requires input.csv. Use the selected Play's actual input fields.
17410
17462
  Run waits and shows progress by default; --no-wait returns immediately.
@@ -17439,7 +17491,7 @@ Authoring:
17439
17491
 
17440
17492
  Common commands:
17441
17493
  deepline search --type prebuilts email --json
17442
- deepline plays describe prebuilt/person-linkedin-to-email --json
17494
+ deepline describe prebuilt/person-linkedin-to-email
17443
17495
  deepline plays check prebuilt/name-and-domain-to-email-waterfall-batch
17444
17496
  deepline plays run prebuilt/person-linkedin-to-email --input '{"linkedin_url":"..."}'
17445
17497
  deepline plays get prebuilt/person-linkedin-to-email --json
@@ -17829,7 +17881,7 @@ Notes:
17829
17881
 
17830
17882
  Examples:
17831
17883
  deepline plays grep email --json
17832
- deepline plays describe prebuilt/company-to-contact --json
17884
+ deepline describe prebuilt/company-to-contact
17833
17885
  `
17834
17886
  ).option("--json", "Emit JSON output. Also automatic when stdout is piped").action(async (query, options) => {
17835
17887
  process.exitCode = await handlePlayGrep([
@@ -17837,7 +17889,7 @@ Examples:
17837
17889
  ...options.json ? ["--json"] : []
17838
17890
  ]);
17839
17891
  });
17840
- play.command("describe [target]").usage("<target> [options]").description("Describe a play contract and how to run it.").addHelpText(
17892
+ const describeCommand = play.command("describe [target]", { hidden: true }).usage("<target> [options]").description("Describe a play contract and how to run it.").addHelpText(
17841
17893
  "after",
17842
17894
  `
17843
17895
  Notes:
@@ -17855,11 +17907,33 @@ Examples:
17855
17907
  ).option("--compact", "Emit compact schemas").option(
17856
17908
  "--json [fields]",
17857
17909
  "JSON output; optionally select comma-separated dotted paths"
17858
- ).action(async (target, options) => {
17859
- process.exitCode = await handlePlayDescribe(
17860
- describeArgs(target, options)
17861
- );
17862
- });
17910
+ );
17911
+ addDescribeOptions(describeCommand, { json: false }).action(
17912
+ async (target, options) => {
17913
+ const ownView = () => handlePlayDescribe(describeArgs(target, options));
17914
+ const [flagText] = [options.json].filter(
17915
+ (value) => typeof value === "string"
17916
+ );
17917
+ const name = target || flagText;
17918
+ const selectsFields = Boolean(target && flagText);
17919
+ const own = !name || options.compact || selectsFields || looksLikeRunId(name) || isFileTarget(name) || looksLikeFilePath(name);
17920
+ if (own) {
17921
+ process.exitCode = await ownView();
17922
+ return;
17923
+ }
17924
+ const { describeAnything } = await import("./describe-WCBZTSOF.mjs");
17925
+ process.exitCode = await describeAnything(
17926
+ name,
17927
+ {
17928
+ ...options,
17929
+ kinds: ["prebuilts", "custom"],
17930
+ json: Boolean(options.json)
17931
+ },
17932
+ // An unknown play keeps this command's suggestions.
17933
+ ownView
17934
+ );
17935
+ }
17936
+ );
17863
17937
  play.command("versions").description("List revisions for a named play.").addHelpText(
17864
17938
  "after",
17865
17939
  `
@@ -18794,68 +18868,70 @@ async function handlePlayShareUnpublish(args) {
18794
18868
  console.log(`Unpublished ${name}; the public page has been removed.`);
18795
18869
  return 0;
18796
18870
  }
18871
+
18797
18872
  export {
18798
- PREBUILT_PLAY_TAG_KEYS,
18799
- assertDatasetHasExportableRows,
18800
- buildPlayCompletionTextLines,
18801
- buildRunActivityTextLines,
18802
- buildRunLaunch,
18803
- buildRunLogsText,
18804
- buildRunPackageTextLines,
18805
- buildStopAllDryRunTextLines,
18806
- clampJsonPreviewText,
18807
- compactPlayStatus,
18808
- csvColumnLines,
18873
+ resolveDatasetByName,
18874
+ loadPlayBundler,
18875
+ parsePlayRunHeaderFlag,
18876
+ writePlayRunIdFile,
18877
+ preflightLocalFileInputs,
18809
18878
  describeSleepUntil,
18810
- exportPlayStatusRows,
18811
- formatPlaySandboxRuntimeWarning,
18812
- formatStepLabelFromNodeId,
18813
18879
  getFinalStatusFromLiveEvent,
18880
+ formatStepLabelFromNodeId,
18881
+ getStepTransitionLineFromLiveEvent,
18814
18882
  getProgressLinesFromLiveEvent,
18883
+ shouldPrintPlayProgressLine,
18815
18884
  getRunningHeartbeatLine,
18816
- getStepTransitionLineFromLiveEvent,
18885
+ waitForPlayCompletionByWatch,
18886
+ startAndWaitForPlayCompletionByStream,
18887
+ truncateErrorForDisplay,
18888
+ clampJsonPreviewText,
18889
+ withTerminalPlayIdentity,
18890
+ compactPlayStatus,
18891
+ buildRunActivityTextLines,
18892
+ buildRunPackageTextLines,
18893
+ buildRunLaunch,
18894
+ buildPlayCompletionTextLines,
18895
+ resolvePlayRunOutputStatus,
18896
+ assertDatasetHasExportableRows,
18897
+ exportPlayStatusRows,
18898
+ parsePlayRunOptions,
18899
+ parsePlayPublishOptions,
18900
+ formatPlaySandboxRuntimeWarning,
18817
18901
  handlePlayCheck,
18818
- handlePlayDelete,
18819
- handlePlayDescribe,
18820
- handlePlayGet,
18821
- handlePlayGrep,
18822
- handlePlayList,
18823
- handlePlayPin,
18824
- handlePlayPublish,
18825
- handlePlayRestore,
18826
18902
  handlePlayRun,
18827
- handlePlaySave,
18828
- handlePlaySharePublish,
18829
- handlePlayShareRegenerate,
18830
- handlePlayShareStatus,
18831
- handlePlayShareUnpublish,
18832
- handlePlayShareUpdate,
18833
- handlePlayVersions,
18834
- handleRunEventSearch,
18835
- handleRunExport,
18903
+ renderRunOverviewText,
18836
18904
  handleRunGet,
18837
18905
  handleRunLifecycleStatus,
18906
+ handleRunsRerun,
18907
+ handleRunsList,
18908
+ handleRunTail,
18838
18909
  handleRunLogs,
18910
+ selectRunLogTailPage,
18911
+ handleRunEventSearch,
18912
+ buildRunLogsText,
18913
+ resolveRunStopState,
18839
18914
  handleRunStop,
18915
+ buildStopAllDryRunTextLines,
18840
18916
  handleRunStopAll,
18841
- handleRunTail,
18842
- handleRunsList,
18843
- handleRunsRerun,
18844
- loadPlayBundler,
18845
- parsePlayPublishOptions,
18846
- parsePlayRunHeaderFlag,
18847
- parsePlayRunOptions,
18848
- preflightLocalFileInputs,
18917
+ handleRunExport,
18918
+ handlePlayGet,
18919
+ handlePlayVersions,
18920
+ PREBUILT_PLAY_TAG_KEYS,
18921
+ handlePlayList,
18922
+ handlePlayPin,
18923
+ csvColumnLines,
18924
+ describedPlay,
18925
+ handlePlayGrep,
18926
+ handlePlayDescribe,
18927
+ handlePlaySave,
18928
+ handlePlayPublish,
18929
+ handlePlayDelete,
18930
+ handlePlayRestore,
18849
18931
  registerPlayCommands,
18850
- renderRunOverviewText,
18851
- resolveDatasetByName,
18852
- resolvePlayRunOutputStatus,
18853
- resolveRunStopState,
18854
- selectRunLogTailPage,
18855
- shouldPrintPlayProgressLine,
18856
- startAndWaitForPlayCompletionByStream,
18857
- truncateErrorForDisplay,
18858
- waitForPlayCompletionByWatch,
18859
- withTerminalPlayIdentity,
18860
- writePlayRunIdFile
18932
+ handlePlayShareStatus,
18933
+ handlePlaySharePublish,
18934
+ handlePlayShareUpdate,
18935
+ handlePlayShareRegenerate,
18936
+ handlePlayShareUnpublish
18861
18937
  };
@@ -3,7 +3,7 @@ import {
3
3
  detectAgentRuntime,
4
4
  resolveCliCommandContext,
5
5
  resolveConfig
6
- } from "./chunk-Q3LYQTSO.mjs";
6
+ } from "./chunk-DOI3UBGV.mjs";
7
7
  import {
8
8
  DeeplineError
9
9
  } from "./chunk-NXGCO4JB.mjs";
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-DLIRSHV6.mjs";
5
5
  import {
6
6
  SDK_RELEASE
7
- } from "./chunk-SGTSJCOA.mjs";
7
+ } from "./chunk-HM2TSTCT.mjs";
8
8
  import {
9
9
  DeeplineError,
10
10
  TOOL_EXECUTION_ERROR_SCHEMA_VERSION,