@voltro/cli 0.54.0 → 0.55.0
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/CHANGELOG.md +142 -2
- package/dist/{apiBuild-DTWp0S_q.js → apiBuild-CMvLJM_K.js} +2 -2
- package/dist/apiBuild-Cl0IDx8c.js +2 -0
- package/dist/bin.js +1 -1
- package/dist/{build-D4ygSbnV.js → build-S0QOzqPT.js} +10 -10
- package/dist/{checkCommand-L7DTlpIF.js → checkCommand-DNkY5kwF.js} +1 -1
- package/dist/{checkCommand-Dg1G7Gwd.js → checkCommand-fbj9GDjN.js} +5 -5
- package/dist/codegen-CN6vMM4J.js +2 -0
- package/dist/{codegen-DSLM8Su9.js → codegen-SIepQtUl.js} +74 -63
- package/dist/{codegenCommand-CG_Vx4lc.js → codegenCommand-3TDJezom.js} +10 -9
- package/dist/{codemodRunner-Cd4xkC6u.js → codemodRunner-C2zxZUIw.js} +55 -0
- package/dist/{commands-6Kzi92Np.js → commands-BBYJ7Q3B.js} +24 -24
- package/dist/{dashboardCommand-Cq1PWvI1.js → dashboardCommand-D2kmyCLL.js} +3 -3
- package/dist/{dataCommand-DYzW8vkv.js → dataCommand-BEPPQiTl.js} +266 -194
- package/dist/dbCommand-BTyBGhIA.js +2 -0
- package/dist/{dbCommand-B4NWZtGL.js → dbCommand-DZTmOFT4.js} +1 -1
- package/dist/{dev-CmuvUKRq.js → dev-Ca_A_S9v.js} +2182 -2157
- package/dist/{dev-cKUiZZsB.js → dev-DfVZaoys.js} +1 -1
- package/dist/{doctorCommand-DCiFVMtZ.js → doctorCommand-CGZJK_4o.js} +15 -15
- package/dist/doctorCommand-djmqEcDC.js +2 -0
- package/dist/{dormancyCommand-w1TrmgYP.js → dormancyCommand-DY2rYpTa.js} +1 -1
- package/dist/{embeddingsCommand-CMgPyRTr.js → embeddingsCommand-BoCqZsgp.js} +1 -1
- package/dist/{envCommand-Cyynmcfa.js → envCommand-Bxy2fOjc.js} +2 -2
- package/dist/{evolveCommand-BwvQ8dVH.js → evolveCommand-BsbZ-XDg.js} +2 -2
- package/dist/frameworkTableAssembly-Df2Ymp2f.js +2 -0
- package/dist/{frameworkTableAssembly-D7LJuALW.js → frameworkTableAssembly-Do-cf6RJ.js} +92 -98
- package/dist/index.js +1 -1
- package/dist/{infoCommand-DlYlUPqs.js → infoCommand-EmM3jPKD.js} +1 -1
- package/dist/{inspect-Bd8-9wsi.js → inspect-DCqILJ1G.js} +4 -0
- package/dist/inspect-DGJwpOAb.js +2 -0
- package/dist/interruptedReplace-CwnkBb2X.js +41 -0
- package/dist/interruptedReplace-qzmFI020.js +2 -0
- package/dist/manifestBuild-CJ2zvPvT.js +2 -0
- package/dist/{manifestBuild-Cqgsx2bM.js → manifestBuild-DjX5MoXy.js} +1 -1
- package/dist/{migrate-BK_Bbx-_.js → migrate-CGFZS-1a.js} +2 -2
- package/dist/{probeCommand-_C0YU207.js → probeCommand-Bs3iVBSL.js} +1 -1
- package/dist/{runtimeTrace-CGWx1Q6l.js → runtimeTrace-C1BTpHGQ.js} +1 -1
- package/dist/{sdkgen-CDGHQUFj.js → sdkgen-CXMwLg9n.js} +1 -1
- package/dist/{serveCommand-Bje09q1v.js → serveCommand-C7IrCD58.js} +840 -838
- package/dist/serveCommand-Cjt5S9hD.js +2 -0
- package/dist/serveEntry.js +1 -1
- package/dist/{start-B0bnJgxI.js → start-DH7cat4-.js} +1 -1
- package/dist/{start-Clz-1BHB.js → start-EOV7s1NZ.js} +486 -476
- package/dist/startEntry.js +1 -1
- package/dist/{test-D_kW4KMj.js → test-DO27-x2P.js} +1 -1
- package/dist/{updateCommand-CRJlAOaM.js → updateCommand-C_jN1w18.js} +1 -1
- package/dist/updateCommand-nnFjDbl4.js +2 -0
- package/dist/{webDev-DlvZO30c.js → webDev-1XpVnYkW.js} +1 -1
- package/dist/{webDev-DSI9SOhs.js → webDev-B7vNj4Bq.js} +502 -494
- package/dist/{webhooksCommand-BvzXNHji.js → webhooksCommand-B1LVcyO3.js} +1 -1
- package/package.json +31 -19
- package/templates/AGENTS.md +1 -1
- package/templates/agent-docs/_index.md +1 -1
- package/templates/agent-docs/authentication.md +49 -6
- package/templates/agent-docs/cli.md +94 -11
- package/templates/agent-docs/data.md +64 -13
- package/templates/agent-docs/plugins.md +46 -8
- package/templates/agent-docs/reference.md +5 -3
- package/templates/agent-docs/routing.md +18 -0
- package/templates/agent-docs/schema-driven-ui.md +125 -0
- package/templates/agent-docs/whats-new.md +76 -133
- package/templates/apps/api-ai/package.json +6 -6
- package/templates/apps/api-auth/package.json +8 -8
- package/templates/apps/api-backend/package.json +7 -7
- package/templates/apps/api-backend-deactivation/package.json +7 -7
- package/templates/apps/api-backend-mail/package.json +8 -8
- package/templates/apps/api-backend-mariadb/package.json +9 -9
- package/templates/apps/api-backend-sqlite/package.json +8 -8
- package/templates/apps/api-backend-storage/package.json +8 -8
- package/templates/apps/api-cms/package.json +9 -9
- package/templates/apps/api-collab/package.json +8 -8
- package/templates/apps/api-data-advanced/package.json +8 -8
- package/templates/apps/api-durable/package.json +8 -8
- package/templates/apps/api-feature-flags/package.json +9 -9
- package/templates/apps/api-governance/package.json +8 -8
- package/templates/apps/api-kv/package.json +8 -8
- package/templates/apps/api-moderation/package.json +8 -8
- package/templates/apps/api-observability/package.json +8 -8
- package/templates/apps/api-ratelimit/package.json +8 -8
- package/templates/apps/api-rbac/package.json +8 -8
- package/templates/apps/api-rest/package.json +7 -7
- package/templates/apps/api-row-history/package.json +8 -8
- package/templates/apps/api-saas/package.json +11 -11
- package/templates/apps/api-saas-starter/package.json +10 -10
- package/templates/apps/api-search/package.json +8 -8
- package/templates/apps/api-status/package.json +8 -8
- package/templates/apps/api-webhooks/package.json +9 -9
- package/templates/apps/changelog/package.json +7 -7
- package/templates/apps/edge-functions/package.json +2 -2
- package/templates/apps/frontend-admin/package.json +8 -8
- package/templates/apps/frontend-app/package.json +9 -9
- package/templates/apps/frontend-auth/package.json +8 -8
- package/templates/apps/frontend-blank/package.json +7 -7
- package/templates/apps/frontend-cms/package.json +9 -9
- package/templates/apps/frontend-collab/package.json +10 -10
- package/templates/apps/frontend-contact/package.json +7 -7
- package/templates/apps/frontend-dashboard/package.json +7 -7
- package/templates/apps/frontend-docs/package.json +8 -8
- package/templates/apps/frontend-i18n/package.json +6 -6
- package/templates/apps/frontend-landing/package.json +7 -7
- package/templates/apps/frontend-portal/package.json +8 -8
- package/templates/apps/frontend-saas/package.json +8 -8
- package/templates/apps/frontend-spa/package.json +7 -7
- package/templates/apps/frontend-ssr/package.json +7 -7
- package/templates/apps/frontend-ssr-api/package.json +8 -8
- package/templates/apps/frontend-static-blog/package.json +8 -8
- package/templates/apps/frontend-status/package.json +8 -8
- package/templates/apps/mobile-app/package.json +4 -4
- package/dist/apiBuild-CeUN55uk.js +0 -2
- package/dist/codegen-DjgxEOnD.js +0 -2
- package/dist/dbCommand-CSFWs9ev.js +0 -2
- package/dist/doctorCommand-J3qu4E0Y.js +0 -2
- package/dist/frameworkTableAssembly-IPD1pUnZ.js +0 -2
- package/dist/inspect-CuoDInfZ.js +0 -2
- package/dist/interruptedReplace-C3O3M1MM.js +0 -28
- package/dist/interruptedReplace-CvmiAM9K.js +0 -2
- package/dist/manifestBuild-C4-J1-m_.js +0 -2
- package/dist/serveCommand-BiPe8BJm.js +0 -2
- package/dist/updateCommand-CIoVDKnj.js +0 -2
|
@@ -304,8 +304,8 @@ ${o.join("\n\n")}\n`);
|
|
|
304
304
|
file: t,
|
|
305
305
|
reason: "a descriptor changed since the group was generated"
|
|
306
306
|
};
|
|
307
|
-
}, Q = (e, t, n, i = [], o = [], s = !1, l = !1, u = [], d = "") => {
|
|
308
|
-
let
|
|
307
|
+
}, Q = (e, t, n, i = [], o = [], s = !1, l = !1, u = [], d = {}, f = "") => {
|
|
308
|
+
let m = o.length > 0, h = o.flatMap((e) => [{
|
|
309
309
|
file: e.file,
|
|
310
310
|
exportName: e.exportName,
|
|
311
311
|
rpcTag: `${e.name}.send`,
|
|
@@ -315,7 +315,7 @@ ${o.join("\n\n")}\n`);
|
|
|
315
315
|
exportName: e.exportName,
|
|
316
316
|
rpcTag: `${e.name}.messages`,
|
|
317
317
|
kind: "query"
|
|
318
|
-
}]),
|
|
318
|
+
}]), g = [...new Map(u.map((e) => [e.tag, e])).values()].sort((e, t) => e.tag < t.tag ? -1 : 1), _ = g.map((e) => ({
|
|
319
319
|
file: `plugin:${e.module}`,
|
|
320
320
|
exportName: e.name,
|
|
321
321
|
rpcTag: e.tag,
|
|
@@ -323,26 +323,26 @@ ${o.join("\n\n")}\n`);
|
|
|
323
323
|
}));
|
|
324
324
|
ee([
|
|
325
325
|
...n,
|
|
326
|
-
...
|
|
327
|
-
...
|
|
326
|
+
...h,
|
|
327
|
+
..._
|
|
328
328
|
], e), q([
|
|
329
329
|
...n,
|
|
330
|
-
...
|
|
331
|
-
...
|
|
330
|
+
...h,
|
|
331
|
+
..._
|
|
332
332
|
], e);
|
|
333
|
-
let
|
|
334
|
-
let t = `./${a(
|
|
335
|
-
return `import { ${e.exportName} as ${
|
|
336
|
-
},
|
|
337
|
-
let t = G(e.rpcTag), n =
|
|
338
|
-
return e.kind === "query" ? `export const ${t} = queryToRpc(${n}${
|
|
333
|
+
let v = (e) => e.replace(/[^a-zA-Z0-9_$]/g, "_"), y = (e) => `__src_agent_${v(e.name)}`, b = (e) => `__agentRoutes_${v(e.name)}`, x = i.length > 0, S = i.map((e, t) => `import { ${e.name} as __pe${t} } from '${e.module}'`), C = x ? ", __voltroPluginErrors" : "", w = g.length > 0, T = g.map((e, t) => `import { ${e.name} as __prpc${t} } from '${e.module}'`), E = (e) => e === "query" ? "queryToRpc" : e === "mutation" ? "mutationToRpc" : "actionToRpc", D = g.map((e, t) => `export const ${G(e.tag)} = ${E(e.kind)}(withRpcTag(__prpc${t}, ${JSON.stringify(e.tag)})${C})`), O = g.map((e) => ` ${G(e.tag)},`), k = [...n].sort((e, t) => e.kind === t.kind ? e.rpcTag < t.rpcTag ? -1 : 1 : J(e.kind) - J(t.kind)), A = r(t), j = (e) => `__src_${G(e.rpcTag)}`, M = (e) => {
|
|
334
|
+
let t = `./${a(A, e.file).replace(/\\/g, "/").replace(/\.tsx?$/, "")}`;
|
|
335
|
+
return `import { ${e.exportName} as ${j(e)} } from '${t}'`;
|
|
336
|
+
}, N = (e) => {
|
|
337
|
+
let t = G(e.rpcTag), n = j(e);
|
|
338
|
+
return e.kind === "query" ? `export const ${t} = queryToRpc(${n}${C})` : e.kind === "mutation" ? `export const ${t} = mutationToRpc(${n}${C})` : e.kind === "action" ? `export const ${t} = actionToRpc(${n}${C})` : e.kind === "stream" ? `export const ${t} = streamToRpc(${n}${C})` : e.kind === "event" ? `export const ${t} = eventToRpc(${n}${C})` : [
|
|
339
339
|
`export const ${t} = Rpc.make('${e.rpcTag}', {`,
|
|
340
340
|
` payload: strictInput(${n}.payloadSchema),`,
|
|
341
341
|
" success: WorkflowRunHandleSchema,",
|
|
342
342
|
` error: ${n}.errorSchema,`,
|
|
343
343
|
"})"
|
|
344
344
|
].join("\n");
|
|
345
|
-
},
|
|
345
|
+
}, P = [...k.filter((e) => e.kind === "query" || e.kind === "mutation" || e.kind === "action" || e.kind === "stream").map((e) => ` | __AppErrorOf<typeof ${j(e)}>`), ...x ? [" | Schema.Schema.Type<(typeof __voltroPluginErrors)[number]>"] : []], F = P.length > 0, I = k.some((e) => e.kind === "workflow"), L = I ? [
|
|
346
346
|
"__voltroWorkflowRun",
|
|
347
347
|
"__voltroWorkflowRuns",
|
|
348
348
|
"__voltroWorkflowRunSteps",
|
|
@@ -353,27 +353,29 @@ ${o.join("\n\n")}\n`);
|
|
|
353
353
|
"__voltroWorkflowResume",
|
|
354
354
|
"__voltroWorkflowSignal",
|
|
355
355
|
"__voltroWorkflowUpdate"
|
|
356
|
-
] : [],
|
|
356
|
+
] : [], R = s ? [
|
|
357
357
|
"__voltroUndoLog",
|
|
358
358
|
"__voltroUndoApply",
|
|
359
359
|
"__voltroUndoRedo"
|
|
360
|
-
] : [],
|
|
360
|
+
] : [], z = k.some((e) => e.requiresApproval === !0), B = z ? ["__voltroApprovalsPending", "__voltroApprovalsDecide"] : [], V = l ? [
|
|
361
361
|
"__voltroConnectionsList",
|
|
362
362
|
"__voltroConnectionStart",
|
|
363
363
|
"__voltroConnectionSubmitToken",
|
|
364
364
|
"__voltroConnectionDisconnect"
|
|
365
|
-
] : [],
|
|
366
|
-
...
|
|
365
|
+
] : [], H = [
|
|
366
|
+
...k.map((e) => ` ${G(e.rpcTag)},`),
|
|
367
367
|
...o.flatMap((e) => [` ${G(`${e.name}.send`)},`, ` ${G(`${e.name}.messages`)},`]),
|
|
368
|
-
...I.map((e) => ` ${e},`),
|
|
369
368
|
...L.map((e) => ` ${e},`),
|
|
370
|
-
...
|
|
369
|
+
...R.map((e) => ` ${e},`),
|
|
371
370
|
...B.map((e) => ` ${e},`),
|
|
372
|
-
...
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
371
|
+
...V.map((e) => ` ${e},`),
|
|
372
|
+
...O
|
|
373
|
+
].join("\n"), U = ["queryToRpc"];
|
|
374
|
+
w && U.push("withRpcTag");
|
|
375
|
+
let W = Object.entries(d).sort(([e], [t]) => e < t ? -1 : 1), K = W.length > 0;
|
|
376
|
+
K && U.push("registerPluginAliases"), (k.some((e) => e.kind === "mutation") || g.some((e) => e.kind === "mutation")) && U.push("mutationToRpc"), (k.some((e) => e.kind === "action") || I || m || g.some((e) => e.kind === "action")) && U.push("actionToRpc"), k.some((e) => e.kind === "stream") && U.push("streamToRpc"), k.some((e) => e.kind === "event") && U.push("eventToRpc"), I && U.push("strictInput", "WorkflowRunHandleSchema", "workflowCancelDescriptor", "workflowDomainEventsQueryDescriptor", "workflowEventDeliveriesQueryDescriptor", "workflowResumeDescriptor", "workflowRunEventsQueryDescriptor", "workflowRunQueryDescriptor", "workflowRunsQueryDescriptor", "workflowRunStepsQueryDescriptor", "workflowSignalDescriptor", "workflowUpdateDescriptor"), s && U.push("mutationToRpc", "undoLogQueryDescriptor", "undoApplyDescriptor", "undoRedoDescriptor"), z && U.push("mutationToRpc", "approvalsPendingQueryDescriptor", "approvalsDecideDescriptor"), l && U.push("mutationToRpc", "actionToRpc", "connectionsListQueryDescriptor", "connectionStartDescriptor", "connectionSubmitTokenDescriptor", "connectionDisconnectDescriptor"), (k.some((e) => e.kind === "query" || e.kind === "mutation" || e.kind === "action" || e.kind === "stream") || m || I || s || z || l || w) && U.push("normalizeDescriptor");
|
|
377
|
+
let Y = [...new Set(U)].sort(), X = [...k.filter((e) => e.kind === "query" || e.kind === "mutation" || e.kind === "action" || e.kind === "stream").map((e) => [e.rpcTag, j(e)]), ...o.flatMap((e) => [[`${e.name}.send`, `${b(e)}.send`], [`${e.name}.messages`, `${b(e)}.messages`]])], Z = [
|
|
378
|
+
...I ? [
|
|
377
379
|
["__voltro.workflow.run", "workflowRunQueryDescriptor"],
|
|
378
380
|
["__voltro.workflow.runs", "workflowRunsQueryDescriptor"],
|
|
379
381
|
["__voltro.workflow.run.steps", "workflowRunStepsQueryDescriptor"],
|
|
@@ -390,20 +392,20 @@ ${o.join("\n\n")}\n`);
|
|
|
390
392
|
["__voltro.undo.apply", "undoApplyDescriptor"],
|
|
391
393
|
["__voltro.undo.redo", "undoRedoDescriptor"]
|
|
392
394
|
] : [],
|
|
393
|
-
...
|
|
395
|
+
...z ? [["__voltro.approvals.pending", "approvalsPendingQueryDescriptor"], ["__voltro.approvals.decide", "approvalsDecideDescriptor"]] : [],
|
|
394
396
|
...l ? [
|
|
395
397
|
["__voltro.connections.list", "connectionsListQueryDescriptor"],
|
|
396
398
|
["__voltro.connections.start", "connectionStartDescriptor"],
|
|
397
399
|
["__voltro.connections.submitToken", "connectionSubmitTokenDescriptor"],
|
|
398
400
|
["__voltro.connections.disconnect", "connectionDisconnectDescriptor"]
|
|
399
401
|
] : [],
|
|
400
|
-
...
|
|
401
|
-
],
|
|
402
|
-
...
|
|
403
|
-
...
|
|
404
|
-
...
|
|
405
|
-
],
|
|
406
|
-
let t =
|
|
402
|
+
...g.map((e, t) => [e.tag, `__prpc${t}`])
|
|
403
|
+
], Q = ([e, t]) => ` ${JSON.stringify(e)}: normalizeDescriptor(${t}),`, $ = ([e, t]) => ` readonly ${JSON.stringify(e)}: typeof ${t}`, ne = X.map(Q), re = Z.map(Q), ie = k.filter((e) => e.kind === "workflow").map((e) => ` ${JSON.stringify(e.rpcTag)}: { kind: 'workflow' },`), ae = k.filter((e) => e.kind === "workflow").map((e) => ` readonly ${JSON.stringify(e.rpcTag)}: { readonly kind: 'workflow' }`), oe = [
|
|
404
|
+
...X.map($),
|
|
405
|
+
...ae,
|
|
406
|
+
...Z.map($)
|
|
407
|
+
], se = k.filter((e) => e.kind === "workflow").map((e) => {
|
|
408
|
+
let t = j(e);
|
|
407
409
|
return [
|
|
408
410
|
` ${JSON.stringify(e.rpcTag)}: {`,
|
|
409
411
|
" kind: 'workflow',",
|
|
@@ -414,44 +416,53 @@ ${o.join("\n\n")}\n`);
|
|
|
414
416
|
` updates: __voltroWorkflowMessages(${t}).updates,`,
|
|
415
417
|
" },"
|
|
416
418
|
].join("\n");
|
|
417
|
-
}),
|
|
419
|
+
}), ce = [...k, ...o.map((e) => ({
|
|
418
420
|
rpcTag: `agent:${e.name}`,
|
|
419
421
|
file: e.file
|
|
420
422
|
}))];
|
|
421
423
|
return [
|
|
422
424
|
"// THIS FILE IS GENERATED — DO NOT EDIT BY HAND.",
|
|
423
425
|
"// Re-emitted by `voltro dev` whenever query/mutation/action/stream/workflow files change.",
|
|
424
|
-
`// descriptor-fingerprint: ${p("sha1").update(
|
|
426
|
+
`// descriptor-fingerprint: ${p("sha1").update(ce.map((e) => {
|
|
425
427
|
let t = "";
|
|
426
428
|
try {
|
|
427
429
|
t = c(e.file, "utf8");
|
|
428
430
|
} catch {}
|
|
429
431
|
return `${e.rpcTag}\u0000${t}`;
|
|
430
432
|
}).join("")).digest("hex").slice(0, 16)}`,
|
|
431
|
-
`${te}${
|
|
433
|
+
`${te}${f}`,
|
|
432
434
|
"// Source files:",
|
|
433
|
-
...
|
|
435
|
+
...k.map((t) => `// - ${a(e, t.file).replace(/\\/g, "/")}`),
|
|
434
436
|
...o.map((t) => `// - ${a(e, t.file).replace(/\\/g, "/")} (agent)`),
|
|
435
437
|
"",
|
|
436
|
-
|
|
437
|
-
...
|
|
438
|
-
`import { ${
|
|
439
|
-
...
|
|
438
|
+
I ? "import { Rpc, RpcGroup } from '@effect/rpc'" : "import { RpcGroup } from '@effect/rpc'",
|
|
439
|
+
...I || F ? ["import { Schema } from 'effect'"] : [],
|
|
440
|
+
`import { ${Y.join(", ")} } from '@voltro/protocol'`,
|
|
441
|
+
...m ? ["import { agentRouteDescriptors as __voltroAgentRoutes } from '@voltro/ai/agent'"] : [],
|
|
440
442
|
"",
|
|
441
|
-
...
|
|
442
|
-
...o.map((e) => `import { ${e.exportName} as ${
|
|
443
|
-
...
|
|
444
|
-
...
|
|
443
|
+
...k.map(M),
|
|
444
|
+
...o.map((e) => `import { ${e.exportName} as ${y(e)} } from './${a(A, e.file).replace(/\\/g, "/").replace(/\.tsx?$/, "")}'`),
|
|
445
|
+
...x ? ["", ...S] : [],
|
|
446
|
+
...w ? ["", ...T] : [],
|
|
447
|
+
...K ? [
|
|
448
|
+
"",
|
|
449
|
+
"/** Which namespace each installed plugin answers to in THIS app. Read by",
|
|
450
|
+
" * the plugins' own client hooks via `pluginTag()` so an `alias` in",
|
|
451
|
+
" * app.config.ts moves them too, not just the server's routes. */",
|
|
452
|
+
"registerPluginAliases({",
|
|
453
|
+
...W.map(([e, t]) => ` ${JSON.stringify(e)}: ${JSON.stringify(t)},`),
|
|
454
|
+
"})"
|
|
455
|
+
] : [],
|
|
445
456
|
"",
|
|
446
|
-
...o.map((e) => `const ${
|
|
447
|
-
...
|
|
448
|
-
...
|
|
457
|
+
...o.map((e) => `const ${b(e)} = __voltroAgentRoutes(${y(e)})`),
|
|
458
|
+
...m ? [""] : [],
|
|
459
|
+
...x ? [
|
|
449
460
|
"/** Cross-cutting plugin error schemas, unioned into every rpc's",
|
|
450
461
|
" * wire error so interceptor failures decode typed on the client. */",
|
|
451
462
|
`const __voltroPluginErrors = [${i.map((e, t) => `__pe${t}`).join(", ")}] as const`,
|
|
452
463
|
""
|
|
453
464
|
] : [],
|
|
454
|
-
...
|
|
465
|
+
...I ? [
|
|
455
466
|
"const __voltroEmptyWorkflowMessages = { signals: {}, updates: {} } as const",
|
|
456
467
|
"const __voltroWorkflowMessages = <const M extends {",
|
|
457
468
|
" readonly signals: Readonly<Record<string, Schema.Schema.Any>>",
|
|
@@ -460,7 +471,7 @@ ${o.join("\n\n")}\n`);
|
|
|
460
471
|
" definition.__voltroWorkflowMessages ?? __voltroEmptyWorkflowMessages",
|
|
461
472
|
"",
|
|
462
473
|
"export const workflowDescriptors = {",
|
|
463
|
-
...
|
|
474
|
+
...se,
|
|
464
475
|
"} as const",
|
|
465
476
|
"",
|
|
466
477
|
"export type WorkflowDescriptors = typeof workflowDescriptors",
|
|
@@ -479,9 +490,9 @@ ${o.join("\n\n")}\n`);
|
|
|
479
490
|
"} }",
|
|
480
491
|
""
|
|
481
492
|
] : [],
|
|
482
|
-
...
|
|
483
|
-
...o.flatMap((e) => [`export const ${G(`${e.name}.send`)} = actionToRpc(${
|
|
484
|
-
...
|
|
493
|
+
...k.map(N),
|
|
494
|
+
...o.flatMap((e) => [`export const ${G(`${e.name}.send`)} = actionToRpc(${b(e)}.send${C})`, `export const ${G(`${e.name}.messages`)} = queryToRpc(${b(e)}.messages${C})`]),
|
|
495
|
+
...I ? [
|
|
485
496
|
"export const __voltroWorkflowRun = queryToRpc(workflowRunQueryDescriptor)",
|
|
486
497
|
"export const __voltroWorkflowRuns = queryToRpc(workflowRunsQueryDescriptor)",
|
|
487
498
|
"export const __voltroWorkflowRunSteps = queryToRpc(workflowRunStepsQueryDescriptor)",
|
|
@@ -498,26 +509,26 @@ ${o.join("\n\n")}\n`);
|
|
|
498
509
|
"export const __voltroUndoApply = mutationToRpc(undoApplyDescriptor)",
|
|
499
510
|
"export const __voltroUndoRedo = mutationToRpc(undoRedoDescriptor)"
|
|
500
511
|
] : [],
|
|
501
|
-
...
|
|
512
|
+
...z ? ["export const __voltroApprovalsPending = queryToRpc(approvalsPendingQueryDescriptor)", "export const __voltroApprovalsDecide = mutationToRpc(approvalsDecideDescriptor)"] : [],
|
|
502
513
|
...l ? [
|
|
503
514
|
"export const __voltroConnectionsList = queryToRpc(connectionsListQueryDescriptor)",
|
|
504
515
|
"export const __voltroConnectionStart = actionToRpc(connectionStartDescriptor)",
|
|
505
516
|
"export const __voltroConnectionSubmitToken = mutationToRpc(connectionSubmitTokenDescriptor)",
|
|
506
517
|
"export const __voltroConnectionDisconnect = mutationToRpc(connectionDisconnectDescriptor)"
|
|
507
518
|
] : [],
|
|
508
|
-
...
|
|
519
|
+
...D,
|
|
509
520
|
"",
|
|
510
521
|
"export const appGroup = RpcGroup.make(",
|
|
511
|
-
|
|
522
|
+
H,
|
|
512
523
|
")",
|
|
513
524
|
"",
|
|
514
525
|
"/** Per-rpc-tag metadata for the client. Drives auto-optimistic etc.",
|
|
515
526
|
" * Function fields (target.shape, target.identify) survive because",
|
|
516
527
|
" * the descriptors themselves are imported by reference. */",
|
|
517
528
|
"export const appDescriptors = {",
|
|
518
|
-
...
|
|
519
|
-
|
|
520
|
-
...
|
|
529
|
+
...ne,
|
|
530
|
+
...ie,
|
|
531
|
+
...re,
|
|
521
532
|
"} as const",
|
|
522
533
|
"",
|
|
523
534
|
"export type AppDescriptors = typeof appDescriptors",
|
|
@@ -541,16 +552,16 @@ ${o.join("\n\n")}\n`);
|
|
|
541
552
|
" * Types only — erased at build time, so importing it costs the bundle",
|
|
542
553
|
" * nothing. */",
|
|
543
554
|
"export type AppProcedures = {",
|
|
544
|
-
...
|
|
555
|
+
...oe,
|
|
545
556
|
"}",
|
|
546
557
|
"",
|
|
547
|
-
...
|
|
558
|
+
...F ? [
|
|
548
559
|
"type __AppErrorOf<D> = D extends { readonly error: infer E extends Schema.Schema.Any } ? Schema.Schema.Type<E> : never",
|
|
549
560
|
"/** Union of every typed error the app's rpcs can fail with — the declared",
|
|
550
561
|
" * `error:` schemas + cross-cutting plugin errors. Generated by reference,",
|
|
551
562
|
" * so it can never drift out of date. (Workflows: see `WorkflowErrors`.) */",
|
|
552
563
|
"export type AppError =",
|
|
553
|
-
...
|
|
564
|
+
...P,
|
|
554
565
|
"/** The `_tag` literal of every AppError — the exhaustive key set for `matchError`. */",
|
|
555
566
|
"export type AppErrorTag = AppError extends { readonly _tag: infer T extends string } ? T : never",
|
|
556
567
|
"",
|
|
@@ -594,7 +605,7 @@ ${o.join("\n\n")}\n`);
|
|
|
594
605
|
"workflows"
|
|
595
606
|
]), p = (e) => e.slice(e.lastIndexOf("/") + 1), m = u;
|
|
596
607
|
for (; m !== t && d.has(p(m));) m = m.slice(0, m.lastIndexOf("/")) || "/";
|
|
597
|
-
let h = o(e.outputFile ?? i(m, "rpcGroup.generated.ts")), g = [...new Map((e.pluginErrorImports ?? []).map((e) => [`${e.module}#${e.name}`, e])).values()], _ = [...new Map((e.pluginRpcImports ?? []).map((e) => [e.tag, e])).values()], v = await Y(r(h)), y = Q(t, h, a, g, c, f(), l, _, v), b = [];
|
|
608
|
+
let h = o(e.outputFile ?? i(m, "rpcGroup.generated.ts")), g = [...new Map((e.pluginErrorImports ?? []).map((e) => [`${e.module}#${e.name}`, e])).values()], _ = [...new Map((e.pluginRpcImports ?? []).map((e) => [e.tag, e])).values()], v = await Y(r(h)), y = Q(t, h, a, g, c, f(), l, _, e.pluginAliases ?? {}, v), b = [];
|
|
598
609
|
for (let t of e.pluginContributions ?? []) {
|
|
599
610
|
let e = null;
|
|
600
611
|
try {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Dn as e, En as t, V as n, l as r, u as i } from "./dev-
|
|
2
|
-
import { n as a } from "./frameworkTableAssembly-
|
|
3
|
-
import { i as o, r as s } from "./codegen-
|
|
1
|
+
import { Dn as e, En as t, V as n, l as r, u as i } from "./dev-Ca_A_S9v.js";
|
|
2
|
+
import { n as a } from "./frameworkTableAssembly-Do-cf6RJ.js";
|
|
3
|
+
import { i as o, r as s } from "./codegen-SIepQtUl.js";
|
|
4
4
|
import { n as c, r as l } from "./mobileCommand-D9O6iq3D.js";
|
|
5
5
|
import { basename as u, relative as d, resolve as f } from "node:path";
|
|
6
6
|
//#region src/codegenCommand.ts
|
|
@@ -10,23 +10,24 @@ var p = async (t) => {
|
|
|
10
10
|
kind: "refused",
|
|
11
11
|
reason: "app.config.ts exists but could not be loaded" + (o === void 0 ? "" : ` — ${o instanceof Error ? o.message : String(o)}`)
|
|
12
12
|
};
|
|
13
|
-
let c = i?.plugins ?? [], { pluginContributions: l, pluginErrorImports: d, pluginRpcImports: f } = await n(c, i?.name ?? u(t), t),
|
|
13
|
+
let c = i?.plugins ?? [], { pluginContributions: l, pluginErrorImports: d, pluginRpcImports: f, pluginAliases: p } = await n(c, i?.name ?? u(t), t), h = await s({
|
|
14
14
|
root: t,
|
|
15
15
|
...l.length > 0 ? { pluginContributions: l } : {},
|
|
16
16
|
...d.length > 0 ? { pluginErrorImports: d } : {},
|
|
17
17
|
...f.length > 0 ? { pluginRpcImports: f } : {},
|
|
18
|
+
...Object.keys(p).length > 0 ? { pluginAliases: p } : {},
|
|
18
19
|
...i?.name === void 0 ? {} : { apiName: i.name }
|
|
19
20
|
});
|
|
20
|
-
if (!
|
|
21
|
-
let
|
|
21
|
+
if (!h) return { kind: "nothing-to-write" };
|
|
22
|
+
let g = await m(t, i), _ = await e(h, g);
|
|
22
23
|
return {
|
|
23
24
|
kind: "wrote",
|
|
24
|
-
file:
|
|
25
|
+
file: h,
|
|
25
26
|
plugins: c.length,
|
|
26
27
|
errorSchemas: d.length,
|
|
27
28
|
routes: f.length,
|
|
28
|
-
tables:
|
|
29
|
-
dts:
|
|
29
|
+
tables: g.size,
|
|
30
|
+
dts: _
|
|
30
31
|
};
|
|
31
32
|
}, m = async (e, n) => {
|
|
32
33
|
let r = await o(e), { tables: s } = await i(r), c = await a({ root: e });
|
|
@@ -6130,6 +6130,61 @@ var S = (e, t, n) => {
|
|
|
6130
6130
|
"Partial registries (`Partial<Record<WidgetKind, …>>` or per-kind lookups)",
|
|
6131
6131
|
"need nothing."
|
|
6132
6132
|
].join("\n")
|
|
6133
|
+
}),
|
|
6134
|
+
w({
|
|
6135
|
+
version: "0.55.0",
|
|
6136
|
+
id: "0.55.0/01_target-relations-declare-columns",
|
|
6137
|
+
title: "A target's `relations:` names the junction's two columns now, not just the table",
|
|
6138
|
+
kind: "manual",
|
|
6139
|
+
appliesTo: ({ project: e }) => e.getSourceFiles().some((e) => {
|
|
6140
|
+
let t = e.getFullText();
|
|
6141
|
+
return /relations:\s*\{[^}{]*:\s*['"`]/.test(t);
|
|
6142
|
+
}),
|
|
6143
|
+
note: [
|
|
6144
|
+
"A write target declares its many-to-many relations as objects now:",
|
|
6145
|
+
"",
|
|
6146
|
+
" // before",
|
|
6147
|
+
" target: { table: 'employees', op: 'update',",
|
|
6148
|
+
" relations: { assignedStores: 'employee_assigned_stores' } }",
|
|
6149
|
+
"",
|
|
6150
|
+
" // after",
|
|
6151
|
+
" target: { table: 'employees', op: 'update',",
|
|
6152
|
+
" relations: { assignedStores: {",
|
|
6153
|
+
" junction: 'employee_assigned_stores',",
|
|
6154
|
+
" anchorColumn: 'employeeId', // the junction reference() pointing at `employees`",
|
|
6155
|
+
" targetColumn: 'storeId', // the junction's other reference()",
|
|
6156
|
+
" } } }",
|
|
6157
|
+
"",
|
|
6158
|
+
"Take both column names from the junction table's own `reference()`",
|
|
6159
|
+
"columns in your `db/` schema — `anchorColumn` is the one pointing at the",
|
|
6160
|
+
"target's table, `targetColumn` is the other one.",
|
|
6161
|
+
"",
|
|
6162
|
+
"Why: the SAME declaration now drives the optimistic update in the browser,",
|
|
6163
|
+
"so a multi-reference field flips as instantly as a scalar one instead of",
|
|
6164
|
+
"waiting for the server delta. The browser cannot import your schema, so the",
|
|
6165
|
+
"columns have to be stated. They are not taken on trust: before it writes,",
|
|
6166
|
+
"the server compares them against the junction's real reference columns and",
|
|
6167
|
+
"refuses — naming the correct pair — if they disagree."
|
|
6168
|
+
].join("\n")
|
|
6169
|
+
}),
|
|
6170
|
+
w({
|
|
6171
|
+
version: "0.55.0",
|
|
6172
|
+
id: "0.55.0/02_widget-kind-gained-rich-text",
|
|
6173
|
+
title: "WidgetKind gained 'rich-text' — total widget registries need one new entry",
|
|
6174
|
+
kind: "manual",
|
|
6175
|
+
appliesTo: ({ project: e }) => e.getSourceFiles().some((e) => /Record<WidgetKind/.test(e.getFullText())),
|
|
6176
|
+
note: [
|
|
6177
|
+
"This repository types a widget registry as `Record<WidgetKind, …>`.",
|
|
6178
|
+
"`WidgetKind` gained `'rich-text'`, so the total map needs one new entry.",
|
|
6179
|
+
"The framework ships a default you can point at:",
|
|
6180
|
+
"",
|
|
6181
|
+
" import { RichTextWidget } from '@voltro/web'",
|
|
6182
|
+
" // …",
|
|
6183
|
+
" 'rich-text': RichTextWidget,",
|
|
6184
|
+
"",
|
|
6185
|
+
"Partial registries (`Partial<Record<WidgetKind, …>>` or per-kind lookups)",
|
|
6186
|
+
"need nothing."
|
|
6187
|
+
].join("\n")
|
|
6133
6188
|
})
|
|
6134
6189
|
], J = /* @__PURE__ */ new Set([
|
|
6135
6190
|
"node_modules",
|
|
@@ -91,7 +91,7 @@ var u = () => {
|
|
|
91
91
|
name: "dev",
|
|
92
92
|
summary: "Start the local development server (auto-discovers routes / mutations).",
|
|
93
93
|
status: "wired",
|
|
94
|
-
run: (e) => import("./dev-
|
|
94
|
+
run: (e) => import("./dev-DfVZaoys.js").then((t) => t.runDev(e)),
|
|
95
95
|
help: {
|
|
96
96
|
usage: "[app]",
|
|
97
97
|
examples: [["voltro dev", "boot the app in the current directory"], ["voltro dev apps/acme/api", "boot a specific app"]],
|
|
@@ -109,7 +109,7 @@ var u = () => {
|
|
|
109
109
|
name: "dashboard",
|
|
110
110
|
summary: "Serve the DevTools dashboard standalone (from @voltro/dashboard). Targets via VOLTRO_DASHBOARD_APPS; --port to override.",
|
|
111
111
|
status: "wired",
|
|
112
|
-
run: (e) => import("./dashboardCommand-
|
|
112
|
+
run: (e) => import("./dashboardCommand-D2kmyCLL.js").then((t) => t.runDashboardCommand(e)),
|
|
113
113
|
help: {
|
|
114
114
|
usage: "[--port <n>]",
|
|
115
115
|
flags: [["--port <n>", "port to serve the dashboard on"]],
|
|
@@ -121,7 +121,7 @@ var u = () => {
|
|
|
121
121
|
name: "check",
|
|
122
122
|
summary: "Verify the app graph (blast-radius checks) against a running api; LLM-shaped --json diagnostics. Flags: --json, --process <p>, --diff removeTable:<name>.",
|
|
123
123
|
status: "wired",
|
|
124
|
-
run: (e) => import("./checkCommand-
|
|
124
|
+
run: (e) => import("./checkCommand-DNkY5kwF.js").then((t) => t.runCheckCommand(e)),
|
|
125
125
|
help: {
|
|
126
126
|
usage: "[--json] [--offline] [--process <name>] [--diff removeTable:<name>]",
|
|
127
127
|
flags: [
|
|
@@ -155,7 +155,7 @@ var u = () => {
|
|
|
155
155
|
name: "webhooks",
|
|
156
156
|
summary: "Outbound-webhook artefacts. `consumer` generates the ZERO-DEPENDENCY Standard-Webhooks verification package a subscriber installs, from this app's own declared events; `events` lists the events a subscriber can register for. Usage: voltro webhooks <consumer|events> [path] [--out <dir>] [--name <pkg>] [--json].",
|
|
157
157
|
status: "wired",
|
|
158
|
-
run: (e) => import("./webhooksCommand-
|
|
158
|
+
run: (e) => import("./webhooksCommand-B1LVcyO3.js").then((t) => t.runWebhooksCommand(e)),
|
|
159
159
|
help: {
|
|
160
160
|
usage: "<consumer|events> [path] [--out <dir>] [--name <pkg>] [--json]",
|
|
161
161
|
flags: [
|
|
@@ -171,7 +171,7 @@ var u = () => {
|
|
|
171
171
|
name: "evolve",
|
|
172
172
|
summary: "Schema-evolution copilot: propose an observed-graph-driven codemod + a branch-verified backfill for a schema change (rename/retype/split/drop a column, rename a table). Dry-run by default; --write applies. Usage: voltro evolve rename-column <table>.<col> --to <newName> [--write] [--json].",
|
|
173
173
|
status: "wired",
|
|
174
|
-
run: (e) => import("./evolveCommand-
|
|
174
|
+
run: (e) => import("./evolveCommand-BsbZ-XDg.js").then((t) => t.runEvolveCommand(e)),
|
|
175
175
|
help: {
|
|
176
176
|
usage: "<rename-column|rename-table|retype-column|split-column|drop-column> <target> [--to <new>] [--write]",
|
|
177
177
|
flags: [
|
|
@@ -188,7 +188,7 @@ var u = () => {
|
|
|
188
188
|
name: "codegen",
|
|
189
189
|
summary: "Emit rpcGroup.generated.ts from discovered route / mutation descriptors.",
|
|
190
190
|
status: "wired",
|
|
191
|
-
run: (e) => import("./codegenCommand-
|
|
191
|
+
run: (e) => import("./codegenCommand-3TDJezom.js").then((t) => t.runCodegenCommand(e)),
|
|
192
192
|
help: {
|
|
193
193
|
usage: "[app]",
|
|
194
194
|
examples: [["voltro codegen", "regenerate rpcGroup.generated.ts for the app in the cwd"]],
|
|
@@ -221,7 +221,7 @@ var u = () => {
|
|
|
221
221
|
name: "migrate",
|
|
222
222
|
summary: "Apply the declared schema to the database (alias of `db apply` — diffs declared vs live and emits the ALTERs). `--create-only` for the bootstrap-only CREATE TABLE IF NOT EXISTS path.",
|
|
223
223
|
status: "wired",
|
|
224
|
-
run: (e) => import("./migrate-
|
|
224
|
+
run: (e) => import("./migrate-CGFZS-1a.js").then((t) => t.runMigrateCommand(e)),
|
|
225
225
|
help: {
|
|
226
226
|
usage: "[app] [--create-only]",
|
|
227
227
|
flags: [["--create-only", "only CREATE TABLE IF NOT EXISTS — never ALTER (bootstrap)"]],
|
|
@@ -233,7 +233,7 @@ var u = () => {
|
|
|
233
233
|
name: "test",
|
|
234
234
|
summary: "Run vitest against the app at the cwd (auto-discovers *.test.ts/tsx).",
|
|
235
235
|
status: "wired",
|
|
236
|
-
run: (e) => import("./test-
|
|
236
|
+
run: (e) => import("./test-DO27-x2P.js").then((t) => t.runTestCommand(e)),
|
|
237
237
|
help: {
|
|
238
238
|
usage: "[dir] [filter…] [--watch] [-t <pattern>]",
|
|
239
239
|
flags: [
|
|
@@ -281,7 +281,7 @@ var u = () => {
|
|
|
281
281
|
name: "info",
|
|
282
282
|
summary: "Report versions (CLI, node, every installed @voltro/* — flags lockstep skew), package manager, and dialect. --json for CI. Exits 1 on version skew.",
|
|
283
283
|
status: "wired",
|
|
284
|
-
run: (e) => import("./infoCommand-
|
|
284
|
+
run: (e) => import("./infoCommand-EmM3jPKD.js").then((t) => t.runInfoCommand(e)),
|
|
285
285
|
help: {
|
|
286
286
|
usage: "[--json]",
|
|
287
287
|
flags: [["--json", "machine-readable report"]],
|
|
@@ -302,7 +302,7 @@ var u = () => {
|
|
|
302
302
|
name: "env",
|
|
303
303
|
summary: "Inspect/sync the typed-env manifest. Subcommands: check (default), sync (.env.example), types (env.generated.d.ts for CI tsc), turbo.",
|
|
304
304
|
status: "wired",
|
|
305
|
-
run: (e) => import("./envCommand-
|
|
305
|
+
run: (e) => import("./envCommand-Bxy2fOjc.js").then((t) => t.runEnvCommand(e)),
|
|
306
306
|
help: {
|
|
307
307
|
usage: "[check|sync|types|turbo] [--force]",
|
|
308
308
|
flags: [["--force", "overwrite the generated file instead of refusing on a conflict"]],
|
|
@@ -331,12 +331,12 @@ var u = () => {
|
|
|
331
331
|
run: async (e) => {
|
|
332
332
|
let t = e.find((e) => !e.startsWith("-")) ?? process.cwd();
|
|
333
333
|
if (e.includes("--preflight")) {
|
|
334
|
-
let { runServePreflight: e } = await import("./doctorCommand-
|
|
334
|
+
let { runServePreflight: e } = await import("./doctorCommand-djmqEcDC.js");
|
|
335
335
|
return e(s(t), !0);
|
|
336
336
|
}
|
|
337
|
-
let { tryRunWebServe: n } = await import("./webDev-
|
|
337
|
+
let { tryRunWebServe: n } = await import("./webDev-1XpVnYkW.js"), r = await n(s(t));
|
|
338
338
|
if (!r.ran) {
|
|
339
|
-
let { runServeDispatch: t } = await import("./serveCommand-
|
|
339
|
+
let { runServeDispatch: t } = await import("./serveCommand-Cjt5S9hD.js");
|
|
340
340
|
return t(e);
|
|
341
341
|
}
|
|
342
342
|
return r.exitCode;
|
|
@@ -364,13 +364,13 @@ var u = () => {
|
|
|
364
364
|
handlesHelp: !0,
|
|
365
365
|
summary: "Preflight an app for production: the precompiled serve bundle, hand-rolled primitives (naming the shipped one), @voltro/* version skew, executors with no access check, `.serverOnly()` leaks, and junction-FK gaps.",
|
|
366
366
|
status: "wired",
|
|
367
|
-
run: (e) => import("./doctorCommand-
|
|
367
|
+
run: (e) => import("./doctorCommand-djmqEcDC.js").then((t) => t.runDoctorCommand(e))
|
|
368
368
|
},
|
|
369
369
|
{
|
|
370
370
|
name: "build",
|
|
371
371
|
summary: "Production build for a web app (vite build + per-page SSG pre-render).",
|
|
372
372
|
status: "wired",
|
|
373
|
-
run: (e) => import("./build-
|
|
373
|
+
run: (e) => import("./build-S0QOzqPT.js").then((t) => t.runBuildCommand(e)),
|
|
374
374
|
help: {
|
|
375
375
|
usage: "[app] [--target <t>]",
|
|
376
376
|
flags: [["--target <t>", "build target"]],
|
|
@@ -386,7 +386,7 @@ var u = () => {
|
|
|
386
386
|
name: "prune-runtime",
|
|
387
387
|
summary: "Trim a deployed web tree’s node_modules to the reachable runtime set (standalone image slimming).",
|
|
388
388
|
status: "wired",
|
|
389
|
-
run: (e) => import("./runtimeTrace-
|
|
389
|
+
run: (e) => import("./runtimeTrace-C1BTpHGQ.js").then((t) => t.runPruneRuntimeCommand(e)),
|
|
390
390
|
hidden: !0
|
|
391
391
|
},
|
|
392
392
|
{
|
|
@@ -404,7 +404,7 @@ var u = () => {
|
|
|
404
404
|
name: "dormancy",
|
|
405
405
|
summary: "Single-node scale-to-zero: front the API with a wake-orchestrator that stops the app when idle and brings it back on a request or a due wakeup (cron/workflow). Needs a SQL store. Flags: --port, --app-port, --idle-grace-ms, --tick-ms.",
|
|
406
406
|
status: "wired",
|
|
407
|
-
run: (e) => import("./dormancyCommand-
|
|
407
|
+
run: (e) => import("./dormancyCommand-DY2rYpTa.js").then((t) => t.runDormancyCommand(e)),
|
|
408
408
|
help: {
|
|
409
409
|
usage: "[app] [--port <n>] [--app-port <n>] [--idle-grace-ms <n>] [--tick-ms <n>]",
|
|
410
410
|
flags: [
|
|
@@ -421,7 +421,7 @@ var u = () => {
|
|
|
421
421
|
name: "start",
|
|
422
422
|
summary: "Production runtime: serves dist + SSR-on-demand for ssr/isr pages.",
|
|
423
423
|
status: "wired",
|
|
424
|
-
run: (e) => import("./start-
|
|
424
|
+
run: (e) => import("./start-DH7cat4-.js").then((t) => t.runStartCommand(e)),
|
|
425
425
|
help: {
|
|
426
426
|
usage: "[app]",
|
|
427
427
|
examples: [["voltro start", "serve a built web app (dist + SSR-on-demand)"]],
|
|
@@ -475,7 +475,7 @@ var u = () => {
|
|
|
475
475
|
name: "db",
|
|
476
476
|
summary: "Database subcommands. Declarative flow: plan, apply, branch, plans, drift [--accept], squash, restore-snapshot. File migrations: generate [name], migrate, rollback, status, files, rollback-file. Data + housekeeping: seed, gc-snapshots, adopt. Credentials at rest: scan-credentials (find plaintext), encrypt-column (migrate a populated column onto .encrypted()).",
|
|
477
477
|
status: "wired",
|
|
478
|
-
run: (e) => import("./dbCommand-
|
|
478
|
+
run: (e) => import("./dbCommand-BTyBGhIA.js").then((t) => t.runDbCommand(e)),
|
|
479
479
|
help: {
|
|
480
480
|
usage: e(n),
|
|
481
481
|
examples: [
|
|
@@ -491,7 +491,7 @@ var u = () => {
|
|
|
491
491
|
name: "data",
|
|
492
492
|
summary: "Export/import + backup/restore of app data. Logical (rows + optional assets): export <dir> [--tenant <id>|--tables a,b|--exclude a,b] [--assets] [--compression zstd|gzip|none] [--consistency live|snapshot]; import <dir> [--assets] [--no-verify]; transfers — the history in all four directions, including a run in flight; inspect <file|dir>; unpack <file> <dir>. Native (vendor dump, no resume): backup <dir> [--assets] / restore <dir> [--assets] (pg_dump/mariadb-dump/…) — a restore marks the database in-progress until it finishes. Recovery: clear-replace-marker, clear-staging. Resumable + typed-NDJSON on the logical path; content-addressed assets on both.",
|
|
493
493
|
status: "wired",
|
|
494
|
-
run: (e) => import("./dataCommand-
|
|
494
|
+
run: (e) => import("./dataCommand-BEPPQiTl.js").then((t) => t.runDataCommand(e)),
|
|
495
495
|
help: {
|
|
496
496
|
usage: e(i),
|
|
497
497
|
flags: [
|
|
@@ -555,20 +555,20 @@ var u = () => {
|
|
|
555
555
|
handlesHelp: !0,
|
|
556
556
|
summary: "Upgrade the app to the latest framework: bump every @voltro/* dependency (across ALL workspace members, install once at the workspace root), then run the codemods shipped with the target version. Flags: --to <version>, --from <version>, --codemods-only, --dry-run, --force, --exact, --help. After: run `voltro db apply`.",
|
|
557
557
|
status: "wired",
|
|
558
|
-
run: (e) => import("./updateCommand-
|
|
558
|
+
run: (e) => import("./updateCommand-nnFjDbl4.js").then((t) => t.runUpdateCommand(e))
|
|
559
559
|
},
|
|
560
560
|
{
|
|
561
561
|
name: "_apply-codemods",
|
|
562
562
|
summary: "Internal: apply shipped codemods for a framework version jump (re-exec target of `voltro update`).",
|
|
563
563
|
status: "wired",
|
|
564
564
|
hidden: !0,
|
|
565
|
-
run: (e) => import("./updateCommand-
|
|
565
|
+
run: (e) => import("./updateCommand-nnFjDbl4.js").then((t) => t.runApplyCodemods(e))
|
|
566
566
|
},
|
|
567
567
|
{
|
|
568
568
|
name: "embeddings",
|
|
569
569
|
summary: "Embeddings tooling. Subcommand: backfill <table> --text <field> --vector <field> [--model <m>] [--model-field <f>] [--batch <n>] [--dry-run] — (re)embed rows the vectorEmbedding() mixin missed.",
|
|
570
570
|
status: "wired",
|
|
571
|
-
run: (e) => import("./embeddingsCommand-
|
|
571
|
+
run: (e) => import("./embeddingsCommand-BoCqZsgp.js").then((t) => t.runEmbeddingsCommand(e)),
|
|
572
572
|
help: {
|
|
573
573
|
usage: "backfill <table> --text <field> --vector <field> [--model <m>] [--batch <n>] [--dry-run]",
|
|
574
574
|
flags: [
|
|
@@ -614,7 +614,7 @@ var u = () => {
|
|
|
614
614
|
summary: "Ask a RUNNING app whether its declared access is enforced. `access` calls every guarded procedure with NO credentials and reports any that answer (--process, --url, --strict, --format).",
|
|
615
615
|
status: "wired",
|
|
616
616
|
handlesHelp: !0,
|
|
617
|
-
run: (e) => import("./probeCommand-
|
|
617
|
+
run: (e) => import("./probeCommand-Bs3iVBSL.js").then((t) => t.runProbeCommand(e))
|
|
618
618
|
},
|
|
619
619
|
{
|
|
620
620
|
name: "schedule",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { f as e } from "./dev-
|
|
2
|
-
import { Z as t, et as n } from "./webDev-
|
|
3
|
-
import { t as r } from "./start-
|
|
1
|
+
import { f as e } from "./dev-Ca_A_S9v.js";
|
|
2
|
+
import { Z as t, et as n } from "./webDev-B7vNj4Bq.js";
|
|
3
|
+
import { t as r } from "./start-EOV7s1NZ.js";
|
|
4
4
|
import { join as i } from "node:path";
|
|
5
5
|
import { existsSync as a } from "node:fs";
|
|
6
6
|
import { createLogger as o } from "@voltro/logger";
|