veryfront 0.1.71 → 0.1.72

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 (79) hide show
  1. package/esm/cli/commands/files/command-help.d.ts +3 -0
  2. package/esm/cli/commands/files/command-help.d.ts.map +1 -0
  3. package/esm/cli/commands/files/command-help.js +38 -0
  4. package/esm/cli/commands/files/command.d.ts +105 -0
  5. package/esm/cli/commands/files/command.d.ts.map +1 -0
  6. package/esm/cli/commands/files/command.js +250 -0
  7. package/esm/cli/commands/files/handler.d.ts +3 -0
  8. package/esm/cli/commands/files/handler.d.ts.map +1 -0
  9. package/esm/cli/commands/files/handler.js +4 -0
  10. package/esm/cli/commands/files/index.d.ts +4 -0
  11. package/esm/cli/commands/files/index.d.ts.map +1 -0
  12. package/esm/cli/commands/files/index.js +2 -0
  13. package/esm/cli/commands/knowledge/command-help.d.ts +3 -0
  14. package/esm/cli/commands/knowledge/command-help.d.ts.map +1 -0
  15. package/esm/cli/commands/knowledge/command-help.js +38 -0
  16. package/esm/cli/commands/knowledge/command.d.ts +122 -0
  17. package/esm/cli/commands/knowledge/command.d.ts.map +1 -0
  18. package/esm/cli/commands/knowledge/command.js +382 -0
  19. package/esm/cli/commands/knowledge/handler.d.ts +3 -0
  20. package/esm/cli/commands/knowledge/handler.d.ts.map +1 -0
  21. package/esm/cli/commands/knowledge/handler.js +4 -0
  22. package/esm/cli/commands/knowledge/index.d.ts +3 -0
  23. package/esm/cli/commands/knowledge/index.d.ts.map +1 -0
  24. package/esm/cli/commands/knowledge/index.js +2 -0
  25. package/esm/cli/commands/knowledge/parser-source.d.ts +2 -0
  26. package/esm/cli/commands/knowledge/parser-source.d.ts.map +1 -0
  27. package/esm/cli/commands/knowledge/parser-source.js +415 -0
  28. package/esm/cli/commands/uploads/command-help.d.ts +3 -0
  29. package/esm/cli/commands/uploads/command-help.d.ts.map +1 -0
  30. package/esm/cli/commands/uploads/command-help.js +43 -0
  31. package/esm/cli/commands/uploads/command.d.ts +140 -0
  32. package/esm/cli/commands/uploads/command.d.ts.map +1 -0
  33. package/esm/cli/commands/uploads/command.js +323 -0
  34. package/esm/cli/commands/uploads/handler.d.ts +3 -0
  35. package/esm/cli/commands/uploads/handler.d.ts.map +1 -0
  36. package/esm/cli/commands/uploads/handler.js +4 -0
  37. package/esm/cli/commands/uploads/index.d.ts +4 -0
  38. package/esm/cli/commands/uploads/index.d.ts.map +1 -0
  39. package/esm/cli/commands/uploads/index.js +2 -0
  40. package/esm/cli/help/command-definitions.d.ts.map +1 -1
  41. package/esm/cli/help/command-definitions.js +6 -0
  42. package/esm/cli/router.d.ts.map +1 -1
  43. package/esm/cli/router.js +6 -0
  44. package/esm/deno.js +1 -1
  45. package/esm/src/errors/error-registry.d.ts +2 -0
  46. package/esm/src/errors/error-registry.d.ts.map +1 -1
  47. package/esm/src/errors/error-registry.js +8 -0
  48. package/esm/src/errors/index.d.ts +1 -1
  49. package/esm/src/errors/index.d.ts.map +1 -1
  50. package/esm/src/errors/index.js +1 -1
  51. package/esm/src/platform/compat/media-types.d.ts +5 -0
  52. package/esm/src/platform/compat/media-types.d.ts.map +1 -0
  53. package/esm/src/platform/compat/media-types.js +19 -0
  54. package/esm/src/platform/index.d.ts +1 -0
  55. package/esm/src/platform/index.d.ts.map +1 -1
  56. package/esm/src/platform/index.js +2 -0
  57. package/esm/src/server/bootstrap.js +5 -1
  58. package/package.json +2 -1
  59. package/src/cli/commands/files/command-help.ts +40 -0
  60. package/src/cli/commands/files/command.ts +328 -0
  61. package/src/cli/commands/files/handler.ts +6 -0
  62. package/src/cli/commands/files/index.ts +19 -0
  63. package/src/cli/commands/knowledge/command-help.ts +40 -0
  64. package/src/cli/commands/knowledge/command.ts +513 -0
  65. package/src/cli/commands/knowledge/handler.ts +6 -0
  66. package/src/cli/commands/knowledge/index.ts +2 -0
  67. package/src/cli/commands/knowledge/parser-source.ts +415 -0
  68. package/src/cli/commands/uploads/command-help.ts +45 -0
  69. package/src/cli/commands/uploads/command.ts +465 -0
  70. package/src/cli/commands/uploads/handler.ts +6 -0
  71. package/src/cli/commands/uploads/index.ts +23 -0
  72. package/src/cli/help/command-definitions.ts +6 -0
  73. package/src/cli/router.ts +6 -0
  74. package/src/deno.js +1 -1
  75. package/src/src/errors/error-registry.ts +9 -0
  76. package/src/src/errors/index.ts +1 -0
  77. package/src/src/platform/compat/media-types.ts +23 -0
  78. package/src/src/platform/index.ts +3 -0
  79. package/src/src/server/bootstrap.ts +6 -1
@@ -0,0 +1,323 @@
1
+ import * as dntShim from "../../../_dnt.shims.js";
2
+ import { z } from "zod";
3
+ import { createFileSystem, cwd, lookupMimeType } from "../../../src/platform/index.js";
4
+ import { dirname, join, normalize, resolve } from "../../../src/platform/compat/path/index.js";
5
+ import { withSpan } from "../../../src/observability/tracing/otlp-setup.js";
6
+ import { cliLogger } from "../../utils/index.js";
7
+ import { createApiClient, resolveConfigWithAuth } from "../../shared/config.js";
8
+ const UploadListArgsSchema = z.object({
9
+ projectSlug: z.string().optional(),
10
+ projectDir: z.string().optional(),
11
+ path: z.string().optional(),
12
+ limit: z.coerce.number().min(1).max(100).optional(),
13
+ recursive: z.boolean().default(true),
14
+ json: z.boolean().default(false),
15
+ quiet: z.boolean().default(false),
16
+ });
17
+ const UploadPullArgsSchema = z.object({
18
+ projectSlug: z.string().optional(),
19
+ projectDir: z.string().optional(),
20
+ uploads: z.array(z.string()).default([]),
21
+ path: z.string().optional(),
22
+ all: z.boolean().default(false),
23
+ outputDir: z.string().default(join(cwd(), "uploads")),
24
+ json: z.boolean().default(false),
25
+ quiet: z.boolean().default(false),
26
+ });
27
+ const UploadPutArgsSchema = z.object({
28
+ projectSlug: z.string().optional(),
29
+ projectDir: z.string().optional(),
30
+ uploadPath: z.string().min(1),
31
+ from: z.string().min(1),
32
+ contentType: z.string().optional(),
33
+ json: z.boolean().default(false),
34
+ quiet: z.boolean().default(false),
35
+ });
36
+ const UploadDeleteArgsSchema = z.object({
37
+ projectSlug: z.string().optional(),
38
+ projectDir: z.string().optional(),
39
+ uploadPath: z.string().min(1),
40
+ json: z.boolean().default(false),
41
+ quiet: z.boolean().default(false),
42
+ });
43
+ function getStringArg(args, ...keys) {
44
+ for (const key of keys) {
45
+ const value = args[key];
46
+ if (typeof value === "string" && value)
47
+ return value;
48
+ }
49
+ return undefined;
50
+ }
51
+ function getBooleanArg(args, ...keys) {
52
+ return keys.some((key) => Boolean(args[key]));
53
+ }
54
+ function printJson(value) {
55
+ console.log(JSON.stringify(value, null, 2));
56
+ }
57
+ function formatUploadItem(item) {
58
+ if (item.type === "folder")
59
+ return `[folder] ${item.path}`;
60
+ const size = typeof item.size === "number" ? ` (${item.size} bytes)` : "";
61
+ return `[file] ${item.path}${size}`;
62
+ }
63
+ function showUploadsUsage() {
64
+ console.log(`
65
+ Veryfront Uploads
66
+
67
+ Usage:
68
+ veryfront uploads list [options]
69
+ veryfront uploads pull <upload-path...> [options]
70
+ veryfront uploads pull --path <prefix> --all [options]
71
+ veryfront uploads put <upload-path> --from <local-file> [options]
72
+ veryfront uploads delete <upload-path> [options]
73
+
74
+ Subcommands:
75
+ list List uploads in the project uploads store
76
+ pull Download one or many uploads into a local directory
77
+ put Upload or replace a file in the project uploads store
78
+ delete Delete an upload by path
79
+ `);
80
+ }
81
+ function normalizeUploadPath(uploadPath) {
82
+ const normalizedPath = normalize(uploadPath).replace(/^\/+/, "");
83
+ if (!normalizedPath || normalizedPath.startsWith("..") || normalizedPath.startsWith("/")) {
84
+ throw new Error(`Invalid upload path: ${uploadPath}`);
85
+ }
86
+ return normalizedPath;
87
+ }
88
+ export function parseUploadsListArgs(args) {
89
+ return UploadListArgsSchema.safeParse({
90
+ projectSlug: getStringArg(args, "project", "p", "project-slug"),
91
+ projectDir: getStringArg(args, "project-dir", "dir", "d"),
92
+ path: getStringArg(args, "path"),
93
+ limit: args.limit,
94
+ recursive: args.recursive === undefined ? true : Boolean(args.recursive),
95
+ json: getBooleanArg(args, "json", "j"),
96
+ quiet: getBooleanArg(args, "quiet", "q"),
97
+ });
98
+ }
99
+ export function parseUploadsPullArgs(args) {
100
+ return UploadPullArgsSchema.safeParse({
101
+ projectSlug: getStringArg(args, "project", "p", "project-slug"),
102
+ projectDir: getStringArg(args, "project-dir", "dir", "d"),
103
+ uploads: args._.slice(2).filter((value) => typeof value === "string"),
104
+ path: getStringArg(args, "path"),
105
+ all: getBooleanArg(args, "all"),
106
+ outputDir: getStringArg(args, "output-dir") ?? join(cwd(), "uploads"),
107
+ json: getBooleanArg(args, "json", "j"),
108
+ quiet: getBooleanArg(args, "quiet", "q"),
109
+ });
110
+ }
111
+ export function parseUploadsPutArgs(args) {
112
+ return UploadPutArgsSchema.safeParse({
113
+ projectSlug: getStringArg(args, "project", "p", "project-slug"),
114
+ projectDir: getStringArg(args, "project-dir", "dir", "d"),
115
+ uploadPath: typeof args._[2] === "string" ? args._[2] : "",
116
+ from: getStringArg(args, "from") ?? "",
117
+ contentType: getStringArg(args, "content-type"),
118
+ json: getBooleanArg(args, "json", "j"),
119
+ quiet: getBooleanArg(args, "quiet", "q"),
120
+ });
121
+ }
122
+ export function parseUploadsDeleteArgs(args) {
123
+ return UploadDeleteArgsSchema.safeParse({
124
+ projectSlug: getStringArg(args, "project", "p", "project-slug"),
125
+ projectDir: getStringArg(args, "project-dir", "dir", "d"),
126
+ uploadPath: typeof args._[2] === "string" ? args._[2] : "",
127
+ json: getBooleanArg(args, "json", "j"),
128
+ quiet: getBooleanArg(args, "quiet", "q"),
129
+ });
130
+ }
131
+ export function buildUploadsListUrl(projectSlug) {
132
+ return `/projects/${projectSlug}/uploads`;
133
+ }
134
+ export function buildUploadCreateUrl(projectSlug) {
135
+ return `/projects/${projectSlug}/uploads`;
136
+ }
137
+ export function buildUploadSignedUrlPath(projectSlug, uploadPath) {
138
+ return `/projects/${projectSlug}/uploads/${encodeURIComponent(normalizeUploadPath(uploadPath))}/url`;
139
+ }
140
+ function buildUploadDeleteUrl(projectSlug, uploadPath) {
141
+ return `/projects/${projectSlug}/uploads/${encodeURIComponent(normalizeUploadPath(uploadPath))}`;
142
+ }
143
+ export async function listAllUploads(client, projectSlug, options = {}) {
144
+ const allItems = [];
145
+ let cursor;
146
+ do {
147
+ const params = {
148
+ limit: String(options.limit ?? 100),
149
+ recursive: String(options.recursive ?? true),
150
+ };
151
+ if (options.path)
152
+ params.path = options.path;
153
+ if (cursor)
154
+ params.cursor = cursor;
155
+ const response = await client.get(buildUploadsListUrl(projectSlug), params);
156
+ allItems.push(...response.data);
157
+ cursor = response.page_info?.next ?? undefined;
158
+ } while (cursor);
159
+ return allItems;
160
+ }
161
+ export function resolveUploadOutputPath(uploadPath, outputDir) {
162
+ const normalizedPath = normalizeUploadPath(uploadPath);
163
+ const fullPath = resolve(outputDir, normalizedPath);
164
+ const resolvedOutputDir = resolve(outputDir);
165
+ if (!fullPath.startsWith(`${resolvedOutputDir}/`) && fullPath !== resolvedOutputDir) {
166
+ throw new Error(`Invalid upload path: ${uploadPath}`);
167
+ }
168
+ return fullPath;
169
+ }
170
+ export async function downloadUploadToFile(client, projectSlug, uploadPath, outputDir) {
171
+ const fs = createFileSystem();
172
+ const signedUrl = await client.get(buildUploadSignedUrlPath(projectSlug, uploadPath));
173
+ const response = await dntShim.fetch(signedUrl.signed_url);
174
+ if (!response.ok) {
175
+ throw new Error(`Failed to download upload: ${uploadPath}`);
176
+ }
177
+ const bytes = new Uint8Array(await response.arrayBuffer());
178
+ const localPath = resolveUploadOutputPath(uploadPath, outputDir);
179
+ await fs.mkdir(dirname(localPath), { recursive: true });
180
+ await fs.writeFile(localPath, bytes);
181
+ return { uploadPath: normalizeUploadPath(uploadPath), localPath, bytes: bytes.byteLength };
182
+ }
183
+ export async function uploadLocalFileToUploads(client, projectSlug, uploadPath, localPath, contentType) {
184
+ const fs = createFileSystem();
185
+ const normalizedPath = normalizeUploadPath(uploadPath);
186
+ const bytes = await fs.readFile(localPath);
187
+ const inferredContentType = contentType ?? lookupMimeType(localPath) ??
188
+ "application/octet-stream";
189
+ const createResponse = await client.post(buildUploadCreateUrl(projectSlug), {
190
+ file_path: normalizedPath,
191
+ content_type: inferredContentType,
192
+ size: bytes.byteLength,
193
+ });
194
+ const uploadResponse = await dntShim.fetch(createResponse.file_upload_url, {
195
+ method: "PUT",
196
+ headers: createResponse.required_headers,
197
+ body: bytes,
198
+ });
199
+ if (!uploadResponse.ok) {
200
+ throw new Error(`Failed to upload file to storage: ${normalizedPath}`);
201
+ }
202
+ return createResponse;
203
+ }
204
+ export async function deleteUpload(client, projectSlug, uploadPath) {
205
+ await client.delete(buildUploadDeleteUrl(projectSlug, uploadPath));
206
+ }
207
+ export async function uploadsCommand(args) {
208
+ const subcommand = typeof args._[1] === "string" ? args._[1] : undefined;
209
+ if (!subcommand || subcommand === "help") {
210
+ showUploadsUsage();
211
+ return;
212
+ }
213
+ await withSpan("cli.command.uploads", async () => {
214
+ switch (subcommand) {
215
+ case "list": {
216
+ const parsed = parseUploadsListArgs(args);
217
+ if (!parsed.success) {
218
+ throw new Error(`Invalid uploads list arguments: ${parsed.error.message}`);
219
+ }
220
+ const options = parsed.data;
221
+ let config = await resolveConfigWithAuth(options.projectDir);
222
+ if (options.projectSlug)
223
+ config = { ...config, projectSlug: options.projectSlug };
224
+ const client = createApiClient(config);
225
+ const uploads = await listAllUploads(client, config.projectSlug, options);
226
+ if (options.json) {
227
+ printJson(uploads);
228
+ return;
229
+ }
230
+ if (!uploads.length) {
231
+ cliLogger.info("No uploads found.");
232
+ return;
233
+ }
234
+ for (const upload of uploads) {
235
+ console.log(formatUploadItem(upload));
236
+ }
237
+ return;
238
+ }
239
+ case "pull": {
240
+ const parsed = parseUploadsPullArgs(args);
241
+ if (!parsed.success) {
242
+ throw new Error(`Invalid uploads pull arguments: ${parsed.error.message}`);
243
+ }
244
+ const options = parsed.data;
245
+ let config = await resolveConfigWithAuth(options.projectDir);
246
+ if (options.projectSlug)
247
+ config = { ...config, projectSlug: options.projectSlug };
248
+ const client = createApiClient(config);
249
+ let targets = options.uploads;
250
+ if (options.all) {
251
+ const uploads = await listAllUploads(client, config.projectSlug, {
252
+ path: options.path,
253
+ recursive: true,
254
+ limit: 100,
255
+ });
256
+ targets = uploads.filter((item) => item.type === "file").map((item) => item.path);
257
+ }
258
+ if (!targets.length) {
259
+ throw new Error("No uploads selected. Pass upload paths or use --path with --all.");
260
+ }
261
+ const results = [];
262
+ for (const uploadPath of targets) {
263
+ const result = await downloadUploadToFile(client, config.projectSlug, uploadPath, options.outputDir);
264
+ results.push(result);
265
+ if (!options.quiet && !options.json) {
266
+ cliLogger.info(`Downloaded ${uploadPath} -> ${result.localPath}`);
267
+ }
268
+ }
269
+ if (options.json) {
270
+ printJson(results);
271
+ return;
272
+ }
273
+ if (!options.quiet) {
274
+ cliLogger.info(`Pulled ${results.length} upload(s) into ${options.outputDir}.`);
275
+ }
276
+ return;
277
+ }
278
+ case "put": {
279
+ const parsed = parseUploadsPutArgs(args);
280
+ if (!parsed.success) {
281
+ throw new Error(`Invalid uploads put arguments: ${parsed.error.message}`);
282
+ }
283
+ const options = parsed.data;
284
+ let config = await resolveConfigWithAuth(options.projectDir);
285
+ if (options.projectSlug)
286
+ config = { ...config, projectSlug: options.projectSlug };
287
+ const client = createApiClient(config);
288
+ const result = await uploadLocalFileToUploads(client, config.projectSlug, options.uploadPath, options.from, options.contentType);
289
+ if (options.json) {
290
+ printJson(result);
291
+ return;
292
+ }
293
+ if (!options.quiet) {
294
+ cliLogger.info(`Uploaded ${options.from} -> ${normalizeUploadPath(options.uploadPath)}`);
295
+ }
296
+ return;
297
+ }
298
+ case "delete":
299
+ case "rm": {
300
+ const parsed = parseUploadsDeleteArgs(args);
301
+ if (!parsed.success) {
302
+ throw new Error(`Invalid uploads delete arguments: ${parsed.error.message}`);
303
+ }
304
+ const options = parsed.data;
305
+ let config = await resolveConfigWithAuth(options.projectDir);
306
+ if (options.projectSlug)
307
+ config = { ...config, projectSlug: options.projectSlug };
308
+ const client = createApiClient(config);
309
+ await deleteUpload(client, config.projectSlug, options.uploadPath);
310
+ if (options.json) {
311
+ printJson({ success: true, path: normalizeUploadPath(options.uploadPath) });
312
+ return;
313
+ }
314
+ if (!options.quiet) {
315
+ cliLogger.info(`Deleted upload ${normalizeUploadPath(options.uploadPath)}`);
316
+ }
317
+ return;
318
+ }
319
+ default:
320
+ showUploadsUsage();
321
+ }
322
+ });
323
+ }
@@ -0,0 +1,3 @@
1
+ import type { ParsedArgs } from "../../shared/types.js";
2
+ export declare function handleUploadsCommand(args: ParsedArgs): Promise<void>;
3
+ //# sourceMappingURL=handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/uploads/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGxD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1E"}
@@ -0,0 +1,4 @@
1
+ import { uploadsCommand } from "./command.js";
2
+ export async function handleUploadsCommand(args) {
3
+ await uploadsCommand(args);
4
+ }
@@ -0,0 +1,4 @@
1
+ export { buildUploadCreateUrl, buildUploadSignedUrlPath, buildUploadsListUrl, deleteUpload, downloadUploadToFile, listAllUploads, parseUploadsDeleteArgs, parseUploadsListArgs, parseUploadsPullArgs, parseUploadsPutArgs, resolveUploadOutputPath, uploadLocalFileToUploads, uploadsCommand, } from "./command.js";
2
+ export type { UploadDeleteOptions, UploadItem, UploadListOptions, UploadPullOptions, UploadPutOptions, } from "./command.js";
3
+ export { handleUploadsCommand } from "./handler.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/uploads/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,YAAY,EACZ,oBAAoB,EACpB,cAAc,EACd,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,EACvB,wBAAwB,EACxB,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,mBAAmB,EACnB,UAAU,EACV,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { buildUploadCreateUrl, buildUploadSignedUrlPath, buildUploadsListUrl, deleteUpload, downloadUploadToFile, listAllUploads, parseUploadsDeleteArgs, parseUploadsListArgs, parseUploadsPullArgs, parseUploadsPutArgs, resolveUploadOutputPath, uploadLocalFileToUploads, uploadsCommand, } from "./command.js";
2
+ export { handleUploadsCommand } from "./handler.js";
@@ -1 +1 @@
1
- {"version":3,"file":"command-definitions.d.ts","sourceRoot":"","sources":["../../../src/cli/help/command-definitions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AA6BlD;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,eA2BtB,CAAC"}
1
+ {"version":3,"file":"command-definitions.d.ts","sourceRoot":"","sources":["../../../src/cli/help/command-definitions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAgClD;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,eA8BtB,CAAC"}
@@ -18,6 +18,9 @@ import { analyzeChunksHelp } from "../commands/analyze-chunks/command-help.js";
18
18
  import { generateHelp } from "../commands/generate/command-help.js";
19
19
  import { pullHelp } from "../commands/pull/command-help.js";
20
20
  import { pushHelp } from "../commands/push/command-help.js";
21
+ import { uploadsHelp } from "../commands/uploads/command-help.js";
22
+ import { filesHelp } from "../commands/files/command-help.js";
23
+ import { knowledgeHelp } from "../commands/knowledge/command-help.js";
21
24
  import { mergeHelp } from "../commands/merge/command-help.js";
22
25
  import { deployHelp } from "../commands/deploy/command-help.js";
23
26
  import { upHelp } from "../commands/up/command-help.js";
@@ -48,6 +51,9 @@ export const COMMANDS = {
48
51
  generate: generateHelp,
49
52
  pull: pullHelp,
50
53
  push: pushHelp,
54
+ uploads: uploadsHelp,
55
+ files: filesHelp,
56
+ knowledge: knowledgeHelp,
51
57
  merge: mergeHelp,
52
58
  deploy: deployHelp,
53
59
  up: upHelp,
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/cli/router.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgCH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAuDpD;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAwClE"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/cli/router.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAmCH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AA0DpD;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAwClE"}
package/esm/cli/router.js CHANGED
@@ -21,6 +21,9 @@ import { handleMCPCommand } from "./commands/mcp/handler.js";
21
21
  import { handleMergeCommand } from "./commands/merge/handler.js";
22
22
  import { handlePullCommand } from "./commands/pull/index.js";
23
23
  import { handlePushCommand } from "./commands/push/index.js";
24
+ import { handleUploadsCommand } from "./commands/uploads/index.js";
25
+ import { handleFilesCommand } from "./commands/files/index.js";
26
+ import { handleKnowledgeCommand } from "./commands/knowledge/index.js";
24
27
  import { handleRoutesCommand } from "./commands/routes/handler.js";
25
28
  import { handleServeCommand } from "./commands/serve/handler.js";
26
29
  import { handleStartCommand } from "./commands/start/handler.js";
@@ -53,6 +56,9 @@ const commands = {
53
56
  "g": handleGenerateCommand,
54
57
  "pull": handlePullCommand,
55
58
  "push": handlePushCommand,
59
+ "uploads": handleUploadsCommand,
60
+ "files": handleFilesCommand,
61
+ "knowledge": handleKnowledgeCommand,
56
62
  "merge": handleMergeCommand,
57
63
  "deploy": handleDeployCommand,
58
64
  "up": handleUpCommand,
package/esm/deno.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export default {
2
2
  "name": "veryfront",
3
- "version": "0.1.71",
3
+ "version": "0.1.72",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "exclude": [
@@ -74,6 +74,7 @@ export declare const AGENT_NOT_FOUND: import("./types.js").RegisteredError;
74
74
  export declare const AGENT_TIMEOUT: import("./types.js").RegisteredError;
75
75
  export declare const AGENT_INTENT_ERROR: import("./types.js").RegisteredError;
76
76
  export declare const ORCHESTRATION_ERROR: import("./types.js").RegisteredError;
77
+ export declare const COST_LIMIT_EXCEEDED: import("./types.js").RegisteredError;
77
78
  export declare const UNKNOWN_ERROR: import("./types.js").RegisteredError;
78
79
  export declare const PERMISSION_DENIED: import("./types.js").RegisteredError;
79
80
  export declare const FILE_NOT_FOUND: import("./types.js").RegisteredError;
@@ -158,6 +159,7 @@ export declare const ERROR_REGISTRY: {
158
159
  readonly "agent-timeout": import("./types.js").RegisteredError;
159
160
  readonly "agent-intent-error": import("./types.js").RegisteredError;
160
161
  readonly "orchestration-error": import("./types.js").RegisteredError;
162
+ readonly "cost-limit-exceeded": import("./types.js").RegisteredError;
161
163
  readonly "unknown-error": import("./types.js").RegisteredError;
162
164
  readonly "permission-denied": import("./types.js").RegisteredError;
163
165
  readonly "file-not-found": import("./types.js").RegisteredError;
@@ -1 +1 @@
1
- {"version":3,"file":"error-registry.d.ts","sourceRoot":"","sources":["../../../src/src/errors/error-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"error-registry.d.ts","sourceRoot":"","sources":["../../../src/src/errors/error-registry.ts"],"names":[],"mappings":"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"}
@@ -512,6 +512,13 @@ export const ORCHESTRATION_ERROR = defineError({
512
512
  title: "Multi-agent orchestration error",
513
513
  suggestion: "Check agent coordination logic",
514
514
  });
515
+ export const COST_LIMIT_EXCEEDED = defineError({
516
+ slug: "cost-limit-exceeded",
517
+ category: "AGENT",
518
+ status: 429,
519
+ title: "Cost limit exceeded",
520
+ suggestion: "Wait for the budget period to reset or increase the limit",
521
+ });
515
522
  // =============================================================================
516
523
  // GENERAL - Cross-cutting errors
517
524
  // =============================================================================
@@ -672,6 +679,7 @@ export const ERROR_REGISTRY = {
672
679
  "agent-timeout": AGENT_TIMEOUT,
673
680
  "agent-intent-error": AGENT_INTENT_ERROR,
674
681
  "orchestration-error": ORCHESTRATION_ERROR,
682
+ "cost-limit-exceeded": COST_LIMIT_EXCEEDED,
675
683
  // GENERAL
676
684
  "unknown-error": UNKNOWN_ERROR,
677
685
  "permission-denied": PERMISSION_DENIED,
@@ -6,7 +6,7 @@
6
6
  */
7
7
  export { defineError, VeryfrontError } from "./types.js";
8
8
  export type { ErrorCategory, ErrorCreateOptions, ErrorDefinition, RegisteredError, RFC9457Response, VeryfrontErrorOptions, } from "./types.js";
9
- export { AGENT_ERROR, AGENT_INTENT_ERROR, AGENT_NOT_FOUND, AGENT_TIMEOUT, API_CLIENT_ERROR, API_ERROR, API_ROUTE_ERROR, ASSET_OPTIMIZATION_ERROR, BUILD_FAILED, BUNDLE_ERROR, CACHE_ERROR, CACHE_INVARIANT_VIOLATION, CACHE_PATH_MISMATCH, CIRCULAR_DEPENDENCY, CLIENT_BOUNDARY_VIOLATION, CLIENT_ONLY_IN_SERVER, COMPILATION_ERROR, COMPONENT_ERROR, CONFIG_INVALID, CONFIG_NOT_FOUND, CONFIG_PARSE_ERROR, CONFIG_TYPE_ERROR, CONFIG_VALIDATION_ERROR, CONFIG_VALIDATION_FAILED, CORS_CONFIG_INVALID, DEPENDENCY_MISSING, DEPLOYMENT_ERROR, DEV_SERVER_ERROR, DYNAMIC_ROUTE_ERROR, ENV_VAR_MISSING, ERROR_OVERLAY_ERROR, ERROR_REGISTRY, type ErrorSlug, FALLBACK_EXHAUSTED, FAST_REFRESH_ERROR, FILE_NOT_FOUND, FILE_WATCH_ERROR, getAllSlugs, getErrorBySlug, getErrorsByCategory, HMR_ERROR, HYDRATION_MISMATCH, IMPORT_MAP_INVALID, IMPORT_RESOLUTION_ERROR, INITIALIZATION_ERROR, INPUT_VALIDATION_FAILED, INVALID_ARGUMENT, INVALID_IMPORT, INVALID_ROUTE_FILE, INVALID_USE_CLIENT, INVALID_USE_SERVER, LAYOUT_NOT_FOUND, MDX_COMPILE_ERROR, MIDDLEWARE_ERROR, MODULE_NOT_FOUND, NETWORK_ERROR, NOT_SUPPORTED, ORCHESTRATION_ERROR, PAGE_NOT_FOUND, PERMISSION_DENIED, PLATFORM_ERROR, PORT_IN_USE, PRODUCTION_BUILD_REQUIRED, RELEASE_NOT_FOUND, RENDER_ERROR, REQUEST_ERROR, RESOURCE_NOT_FOUND, ROUTE_CONFLICT, ROUTE_HANDLER_INVALID, ROUTE_PARAMS_ERROR, RSC_PAYLOAD_ERROR, SECURITY_VIOLATION, SERVER_ONLY_IN_CLIENT, SERVER_START_ERROR, SERVICE_OVERLOADED, SOURCE_MAP_ERROR, SOURCEMAP_ERROR, SSG_GENERATION_ERROR, TIMEOUT_ERROR, TOKEN_STORAGE_ERROR, TYPESCRIPT_ERROR, UNKNOWN_ERROR, VERSION_MISMATCH, } from "./error-registry.js";
9
+ export { AGENT_ERROR, AGENT_INTENT_ERROR, AGENT_NOT_FOUND, AGENT_TIMEOUT, API_CLIENT_ERROR, API_ERROR, API_ROUTE_ERROR, ASSET_OPTIMIZATION_ERROR, BUILD_FAILED, BUNDLE_ERROR, CACHE_ERROR, CACHE_INVARIANT_VIOLATION, CACHE_PATH_MISMATCH, CIRCULAR_DEPENDENCY, CLIENT_BOUNDARY_VIOLATION, CLIENT_ONLY_IN_SERVER, COMPILATION_ERROR, COMPONENT_ERROR, CONFIG_INVALID, CONFIG_NOT_FOUND, CONFIG_PARSE_ERROR, CONFIG_TYPE_ERROR, CONFIG_VALIDATION_ERROR, CONFIG_VALIDATION_FAILED, CORS_CONFIG_INVALID, COST_LIMIT_EXCEEDED, DEPENDENCY_MISSING, DEPLOYMENT_ERROR, DEV_SERVER_ERROR, DYNAMIC_ROUTE_ERROR, ENV_VAR_MISSING, ERROR_OVERLAY_ERROR, ERROR_REGISTRY, type ErrorSlug, FALLBACK_EXHAUSTED, FAST_REFRESH_ERROR, FILE_NOT_FOUND, FILE_WATCH_ERROR, getAllSlugs, getErrorBySlug, getErrorsByCategory, HMR_ERROR, HYDRATION_MISMATCH, IMPORT_MAP_INVALID, IMPORT_RESOLUTION_ERROR, INITIALIZATION_ERROR, INPUT_VALIDATION_FAILED, INVALID_ARGUMENT, INVALID_IMPORT, INVALID_ROUTE_FILE, INVALID_USE_CLIENT, INVALID_USE_SERVER, LAYOUT_NOT_FOUND, MDX_COMPILE_ERROR, MIDDLEWARE_ERROR, MODULE_NOT_FOUND, NETWORK_ERROR, NOT_SUPPORTED, ORCHESTRATION_ERROR, PAGE_NOT_FOUND, PERMISSION_DENIED, PLATFORM_ERROR, PORT_IN_USE, PRODUCTION_BUILD_REQUIRED, RELEASE_NOT_FOUND, RENDER_ERROR, REQUEST_ERROR, RESOURCE_NOT_FOUND, ROUTE_CONFLICT, ROUTE_HANDLER_INVALID, ROUTE_PARAMS_ERROR, RSC_PAYLOAD_ERROR, SECURITY_VIOLATION, SERVER_ONLY_IN_CLIENT, SERVER_START_ERROR, SERVICE_OVERLOADED, SOURCE_MAP_ERROR, SOURCEMAP_ERROR, SSG_GENERATION_ERROR, TIMEOUT_ERROR, TOKEN_STORAGE_ERROR, TYPESCRIPT_ERROR, UNKNOWN_ERROR, VERSION_MISMATCH, } from "./error-registry.js";
10
10
  export { createErrorHandler, createErrorResponse, createErrorResponseFromDefinition, createProblemResponse, errorToResponse, formatErrorLog, isVeryfrontError, PROBLEM_JSON_CONTENT_TYPE, } from "./http-error.js";
11
11
  export { cliErrorBoundary, cliErrorBoundarySync, errorToRFC9457Response, formatCLIError, httpErrorBoundary, wrapHandlerWithErrorBoundary, wrapUnknownError, wrapWithContext, } from "./middleware/index.js";
12
12
  export { logError, logErrorWithMessage } from "./logging.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/src/errors/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/src/errors/index.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ BUILD_FAILED, BUNDLE_ERROR, CACHE_ERROR, CACHE_INVARIANT_VIOLATION, CACHE_PATH_M
14
14
  // BOUNDARY
15
15
  CLIENT_BOUNDARY_VIOLATION, CLIENT_ONLY_IN_SERVER, COMPILATION_ERROR, COMPONENT_ERROR, CONFIG_INVALID,
16
16
  // CONFIG
17
- CONFIG_NOT_FOUND, CONFIG_PARSE_ERROR, CONFIG_TYPE_ERROR, CONFIG_VALIDATION_ERROR, CONFIG_VALIDATION_FAILED, CORS_CONFIG_INVALID, DEPENDENCY_MISSING,
17
+ CONFIG_NOT_FOUND, CONFIG_PARSE_ERROR, CONFIG_TYPE_ERROR, CONFIG_VALIDATION_ERROR, CONFIG_VALIDATION_FAILED, CORS_CONFIG_INVALID, COST_LIMIT_EXCEEDED, DEPENDENCY_MISSING,
18
18
  // DEPLOY
19
19
  DEPLOYMENT_ERROR, DEV_SERVER_ERROR, DYNAMIC_ROUTE_ERROR, ENV_VAR_MISSING, ERROR_OVERLAY_ERROR,
20
20
  // Registry
@@ -0,0 +1,5 @@
1
+ export declare function contentType(path: string): string | undefined;
2
+ export declare function extension(type: string): string | undefined;
3
+ export declare function lookup(path: string): string | undefined;
4
+ export declare function charset(type: string): string | undefined;
5
+ //# sourceMappingURL=media-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-types.d.ts","sourceRoot":"","sources":["../../../../src/src/platform/compat/media-types.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQ5D;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE1D;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEvD;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAExD"}
@@ -0,0 +1,19 @@
1
+ import mime from "mime-types";
2
+ export function contentType(path) {
3
+ const type = mime.lookup(path);
4
+ if (!type)
5
+ return undefined;
6
+ const cs = mime.charset(type);
7
+ if (!cs)
8
+ return type;
9
+ return `${type}; charset=${cs}`;
10
+ }
11
+ export function extension(type) {
12
+ return mime.extension(type) ?? undefined;
13
+ }
14
+ export function lookup(path) {
15
+ return mime.lookup(path) ?? undefined;
16
+ }
17
+ export function charset(type) {
18
+ return mime.charset(type) ?? undefined;
19
+ }
@@ -11,6 +11,7 @@ export type { RuntimeAdapter } from "./adapters/base.js";
11
11
  export { chdir, cwd, env, exit, getArgs, getEnv, getOsType, getRuntimeVersion, getStdout, getTerminalSize, isInteractive, isStdoutTTY, onGlobalError, onSignal, promptSync, readStdinByteSync, runCommand, setEnv, writeStdout, writeStdoutAsync, } from "./compat/process.js";
12
12
  export { createFileSystem, exists, type FileSystem, mkdir, readDir, readTextFile, remove, writeTextFile, } from "./compat/fs.js";
13
13
  export { createEscapeBuffer, getStdinReader, setRawMode, type StdinReader, } from "./compat/stdin.js";
14
+ export { lookup as lookupMimeType } from "./compat/media-types.js";
14
15
  export { createKVStore, MemoryKv } from "./compat/kv/index.js";
15
16
  export { isDeno } from "./compat/runtime.js";
16
17
  export { createFSAdapter, VeryfrontFSAdapter } from "./adapters/fs/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/src/platform/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD,OAAO,EACL,KAAK,EACL,GAAG,EACH,GAAG,EACH,IAAI,EACJ,OAAO,EACP,MAAM,EACN,SAAS,EACT,iBAAiB,EACjB,SAAS,EACT,eAAe,EACf,aAAa,EACb,WAAW,EACX,aAAa,EACb,QAAQ,EACR,UAAU,EACV,iBAAiB,EACjB,UAAU,EACV,MAAM,EACN,WAAW,EACX,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,gBAAgB,EAChB,MAAM,EACN,KAAK,UAAU,EACf,KAAK,EACL,OAAO,EACP,YAAY,EACZ,MAAM,EACN,aAAa,GACd,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,KAAK,WAAW,GACjB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAG/D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/src/platform/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD,OAAO,EACL,KAAK,EACL,GAAG,EACH,GAAG,EACH,IAAI,EACJ,OAAO,EACP,MAAM,EACN,SAAS,EACT,iBAAiB,EACjB,SAAS,EACT,eAAe,EACf,aAAa,EACb,WAAW,EACX,aAAa,EACb,QAAQ,EACR,UAAU,EACV,iBAAiB,EACjB,UAAU,EACV,MAAM,EACN,WAAW,EACX,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,gBAAgB,EAChB,MAAM,EACN,KAAK,UAAU,EACf,KAAK,EACL,OAAO,EACP,YAAY,EACZ,MAAM,EACN,aAAa,GACd,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,KAAK,WAAW,GACjB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGnE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAG/D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC"}
@@ -14,6 +14,8 @@ export { chdir, cwd, env, exit, getArgs, getEnv, getOsType, getRuntimeVersion, g
14
14
  export { createFileSystem, exists, mkdir, readDir, readTextFile, remove, writeTextFile, } from "./compat/fs.js";
15
15
  // Compat: stdin
16
16
  export { createEscapeBuffer, getStdinReader, setRawMode, } from "./compat/stdin.js";
17
+ // Compat: media types
18
+ export { lookup as lookupMimeType } from "./compat/media-types.js";
17
19
  // Compat: KV store
18
20
  export { createKVStore, MemoryKv } from "./compat/kv/index.js";
19
21
  // Compat: runtime detection
@@ -194,7 +194,11 @@ function validateProductionEnvironment(_adapter) {
194
194
  logger.warn("[Bootstrap:Prod] NODE_ENV is set to '%s' in proxy mode. " +
195
195
  "Expected 'production'. This may enable dev features.", nodeEnv);
196
196
  }
197
- if (!controlPlanePublicKey) {
197
+ if (!controlPlanePublicKey && nodeEnv === "development") {
198
+ logger.warn("[Bootstrap:Prod] CHANNEL_DISPATCH_SIGNING_PUBLIC_KEY is not set. " +
199
+ "Channel dispatch verification will be unavailable (local dev mode).");
200
+ }
201
+ else if (!controlPlanePublicKey) {
198
202
  logger.error("[Bootstrap:Prod] CRITICAL: CHANNEL_DISPATCH_SIGNING_PUBLIC_KEY is not set in proxy mode. " +
199
203
  "Hosted runtimes cannot verify control-plane requests without it.");
200
204
  throw INVALID_ARGUMENT.create({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "veryfront",
3
- "version": "0.1.71",
3
+ "version": "0.1.72",
4
4
  "description": "The simplest way to build AI-powered apps",
5
5
  "keywords": [
6
6
  "react",
@@ -147,6 +147,7 @@
147
147
  "github-slugger": "2.0.0",
148
148
  "gray-matter": "4.0.3",
149
149
  "mdast-util-to-string": "4.0.0",
150
+ "mime-types": "2.1.35",
150
151
  "react": "19.1.1",
151
152
  "react-dom": "19.1.1",
152
153
  "redis": "4.6.13",
@@ -0,0 +1,40 @@
1
+ import type { CommandHelp } from "../../help/types.js";
2
+
3
+ export const filesHelp: CommandHelp = {
4
+ name: "files",
5
+ description: "List, read, write, and delete project files",
6
+ usage: "veryfront files <command> [options]",
7
+ options: [
8
+ {
9
+ flag: "--project, -p <slug>",
10
+ description: "Project slug override (otherwise inferred from env/config)",
11
+ },
12
+ {
13
+ flag: "--path <prefix>",
14
+ description: "Prefix filter for files list",
15
+ },
16
+ {
17
+ flag: "--from <path>",
18
+ description: "Local file to upload with files put",
19
+ },
20
+ {
21
+ flag: "--output, -o <path>",
22
+ description: "Write files get output to a local file instead of stdout",
23
+ },
24
+ {
25
+ flag: "--json, -j",
26
+ description: "Output machine-readable JSON",
27
+ },
28
+ ],
29
+ examples: [
30
+ "veryfront files list --path knowledge/ --json",
31
+ "veryfront files get knowledge/q1-report.md",
32
+ "veryfront files put knowledge/q1-report.md --from /workspace/knowledge/q1-report.md",
33
+ "veryfront files delete knowledge/q1-report.md",
34
+ ],
35
+ notes: [
36
+ "Subcommands: list, get, put, delete",
37
+ "Uses the project files API, not the uploads store",
38
+ "Designed for precise sandbox writes where `veryfront push` would be too broad",
39
+ ],
40
+ };