@nodetool-ai/cli-workflow 0.0.0-stage → 0.8.9-beta.2

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 (71) hide show
  1. package/README.md +14 -2
  2. package/dist/.nodetool-build-stamp +1 -0
  3. package/dist/api-client.d.ts +580 -0
  4. package/dist/api-client.d.ts.map +1 -0
  5. package/dist/api-client.js +34 -0
  6. package/dist/api-client.js.map +1 -0
  7. package/dist/commands/collections.d.ts +10 -0
  8. package/dist/commands/collections.d.ts.map +1 -0
  9. package/dist/commands/collections.js +257 -0
  10. package/dist/commands/collections.js.map +1 -0
  11. package/dist/commands/costs.d.ts +15 -0
  12. package/dist/commands/costs.d.ts.map +1 -0
  13. package/dist/commands/costs.js +201 -0
  14. package/dist/commands/costs.js.map +1 -0
  15. package/dist/commands/debug.d.ts +13 -0
  16. package/dist/commands/debug.d.ts.map +1 -0
  17. package/dist/commands/debug.js +149 -0
  18. package/dist/commands/debug.js.map +1 -0
  19. package/dist/commands/errors.d.ts +11 -0
  20. package/dist/commands/errors.d.ts.map +1 -0
  21. package/dist/commands/errors.js +177 -0
  22. package/dist/commands/errors.js.map +1 -0
  23. package/dist/commands/generate.d.ts +17 -0
  24. package/dist/commands/generate.d.ts.map +1 -0
  25. package/dist/commands/generate.js +326 -0
  26. package/dist/commands/generate.js.map +1 -0
  27. package/dist/commands/generations.d.ts +17 -0
  28. package/dist/commands/generations.d.ts.map +1 -0
  29. package/dist/commands/generations.js +408 -0
  30. package/dist/commands/generations.js.map +1 -0
  31. package/dist/commands/install-missing-packs.d.ts +21 -0
  32. package/dist/commands/install-missing-packs.d.ts.map +1 -0
  33. package/dist/commands/install-missing-packs.js +48 -0
  34. package/dist/commands/install-missing-packs.js.map +1 -0
  35. package/dist/commands/node.d.ts +10 -0
  36. package/dist/commands/node.d.ts.map +1 -0
  37. package/dist/commands/node.js +130 -0
  38. package/dist/commands/node.js.map +1 -0
  39. package/dist/commands/projects.d.ts +11 -0
  40. package/dist/commands/projects.d.ts.map +1 -0
  41. package/dist/commands/projects.js +145 -0
  42. package/dist/commands/projects.js.map +1 -0
  43. package/dist/commands/resource-read.d.ts +28 -0
  44. package/dist/commands/resource-read.d.ts.map +1 -0
  45. package/dist/commands/resource-read.js +314 -0
  46. package/dist/commands/resource-read.js.map +1 -0
  47. package/dist/commands/runs.d.ts +7 -0
  48. package/dist/commands/runs.d.ts.map +1 -0
  49. package/dist/commands/runs.js +302 -0
  50. package/dist/commands/runs.js.map +1 -0
  51. package/dist/commands/validate.d.ts +24 -0
  52. package/dist/commands/validate.d.ts.map +1 -0
  53. package/dist/commands/validate.js +132 -0
  54. package/dist/commands/validate.js.map +1 -0
  55. package/dist/index.d.ts +16 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +1034 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/nodetool.d.ts +3 -0
  60. package/dist/nodetool.d.ts.map +1 -0
  61. package/dist/nodetool.js +4 -0
  62. package/dist/nodetool.js.map +1 -0
  63. package/dist/packs/command-service.d.ts +3 -0
  64. package/dist/packs/command-service.d.ts.map +1 -0
  65. package/dist/packs/command-service.js +9 -0
  66. package/dist/packs/command-service.js.map +1 -0
  67. package/dist/workflow-packs.d.ts +7 -0
  68. package/dist/workflow-packs.d.ts.map +1 -0
  69. package/dist/workflow-packs.js +31 -0
  70. package/dist/workflow-packs.js.map +1 -0
  71. package/package.json +73 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/commands/node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * `nodetool projects` — list projects and move whole projects between
3
+ * installs as `.nodetool-project` files.
4
+ *
5
+ * Runs in-process against the local database, asset store, and workspaces, the
6
+ * same ones the local server uses. `export` writes what the server's
7
+ * `GET /api/projects/:id/export` streams, and `import` reads what it accepts.
8
+ */
9
+ import type { Command } from "commander";
10
+ export declare function registerProjectCommands(program: Command): void;
11
+ //# sourceMappingURL=projects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/commands/projects.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAezC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuJ9D"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * `nodetool projects` — list projects and move whole projects between
3
+ * installs as `.nodetool-project` files.
4
+ *
5
+ * Runs in-process against the local database, asset store, and workspaces, the
6
+ * same ones the local server uses. `export` writes what the server's
7
+ * `GET /api/projects/:id/export` streams, and `import` reads what it accepts.
8
+ */
9
+ import { createWriteStream } from "node:fs";
10
+ import { readFile } from "node:fs/promises";
11
+ import { once } from "node:events";
12
+ import { Project } from "@nodetool-ai/models";
13
+ import { asJson, printTable } from "@nodetool-ai/cli-common/commands/output";
14
+ import { setupLocalDb, LOCAL_USER_ID } from "@nodetool-ai/cli-local/local-db";
15
+ function fail(e) {
16
+ console.error(String(e instanceof Error ? e.message : e));
17
+ process.exit(1);
18
+ }
19
+ function fileBase(name) {
20
+ return (name || "project").replace(/[^A-Za-z0-9._-]+/g, "_") || "project";
21
+ }
22
+ export function registerProjectCommands(program) {
23
+ const projects = program
24
+ .command("projects")
25
+ .description("List, export, and import projects");
26
+ projects
27
+ .command("list")
28
+ .description("List projects, newest first")
29
+ .option("--archived", "List archived projects instead")
30
+ .option("--json", "Output as JSON")
31
+ .action(async (opts) => {
32
+ try {
33
+ await setupLocalDb();
34
+ const rows = await Project.listByUser(LOCAL_USER_ID, 1000, opts.archived ?? false);
35
+ if (opts.json) {
36
+ asJson(rows.map((row) => row.toResponse()));
37
+ return;
38
+ }
39
+ printTable(rows.map((row) => ({
40
+ id: row.id,
41
+ name: row.name,
42
+ kind: row.kind,
43
+ updated: row.updated_at
44
+ })));
45
+ }
46
+ catch (e) {
47
+ fail(e);
48
+ }
49
+ });
50
+ projects
51
+ .command("export <project_id>")
52
+ .description("Write a project with all of its documents, workflows, chats, assets, " +
53
+ "and workspace files to a .nodetool-project file")
54
+ .option("-o, --output <file>", "Output path (default: <name>.nodetool-project)")
55
+ .option("--json", "Print the manifest as JSON")
56
+ .action(async (projectId, opts) => {
57
+ try {
58
+ await setupLocalDb();
59
+ const { projectArchiveHost, streamZip, writeProjectArchive, PROJECT_ARCHIVE_EXTENSION } = await import("@nodetool-ai/project-services");
60
+ const project = await Project.findOwned(LOCAL_USER_ID, projectId);
61
+ if (!project)
62
+ throw new Error(`Project not found: ${projectId}`);
63
+ const outPath = opts.output ?? `${fileBase(project.name)}${PROJECT_ARCHIVE_EXTENSION}`;
64
+ const host = projectArchiveHost();
65
+ let manifest = null;
66
+ const zip = streamZip(async (writer) => {
67
+ manifest = await writeProjectArchive({
68
+ userId: LOCAL_USER_ID,
69
+ projectId: project.id,
70
+ storage: host.storage,
71
+ openWorkspace: host.openWorkspace
72
+ }, writer);
73
+ });
74
+ const out = createWriteStream(outPath);
75
+ zip.pipe(out);
76
+ await Promise.race([
77
+ once(out, "finish"),
78
+ once(zip, "error").then(([error]) => {
79
+ throw error;
80
+ })
81
+ ]);
82
+ const written = manifest;
83
+ if (!written)
84
+ throw new Error("Export wrote no manifest");
85
+ for (const skip of written.skipped) {
86
+ console.error(` warning: skipped ${skip.kind} ${skip.id}: ${skip.reason}`);
87
+ }
88
+ if (opts.json) {
89
+ asJson({ file: outPath, manifest: written });
90
+ return;
91
+ }
92
+ const counts = Object.entries(written.counts)
93
+ .filter(([, n]) => n > 0)
94
+ .map(([table, n]) => `${n} ${table}`)
95
+ .join(", ");
96
+ console.error(` exported ${counts || "an empty project"}; ` +
97
+ `${written.assets.length} asset file(s), ` +
98
+ `${written.workspace_files.length} workspace file(s)`);
99
+ console.log(outPath);
100
+ }
101
+ catch (e) {
102
+ fail(e);
103
+ }
104
+ });
105
+ projects
106
+ .command("import <file>")
107
+ .description("Import a .nodetool-project file as a new project")
108
+ .option("--name <name>", "Name for the new project (default: the exported name)")
109
+ .option("--json", "Output the result as JSON")
110
+ .action(async (file, opts) => {
111
+ try {
112
+ await setupLocalDb();
113
+ const { importProjectArchive, projectArchiveHost } = await import("@nodetool-ai/project-services");
114
+ const result = await importProjectArchive(new Uint8Array(await readFile(file)), {
115
+ userId: LOCAL_USER_ID,
116
+ name: opts.name,
117
+ ...projectArchiveHost()
118
+ });
119
+ for (const m of result.missing) {
120
+ console.error(` warning: ${m} is listed but missing from the file`);
121
+ }
122
+ for (const m of result.checksumMismatches) {
123
+ console.error(` warning: ${m} does not match its checksum`);
124
+ }
125
+ for (const skip of result.skipped) {
126
+ console.error(` note: the export skipped ${skip.kind} ${skip.id}: ${skip.reason}`);
127
+ }
128
+ if (opts.json) {
129
+ asJson({
130
+ project: result.project.toResponse(),
131
+ counts: result.counts,
132
+ missing: result.missing,
133
+ checksum_mismatches: result.checksumMismatches,
134
+ skipped: result.skipped
135
+ });
136
+ return;
137
+ }
138
+ console.log(result.project.id);
139
+ }
140
+ catch (e) {
141
+ fail(e);
142
+ }
143
+ });
144
+ }
145
+ //# sourceMappingURL=projects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/commands/projects.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * `workflows list|get`, `jobs list|get`, `assets list|get`.
3
+ *
4
+ * Each reads from the local SQLite database, or from a server when `--api-url`
5
+ * (or `NODETOOL_API_URL`) is set. The two sources return different records —
6
+ * the local model row carries every column, the server returns its declared
7
+ * response schema — so both are projected onto one field list per resource
8
+ * before anything is printed. Without that, `--json` handed an agent a
9
+ * different key set depending on an environment variable it never set.
10
+ *
11
+ * Each field list is the intersection of the model row and the server's
12
+ * response schema, so every key in the output is real on both paths: the
13
+ * server's derived fields (`etag`, `get_url`, `thumb_url`, `input_schema`) and
14
+ * the local-only blobs (a job's `graph` and `logs`) are both left out.
15
+ */
16
+ import type { Command } from "commander";
17
+ export interface ResourceReadDeps {
18
+ /** Open the local database. Called only on the direct-DB path. */
19
+ ensureDb: () => void;
20
+ /** The single-user id every direct-DB command runs as. */
21
+ localUserId: string;
22
+ }
23
+ export declare function registerResourceReadCommands(parents: {
24
+ workflows: Command;
25
+ jobs: Command;
26
+ assets: Command;
27
+ }, deps: ResourceReadDeps): void;
28
+ //# sourceMappingURL=resource-read.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-read.d.ts","sourceRoot":"","sources":["../../src/commands/resource-read.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC,MAAM,WAAW,gBAAgB;IAC/B,kEAAkE;IAClE,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;CACrB;AA6GD,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,EAC/D,IAAI,EAAE,gBAAgB,GACrB,IAAI,CAiPN"}
@@ -0,0 +1,314 @@
1
+ /**
2
+ * `workflows list|get`, `jobs list|get`, `assets list|get`.
3
+ *
4
+ * Each reads from the local SQLite database, or from a server when `--api-url`
5
+ * (or `NODETOOL_API_URL`) is set. The two sources return different records —
6
+ * the local model row carries every column, the server returns its declared
7
+ * response schema — so both are projected onto one field list per resource
8
+ * before anything is printed. Without that, `--json` handed an agent a
9
+ * different key set depending on an environment variable it never set.
10
+ *
11
+ * Each field list is the intersection of the model row and the server's
12
+ * response schema, so every key in the output is real on both paths: the
13
+ * server's derived fields (`etag`, `get_url`, `thumb_url`, `input_schema`) and
14
+ * the local-only blobs (a job's `graph` and `logs`) are both left out.
15
+ */
16
+ import { Workflow, Job, Asset } from "@nodetool-ai/models";
17
+ import { createApiClient } from "../api-client.js";
18
+ import { printCommandError } from "@nodetool-ai/pack-manager/command-errors";
19
+ import { parseNumericOption } from "@nodetool-ai/cli-common/numeric-options";
20
+ import { printTable, asJson } from "@nodetool-ai/cli-common/commands/output";
21
+ const WORKFLOW_FIELDS = [
22
+ "id",
23
+ "access",
24
+ "name",
25
+ "tool_name",
26
+ "description",
27
+ "tags",
28
+ "thumbnail",
29
+ "thumbnail_url",
30
+ "graph",
31
+ "settings",
32
+ "package_name",
33
+ "path",
34
+ "run_mode",
35
+ "workspace_id",
36
+ "html_app",
37
+ "app_doc",
38
+ "created_at",
39
+ "updated_at"
40
+ ];
41
+ const JOB_FIELDS = [
42
+ "id",
43
+ "user_id",
44
+ "job_type",
45
+ "status",
46
+ "name",
47
+ "workflow_id",
48
+ "started_at",
49
+ "finished_at",
50
+ "error",
51
+ "cost"
52
+ ];
53
+ const ASSET_FIELDS = [
54
+ "id",
55
+ "user_id",
56
+ "parent_id",
57
+ "name",
58
+ "content_type",
59
+ "size",
60
+ "duration",
61
+ "metadata",
62
+ "sketch_document_id",
63
+ "workflow_id",
64
+ "node_id",
65
+ "job_id",
66
+ "timeline_id",
67
+ "created_at"
68
+ ];
69
+ /** Missing keys become null so both sources emit the same key set. */
70
+ function project(raw, fields) {
71
+ const row = {};
72
+ for (const field of fields) {
73
+ row[field] = raw[field] ?? null;
74
+ }
75
+ return row;
76
+ }
77
+ function emitList(opts, rows, fields, columns) {
78
+ const projected = rows.map((row) => project(row, fields));
79
+ if (opts.json) {
80
+ asJson(projected);
81
+ return;
82
+ }
83
+ printTable(projected, columns);
84
+ }
85
+ function emitOne(opts, raw, fields, columns) {
86
+ const projected = project(raw, fields);
87
+ if (opts.json) {
88
+ asJson(projected);
89
+ return;
90
+ }
91
+ printTable([projected], columns);
92
+ }
93
+ function parseLimit(limit) {
94
+ return parseNumericOption(limit ?? "100", "--limit", {
95
+ integer: true,
96
+ min: 1
97
+ });
98
+ }
99
+ export function registerResourceReadCommands(parents, deps) {
100
+ const { ensureDb, localUserId } = deps;
101
+ parents.workflows
102
+ .command("list")
103
+ .description("List workflows (reads the local database; --api-url for remote)")
104
+ .option("--api-url <url>", "Query a remote server instead of the local database", process.env["NODETOOL_API_URL"])
105
+ .option("--limit <n>", "Max results", "100")
106
+ .option("--json", "Output as JSON")
107
+ .action(async (opts) => {
108
+ try {
109
+ const limit = parseLimit(opts.limit);
110
+ let rows;
111
+ if (opts.apiUrl) {
112
+ const data = await createApiClient(opts.apiUrl).workflows.list.query({
113
+ limit
114
+ });
115
+ rows = data.workflows;
116
+ }
117
+ else {
118
+ ensureDb();
119
+ const [items] = await Workflow.paginate(localUserId, { limit });
120
+ rows = items.map((w) => ({ ...w }));
121
+ }
122
+ emitList(opts, rows, WORKFLOW_FIELDS, ["id", "name", "updated_at"]);
123
+ }
124
+ catch (e) {
125
+ process.exit(printCommandError(e, opts.json));
126
+ }
127
+ });
128
+ parents.workflows
129
+ .command("get <workflow_id>")
130
+ .description("Get a workflow by ID (reads the local database; --api-url for remote)")
131
+ .option("--api-url <url>", "Query a remote server instead of the local database", process.env["NODETOOL_API_URL"])
132
+ .option("--json", "Output as JSON")
133
+ .action(async (workflowId, opts) => {
134
+ try {
135
+ let data;
136
+ if (opts.apiUrl) {
137
+ data = await createApiClient(opts.apiUrl).workflows.get.query({
138
+ id: workflowId
139
+ });
140
+ }
141
+ else {
142
+ ensureDb();
143
+ const wf = await Workflow.find(localUserId, workflowId);
144
+ if (!wf)
145
+ throw new Error(`Workflow not found: ${workflowId}`);
146
+ data = { ...wf };
147
+ }
148
+ emitOne(opts, data, WORKFLOW_FIELDS, [
149
+ "id",
150
+ "name",
151
+ "description",
152
+ "updated_at"
153
+ ]);
154
+ }
155
+ catch (e) {
156
+ process.exit(printCommandError(e, opts.json));
157
+ }
158
+ });
159
+ parents.jobs
160
+ .command("list")
161
+ .description("List jobs (reads the local database; --api-url for remote)")
162
+ .option("--api-url <url>", "Query a remote server instead of the local database", process.env["NODETOOL_API_URL"])
163
+ .option("--workflow-id <id>", "Filter by workflow ID")
164
+ .option("--limit <n>", "Max results", "100")
165
+ .option("--json", "Output as JSON")
166
+ .action(async (opts) => {
167
+ try {
168
+ const limit = parseLimit(opts.limit);
169
+ let rows;
170
+ if (opts.apiUrl) {
171
+ const query = { limit };
172
+ if (opts.workflowId) {
173
+ query.workflow_id = opts.workflowId;
174
+ }
175
+ const data = await createApiClient(opts.apiUrl).jobs.list.query(query);
176
+ rows = data.jobs;
177
+ }
178
+ else {
179
+ ensureDb();
180
+ const page = { limit };
181
+ if (opts.workflowId) {
182
+ page.workflowId = opts.workflowId;
183
+ }
184
+ const [items] = await Job.paginate(localUserId, page);
185
+ rows = items.map((j) => ({ ...j }));
186
+ }
187
+ emitList(opts, rows, JOB_FIELDS, [
188
+ "id",
189
+ "status",
190
+ "workflow_id",
191
+ "started_at",
192
+ "cost"
193
+ ]);
194
+ }
195
+ catch (e) {
196
+ process.exit(printCommandError(e, opts.json));
197
+ }
198
+ });
199
+ parents.jobs
200
+ .command("get <job_id>")
201
+ .description("Get a job by ID (reads the local database; --api-url for remote)")
202
+ .option("--api-url <url>", "Query a remote server instead of the local database", process.env["NODETOOL_API_URL"])
203
+ .option("--json", "Output as JSON")
204
+ .action(async (jobId, opts) => {
205
+ try {
206
+ let data;
207
+ if (opts.apiUrl) {
208
+ data = await createApiClient(opts.apiUrl).jobs.get.query({
209
+ id: jobId
210
+ });
211
+ }
212
+ else {
213
+ ensureDb();
214
+ const job = await Job.find(localUserId, jobId);
215
+ if (!job)
216
+ throw new Error(`Job not found: ${jobId}`);
217
+ data = { ...job };
218
+ }
219
+ emitOne(opts, data, JOB_FIELDS, [
220
+ "id",
221
+ "status",
222
+ "workflow_id",
223
+ "error",
224
+ "cost"
225
+ ]);
226
+ }
227
+ catch (e) {
228
+ process.exit(printCommandError(e, opts.json));
229
+ }
230
+ });
231
+ parents.assets
232
+ .command("list")
233
+ .description("List assets (reads the local database; --api-url for remote)")
234
+ .option("--api-url <url>", "Query a remote server instead of the local database", process.env["NODETOOL_API_URL"])
235
+ .option("--query <q>", "Search query")
236
+ .option("--content-type <type>", "Filter by content type")
237
+ .option("--limit <n>", "Max results", "100")
238
+ .option("--json", "Output as JSON")
239
+ .action(async (opts) => {
240
+ try {
241
+ const limit = parseLimit(opts.limit);
242
+ let rows;
243
+ if (opts.apiUrl) {
244
+ const query = {
245
+ page_size: limit
246
+ };
247
+ if (opts.contentType) {
248
+ query.content_type = opts.contentType;
249
+ }
250
+ const data = await createApiClient(opts.apiUrl).assets.list.query(query);
251
+ rows = data.assets;
252
+ }
253
+ else {
254
+ ensureDb();
255
+ const page = { limit };
256
+ if (opts.contentType) {
257
+ page.contentType = opts.contentType;
258
+ }
259
+ const [items] = await Asset.paginate(localUserId, page);
260
+ rows = items.map((a) => ({ ...a }));
261
+ }
262
+ // --query has no server-side search; filter by name in memory (matches
263
+ // the direct path too, which paginates without a search term).
264
+ if (opts.query) {
265
+ const q = opts.query.toLowerCase();
266
+ rows = rows.filter((r) => String(r["name"] ?? "")
267
+ .toLowerCase()
268
+ .includes(q));
269
+ }
270
+ emitList(opts, rows, ASSET_FIELDS, [
271
+ "id",
272
+ "name",
273
+ "content_type",
274
+ "size"
275
+ ]);
276
+ }
277
+ catch (e) {
278
+ process.exit(printCommandError(e, opts.json));
279
+ }
280
+ });
281
+ parents.assets
282
+ .command("get <asset_id>")
283
+ .description("Get an asset by ID (reads the local database; --api-url for remote)")
284
+ .option("--api-url <url>", "Query a remote server instead of the local database", process.env["NODETOOL_API_URL"])
285
+ .option("--json", "Output as JSON")
286
+ .action(async (assetId, opts) => {
287
+ try {
288
+ let data;
289
+ if (opts.apiUrl) {
290
+ data = await createApiClient(opts.apiUrl).assets.get.query({
291
+ id: assetId
292
+ });
293
+ }
294
+ else {
295
+ ensureDb();
296
+ const asset = await Asset.find(localUserId, assetId);
297
+ if (!asset)
298
+ throw new Error(`Asset not found: ${assetId}`);
299
+ data = { ...asset };
300
+ }
301
+ emitOne(opts, data, ASSET_FIELDS, [
302
+ "id",
303
+ "name",
304
+ "content_type",
305
+ "size",
306
+ "created_at"
307
+ ]);
308
+ }
309
+ catch (e) {
310
+ process.exit(printCommandError(e, opts.json));
311
+ }
312
+ });
313
+ }
314
+ //# sourceMappingURL=resource-read.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-read.js","sourceRoot":"","sources":["../../src/commands/resource-read.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,yCAAyC,CAAC;AAkB7E,MAAM,eAAe,GAAG;IACtB,IAAI;IACJ,QAAQ;IACR,MAAM;IACN,WAAW;IACX,aAAa;IACb,MAAM;IACN,WAAW;IACX,eAAe;IACf,OAAO;IACP,UAAU;IACV,cAAc;IACd,MAAM;IACN,UAAU;IACV,cAAc;IACd,UAAU;IACV,SAAS;IACT,YAAY;IACZ,YAAY;CACJ,CAAC;AAEX,MAAM,UAAU,GAAG;IACjB,IAAI;IACJ,SAAS;IACT,UAAU;IACV,QAAQ;IACR,MAAM;IACN,aAAa;IACb,YAAY;IACZ,aAAa;IACb,OAAO;IACP,MAAM;CACE,CAAC;AAEX,MAAM,YAAY,GAAG;IACnB,IAAI;IACJ,SAAS;IACT,WAAW;IACX,MAAM;IACN,cAAc;IACd,MAAM;IACN,UAAU;IACV,UAAU;IACV,oBAAoB;IACpB,aAAa;IACb,SAAS;IACT,QAAQ;IACR,aAAa;IACb,YAAY;CACJ,CAAC;AAEX,sEAAsE;AACtE,SAAS,OAAO,CACd,GAA4B,EAC5B,MAAyB;IAEzB,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;IAClC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,QAAQ,CACf,IAAiB,EACjB,IAAwC,EACxC,MAAyB,EACzB,OAAiB;IAEjB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1D,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,CAAC,SAAS,CAAC,CAAC;QAClB,OAAO;IACT,CAAC;IACD,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,OAAO,CACd,IAAiB,EACjB,GAA4B,EAC5B,MAAyB,EACzB,OAAiB;IAEjB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACvC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,CAAC,SAAS,CAAC,CAAC;QAClB,OAAO;IACT,CAAC;IACD,UAAU,CAAC,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,UAAU,CAAC,KAAyB;IAC3C,OAAO,kBAAkB,CAAC,KAAK,IAAI,KAAK,EAAE,SAAS,EAAE;QACnD,OAAO,EAAE,IAAI;QACb,GAAG,EAAE,CAAC;KACP,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,OAA+D,EAC/D,IAAsB;IAEtB,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAEvC,OAAO,CAAC,SAAS;SACd,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CACV,iEAAiE,CAClE;SACA,MAAM,CACL,iBAAiB,EACjB,qDAAqD,EACrD,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAChC;SACA,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,KAAK,CAAC;SAC3C,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,IAAiB,EAAE,EAAE;QAClC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,IAA+B,CAAC;YACpC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;oBACnE,KAAK;iBACN,CAAC,CAAC;gBACH,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,QAAQ,EAAE,CAAC;gBACX,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBAChE,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACtC,CAAC;YACD,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;QACtE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,CAAC,SAAS;SACd,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CACV,uEAAuE,CACxE;SACA,MAAM,CACL,iBAAiB,EACjB,qDAAqD,EACrD,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAChC;SACA,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,UAAkB,EAAE,IAAiB,EAAE,EAAE;QACtD,IAAI,CAAC;YACH,IAAI,IAA6B,CAAC;YAClC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,IAAI,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;oBAC5D,EAAE,EAAE,UAAU;iBACf,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,QAAQ,EAAE,CAAC;gBACX,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;gBACxD,IAAI,CAAC,EAAE;oBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC;gBAC9D,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;YACnB,CAAC;YACD,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE;gBACnC,IAAI;gBACJ,MAAM;gBACN,aAAa;gBACb,YAAY;aACb,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,CAAC,IAAI;SACT,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,4DAA4D,CAAC;SACzE,MAAM,CACL,iBAAiB,EACjB,qDAAqD,EACrD,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAChC;SACA,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC;SACrD,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,KAAK,CAAC;SAC3C,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,IAAiB,EAAE,EAAE;QAClC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,IAA+B,CAAC;YACpC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,MAAM,KAAK,GAA4C,EAAE,KAAK,EAAE,CAAC;gBACjE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBACpB,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC;gBACtC,CAAC;gBACD,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACvE,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,QAAQ,EAAE,CAAC;gBACX,MAAM,IAAI,GAAuC,EAAE,KAAK,EAAE,CAAC;gBAC3D,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;gBACpC,CAAC;gBACD,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;gBACtD,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACtC,CAAC;YACD,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE;gBAC/B,IAAI;gBACJ,QAAQ;gBACR,aAAa;gBACb,YAAY;gBACZ,MAAM;aACP,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,CAAC,IAAI;SACT,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CACV,kEAAkE,CACnE;SACA,MAAM,CACL,iBAAiB,EACjB,qDAAqD,EACrD,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAChC;SACA,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,IAAiB,EAAE,EAAE;QACjD,IAAI,CAAC;YACH,IAAI,IAA6B,CAAC;YAClC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,IAAI,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;oBACvD,EAAE,EAAE,KAAK;iBACV,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,QAAQ,EAAE,CAAC;gBACX,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;gBAC/C,IAAI,CAAC,GAAG;oBAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAC;gBACrD,IAAI,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC;YACpB,CAAC;YACD,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE;gBAC9B,IAAI;gBACJ,QAAQ;gBACR,aAAa;gBACb,OAAO;gBACP,MAAM;aACP,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,CAAC,MAAM;SACX,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,8DAA8D,CAAC;SAC3E,MAAM,CACL,iBAAiB,EACjB,qDAAqD,EACrD,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAChC;SACA,MAAM,CAAC,aAAa,EAAE,cAAc,CAAC;SACrC,MAAM,CAAC,uBAAuB,EAAE,wBAAwB,CAAC;SACzD,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,KAAK,CAAC;SAC3C,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,IAAiB,EAAE,EAAE;QAClC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,IAA+B,CAAC;YACpC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,MAAM,KAAK,GAAiD;oBAC1D,SAAS,EAAE,KAAK;iBACjB,CAAC;gBACF,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBACrB,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC;gBACxC,CAAC;gBACD,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAC/D,KAAK,CACN,CAAC;gBACF,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,QAAQ,EAAE,CAAC;gBACX,MAAM,IAAI,GAAyC,EAAE,KAAK,EAAE,CAAC;gBAC7D,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;gBACtC,CAAC;gBACD,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;gBACxD,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACtC,CAAC;YACD,uEAAuE;YACvE,+DAA+D;YAC/D,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;gBACnC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACvB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;qBACpB,WAAW,EAAE;qBACb,QAAQ,CAAC,CAAC,CAAC,CACf,CAAC;YACJ,CAAC;YACD,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE;gBACjC,IAAI;gBACJ,MAAM;gBACN,cAAc;gBACd,MAAM;aACP,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,CAAC,MAAM;SACX,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CACV,qEAAqE,CACtE;SACA,MAAM,CACL,iBAAiB,EACjB,qDAAqD,EACrD,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAChC;SACA,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,IAAiB,EAAE,EAAE;QACnD,IAAI,CAAC;YACH,IAAI,IAA6B,CAAC;YAClC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,IAAI,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;oBACzD,EAAE,EAAE,OAAO;iBACZ,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,QAAQ,EAAE,CAAC;gBACX,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBACrD,IAAI,CAAC,KAAK;oBAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;gBAC3D,IAAI,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;YACtB,CAAC;YACD,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE;gBAChC,IAAI;gBACJ,MAAM;gBACN,cAAc;gBACd,MAAM;gBACN,YAAY;aACb,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { Command } from "commander";
2
+ export interface RunsCommandDependencies {
3
+ ensureDb: () => Promise<void>;
4
+ localUserId: string;
5
+ }
6
+ export declare function registerRunsCommands(program: Command, deps: RunsCommandDependencies): void;
7
+ //# sourceMappingURL=runs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runs.d.ts","sourceRoot":"","sources":["../../src/commands/runs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAazC,MAAM,WAAW,uBAAuB;IAAG,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;CAAE;AAqJhG,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,uBAAuB,GAAG,IAAI,CAkF1F"}