@voltro/cli 0.1.1 → 0.1.3

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 (40) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/bin.js +1 -1
  3. package/dist/{commands-CfPH2Wf4.js → commands-C0o6Clo9.js} +253 -253
  4. package/dist/index.js +1 -1
  5. package/package.json +22 -22
  6. package/templates/apps/api-ai/package.json +7 -7
  7. package/templates/apps/api-auth/package.json +7 -7
  8. package/templates/apps/api-backend/package.json +7 -7
  9. package/templates/apps/api-backend-deactivation/package.json +7 -7
  10. package/templates/apps/api-backend-mail/package.json +8 -8
  11. package/templates/apps/api-backend-mariadb/package.json +9 -9
  12. package/templates/apps/api-backend-storage/package.json +8 -8
  13. package/templates/apps/api-data-advanced/package.json +8 -8
  14. package/templates/apps/api-durable/package.json +8 -8
  15. package/templates/apps/api-feature-flags/package.json +8 -8
  16. package/templates/apps/api-governance/package.json +8 -8
  17. package/templates/apps/api-kv/package.json +8 -8
  18. package/templates/apps/api-moderation/package.json +8 -8
  19. package/templates/apps/api-observability/package.json +8 -8
  20. package/templates/apps/api-ratelimit/package.json +8 -8
  21. package/templates/apps/api-rbac/package.json +8 -8
  22. package/templates/apps/api-rest/package.json +6 -6
  23. package/templates/apps/api-saas/package.json +10 -10
  24. package/templates/apps/api-search/package.json +8 -8
  25. package/templates/apps/api-versioning/package.json +8 -8
  26. package/templates/apps/api-webhooks/package.json +7 -7
  27. package/templates/apps/changelog/package.json +6 -6
  28. package/templates/apps/edge-functions/package.json +2 -2
  29. package/templates/apps/frontend-admin/package.json +8 -7
  30. package/templates/apps/frontend-app/package.json +8 -7
  31. package/templates/apps/frontend-blank/package.json +7 -6
  32. package/templates/apps/frontend-contact/package.json +7 -6
  33. package/templates/apps/frontend-dashboard/package.json +7 -6
  34. package/templates/apps/frontend-docs/package.json +7 -6
  35. package/templates/apps/frontend-i18n/package.json +6 -5
  36. package/templates/apps/frontend-landing/package.json +7 -6
  37. package/templates/apps/frontend-spa/package.json +7 -6
  38. package/templates/apps/frontend-ssr/package.json +7 -6
  39. package/templates/apps/frontend-ssr-api/package.json +8 -7
  40. package/templates/apps/frontend-static-blog/package.json +6 -5
@@ -4,7 +4,7 @@ import { basename as r, dirname as i, extname as a, isAbsolute as o, join as s,
4
4
  import { fileURLToPath as u, pathToFileURL as d } from "node:url";
5
5
  import { FetchHttpClient as f, FileSystem as p } from "@effect/platform";
6
6
  import { NodeContext as m, NodeRuntime as h } from "@effect/platform-node";
7
- import { Cause as g, Cron as _, Data as v, Duration as y, Effect as b, Fiber as x, JSONSchema as ee, Layer as S, ManagedRuntime as C, Option as w, Ref as T, Schema as E, Stream as D } from "effect";
7
+ import { Cause as g, Cron as _, Data as v, Duration as y, Effect as b, Fiber as x, JSONSchema as S, Layer as C, ManagedRuntime as w, Option as T, Ref as E, Schema as D, Stream as ee } from "effect";
8
8
  import { LoggerLayer as O, addSink as k, ansi as A, createLogger as j, printAppSurface as te, printReadyBlock as ne } from "@voltro/logger";
9
9
  import { closeSync as re, existsSync as M, mkdirSync as N, openSync as ie, promises as P, readFileSync as F, readdirSync as ae, statSync as oe, unlinkSync as se, unwatchFile as ce, watchFile as le, writeFileSync as I, writeSync as ue } from "node:fs";
10
10
  import { AggregateError as de, AggregateMaintainer as fe, AggregateNotFound as pe, AggregateRegistry as me, AggregateStale as he, AnalyticsSink as ge, Dispatcher as _e, InMemoryDataStore as ve, ReactionRateLimiter as ye, ReplicatedDataStore as L, _voltroScheduleClaimsTable as be, _voltroScheduleRunsTable as xe, _voltroTracesTable as Se, _voltroUndoLogTable as Ce, _voltroWakeupsTable as we, _voltroWorkflowEventDeliveriesTable as Te, _voltroWorkflowEventsTable as Ee, apiKeyManagementRoutes as De, applySoftDeleteScope as Oe, applyTenantScope as ke, applyUndoInvocation as Ae, attachAnalyticsMirror as je, awaitServerListening as Me, bindMutation as Ne, bindStream as Pe, bindSubscription as Fe, buildTracingLayer as Ie, cancelWakeup as Le, compileCron as Re, currentTraceContext as ze, dataStoreApiKeyStore as Be, dataStoreIdempotencyStore as Ve, extractDbCause as He, frameworkApiKeyStrategy as Ue, getConnectionSubject as We, getTimelineRecorder as Ge, isAggregateDefinition as Ke, isScheduleDefinition as qe, isWorkflowEventTriggerDefinition as Je, lastWriteProvenance as Ye, listRetentions as Xe, localityAwareSelector as Ze, makeActionRunner as Qe, makeAdvisoryLockCoordinator as $e, makeApiKeyService as et, makeAsyncKv as tt, makeBufferingSpanProcessor as nt, makeCoordinatedScheduler as rt, makeEffectStoreLayer as it, makeEventsFacade as at, makeLazyWorkflowFacade as ot, makeMutationRunner as st, makePostCommitWorkflowFacade as ct, makeQueryDescriptorProducer as lt, makeSchemaRegistry as ut, makeUndoCapture as dt, makeWorkflowFacade as ft, makeWorkflowFacadeWithCallerContext as pt, makeWorkflowLayers as mt, memoryRywPositionStore as ht, nextFiring as gt, nodeProcessSupervisor as _t, noopAnalytics as vt, noopAnalyticsSpec as yt, noopKv as bt, powerOfTwoSelector as xt, recordSample as St, recordSubscriptionDelivery as Ct, recordTimelineEvent as wt, redisRywPositionStore as Tt, redoUndoInvocation as Et, registerRetention as Dt, registerWakeup as Ot, resolveCurrentRegion as R, resolveSecret as kt, resolveSecretsBackend as At, retentionTtlMsFromEnv as jt, runProvidedEffect as Mt, runReaction as Nt, runSingleNodeOrchestrator as Pt, setSecretsBackend as Ft, singleCoordinator as It, snapshotMetricsSync as Lt, startRpcServer as Rt, startScheduler as zt, sweepRetention as Bt, tracingHttpClientLayer as Vt, undoCaptureEnabled as Ht, undoLogExecutor as Ut, workflowToRpc as Wt, wrapStoreWithMixinBehaviour as Gt } from "@voltro/runtime";
@@ -95,7 +95,7 @@ var ka = [
95
95
  if (r) return r;
96
96
  }
97
97
  return null;
98
- }, ja = (e = {}) => S.merge(m.layer, O({
98
+ }, ja = (e = {}) => C.merge(m.layer, O({
99
99
  ...e.scope ? { defaultScope: e.scope } : {},
100
100
  ...e.logger
101
101
  })), Ma = async (e, t = {}) => {
@@ -336,17 +336,17 @@ boundary, naming, anti-patterns) before editing.
336
336
  for (let e of t) v.add(e);
337
337
  }
338
338
  }
339
- let x = t.plugins ? t.plugins.map(Ka).filter((e) => e !== null) : y ? [...v] : null, ee = a.includes(Ba) ? a.replace(Ba, Xa(c, x, d)) : a, S = [];
340
- for (let e of m) S.push(yield* to(n, e, ee, f));
339
+ let x = t.plugins ? t.plugins.map(Ka).filter((e) => e !== null) : y ? [...v] : null, S = a.includes(Ba) ? a.replace(Ba, Xa(c, x, d)) : a, C = [];
340
+ for (let e of m) C.push(yield* to(n, e, S, f));
341
341
  u || (yield* Ga(n, s(i, "agent-docs"), s(r, "agent-docs")));
342
- let C = new Map((t.appTemplates ?? []).map((e) => [l(e.dir), e.template])), w = (e) => {
343
- let t = C.get(l(e));
342
+ let w = new Map((t.appTemplates ?? []).map((e) => [l(e.dir), e.template])), T = (e) => {
343
+ let t = w.get(l(e));
344
344
  return t ? Za(t, c, d) : "";
345
- }, T = (e, t) => b.forEach(La, (r) => to(n, s(e, r), t, f));
346
- for (let e of h) S.push(...yield* T(e, Qa.api(d, _.get(e) ?? null, w(e)))), (yield* Va(n, s(e, "database"))) && S.push(...yield* T(s(e, "database"), Qa.database(d)));
347
- for (let e of g) S.push(...yield* T(e, Qa.web(d, w(e))));
348
- for (let e of $a) S.push(yield* to(n, s(r, ".claude", "skills", e.name, "SKILL.md"), eo(e, d), f));
349
- return { files: S };
345
+ }, E = (e, t) => b.forEach(La, (r) => to(n, s(e, r), t, f));
346
+ for (let e of h) C.push(...yield* E(e, Qa.api(d, _.get(e) ?? null, T(e)))), (yield* Va(n, s(e, "database"))) && C.push(...yield* E(s(e, "database"), Qa.database(d)));
347
+ for (let e of g) C.push(...yield* E(e, Qa.web(d, T(e))));
348
+ for (let e of $a) C.push(yield* to(n, s(r, ".claude", "skills", e.name, "SKILL.md"), eo(e, d), f));
349
+ return { files: C };
350
350
  }), ro = (e, t = {}) => b.runPromise(no(e, t).pipe(b.provide(m.layer))), io = async (e) => {
351
351
  let t = e.includes("--force"), n = e.find((e) => !e.startsWith("-")) ?? process.cwd();
352
352
  return Ma(b.gen(function* () {
@@ -2424,7 +2424,7 @@ __installPublicEnv(publicEnvValues)
2424
2424
  } catch {
2425
2425
  return null;
2426
2426
  }
2427
- }, al = (e) => e.disableDevtools ? [] : [
2427
+ }, al = (e, t) => e.disableDevtools || !t ? [] : [
2428
2428
  "",
2429
2429
  "// Dev-only in-page devtools overlay. The `import.meta.env.DEV` guard is a",
2430
2430
  "// compile-time constant, so prod builds strip this whole `if` block — the",
@@ -2434,7 +2434,7 @@ __installPublicEnv(publicEnvValues)
2434
2434
  " await import('@voltro/devtools/styles.css')",
2435
2435
  " Devtools = (await import('@voltro/devtools')).VoltroDevtools",
2436
2436
  "}"
2437
- ], ol = (e) => e.disableDevtools ? [] : [" ...(Devtools ? { Devtools } : {}),"], sl = (e) => e.sentry ? ["import { initSentryBrowser } from '@voltro/plugin-sentry/web'"] : [], cl = (e) => e.sentry ? [
2437
+ ], ol = (e, t) => e.disableDevtools || !t ? [] : [" ...(Devtools ? { Devtools } : {}),"], sl = (e) => e.sentry ? ["import { initSentryBrowser } from '@voltro/plugin-sentry/web'"] : [], cl = (e) => e.sentry ? [
2438
2438
  "",
2439
2439
  "// Browser-side Sentry (frontend half of the deep integration). Errors +",
2440
2440
  "// browser rpc spans flow to Sentry, sharing the server transactions' trace.",
@@ -2737,7 +2737,7 @@ __installPublicEnv(publicEnvValues)
2737
2737
  if (l) return c;
2738
2738
  };
2739
2739
  }, Fl = async (e, t, n, r = {}) => {
2740
- let i = t.title ?? t.name ?? "app", a = t.theme === "dark" ? " class=\"dark\"" : t.theme === "light" ? " class=\"light\"" : "", o = t.theme === "system" ? [
2740
+ let i = t.title ?? t.name ?? "app", a = t.theme === "dark" ? " class=\"dark\"" : t.theme === "light" ? " class=\"light\"" : "", o = M(s(e, "node_modules", "@voltro", "devtools", "package.json")) || await il() !== null, c = t.theme === "system" ? [
2741
2741
  " <script>",
2742
2742
  " (function () {",
2743
2743
  " var root = document.documentElement",
@@ -2758,7 +2758,7 @@ __installPublicEnv(publicEnvValues)
2758
2758
  " }",
2759
2759
  " })()",
2760
2760
  " <\/script>"
2761
- ].join("\n") : "", c = [
2761
+ ].join("\n") : "", l = [
2762
2762
  "<!doctype html>",
2763
2763
  "<!-- GENERATED BY `voltro dev` — do not edit; will be overwritten on next boot. -->",
2764
2764
  `<html lang="en"${a}>`,
@@ -2767,7 +2767,7 @@ __installPublicEnv(publicEnvValues)
2767
2767
  " <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />",
2768
2768
  ` <title>${i}</title>`,
2769
2769
  " <link rel=\"icon\" type=\"image/svg+xml\" href=\"/favicon.svg\" />",
2770
- ...o ? [o] : [],
2770
+ ...c ? [c] : [],
2771
2771
  " </head>",
2772
2772
  " <body>",
2773
2773
  " <div id=\"root\"></div>",
@@ -2775,64 +2775,64 @@ __installPublicEnv(publicEnvValues)
2775
2775
  " </body>",
2776
2776
  "</html>",
2777
2777
  ""
2778
- ].join("\n"), { pages: l, dirs: u } = await bl(s(e, "src", "pages")), d = (e) => `${e.replace(/[^a-zA-Z0-9]/g, "_")}AppGroup`, f = (e) => `${e.replace(/[^a-zA-Z0-9]/g, "_")}AppDescriptors`, p = n.map((e) => `import { appGroup as ${d(e.name)}, appDescriptors as ${f(e.name)} } from '${e.pkg}/rpcGroup'`), m = n.map((e) => {
2779
- let t = [`group: ${d(e.name)}`];
2780
- return t.push(`descriptors: ${f(e.name)}`), t.push(`wsUrl: ${JSON.stringify(e.browserWsUrl)}`), e.headers && t.push(`headers: ${JSON.stringify(e.headers)}`), ` ${JSON.stringify(e.name)}: { ${t.join(", ")} },`;
2781
- }), h, g;
2782
- if (l.length > 0) {
2783
- let e = l.map((e) => ` ${JSON.stringify(e.pattern)}: () => import('../src/pages/${e.file}'),`), n = [];
2784
- for (let e of u) {
2778
+ ].join("\n"), { pages: u, dirs: d } = await bl(s(e, "src", "pages")), f = (e) => `${e.replace(/[^a-zA-Z0-9]/g, "_")}AppGroup`, p = (e) => `${e.replace(/[^a-zA-Z0-9]/g, "_")}AppDescriptors`, m = n.map((e) => `import { appGroup as ${f(e.name)}, appDescriptors as ${p(e.name)} } from '${e.pkg}/rpcGroup'`), h = n.map((e) => {
2779
+ let t = [`group: ${f(e.name)}`];
2780
+ return t.push(`descriptors: ${p(e.name)}`), t.push(`wsUrl: ${JSON.stringify(e.browserWsUrl)}`), e.headers && t.push(`headers: ${JSON.stringify(e.headers)}`), ` ${JSON.stringify(e.name)}: { ${t.join(", ")} },`;
2781
+ }), g, _;
2782
+ if (u.length > 0) {
2783
+ let e = u.map((e) => ` ${JSON.stringify(e.pattern)}: () => import('../src/pages/${e.file}'),`), n = [];
2784
+ for (let e of d) {
2785
2785
  let t = e.dir === "" ? "../src/pages" : `../src/pages/${e.dir}`;
2786
2786
  e.hasLayout && e.hasLayoutLoader ? n.push(`import * as ${yl(e.dir, "Layout")}Mod from '${t}/layout.tsx'`) : e.hasLayout && n.push(`import ${yl(e.dir, "Layout")} from '${t}/layout.tsx'`), e.hasError && n.push(`import ${yl(e.dir, "Error")} from '${t}/error.tsx'`), e.hasPending && n.push(`import ${yl(e.dir, "Pending")} from '${t}/loading.tsx'`), e.hasNotFound && n.push(`import ${yl(e.dir, "NotFound")} from '${t}/not-found.tsx'`);
2787
2787
  }
2788
- let r = l.map((e) => {
2789
- let t = xl(u, e.dirChain).map((e) => {
2788
+ let r = u.map((e) => {
2789
+ let t = xl(d, e.dirChain).map((e) => {
2790
2790
  let t = [`id: ${JSON.stringify(e.dir || "/")}`], n = JSON.stringify(e.dir);
2791
2791
  return e.hasLayout && t.push(`Layout: refs.layouts[${n}]`), e.hasLayoutLoader && t.push(`loader: refs.layoutLoaders[${n}]`), e.hasError && t.push(`Error: refs.errors[${n}]`), e.hasPending && t.push(`Pending: refs.pendings[${n}]`), ` { ${t.join(", ")} }`;
2792
2792
  }).join(",\n");
2793
2793
  return ` makePageRoute(${JSON.stringify(e.pattern)}, ${t.length > 0 ? `[\n${t},\n ]` : "undefined"}),`;
2794
- }), i = u.filter((e) => e.hasNotFound).map((e) => {
2795
- let t = Sl(e.chain), n = xl(u, e.chain).map((e) => {
2794
+ }), i = d.filter((e) => e.hasNotFound).map((e) => {
2795
+ let t = Sl(e.chain), n = xl(d, e.chain).map((e) => {
2796
2796
  let t = [`id: ${JSON.stringify(e.dir || "/")}`], n = JSON.stringify(e.dir);
2797
2797
  return e.hasLayout && t.push(`Layout: refs.layouts[${n}]`), e.hasError && t.push(`Error: refs.errors[${n}]`), ` { ${t.join(", ")} }`;
2798
2798
  }).join(",\n"), r = n.length > 0 ? `\n chain: [\n${n},\n ],` : "";
2799
2799
  return ` {\n prefix: ${JSON.stringify(t)},\n Component: refs.notFounds[${JSON.stringify(e.dir)}],${r}\n },`;
2800
- }), a = [], o = [], s = [], c = [], d = [], f = [];
2801
- for (let e of u) {
2802
- let t = e.dir === "" ? "../src/pages/layout.tsx" : `../src/pages/${e.dir}/layout.tsx`, n = e.dir === "" ? "../src/pages/error.tsx" : `../src/pages/${e.dir}/error.tsx`, r = e.dir === "" ? "../src/pages/loading.tsx" : `../src/pages/${e.dir}/loading.tsx`, i = e.dir === "" ? "../src/pages/not-found.tsx" : `../src/pages/${e.dir}/not-found.tsx`, l = JSON.stringify(e.dir);
2803
- e.hasLayout && e.hasLayoutLoader ? (o.push(` ${l}: ${yl(e.dir, "Layout")}Mod.default,`), s.push(` ${l}: ${yl(e.dir, "Layout")}Mod.loader,`), a.push({
2800
+ }), a = [], s = [], c = [], l = [], f = [], p = [];
2801
+ for (let e of d) {
2802
+ let t = e.dir === "" ? "../src/pages/layout.tsx" : `../src/pages/${e.dir}/layout.tsx`, n = e.dir === "" ? "../src/pages/error.tsx" : `../src/pages/${e.dir}/error.tsx`, r = e.dir === "" ? "../src/pages/loading.tsx" : `../src/pages/${e.dir}/loading.tsx`, i = e.dir === "" ? "../src/pages/not-found.tsx" : `../src/pages/${e.dir}/not-found.tsx`, o = JSON.stringify(e.dir);
2803
+ e.hasLayout && e.hasLayoutLoader ? (s.push(` ${o}: ${yl(e.dir, "Layout")}Mod.default,`), c.push(` ${o}: ${yl(e.dir, "Layout")}Mod.loader,`), a.push({
2804
2804
  relPath: t,
2805
2805
  kind: "layout",
2806
2806
  slotKey: e.dir
2807
- })) : e.hasLayout && (o.push(` ${l}: ${yl(e.dir, "Layout")},`), a.push({
2807
+ })) : e.hasLayout && (s.push(` ${o}: ${yl(e.dir, "Layout")},`), a.push({
2808
2808
  relPath: t,
2809
2809
  kind: "layout",
2810
2810
  slotKey: e.dir
2811
- })), e.hasError && (c.push(` ${l}: ${yl(e.dir, "Error")},`), a.push({
2811
+ })), e.hasError && (l.push(` ${o}: ${yl(e.dir, "Error")},`), a.push({
2812
2812
  relPath: n,
2813
2813
  kind: "error",
2814
2814
  slotKey: e.dir
2815
- })), e.hasPending && (d.push(` ${l}: ${yl(e.dir, "Pending")},`), a.push({
2815
+ })), e.hasPending && (f.push(` ${o}: ${yl(e.dir, "Pending")},`), a.push({
2816
2816
  relPath: r,
2817
2817
  kind: "pending",
2818
2818
  slotKey: e.dir
2819
- })), e.hasNotFound && (f.push(` ${l}: ${yl(e.dir, "NotFound")},`), a.push({
2819
+ })), e.hasNotFound && (p.push(` ${o}: ${yl(e.dir, "NotFound")},`), a.push({
2820
2820
  relPath: i,
2821
2821
  kind: "notFound",
2822
2822
  slotKey: e.dir
2823
2823
  }));
2824
2824
  }
2825
- for (let e of l) a.push({
2825
+ for (let e of u) a.push({
2826
2826
  relPath: `../src/pages/${e.file}`,
2827
2827
  kind: "page",
2828
2828
  slotKey: e.pattern
2829
2829
  });
2830
- let _ = a.map((e) => ` ${JSON.stringify(e.relPath)},`), v = a.map((e, t) => {
2830
+ let v = a.map((e) => ` ${JSON.stringify(e.relPath)},`), y = a.map((e, t) => {
2831
2831
  let n = JSON.stringify(e.slotKey);
2832
2832
  return e.kind === "page" ? ` if (newMods[${t}] && refs.pages[${n}] !== undefined) { refs.pages[${n}] = newMods[${t}]; changed = true }` : ` if (newMods[${t}]?.default) { refs.${e.kind === "layout" ? "layouts" : e.kind === "error" ? "errors" : e.kind === "pending" ? "pendings" : "notFounds"}[${n}] = newMods[${t}].default;${e.kind === "layout" ? ` refs.layoutLoaders[${n}] = newMods[${t}].loader;` : ""} changed = true }`;
2833
- }), y = t.locales ?? [], b = y.length > 0, x = t.defaultLocale ?? y[0] ?? "en";
2834
- if (b && !y.includes(x)) throw Error(`[voltro dev] app.config.ts: defaultLocale '${x}' must be one of locales [${y.join(", ")}]`);
2835
- h = [
2833
+ }), b = t.locales ?? [], x = b.length > 0, S = t.defaultLocale ?? b[0] ?? "en";
2834
+ if (x && !b.includes(S)) throw Error(`[voltro dev] app.config.ts: defaultLocale '${S}' must be one of locales [${b.join(", ")}]`);
2835
+ g = [
2836
2836
  "// GENERATED BY `voltro dev` — do not edit; will be overwritten on next boot.",
2837
2837
  "// Routes + per-page chain + not-found scopes assembled from src/pages/.",
2838
2838
  "// Exported as a single React component so vite-plugin-react treats this file",
@@ -2850,11 +2850,11 @@ __installPublicEnv(publicEnvValues)
2850
2850
  "",
2851
2851
  "import { useMemo, useSyncExternalStore } from 'react'",
2852
2852
  "import { Router, pageRoute, lazyPageRoute, preloadRouteModule, type PageDescriptor, type NotFoundDescriptor } from '@voltro/web'",
2853
- ...b ? [
2853
+ ...x ? [
2854
2854
  "import { I18nProvider } from '@voltro/i18n'",
2855
2855
  "import { resolveLocale } from '@voltro/i18n/server'",
2856
2856
  "import { useServerRequest } from '@voltro/web'",
2857
- ...y.map((e) => `import i18nCatalog_${e} from '../src/locales/${e}'`)
2857
+ ...b.map((e) => `import i18nCatalog_${e} from '../src/locales/${e}'`)
2858
2858
  ] : [],
2859
2859
  ...n,
2860
2860
  "",
@@ -2869,19 +2869,19 @@ __installPublicEnv(publicEnvValues)
2869
2869
  " pages: Record<string, unknown>",
2870
2870
  "} = {",
2871
2871
  " layouts: {",
2872
- ...o,
2872
+ ...s,
2873
2873
  " },",
2874
2874
  " layoutLoaders: {",
2875
- ...s,
2875
+ ...c,
2876
2876
  " },",
2877
2877
  " errors: {",
2878
- ...c,
2878
+ ...l,
2879
2879
  " },",
2880
2880
  " pendings: {",
2881
- ...d,
2881
+ ...f,
2882
2882
  " },",
2883
2883
  " notFounds: {",
2884
- ...f,
2884
+ ...p,
2885
2885
  " },",
2886
2886
  " pages: {},",
2887
2887
  "}",
@@ -2939,13 +2939,13 @@ __installPublicEnv(publicEnvValues)
2939
2939
  ...i,
2940
2940
  "]",
2941
2941
  "",
2942
- ...b ? [
2943
- `// i18n auto-wiring (config.locales = [${y.map((e) => JSON.stringify(e)).join(", ")}]).`,
2942
+ ...x ? [
2943
+ `// i18n auto-wiring (config.locales = [${b.map((e) => JSON.stringify(e)).join(", ")}]).`,
2944
2944
  "const I18N_CATALOGS: Record<string, import('@voltro/i18n').MessageCatalog> = {",
2945
- ...y.map((e) => ` ${JSON.stringify(e)}: i18nCatalog_${e},`),
2945
+ ...b.map((e) => ` ${JSON.stringify(e)}: i18nCatalog_${e},`),
2946
2946
  "}",
2947
- `const I18N_SUPPORTED: ReadonlyArray<string> = [${y.map((e) => JSON.stringify(e)).join(", ")}]`,
2948
- `const I18N_DEFAULT = ${JSON.stringify(x)}`,
2947
+ `const I18N_SUPPORTED: ReadonlyArray<string> = [${b.map((e) => JSON.stringify(e)).join(", ")}]`,
2948
+ `const I18N_DEFAULT = ${JSON.stringify(S)}`,
2949
2949
  "",
2950
2950
  "const pickI18nLocale = (ssr: ReturnType<typeof useServerRequest>): string => {",
2951
2951
  " if (ssr) {",
@@ -2979,7 +2979,7 @@ __installPublicEnv(publicEnvValues)
2979
2979
  " const v = useSyncExternalStore(subscribe, getVersion, getVersion)",
2980
2980
  " const routes = useMemo(() => buildRoutes(), [v])",
2981
2981
  " const notFounds = useMemo(() => buildNotFounds(), [v])",
2982
- ...b ? [
2982
+ ...x ? [
2983
2983
  " const ssr = useServerRequest()",
2984
2984
  " const locale = pickI18nLocale(ssr)",
2985
2985
  " const messages = I18N_CATALOGS[locale] ?? I18N_CATALOGS[I18N_DEFAULT]!",
@@ -2994,17 +2994,17 @@ __installPublicEnv(publicEnvValues)
2994
2994
  "if (import.meta.hot) {",
2995
2995
  " import.meta.hot.accept(",
2996
2996
  " [",
2997
- ..._,
2997
+ ...v,
2998
2998
  " ],",
2999
2999
  " (newMods: Array<Record<string, unknown> | undefined>) => {",
3000
3000
  " let changed = false",
3001
- ...v,
3001
+ ...y,
3002
3002
  " if (changed) bump()",
3003
3003
  " },",
3004
3004
  " )",
3005
3005
  "}",
3006
3006
  ""
3007
- ].join("\n"), g = [
3007
+ ].join("\n"), _ = [
3008
3008
  "// GENERATED BY `voltro dev` — do not edit; will be overwritten on next boot.",
3009
3009
  "// Entry: imports the generated App component and calls mount() with the",
3010
3010
  "// resolved apis map. Side-effect only — no local component definitions —",
@@ -3012,10 +3012,10 @@ __installPublicEnv(publicEnvValues)
3012
3012
  "",
3013
3013
  ...ll(t),
3014
3014
  "import { mount } from '@voltro/web'",
3015
- ...p,
3015
+ ...m,
3016
3016
  "import { App, preloadCurrentRoute } from './app'",
3017
3017
  ...sl(t),
3018
- ...al(t),
3018
+ ...al(t, o),
3019
3019
  ...cl(t),
3020
3020
  "",
3021
3021
  "// Preload the current route's page chunk BEFORE hydration so the first",
@@ -3031,14 +3031,14 @@ __installPublicEnv(publicEnvValues)
3031
3031
  "",
3032
3032
  "mount(App, {",
3033
3033
  " apis: {",
3034
- ...m,
3034
+ ...h,
3035
3035
  " },",
3036
- ...ol(t),
3036
+ ...ol(t, o),
3037
3037
  "})",
3038
3038
  "",
3039
3039
  Cl
3040
3040
  ].join("\n");
3041
- } else h = "", g = [
3041
+ } else g = "", _ = [
3042
3042
  "// GENERATED BY `voltro dev` — do not edit; will be overwritten on next boot.",
3043
3043
  "// The user's root component lives at ../src/App.tsx; this file imports it",
3044
3044
  "// and calls mount(). Side-effect only, no component definitions, so the",
@@ -3046,30 +3046,30 @@ __installPublicEnv(publicEnvValues)
3046
3046
  "",
3047
3047
  ...ll(t),
3048
3048
  "import { mount } from '@voltro/web'",
3049
- ...p,
3049
+ ...m,
3050
3050
  "import App from '../src/App'",
3051
3051
  ...sl(t),
3052
- ...al(t),
3052
+ ...al(t, o),
3053
3053
  ...cl(t),
3054
3054
  "",
3055
3055
  "mount(App, {",
3056
3056
  " apis: {",
3057
- ...m,
3057
+ ...h,
3058
3058
  " },",
3059
- ...ol(t),
3059
+ ...ol(t, o),
3060
3060
  "})",
3061
3061
  "",
3062
3062
  Cl
3063
3063
  ].join("\n");
3064
- let _ = s(e, ".framework");
3065
- await P.mkdir(_, { recursive: !0 }), t.env ? await Ro(_, r) : await P.rm(s(_, "env.public.ts"), { force: !0 }), await P.writeFile(s(_, "index.html"), c, "utf8"), await P.writeFile(s(_, "main.tsx"), g, "utf8"), h ? await P.writeFile(s(_, "app.tsx"), h, "utf8") : await P.rm(s(_, "app.tsx"), { force: !0 });
3066
- let v = s(e, ".gitignore"), y = "";
3064
+ let v = s(e, ".framework");
3065
+ await P.mkdir(v, { recursive: !0 }), t.env ? await Ro(v, r) : await P.rm(s(v, "env.public.ts"), { force: !0 }), await P.writeFile(s(v, "index.html"), l, "utf8"), await P.writeFile(s(v, "main.tsx"), _, "utf8"), g ? await P.writeFile(s(v, "app.tsx"), g, "utf8") : await P.rm(s(v, "app.tsx"), { force: !0 });
3066
+ let y = s(e, ".gitignore"), b = "";
3067
3067
  try {
3068
- y = await P.readFile(v, "utf8");
3068
+ b = await P.readFile(y, "utf8");
3069
3069
  } catch {}
3070
- let b = ["/.framework/"], x = y.split("\n").filter((e) => e.trim() !== "");
3071
- for (let e of b) x.includes(e) || x.push(e);
3072
- await P.writeFile(v, x.join("\n") + "\n", "utf8");
3070
+ let x = ["/.framework/"], S = b.split("\n").filter((e) => e.trim() !== "");
3071
+ for (let e of x) S.includes(e) || S.push(e);
3072
+ await P.writeFile(y, S.join("\n") + "\n", "utf8");
3073
3073
  }, Il = async (e, t) => {
3074
3074
  try {
3075
3075
  let n = s(i(e), "project.json");
@@ -3145,7 +3145,7 @@ __installPublicEnv(publicEnvValues)
3145
3145
  pages: m
3146
3146
  });
3147
3147
  _.wrote && K.debug("routes codegen wrote", { path: c(e, _.path) });
3148
- let v = await import("vite"), y = (await import("@vitejs/plugin-react")).default, b = (await import("@tailwindcss/vite")).default, x = s(e, ".framework"), ee = s(e, "src"), S = /* @__PURE__ */ new Set([
3148
+ let v = await import("vite"), y = (await import("@vitejs/plugin-react")).default, b = (await import("@tailwindcss/vite")).default, x = s(e, ".framework"), S = s(e, "src"), C = /* @__PURE__ */ new Set([
3149
3149
  ".framework",
3150
3150
  "node_modules",
3151
3151
  "dist",
@@ -3153,15 +3153,15 @@ __installPublicEnv(publicEnvValues)
3153
3153
  ".vite",
3154
3154
  ".turbo",
3155
3155
  ".cache"
3156
- ]), C = {
3156
+ ]), w = {
3157
3157
  name: "framework:watch-app-sources",
3158
3158
  async configureServer(t) {
3159
3159
  try {
3160
- let n = (await P.readdir(e, { withFileTypes: !0 })).filter((e) => e.isDirectory() && !S.has(e.name));
3160
+ let n = (await P.readdir(e, { withFileTypes: !0 })).filter((e) => e.isDirectory() && !C.has(e.name));
3161
3161
  for (let r of n) t.watcher.add(s(e, r.name));
3162
- n.length === 0 && t.watcher.add(ee);
3162
+ n.length === 0 && t.watcher.add(S);
3163
3163
  } catch {
3164
- t.watcher.add(ee);
3164
+ t.watcher.add(S);
3165
3165
  }
3166
3166
  try {
3167
3167
  let n = await P.readFile(s(e, "package.json"), "utf8"), r = JSON.parse(n), i = Object.keys({
@@ -3178,11 +3178,11 @@ __installPublicEnv(publicEnvValues)
3178
3178
  }));
3179
3179
  } catch {}
3180
3180
  }
3181
- }, w = s(e, "src", "pages"), T = (e) => e.endsWith(".tsx") && (e === w || e.startsWith(w + "/")), E = (e) => e === w || e.startsWith(w + "/"), D = async (n) => {
3181
+ }, T = s(e, "src", "pages"), E = (e) => e.endsWith(".tsx") && (e === T || e.startsWith(T + "/")), D = (e) => e === T || e.startsWith(T + "/"), ee = async (n) => {
3182
3182
  try {
3183
3183
  let r = Date.now();
3184
3184
  await Fl(e, t, i, o);
3185
- let { pages: a } = await bl(w);
3185
+ let { pages: a } = await bl(T);
3186
3186
  await is({
3187
3187
  appRoot: e,
3188
3188
  pages: a
@@ -3200,17 +3200,17 @@ __installPublicEnv(publicEnvValues)
3200
3200
  r.push(e), n && clearTimeout(n), n = setTimeout(() => {
3201
3201
  n = null;
3202
3202
  let e = r.length === 1 ? r[0] : `${r.length} events (${r[0]}, …)`;
3203
- r.length = 0, D(e);
3203
+ r.length = 0, ee(e);
3204
3204
  }, 50);
3205
3205
  };
3206
3206
  t.watcher.on("add", (t) => {
3207
- T(t) && i(`add ${c(e, t)}`);
3207
+ E(t) && i(`add ${c(e, t)}`);
3208
3208
  }), t.watcher.on("unlink", (t) => {
3209
- T(t) && i(`unlink ${c(e, t)}`);
3209
+ E(t) && i(`unlink ${c(e, t)}`);
3210
3210
  }), t.watcher.on("addDir", (t) => {
3211
- E(t) && i(`addDir ${c(e, t)}`);
3211
+ D(t) && i(`addDir ${c(e, t)}`);
3212
3212
  }), t.watcher.on("unlinkDir", (t) => {
3213
- E(t) && i(`unlinkDir ${c(e, t)}`);
3213
+ D(t) && i(`unlinkDir ${c(e, t)}`);
3214
3214
  });
3215
3215
  }
3216
3216
  }, k = s(e, "app.config.ts"), A = (e) => {
@@ -3667,12 +3667,12 @@ __installPublicEnv(publicEnvValues)
3667
3667
  };
3668
3668
  }))), b = {};
3669
3669
  for (let [e, t] of Object.entries(n.headers ?? {})) typeof t == "string" ? b[e] = t : Array.isArray(t) && (b[e] = t.join(", "));
3670
- let x = Pl(Nl(i[0]), b.cookie), ee = null, S = c.loader;
3671
- if (typeof S == "function") {
3670
+ let x = Pl(Nl(i[0]), b.cookie), S = null, C = c.loader;
3671
+ if (typeof C == "function") {
3672
3672
  let e = new AbortController(), t = () => e.abort();
3673
3673
  r.once("close", t);
3674
3674
  try {
3675
- ee = await m("loader", () => S({
3675
+ S = await m("loader", () => C({
3676
3676
  params: u.params,
3677
3677
  pathname: l,
3678
3678
  signal: e.signal,
@@ -3683,7 +3683,7 @@ __installPublicEnv(publicEnvValues)
3683
3683
  r.off("close", t);
3684
3684
  }
3685
3685
  }
3686
- let C = await m("loadSsrHelpers", async () => await t.ssrLoadModule("@voltro/web/ssr")), w = {
3686
+ let w = await m("loadSsrHelpers", async () => await t.ssrLoadModule("@voltro/web/ssr")), T = {
3687
3687
  pattern: u.route.pattern,
3688
3688
  Component: c.default,
3689
3689
  meta: c.meta,
@@ -3692,18 +3692,18 @@ __installPublicEnv(publicEnvValues)
3692
3692
  Pending: c.Pending,
3693
3693
  renderMode: _,
3694
3694
  chain: y
3695
- }, T = {
3696
- cookies: C.parseCookieHeader(b.cookie),
3695
+ }, E = {
3696
+ cookies: w.parseCookieHeader(b.cookie),
3697
3697
  headers: b,
3698
3698
  url: o
3699
- }, E = Date.now(), { html: D, meta: O } = C.renderPageToHtml({
3700
- descriptor: w,
3699
+ }, D = Date.now(), { html: ee, meta: O } = w.renderPageToHtml({
3700
+ descriptor: T,
3701
3701
  params: u.params,
3702
3702
  pathname: l,
3703
- loaderData: ee,
3704
- requestContext: T
3703
+ loaderData: S,
3704
+ requestContext: E
3705
3705
  });
3706
- p.render = Date.now() - E;
3706
+ p.render = Date.now() - D;
3707
3707
  let k = c.interactive ?? "full", A = [];
3708
3708
  await m("collectCss", async () => {
3709
3709
  let t = /* @__PURE__ */ new Set(), n = [
@@ -3719,10 +3719,10 @@ __installPublicEnv(publicEnvValues)
3719
3719
  });
3720
3720
  let j = await m("readShell", de), te = await m("transformShell", () => t.transformIndexHtml(o, j)), ne = [
3721
3721
  A.map((e) => `<link rel="stylesheet" href="${e}?direct" />`).join("\n "),
3722
- C.renderMetaToHtml(O),
3722
+ w.renderMetaToHtml(O),
3723
3723
  `<meta name="voltro-interactive" content="${k}" />`,
3724
- `<script type="application/json" id="__voltro_state__">${C.serialiseStateForInlining(ee)}<\/script>`
3725
- ].filter((e) => e.length > 0).join("\n "), re = T.cookies["voltro:locale"], M = te.replace("<div id=\"root\"></div>", `<div id="root">${D}</div>`).replace("</head>", ` ${ne}\n </head>`).replace(/<html(\s+lang="[^"]*")?/i, re ? `<html lang="${re}"` : "<html lang=\"en\"");
3724
+ `<script type="application/json" id="__voltro_state__">${w.serialiseStateForInlining(S)}<\/script>`
3725
+ ].filter((e) => e.length > 0).join("\n "), re = E.cookies["voltro:locale"], M = te.replace("<div id=\"root\"></div>", `<div id="root">${ee}</div>`).replace("</head>", ` ${ne}\n </head>`).replace(/<html(\s+lang="[^"]*")?/i, re ? `<html lang="${re}"` : "<html lang=\"en\"");
3726
3726
  r.statusCode = 200, r.setHeader("content-type", "text/html; charset=utf-8"), r.setHeader("x-voltro-rendered-by", "ssr-dev"), r.end(M);
3727
3727
  let N = Date.now() - f;
3728
3728
  d ? (I.add(u.route.pattern), K.info(`ssr compiled ${u.route.pattern} in ${N}ms`, {
@@ -3809,7 +3809,7 @@ __installPublicEnv(publicEnvValues)
3809
3809
  plugins: [
3810
3810
  y(),
3811
3811
  b(),
3812
- C,
3812
+ w,
3813
3813
  O,
3814
3814
  N,
3815
3815
  F,
@@ -4421,31 +4421,31 @@ __installPublicEnv(publicEnvValues)
4421
4421
  attempts: n,
4422
4422
  diagnostics: a
4423
4423
  };
4424
- }, ou = E.Struct({
4425
- tag: E.String,
4426
- kind: E.String,
4427
- file: E.optional(E.String),
4428
- source: E.optional(E.Union(E.String, E.Array(E.String))),
4429
- targets: E.optional(E.Array(E.Struct({
4430
- table: E.String,
4431
- op: E.String
4424
+ }, ou = D.Struct({
4425
+ tag: D.String,
4426
+ kind: D.String,
4427
+ file: D.optional(D.String),
4428
+ source: D.optional(D.Union(D.String, D.Array(D.String))),
4429
+ targets: D.optional(D.Array(D.Struct({
4430
+ table: D.String,
4431
+ op: D.String
4432
4432
  }))),
4433
- binds: E.optional(E.Array(E.String)),
4434
- requiresScopes: E.optional(E.Array(E.String))
4435
- }), su = E.Struct({
4436
- tables: E.Array(E.String),
4437
- procedures: E.Array(ou),
4438
- scopes: E.optional(E.Array(E.String)),
4439
- routes: E.optional(E.Array(E.Struct({
4440
- pattern: E.String,
4441
- binds: E.Array(E.String),
4442
- file: E.optional(E.String)
4433
+ binds: D.optional(D.Array(D.String)),
4434
+ requiresScopes: D.optional(D.Array(D.String))
4435
+ }), su = D.Struct({
4436
+ tables: D.Array(D.String),
4437
+ procedures: D.Array(ou),
4438
+ scopes: D.optional(D.Array(D.String)),
4439
+ routes: D.optional(D.Array(D.Struct({
4440
+ pattern: D.String,
4441
+ binds: D.Array(D.String),
4442
+ file: D.optional(D.String)
4443
4443
  })))
4444
- }), cu = E.Struct({
4444
+ }), cu = D.Struct({
4445
4445
  graph: su,
4446
- artifacts: E.Array(E.Struct({
4447
- path: E.String,
4448
- content: E.String
4446
+ artifacts: D.Array(D.Struct({
4447
+ path: D.String,
4448
+ content: D.String
4449
4449
  }))
4450
4450
  }), lu = (e, t) => {
4451
4451
  let n = [
@@ -4843,7 +4843,7 @@ CREATE INDEX IF NOT EXISTS ${e}_servable_until_idx ON ${e} (servable_until);
4843
4843
  cookies: _.parseCookieHeader(s.cookie),
4844
4844
  headers: s,
4845
4845
  url: c
4846
- }, b = _.i18n?.resolve(s.cookie, s["accept-language"]), { html: x, meta: ee } = _.renderPageToHtml({
4846
+ }, b = _.i18n?.resolve(s.cookie, s["accept-language"]), { html: x, meta: S } = _.renderPageToHtml({
4847
4847
  descriptor: v,
4848
4848
  params: r,
4849
4849
  pathname: i,
@@ -4854,17 +4854,17 @@ CREATE INDEX IF NOT EXISTS ${e}_servable_until_idx ON ${e} (servable_until);
4854
4854
  outerWrap: b.outerWrap,
4855
4855
  locale: b.locale
4856
4856
  } : {}
4857
- }), S = d.interactive ?? "full", C = [
4858
- _.renderMetaToHtml(ee),
4859
- `<meta name="voltro-interactive" content="${S}" />`,
4857
+ }), C = d.interactive ?? "full", w = [
4858
+ _.renderMetaToHtml(S),
4859
+ `<meta name="voltro-interactive" content="${C}" />`,
4860
4860
  `<script type="application/json" id="__voltro_state__">${_.serialiseStateForInlining(h)}<\/script>`
4861
- ].filter((e) => e.length > 0).join("\n "), w = b?.locale ?? y.cookies["voltro:lang"] ?? "en", T = o.replace("<div id=\"root\"></div>", `<div id="root">${x}</div>`).replace("</head>", ` ${C}\n </head>`).replace(/<html(\s+lang="[^"]*")?/i, `<html lang="${w}"`);
4862
- S === "none" && (T = Pu(T));
4863
- let E = f === "isr" ? _c(d.revalidate) : null;
4861
+ ].filter((e) => e.length > 0).join("\n "), T = b?.locale ?? y.cookies["voltro:lang"] ?? "en", E = o.replace("<div id=\"root\"></div>", `<div id="root">${x}</div>`).replace("</head>", ` ${w}\n </head>`).replace(/<html(\s+lang="[^"]*")?/i, `<html lang="${T}"`);
4862
+ C === "none" && (E = Pu(E));
4863
+ let D = f === "isr" ? _c(d.revalidate) : null;
4864
4864
  return {
4865
- html: T,
4865
+ html: E,
4866
4866
  renderMode: f,
4867
- revalidateMs: E
4867
+ revalidateMs: D
4868
4868
  };
4869
4869
  }, Bu = (e) => e === "" ? "/" : e, Vu = async (e) => {
4870
4870
  let t = await import(d(e).href);
@@ -4978,15 +4978,15 @@ CREATE INDEX IF NOT EXISTS ${e}_servable_until_idx ON ${e} (servable_until);
4978
4978
  password: process.env.PG_PASSWORD ?? "app",
4979
4979
  database: process.env.PG_DATABASE ?? "app"
4980
4980
  }), await y.connect(), v = xu({ client: y }), Du.info("isr cache backend: postgres", { table: "voltro_isr_cache" })) : (v = gc(), Du.info("isr cache backend: memory (per-process)", { hint: "set SSR_CACHE=postgres for persistent storage" })), await Fl(e, t, g, r);
4981
- let { pages: b, dirs: x } = await bl(s(e, "src", "pages")), ee = Lu(b), S = s(l, "server", "ssrEntry.js"), C = await Fu(S) ? await Vu(S) : await Hu(e, c);
4982
- Du.info(`ssr loader: ${C.kind}`, {
4983
- kind: C.kind,
4984
- ...C.kind === "middleware" ? { hint: "no pre-built SSR bundle found; run `voltro build` to enable bundle mode" } : {}
4981
+ let { pages: b, dirs: x } = await bl(s(e, "src", "pages")), S = Lu(b), C = s(l, "server", "ssrEntry.js"), w = await Fu(C) ? await Vu(C) : await Hu(e, c);
4982
+ Du.info(`ssr loader: ${w.kind}`, {
4983
+ kind: w.kind,
4984
+ ...w.kind === "middleware" ? { hint: "no pre-built SSR bundle found; run `voltro build` to enable bundle mode" } : {}
4985
4985
  });
4986
- let w = /* @__PURE__ */ new Map();
4986
+ let T = /* @__PURE__ */ new Map();
4987
4987
  for (let e of b) try {
4988
- let t = await C.getPage(e.pattern, e.file);
4989
- w.set(e.pattern, {
4988
+ let t = await w.getPage(e.pattern, e.file);
4989
+ T.set(e.pattern, {
4990
4990
  renderMode: ku(t),
4991
4991
  tenantAware: t.tenantAware === !0,
4992
4992
  revalidateMs: _c(t.revalidate),
@@ -5000,19 +5000,19 @@ CREATE INDEX IF NOT EXISTS ${e}_servable_until_idx ON ${e} (servable_until);
5000
5000
  } catch (t) {
5001
5001
  Du.warn("failed to load page metadata", { pattern: e.pattern }, t);
5002
5002
  }
5003
- Du.info(`registered ${w.size} route(s)`, { count: w.size });
5004
- let T = /* @__PURE__ */ new Map();
5005
- for (let [e, t] of w) t.cacheInvalidatesOn.length > 0 && T.set(e, t.cacheInvalidatesOn);
5003
+ Du.info(`registered ${T.size} route(s)`, { count: T.size });
5006
5004
  let E = /* @__PURE__ */ new Map();
5007
- for (let e of ee) E.set(e.pattern, e.regex);
5008
- let D = _u({
5005
+ for (let [e, t] of T) t.cacheInvalidatesOn.length > 0 && E.set(e, t.cacheInvalidatesOn);
5006
+ let D = /* @__PURE__ */ new Map();
5007
+ for (let e of S) D.set(e.pattern, e.regex);
5008
+ let ee = _u({
5009
5009
  cache: v,
5010
- tableSubscriptionsByPattern: T,
5011
- regexByPattern: E
5010
+ tableSubscriptionsByPattern: E,
5011
+ regexByPattern: D
5012
5012
  });
5013
- await D.start();
5013
+ await ee.start();
5014
5014
  let O = Eu(), k = b.map((e) => {
5015
- let t = w.get(e.pattern);
5015
+ let t = T.get(e.pattern);
5016
5016
  return {
5017
5017
  pattern: e.pattern,
5018
5018
  file: e.file,
@@ -5132,7 +5132,7 @@ CREATE INDEX IF NOT EXISTS ${e}_servable_until_idx ON ${e} (servable_until);
5132
5132
  body: e.body
5133
5133
  };
5134
5134
  }
5135
- let o = Ru(i, ee), c = o ? w.get(o.route.pattern)?.renderMode : void 0, u = c === "ssr" || c === "isr", d = i === "/" ? s(l, "index.html") : s(l, i.replace(/^\//, ""), "index.html");
5135
+ let o = Ru(i, S), c = o ? T.get(o.route.pattern)?.renderMode : void 0, u = c === "ssr" || c === "isr", d = i === "/" ? s(l, "index.html") : s(l, i.replace(/^\//, ""), "index.html");
5136
5136
  if (!u && await Fu(d)) return {
5137
5137
  status: 200,
5138
5138
  headers: { "content-type": "text/html; charset=utf-8" },
@@ -5149,20 +5149,20 @@ CREATE INDEX IF NOT EXISTS ${e}_servable_until_idx ON ${e} (servable_until);
5149
5149
  };
5150
5150
  }
5151
5151
  }
5152
- let f = Ru(i, ee);
5152
+ let f = Ru(i, S);
5153
5153
  if (!f) return {
5154
5154
  status: 404,
5155
5155
  headers: { "content-type": "text/plain" },
5156
5156
  body: "not found"
5157
5157
  };
5158
- let p = w.get(f.route.pattern), m = r["x-tenant"] ?? "anonymous", g = (await C.getHelpers()).i18n?.resolve(r.cookie, r["accept-language"])?.locale, y = vc(i, {
5158
+ let p = T.get(f.route.pattern), m = r["x-tenant"] ?? "anonymous", g = (await w.getHelpers()).i18n?.resolve(r.cookie, r["accept-language"])?.locale, y = vc(i, {
5159
5159
  ...p?.tenantAware ? { tenant: m } : {},
5160
5160
  ...g ? { locale: g } : {}
5161
- }), b = v.get(y), S = Date.now();
5162
- if (b && yc(b, S)) return a.emit("cache", {
5161
+ }), b = v.get(y), C = Date.now();
5162
+ if (b && yc(b, C)) return a.emit("cache", {
5163
5163
  kind: "HIT",
5164
5164
  key: y,
5165
- ageMs: S - b.renderedAt
5165
+ ageMs: C - b.renderedAt
5166
5166
  }), {
5167
5167
  status: 200,
5168
5168
  headers: {
@@ -5170,18 +5170,18 @@ CREATE INDEX IF NOT EXISTS ${e}_servable_until_idx ON ${e} (servable_until);
5170
5170
  "x-voltro-rendered-by": "isr",
5171
5171
  "x-voltro-cache": "HIT",
5172
5172
  "x-voltro-cache-key": y,
5173
- "x-voltro-cache-age-ms": String(S - b.renderedAt)
5173
+ "x-voltro-cache-age-ms": String(C - b.renderedAt)
5174
5174
  },
5175
5175
  body: b.html
5176
5176
  };
5177
- if (b && bc(b, S)) return a.emit("cache", {
5177
+ if (b && bc(b, C)) return a.emit("cache", {
5178
5178
  kind: "STALE",
5179
5179
  key: y,
5180
- ageMs: S - b.renderedAt
5180
+ ageMs: C - b.renderedAt
5181
5181
  }), (async () => {
5182
5182
  try {
5183
5183
  let t = await zu({
5184
- provider: C,
5184
+ provider: w,
5185
5185
  root: e,
5186
5186
  route: f.route,
5187
5187
  params: f.params,
@@ -5193,7 +5193,7 @@ CREATE INDEX IF NOT EXISTS ${e}_servable_until_idx ON ${e} (servable_until);
5193
5193
  requestUrl: n
5194
5194
  });
5195
5195
  if (t && !("control" in t) && t.renderMode === "isr" && t.revalidateMs !== null) {
5196
- let e = w.get(f.route.pattern)?.staleWhileRevalidateMs ?? 0, n = Date.now();
5196
+ let e = T.get(f.route.pattern)?.staleWhileRevalidateMs ?? 0, n = Date.now();
5197
5197
  v.set(y, {
5198
5198
  html: t.html,
5199
5199
  renderedAt: n,
@@ -5213,13 +5213,13 @@ CREATE INDEX IF NOT EXISTS ${e}_servable_until_idx ON ${e} (servable_until);
5213
5213
  "x-voltro-rendered-by": "isr",
5214
5214
  "x-voltro-cache": "STALE",
5215
5215
  "x-voltro-cache-key": y,
5216
- "x-voltro-cache-age-ms": String(S - b.renderedAt)
5216
+ "x-voltro-cache-age-ms": String(C - b.renderedAt)
5217
5217
  },
5218
5218
  body: b.html
5219
5219
  };
5220
5220
  try {
5221
5221
  let t = await zu({
5222
- provider: C,
5222
+ provider: w,
5223
5223
  root: e,
5224
5224
  route: f.route,
5225
5225
  params: f.params,
@@ -5258,7 +5258,7 @@ CREATE INDEX IF NOT EXISTS ${e}_servable_until_idx ON ${e} (servable_until);
5258
5258
  "x-voltro-rendered-by": t.renderMode
5259
5259
  };
5260
5260
  if (t.renderMode === "isr" && t.revalidateMs !== null) {
5261
- let e = Date.now(), n = w.get(f.route.pattern)?.staleWhileRevalidateMs ?? 0;
5261
+ let e = Date.now(), n = T.get(f.route.pattern)?.staleWhileRevalidateMs ?? 0;
5262
5262
  v.set(y, {
5263
5263
  html: t.html,
5264
5264
  renderedAt: e,
@@ -5434,7 +5434,7 @@ CREATE INDEX IF NOT EXISTS ${e}_servable_until_idx ON ${e} (servable_until);
5434
5434
  renderedBy: e.headers["x-voltro-rendered-by"],
5435
5435
  cache: e.headers["x-voltro-cache"]
5436
5436
  });
5437
- let n = Ru(s, ee)?.route.pattern ?? (e.status === 404 ? "<unmatched>" : "<asset>");
5437
+ let n = Ru(s, S)?.route.pattern ?? (e.status === 404 ? "<unmatched>" : "<asset>");
5438
5438
  O.record({
5439
5439
  kind: "request",
5440
5440
  tag: n,
@@ -5487,10 +5487,10 @@ CREATE INDEX IF NOT EXISTS ${e}_servable_until_idx ON ${e} (servable_until);
5487
5487
  });
5488
5488
  let ie = !1, F = (e) => async () => {
5489
5489
  if (!ie) {
5490
- if (ie = !0, Du.info(`received ${e}, shutting down`, { signal: e }), N.close(), await D.stop(), y) try {
5490
+ if (ie = !0, Du.info(`received ${e}, shutting down`, { signal: e }), N.close(), await ee.stop(), y) try {
5491
5491
  await y.end();
5492
5492
  } catch {}
5493
- await C.close(), await Mc(f), await p.dispose(), process.exit(0);
5493
+ await w.close(), await Mc(f), await p.dispose(), process.exit(0);
5494
5494
  }
5495
5495
  };
5496
5496
  process.on("SIGINT", F("SIGINT")), process.on("SIGTERM", F("SIGTERM"));
@@ -5738,11 +5738,11 @@ ${a.join("\n\n")}\n`);
5738
5738
  ...u,
5739
5739
  ...f
5740
5740
  ], e);
5741
- let p = (e) => e.replace(/[^a-zA-Z0-9_$]/g, "_"), m = (e) => `__src_agent_${p(e.name)}`, h = (e) => `__agentRoutes_${p(e.name)}`, g = r.length > 0, _ = r.map((e, t) => `import { ${e.name} as __pe${t} } from '${e.module}'`), v = g ? ", __voltroPluginErrors" : "", y = d.length > 0, b = d.map((e, t) => `import { ${e.name} as __prpc${t} } from '${e.module}'`), x = (e) => e === "query" ? "queryToRpc" : e === "mutation" ? "mutationToRpc" : "actionToRpc", ee = d.map((e, t) => `export const ${md(e.tag)} = ${x(e.kind)}(__prpc${t}${v})`), S = d.map((e) => ` ${md(e.tag)},`), C = d.map((e, t) => ` ${JSON.stringify(e.tag)}: normalizeDescriptor(__prpc${t}),`), w = [...n].sort((e, t) => e.kind === t.kind ? e.rpcTag < t.rpcTag ? -1 : 1 : _d(e.kind) - _d(t.kind)), T = i(t), E = (e) => `__src_${md(e.rpcTag)}`, D = (e) => {
5742
- let t = `./${c(T, e.file).replace(/\\/g, "/").replace(/\.tsx?$/, "")}`;
5743
- return `import { ${e.exportName} as ${E(e)} } from '${t}'`;
5741
+ let p = (e) => e.replace(/[^a-zA-Z0-9_$]/g, "_"), m = (e) => `__src_agent_${p(e.name)}`, h = (e) => `__agentRoutes_${p(e.name)}`, g = r.length > 0, _ = r.map((e, t) => `import { ${e.name} as __pe${t} } from '${e.module}'`), v = g ? ", __voltroPluginErrors" : "", y = d.length > 0, b = d.map((e, t) => `import { ${e.name} as __prpc${t} } from '${e.module}'`), x = (e) => e === "query" ? "queryToRpc" : e === "mutation" ? "mutationToRpc" : "actionToRpc", S = d.map((e, t) => `export const ${md(e.tag)} = ${x(e.kind)}(__prpc${t}${v})`), C = d.map((e) => ` ${md(e.tag)},`), w = d.map((e, t) => ` ${JSON.stringify(e.tag)}: normalizeDescriptor(__prpc${t}),`), T = [...n].sort((e, t) => e.kind === t.kind ? e.rpcTag < t.rpcTag ? -1 : 1 : _d(e.kind) - _d(t.kind)), E = i(t), D = (e) => `__src_${md(e.rpcTag)}`, ee = (e) => {
5742
+ let t = `./${c(E, e.file).replace(/\\/g, "/").replace(/\.tsx?$/, "")}`;
5743
+ return `import { ${e.exportName} as ${D(e)} } from '${t}'`;
5744
5744
  }, O = (e) => {
5745
- let t = md(e.rpcTag), n = E(e);
5745
+ let t = md(e.rpcTag), n = D(e);
5746
5746
  return e.kind === "query" ? `export const ${t} = queryToRpc(${n}${v})` : e.kind === "mutation" ? `export const ${t} = mutationToRpc(${n}${v})` : e.kind === "action" ? `export const ${t} = actionToRpc(${n}${v})` : e.kind === "stream" ? `export const ${t} = streamToRpc(${n}${v})` : [
5747
5747
  `export const ${t} = Rpc.make('${e.rpcTag}', {`,
5748
5748
  ` payload: ${n}.payloadSchema,`,
@@ -5750,7 +5750,7 @@ ${a.join("\n\n")}\n`);
5750
5750
  ` error: ${n}.errorSchema,`,
5751
5751
  "})"
5752
5752
  ].join("\n");
5753
- }, k = w.some((e) => e.kind === "workflow"), A = k ? [
5753
+ }, k = T.some((e) => e.kind === "workflow"), A = k ? [
5754
5754
  "__voltroWorkflowRun",
5755
5755
  "__voltroWorkflowRuns",
5756
5756
  "__voltroWorkflowRunSteps",
@@ -5766,14 +5766,14 @@ ${a.join("\n\n")}\n`);
5766
5766
  "__voltroUndoApply",
5767
5767
  "__voltroUndoRedo"
5768
5768
  ] : [], te = [
5769
- ...w.map((e) => ` ${md(e.rpcTag)},`),
5769
+ ...T.map((e) => ` ${md(e.rpcTag)},`),
5770
5770
  ...a.flatMap((e) => [` ${md(`${e.name}.send`)},`, ` ${md(`${e.name}.messages`)},`]),
5771
5771
  ...A.map((e) => ` ${e},`),
5772
5772
  ...j.map((e) => ` ${e},`),
5773
- ...S
5773
+ ...C
5774
5774
  ].join("\n"), ne = ["queryToRpc"];
5775
- (w.some((e) => e.kind === "mutation") || d.some((e) => e.kind === "mutation")) && ne.push("mutationToRpc"), (w.some((e) => e.kind === "action") || k || l || d.some((e) => e.kind === "action")) && ne.push("actionToRpc"), w.some((e) => e.kind === "stream") && ne.push("streamToRpc"), k && ne.push("WorkflowRunHandleSchema", "workflowCancelDescriptor", "workflowDomainEventsQueryDescriptor", "workflowEventDeliveriesQueryDescriptor", "workflowResumeDescriptor", "workflowRunEventsQueryDescriptor", "workflowRunQueryDescriptor", "workflowRunsQueryDescriptor", "workflowRunStepsQueryDescriptor", "workflowSignalDescriptor", "workflowUpdateDescriptor"), o && ne.push("mutationToRpc", "undoLogQueryDescriptor", "undoApplyDescriptor", "undoRedoDescriptor"), (w.some((e) => e.kind === "query" || e.kind === "mutation" || e.kind === "action" || e.kind === "stream") || l || k || o || y) && ne.push("normalizeDescriptor");
5776
- let re = [...new Set(ne)].sort(), M = w.filter((e) => e.kind === "query" || e.kind === "mutation" || e.kind === "action" || e.kind === "stream").map((e) => ` ${JSON.stringify(e.rpcTag)}: normalizeDescriptor(${E(e)}),`), N = a.flatMap((e) => [` ${JSON.stringify(`${e.name}.send`)}: normalizeDescriptor(${h(e)}.send),`, ` ${JSON.stringify(`${e.name}.messages`)}: normalizeDescriptor(${h(e)}.messages),`]), ie = k ? [
5775
+ (T.some((e) => e.kind === "mutation") || d.some((e) => e.kind === "mutation")) && ne.push("mutationToRpc"), (T.some((e) => e.kind === "action") || k || l || d.some((e) => e.kind === "action")) && ne.push("actionToRpc"), T.some((e) => e.kind === "stream") && ne.push("streamToRpc"), k && ne.push("WorkflowRunHandleSchema", "workflowCancelDescriptor", "workflowDomainEventsQueryDescriptor", "workflowEventDeliveriesQueryDescriptor", "workflowResumeDescriptor", "workflowRunEventsQueryDescriptor", "workflowRunQueryDescriptor", "workflowRunsQueryDescriptor", "workflowRunStepsQueryDescriptor", "workflowSignalDescriptor", "workflowUpdateDescriptor"), o && ne.push("mutationToRpc", "undoLogQueryDescriptor", "undoApplyDescriptor", "undoRedoDescriptor"), (T.some((e) => e.kind === "query" || e.kind === "mutation" || e.kind === "action" || e.kind === "stream") || l || k || o || y) && ne.push("normalizeDescriptor");
5776
+ let re = [...new Set(ne)].sort(), M = T.filter((e) => e.kind === "query" || e.kind === "mutation" || e.kind === "action" || e.kind === "stream").map((e) => ` ${JSON.stringify(e.rpcTag)}: normalizeDescriptor(${D(e)}),`), N = a.flatMap((e) => [` ${JSON.stringify(`${e.name}.send`)}: normalizeDescriptor(${h(e)}.send),`, ` ${JSON.stringify(`${e.name}.messages`)}: normalizeDescriptor(${h(e)}.messages),`]), ie = k ? [
5777
5777
  " \"__voltro.workflow.run\": normalizeDescriptor(workflowRunQueryDescriptor),",
5778
5778
  " \"__voltro.workflow.runs\": normalizeDescriptor(workflowRunsQueryDescriptor),",
5779
5779
  " \"__voltro.workflow.run.steps\": normalizeDescriptor(workflowRunStepsQueryDescriptor),",
@@ -5788,8 +5788,8 @@ ${a.join("\n\n")}\n`);
5788
5788
  " \"__voltro.undo.log\": normalizeDescriptor(undoLogQueryDescriptor),",
5789
5789
  " \"__voltro.undo.apply\": normalizeDescriptor(undoApplyDescriptor),",
5790
5790
  " \"__voltro.undo.redo\": normalizeDescriptor(undoRedoDescriptor),"
5791
- ] : [], ae = w.filter((e) => e.kind === "workflow").map((e) => ` ${JSON.stringify(e.rpcTag)}: { kind: 'workflow' },`), oe = w.filter((e) => e.kind === "workflow").map((e) => {
5792
- let t = E(e);
5791
+ ] : [], ae = T.filter((e) => e.kind === "workflow").map((e) => ` ${JSON.stringify(e.rpcTag)}: { kind: 'workflow' },`), oe = T.filter((e) => e.kind === "workflow").map((e) => {
5792
+ let t = D(e);
5793
5793
  return [
5794
5794
  ` ${JSON.stringify(e.rpcTag)}: {`,
5795
5795
  " kind: 'workflow',",
@@ -5801,7 +5801,7 @@ ${a.join("\n\n")}\n`);
5801
5801
  ` queries: __voltroWorkflowMessages(${t}).queries,`,
5802
5802
  " },"
5803
5803
  ].join("\n");
5804
- }), se = [...w, ...a.map((e) => ({
5804
+ }), se = [...T, ...a.map((e) => ({
5805
5805
  rpcTag: `agent:${e.name}`,
5806
5806
  file: e.file
5807
5807
  }))];
@@ -5816,7 +5816,7 @@ ${a.join("\n\n")}\n`);
5816
5816
  return `${e.rpcTag}${t}`;
5817
5817
  }).join("")).digest("hex").slice(0, 16)}`,
5818
5818
  "// Source files:",
5819
- ...w.map((t) => `// - ${c(e, t.file).replace(/\\/g, "/")}`),
5819
+ ...T.map((t) => `// - ${c(e, t.file).replace(/\\/g, "/")}`),
5820
5820
  ...a.map((t) => `// - ${c(e, t.file).replace(/\\/g, "/")} (agent)`),
5821
5821
  "",
5822
5822
  k ? "import { Rpc, RpcGroup } from '@effect/rpc'" : "import { RpcGroup } from '@effect/rpc'",
@@ -5824,8 +5824,8 @@ ${a.join("\n\n")}\n`);
5824
5824
  `import { ${re.join(", ")} } from '@voltro/protocol'`,
5825
5825
  ...l ? ["import { agentRouteDescriptors as __voltroAgentRoutes } from '@voltro/ai/agent'"] : [],
5826
5826
  "",
5827
- ...w.map(D),
5828
- ...a.map((e) => `import { ${e.exportName} as ${m(e)} } from './${c(T, e.file).replace(/\\/g, "/").replace(/\.tsx?$/, "")}'`),
5827
+ ...T.map(ee),
5828
+ ...a.map((e) => `import { ${e.exportName} as ${m(e)} } from './${c(E, e.file).replace(/\\/g, "/").replace(/\.tsx?$/, "")}'`),
5829
5829
  ...g ? ["", ..._] : [],
5830
5830
  ...y ? ["", ...b] : [],
5831
5831
  "",
@@ -5871,7 +5871,7 @@ ${a.join("\n\n")}\n`);
5871
5871
  "} }",
5872
5872
  ""
5873
5873
  ] : [],
5874
- ...w.map(O),
5874
+ ...T.map(O),
5875
5875
  ...a.flatMap((e) => [`export const ${md(`${e.name}.send`)} = actionToRpc(${h(e)}.send${v})`, `export const ${md(`${e.name}.messages`)} = queryToRpc(${h(e)}.messages${v})`]),
5876
5876
  ...k ? [
5877
5877
  "export const __voltroWorkflowRun = queryToRpc(workflowRunQueryDescriptor)",
@@ -5890,7 +5890,7 @@ ${a.join("\n\n")}\n`);
5890
5890
  "export const __voltroUndoApply = mutationToRpc(undoApplyDescriptor)",
5891
5891
  "export const __voltroUndoRedo = mutationToRpc(undoRedoDescriptor)"
5892
5892
  ] : [],
5893
- ...ee,
5893
+ ...S,
5894
5894
  "",
5895
5895
  "export const appGroup = RpcGroup.make(",
5896
5896
  te,
@@ -5905,7 +5905,7 @@ ${a.join("\n\n")}\n`);
5905
5905
  ...ae,
5906
5906
  ...ie,
5907
5907
  ...P,
5908
- ...C,
5908
+ ...w,
5909
5909
  "} as const",
5910
5910
  "",
5911
5911
  "export type AppDescriptors = typeof appDescriptors",
@@ -6581,7 +6581,7 @@ ${a.join("\n\n")}\n`);
6581
6581
  ...i ? { cdcDialect: i } : {}
6582
6582
  });
6583
6583
  }, kf = async ({ env: e = process.env } = {}) => {
6584
- let t = C.make(S.mergeAll(Fi.layer, Ii.Default)), n = await t.runPromise(Pi), r = await t.runPromise(Ii), i = (e.CACHE_BACKEND ?? "memory").toLowerCase();
6584
+ let t = w.make(C.mergeAll(Fi.layer, Ii.Default)), n = await t.runPromise(Pi), r = await t.runPromise(Ii), i = (e.CACHE_BACKEND ?? "memory").toLowerCase();
6585
6585
  return await t.runPromise(r.addSink((e) => n.invalidateTag(e))), {
6586
6586
  service: n,
6587
6587
  invalidationBus: r,
@@ -6600,7 +6600,7 @@ ${a.join("\n\n")}\n`);
6600
6600
  }
6601
6601
  },
6602
6602
  cache: {
6603
- get: (e) => t.runPromise(n.get(e)).then((e) => w.getOrUndefined(e)),
6603
+ get: (e) => t.runPromise(n.get(e)).then((e) => T.getOrUndefined(e)),
6604
6604
  set: (e, r, i) => t.runPromise(n.set(e, r, i)),
6605
6605
  setWithTags: (e, r, i) => t.runPromise(n.setWithTags(e, r, i)),
6606
6606
  remove: (e) => t.runPromise(n.remove(e)),
@@ -6709,15 +6709,15 @@ ${a.join("\n\n")}\n`);
6709
6709
  take: 1
6710
6710
  }))[0], a = i?.subject?.tenantId ?? null, o = t.tenantId ?? null;
6711
6711
  if (i === void 0 || a !== o) throw new Kr({ reason: "not authorized for this workflow run" });
6712
- }, Nf = Vt.pipe(S.provide(f.layer)), Pf = (e) => {
6713
- let t = S.succeed(Pi, e.cacheService), n = S.succeed(Li, e.kvService), r = [
6712
+ }, Nf = Vt.pipe(C.provide(f.layer)), Pf = (e) => {
6713
+ let t = C.succeed(Pi, e.cacheService), n = C.succeed(Li, e.kvService), r = [
6714
6714
  e.analyticsLayer,
6715
6715
  t,
6716
6716
  n,
6717
6717
  ...e.pluginServices,
6718
6718
  ...e.userLayers
6719
6719
  ];
6720
- return S.mergeAll(...r);
6720
+ return C.mergeAll(...r);
6721
6721
  }, Ff = [
6722
6722
  mi,
6723
6723
  gi,
@@ -6729,12 +6729,12 @@ ${a.join("\n\n")}\n`);
6729
6729
  let r = new Set(t);
6730
6730
  if (n) for (let e of Ff) r.add(e.name);
6731
6731
  let i = {};
6732
- for (let [t, n] of Object.entries(e)) i[t] = r.has(t) ? (e) => n(e).pipe(D.take(1)) : n;
6732
+ for (let [t, n] of Object.entries(e)) i[t] = r.has(t) ? (e) => n(e).pipe(ee.take(1)) : n;
6733
6733
  return i;
6734
6734
  }, Lf = j({ scope: "voltro:dev:supervisor" }), Rf = /\.generated\./, zf = /\.([cm]?[jt]sx?|json)$/, Bf = (e) => {
6735
6735
  let t = r(e);
6736
6736
  return !Rf.test(t) && zf.test(t);
6737
- }, Vf = (e) => e.startsWith("node_modules") || e.startsWith(".framework") || e.startsWith(".turbo") || e.startsWith(".vite") || e.startsWith("dist") || e.startsWith(".git"), Hf = process.env.WATCH_POLL === "1" || process.env.CHOKIDAR_USEPOLLING === "1", Uf = 1e3, Wf = (e) => D.async((t) => {
6737
+ }, Vf = (e) => e.startsWith("node_modules") || e.startsWith(".framework") || e.startsWith(".turbo") || e.startsWith(".vite") || e.startsWith("dist") || e.startsWith(".git"), Hf = process.env.WATCH_POLL === "1" || process.env.CHOKIDAR_USEPOLLING === "1", Uf = 1e3, Wf = (e) => ee.async((t) => {
6738
6738
  let n = l(e), i = (e) => c(n, e), a = Vi(n, {
6739
6739
  persistent: !0,
6740
6740
  ignoreInitial: !0,
@@ -6792,17 +6792,17 @@ ${a.join("\n\n")}\n`);
6792
6792
  watcher: Hf ? "chokidar (polling)" : "chokidar (native)",
6793
6793
  hint: "WATCH=0 disables, WATCH_DEBUG=1 traces every event, WATCH_POLL=1 for bind-mounts (k8s/Docker)"
6794
6794
  });
6795
- let t = yield* T.make(w.none()), n = b.gen(function* () {
6795
+ let t = yield* E.make(T.none()), n = b.gen(function* () {
6796
6796
  let n = yield* b.fork(Gf(e.root));
6797
- yield* T.set(t, w.some(n));
6797
+ yield* E.set(t, T.some(n));
6798
6798
  }), r = b.gen(function* () {
6799
- let e = yield* T.get(t);
6800
- yield* w.match(e, {
6799
+ let e = yield* E.get(t);
6800
+ yield* T.match(e, {
6801
6801
  onNone: () => b.void,
6802
6802
  onSome: (e) => x.interrupt(e)
6803
- }), yield* T.set(t, w.none());
6803
+ }), yield* E.set(t, T.none());
6804
6804
  });
6805
- return yield* n, yield* Wf(e.root).pipe(D.debounce(y.millis(80)), D.runForEach((e) => b.gen(function* () {
6805
+ return yield* n, yield* Wf(e.root).pipe(ee.debounce(y.millis(80)), ee.runForEach((e) => b.gen(function* () {
6806
6806
  let t = Date.now();
6807
6807
  Lf.info("file changed — restarting", { file: e.file }), yield* r, yield* n, Lf.info("restart complete", { ms: Date.now() - t });
6808
6808
  }))), yield* b.never;
@@ -6821,7 +6821,7 @@ ${a.join("\n\n")}\n`);
6821
6821
  }), {
6822
6822
  spec: t,
6823
6823
  sink: n,
6824
- layer: S.succeed(ge, n),
6824
+ layer: C.succeed(ge, n),
6825
6825
  tables: t.tables ?? [],
6826
6826
  dispose: async () => {
6827
6827
  t.dispose && await b.runPromise(t.dispose(n).pipe(b.timeout("1200 millis"), b.ignore));
@@ -7430,7 +7430,7 @@ ${a.join("\n\n")}\n`);
7430
7430
  let r = n ?? 0, i = t === void 0 ? e.length : r + t;
7431
7431
  return e.slice(r, i);
7432
7432
  }, Fp = (e, t) => {
7433
- let n = E.decodeUnknownEither(e.output), r = [];
7433
+ let n = D.decodeUnknownEither(e.output), r = [];
7434
7434
  for (let e = 0; e < t.length; e++) {
7435
7435
  let i = n(t[e]);
7436
7436
  if (i._tag === "Left") {
@@ -8132,7 +8132,7 @@ ${a.join("\n\n")}\n`);
8132
8132
  }
8133
8133
  let n = e.pluginConfigs?.[t.name];
8134
8134
  try {
8135
- let e = E.decodeUnknownSync(t.configSchema)(n);
8135
+ let e = D.decodeUnknownSync(t.configSchema)(n);
8136
8136
  a.set(t.name, e);
8137
8137
  } catch (e) {
8138
8138
  throw Error(`plugin "${t.name}" config failed validation: ${e.message ?? String(e)}`);
@@ -8468,7 +8468,7 @@ ${a.join("\n\n")}\n`);
8468
8468
  }), Im = (e, t) => {
8469
8469
  let n = [];
8470
8470
  for (let r of e) typeof r.onWorkflowStep == "function" && n.push(Fm(r.name, r.onWorkflowStep, t));
8471
- return n.length === 0 ? S.succeed(Un, { interceptor: ((e) => e) }) : S.succeed(Un, { interceptor: ((e, t) => n.reduceRight((e, n) => n(e, t), e)) });
8471
+ return n.length === 0 ? C.succeed(Un, { interceptor: ((e) => e) }) : C.succeed(Un, { interceptor: ((e, t) => n.reduceRight((e, n) => n(e, t), e)) });
8472
8472
  }, Lm = (e) => {
8473
8473
  if (!e) return;
8474
8474
  let t = e.workflowName ?? e.tag, n = [];
@@ -8910,10 +8910,10 @@ ${a.join("\n\n")}\n`);
8910
8910
  onStrategyFailed: ({ strategyId: e, reason: t }) => {
8911
8911
  J.warn(`auth strategy "${e}" rejected request: ${t}`);
8912
8912
  }
8913
- }), Ch = (e) => S.succeed(Wr, Wr.of(({ headers: t, clientId: n }) => b.promise(async () => We(n) || e({
8913
+ }), Ch = (e) => C.succeed(Wr, Wr.of(({ headers: t, clientId: n }) => b.promise(async () => We(n) || e({
8914
8914
  headers: t,
8915
8915
  clientId: n
8916
- })))), wh = S.succeed(Gr, Gr.of(({ clientId: e }) => b.succeed({ clientId: e }))), Th = (e) => {
8916
+ })))), wh = C.succeed(Gr, Gr.of(({ clientId: e }) => b.succeed({ clientId: e }))), Th = (e) => {
8917
8917
  if (g.isCause(e)) return e;
8918
8918
  if (typeof e != "object" || !e) return;
8919
8919
  for (let t of Object.getOwnPropertySymbols(e)) if (t.description === "effect/Runtime/FiberFailure/Cause") {
@@ -8926,9 +8926,9 @@ ${a.join("\n\n")}\n`);
8926
8926
  let t = Th(e);
8927
8927
  if (t === void 0) return;
8928
8928
  let n = g.failureOption(t);
8929
- if (w.isSome(n)) return n.value;
8929
+ if (T.isSome(n)) return n.value;
8930
8930
  let r = g.dieOption(t);
8931
- if (w.isSome(r)) return r.value;
8931
+ if (T.isSome(r)) return r.value;
8932
8932
  }, Dh = (e) => {
8933
8933
  if (e == null) return { message: "unknown error" };
8934
8934
  let t = Eh(e);
@@ -9355,7 +9355,7 @@ ${a.join("\n\n")}\n`);
9355
9355
  }
9356
9356
  }
9357
9357
  v ||= ht();
9358
- let b = bg(p.length), x = R(), ee = x && b.length > 0 ? Ze({
9358
+ let b = bg(p.length), x = R(), S = x && b.length > 0 ? Ze({
9359
9359
  currentRegion: x,
9360
9360
  replicaRegions: xg(h, b),
9361
9361
  inner: xt()
@@ -9372,7 +9372,7 @@ ${a.join("\n\n")}\n`);
9372
9372
  replicationAdapter: m,
9373
9373
  rywPolicy: g,
9374
9374
  rywStore: v,
9375
- replicaSelector: ee
9375
+ replicaSelector: S
9376
9376
  });
9377
9377
  }, vg = async (e, t, n, r) => {
9378
9378
  let i = Qi(t?.plugins ?? []), a = n === "postgres" || n === "mysql" || n === "mariadb", o = n === "postgres" ? "LISTEN/NOTIFY" : "binlog CDC";
@@ -9445,20 +9445,20 @@ ${a.join("\n\n")}\n`);
9445
9445
  });
9446
9446
  let v = await Uh(i);
9447
9447
  J.info(`discovered ${v.length} files`, { count: v.length });
9448
- let y = await Xm(o?.plugins ?? [], o?.name ?? r(i), i), x = (o?.plugins ?? []).flatMap((e) => (e.errorSchemas ?? []).map((e) => e.import)), w = (o?.plugins ?? []).flatMap((e) => (e.rpcClientDescriptors ?? []).map((e) => ({
9448
+ let y = await Xm(o?.plugins ?? [], o?.name ?? r(i), i), x = (o?.plugins ?? []).flatMap((e) => (e.errorSchemas ?? []).map((e) => e.import)), T = (o?.plugins ?? []).flatMap((e) => (e.rpcClientDescriptors ?? []).map((e) => ({
9449
9449
  tag: e.tag,
9450
9450
  kind: e.kind,
9451
9451
  module: e.import.module,
9452
9452
  name: e.import.name
9453
- }))), T = await bd({
9453
+ }))), E = await bd({
9454
9454
  root: i,
9455
9455
  ...y.length > 0 ? { pluginContributions: y } : {},
9456
9456
  ...x.length > 0 ? { pluginErrorImports: x } : {},
9457
- ...w.length > 0 ? { pluginRpcImports: w } : {},
9457
+ ...T.length > 0 ? { pluginRpcImports: T } : {},
9458
9458
  ...o?.name === void 0 ? {} : { apiName: o.name }
9459
9459
  });
9460
- T ? (J.info("codegen wrote rpcGroup", { path: c(i, T) }), await nd(T)) : J.debug("codegen skipped — no descriptors discovered");
9461
- let E = gg(o ?? null), D = E === "mariadb" ? "mariadb" : E === "mssql" ? "mssql" : void 0, O = D !== void 0 && (process.env.CDC ?? "1") !== "0", { queries: k, mutations: A, actions: j, streams: re, workflows: M, workflowWorkers: N, eventTriggers: ie, schedules: F, tables: ae, featureMix: oe, tenantScopedTables: se, softDeleteScopedTables: ce } = await sg(v, { cdc: O }), le = M.length > 0 || ie.length > 0, I = await cg(i);
9460
+ E ? (J.info("codegen wrote rpcGroup", { path: c(i, E) }), await nd(E)) : J.debug("codegen skipped — no descriptors discovered");
9461
+ let D = gg(o ?? null), ee = D === "mariadb" ? "mariadb" : D === "mssql" ? "mssql" : void 0, O = ee !== void 0 && (process.env.CDC ?? "1") !== "0", { queries: k, mutations: A, actions: j, streams: re, workflows: M, workflowWorkers: N, eventTriggers: ie, schedules: F, tables: ae, featureMix: oe, tenantScopedTables: se, softDeleteScopedTables: ce } = await sg(v, { cdc: O }), le = M.length > 0 || ie.length > 0, I = await cg(i);
9462
9462
  Ft(At(I?.secrets)), await zo({
9463
9463
  rawEnv: I?.env,
9464
9464
  appType: "api",
@@ -9470,7 +9470,7 @@ ${a.join("\n\n")}\n`);
9470
9470
  mix: oe,
9471
9471
  plugins: I?.plugins ?? [],
9472
9472
  cdc: O,
9473
- ...D ? { cdcDialect: D } : {}
9473
+ ...ee ? { cdcDialect: ee } : {}
9474
9474
  }), ye = I?.analytics?.tables ?? [], L = (() => {
9475
9475
  let e = new Set(ae.map((e) => e.tableName)), t = [...ae];
9476
9476
  for (let n of [...ve, ...ye]) {
@@ -9617,7 +9617,7 @@ ${a.join("\n\n")}\n`);
9617
9617
  let kt = gg(I), jt = process.env.POD_NAME ?? process.env.HOSTNAME ?? `dev-${process.pid}`, Nt, Pt;
9618
9618
  if (kt !== "memory") {
9619
9619
  let e = await mg(kt);
9620
- Nt = C.make(e.makeSqlLayer(lg())), Pt = await Nt.runPromise(z.SqlClient);
9620
+ Nt = w.make(e.makeSqlLayer(lg())), Pt = await Nt.runPromise(z.SqlClient);
9621
9621
  }
9622
9622
  let Bt = rt({
9623
9623
  coordinator: [
@@ -10024,7 +10024,7 @@ ${a.join("\n\n")}\n`);
10024
10024
  ...re.map((e) => ai(e.descriptor, Dr)),
10025
10025
  ...Cr,
10026
10026
  ...Tr
10027
- ], Ar = Vn.make(...Or).middleware(Wr).middleware(Gr), jr = I?.layers ?? [], Mr = (I?.plugins ?? []).map((e) => e.services).filter((e) => e !== void 0), Nr = S.succeed(me, Dn.registry), Pr = S.mergeAll(Pf({
10027
+ ], Ar = Vn.make(...Or).middleware(Wr).middleware(Gr), jr = I?.layers ?? [], Mr = (I?.plugins ?? []).map((e) => e.services).filter((e) => e !== void 0), Nr = C.succeed(me, Dn.registry), Pr = C.mergeAll(Pf({
10028
10028
  analyticsLayer: rn.layer,
10029
10029
  cacheService: Wt,
10030
10030
  kvService: $t,
@@ -10058,7 +10058,7 @@ ${a.join("\n\n")}\n`);
10058
10058
  kv: Qt
10059
10059
  }, t = qn.outgoing.map((e) => e.descriptor);
10060
10060
  Lr = Wi(e, async (n) => {
10061
- let r = Ki.execute(n).pipe(b.provide(Ki.toLayer(Ui(e, { events: t })).pipe(S.provideMerge(Fn))));
10061
+ let r = Ki.execute(n).pipe(b.provide(Ki.toLayer(Ui(e, { events: t })).pipe(C.provideMerge(Fn))));
10062
10062
  b.runPromise(r).catch((e) => {
10063
10063
  Gn.error("deliverWebhook workflow crashed", {
10064
10064
  deliveryId: n.deliveryId,
@@ -10391,7 +10391,7 @@ ${a.join("\n\n")}\n`);
10391
10391
  }, Hi = [...mt(M, {
10392
10392
  buildContext: Di,
10393
10393
  resolveStartContext: Un
10394
- }, (e, t, n) => Vi(e.definition.name, e.definition, t, n)), ...N], qi = Hi.length > 0 ? S.mergeAll(...Hi) : S.empty, Yi = C.make(qi.pipe(S.provideMerge(Fn)));
10394
+ }, (e, t, n) => Vi(e.definition.name, e.definition, t, n)), ...N], qi = Hi.length > 0 ? C.mergeAll(...Hi) : C.empty, Yi = w.make(qi.pipe(C.provideMerge(Fn)));
10395
10395
  process.on("beforeExit", () => {
10396
10396
  Yi.dispose();
10397
10397
  }), In = M.length > 0 ? ft({
@@ -10428,7 +10428,7 @@ ${a.join("\n\n")}\n`);
10428
10428
  runPromise: (e) => Yi.runPromise(e)
10429
10429
  }, e, t)
10430
10430
  }) : void 0;
10431
- let Zi = S.mergeAll(Ar.toLayer(Vr), ge, wh), Qi = If(Vr, k.map((e) => e.descriptor.name), le), $i = S.mergeAll(Ar.toLayer(Qi), ge, wh), ea = On, ta = (ea === "postgres" || ea === "mysql" || ea === "mariadb" || ea === "mssql") && (process.env.CDC ?? "1") !== "0";
10431
+ let Zi = C.mergeAll(Ar.toLayer(Vr), ge, wh), Qi = If(Vr, k.map((e) => e.descriptor.name), le), $i = C.mergeAll(Ar.toLayer(Qi), ge, wh), ea = On, ta = (ea === "postgres" || ea === "mysql" || ea === "mariadb" || ea === "mssql") && (process.env.CDC ?? "1") !== "0";
10432
10432
  if (ea === "postgres" && hf()) {
10433
10433
  let e = bf({
10434
10434
  store: R,
@@ -10445,7 +10445,7 @@ ${a.join("\n\n")}\n`);
10445
10445
  });
10446
10446
  let ra = (e) => {
10447
10447
  try {
10448
- return ee.make(e);
10448
+ return S.make(e);
10449
10449
  } catch {
10450
10450
  return;
10451
10451
  }
@@ -11902,7 +11902,7 @@ ${a.join("\n\n")}\n`);
11902
11902
  kv: r
11903
11903
  }, a = _.outgoing.map((e) => e.descriptor);
11904
11904
  g = Wi(i, async (e) => {
11905
- let n = Ki.execute(e).pipe(b.provide(Ki.toLayer(Ui(i, { events: a })).pipe(S.provideMerge(t))));
11905
+ let n = Ki.execute(e).pipe(b.provide(Ki.toLayer(Ui(i, { events: a })).pipe(C.provideMerge(t))));
11906
11906
  b.runPromise(n).catch((t) => {
11907
11907
  h.error("deliverWebhook workflow crashed", {
11908
11908
  deliveryId: e.deliveryId,
@@ -11941,34 +11941,34 @@ ${a.join("\n\n")}\n`);
11941
11941
  ...d === void 0 ? {} : { workflowsProxy: d },
11942
11942
  eventTriggers: e.discovered.eventTriggers ?? [],
11943
11943
  namespaceIsolationOn: m
11944
- }), x = S.succeed(me, Hp), ee = (t, n) => {
11944
+ }), x = C.succeed(me, Hp), S = (t, n) => {
11945
11945
  let r = t.pipe(b.provide(it(n)));
11946
11946
  return Mt((e.baseLayer ? r.pipe(b.provide(e.baseLayer)) : r).pipe(b.provide(x)));
11947
- }, w = st({
11947
+ }, T = st({
11948
11948
  store: e.store,
11949
11949
  buildContext: (e, t, n) => y(e, t, n),
11950
- runEffect: ee,
11950
+ runEffect: S,
11951
11951
  undoCapture: fm()
11952
- }), T = dm(), E = Qe({
11952
+ }), E = dm(), D = Qe({
11953
11953
  buildContext: (e) => y(e),
11954
- runEffect: ee
11955
- }), D = lt({
11954
+ runEffect: S
11955
+ }), ee = lt({
11956
11956
  buildContext: (e) => y(e),
11957
11957
  finalize: (t, n) => Oe(ke(t, e.tenantScopedTables, n.subject.tenantId), e.softDeleteScopedTables),
11958
11958
  provideEffect: (e, t) => e.pipe(b.provide(it(t)))
11959
11959
  }), O = {};
11960
- for (let n of [...e.discovered.queries, ...T.queries]) O[n.descriptor.name] = (e) => Fe(D(n, e), t, `subscription.${n.descriptor.name}`);
11961
- for (let t of [...e.discovered.mutations, ...T.mutations]) O[t.descriptor.name] = (e) => Ne(async (e, n) => w(t, e, n), e, `mutation.${t.descriptor.name}`);
11962
- for (let t of e.discovered.actions) O[t.descriptor.name] = (e) => Ne(async (e, n) => E(t, e, n), e, `action.${t.descriptor.name}`);
11960
+ for (let n of [...e.discovered.queries, ...E.queries]) O[n.descriptor.name] = (e) => Fe(ee(n, e), t, `subscription.${n.descriptor.name}`);
11961
+ for (let t of [...e.discovered.mutations, ...E.mutations]) O[t.descriptor.name] = (e) => Ne(async (e, n) => T(t, e, n), e, `mutation.${t.descriptor.name}`);
11962
+ for (let t of e.discovered.actions) O[t.descriptor.name] = (e) => Ne(async (e, n) => D(t, e, n), e, `action.${t.descriptor.name}`);
11963
11963
  let k = () => `public-${Math.random().toString(36).slice(2, 10)}`, A = [...e.discovered.mutations.filter((e) => e.descriptor.publicApi !== void 0).map((e) => ({
11964
11964
  descriptor: e.descriptor,
11965
- invoke: (t, n) => w(e, t, {
11965
+ invoke: (t, n) => T(e, t, {
11966
11966
  subject: n.subject,
11967
11967
  traceId: k()
11968
11968
  })
11969
11969
  })), ...e.discovered.actions.filter((e) => e.descriptor.publicApi !== void 0).map((e) => ({
11970
11970
  descriptor: e.descriptor,
11971
- invoke: (t, n) => E(e, t, {
11971
+ invoke: (t, n) => D(e, t, {
11972
11972
  subject: n.subject,
11973
11973
  traceId: k()
11974
11974
  })
@@ -12025,7 +12025,7 @@ ${a.join("\n\n")}\n`);
12025
12025
  source: "workflow-rpc"
12026
12026
  }).start(t.definition.name, e);
12027
12027
  }, e, `workflow.${t.definition.name}`);
12028
- f && (O[mi.name] = (e) => Fe(D({
12028
+ f && (O[mi.name] = (e) => Fe(ee({
12029
12029
  descriptor: mi,
12030
12030
  executor: (e) => {
12031
12031
  let t = e.id;
@@ -12041,7 +12041,7 @@ ${a.join("\n\n")}\n`);
12041
12041
  projection: void 0
12042
12042
  };
12043
12043
  }
12044
- }, e), t, `subscription.${mi.name}`), O[gi.name] = (e) => Fe(D({
12044
+ }, e), t, `subscription.${mi.name}`), O[gi.name] = (e) => Fe(ee({
12045
12045
  descriptor: gi,
12046
12046
  executor: (e) => {
12047
12047
  let t = e, n = [...t.tag === void 0 ? [] : [B("tag", t.tag)], ...t.status === void 0 ? [] : [B("status", t.status)]], r = Number.isFinite(t.limit) && t.limit !== void 0 ? Math.min(Math.max(Math.floor(t.limit), 1), 500) : 100;
@@ -12057,7 +12057,7 @@ ${a.join("\n\n")}\n`);
12057
12057
  projection: void 0
12058
12058
  };
12059
12059
  }
12060
- }, e), t, `subscription.${gi.name}`), O[hi.name] = (e) => Fe(D({
12060
+ }, e), t, `subscription.${gi.name}`), O[hi.name] = (e) => Fe(ee({
12061
12061
  descriptor: hi,
12062
12062
  executor: (e) => {
12063
12063
  let t = e.runId;
@@ -12073,7 +12073,7 @@ ${a.join("\n\n")}\n`);
12073
12073
  projection: void 0
12074
12074
  };
12075
12075
  }
12076
- }, e), t, `subscription.${hi.name}`), O[pi.name] = (e) => Fe(D({
12076
+ }, e), t, `subscription.${hi.name}`), O[pi.name] = (e) => Fe(ee({
12077
12077
  descriptor: pi,
12078
12078
  executor: (e) => {
12079
12079
  let t = e.runId;
@@ -12089,7 +12089,7 @@ ${a.join("\n\n")}\n`);
12089
12089
  projection: void 0
12090
12090
  };
12091
12091
  }
12092
- }, e), t, `subscription.${pi.name}`), O[ui.name] = (e) => Fe(D({
12092
+ }, e), t, `subscription.${pi.name}`), O[ui.name] = (e) => Fe(ee({
12093
12093
  descriptor: ui,
12094
12094
  executor: (e) => {
12095
12095
  let t = e;
@@ -12105,7 +12105,7 @@ ${a.join("\n\n")}\n`);
12105
12105
  projection: void 0
12106
12106
  };
12107
12107
  }
12108
- }, e), t, `subscription.${ui.name}`), O[di.name] = (e) => Fe(D({
12108
+ }, e), t, `subscription.${ui.name}`), O[di.name] = (e) => Fe(ee({
12109
12109
  descriptor: di,
12110
12110
  executor: (e) => {
12111
12111
  let t = e.eventId;
@@ -12138,8 +12138,8 @@ ${a.join("\n\n")}\n`);
12138
12138
  ...e.discovered.queries.map((e) => ii(e.descriptor)),
12139
12139
  ...e.discovered.mutations.map((e) => ni(e.descriptor)),
12140
12140
  ...e.discovered.actions.map((e) => Jr(e.descriptor)),
12141
- ...T.queries.map((e) => ii(e.descriptor)),
12142
- ...T.mutations.map((e) => ni(e.descriptor)),
12141
+ ...E.queries.map((e) => ii(e.descriptor)),
12142
+ ...E.mutations.map((e) => ni(e.descriptor)),
12143
12143
  ...(e.discovered.streams ?? []).map((e) => ai(e.descriptor)),
12144
12144
  ...(e.discovered.workflows ?? []).map((e) => Wt(e.definition)),
12145
12145
  ...f ? [
@@ -12154,7 +12154,7 @@ ${a.join("\n\n")}\n`);
12154
12154
  Jr(_i),
12155
12155
  Jr(vi)
12156
12156
  ] : []
12157
- ], ie = Vn.make(...N).middleware(Wr).middleware(Gr), P = S.succeed(Wr, Wr.of(({ headers: t, clientId: n }) => b.promise(() => e.resolveSubject(t, n)))), F = S.succeed(Gr, Gr.of(({ clientId: e }) => b.succeed({ clientId: e }))), ae = e.dormancyTenantId ?? "default", oe = e.dormancy === "sleep" ? {
12157
+ ], ie = Vn.make(...N).middleware(Wr).middleware(Gr), P = C.succeed(Wr, Wr.of(({ headers: t, clientId: n }) => b.promise(() => e.resolveSubject(t, n)))), F = C.succeed(Gr, Gr.of(({ clientId: e }) => b.succeed({ clientId: e }))), ae = e.dormancyTenantId ?? "default", oe = e.dormancy === "sleep" ? {
12158
12158
  register: (t, n, r) => Ot(e.store, {
12159
12159
  tenantId: r ?? ae,
12160
12160
  kind: "workflow",
@@ -12239,8 +12239,8 @@ ${a.join("\n\n")}\n`);
12239
12239
  onParentClose: ({ executionId: e, status: t }) => le(e, t),
12240
12240
  recorder: ce
12241
12241
  }, n);
12242
- }), ...e.discovered.workflowWorkers ?? []], de = ue.length > 0 ? S.mergeAll(...ue) : S.empty;
12243
- ((e.discovered.workflows?.length ?? 0) > 0 || (e.discovered.workflowWorkers?.length ?? 0) > 0 || e.scheduleCoordination === "cluster") && e.workflowEngineLayer !== void 0 && (a = C.make(de.pipe(S.provideMerge(e.workflowEngineLayer))), await a.runPromise(b.void), i = (e.discovered.workflows?.length ?? 0) > 0 ? ft({
12242
+ }), ...e.discovered.workflowWorkers ?? []], de = ue.length > 0 ? C.mergeAll(...ue) : C.empty;
12243
+ ((e.discovered.workflows?.length ?? 0) > 0 || (e.discovered.workflowWorkers?.length ?? 0) > 0 || e.scheduleCoordination === "cluster") && e.workflowEngineLayer !== void 0 && (a = w.make(de.pipe(C.provideMerge(e.workflowEngineLayer))), await a.runPromise(b.void), i = (e.discovered.workflows?.length ?? 0) > 0 ? ft({
12244
12244
  workflows: e.discovered.workflows ?? [],
12245
12245
  runEffect: (e) => a.runPromise(e),
12246
12246
  rememberStartContext: l,
@@ -12274,7 +12274,7 @@ ${a.join("\n\n")}\n`);
12274
12274
  runPromise: (e) => a.runPromise(e)
12275
12275
  }, t, n)
12276
12276
  }) : void 0);
12277
- let fe = S.mergeAll(ie.toLayer(O), P, F), pe = If(O, e.discovered.queries.map((e) => e.descriptor.name), f), he = S.mergeAll(ie.toLayer(pe), P, F), ge = e.observability, ve = await Ie({
12277
+ let fe = C.mergeAll(ie.toLayer(O), P, F), pe = If(O, e.discovered.queries.map((e) => e.descriptor.name), f), he = C.mergeAll(ie.toLayer(pe), P, F), ge = e.observability, ve = await Ie({
12278
12278
  ...ge && ge.spanProcessors.length > 0 ? { extraSpanProcessors: ge.spanProcessors } : {},
12279
12279
  ...ge && ge.metricReaders.length > 0 ? { extraMetricReaders: ge.metricReaders } : {},
12280
12280
  ...ge && Object.keys(ge.resourceAttributes).length > 0 ? { resourceAttributes: ge.resourceAttributes } : {},
@@ -12343,7 +12343,7 @@ ${a.join("\n\n")}\n`);
12343
12343
  }
12344
12344
  await yp(n.agent, r, {
12345
12345
  findAgentSend: (t) => e.discovered.actions.find((e) => e.descriptor.name === `${t}.send`),
12346
- runAction: (e, t, n) => Promise.resolve(E(e, t, n)),
12346
+ runAction: (e, t, n) => Promise.resolve(D(e, t, n)),
12347
12347
  makeSubject: (e) => Yr(e),
12348
12348
  now: () => Date.now(),
12349
12349
  log: t
@@ -12370,7 +12370,7 @@ ${a.join("\n\n")}\n`);
12370
12370
  ...e.analytics === void 0 ? {} : { analytics: e.analytics },
12371
12371
  ...e.aggregateStorage === void 0 ? {} : { storage: e.aggregateStorage },
12372
12372
  ...e.aggregateCoordinator === void 0 ? {} : { coordinator: e.aggregateCoordinator }
12373
- }), x = S.succeed(me, we.registry)), ye = !0, {
12373
+ }), x = C.succeed(me, we.registry)), ye = !0, {
12374
12374
  dispatcher: t,
12375
12375
  server: be,
12376
12376
  scheduler: o,
@@ -12417,11 +12417,11 @@ ${a.join("\n\n")}\n`);
12417
12417
  }
12418
12418
  let _ = ut(m), v = await _g(r, void 0);
12419
12419
  r?.cache && !process.env.CACHE_BACKEND && (process.env.CACHE_BACKEND = r.cache), r?.cacheRedisUrl && !process.env.CACHE_REDIS_URL && (process.env.CACHE_REDIS_URL = r.cacheRedisUrl), r?.cacheRedisDriver && !process.env.CACHE_REDIS_DRIVER && (process.env.CACHE_REDIS_DRIVER = r.cacheRedisDriver), r?.cacheKeyPrefix && !process.env.CACHE_KEY_PREFIX && (process.env.CACHE_KEY_PREFIX = r.cacheKeyPrefix);
12420
- let { service: y, invalidationBus: x, snapshotCache: ee, cache: w, backend: T, dispose: E } = await kf({ env: process.env });
12421
- Y.info(`cache backend resolved: ${T}` + (T === "redis" ? ` (driver ${process.env.CACHE_REDIS_DRIVER ?? "resp"})` : " — in-process, not cross-instance")), v.onChange((e) => {
12420
+ let { service: y, invalidationBus: x, snapshotCache: S, cache: T, backend: E, dispose: D } = await kf({ env: process.env });
12421
+ Y.info(`cache backend resolved: ${E}` + (E === "redis" ? ` (driver ${process.env.CACHE_REDIS_DRIVER ?? "resp"})` : " — in-process, not cross-instance")), v.onChange((e) => {
12422
12422
  b.runFork(x.publish(e.table));
12423
12423
  }), r?.kv && !process.env.KV_BACKEND && (process.env.KV_BACKEND = r.kv), r?.kvRedisUrl && !process.env.KV_REDIS_URL && (process.env.KV_REDIS_URL = r.kvRedisUrl), r?.kvKeyPrefix && !process.env.KV_KEY_PREFIX && (process.env.KV_KEY_PREFIX = r.kvKeyPrefix);
12424
- let { kv: D, service: O } = await tt({ store: v }), k = je({
12424
+ let { kv: ee, service: O } = await tt({ store: v }), k = je({
12425
12425
  store: v,
12426
12426
  sink: p.sink,
12427
12427
  log: Y
@@ -12429,7 +12429,7 @@ ${a.join("\n\n")}\n`);
12429
12429
  store: v,
12430
12430
  dialect: i
12431
12431
  }), j = r?.plugins ?? [], te = process.env.POD_NAME ?? process.env.HOSTNAME ?? `serve-${process.pid}`, ne, re;
12432
- i !== "memory" && (ne = C.make((await mg(i)).makeSqlLayer(lg())), re = await ne.runPromise(z.SqlClient));
12432
+ i !== "memory" && (ne = w.make((await mg(i)).makeSqlLayer(lg())), re = await ne.runPromise(z.SqlClient));
12433
12433
  let M = rt({
12434
12434
  coordinator: [
12435
12435
  "postgres",
@@ -12485,7 +12485,7 @@ ${a.join("\n\n")}\n`);
12485
12485
  clientId: -1
12486
12486
  }),
12487
12487
  ...pe ? { idempotency: pe } : {}
12488
- }) : [], he = j.map((e) => e.services).filter((e) => e !== void 0), ge = S.mergeAll(Pf({
12488
+ }) : [], he = j.map((e) => e.services).filter((e) => e !== void 0), ge = C.mergeAll(Pf({
12489
12489
  analyticsLayer: p.layer,
12490
12490
  cacheService: y,
12491
12491
  kvService: O,
@@ -12559,9 +12559,9 @@ ${a.join("\n\n")}\n`);
12559
12559
  aggregateStorage: Pe,
12560
12560
  aggregateCoordinator: Fe,
12561
12561
  store: v,
12562
- kv: D,
12563
- cache: w,
12564
- snapshotCache: ee,
12562
+ kv: ee,
12563
+ cache: T,
12564
+ snapshotCache: S,
12565
12565
  schemaRegistry: _,
12566
12566
  tenantScopedTables: c.tenantScopedTables,
12567
12567
  softDeleteScopedTables: c.softDeleteScopedTables,
@@ -12601,7 +12601,7 @@ ${a.join("\n\n")}\n`);
12601
12601
  });
12602
12602
  let We = () => {
12603
12603
  for (let e of N) e.stop();
12604
- k.detach(), A.stop(), E(), ne?.dispose(), Promise.resolve(F.deactivate()).then(() => oe?.close()).then(() => p.dispose()).then(() => He.close()).then(() => v.close?.()).then(() => process.exit(0));
12604
+ k.detach(), A.stop(), D(), ne?.dispose(), Promise.resolve(F.deactivate()).then(() => oe?.close()).then(() => p.dispose()).then(() => He.close()).then(() => v.close?.()).then(() => process.exit(0));
12605
12605
  };
12606
12606
  return process.on("SIGINT", We), process.on("SIGTERM", We), await new Promise(() => {}), 0;
12607
12607
  }, Jg = (e, t) => {
@@ -13045,7 +13045,7 @@ ${a.join("\n\n")}\n`);
13045
13045
  if (t === void 0) return y_();
13046
13046
  let r = (process.env.CACHE_BACKEND ?? "memory").toLowerCase();
13047
13047
  if (r !== "redis" && (t === "flush" || t === "invalidate")) return console.error(`voltro cache ${t}: CACHE_BACKEND=${r} is per-process — the CLI cannot reach the dev server's in-memory cache.`), console.error(" Use CACHE_BACKEND=redis (a shared backend) to flush/invalidate from the CLI."), 1;
13048
- let i = C.make(Fi.layer);
13048
+ let i = w.make(Fi.layer);
13049
13049
  try {
13050
13050
  switch (t) {
13051
13051
  case "status": {
@@ -16195,7 +16195,7 @@ replicas = 1
16195
16195
  }, Qx = (e) => Or(e, {
16196
16196
  table: Pr,
16197
16197
  chunkSize: 500
16198
- }).pipe(D.map((e) => ({
16198
+ }).pipe(ee.map((e) => ({
16199
16199
  key: String(e.key),
16200
16200
  contentType: String(e.contentType ?? "application/octet-stream"),
16201
16201
  size: Number(e.size ?? 0)