deepline 0.3.372 → 0.3.374
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.
- package/dist/bundling-sources/sdk/src/release.ts +1 -1
- package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/backends/daytona-payload-transport.ts +1 -53
- package/dist/bundling-sources/shared_libs/play-runtime/runner-backends/backends/daytona-runtime-watchdog.ts +15 -23
- package/dist/bundling-sources/shared_libs/play-runtime/scheduler-backends/absurd-runtime-worker.ts +65 -3
- package/dist/bundling-sources/shared_libs/plays/email-status.ts +95 -0
- package/dist/bundling-sources/shared_libs/plays/extractor-targets.ts +14 -0
- package/dist/bundling-sources/shared_libs/plays/field-catalog.ts +253 -0
- package/dist/bundling-sources/shared_libs/plays/tool-result-types.ts +2 -0
- package/dist/cli/auth-IFXXXZP6.js +33 -0
- package/dist/cli/{auth-ODSACXLF.mjs → auth-YGCDA4WG.mjs} +4 -4
- package/dist/cli/{billing-OPIOZLAN.mjs → billing-3ZLR3CJU.mjs} +4 -4
- package/dist/cli/{billing-4ERXY2DZ.js → billing-ZXRKPD5D.js} +73 -73
- package/dist/cli/{chunk-XSPAI6MF.mjs → chunk-2DAWTVNN.mjs} +2 -2
- package/dist/cli/{chunk-E5UD3JDQ.js → chunk-3VN4FTE3.js} +289 -5
- package/dist/cli/{chunk-VVFH745L.js → chunk-3XKAOV74.js} +6 -6
- package/dist/cli/{chunk-N5TPMNTT.js → chunk-53PZA4EP.js} +8 -8
- package/dist/cli/{chunk-BFLPCGOR.mjs → chunk-62IBVKWB.mjs} +1 -1
- package/dist/cli/{chunk-2RC5JQ3C.mjs → chunk-A62HBMHY.mjs} +1 -1
- package/dist/cli/{chunk-3GK3SH3G.mjs → chunk-E6BZWURC.mjs} +200 -13
- package/dist/cli/{chunk-KC2YOJTU.mjs → chunk-FT6O2ZVJ.mjs} +319 -115
- package/dist/cli/{chunk-5HYD3GMS.mjs → chunk-GT6KGIWV.mjs} +3 -3
- package/dist/cli/{chunk-RUYZAREB.js → chunk-HC5L6KGE.js} +9 -9
- package/dist/cli/{chunk-JAERLCMH.mjs → chunk-IZVGMVNX.mjs} +1 -1
- package/dist/cli/{chunk-ML2ZY7YD.js → chunk-JK547IDB.js} +4 -4
- package/dist/cli/{chunk-D6O3NJHX.js → chunk-MOBOAZMA.js} +60 -60
- package/dist/cli/{chunk-DONL233W.mjs → chunk-MQ5UW5AZ.mjs} +4 -4
- package/dist/cli/{chunk-MIMV5LTU.mjs → chunk-NNYQ24O5.mjs} +1 -1
- package/dist/cli/{chunk-DM5QUZJR.js → chunk-NOSIMGZV.js} +1 -1
- package/dist/cli/{chunk-AQFA7HMN.js → chunk-O7KJYX7R.js} +15 -15
- package/dist/cli/{chunk-U3W7E5WT.mjs → chunk-OS7GXARW.mjs} +27 -15
- package/dist/cli/{chunk-BVUGPOU3.mjs → chunk-OYTPVM2R.mjs} +2 -2
- package/dist/cli/{chunk-EFJL5FCU.js → chunk-PCYCNZLR.js} +8 -8
- package/dist/cli/{chunk-6MDAGRZP.js → chunk-RT5ICJ5V.js} +2 -2
- package/dist/cli/{chunk-GZQKUFM5.js → chunk-RXR7A2MX.js} +26 -26
- package/dist/cli/{chunk-4LIUZ4QR.mjs → chunk-SBB27CIJ.mjs} +2 -2
- package/dist/cli/{chunk-RJ7JJMQO.js → chunk-T35LCTC7.js} +266 -254
- package/dist/cli/{chunk-IUWPC5K6.js → chunk-TZTGK5JQ.js} +50 -50
- package/dist/cli/{chunk-FGHRRJ3D.mjs → chunk-VZSVYNZH.mjs} +1 -1
- package/dist/cli/{chunk-WJWO74MM.js → chunk-X5V2QTDR.js} +390 -186
- package/dist/cli/{chunk-JB6ERQUV.mjs → chunk-Y6VOGHF2.mjs} +284 -0
- package/dist/cli/{chunk-3CTB7V5F.mjs → chunk-YFFH6NDU.mjs} +2 -2
- package/dist/cli/{chunk-2JRRXXTA.js → chunk-YPVTQRUM.js} +201 -14
- package/dist/cli/client-O6IEMURJ.js +20 -0
- package/dist/cli/{client-KF2J754U.mjs → client-TV254HC4.mjs} +3 -3
- package/dist/cli/{csv-UL3MCD5D.mjs → csv-VEHHRUG4.mjs} +3 -3
- package/dist/cli/{csv-UJ3M7NFP.js → csv-WSRTANXI.js} +12 -12
- package/dist/cli/{db-SIOWA63T.mjs → db-BH25DX2G.mjs} +4 -4
- package/dist/cli/{db-444XYOTV.js → db-JXZNMFCE.js} +29 -29
- package/dist/cli/{describe-RRBESS3S.js → describe-N2OBGVJM.js} +61 -32
- package/dist/cli/{describe-GI5GHAKO.mjs → describe-TMBECHTX.mjs} +46 -17
- package/dist/cli/{executions-ERXZUOL5.js → executions-TX5CQF66.js} +6 -6
- package/dist/cli/{executions-4YDP6BXI.mjs → executions-Y4HQHYSO.mjs} +4 -4
- package/dist/cli/{feedback-3M7D7DZQ.js → feedback-ASEJ5A7I.js} +7 -7
- package/dist/cli/{feedback-CPWQL5LU.mjs → feedback-W7SRXYSP.mjs} +3 -3
- package/dist/cli/{git-XN6C3TJZ.mjs → git-2W7CZZRC.mjs} +4 -4
- package/dist/cli/git-SSSOIQ2L.js +23 -0
- package/dist/cli/index.js +81 -81
- package/dist/cli/index.mjs +32 -32
- package/dist/cli/{legacy-noops-5XDGOFWH.js → legacy-noops-NJYAAGBY.js} +7 -7
- package/dist/cli/{legacy-noops-KXQ6TFFL.mjs → legacy-noops-TXMPY3P7.mjs} +4 -4
- package/dist/cli/{monitors-33IU5JR6.mjs → monitors-G4L65QGQ.mjs} +4 -4
- package/dist/cli/{monitors-KH22PDOC.js → monitors-YLKTQ57D.js} +85 -85
- package/dist/cli/{org-MHYMWUEP.mjs → org-BCHOWKIA.mjs} +4 -4
- package/dist/cli/{org-X4NSLQG5.js → org-ENXO2A33.js} +64 -64
- package/dist/cli/{play-LCZKHKW2.mjs → play-JBY7HUYN.mjs} +8 -8
- package/dist/cli/play-SSJ3PO4D.js +155 -0
- package/dist/cli/{providers-J6LWCF5R.js → providers-GWFX3E7C.js} +7 -7
- package/dist/cli/{providers-L5FJTSEA.mjs → providers-JV2DZG43.mjs} +4 -4
- package/dist/cli/{quickstart-NE3BTWGL.mjs → quickstart-AIXURXZQ.mjs} +3 -3
- package/dist/cli/{quickstart-OOPFA4MX.js → quickstart-CASPK7F4.js} +5 -5
- package/dist/cli/{search-DBXOEOIE.mjs → search-DYQB7LHK.mjs} +5 -5
- package/dist/cli/search-N7K6A2YV.js +26 -0
- package/dist/cli/{secrets-WPMU7UBD.js → secrets-AZQG2E4U.js} +13 -13
- package/dist/cli/{secrets-U2MLWZH2.mjs → secrets-RQZPIPO5.mjs} +4 -4
- package/dist/cli/{sessions-WYNC4AUE.mjs → sessions-3FJJDMBB.mjs} +4 -4
- package/dist/cli/{sessions-YYZ3UJDS.js → sessions-ZY6RBYD4.js} +5 -5
- package/dist/cli/{settings-WQDFX3X6.js → settings-GXKWNR5V.js} +74 -74
- package/dist/cli/{settings-FQZSHFC6.mjs → settings-UNZDQGSE.mjs} +7 -7
- package/dist/cli/{setup-JKYJT35S.mjs → setup-PIRXJ2KJ.mjs} +6 -6
- package/dist/cli/{setup-DKYVNDTM.js → setup-UURZD4YO.js} +41 -41
- package/dist/cli/skills-4OUZLKTW.js +28 -0
- package/dist/cli/{skills-VHVCJJJY.mjs → skills-B4AQEIAF.mjs} +4 -4
- package/dist/cli/tools-MIZS5UN6.js +40 -0
- package/dist/cli/{tools-E23PU7KM.mjs → tools-UMGQKUSW.mjs} +8 -8
- package/dist/cli/update-3CO7LA4M.js +28 -0
- package/dist/cli/{update-4A4VU6CW.mjs → update-SFUTMEKL.mjs} +6 -6
- package/dist/cli/{workflow-WB2USWAA.js → workflow-CDAJCMT7.js} +15 -15
- package/dist/cli/{workflow-2ZR2ECTG.mjs → workflow-ON6XVW36.mjs} +5 -5
- package/dist/{client-Cw0e2Uec.d.mts → client-Cn-txrXv.d.mts} +1 -1
- package/dist/{client-CwdiawoG.d.ts → client-fPoIN-3V.d.ts} +1 -1
- package/dist/{compiler-manifest-DgdW0q0b.d.mts → compiler-manifest-CY2v8ab0.d.mts} +2 -0
- package/dist/{compiler-manifest-DgdW0q0b.d.ts → compiler-manifest-CY2v8ab0.d.ts} +2 -0
- package/dist/{index-C3nQQTI-.d.mts → index-B9fBZH1g.d.mts} +1 -1
- package/dist/{index-CEYQAfS0.d.ts → index-BZ6uzZJl.d.ts} +1 -1
- package/dist/index.d.mts +5 -5
- package/dist/index.d.ts +5 -5
- package/dist/index.js +79 -249
- package/dist/index.mjs +10 -180
- package/dist/install-integrity.json +85 -84
- package/dist/plays/bundle-play-file.d.mts +3 -3
- package/dist/plays/bundle-play-file.d.ts +3 -3
- package/dist/plays/run-request.d.mts +2 -2
- package/dist/plays/run-request.d.ts +2 -2
- package/dist/release.d.mts +1 -1
- package/dist/release.d.ts +1 -1
- package/dist/release.js +2 -2
- package/dist/release.mjs +1 -1
- package/package.json +1 -1
- package/dist/cli/auth-4SXMV3CD.js +0 -33
- package/dist/cli/client-UUNLXOHF.js +0 -20
- package/dist/cli/git-ITSCNUVB.js +0 -23
- package/dist/cli/play-4QRPOBWW.js +0 -155
- package/dist/cli/search-UGQDBP76.js +0 -26
- package/dist/cli/skills-VBQMXDAX.js +0 -28
- package/dist/cli/tools-ACEJZMJD.js +0 -40
- package/dist/cli/update-V5KMYHVE.js +0 -28
|
@@ -4,6 +4,21 @@ import {
|
|
|
4
4
|
|
|
5
5
|
// src/cli/described.ts
|
|
6
6
|
var SHAPE = "{}";
|
|
7
|
+
function byokLines(byok) {
|
|
8
|
+
if (typeof byok.supported !== "boolean") {
|
|
9
|
+
return ["BYOK: unknown (this server does not report it)"];
|
|
10
|
+
}
|
|
11
|
+
if (!byok.supported) {
|
|
12
|
+
return [
|
|
13
|
+
"BYOK: not supported. Deepline runs this tool with its own credentials."
|
|
14
|
+
];
|
|
15
|
+
}
|
|
16
|
+
return [
|
|
17
|
+
byok.required === true ? "BYOK: required. This tool runs only on your own provider credentials." : "BYOK: supported (optional).",
|
|
18
|
+
...byok.setup ? [`Setup: ${byok.setup}`] : [],
|
|
19
|
+
...byok.setupUrl ? [`Connect: ${byok.setupUrl}`] : []
|
|
20
|
+
];
|
|
21
|
+
}
|
|
7
22
|
var SCHEMA_LINE_LIMIT = 100;
|
|
8
23
|
function isRecord(value) {
|
|
9
24
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
@@ -69,7 +84,9 @@ function schemaField(name, node, required) {
|
|
|
69
84
|
required,
|
|
70
85
|
...example !== void 0 ? { example } : {},
|
|
71
86
|
...typeof schema.description === "string" && schema.description ? { description: schema.description } : {},
|
|
72
|
-
...fields ? { fields } : {}
|
|
87
|
+
...fields ? { fields } : {},
|
|
88
|
+
...schema.secondary === true ? { secondary: true } : {},
|
|
89
|
+
...typeof schema.means === "string" ? { means: schema.means } : {}
|
|
73
90
|
};
|
|
74
91
|
}
|
|
75
92
|
function withoutRefs(node, root, depth = 0) {
|
|
@@ -167,6 +184,7 @@ function namedShapes(roots) {
|
|
|
167
184
|
under: field.name
|
|
168
185
|
};
|
|
169
186
|
entry.count += 1;
|
|
187
|
+
entry.shape ??= field.shape;
|
|
170
188
|
entry.descriptions.add(field.description ?? "");
|
|
171
189
|
seen.set(key, entry);
|
|
172
190
|
field.fields.forEach(visit);
|
|
@@ -175,12 +193,12 @@ function namedShapes(roots) {
|
|
|
175
193
|
const taken = /* @__PURE__ */ new Set();
|
|
176
194
|
const named = /* @__PURE__ */ new Map();
|
|
177
195
|
for (const [key, entry] of seen) {
|
|
178
|
-
if (entry.count < 2) continue;
|
|
196
|
+
if (entry.count < 2 && !entry.shape) continue;
|
|
179
197
|
const [description] = entry.descriptions.size === 1 ? [...entry.descriptions] : [""];
|
|
180
198
|
const title = (description ?? "").split(/[.:]/)[0].trim();
|
|
181
|
-
const base = pascalCase(
|
|
199
|
+
const base = entry.shape ?? (pascalCase(
|
|
182
200
|
title && title.split(/\s+/).length <= 3 ? title : entry.fields.length <= 3 ? entry.fields.map((field) => field.name).join(" ") : entry.under
|
|
183
|
-
) || "Shape";
|
|
201
|
+
) || "Shape");
|
|
184
202
|
let name = base;
|
|
185
203
|
for (let n = 2; taken.has(name); n += 1) name = `${base}${n}`;
|
|
186
204
|
taken.add(name);
|
|
@@ -213,23 +231,27 @@ function schemaBlocks(described, maxDepth, everyField = false) {
|
|
|
213
231
|
const example = field.example === void 0 ? void 0 : JSON.stringify(field.example);
|
|
214
232
|
const start = `${indent}${JSON.stringify(field.name)}${field.required ? "" : "?"}: `;
|
|
215
233
|
if (!field.fields) {
|
|
216
|
-
return [
|
|
234
|
+
return [
|
|
235
|
+
`${start}${field.type},${comment([field.means, example, field.description])}`
|
|
236
|
+
];
|
|
217
237
|
}
|
|
218
238
|
const [before, after] = field.type.split(SHAPE);
|
|
219
239
|
const shape = shapes.get(shapeKey(field.fields));
|
|
220
240
|
if (shape) {
|
|
221
241
|
if (!used.includes(shape)) used.push(shape);
|
|
222
242
|
const own = field.description === shape.description ? void 0 : field.description;
|
|
223
|
-
return [
|
|
243
|
+
return [
|
|
244
|
+
`${start}${before}${shape.name}${after},${comment([field.means, own])}`
|
|
245
|
+
];
|
|
224
246
|
}
|
|
225
247
|
if (depth >= maxDepth || field.summarized && !everyField) {
|
|
226
248
|
const names = field.fields.map((child) => child.name).join(", ");
|
|
227
249
|
return [
|
|
228
|
-
`${start}${before}{ ${names} }${after},${comment([field.description])}`
|
|
250
|
+
`${start}${before}{ ${names} }${after},${comment([field.means, field.description])}`
|
|
229
251
|
];
|
|
230
252
|
}
|
|
231
253
|
return [
|
|
232
|
-
`${start}${before}{${comment([field.description])}`,
|
|
254
|
+
`${start}${before}{${comment([field.means, field.description])}`,
|
|
233
255
|
...field.fields.flatMap(
|
|
234
256
|
(child) => fieldLines(child, `${indent} `, depth + 1)
|
|
235
257
|
),
|
|
@@ -255,8 +277,70 @@ function schemaBlocks(described, maxDepth, everyField = false) {
|
|
|
255
277
|
}
|
|
256
278
|
return [...lines, ...types.length ? ["", "Types:", ...types] : []];
|
|
257
279
|
}
|
|
258
|
-
function
|
|
259
|
-
|
|
280
|
+
function selectFields(described, wanted) {
|
|
281
|
+
const hidden = [];
|
|
282
|
+
const keep = (fields, isInput, path = []) => fields.flatMap((field) => {
|
|
283
|
+
const name = [...path, field.name];
|
|
284
|
+
if (!(isInput && field.required) && !wanted(field, path.length)) {
|
|
285
|
+
hidden.push(name.join("."));
|
|
286
|
+
return [];
|
|
287
|
+
}
|
|
288
|
+
return [
|
|
289
|
+
field.fields ? { ...field, fields: keep(field.fields, isInput, name) } : field
|
|
290
|
+
];
|
|
291
|
+
});
|
|
292
|
+
const inputs = keep(described.inputs, true);
|
|
293
|
+
const rowInputs = described.rowInputs && keep(described.rowInputs, true);
|
|
294
|
+
const outputs = keep(described.outputs, false);
|
|
295
|
+
const rowOutputs = described.rowOutputs && keep(described.rowOutputs, false);
|
|
296
|
+
return {
|
|
297
|
+
selected: {
|
|
298
|
+
...described,
|
|
299
|
+
inputs,
|
|
300
|
+
outputs,
|
|
301
|
+
...rowInputs ? { rowInputs } : {},
|
|
302
|
+
...rowOutputs ? { rowOutputs } : {}
|
|
303
|
+
},
|
|
304
|
+
hidden
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
function schemaLines(described, view) {
|
|
308
|
+
const count = (names) => `${names.length} ${names.length === 1 ? "field" : "fields"}`;
|
|
309
|
+
if (view.fields) {
|
|
310
|
+
const names = view.fields;
|
|
311
|
+
const { selected, hidden } = selectFields(
|
|
312
|
+
described,
|
|
313
|
+
(field, depth) => depth > 0 || names.includes(field.name)
|
|
314
|
+
);
|
|
315
|
+
const known = new Set(
|
|
316
|
+
[
|
|
317
|
+
described.inputs,
|
|
318
|
+
described.outputs,
|
|
319
|
+
described.rowInputs ?? [],
|
|
320
|
+
described.rowOutputs ?? []
|
|
321
|
+
].flatMap((fields) => fields.map((field) => field.name))
|
|
322
|
+
);
|
|
323
|
+
const unknown = names.filter((name) => !known.has(name));
|
|
324
|
+
return [
|
|
325
|
+
...schemaLines(selected, { full: true, secondary: true }),
|
|
326
|
+
...unknown.length ? ["", `No field named: ${unknown.join(", ")}.`] : [],
|
|
327
|
+
...hidden.length ? ["", `${count(hidden)} not shown: ${hidden.join(", ")}.`] : []
|
|
328
|
+
];
|
|
329
|
+
}
|
|
330
|
+
if (!view.full && !view.secondary) {
|
|
331
|
+
const { selected, hidden } = selectFields(
|
|
332
|
+
described,
|
|
333
|
+
(field) => !field.secondary
|
|
334
|
+
);
|
|
335
|
+
return [
|
|
336
|
+
...schemaLines(selected, { ...view, secondary: true }),
|
|
337
|
+
...hidden.length ? [
|
|
338
|
+
"",
|
|
339
|
+
`${count(hidden).replace(" ", " secondary ")} hidden: ${hidden.join(", ")}. --verbose shows ${hidden.length === 1 ? "it" : "them"}.`
|
|
340
|
+
] : []
|
|
341
|
+
];
|
|
342
|
+
}
|
|
343
|
+
if (view.full) return schemaBlocks(described, Infinity, true);
|
|
260
344
|
const raw = described.rawResponse?.length ? [
|
|
261
345
|
"",
|
|
262
346
|
`Other response fields (${described.rawResponse.map((field) => field.name).join(", ")}) are in result.toolResponse.rawV2. --full-schema lists them.`
|
|
@@ -284,7 +368,7 @@ function examples(described, options) {
|
|
|
284
368
|
const input = JSON.stringify(
|
|
285
369
|
Object.fromEntries(shown.map((field) => [field.name, exampleValue(field)]))
|
|
286
370
|
);
|
|
287
|
-
const read = options.verbose ? described.outputs : described.outputs.slice(0, 1);
|
|
371
|
+
const read = options.verbose ? described.outputs : described.outputs.filter((field) => !field.secondary).slice(0, 1);
|
|
288
372
|
const reads = (expression) => read.flatMap((field) => {
|
|
289
373
|
const source = expression(field);
|
|
290
374
|
return source ? [`const ${safeIdentifier(field.name)} = ${source};`] : [];
|
|
@@ -338,7 +422,17 @@ function describedLines(described, view) {
|
|
|
338
422
|
...described.cost ? [`Cost: ${described.cost}`] : [],
|
|
339
423
|
...described.guidance.map((line) => `Guidance: ${line}`),
|
|
340
424
|
...described.rateLimit ? [`Rate limit: ${described.rateLimit}`] : [],
|
|
341
|
-
...
|
|
425
|
+
...described.byok ? byokLines(described.byok) : [],
|
|
426
|
+
...schemaLines(described, {
|
|
427
|
+
full: view.fullSchema,
|
|
428
|
+
secondary: view.verbose,
|
|
429
|
+
...view.fields ? { fields: view.fields } : {}
|
|
430
|
+
}),
|
|
431
|
+
...section(
|
|
432
|
+
described.exclusive ? [
|
|
433
|
+
`Give "${described.exclusive.field}" or ${described.exclusive.with.map((name) => `"${name}"`).join(", ")}, not both: per-row values go in the CSV.`
|
|
434
|
+
] : []
|
|
435
|
+
),
|
|
342
436
|
...section(
|
|
343
437
|
view.cli ? [
|
|
344
438
|
"Run from the CLI:",
|
|
@@ -361,6 +455,88 @@ function describedLines(described, view) {
|
|
|
361
455
|
function topLevelField({ fields: _fields, ...field }) {
|
|
362
456
|
return { ...field, type: field.type.replace(SHAPE, "object") };
|
|
363
457
|
}
|
|
458
|
+
function jsonFields(fields, options) {
|
|
459
|
+
return Object.fromEntries(
|
|
460
|
+
fields.filter(
|
|
461
|
+
(field) => options.secondary || !field.secondary || options.input && field.required
|
|
462
|
+
).map((field) => {
|
|
463
|
+
const shape = field.fields && options.shapes.get(shapeKey(field.fields));
|
|
464
|
+
if (shape) options.used.add(shape);
|
|
465
|
+
return [
|
|
466
|
+
field.name,
|
|
467
|
+
{
|
|
468
|
+
type: field.type.replace(SHAPE, shape?.name ?? "object"),
|
|
469
|
+
...options.input ? { required: field.required } : {},
|
|
470
|
+
...field.means ? { means: field.means } : {},
|
|
471
|
+
...field.example !== void 0 ? { example: field.example } : {},
|
|
472
|
+
...field.description && field.description !== shape?.description ? { description: field.description } : {},
|
|
473
|
+
...field.secondary ? { secondary: true } : {},
|
|
474
|
+
...field.read ? { read: field.read } : {},
|
|
475
|
+
...field.in ? { in: field.in } : {},
|
|
476
|
+
...field.paths?.length ? { paths: field.paths } : {},
|
|
477
|
+
...field.fields && !shape ? { fields: jsonFields(field.fields, options) } : {}
|
|
478
|
+
}
|
|
479
|
+
];
|
|
480
|
+
})
|
|
481
|
+
);
|
|
482
|
+
}
|
|
483
|
+
function describedJson(described, view) {
|
|
484
|
+
const sections = [
|
|
485
|
+
["inputs", described.inputs, true],
|
|
486
|
+
["rowInputs", described.rowInputs, true],
|
|
487
|
+
["outputs", described.outputs, false],
|
|
488
|
+
["rowOutputs", described.rowOutputs, false]
|
|
489
|
+
];
|
|
490
|
+
const hidden = view.secondary ? [] : sections.flatMap(
|
|
491
|
+
([, fields, input]) => (fields ?? []).filter((field) => field.secondary && !(input && field.required)).map((field) => field.name)
|
|
492
|
+
);
|
|
493
|
+
const shapes = namedShapes(sections.flatMap(([, fields]) => fields ?? []));
|
|
494
|
+
const used = /* @__PURE__ */ new Set();
|
|
495
|
+
const blocks = Object.fromEntries(
|
|
496
|
+
sections.flatMap(
|
|
497
|
+
([key, fields, input]) => fields?.length ? [
|
|
498
|
+
[
|
|
499
|
+
key,
|
|
500
|
+
jsonFields(fields, {
|
|
501
|
+
input,
|
|
502
|
+
secondary: view.secondary,
|
|
503
|
+
shapes,
|
|
504
|
+
used
|
|
505
|
+
})
|
|
506
|
+
]
|
|
507
|
+
] : []
|
|
508
|
+
)
|
|
509
|
+
);
|
|
510
|
+
const types = {};
|
|
511
|
+
for (const shape of used) {
|
|
512
|
+
types[shape.name] = {
|
|
513
|
+
...shape.description ? { description: shape.description } : {},
|
|
514
|
+
fields: jsonFields(shape.fields, {
|
|
515
|
+
input: false,
|
|
516
|
+
secondary: true,
|
|
517
|
+
shapes,
|
|
518
|
+
used
|
|
519
|
+
})
|
|
520
|
+
};
|
|
521
|
+
}
|
|
522
|
+
const { cli, play } = examples(described, { verbose: view.verbose });
|
|
523
|
+
return {
|
|
524
|
+
kind: described.kind,
|
|
525
|
+
id: described.id,
|
|
526
|
+
...described.displayName ? { displayName: described.displayName } : {},
|
|
527
|
+
...described.description ? { description: described.description } : {},
|
|
528
|
+
...described.cost ? { cost: described.cost } : {},
|
|
529
|
+
...described.rateLimit ? { rateLimit: described.rateLimit } : {},
|
|
530
|
+
...described.byok ? { byok: described.byok } : {},
|
|
531
|
+
...described.guidance.length ? { guidance: described.guidance } : {},
|
|
532
|
+
...blocks,
|
|
533
|
+
...used.size ? { types } : {},
|
|
534
|
+
...described.exclusive ? { exclusive: described.exclusive } : {},
|
|
535
|
+
run: { cli, ...play ? { play } : {} },
|
|
536
|
+
...described.source ? { source: described.source } : {},
|
|
537
|
+
...hidden.length ? { hidden } : {}
|
|
538
|
+
};
|
|
539
|
+
}
|
|
364
540
|
|
|
365
541
|
// src/cli/execution-observation.ts
|
|
366
542
|
import { writeFileSync, renameSync } from "fs";
|
|
@@ -406,7 +582,7 @@ function addDescribeOptions(command, options = {}) {
|
|
|
406
582
|
"Show the Deepline tool or play, not a play your workspace created under the same name"
|
|
407
583
|
).option("--tool", "Same as --prebuilt").option(
|
|
408
584
|
"--verbose",
|
|
409
|
-
"
|
|
585
|
+
"Show secondary fields, and fill in every input and read every output in the examples"
|
|
410
586
|
).option(
|
|
411
587
|
"--cli-example",
|
|
412
588
|
"Show only the CLI example, and explain how it takes inputs and returns outputs"
|
|
@@ -416,6 +592,9 @@ function addDescribeOptions(command, options = {}) {
|
|
|
416
592
|
).option("--no-example", "Hide the run examples").option(
|
|
417
593
|
"--full-schema",
|
|
418
594
|
`Print every field: a long schema unfolded (over ${SCHEMA_LINE_LIMIT} lines), list rows, and a tool's raw response`
|
|
595
|
+
).option(
|
|
596
|
+
"--fields <names>",
|
|
597
|
+
"Show only these fields, comma-separated, plus every required input"
|
|
419
598
|
).option(
|
|
420
599
|
"-o, --out <path>",
|
|
421
600
|
"Save the output to this file instead of printing it"
|
|
@@ -426,6 +605,12 @@ function addDescribeOptions(command, options = {}) {
|
|
|
426
605
|
"Print only the schema, with every field, and nothing else"
|
|
427
606
|
);
|
|
428
607
|
}
|
|
608
|
+
if (options.byok !== false) {
|
|
609
|
+
command.option(
|
|
610
|
+
"--byok",
|
|
611
|
+
"For a tool, also show whether it can run on your own provider credentials, and how to connect them (always shown when it must)"
|
|
612
|
+
);
|
|
613
|
+
}
|
|
429
614
|
if (options.json !== false) {
|
|
430
615
|
command.option(
|
|
431
616
|
"--json",
|
|
@@ -436,6 +621,7 @@ function addDescribeOptions(command, options = {}) {
|
|
|
436
621
|
}
|
|
437
622
|
|
|
438
623
|
export {
|
|
624
|
+
byokLines,
|
|
439
625
|
SCHEMA_LINE_LIMIT,
|
|
440
626
|
schemaField,
|
|
441
627
|
schemaFields,
|
|
@@ -444,6 +630,7 @@ export {
|
|
|
444
630
|
examples,
|
|
445
631
|
describedLines,
|
|
446
632
|
topLevelField,
|
|
633
|
+
describedJson,
|
|
447
634
|
recordApiResponse,
|
|
448
635
|
recordPlayTermination,
|
|
449
636
|
addDescribeOptions
|