@voltro/cli 0.56.0 → 0.58.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/CHANGELOG.md +395 -0
  2. package/dist/apiBuild-CDE4NXNi.js +2 -0
  3. package/dist/{apiBuild-Bdaetr37.js → apiBuild-CkpsCqIu.js} +2 -2
  4. package/dist/bin.js +1 -1
  5. package/dist/build-51qBWfYY.js +981 -0
  6. package/dist/{checkCommand-D0QV_zM_.js → checkCommand-C1EbNmwl.js} +1 -1
  7. package/dist/{checkCommand-CAwFXrxA.js → checkCommand-C30J2F18.js} +4 -4
  8. package/dist/{codegenCommand-CidbQzbv.js → codegenCommand-kS3Twuc9.js} +12 -12
  9. package/dist/{codemodRunner-BlQPfjzA.js → codemodRunner-BKjCwGiN.js} +1127 -895
  10. package/dist/{commands-CWjfThXv.js → commands-DowWkYtd.js} +25 -25
  11. package/dist/{dashboardCommand-BekcY5Ls.js → dashboardCommand-gG1y4PFG.js} +3 -3
  12. package/dist/{dataCommand-2pccgbIy.js → dataCommand-hNOGKz4K.js} +7 -7
  13. package/dist/{dbCommand-DpK_vQET.js → dbCommand-CMAIz-Bf.js} +3 -3
  14. package/dist/dbCommand-DHi_RuDl.js +2 -0
  15. package/dist/{dev-Dw263KPu.js → dev-Ce2gEziv.js} +2411 -2391
  16. package/dist/dev-Dff_pdik.js +3 -0
  17. package/dist/{doctorCommand-aR_bFmIi.js → doctorCommand-5ULMpL10.js} +652 -289
  18. package/dist/doctorCommand-B8H2MYCE.js +2 -0
  19. package/dist/{dormancyCommand-eXTQMbHU.js → dormancyCommand-DYgI0Kf-.js} +3 -3
  20. package/dist/{embeddingsCommand-CTmiQvwa.js → embeddingsCommand-yJivQSrI.js} +2 -2
  21. package/dist/emptyResultHeadline-Csa5fZOF.js +18 -0
  22. package/dist/{envCommand-BDUgV7EM.js → envCommand-ORJUf8r_.js} +2 -2
  23. package/dist/{evolveCommand-YV8qW1LU.js → evolveCommand-DTawtTxf.js} +2 -2
  24. package/dist/frameworkTableAssembly-B96WCNJA.js +2 -0
  25. package/dist/{frameworkTableAssembly-DNOFXfEQ.js → frameworkTableAssembly-vfkzuzEo.js} +104 -85
  26. package/dist/index.js +1 -1
  27. package/dist/{infoCommand-BjVXpMlP.js → infoCommand-BFksHunl.js} +1 -1
  28. package/dist/inspect-CZvsmp8t.js +2 -0
  29. package/dist/{inspect-CNYvNXPU.js → inspect-PcC5J-Dl.js} +74 -59
  30. package/dist/{logsCmd-BU8uCdys.js → logsCmd-C5y9HyrG.js} +58 -53
  31. package/dist/manifestBuild-AUh31bFU.js +2 -0
  32. package/dist/{manifestBuild-CEkjfpwc.js → manifestBuild-BwiS4iYm.js} +1 -1
  33. package/dist/{migrate-SICulyz1.js → migrate-DtC3lu7H.js} +4 -4
  34. package/dist/{probeCommand-6HxEkNDG.js → probeCommand-BUYzc0CT.js} +1 -1
  35. package/dist/{runtimeTrace-DgYMc09E.js → runtimeTrace-BUk5zMXY.js} +1 -1
  36. package/dist/{sdkgen-PY-umd6O.js → sdkgen-CAhmmbjx.js} +1 -1
  37. package/dist/serveCommand-BUXUtSF5.js +2 -0
  38. package/dist/serveCommand-DhtC7WBq.js +2545 -0
  39. package/dist/serveEntry.js +1 -1
  40. package/dist/{start-BFQQkL1i.js → start-C75w6ftA.js} +1 -1
  41. package/dist/{start-B9NGB8gn.js → start-DNtIlBcn.js} +527 -502
  42. package/dist/startEntry.js +1 -1
  43. package/dist/{tracesCmd-BWYDqMy6.js → tracesCmd-C1qKa94g.js} +68 -63
  44. package/dist/{updateCommand-C9n_Z_oG.js → updateCommand-CtuD5r1t.js} +1 -1
  45. package/dist/updateCommand-eVKVHj3N.js +2 -0
  46. package/dist/webDev-Bzb8ZFus.js +2 -0
  47. package/dist/{webDev-C53hJdcL.js → webDev-CBN9KkyQ.js} +949 -834
  48. package/dist/{webhooksCommand-uuPu8qQX.js → webhooksCommand-BPJQOGTe.js} +2 -2
  49. package/package.json +61 -19
  50. package/templates/AGENTS.md +1 -1
  51. package/templates/agent-docs/_index.md +1 -1
  52. package/templates/agent-docs/_manifest.json +2 -2
  53. package/templates/agent-docs/ai.md +175 -1
  54. package/templates/agent-docs/authentication.md +68 -19
  55. package/templates/agent-docs/cli.md +48 -0
  56. package/templates/agent-docs/configuration.md +29 -4
  57. package/templates/agent-docs/data.md +30 -0
  58. package/templates/agent-docs/database/scaling.md +10 -1
  59. package/templates/agent-docs/database/transactions.md +48 -0
  60. package/templates/agent-docs/deployment.md +22 -0
  61. package/templates/agent-docs/observability.md +13 -2
  62. package/templates/agent-docs/plugins/audit.md +21 -5
  63. package/templates/agent-docs/plugins/auth-supabase.md +21 -0
  64. package/templates/agent-docs/plugins/billing.md +2 -0
  65. package/templates/agent-docs/plugins/sentry.md +91 -8
  66. package/templates/agent-docs/reference.md +1 -0
  67. package/templates/agent-docs/scheduling.md +23 -0
  68. package/templates/agent-docs/schema-driven-ui.md +110 -0
  69. package/templates/agent-docs/whats-new.md +103 -399
  70. package/templates/apps/api-ai/package.json +6 -6
  71. package/templates/apps/api-auth/package.json +8 -8
  72. package/templates/apps/api-backend/package.json +7 -7
  73. package/templates/apps/api-backend-deactivation/package.json +7 -7
  74. package/templates/apps/api-backend-mail/package.json +8 -8
  75. package/templates/apps/api-backend-mariadb/package.json +9 -9
  76. package/templates/apps/api-backend-sqlite/package.json +8 -8
  77. package/templates/apps/api-backend-storage/package.json +8 -8
  78. package/templates/apps/api-cms/package.json +9 -9
  79. package/templates/apps/api-collab/package.json +8 -8
  80. package/templates/apps/api-data-advanced/package.json +8 -8
  81. package/templates/apps/api-durable/package.json +8 -8
  82. package/templates/apps/api-feature-flags/package.json +9 -9
  83. package/templates/apps/api-governance/package.json +8 -8
  84. package/templates/apps/api-kv/package.json +8 -8
  85. package/templates/apps/api-moderation/package.json +8 -8
  86. package/templates/apps/api-observability/package.json +8 -8
  87. package/templates/apps/api-ratelimit/package.json +8 -8
  88. package/templates/apps/api-rbac/package.json +8 -8
  89. package/templates/apps/api-rest/package.json +7 -7
  90. package/templates/apps/api-row-history/package.json +8 -8
  91. package/templates/apps/api-saas/package.json +11 -11
  92. package/templates/apps/api-saas-starter/package.json +10 -10
  93. package/templates/apps/api-search/package.json +8 -8
  94. package/templates/apps/api-status/package.json +8 -8
  95. package/templates/apps/api-webhooks/package.json +9 -9
  96. package/templates/apps/changelog/package.json +7 -7
  97. package/templates/apps/edge-functions/package.json +2 -2
  98. package/templates/apps/frontend-admin/package.json +7 -7
  99. package/templates/apps/frontend-app/package.json +8 -8
  100. package/templates/apps/frontend-auth/package.json +7 -7
  101. package/templates/apps/frontend-blank/package.json +6 -6
  102. package/templates/apps/frontend-cms/package.json +8 -8
  103. package/templates/apps/frontend-collab/package.json +9 -9
  104. package/templates/apps/frontend-contact/package.json +7 -7
  105. package/templates/apps/frontend-dashboard/package.json +6 -6
  106. package/templates/apps/frontend-docs/package.json +8 -8
  107. package/templates/apps/frontend-i18n/package.json +6 -6
  108. package/templates/apps/frontend-landing/package.json +7 -7
  109. package/templates/apps/frontend-portal/package.json +7 -7
  110. package/templates/apps/frontend-saas/package.json +7 -7
  111. package/templates/apps/frontend-spa/package.json +6 -6
  112. package/templates/apps/frontend-ssr/package.json +6 -6
  113. package/templates/apps/frontend-ssr-api/package.json +7 -7
  114. package/templates/apps/frontend-static-blog/package.json +8 -8
  115. package/templates/apps/frontend-status/package.json +7 -7
  116. package/templates/apps/mobile-app/package.json +4 -4
  117. package/dist/apiBuild-Vw1figjO.js +0 -2
  118. package/dist/build-CI36wL4R.js +0 -868
  119. package/dist/dbCommand-DrycGWWt.js +0 -2
  120. package/dist/dev-B9Gz0k85.js +0 -3
  121. package/dist/doctorCommand-BMWs6aVm.js +0 -2
  122. package/dist/frameworkTableAssembly-CGNC0qr7.js +0 -2
  123. package/dist/inspect-S2rWy1Ys.js +0 -2
  124. package/dist/manifestBuild-DIa_s6u0.js +0 -2
  125. package/dist/serveCommand-BITS8Hpj.js +0 -2
  126. package/dist/serveCommand-DIJ3ma76.js +0 -2485
  127. package/dist/updateCommand-DsXEAHbd.js +0 -2
  128. package/dist/webDev-C2dRz9s5.js +0 -2
@@ -372,6 +372,11 @@ var a = (e) => ({
372
372
  expected: e.expected,
373
373
  ...e.missing.length > 0 ? { missing: e.missing } : {},
374
374
  ...e.stale.length > 0 ? { stale: e.stale } : {},
375
+ ...e.departed.length > 0 ? { departed: e.departed.map((e) => ({
376
+ replicaId: e.replicaId,
377
+ ageMs: e.ageMs,
378
+ ...e.version === void 0 ? {} : { version: e.version }
379
+ })) } : {},
375
380
  ...e.versions === void 0 ? {} : { versions: e.versions },
376
381
  ...e.missing.length > 0 || e.stale.length > 0 ? { reason: [e.missing.length > 0 ? `${e.missing.length} replica(s) have written nothing readable` : "", e.stale.length > 0 ? `${e.stale.length} answer(s) are older than the freshness window` : ""].filter((e) => e !== "").join("; ") } : {}
377
382
  },
@@ -433,15 +438,18 @@ var a = (e) => ({
433
438
  let e = t.inspectTables?.().tables ?? [];
434
439
  return y(200, F(t.rpc, t.workflows, e, t.plugins?.().plugins ?? []), a);
435
440
  }
436
- return i === "/_voltro/inspect/metrics" ? t.metrics === void 0 ? y(200, [], a) : y(200, t.metrics(), a) : i === "/_voltro/inspect/subscriptions" ? t.kind === "api" ? t.subscriptions === void 0 ? y(200, {
441
+ if (i === "/_voltro/inspect/metrics") return t.metrics === void 0 ? y(200, [], a) : y(200, t.metrics(), a);
442
+ if (i === "/_voltro/inspect/subscriptions") return t.kind === "api" ? t.subscriptions === void 0 ? y(200, {
437
443
  subscriptions: [],
438
444
  matcherStats: [],
439
445
  resume: [],
440
446
  capturedAt: Date.now()
441
- }, a) : y(200, t.subscriptions(), a) : y(404, { error: "subscriptions endpoint is api-only" }, a) : i === "/_voltro/inspect/members" ? t.kind === "api" ? t.members === void 0 ? y(200, {
447
+ }, a) : y(200, t.subscriptions(), a) : y(404, { error: "subscriptions endpoint is api-only" }, a);
448
+ if (i === "/_voltro/inspect/members") return t.kind === "api" ? t.members === void 0 ? y(200, {
442
449
  members: [],
443
450
  capturedAt: Date.now()
444
- }, a) : y(200, t.members(), a) : y(404, { error: "members endpoint is api-only" }, a) : i === "/_voltro/inspect/events" ? t.kind === "api" ? t.events === void 0 ? y(200, {
451
+ }, a) : y(200, t.members(), a) : y(404, { error: "members endpoint is api-only" }, a);
452
+ if (i === "/_voltro/inspect/events") return t.kind === "api" ? t.events === void 0 ? y(200, {
445
453
  declared: [],
446
454
  routes: [],
447
455
  origin: "",
@@ -451,14 +459,16 @@ var a = (e) => ({
451
459
  subscribers: 0,
452
460
  buffered: 0
453
461
  }
454
- }, a) : y(200, t.events(), a) : y(404, { error: "events endpoint is api-only" }, a) : i === "/_voltro/inspect/data-cache" ? t.kind === "api" ? t.dataCache === void 0 ? y(200, {
462
+ }, a) : y(200, t.events(), a) : y(404, { error: "events endpoint is api-only" }, a);
463
+ if (i === "/_voltro/inspect/data-cache") return t.kind === "api" ? t.dataCache === void 0 ? y(200, {
455
464
  backend: "memory",
456
465
  engine: "memory",
457
466
  driver: "resp",
458
467
  hits: 0,
459
468
  misses: 0,
460
469
  hitRate: 0
461
- }, a) : y(200, t.dataCache(), a) : y(404, { error: "data-cache endpoint is api-only" }, a) : i === "/_voltro/inspect/database" ? t.kind === "api" ? t.database === void 0 ? y(200, {
470
+ }, a) : y(200, t.dataCache(), a) : y(404, { error: "data-cache endpoint is api-only" }, a);
471
+ if (i === "/_voltro/inspect/database") return t.kind === "api" ? t.database === void 0 ? y(200, {
462
472
  migrations: [],
463
473
  seeds: [],
464
474
  dialect: "memory",
@@ -469,10 +479,12 @@ var a = (e) => ({
469
479
  region: null,
470
480
  localityEnabled: !1
471
481
  }
472
- }, a) : y(200, t.database(), a) : y(404, { error: "database endpoint is api-only" }, a) : i === "/_voltro/inspect/plugins" ? t.kind === "api" ? t.plugins === void 0 ? y(200, {
482
+ }, a) : y(200, t.database(), a) : y(404, { error: "database endpoint is api-only" }, a);
483
+ if (i === "/_voltro/inspect/plugins") return t.kind === "api" ? t.plugins === void 0 ? y(200, {
473
484
  plugins: [],
474
485
  capturedAt: Date.now()
475
- }, a) : y(200, t.plugins(), a) : y(404, { error: "plugins endpoint is api-only" }, a) : i === "/_voltro/inspect/env" ? t.env === void 0 ? y(200, {
486
+ }, a) : y(200, t.plugins(), a) : y(404, { error: "plugins endpoint is api-only" }, a);
487
+ if (i === "/_voltro/inspect/env") return t.env === void 0 ? y(200, {
476
488
  app: t.meta.name ?? "app",
477
489
  entries: [],
478
490
  summary: {
@@ -480,22 +492,31 @@ var a = (e) => ({
480
492
  set: 0,
481
493
  missingRequired: 0
482
494
  }
483
- }, a) : y(200, t.env(), a) : i === "/_voltro/inspect/data/tables" ? t.kind === "api" ? t.inspectTables === void 0 ? y(200, { tables: [] }, a) : y(200, t.inspectTables(), a) : y(404, { error: "data viewer is api-only" }, a) : i === "/_voltro/inspect/invoke" ? y(404, { error: "invoke not enabled here — use POST handler" }, a) : H.has(i) ? y(404, {
495
+ }, a) : y(200, t.env(), a);
496
+ if (i === "/_voltro/inspect/data/tables") return t.kind === "api" ? t.inspectTables === void 0 ? y(200, { tables: [] }, a) : y(200, t.inspectTables(), a) : y(404, { error: "data viewer is api-only" }, a);
497
+ if (i === "/_voltro/inspect/invoke") return y(404, { error: "invoke not enabled here — use POST handler" }, a);
498
+ if (U.has(i)) {
499
+ let e = i.endsWith("/traces") ? "traces" : "logs";
500
+ return y(404, {
501
+ error: "endpoint not enabled on this instance",
502
+ path: i,
503
+ reason: `This instance keeps no in-process ${e} ring, so there is nothing to serve. It is off by default because a ring is memory per replica for data most deployments already collect from stdout. Turn it on with \`inspect: { ${e}: true }\` in app.config.ts (or \`{ ${e}: { size: 2000 } }\`), or set VOLTRO_INSPECT_${e.toUpperCase()}=2000 on the deployment. This is not a missing token: the same request with no token would be 401.`
504
+ }, a);
505
+ }
506
+ return H.has(i) ? y(404, {
484
507
  error: "endpoint not mounted on this instance",
485
508
  path: i,
486
- reason: "This inspect endpoint is served by `voltro dev`. A production `voltro serve` does not mount it — the data behind it (the in-memory log ring, the span buffer, the dev route table) is not collected there. This is not a missing token: the same request with no token would be 401."
509
+ reason: "This inspect endpoint is served by `voltro dev`. A production `voltro serve` does not mount it — the data behind it (the dev route table, the aggregate registry) is not collected there. This is not a missing token: the same request with no token would be 401."
487
510
  }, a) : y(404, {
488
511
  error: "unknown inspect endpoint",
489
512
  path: i
490
513
  }, a);
491
514
  }, H = /* @__PURE__ */ new Set([
492
- `${m}/logs`,
493
- `${m}/traces`,
494
515
  `${m}/workflows`,
495
516
  `${m}/storage`,
496
517
  `${m}/aggregates`,
497
518
  `${m}/flags`
498
- ]), U = async (e, t, n, r = {}) => {
519
+ ]), U = /* @__PURE__ */ new Set([`${m}/logs`, `${m}/traces`]), W = async (e, t, n, r = {}) => {
499
520
  let i = x(t.origin ?? t.Origin);
500
521
  if (h()) return y(503, { error: "inspect disabled (VOLTRO_INSPECT=off)" }, i);
501
522
  let a = (r.method ?? "POST").toUpperCase();
@@ -530,7 +551,7 @@ var a = (e) => ({
530
551
  n !== "cookie" && (d[n] = t);
531
552
  }
532
553
  return y(200, await l(c.input, d), i);
533
- }, W = async (e, t, n, r = {}) => {
554
+ }, G = async (e, t, n, r = {}) => {
534
555
  let i = /[?&]replica=([^&]+)/.exec(e)?.[1], a = n[d] !== void 0;
535
556
  if (i !== void 0 && !a && t.kind === "api") {
536
557
  let a = x(n.origin ?? n.Origin), o = (r.authResolver ?? _)(n, (r.method ?? "GET").toUpperCase());
@@ -555,9 +576,9 @@ var a = (e) => ({
555
576
  headers: a
556
577
  } : y(s.status, s.body, a);
557
578
  }
558
- let o = await G(e, t, n, r);
579
+ let o = await K(e, t, n, r);
559
580
  return o === null ? null : z(j(e), o, r.fleetSize);
560
- }, G = async (e, t, n, r = {}) => {
581
+ }, K = async (e, t, n, r = {}) => {
561
582
  let i = j(e);
562
583
  if (!N(i)) return null;
563
584
  let a = /[?&]scope=fleet(?:&|$)/.test(e), o = i === "/_voltro/inspect/subscriptions" && a;
@@ -588,13 +609,7 @@ var a = (e) => ({
588
609
  }
589
610
  return {
590
611
  ...y(200, { resume: e.byReplica }, s),
591
- assembled: {
592
- responded: e.responded,
593
- expected: e.expected,
594
- missing: e.missing,
595
- stale: e.stale,
596
- versions: e.versions
597
- }
612
+ assembled: (({ byReplica: e, ...t }) => t)(e)
598
613
  };
599
614
  }
600
615
  return t.migrations === void 0 ? y(200, {
@@ -607,7 +622,7 @@ var a = (e) => ({
607
622
  history: [],
608
623
  softDropSnapshots: []
609
624
  }, s) : y(200, await t.migrations(), s);
610
- }, K = async (e, t, n, r, i = {}) => {
625
+ }, q = async (e, t, n, r, i = {}) => {
611
626
  let a = j(e);
612
627
  if (!N(a) || !a.startsWith("/_voltro/inspect/webhooks/")) return null;
613
628
  let o = x(n.origin ?? n.Origin);
@@ -667,7 +682,7 @@ var a = (e) => ({
667
682
  message: e?.message ?? String(e)
668
683
  }, o);
669
684
  }
670
- }, q = async (e, t, n, r, i = {}) => {
685
+ }, J = async (e, t, n, r, i = {}) => {
671
686
  let a = j(e);
672
687
  if (!N(a)) return null;
673
688
  let o = x(n.origin ?? n.Origin), s = (i.method ?? "POST").toUpperCase();
@@ -710,7 +725,7 @@ var a = (e) => ({
710
725
  message: e?.message ?? String(e)
711
726
  }, o);
712
727
  }
713
- }, J = async (e, t, n, r = {}) => {
728
+ }, Y = async (e, t, n, r = {}) => {
714
729
  if (j(e) !== "/_voltro/inspect/data/rows") return null;
715
730
  let i = x(n.origin ?? n.Origin), a = (r.method ?? "GET").toUpperCase();
716
731
  if (a !== "GET") return y(405, {
@@ -725,9 +740,9 @@ var a = (e) => ({
725
740
  }, i);
726
741
  if (t.kind !== "api") return y(404, { error: "data viewer is api-only" }, i);
727
742
  if (t.inspectRows === void 0) return y(404, { error: "inspectRows not configured" }, i);
728
- let s = X(e), c = s.get("table");
743
+ let s = Z(e), c = s.get("table");
729
744
  if (!c) return y(400, { error: "query.table is required" }, i);
730
- let l = Z(s.get("offset")) ?? 0, u = Z(s.get("limit")) ?? 50, d = {}, f = s.get("q");
745
+ let l = Q(s.get("offset")) ?? 0, u = Q(s.get("limit")) ?? 50, d = {}, f = s.get("q");
731
746
  if (f) {
732
747
  if (f.length > 8192) return y(400, { error: "query.q too large" }, i);
733
748
  try {
@@ -752,7 +767,7 @@ var a = (e) => ({
752
767
  message: e?.message ?? String(e)
753
768
  }, i);
754
769
  }
755
- }, Y = async (e, t, n, i = {}) => {
770
+ }, X = async (e, t, n, i = {}) => {
756
771
  if (j(e) !== "/_voltro/inspect/provenance") return null;
757
772
  let a = x(n.origin ?? n.Origin), o = (i.method ?? "GET").toUpperCase();
758
773
  if (o !== "GET") return y(405, {
@@ -769,7 +784,7 @@ var a = (e) => ({
769
784
  if (c) return c;
770
785
  if (t.kind !== "api") return y(404, { error: "provenance is api-only" }, a);
771
786
  if (t.inspectRows === void 0) return y(404, { error: "inspectRows not configured" }, a);
772
- let l = X(e), u = l.get("table"), d = l.get("id"), f = l.get("column") ?? void 0;
787
+ let l = Z(e), u = l.get("table"), d = l.get("id"), f = l.get("column") ?? void 0;
773
788
  if (!u || !d) return y(400, { error: "query.table and query.id are required" }, a);
774
789
  try {
775
790
  let e = (await t.inspectRows({
@@ -796,14 +811,14 @@ var a = (e) => ({
796
811
  message: e?.message ?? String(e)
797
812
  }, a);
798
813
  }
799
- }, X = (e) => {
814
+ }, Z = (e) => {
800
815
  let t = e.indexOf("?");
801
816
  return t < 0 ? new URLSearchParams() : new URLSearchParams(e.slice(t + 1));
802
- }, Z = (e) => {
817
+ }, Q = (e) => {
803
818
  if (e === null || e === "") return;
804
819
  let t = Number(e);
805
820
  return Number.isFinite(t) && t >= 0 ? Math.floor(t) : void 0;
806
- }, Q = async (e, t, n, r = {}) => {
821
+ }, $ = async (e, t, n, r = {}) => {
807
822
  if (j(e) !== "/_voltro/inspect/workflows/runs") return null;
808
823
  let i = x(n.origin ?? n.Origin), a = (r.method ?? "GET").toUpperCase();
809
824
  if (a !== "GET") return y(405, {
@@ -823,7 +838,7 @@ var a = (e) => ({
823
838
  offset: 0,
824
839
  limit: 50
825
840
  }, i);
826
- let s = X(e);
841
+ let s = Z(e);
827
842
  try {
828
843
  let e = s.get("deadLettered") === "1" || s.get("deadLettered") === "true", n = (s.get("statuses") ?? "").split(",").map((e) => e.trim()).filter((e) => e !== "");
829
844
  return y(200, await t.inspectWorkflowRuns({
@@ -834,8 +849,8 @@ var a = (e) => ({
834
849
  ...s.get("idPrefix") === null ? {} : { idPrefix: s.get("idPrefix") },
835
850
  ...s.get("from") === null ? {} : { startedAfter: s.get("from") },
836
851
  ...s.get("to") === null ? {} : { startedBefore: s.get("to") },
837
- offset: Z(s.get("offset")) ?? 0,
838
- limit: Z(s.get("limit")) ?? 50
852
+ offset: Q(s.get("offset")) ?? 0,
853
+ limit: Q(s.get("limit")) ?? 50
839
854
  }), i);
840
855
  } catch (e) {
841
856
  return I(e) ? y(200, {
@@ -849,7 +864,7 @@ var a = (e) => ({
849
864
  message: e?.message ?? String(e)
850
865
  }, i);
851
866
  }
852
- }, $ = async (e, t, n, r = {}) => {
867
+ }, ee = async (e, t, n, r = {}) => {
853
868
  if (j(e) !== "/_voltro/inspect/workflows/stats") return null;
854
869
  let i = x(n.origin ?? n.Origin), a = (r.method ?? "GET").toUpperCase();
855
870
  if (a !== "GET") return y(405, {
@@ -871,11 +886,11 @@ var a = (e) => ({
871
886
  total: 0,
872
887
  truncated: !1
873
888
  }, i);
874
- let s = X(e);
889
+ let s = Z(e);
875
890
  try {
876
891
  return y(200, await t.inspectWorkflowRunStats({
877
892
  ...s.get("tag") === null ? {} : { tag: s.get("tag") },
878
- ...Z(s.get("hours")) === void 0 ? {} : { hours: Z(s.get("hours")) }
893
+ ...Q(s.get("hours")) === void 0 ? {} : { hours: Q(s.get("hours")) }
879
894
  }), i);
880
895
  } catch (e) {
881
896
  return I(e) ? y(200, {
@@ -891,7 +906,7 @@ var a = (e) => ({
891
906
  message: e?.message ?? String(e)
892
907
  }, i);
893
908
  }
894
- }, ee = async (e, t, n, r, i = {}) => {
909
+ }, te = async (e, t, n, r, i = {}) => {
895
910
  let a = j(e).match(/^\/_voltro\/inspect\/workflows\/start\/([^/]+)$/);
896
911
  if (!a) return null;
897
912
  let o = decodeURIComponent(a[1] ?? ""), s = x(n.origin ?? n.Origin), c = (i.method ?? "POST").toUpperCase();
@@ -924,7 +939,7 @@ var a = (e) => ({
924
939
  message: e?.message ?? String(e)
925
940
  }, s);
926
941
  }
927
- }, te = async (e, t, n, r = {}) => {
942
+ }, ne = async (e, t, n, r = {}) => {
928
943
  let i = j(e);
929
944
  if (!i.startsWith("/_voltro/inspect/schedules")) return null;
930
945
  let a = x(n.origin ?? n.Origin);
@@ -974,7 +989,7 @@ var a = (e) => ({
974
989
  expected: "POST"
975
990
  }, a);
976
991
  if (!t.inspectFireSchedule) return y(404, { error: "inspectFireSchedule not configured" }, a);
977
- let n = decodeURIComponent(u[1] ?? ""), r = X(e).get("trigger") === "external" ? "external" : "manual";
992
+ let n = decodeURIComponent(u[1] ?? ""), r = Z(e).get("trigger") === "external" ? "external" : "manual";
978
993
  try {
979
994
  return y(200, await t.inspectFireSchedule({
980
995
  name: n,
@@ -998,12 +1013,12 @@ var a = (e) => ({
998
1013
  offset: 0,
999
1014
  limit: 50
1000
1015
  }, a);
1001
- let n = X(e);
1016
+ let n = Z(e);
1002
1017
  try {
1003
1018
  return y(200, await t.inspectScheduleRuns({
1004
1019
  ...n.get("name") === null ? {} : { name: n.get("name") },
1005
- offset: Z(n.get("offset")) ?? 0,
1006
- limit: Z(n.get("limit")) ?? 50
1020
+ offset: Q(n.get("offset")) ?? 0,
1021
+ limit: Q(n.get("limit")) ?? 50
1007
1022
  }), a);
1008
1023
  } catch (e) {
1009
1024
  return y(500, {
@@ -1022,7 +1037,7 @@ var a = (e) => ({
1022
1037
  error: "unknown schedules endpoint",
1023
1038
  path: i
1024
1039
  }, a);
1025
- }, ne = async (e, t, r, i = {}) => {
1040
+ }, re = async (e, t, r, i = {}) => {
1026
1041
  if (j(e) !== "/_voltro/inspect/cluster") return null;
1027
1042
  let a = x(r.origin ?? r.Origin);
1028
1043
  if (h()) return y(503, { error: "inspect disabled (VOLTRO_INSPECT=off)" }, a);
@@ -1070,7 +1085,7 @@ var a = (e) => ({
1070
1085
  message: e?.message ?? String(e)
1071
1086
  }, a);
1072
1087
  }
1073
- }, re = async (e, t, n, r = {}) => {
1088
+ }, ie = async (e, t, n, r = {}) => {
1074
1089
  let i = j(e).match(/^\/_voltro\/inspect\/workflows\/runs\/([^/]+)\/steps$/);
1075
1090
  if (!i) return null;
1076
1091
  let a = decodeURIComponent(i[1] ?? ""), o = x(n.origin ?? n.Origin), s = (r.method ?? "GET").toUpperCase();
@@ -1094,7 +1109,7 @@ var a = (e) => ({
1094
1109
  message: e?.message ?? String(e)
1095
1110
  }, o);
1096
1111
  }
1097
- }, ie = async (e, t, n, r = {}) => {
1112
+ }, ae = async (e, t, n, r = {}) => {
1098
1113
  let i = j(e).match(/^\/_voltro\/inspect\/workflows\/runs\/([^/]+)\/events$/);
1099
1114
  if (!i) return null;
1100
1115
  let a = decodeURIComponent(i[1] ?? ""), o = x(n.origin ?? n.Origin), s = (r.method ?? "GET").toUpperCase();
@@ -1118,7 +1133,7 @@ var a = (e) => ({
1118
1133
  message: e?.message ?? String(e)
1119
1134
  }, o);
1120
1135
  }
1121
- }, ae = async (e, t, n, r = {}) => {
1136
+ }, oe = async (e, t, n, r = {}) => {
1122
1137
  if (j(t) !== "/_voltro/inspect/workflows/events") return null;
1123
1138
  let i = x(n.origin ?? n.Origin), a = (r.method ?? "GET").toUpperCase();
1124
1139
  if (a !== "GET") return y(405, {
@@ -1157,7 +1172,7 @@ var a = (e) => ({
1157
1172
  message: e?.message ?? String(e)
1158
1173
  }, i);
1159
1174
  }
1160
- }, oe = async (e, t, n, r = {}) => {
1175
+ }, se = async (e, t, n, r = {}) => {
1161
1176
  let i = j(t).match(/^\/_voltro\/inspect\/workflows\/events\/([^/]+)\/deliveries$/);
1162
1177
  if (!i) return null;
1163
1178
  let a = decodeURIComponent(i[1] ?? ""), o = x(n.origin ?? n.Origin), s = (r.method ?? "GET").toUpperCase();
@@ -1181,7 +1196,7 @@ var a = (e) => ({
1181
1196
  message: e?.message ?? String(e)
1182
1197
  }, o);
1183
1198
  }
1184
- }, se = async (e, t, n, r = {}) => {
1199
+ }, ce = async (e, t, n, r = {}) => {
1185
1200
  if (j(e) !== "/_voltro/inspect/workflows/children") return null;
1186
1201
  let i = x(n.origin ?? n.Origin), a = (r.method ?? "GET").toUpperCase();
1187
1202
  if (a !== "GET") return y(405, {
@@ -1195,7 +1210,7 @@ var a = (e) => ({
1195
1210
  reason: o.reason
1196
1211
  }, i);
1197
1212
  if (t.kind !== "api") return y(404, { error: "workflow children are api-only" }, i);
1198
- let s = X(e).get("parentExecutionId");
1213
+ let s = Z(e).get("parentExecutionId");
1199
1214
  if (s === null || s === "") return y(400, { error: "parentExecutionId query param required" }, i);
1200
1215
  if (t.inspectWorkflowChildren === void 0) return y(200, {
1201
1216
  runs: [],
@@ -1211,7 +1226,7 @@ var a = (e) => ({
1211
1226
  message: e?.message ?? String(e)
1212
1227
  }, i);
1213
1228
  }
1214
- }, ce = async (e, t, n, r, i = {}) => {
1229
+ }, le = async (e, t, n, r, i = {}) => {
1215
1230
  let a = j(e).match(/^\/_voltro\/inspect\/workflows\/runs\/([^/]+)\/(cancel|retry|suspend|resume-from-step|resume|signal|update|discard|redrive)$/);
1216
1231
  if (!a) return null;
1217
1232
  let o = decodeURIComponent(a[1] ?? ""), s = a[2], c = x(n.origin ?? n.Origin), l = (i.method ?? "POST").toUpperCase();
@@ -1269,7 +1284,7 @@ var a = (e) => ({
1269
1284
  message: e?.message ?? String(e)
1270
1285
  }, c);
1271
1286
  }
1272
- }, le = async (e, t, n, r, i = {}) => {
1287
+ }, ue = async (e, t, n, r, i = {}) => {
1273
1288
  if (j(e) !== "/_voltro/inspect/data/import" || (i.method ?? "POST").toUpperCase() !== "POST") return null;
1274
1289
  let a = x(n.origin ?? n.Origin);
1275
1290
  if (h()) return y(503, { error: "inspect disabled (VOLTRO_INSPECT=off)" }, a);
@@ -1302,7 +1317,7 @@ var a = (e) => ({
1302
1317
  message: e?.message ?? String(e)
1303
1318
  }, a);
1304
1319
  }
1305
- }, ue = async (e, t, n, r, i = {}) => {
1320
+ }, de = async (e, t, n, r, i = {}) => {
1306
1321
  let a = j(e);
1307
1322
  if (!a.startsWith("/_voltro/inspect/data/rows")) return null;
1308
1323
  let o = (i.method ?? "POST").toUpperCase();
@@ -1340,7 +1355,7 @@ var a = (e) => ({
1340
1355
  if (!l) return null;
1341
1356
  let u = decodeURIComponent(l[1] ?? "");
1342
1357
  if (!u) return y(400, { error: "row id is required in URL" }, s);
1343
- let d = X(e).get("table") ?? "";
1358
+ let d = Z(e).get("table") ?? "";
1344
1359
  if (!d) return y(400, { error: "query.table is required" }, s);
1345
1360
  if (o === "PATCH") {
1346
1361
  if (!t.inspectUpdateRow) return y(404, { error: "inspectUpdateRow not configured" }, s);
@@ -1382,7 +1397,7 @@ var a = (e) => ({
1382
1397
  error: "method not allowed",
1383
1398
  expected: "POST | PATCH | DELETE"
1384
1399
  }, s);
1385
- }, de = async (e, t, n, r, i = {}) => {
1400
+ }, fe = async (e, t, n, r, i = {}) => {
1386
1401
  let a = j(e), o = `${m}/workflows/flow-control`;
1387
1402
  if (a !== o && !a.startsWith(`${o}/`)) return null;
1388
1403
  let s = x(n.origin ?? n.Origin), c = (i.method ?? "GET").toUpperCase();
@@ -1399,7 +1414,7 @@ var a = (e) => ({
1399
1414
  expected: "GET"
1400
1415
  }, s);
1401
1416
  if (t.inspectInferences === void 0) return y(404, { error: "inspectInferences not configured" }, s);
1402
- let n = X(e).get("limit"), r = n === null ? void 0 : Number(n);
1417
+ let n = Z(e).get("limit"), r = n === null ? void 0 : Number(n);
1403
1418
  try {
1404
1419
  return y(200, await t.inspectInferences(r !== void 0 && Number.isFinite(r) ? { limit: r } : {}), s);
1405
1420
  } catch (e) {
@@ -1415,7 +1430,7 @@ var a = (e) => ({
1415
1430
  expected: "GET"
1416
1431
  }, s);
1417
1432
  if (t.inspectFlowControl === void 0) return y(404, { error: "inspectFlowControl not configured" }, s);
1418
- let n = X(e).get("limit"), r = n === null ? void 0 : Number(n);
1433
+ let n = Z(e).get("limit"), r = n === null ? void 0 : Number(n);
1419
1434
  try {
1420
1435
  return y(200, await t.inspectFlowControl(r !== void 0 && Number.isFinite(r) ? { limit: r } : {}), s);
1421
1436
  } catch (e) {
@@ -1481,4 +1496,4 @@ var a = (e) => ({
1481
1496
  }, s);
1482
1497
  };
1483
1498
  //#endregion
1484
- export { w as A, ie as C, ee as D, Q as E, A as F, C as I, v as L, b as M, z as N, x as O, E as P, oe as S, re as T, te as _, T as a, se as b, ne as c, ue as d, de as f, B as g, Y as h, F as i, h as j, k, le as l, U as m, P as n, _ as o, q as p, S as r, W as s, m as t, J as u, K as v, $ as w, ae as x, ce as y };
1499
+ export { w as A, ae as C, te as D, $ as E, A as F, C as I, v as L, b as M, z as N, x as O, E as P, se as S, ie as T, ne as _, T as a, ce as b, re as c, de as d, fe as f, B as g, X as h, F as i, h as j, k, ue as l, W as m, P as n, _ as o, J as p, S as r, G as s, m as t, Y as u, q as v, ee as w, oe as x, le as y };
@@ -2,9 +2,10 @@ import { n as e } from "./runtimeRegistry-DMeKfTHP.js";
2
2
  import { r as t, t as n } from "./logFileSink-B4uP8pvf.js";
3
3
  import { n as r } from "./cliOutput-D1tSBoRM.js";
4
4
  import { a as i, i as a } from "./inspectFetch-BU1NyzxV.js";
5
- import { ansi as o } from "@voltro/logger";
5
+ import { n as o, t as s } from "./emptyResultHeadline-Csa5fZOF.js";
6
+ import { ansi as c } from "@voltro/logger";
6
7
  //#region src/logsCmd.ts
7
- var s = (e) => {
8
+ var l = (e) => {
8
9
  let t = a(e);
9
10
  if (t.error !== void 0) return { error: t.error };
10
11
  let n = t.target, r = t.rest, i = {
@@ -31,7 +32,7 @@ var s = (e) => {
31
32
  case "--since": {
32
33
  let e = n();
33
34
  if (e === void 0) return { error: "--since expects a value" };
34
- let t = c(e);
35
+ let t = u(e);
35
36
  if (t === null) return { error: `--since: unrecognised '${e}' (try '30s', '5m', '1h', or unix-ms)` };
36
37
  i.since = t;
37
38
  break;
@@ -89,7 +90,7 @@ var s = (e) => {
89
90
  ...i,
90
91
  target: n
91
92
  };
92
- }, c = (e) => {
93
+ }, u = (e) => {
93
94
  let t = /^(\d+)([smh])$/.exec(e);
94
95
  if (t) {
95
96
  let e = Number(t[1]), n = t[2], r = n === "s" ? 1e3 : n === "m" ? 6e4 : 36e5;
@@ -97,15 +98,15 @@ var s = (e) => {
97
98
  }
98
99
  let n = Number(e);
99
100
  return Number.isFinite(n) && n > 0 ? n : null;
100
- }, l = () => {
101
+ }, d = () => {
101
102
  console.log("voltro logs — recent log records from every running voltro process"), console.log(""), console.log("Usage:"), console.log(" voltro logs [--tail N] [--since SPEC] [--level L] [--scope S]"), console.log(" [--source server|client] [--filter PAT] [--trace ID]"), console.log(" [--process NAME] [--format pretty|json|text] [--no-color]"), console.log(""), console.log("Examples:"), console.log(" voltro logs --tail 50"), console.log(" voltro logs --since 30s --level error"), console.log(" voltro logs --filter 'channels.create'"), console.log(" voltro logs --trace <traceId> --format json # whole chain for one request"), console.log(" voltro logs --format json | jq '.[] | select(.level == \"error\")'");
102
- }, u = async (t) => {
103
- let a = s(t);
104
- if ("error" in a) return a.error !== "help" && console.error(`voltro logs: ${a.error}`), l(), a.error === "help" ? 0 : 2;
105
- let c = a.target === void 0 ? await e() : {
103
+ }, f = async (t) => {
104
+ let a = l(t);
105
+ if ("error" in a) return a.error !== "help" && console.error(`voltro logs: ${a.error}`), d(), a.error === "help" ? 0 : 2;
106
+ let s = a.target === void 0 ? await e() : {
106
107
  version: 1,
107
108
  apps: [i(a.target)]
108
- }, u = a.process === void 0 ? c.apps : c.apps.filter((e) => e.name === a.process);
109
+ }, u = a.process === void 0 ? s.apps : s.apps.filter((e) => e.name === a.process);
109
110
  if (u.length === 0 && a.process !== void 0) {
110
111
  let e = n(a.process);
111
112
  e !== void 0 && (u = [{
@@ -123,37 +124,41 @@ var s = (e) => {
123
124
  if (u.length === 0) {
124
125
  if (a.process !== void 0) {
125
126
  console.error(`voltro logs: no running process named '${a.process}' and no orphan log file found`), console.error(" active processes:");
126
- for (let e of c.apps) console.error(` - ${e.name} (${e.kind} @ ${e.url})`);
127
+ for (let e of s.apps) console.error(` - ${e.name} (${e.kind} @ ${e.url})`);
127
128
  return 1;
128
129
  }
129
130
  return console.error("voltro logs: no running voltro process found"), console.error(" start one with 'voltro dev' (or 'voltro start') and try again."), 1;
130
131
  }
131
- let f = u.map((e) => d(e, a)), p = await Promise.all(f), m = [], _ = [];
132
- for (let e of p) e.kind === "ok" ? m.push(...e.records) : _.push({
132
+ let f = u.map((e) => p(e, a)), m = await Promise.all(f), h = [], g = [];
133
+ for (let e of m) e.kind === "ok" ? h.push(...e.records) : g.push({
133
134
  name: e.name,
134
135
  error: e.error
135
136
  });
136
- if (m.sort((e, t) => e.ts - t.ts), a.format === "json") {
137
- let e = _.length > 0 ? {
138
- records: m,
139
- fetchErrors: _
140
- } : { records: m };
141
- return r(e, { pretty: !1 }), +(_.length === u.length);
137
+ if (h.sort((e, t) => e.ts - t.ts), a.format === "json") {
138
+ let e = g.length > 0 ? {
139
+ records: h,
140
+ fetchErrors: g
141
+ } : { records: h };
142
+ return r(e, { pretty: !1 }), +(g.length === u.length);
142
143
  }
143
144
  if (a.format === "text") {
144
- for (let e of m) console.log(h(e));
145
- for (let e of _) console.error(`# fetch failed: ${e.name}: ${e.error}`);
146
- return +(_.length === u.length);
145
+ for (let e of h) console.log(_(e));
146
+ for (let e of g) console.error(`# fetch failed: ${e.name}: ${e.error}`);
147
+ return +(g.length === u.length);
147
148
  }
148
- for (let e of m) console.log(g(e, a.color));
149
- m.length === 0 && console.error("voltro logs: no records matched the given filters.");
150
- for (let e of _) {
149
+ for (let e of h) console.log(v(e, a.color));
150
+ h.length === 0 && console.error(o({
151
+ noun: "logs",
152
+ targets: u.length,
153
+ failures: g
154
+ }) ?? "voltro logs: no records matched the given filters.");
155
+ for (let e of g) {
151
156
  let t = `# fetch failed: ${e.name}: ${e.error}`;
152
- console.error(a.color ? o.dim(t) : t);
157
+ console.error(a.color ? c.dim(t) : t);
153
158
  }
154
- return +(_.length === u.length);
155
- }, d = async (e, t) => {
156
- if (e.status === "booting") return f(e, t, "process still booting");
159
+ return +(g.length === u.length);
160
+ }, p = async (e, t) => {
161
+ if (e.status === "booting") return m(e, t, "process still booting");
157
162
  let n = new URLSearchParams();
158
163
  n.set("max", String(t.tail)), n.set("format", "json"), t.since !== void 0 && n.set("since", String(t.since)), t.level !== void 0 && n.set("level", t.level), t.scope !== void 0 && n.set("scope", t.scope), t.source !== void 0 && n.set("source", t.source), t.filter !== void 0 && n.set("filter", t.filter), t.traceId !== void 0 && n.set("trace", t.traceId);
159
164
  let r = `${e.url.replace(/\/+$/, "")}/_voltro/inspect/logs?${n.toString()}`;
@@ -161,7 +166,7 @@ var s = (e) => {
161
166
  let n = {};
162
167
  process.env.VOLTRO_INSPECT_TOKEN !== void 0 && (n.authorization = `Bearer ${process.env.VOLTRO_INSPECT_TOKEN}`);
163
168
  let i = await fetch(r, { headers: n });
164
- if (!i.ok) return f(e, t, `HTTP ${i.status}`);
169
+ if (!i.ok) return m(e, t, await s(i));
165
170
  let a = await i.json(), o = Array.isArray(a.records) ? a.records : [];
166
171
  return {
167
172
  kind: "ok",
@@ -172,9 +177,9 @@ var s = (e) => {
172
177
  }))
173
178
  };
174
179
  } catch (n) {
175
- return f(e, t, n.message || String(n));
180
+ return m(e, t, n.message || String(n));
176
181
  }
177
- }, f = async (e, n, r) => {
182
+ }, m = async (e, n, r) => {
178
183
  if (!e.logFile) return {
179
184
  kind: "err",
180
185
  name: e.name,
@@ -215,49 +220,49 @@ var s = (e) => {
215
220
  error: `${r}; file read failed: ${t.message || String(t)}`
216
221
  };
217
222
  }
218
- }, p = {
219
- trace: o.dim,
220
- debug: o.cyan,
221
- info: o.green,
222
- warn: o.yellow,
223
- error: o.red,
224
- fatal: (e) => o.bgRed(o.white(e))
225
- }, m = {
223
+ }, h = {
224
+ trace: c.dim,
225
+ debug: c.cyan,
226
+ info: c.green,
227
+ warn: c.yellow,
228
+ error: c.red,
229
+ fatal: (e) => c.bgRed(c.white(e))
230
+ }, g = {
226
231
  trace: "TRACE",
227
232
  debug: "DEBUG",
228
233
  info: "INFO ",
229
234
  warn: "WARN ",
230
235
  error: "ERROR",
231
236
  fatal: "FATAL"
232
- }, h = (e) => {
233
- let t = _(e.ts), n = e.scope ?? "?", r = y(e.fields);
234
- return `${t} ${m[e.level]} [${n}/${e.source}@${e.process}] ${e.message}${r}`;
235
- }, g = (e, t) => {
236
- if (!t) return h(e);
237
- let n = o.dim(_(e.ts)), r = e.scope ?? "?", i = p[e.level](m[e.level]), a = o.dim(`[${r}/${e.source}@${e.process}]`), s = e.level === "error" || e.level === "fatal" ? o.red(e.message) : e.message, c = y(e.fields);
238
- return `${n} ${i} ${a} ${s}${c ? o.dim(c) : ""}`;
239
237
  }, _ = (e) => {
238
+ let t = y(e.ts), n = e.scope ?? "?", r = x(e.fields);
239
+ return `${t} ${g[e.level]} [${n}/${e.source}@${e.process}] ${e.message}${r}`;
240
+ }, v = (e, t) => {
241
+ if (!t) return _(e);
242
+ let n = c.dim(y(e.ts)), r = e.scope ?? "?", i = h[e.level](g[e.level]), a = c.dim(`[${r}/${e.source}@${e.process}]`), o = e.level === "error" || e.level === "fatal" ? c.red(e.message) : e.message, s = x(e.fields);
243
+ return `${n} ${i} ${a} ${o}${s ? c.dim(s) : ""}`;
244
+ }, y = (e) => {
240
245
  let t = new Date(e);
241
246
  return `${String(t.getHours()).padStart(2, "0")}:${String(t.getMinutes()).padStart(2, "0")}:${String(t.getSeconds()).padStart(2, "0")}.${String(t.getMilliseconds()).padStart(3, "0")}`;
242
- }, v = 80, y = (e) => {
247
+ }, b = 80, x = (e) => {
243
248
  let t = Object.entries(e);
244
249
  if (t.length === 0) return "";
245
250
  let n = [];
246
- for (let [e, r] of t) r !== void 0 && n.push(`${e}=${b(r)}`);
251
+ for (let [e, r] of t) r !== void 0 && n.push(`${e}=${S(r)}`);
247
252
  return n.length > 0 ? " " + n.join(" ") : "";
248
- }, b = (e) => {
253
+ }, S = (e) => {
249
254
  if (typeof e == "string") {
250
- let t = e.length > v ? e.slice(0, v) + "…" : e;
255
+ let t = e.length > b ? e.slice(0, b) + "…" : e;
251
256
  return /[\s=]/.test(t) ? `"${t.replace(/"/g, "\\\"")}"` : t;
252
257
  }
253
258
  if (e === null) return "null";
254
259
  if (typeof e == "number" || typeof e == "boolean") return String(e);
255
260
  try {
256
261
  let t = JSON.stringify(e);
257
- return t.length > v ? t.slice(0, v) + "…" : t;
262
+ return t.length > b ? t.slice(0, b) + "…" : t;
258
263
  } catch {
259
264
  return "[unserialisable]";
260
265
  }
261
266
  };
262
267
  //#endregion
263
- export { u as runLogsCommand };
268
+ export { f as runLogsCommand };
@@ -0,0 +1,2 @@
1
+ import { t as e } from "./manifestBuild-BwiS4iYm.js";
2
+ export { e as buildRpcEntry };
@@ -1,4 +1,4 @@
1
- import { L as e } from "./inspect-CNYvNXPU.js";
1
+ import { L as e } from "./inspect-PcC5J-Dl.js";
2
2
  import { JSONSchema as t } from "effect";
3
3
  //#region src/manifestBuild.ts
4
4
  var n = (e) => {