@voltro/cli 0.29.0 → 0.30.1
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 +448 -0
- package/THIRD-PARTY-NOTICES.md +2 -2
- package/dist/apiBuild-Ca6Sq5jy.js +2 -0
- package/dist/{apiBuild-BESZbTjA.js → apiBuild-DmkzRyv7.js} +2 -2
- package/dist/bin.js +3 -3
- package/dist/{checkCommand-BPAtyWs8.js → checkCommand-C4konUy9.js} +435 -304
- package/dist/checkCommand-DHD0aBeR.js +2 -0
- package/dist/{commands-82BDEktg.js → commands-BkJft9K2.js} +2413 -1814
- package/dist/{dbCommand-bCBbk6tz.js → dbCommand-qn__kLEt.js} +344 -265
- package/dist/dbCommand-wfGi3FgG.js +2 -0
- package/dist/{dev-Cg4BKLmi.js → dev-C_NPcLDp.js} +2716 -1782
- package/dist/{dev-DeEJj5T4.js → dev-DXhhZ7-f.js} +1 -1
- package/dist/frameworkTableAssembly-Bn_c4Mnl.js +2 -0
- package/dist/{frameworkTableAssembly-4Db40V23.js → frameworkTableAssembly-Cpgn2e88.js} +155 -141
- package/dist/index.d.ts +7 -2
- package/dist/index.js +1 -1
- package/dist/{inspect-BMvQpwqy.js → inspect-BUUjt773.js} +150 -14
- package/dist/inspect-mmBuRXmy.js +2 -0
- package/dist/{inspectMetrics-DHYygE4s.js → inspectMetrics-CkB2J0Zn.js} +566 -512
- package/dist/{manifestBuild-C4R1EdHn.js → manifestBuild-BLrVuSlM.js} +1 -1
- package/dist/manifestBuild-Dj8Jjoto.js +2 -0
- package/dist/{sdkgen-CW5NbYF0.js → sdkgen-wsWLrq4l.js} +1 -1
- package/dist/serveCommand-HtI4X5kj.js +1577 -0
- package/dist/serveEntry.js +2 -2
- package/dist/{start-CsCIaW4-.js → start-egkbpugc.js} +177 -175
- package/dist/startEntry.js +2 -2
- package/package.json +17 -17
- package/templates/AGENTS.core.md +50 -0
- package/templates/AGENTS.md +53 -2
- package/templates/agent-docs/_index.md +3 -2
- package/templates/agent-docs/_manifest.json +16 -4
- package/templates/agent-docs/ai.md +56 -0
- package/templates/agent-docs/cli.md +46 -0
- package/templates/agent-docs/internationalization.md +8 -7
- package/templates/agent-docs/local-first-mobile.md +18 -6
- package/templates/agent-docs/routing.md +15 -1
- package/templates/agent-docs/security.md +17 -0
- package/templates/agent-docs/templates/apibackends.md +209 -0
- package/templates/agent-docs/templates/appshells.md +144 -1
- package/templates/agent-docs/templates/mobile.md +60 -0
- package/templates/agent-docs/templates/overview.md +17 -7
- package/templates/agent-docs/whats-new.md +36 -243
- package/templates/agent-docs/workflows.md +367 -0
- package/templates/apps/api-ai/package.json +7 -7
- 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 +10 -10
- package/templates/apps/api-collab/README.md +70 -0
- package/templates/apps/api-collab/app.config.ts +28 -0
- package/templates/apps/api-collab/database/schema.ts +63 -0
- package/templates/apps/api-collab/mutations/documents.create.mutation.server.ts +19 -0
- package/templates/apps/api-collab/mutations/documents.create.mutation.ts +36 -0
- package/templates/apps/api-collab/mutations/documents.setBody.mutation.server.ts +20 -0
- package/templates/apps/api-collab/mutations/documents.setBody.mutation.ts +30 -0
- package/templates/apps/api-collab/package.json +30 -0
- package/templates/apps/api-collab/queries/documents.query.server.ts +16 -0
- package/templates/apps/api-collab/queries/documents.query.ts +23 -0
- package/templates/apps/api-collab/template.json +6 -0
- package/templates/apps/api-collab/tests/documents.setBody.test.ts +89 -0
- package/templates/apps/api-collab/tsconfig.json +5 -0
- 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-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-versioning/package.json +8 -8
- package/templates/apps/api-webhooks/package.json +9 -9
- package/templates/apps/changelog/package.json +6 -6
- package/templates/apps/edge-functions/package.json +2 -2
- package/templates/apps/frontend-admin/app.config.ts +1 -1
- package/templates/apps/frontend-admin/package.json +8 -8
- package/templates/apps/frontend-admin/src/locales/index.ts +1 -1
- package/templates/apps/frontend-app/app.config.ts +1 -1
- package/templates/apps/frontend-app/package.json +8 -8
- package/templates/apps/frontend-app/src/locales/index.ts +1 -1
- package/templates/apps/frontend-app/src/pages/layout.tsx +1 -1
- package/templates/apps/frontend-app/src/pages/page.tsx +1 -1
- package/templates/apps/frontend-auth/package.json +8 -8
- package/templates/apps/frontend-auth/src/locales/index.ts +1 -1
- package/templates/apps/frontend-blank/app.config.ts +1 -1
- package/templates/apps/frontend-blank/package.json +7 -7
- package/templates/apps/frontend-blank/src/locales/index.ts +1 -1
- package/templates/apps/frontend-blank/src/pages/layout.tsx +1 -1
- package/templates/apps/frontend-blank/src/pages/page.tsx +1 -1
- package/templates/apps/frontend-cms/package.json +9 -9
- package/templates/apps/frontend-cms/src/locales/index.ts +1 -1
- package/templates/apps/frontend-collab/README.md +80 -0
- package/templates/apps/frontend-collab/app.config.ts +38 -0
- package/templates/apps/frontend-collab/package.json +33 -0
- package/templates/apps/frontend-collab/src/locales/de.ts +29 -0
- package/templates/apps/frontend-collab/src/locales/en.ts +31 -0
- package/templates/apps/frontend-collab/src/locales/index.ts +15 -0
- package/templates/apps/frontend-collab/src/pages/layout.tsx +39 -0
- package/templates/apps/frontend-collab/src/pages/page.test.tsx +150 -0
- package/templates/apps/frontend-collab/src/pages/page.tsx +186 -0
- package/templates/apps/frontend-collab/template.json +6 -0
- package/templates/apps/frontend-collab/tsconfig.json +11 -0
- package/templates/apps/frontend-contact/package.json +7 -7
- package/templates/apps/frontend-dashboard/app.config.ts +1 -1
- package/templates/apps/frontend-dashboard/package.json +7 -7
- package/templates/apps/frontend-dashboard/src/locales/index.ts +1 -1
- package/templates/apps/frontend-docs/package.json +7 -7
- 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-portal/src/locales/index.ts +1 -1
- package/templates/apps/frontend-saas/README.md +1 -1
- package/templates/apps/frontend-saas/app.config.ts +1 -1
- package/templates/apps/frontend-saas/package.json +8 -8
- package/templates/apps/frontend-saas/src/locales/index.ts +1 -1
- package/templates/apps/frontend-spa/app.config.ts +1 -1
- package/templates/apps/frontend-spa/package.json +7 -7
- package/templates/apps/frontend-spa/src/locales/index.ts +1 -1
- package/templates/apps/frontend-spa/src/pages/layout.tsx +1 -1
- package/templates/apps/frontend-spa/src/pages/page.tsx +1 -1
- package/templates/apps/frontend-ssr/app.config.ts +1 -1
- package/templates/apps/frontend-ssr/package.json +7 -7
- package/templates/apps/frontend-ssr/src/locales/index.ts +1 -1
- package/templates/apps/frontend-ssr/src/pages/layout.tsx +1 -1
- package/templates/apps/frontend-ssr/src/pages/page.tsx +1 -1
- package/templates/apps/frontend-ssr-api/app.config.ts +1 -1
- package/templates/apps/frontend-ssr-api/package.json +8 -8
- package/templates/apps/frontend-ssr-api/src/locales/index.ts +1 -1
- package/templates/apps/frontend-ssr-api/src/pages/layout.tsx +1 -1
- package/templates/apps/frontend-static-blog/package.json +6 -6
- package/templates/apps/frontend-status/package.json +8 -8
- package/templates/apps/frontend-status/src/locales/index.ts +1 -1
- package/templates/apps/mobile-app/README.md +58 -0
- package/templates/apps/mobile-app/app.config.ts +33 -0
- package/templates/apps/mobile-app/babel.config.js +5 -0
- package/templates/apps/mobile-app/metro.config.js +20 -0
- package/templates/apps/mobile-app/package.json +33 -0
- package/templates/apps/mobile-app/src/app/_layout.tsx +61 -0
- package/templates/apps/mobile-app/src/app/index.tsx +62 -0
- package/templates/apps/mobile-app/src/app/orders/[id].tsx +19 -0
- package/templates/apps/mobile-app/src/app/settings.tsx +51 -0
- package/templates/apps/mobile-app/src/client.ts +74 -0
- package/templates/apps/mobile-app/src/lib/deeplinks.ts +39 -0
- package/templates/apps/mobile-app/src/lib/notifications.ts +31 -0
- package/templates/apps/mobile-app/src/lib/sync.ts +29 -0
- package/templates/apps/mobile-app/src/persistence.ts +38 -0
- package/templates/apps/mobile-app/template.json +6 -0
- package/templates/apps/mobile-app/tests/deeplinks.test.ts +32 -0
- package/templates/apps/mobile-app/tests/notifications.test.ts +26 -0
- package/templates/apps/mobile-app/tests/sync.test.ts +34 -0
- package/templates/apps/mobile-app/tsconfig.json +10 -0
- package/templates/apps/mobile-app/voltro.mobile.ts +11 -0
- package/templates/patches/@effect__cluster@0.60.0.patch +6 -6
- package/dist/apiBuild-C8d74T6g.js +0 -2
- package/dist/checkCommand-DBvZvCh1.js +0 -2
- package/dist/dbCommand-CaIVTp-a.js +0 -2
- package/dist/frameworkTableAssembly-BTNirAAk.js +0 -2
- package/dist/inspect-DHeaMZak.js +0 -2
- package/dist/manifestBuild-Ck_90gZy.js +0 -2
- package/dist/serveCommand-BXl8mhZD.js +0 -1489
|
@@ -1,41 +1,53 @@
|
|
|
1
1
|
import { n as e } from "./appModuleLoader-C9r9mxZt.js";
|
|
2
|
-
import { D as t, a as n, j as r, k as i
|
|
3
|
-
import { basename as
|
|
4
|
-
import { pathToFileURL as
|
|
5
|
-
import { Effect as
|
|
6
|
-
import { promises as
|
|
7
|
-
import { _voltroConnectionGrantsTable as
|
|
8
|
-
import { SqlClient as
|
|
9
|
-
import { _voltroWorkflowRunEventsTable as
|
|
10
|
-
import { agentMessagesTable as
|
|
11
|
-
import { _voltroApiKeysTable as
|
|
12
|
-
import { _voltroWebhookDeliveriesTable as
|
|
13
|
-
import { _voltroStorageBlobsTable as
|
|
14
|
-
import { defineAction as
|
|
2
|
+
import { D as t, a as n, j as r, k as i } from "./fileConventions-Cof68_BL.js";
|
|
3
|
+
import { basename as a, join as o } from "node:path";
|
|
4
|
+
import { pathToFileURL as s } from "node:url";
|
|
5
|
+
import { Effect as c } from "effect";
|
|
6
|
+
import { promises as l } from "node:fs";
|
|
7
|
+
import { _voltroConnectionGrantsTable as u, _voltroConnectionsTable as d, _voltroScheduleClaimsTable as f, _voltroScheduleRunsTable as p, _voltroTracesTable as ee, _voltroUndoLogTable as te, _voltroWakeupsTable as ne, _voltroWorkflowEventDeliveriesTable as re, _voltroWorkflowEventsTable as ie, outboxAttemptsTable as ae, outboxTable as oe, undoCaptureEnabled as se } from "@voltro/runtime";
|
|
8
|
+
import { SqlClient as m } from "@effect/sql";
|
|
9
|
+
import { _voltroWorkflowAdmissionsTable as ce, _voltroWorkflowPausesTable as le, _voltroWorkflowPendingTable as ue, _voltroWorkflowRunEventsTable as de, _voltroWorkflowRunStepsTable as fe, _voltroWorkflowRunsTable as pe, _voltroWorkflowStartContextsTable as me, _voltroWorkflowWatermarksTable as he } from "@voltro/workflow";
|
|
10
|
+
import { agentMessagesTable as ge, agentThreadsTable as h, aiBudgetTable as g, aiInferencesTable as _, aiUsageTable as v, isAgentDescriptor as y, isAgentExecutor as b, resolveToolModuleHandlers as x } from "@voltro/ai";
|
|
11
|
+
import { _voltroApiKeysTable as S, _voltroCdcOffsetsTable as C, _voltroIdempotencyTable as w, _voltroKvTable as T, _voltroMigrationPlansTable as E, _voltroMigrationsTable as D, _voltroMssqlCdcOffsetsTable as O, _voltroSeedsTable as k, lt as A } from "@voltro/database";
|
|
12
|
+
import { _voltroWebhookDeliveriesTable as j, _voltroWebhookTargetsTable as M } from "@voltro/plugin-webhooks/mixin";
|
|
13
|
+
import { _voltroStorageBlobsTable as N, _voltroStorageGrantsTable as P, _voltroStorageRefsTable as F, _voltroStorageUsageTable as I } from "@voltro/plugin-storage";
|
|
14
|
+
import { defineAction as L, defineMutation as _e, defineQuery as ve } from "@voltro/protocol";
|
|
15
15
|
//#region src/frameworkTables.ts
|
|
16
|
-
var
|
|
16
|
+
var ye = [
|
|
17
17
|
{
|
|
18
|
-
table:
|
|
18
|
+
table: D,
|
|
19
19
|
when: "always"
|
|
20
20
|
},
|
|
21
21
|
{
|
|
22
|
-
table:
|
|
22
|
+
table: k,
|
|
23
23
|
when: "always"
|
|
24
24
|
},
|
|
25
25
|
{
|
|
26
|
-
table:
|
|
26
|
+
table: E,
|
|
27
27
|
when: "always"
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
|
-
table:
|
|
30
|
+
table: pe,
|
|
31
31
|
when: "workflows"
|
|
32
32
|
},
|
|
33
33
|
{
|
|
34
|
-
table:
|
|
34
|
+
table: fe,
|
|
35
35
|
when: "workflows"
|
|
36
36
|
},
|
|
37
37
|
{
|
|
38
|
-
table:
|
|
38
|
+
table: de,
|
|
39
|
+
when: "workflows"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
table: me,
|
|
43
|
+
when: "workflows"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
table: ue,
|
|
47
|
+
when: "workflows"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
table: ce,
|
|
39
51
|
when: "workflows"
|
|
40
52
|
},
|
|
41
53
|
{
|
|
@@ -43,133 +55,137 @@ var R = [
|
|
|
43
55
|
when: "workflows"
|
|
44
56
|
},
|
|
45
57
|
{
|
|
46
|
-
table:
|
|
58
|
+
table: he,
|
|
47
59
|
when: "workflows"
|
|
48
60
|
},
|
|
49
61
|
{
|
|
50
|
-
table:
|
|
62
|
+
table: ie,
|
|
51
63
|
when: "workflows"
|
|
52
64
|
},
|
|
53
65
|
{
|
|
54
|
-
table:
|
|
55
|
-
when: "
|
|
66
|
+
table: re,
|
|
67
|
+
when: "workflows"
|
|
56
68
|
},
|
|
57
69
|
{
|
|
58
70
|
table: p,
|
|
59
71
|
when: "schedules"
|
|
60
72
|
},
|
|
61
73
|
{
|
|
62
|
-
table:
|
|
74
|
+
table: f,
|
|
75
|
+
when: "schedules"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
table: M,
|
|
63
79
|
when: "webhooks"
|
|
64
80
|
},
|
|
65
81
|
{
|
|
66
|
-
table:
|
|
82
|
+
table: j,
|
|
67
83
|
when: "webhooks"
|
|
68
84
|
},
|
|
69
85
|
{
|
|
70
|
-
table:
|
|
86
|
+
table: ee,
|
|
71
87
|
when: "traces"
|
|
72
88
|
},
|
|
73
89
|
{
|
|
74
|
-
table:
|
|
90
|
+
table: te,
|
|
75
91
|
when: "undo"
|
|
76
92
|
},
|
|
77
93
|
{
|
|
78
|
-
table:
|
|
79
|
-
when: "
|
|
94
|
+
table: oe,
|
|
95
|
+
when: "always"
|
|
80
96
|
},
|
|
81
97
|
{
|
|
82
|
-
table:
|
|
83
|
-
when: "
|
|
98
|
+
table: ae,
|
|
99
|
+
when: "always"
|
|
84
100
|
},
|
|
85
101
|
{
|
|
86
|
-
table:
|
|
102
|
+
table: d,
|
|
87
103
|
when: "connections"
|
|
88
104
|
},
|
|
89
105
|
{
|
|
90
|
-
table:
|
|
106
|
+
table: u,
|
|
91
107
|
when: "connections"
|
|
92
108
|
},
|
|
93
109
|
{
|
|
94
|
-
table:
|
|
110
|
+
table: ne,
|
|
95
111
|
when: "always"
|
|
96
112
|
},
|
|
97
113
|
{
|
|
98
|
-
table:
|
|
114
|
+
table: F,
|
|
99
115
|
when: "always"
|
|
100
116
|
},
|
|
101
117
|
{
|
|
102
|
-
table:
|
|
118
|
+
table: P,
|
|
103
119
|
when: "always"
|
|
104
120
|
},
|
|
105
121
|
{
|
|
106
|
-
table:
|
|
122
|
+
table: N,
|
|
107
123
|
when: "always"
|
|
108
124
|
},
|
|
109
125
|
{
|
|
110
|
-
table:
|
|
126
|
+
table: I,
|
|
111
127
|
when: "always"
|
|
112
128
|
},
|
|
113
129
|
{
|
|
114
|
-
table:
|
|
130
|
+
table: w,
|
|
115
131
|
when: "always"
|
|
116
132
|
},
|
|
117
133
|
{
|
|
118
|
-
table:
|
|
134
|
+
table: S,
|
|
119
135
|
when: "always"
|
|
120
136
|
},
|
|
121
137
|
{
|
|
122
|
-
table:
|
|
138
|
+
table: T,
|
|
123
139
|
when: "always"
|
|
124
140
|
}
|
|
125
|
-
],
|
|
126
|
-
let t =
|
|
127
|
-
return e.cdc === !0 && t.push(e.cdcDialect === "mssql" ?
|
|
128
|
-
},
|
|
141
|
+
], R = (e) => {
|
|
142
|
+
let t = ye.filter((t) => t.when === "always" || t.when === "workflows" && e.workflows || t.when === "schedules" && e.schedules || t.when === "webhooks" && e.webhooks || t.when === "traces" && e.traces || t.when === "undo" && e.undo === !0 || t.when === "connections" && e.connections === !0).map((e) => e.table);
|
|
143
|
+
return e.cdc === !0 && t.push(e.cdcDialect === "mssql" ? O : C), t;
|
|
144
|
+
}, z = (e) => {
|
|
129
145
|
let t = e.startsWith("@") ? e.replace(/^@[^/]+\//, "") : e;
|
|
130
146
|
return (t.startsWith("plugin-") ? t.slice(7) : t).replace(/-([a-zA-Z0-9])/g, (e, t) => t.toUpperCase());
|
|
131
|
-
},
|
|
147
|
+
}, be = (e) => {
|
|
132
148
|
let t = e.startsWith("@") ? e.replace(/^@[^/]+\//, "") : e;
|
|
133
149
|
return (t.startsWith("plugin-") ? t.slice(7) : t).replace(/#/g, "--").replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
|
|
134
|
-
},
|
|
150
|
+
}, xe = (e, t) => t.name.includes(".") ? t.name : `${z(e.name)}.${t.name}`, Se = (e, t, n) => {
|
|
135
151
|
switch (e) {
|
|
136
|
-
case "query": return
|
|
152
|
+
case "query": return ve({
|
|
137
153
|
name: t,
|
|
138
154
|
input: n.input,
|
|
139
155
|
output: n.output,
|
|
140
156
|
...n.error === void 0 ? {} : { error: n.error },
|
|
141
157
|
...n.source === void 0 ? {} : { source: n.source }
|
|
142
158
|
});
|
|
143
|
-
case "mutation": return
|
|
159
|
+
case "mutation": return _e({
|
|
144
160
|
name: t,
|
|
145
161
|
input: n.input,
|
|
146
162
|
output: n.output,
|
|
147
163
|
...n.error === void 0 ? {} : { error: n.error }
|
|
148
164
|
});
|
|
149
|
-
case "action": return
|
|
165
|
+
case "action": return L({
|
|
150
166
|
name: t,
|
|
151
167
|
input: n.input,
|
|
152
168
|
output: n.output,
|
|
153
169
|
...n.error === void 0 ? {} : { error: n.error }
|
|
154
170
|
});
|
|
155
171
|
}
|
|
156
|
-
},
|
|
172
|
+
}, Ce = (e) => (t, n) => c.suspend(() => {
|
|
157
173
|
let r = { request: {
|
|
158
174
|
subject: n.request.subject,
|
|
159
175
|
traceId: n.request.traceId
|
|
160
176
|
} };
|
|
161
177
|
return e.execute(t, r);
|
|
162
|
-
}),
|
|
178
|
+
}), we = (e) => {
|
|
163
179
|
let t = [];
|
|
164
180
|
for (let n of e) {
|
|
165
181
|
let e = n.routes ?? [];
|
|
166
182
|
for (let r of e) {
|
|
167
|
-
let e =
|
|
183
|
+
let e = xe(n, r), i = Se(r.kind, e, r);
|
|
168
184
|
t.push({
|
|
169
185
|
kind: r.kind,
|
|
170
186
|
file: `plugin:${n.name}`,
|
|
171
187
|
descriptor: i,
|
|
172
|
-
executor:
|
|
188
|
+
executor: Ce(r),
|
|
173
189
|
plugin: {
|
|
174
190
|
name: n.name,
|
|
175
191
|
version: n.version
|
|
@@ -178,7 +194,7 @@ var R = [
|
|
|
178
194
|
}
|
|
179
195
|
}
|
|
180
196
|
return t;
|
|
181
|
-
},
|
|
197
|
+
}, Te = (e, t, n = /* @__PURE__ */ new Set()) => {
|
|
182
198
|
let r = /* @__PURE__ */ new Map();
|
|
183
199
|
for (let e of t) r.set(e, "user-route");
|
|
184
200
|
let i = [];
|
|
@@ -190,35 +206,35 @@ var R = [
|
|
|
190
206
|
}
|
|
191
207
|
}
|
|
192
208
|
return i;
|
|
193
|
-
},
|
|
194
|
-
yield* (yield*
|
|
195
|
-
CREATE TABLE IF NOT EXISTS ${
|
|
209
|
+
}, B = "_voltro_plugin_migrations", Ee = () => c.gen(function* () {
|
|
210
|
+
yield* (yield* m.SqlClient).unsafe(`
|
|
211
|
+
CREATE TABLE IF NOT EXISTS ${B} (
|
|
196
212
|
id TEXT PRIMARY KEY,
|
|
197
213
|
plugin_name TEXT NOT NULL,
|
|
198
214
|
migration_id TEXT NOT NULL,
|
|
199
215
|
description TEXT,
|
|
200
216
|
applied_at TEXT NOT NULL
|
|
201
217
|
);
|
|
202
|
-
`).pipe(
|
|
203
|
-
}),
|
|
204
|
-
let e = yield*
|
|
218
|
+
`).pipe(c.orDie);
|
|
219
|
+
}), De = (e, t) => `${z(e)}__${t}`, Oe = () => c.gen(function* () {
|
|
220
|
+
let e = yield* m.SqlClient, t = yield* e`SELECT id FROM ${e(B)}`.pipe(c.orDie);
|
|
205
221
|
return new Set(t.map((e) => e.id));
|
|
206
|
-
}),
|
|
207
|
-
let t = yield*
|
|
222
|
+
}), ke = (e) => c.gen(function* () {
|
|
223
|
+
let t = yield* m.SqlClient, n = (/* @__PURE__ */ new Date()).toISOString();
|
|
208
224
|
yield* t`
|
|
209
|
-
INSERT INTO ${t(
|
|
225
|
+
INSERT INTO ${t(B)} (id, plugin_name, migration_id, description, applied_at)
|
|
210
226
|
VALUES (${e.key}, ${e.pluginName}, ${e.migration.id}, ${e.migration.description ?? null}, ${n})
|
|
211
|
-
`.pipe(
|
|
212
|
-
}),
|
|
227
|
+
`.pipe(c.orDie);
|
|
228
|
+
}), Ae = (e) => c.gen(function* () {
|
|
213
229
|
let t = e.flatMap((e) => (e.extendSchema?.migrations ?? []).map((t) => ({
|
|
214
230
|
plugin: e,
|
|
215
231
|
migration: t
|
|
216
232
|
})));
|
|
217
233
|
if (t.length === 0) return [];
|
|
218
|
-
yield*
|
|
219
|
-
let n = yield*
|
|
234
|
+
yield* Ee();
|
|
235
|
+
let n = yield* Oe(), r = [];
|
|
220
236
|
for (let { plugin: e, migration: i } of t) {
|
|
221
|
-
let t =
|
|
237
|
+
let t = De(e.name, i.id), a = Date.now();
|
|
222
238
|
if (n.has(t)) {
|
|
223
239
|
r.push({
|
|
224
240
|
pluginName: e.name,
|
|
@@ -228,9 +244,9 @@ var R = [
|
|
|
228
244
|
});
|
|
229
245
|
continue;
|
|
230
246
|
}
|
|
231
|
-
let o = yield*
|
|
247
|
+
let o = yield* m.SqlClient;
|
|
232
248
|
try {
|
|
233
|
-
yield* i.up(o).pipe(
|
|
249
|
+
yield* i.up(o).pipe(c.mapError((e) => e)), yield* ke({
|
|
234
250
|
key: t,
|
|
235
251
|
pluginName: e.name,
|
|
236
252
|
migration: i
|
|
@@ -247,28 +263,28 @@ var R = [
|
|
|
247
263
|
status: "failed",
|
|
248
264
|
durationMs: Date.now() - a,
|
|
249
265
|
error: t
|
|
250
|
-
}), yield*
|
|
266
|
+
}), yield* c.fail(/* @__PURE__ */ Error(`Plugin migration failed: ${e.name} ${i.id} — ${t instanceof Error ? t.message : String(t)}`));
|
|
251
267
|
}
|
|
252
268
|
}
|
|
253
269
|
return r;
|
|
254
|
-
}),
|
|
270
|
+
}), je = (e) => e.filter((e) => e.extendSchema && (e.extendSchema.tables?.length ?? 0) + (e.extendSchema.migrations?.length ?? 0) > 0).map((e) => ({
|
|
255
271
|
pluginName: e.name,
|
|
256
|
-
pluginAlias:
|
|
272
|
+
pluginAlias: z(e.name),
|
|
257
273
|
tables: e.extendSchema.tables?.length ?? 0,
|
|
258
274
|
migrations: e.extendSchema.migrations?.length ?? 0
|
|
259
|
-
})),
|
|
275
|
+
})), Me = (e) => e.flatMap((e) => e.extendSchema?.tables ?? []), V = /(?<!\.server)\.agent\.tsx?$/, Ne = /\.agent\.server\.tsx?$/, H = /\.tool\.tsx?$/, Pe = async (t, n) => {
|
|
260
276
|
let r = 0;
|
|
261
|
-
for (let i of t) if (
|
|
277
|
+
for (let i of t) if (H.test(i)) try {
|
|
262
278
|
let t = await e(i);
|
|
263
|
-
r +=
|
|
279
|
+
r += x(t);
|
|
264
280
|
} catch (e) {
|
|
265
281
|
n.warn("tool: failed to import — handler not wired", { file: i }, e);
|
|
266
282
|
}
|
|
267
283
|
return r;
|
|
268
|
-
},
|
|
284
|
+
}, Fe = (e) => e.replace(/\.agent\.(tsx?)$/, ".agent.server.$1"), Ie = async (t, n) => {
|
|
269
285
|
let r = [], i = /* @__PURE__ */ new Set();
|
|
270
286
|
for (let a of t) {
|
|
271
|
-
if (!
|
|
287
|
+
if (!V.test(a)) continue;
|
|
272
288
|
let t;
|
|
273
289
|
try {
|
|
274
290
|
t = await e(a);
|
|
@@ -276,7 +292,7 @@ var R = [
|
|
|
276
292
|
n.warn("agent: failed to import descriptor", { file: a }, e);
|
|
277
293
|
continue;
|
|
278
294
|
}
|
|
279
|
-
let o = Object.values(t).find(
|
|
295
|
+
let o = Object.values(t).find(y);
|
|
280
296
|
if (o === void 0) {
|
|
281
297
|
n.warn("agent: no defineAgent() descriptor export found", { file: a });
|
|
282
298
|
continue;
|
|
@@ -288,7 +304,7 @@ var R = [
|
|
|
288
304
|
});
|
|
289
305
|
continue;
|
|
290
306
|
}
|
|
291
|
-
let s =
|
|
307
|
+
let s = Fe(a), c;
|
|
292
308
|
try {
|
|
293
309
|
c = await e(s);
|
|
294
310
|
} catch (e) {
|
|
@@ -300,7 +316,7 @@ var R = [
|
|
|
300
316
|
continue;
|
|
301
317
|
}
|
|
302
318
|
let l = c.default;
|
|
303
|
-
if (!
|
|
319
|
+
if (!b(l)) {
|
|
304
320
|
n.warn("agent: executor file must default-export defineAgentExecutor(descriptor, {...})", {
|
|
305
321
|
file: s,
|
|
306
322
|
name: o.name
|
|
@@ -315,7 +331,7 @@ var R = [
|
|
|
315
331
|
});
|
|
316
332
|
}
|
|
317
333
|
return { agents: r };
|
|
318
|
-
},
|
|
334
|
+
}, U = /\.connection\.tsx?$/, Le = (e) => e.replace(U, ""), Re = async (t, n) => {
|
|
319
335
|
let r = [], i = /* @__PURE__ */ new Map();
|
|
320
336
|
for (let a of t) {
|
|
321
337
|
let t;
|
|
@@ -358,26 +374,26 @@ var R = [
|
|
|
358
374
|
}
|
|
359
375
|
return r.length > 0 && n.info("discovered connections", {
|
|
360
376
|
connections: r.map((e) => `${e.definition.id} (${e.definition.kind})`),
|
|
361
|
-
files: r.map((e) =>
|
|
377
|
+
files: r.map((e) => Le(a(e.file)))
|
|
362
378
|
}), r;
|
|
363
|
-
},
|
|
379
|
+
}, W = (e) => typeof e.attributes["framework.kind"] == "string" && e.attributes["framework.kind"].startsWith("subscription."), G = (e) => {
|
|
364
380
|
if (e.name.includes("_voltro_traces")) return !0;
|
|
365
381
|
for (let t in e.attributes) {
|
|
366
382
|
let n = e.attributes[t];
|
|
367
383
|
if (typeof n == "string" && n.includes("_voltro_traces")) return !0;
|
|
368
384
|
}
|
|
369
385
|
return !1;
|
|
370
|
-
},
|
|
386
|
+
}, ze = (e) => typeof e.attributes["framework.kind"] == "string" && e.attributes["framework.kind"].startsWith("subscription"), Be = 1e3, Ve = 500, He = 50, K = class {
|
|
371
387
|
capacity;
|
|
372
388
|
buffer = [];
|
|
373
|
-
constructor(e =
|
|
389
|
+
constructor(e = Be) {
|
|
374
390
|
this.capacity = e;
|
|
375
391
|
}
|
|
376
392
|
append(e) {
|
|
377
393
|
this.buffer.push(e), this.buffer.length > this.capacity && this.buffer.shift();
|
|
378
394
|
}
|
|
379
395
|
query(e = {}) {
|
|
380
|
-
let t = e.since ?? 0, n = e.until ?? Date.now(), r = Math.min(e.max ??
|
|
396
|
+
let t = e.since ?? 0, n = e.until ?? Date.now(), r = Math.min(e.max ?? Ve, this.capacity), i = e.traceId, a = e.minDurationMs, o = e.status, s = e.name?.toLowerCase(), c = [];
|
|
381
397
|
for (let e = this.buffer.length - 1; e >= 0 && c.length < r; e--) {
|
|
382
398
|
let r = this.buffer[e];
|
|
383
399
|
r.startMs < t || r.startMs > n || i !== void 0 && r.traceId !== i || a !== void 0 && r.durationMs < a || o !== void 0 && r.status !== o || s !== void 0 && !r.name.toLowerCase().includes(s) || c.push(r);
|
|
@@ -385,7 +401,7 @@ var R = [
|
|
|
385
401
|
return c.reverse();
|
|
386
402
|
}
|
|
387
403
|
queryGrouped(e = {}) {
|
|
388
|
-
let t = e.since ?? 0, n = e.maxTraces ??
|
|
404
|
+
let t = e.since ?? 0, n = e.maxTraces ?? He, r = e.onlyErrors ?? !1, i = /* @__PURE__ */ new Map();
|
|
389
405
|
for (let e of this.buffer) {
|
|
390
406
|
if (e.startMs < t) continue;
|
|
391
407
|
let n = i.get(e.traceId);
|
|
@@ -396,7 +412,7 @@ var R = [
|
|
|
396
412
|
t.sort((e, t) => e.startMs - t.startMs);
|
|
397
413
|
let n = t.some((e) => e.status === "error");
|
|
398
414
|
if (r && !n) continue;
|
|
399
|
-
let i = t[0].startMs, o = t.reduce((e, t) => t.endMs > e ? t.endMs : e, i), s = t.filter(
|
|
415
|
+
let i = t[0].startMs, o = t.reduce((e, t) => t.endMs > e ? t.endMs : e, i), s = t.filter(W), c = s.length > 0 || t.some(ze), l = s.reduce((e, t) => e === void 0 || t.startMs > e.startMs ? t : e, void 0);
|
|
400
416
|
a.push({
|
|
401
417
|
traceId: e,
|
|
402
418
|
rootName: t[0].name,
|
|
@@ -421,69 +437,69 @@ var R = [
|
|
|
421
437
|
clear() {
|
|
422
438
|
this.buffer = [];
|
|
423
439
|
}
|
|
424
|
-
},
|
|
440
|
+
}, q = null, Ue = () => (q === null && (q = new K()), q), We = /* @__PURE__ */ new Set([
|
|
425
441
|
"off",
|
|
426
442
|
"errors",
|
|
427
443
|
"interesting",
|
|
428
444
|
"all"
|
|
429
|
-
]),
|
|
445
|
+
]), J = (e, t, n, r) => {
|
|
430
446
|
let i = Number(e);
|
|
431
447
|
return Number.isFinite(i) ? Math.min(r, Math.max(n, i)) : t;
|
|
432
|
-
},
|
|
448
|
+
}, Ge = (e) => e !== void 0 && [
|
|
433
449
|
"1",
|
|
434
450
|
"true",
|
|
435
451
|
"yes",
|
|
436
452
|
"on"
|
|
437
|
-
].includes(e.toLowerCase()),
|
|
453
|
+
].includes(e.toLowerCase()), Y = (e) => {
|
|
438
454
|
let t = Number(e);
|
|
439
455
|
return Number.isFinite(t) && t > 0 ? t : 24;
|
|
440
|
-
},
|
|
441
|
-
let t = (e.VOLTRO_TRACING_BUFFER ?? "").toLowerCase() === "off", n =
|
|
456
|
+
}, X = (e = process.env) => {
|
|
457
|
+
let t = (e.VOLTRO_TRACING_BUFFER ?? "").toLowerCase() === "off", n = J(e.VOLTRO_TRACING_SAMPLE, 1, 0, 1), r = (e.VOLTRO_TRACING_PERSIST ?? "").toLowerCase(), i = e.NODE_ENV === "production" ? "off" : "interesting";
|
|
442
458
|
return {
|
|
443
|
-
mode:
|
|
459
|
+
mode: We.has(r) ? r : n <= 0 ? "off" : i,
|
|
444
460
|
sampleRate: n,
|
|
445
|
-
slowMs:
|
|
446
|
-
ttlHours:
|
|
447
|
-
persistDelivery:
|
|
461
|
+
slowMs: J(e.VOLTRO_TRACING_SLOW_MS, 500, 0, 2 ** 53 - 1),
|
|
462
|
+
ttlHours: Y(e.VOLTRO_TRACING_TTL_HOURS),
|
|
463
|
+
persistDelivery: Ge(e.VOLTRO_TRACING_PERSIST_DELIVERY),
|
|
448
464
|
bufferDisabled: t
|
|
449
465
|
};
|
|
450
|
-
},
|
|
451
|
-
let t =
|
|
466
|
+
}, Z = (e = process.env) => {
|
|
467
|
+
let t = X(e);
|
|
452
468
|
return !t.bufferDisabled && t.mode !== "off";
|
|
453
|
-
},
|
|
469
|
+
}, Ke = (e, t) => {
|
|
454
470
|
if (t >= 1) return !0;
|
|
455
471
|
if (t <= 0) return !1;
|
|
456
472
|
let n = 2166136261;
|
|
457
473
|
for (let t = 0; t < e.length; t++) n ^= e.charCodeAt(t), n = Math.imul(n, 16777619);
|
|
458
474
|
return (n >>> 0) % 1e3 < t * 1e3;
|
|
459
|
-
},
|
|
460
|
-
if (t.mode === "off" ||
|
|
475
|
+
}, qe = (e, t) => {
|
|
476
|
+
if (t.mode === "off" || G(e) || W(e) && !t.persistDelivery) return !1;
|
|
461
477
|
let n = e.status === "error";
|
|
462
478
|
if (t.mode === "errors") return n;
|
|
463
479
|
if (n) return !0;
|
|
464
|
-
if (!
|
|
480
|
+
if (!Ke(e.traceId, t.sampleRate)) return !1;
|
|
465
481
|
if (t.mode === "all") return !0;
|
|
466
482
|
let r = e.parentSpanId === null || e.parentSpanId === void 0 || e.parentSpanId === "", i = typeof e.durationMs == "number" && e.durationMs >= t.slowMs;
|
|
467
483
|
return r || i;
|
|
468
|
-
},
|
|
484
|
+
}, Je = (e) => {
|
|
469
485
|
if (e.bufferDisabled) return "durable traces: OFF (VOLTRO_TRACING_BUFFER=off)";
|
|
470
486
|
if (e.mode === "off") return "durable traces: OFF — _voltro_traces not created (prod default; set VOLTRO_TRACING_PERSIST=interesting to enable, or use OTLP)";
|
|
471
487
|
let t = e.mode === "interesting" ? ` (errors + slow≥${e.slowMs}ms + roots)` : e.mode === "errors" ? " (errors only)" : "";
|
|
472
488
|
return `durable traces: mode=${e.mode}${t}` + (e.sampleRate < 1 ? ` · sample=${e.sampleRate}` : "") + (e.persistDelivery ? " · +delivery" : "") + ` · ttl=${e.ttlHours}h`;
|
|
473
|
-
},
|
|
489
|
+
}, Ye = (e = 30 * 6e4) => {
|
|
474
490
|
let t = /* @__PURE__ */ new Map();
|
|
475
491
|
return (n, r) => {
|
|
476
492
|
let i = t.get(n);
|
|
477
493
|
return i !== void 0 && r - i < e ? !1 : (t.set(n, r), !0);
|
|
478
494
|
};
|
|
479
|
-
},
|
|
480
|
-
let { store: t, log: n } = e, r = e.policy ??
|
|
481
|
-
n.info(
|
|
482
|
-
let i =
|
|
495
|
+
}, Xe = (e) => {
|
|
496
|
+
let { store: t, log: n } = e, r = e.policy ?? X();
|
|
497
|
+
n.info(Je(r));
|
|
498
|
+
let i = Ye(), a = [], o = () => {};
|
|
483
499
|
if (r.mode !== "off") {
|
|
484
500
|
let e = [], s = 0;
|
|
485
501
|
o = (t) => {
|
|
486
|
-
|
|
502
|
+
qe(t, r) && (e.length >= 5e3 && (e.shift(), s += 1, i("flush-drop", Date.now()) && (n.warn(`trace flush queue saturated — dropping durable spans (${s}+ since last warning). Durable inflow exceeds write throughput; reduce it with VOLTRO_TRACING_PERSIST=errors|interesting or VOLTRO_TRACING_SAMPLE<1.`), s = 0)), e.push(t));
|
|
487
503
|
};
|
|
488
504
|
let c = async () => {
|
|
489
505
|
if (e.length === 0) return;
|
|
@@ -525,7 +541,7 @@ var R = [
|
|
|
525
541
|
let n = await t.query({
|
|
526
542
|
table: "_voltro_traces",
|
|
527
543
|
order: [],
|
|
528
|
-
predicate:
|
|
544
|
+
predicate: A("startedAt", e),
|
|
529
545
|
projection: ["id"],
|
|
530
546
|
skip: void 0,
|
|
531
547
|
take: c
|
|
@@ -549,28 +565,27 @@ var R = [
|
|
|
549
565
|
for (let e of a) clearInterval(e);
|
|
550
566
|
}
|
|
551
567
|
};
|
|
552
|
-
},
|
|
553
|
-
let
|
|
554
|
-
let
|
|
555
|
-
for (let
|
|
556
|
-
if (
|
|
557
|
-
await
|
|
568
|
+
}, Q = async (e) => {
|
|
569
|
+
let a = !1, s = !1, c = !1, u = !1, d = !1, f = async (e) => {
|
|
570
|
+
let p = await l.readdir(e, { withFileTypes: !0 }).catch(() => []);
|
|
571
|
+
for (let l of p) if (l.isDirectory()) {
|
|
572
|
+
if (l.name === "node_modules" || l.name === "dist" || l.name === ".framework" || l.name.startsWith(".")) continue;
|
|
573
|
+
await f(o(e, l.name));
|
|
558
574
|
} else {
|
|
559
|
-
let e =
|
|
560
|
-
(r.test(e) || t.test(e)) && (
|
|
575
|
+
let e = l.name;
|
|
576
|
+
(r.test(e) || t.test(e)) && (a = !0), n.test(e) && (s = !0), i.test(e) && (c = !0), V.test(e) && (u = !0), U.test(e) && (d = !0);
|
|
561
577
|
}
|
|
562
578
|
};
|
|
563
|
-
return await
|
|
564
|
-
workflows:
|
|
565
|
-
schedules:
|
|
566
|
-
webhooks:
|
|
567
|
-
agents:
|
|
568
|
-
|
|
569
|
-
connections: p
|
|
579
|
+
return await f(e), {
|
|
580
|
+
workflows: a,
|
|
581
|
+
schedules: s,
|
|
582
|
+
webhooks: c,
|
|
583
|
+
agents: u,
|
|
584
|
+
connections: d
|
|
570
585
|
};
|
|
571
|
-
},
|
|
586
|
+
}, Ze = async (e) => {
|
|
572
587
|
try {
|
|
573
|
-
return (await import(
|
|
588
|
+
return (await import(s(o(e, "app.config.ts")).href)).default?.plugins ?? [];
|
|
574
589
|
} catch {
|
|
575
590
|
return [];
|
|
576
591
|
}
|
|
@@ -578,22 +593,21 @@ var R = [
|
|
|
578
593
|
let t = /* @__PURE__ */ new Map(), n = (e) => {
|
|
579
594
|
e?.tableName && !t.has(e.tableName) && t.set(e.tableName, e);
|
|
580
595
|
};
|
|
581
|
-
for (let t of
|
|
596
|
+
for (let t of R({
|
|
582
597
|
workflows: e.mix.workflows,
|
|
583
598
|
schedules: e.mix.schedules,
|
|
584
599
|
webhooks: e.mix.webhooks,
|
|
585
|
-
traces:
|
|
600
|
+
traces: Z(),
|
|
586
601
|
cdc: e.cdc,
|
|
587
602
|
...e.cdcDialect ? { cdcDialect: e.cdcDialect } : {},
|
|
588
|
-
undo:
|
|
589
|
-
outbox: e.mix.outbox,
|
|
603
|
+
undo: se(),
|
|
590
604
|
connections: e.mix.connections
|
|
591
605
|
})) n(t);
|
|
592
|
-
e.mix.agents && (n(
|
|
593
|
-
for (let t of
|
|
606
|
+
e.mix.agents && (n(h), n(ge), n(v), n(g)), e.mix.workflows && n(_);
|
|
607
|
+
for (let t of Me(e.plugins)) n(t);
|
|
594
608
|
return [...t.values()];
|
|
595
|
-
},
|
|
596
|
-
let t = await
|
|
609
|
+
}, Qe = async (e) => {
|
|
610
|
+
let t = await Q(e.root), n = await Ze(e.root), r = (process.env.DB_DIALECT ?? "postgres").toLowerCase(), i = r === "mariadb" ? "mariadb" : r === "mssql" ? "mssql" : void 0;
|
|
597
611
|
return $({
|
|
598
612
|
mix: t,
|
|
599
613
|
plugins: n,
|
|
@@ -602,4 +616,4 @@ var R = [
|
|
|
602
616
|
});
|
|
603
617
|
};
|
|
604
618
|
//#endregion
|
|
605
|
-
export {
|
|
619
|
+
export { R as S, je as _, Z as a, z as b, G as c, V as d, Ne as f, Ae as g, Pe as h, Xe as i, U as l, Ie as m, $ as n, K as o, H as p, Q as r, Ue as s, Qe as t, Re as u, Te as v, be as x, we as y };
|
package/dist/index.d.ts
CHANGED
|
@@ -52,8 +52,13 @@ export declare interface TemplateInfo extends TemplateManifest {
|
|
|
52
52
|
* - `api` — a long-running backend (app.config `type: 'api'`).
|
|
53
53
|
* - `web` — a frontend (app.config `type: 'web'`); gets a dev-server port.
|
|
54
54
|
* - `serverless` — a standalone `*.serverless.ts` function bundle deployed
|
|
55
|
-
* SEPARATELY via `voltro serverless` (no long-running server, no port).
|
|
56
|
-
|
|
55
|
+
* SEPARATELY via `voltro serverless` (no long-running server, no port).
|
|
56
|
+
* - `mobile` — an Expo (React Native) app. NOT run by `voltro dev` (Expo owns
|
|
57
|
+
* Metro / `expo start`); the scaffolder registers it in the workspace so the
|
|
58
|
+
* sibling api's typed rpc surface resolves, but allocates NO port and adds it
|
|
59
|
+
* to NO dev-orchestration set. `app.config.ts` is Expo's config, not
|
|
60
|
+
* Voltro's `type:` config. See `plans/open/mobile/01-template-and-expo-toolchain.md`. */
|
|
61
|
+
declare type TemplateKind = 'api' | 'web' | 'serverless' | 'mobile';
|
|
57
62
|
|
|
58
63
|
declare interface TemplateManifest {
|
|
59
64
|
/** Stable id matching the directory name. */
|
package/dist/index.js
CHANGED