@voltro/cli 0.33.0 → 0.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1801 -0
- package/bin/nodeEnvironment.d.mts +30 -0
- package/bin/nodeEnvironment.mjs +158 -0
- package/bin/voltro.mjs +69 -5
- package/dist/addCommand-BNeoeSxe.js +124 -0
- package/dist/addCommand-aXSQveak.js +2 -0
- package/dist/agentsMd-BTchIZku.js +2 -0
- package/dist/agentsMd-mhQMF1bx.js +254 -0
- package/dist/apiBuild-BICVGnEC.js +2 -0
- package/dist/{apiBuild-h9VHtnlw.js → apiBuild-DZF_f0_I.js} +46 -46
- package/dist/appPort-B_HpJ_ck.js +48 -0
- package/dist/baselineCommand-C2ClWZN3.js +2 -0
- package/dist/baselineCommand-DIttzO8A.js +227 -0
- package/dist/bin.js +71 -28
- package/dist/build-CE7Ca9gm.js +711 -0
- package/dist/cacheCommand-DA4OH9xt.js +42 -0
- package/dist/capabilitiesCommand-nq_pz5xd.js +123 -0
- package/dist/checkCommand-Dv8r9tGO.js +231 -0
- package/dist/checkCommand-YZDmkAGd.js +2 -0
- package/dist/{cliArgs-qdZSElM3.js → cliArgs-D4p8n7EE.js} +12 -1
- package/dist/cliError-BmdYnghb.js +10 -0
- package/dist/cliOutput-D1tSBoRM.js +15 -0
- package/dist/{cliRuntime-Oh517vCV.js → cliRuntime-Dh7UDinH.js} +20 -20
- package/dist/cloudClient-DWL-Hw_T.js +67 -0
- package/dist/cloudCmd-Cvv5HGaZ.js +364 -0
- package/dist/clusterCmd-CNXKlcvD.js +54 -0
- package/dist/codegen-CYM3Zqrf.js +605 -0
- package/dist/codegen-ChBi_hVa.js +2 -0
- package/dist/codegenCommand-DC6w2tNZ.js +30 -0
- package/dist/codemodRunner-DRRqXR74.js +5243 -0
- package/dist/commandRunner-BLAEFLjp.js +47 -0
- package/dist/commands-gutsz-Ac.js +808 -0
- package/dist/connectionConfig-UFlIEiys.js +66 -0
- package/dist/dashboardCommand-3YG8p-UA.js +25 -0
- package/dist/dataCommand-qL0r7fPO.js +535 -0
- package/dist/dataProfile-dW-PsfLB.js +15 -0
- package/dist/{dbCommand-DTLKAfbA.js → dbCommand-B6X0FZbq.js} +551 -401
- package/dist/dbCommand-CpdKLeQq.js +2 -0
- package/dist/{dev-C_P8FLSx.js → dev-CerMd0mW.js} +3122 -3129
- package/dist/dev-CoG-ZPx8.js +3 -0
- package/dist/devActivity-Dx_3nnGv.js +100 -0
- package/dist/devActivity.js +1 -1
- package/dist/dialectDriver-CgXnDfec.js +39 -0
- package/dist/discover-C9XKJDco.js +25 -0
- package/dist/doctorCommand-BvqGBwNG.js +2 -0
- package/dist/{checkCommand-xGhRFFg2.js → doctorCommand-CnDXQxfa.js} +520 -1278
- package/dist/dormancyCommand-Dszo57d6.js +69 -0
- package/dist/e2eCmd-BRabZww-.js +147 -0
- package/dist/embeddingsCommand-C0sKVRo1.js +73 -0
- package/dist/envCommand-DPgdV1Bq.js +60 -0
- package/dist/evalCommand-6RUfPen4.js +118 -0
- package/dist/evolveCommand-DHpkgjgH.js +281 -0
- package/dist/fileTaxonomy-CJfgOllU.js +457 -0
- package/dist/frameworkTableAssembly-BGHmck-x.js +2 -0
- package/dist/{frameworkTableAssembly-BwIrO5nv.js → frameworkTableAssembly-DkkP6BgC.js} +184 -148
- package/dist/generateCommand-oibemh97.js +147 -0
- package/dist/index.d.ts +45 -0
- package/dist/index.js +4 -3
- package/dist/infoCommand-BJw9nLUR.js +60 -0
- package/dist/{inspect-BUUjt773.js → inspect-CBqFtAKA.js} +82 -40
- package/dist/inspect-C_T_WGvl.js +2 -0
- package/dist/inspectCmd-Bppy-GGw.js +224 -0
- package/dist/inspectFetch-Cm8_wVvp.js +151 -0
- package/dist/inspectMetrics-CfdKLh6t.js +72 -0
- package/dist/loadEnv-D9nEOClM.js +44 -0
- package/dist/logFileSink-C_D2wRN1.js +105 -0
- package/dist/logsCmd-CCca3KRZ.js +260 -0
- package/dist/manifestBuild-ChsKAhmn.js +2 -0
- package/dist/{manifestBuild-BLrVuSlM.js → manifestBuild-sxpwdKY1.js} +1 -1
- package/dist/metaCommands-7MJfZ5cf.js +196 -0
- package/dist/migrate-CBwOt_iV.js +83 -0
- package/dist/mssqlClusterPatch-_4cE_nun.js +44 -0
- package/dist/newCommand-COWOJ1_E.js +156 -0
- package/dist/nodeEnvironment-cGFAj1J8.js +28 -0
- package/dist/packageCommand-Cug_3Ogl.js +271 -0
- package/dist/pageConvention-cEiRxdab.js +5 -0
- package/dist/privacyCommand-C-Df56U_.js +146 -0
- package/dist/projectScaffold-DmzEKHib.js +2 -0
- package/dist/projectScaffold-LMMtaavR.js +814 -0
- package/dist/renderModeScan-D7J1B7Kw.js +105 -0
- package/dist/renderProfile-1OWWAAtx.js +81 -0
- package/dist/runtimeRegistry-DMeKfTHP.js +81 -0
- package/dist/runtimeTrace-CRxalXTs.js +91 -0
- package/dist/scheduleCmd--jksTrf6.js +69 -0
- package/dist/scheduleManifestCmd-D2x0CTTY.js +249 -0
- package/dist/schemaIr-UJybUUZW.js +103 -0
- package/dist/{sdkgen-C81QIkiL.js → sdkgen-CYJscZC7.js} +111 -209
- package/dist/seedRunner-TFHHiToI.js +329 -0
- package/dist/serveCommand-B_isw7q4.js +1647 -0
- package/dist/serveCommand-DOvbgRnQ.js +2 -0
- package/dist/serveEntry.js +5 -5
- package/dist/serverlessCommand-CfJZy6dS.js +482 -0
- package/dist/start-9LiUOfES.js +1087 -0
- package/dist/start-B-9Nsp-S.js +3 -0
- package/dist/startEntry.js +2 -2
- package/dist/staticCommand-Dr2M6tpU.js +304 -0
- package/dist/storageCommand-Co6NfLqN.js +42 -0
- package/dist/templates-De8IR5-c.js +102 -0
- package/dist/test-CI6iDsYc.js +115 -0
- package/dist/tracesCmd-CkEZQrtt.js +232 -0
- package/dist/tsconfigPaths-BWXBWgcl.js +107 -0
- package/dist/tsxLoader-EuXmSJ1K.js +51 -0
- package/dist/typecheckCommand-BlsWiCNq.js +61 -0
- package/dist/updateCommand-Bkptutss.js +585 -0
- package/dist/updateCommand-us1_hdIC.js +2 -0
- package/dist/{inspectMetrics-1xzTKAFx.js → webDev-CBYvPqQr.js} +975 -1559
- package/dist/webDev-Cg-fFiyd2.js +2 -0
- package/dist/webhookDiscovery-CrGAfhIG.js +2 -0
- package/dist/webhookDiscovery-D7VaeMlz.js +51 -0
- package/dist/webhooksCommand-CID96Rga.js +267 -0
- package/dist/workflowsCmd-D1VTmLMY.js +608 -0
- package/package.json +179 -17
- package/templates/AGENTS.core.md +58 -3
- package/templates/AGENTS.md +64 -7
- package/templates/agent-docs/_index.md +6 -4
- package/templates/agent-docs/_manifest.json +22 -5
- package/templates/agent-docs/ai.md +370 -0
- package/templates/agent-docs/authentication.md +265 -31
- package/templates/agent-docs/caching.md +6 -0
- package/templates/agent-docs/cli.md +794 -50
- package/templates/agent-docs/data.md +550 -11
- package/templates/agent-docs/database/migrations.md +174 -25
- package/templates/agent-docs/database/misc.md +156 -40
- package/templates/agent-docs/database/querying.md +19 -1
- package/templates/agent-docs/database/scaling.md +60 -0
- package/templates/agent-docs/database/schema.md +1 -0
- package/templates/agent-docs/database/seedsdialects.md +208 -19
- package/templates/agent-docs/database/transactions.md +68 -0
- package/templates/agent-docs/deployment.md +69 -3
- package/templates/agent-docs/introduction.md +87 -16
- package/templates/agent-docs/local-first-mobile.md +79 -4
- package/templates/agent-docs/multi-tenancy.md +95 -20
- package/templates/agent-docs/observability.md +58 -3
- package/templates/agent-docs/plugins/ai-flows.md +161 -2
- package/templates/agent-docs/plugins/analytics-postgres.md +1 -1
- package/templates/agent-docs/plugins/audit.md +37 -1
- package/templates/agent-docs/plugins/auth-social.md +143 -0
- package/templates/agent-docs/plugins/auth-workos.md +4 -2
- package/templates/agent-docs/plugins/auth.md +131 -6
- package/templates/agent-docs/plugins/billing.md +132 -15
- package/templates/agent-docs/plugins/cdc-out.md +46 -7
- package/templates/agent-docs/plugins/clickhouse.md +1 -1
- package/templates/agent-docs/plugins/duckdb.md +1 -1
- package/templates/agent-docs/plugins/flags.md +132 -0
- package/templates/agent-docs/plugins/governance.md +105 -7
- package/templates/agent-docs/plugins/multitenancy.md +9 -4
- package/templates/agent-docs/plugins/presence.md +13 -2
- package/templates/agent-docs/plugins/ratelimit.md +9 -0
- package/templates/agent-docs/plugins/search.md +157 -6
- package/templates/agent-docs/plugins/sso-saml.md +47 -8
- package/templates/agent-docs/plugins/webhooks.md +105 -0
- package/templates/agent-docs/plugins.md +150 -18
- package/templates/agent-docs/reference.md +60 -3
- package/templates/agent-docs/releases.md +1117 -0
- package/templates/agent-docs/routing.md +43 -25
- package/templates/agent-docs/scheduling.md +10 -0
- package/templates/agent-docs/schema-driven-ui.md +92 -12
- package/templates/agent-docs/security.md +426 -0
- package/templates/agent-docs/templates/apibackends.md +87 -18
- package/templates/agent-docs/templates/appshells.md +32 -14
- package/templates/agent-docs/templates/overview.md +13 -8
- package/templates/agent-docs/testing.md +211 -14
- package/templates/agent-docs/whats-new.md +1700 -104
- package/templates/agent-docs/workflows.md +130 -14
- package/templates/apps/api-ai/actions/summarize.action.ts +11 -0
- package/templates/apps/api-ai/package.json +8 -7
- package/templates/apps/api-auth/actions/me.action.ts +13 -0
- package/templates/apps/api-auth/package.json +9 -8
- package/templates/apps/api-backend/mutations/notes.create.mutation.ts +9 -0
- package/templates/apps/api-backend/package.json +12 -8
- package/templates/apps/api-backend/queries/notes.query.ts +30 -8
- package/templates/apps/api-backend-deactivation/actions/users.get.action.ts +14 -0
- package/templates/apps/api-backend-deactivation/mutations/users.create.mutation.ts +8 -0
- package/templates/apps/api-backend-deactivation/mutations/users.deactivate.mutation.ts +10 -0
- package/templates/apps/api-backend-deactivation/package.json +8 -7
- package/templates/apps/api-backend-mail/actions/sendWelcome.action.ts +17 -0
- package/templates/apps/api-backend-mail/mutations/notes.create.mutation.ts +9 -0
- package/templates/apps/api-backend-mail/package.json +9 -8
- package/templates/apps/api-backend-mail/queries/notes.query.ts +30 -8
- package/templates/apps/api-backend-mariadb/.env.example +14 -0
- package/templates/apps/api-backend-mariadb/mutations/notes.create.mutation.ts +9 -0
- package/templates/apps/api-backend-mariadb/package.json +10 -9
- package/templates/apps/api-backend-mariadb/queries/notes.query.ts +30 -8
- package/templates/apps/api-backend-sqlite/.env.example +14 -0
- package/templates/apps/api-backend-sqlite/mutations/notes.create.mutation.ts +9 -0
- package/templates/apps/api-backend-sqlite/package.json +9 -8
- package/templates/apps/api-backend-sqlite/queries/notes.query.ts +30 -8
- package/templates/apps/api-backend-storage/actions/uploadAvatar.action.ts +13 -0
- package/templates/apps/api-backend-storage/actions/uploadDocument.action.ts +12 -0
- package/templates/apps/api-backend-storage/mutations/notes.create.mutation.ts +9 -0
- package/templates/apps/api-backend-storage/package.json +9 -8
- package/templates/apps/api-backend-storage/queries/notes.query.ts +30 -8
- package/templates/apps/api-cms/actions/content.get.action.ts +7 -0
- package/templates/apps/api-cms/actions/content.types.action.ts +6 -0
- package/templates/apps/api-cms/actions/me.action.ts +13 -0
- package/templates/apps/api-cms/app.config.ts +19 -0
- package/templates/apps/api-cms/authz.ts +63 -0
- package/templates/apps/api-cms/mutations/content.publish.mutation.ts +10 -0
- package/templates/apps/api-cms/mutations/content.saveDraft.mutation.ts +10 -0
- package/templates/apps/api-cms/mutations/content.unpublish.mutation.ts +5 -0
- package/templates/apps/api-cms/package.json +11 -10
- package/templates/apps/api-cms/queries/content.list.query.ts +23 -7
- package/templates/apps/api-cms/tests/accessDecisions.test.ts +121 -0
- package/templates/apps/api-cms/tests/content.descriptors.test.ts +8 -4
- package/templates/apps/api-collab/mutations/documents.create.mutation.ts +8 -0
- package/templates/apps/api-collab/mutations/documents.setBody.mutation.ts +13 -0
- package/templates/apps/api-collab/package.json +9 -8
- package/templates/apps/api-collab/queries/documents.query.ts +19 -7
- package/templates/apps/api-data-advanced/package.json +9 -8
- package/templates/apps/api-data-advanced/queries/authors.withBooks.query.ts +12 -0
- package/templates/apps/api-data-advanced/queries/books.search.query.ts +9 -0
- package/templates/apps/api-durable/mutations/orders.approve.mutation.ts +17 -0
- package/templates/apps/api-durable/mutations/orders.place.mutation.ts +9 -0
- package/templates/apps/api-durable/package.json +9 -8
- package/templates/apps/api-feature-flags/actions/notes.export.action.ts +16 -0
- package/templates/apps/api-feature-flags/mutations/notes.create.mutation.ts +12 -0
- package/templates/apps/api-feature-flags/package.json +10 -9
- package/templates/apps/api-governance/README.md +30 -8
- package/templates/apps/api-governance/actions/profiles.get.action.server.ts +17 -1
- package/templates/apps/api-governance/actions/profiles.get.action.ts +29 -4
- package/templates/apps/api-governance/database/schema.ts +16 -4
- package/templates/apps/api-governance/mutations/profiles.create.mutation.ts +12 -0
- package/templates/apps/api-governance/package.json +9 -8
- package/templates/apps/api-kv/actions/sync.pull.action.ts +15 -0
- package/templates/apps/api-kv/actions/sync.reset.action.ts +13 -0
- package/templates/apps/api-kv/actions/sync.status.action.ts +7 -0
- package/templates/apps/api-kv/package.json +9 -8
- package/templates/apps/api-kv/queries/events.list.query.ts +19 -8
- package/templates/apps/api-moderation/mutations/comments.create.mutation.ts +11 -0
- package/templates/apps/api-moderation/mutations/posts.create.mutation.ts +13 -0
- package/templates/apps/api-moderation/package.json +9 -8
- package/templates/apps/api-observability/mutations/notes.create.mutation.ts +8 -0
- package/templates/apps/api-observability/package.json +9 -8
- package/templates/apps/api-observability/queries/notes.list.query.ts +13 -0
- package/templates/apps/api-ratelimit/mutations/notes.create.mutation.ts +14 -0
- package/templates/apps/api-ratelimit/package.json +9 -8
- package/templates/apps/api-rbac/package.json +9 -8
- package/templates/apps/api-rest/package.json +8 -7
- package/templates/apps/api-saas/mutations/projects.create.mutation.ts +13 -0
- package/templates/apps/api-saas/package.json +12 -11
- package/templates/apps/api-saas/queries/projects.list.query.ts +11 -0
- package/templates/apps/api-saas-starter/actions/me.action.ts +13 -0
- package/templates/apps/api-saas-starter/app.config.ts +19 -0
- package/templates/apps/api-saas-starter/authz.ts +75 -0
- package/templates/apps/api-saas-starter/mutations/invites.create.mutation.ts +10 -0
- package/templates/apps/api-saas-starter/mutations/projects.create.mutation.ts +9 -0
- package/templates/apps/api-saas-starter/package.json +15 -11
- package/templates/apps/api-saas-starter/queries/invites.list.query.ts +19 -8
- package/templates/apps/api-saas-starter/queries/projects.list.query.ts +18 -7
- package/templates/apps/api-saas-starter/tests/accessDecisions.test.ts +135 -0
- package/templates/apps/api-search/mutations/articles.create.mutation.ts +14 -0
- package/templates/apps/api-search/package.json +9 -8
- package/templates/apps/api-search/queries/articles.list.query.ts +21 -8
- package/templates/apps/api-status/README.md +10 -3
- package/templates/apps/api-status/app.config.ts +8 -3
- package/templates/apps/api-status/authz.ts +5 -3
- package/templates/apps/api-status/package.json +9 -8
- package/templates/apps/api-status/queries/components.list.query.ts +14 -6
- package/templates/apps/api-status/queries/incidents.live.query.ts +23 -10
- package/templates/apps/api-status/queries/updates.list.query.ts +16 -9
- package/templates/apps/api-status/tests/status.test.ts +9 -1
- package/templates/apps/api-versioning/actions/documents.asOf.action.ts +12 -0
- package/templates/apps/api-versioning/actions/documents.history.action.ts +13 -0
- package/templates/apps/api-versioning/mutations/documents.create.mutation.ts +9 -0
- package/templates/apps/api-versioning/mutations/documents.update.mutation.ts +12 -0
- package/templates/apps/api-versioning/package.json +9 -8
- package/templates/apps/api-webhooks/mutations/orders.fulfill.mutation.ts +16 -0
- package/templates/apps/api-webhooks/package.json +10 -9
- package/templates/apps/api-webhooks/queries/orders.list.query.ts +10 -0
- package/templates/apps/changelog/package.json +8 -6
- package/templates/apps/edge-functions/package.json +2 -2
- package/templates/apps/frontend-admin/package.json +10 -8
- package/templates/apps/frontend-admin/src/lib/admin.ts +20 -9
- package/templates/apps/frontend-admin/src/locales/de.ts +11 -1
- package/templates/apps/frontend-admin/src/locales/en.ts +13 -1
- package/templates/apps/frontend-admin/src/pages/admin/[entity]/page.tsx +65 -22
- package/templates/apps/frontend-admin/src/pages/admin/entity.test.tsx +130 -23
- package/templates/apps/frontend-admin/src/pages/admin/layout.tsx +3 -2
- package/templates/apps/frontend-admin/src/pages/admin/page.test.tsx +19 -2
- package/templates/apps/frontend-admin/src/pages/admin/page.tsx +9 -4
- package/templates/apps/frontend-app/app.config.ts +4 -3
- package/templates/apps/frontend-app/package.json +11 -8
- package/templates/apps/frontend-app/src/lib/api.ts +25 -0
- package/templates/apps/frontend-app/src/pages/page.test.tsx +130 -82
- package/templates/apps/frontend-app/src/pages/page.tsx +14 -18
- package/templates/apps/frontend-auth/package.json +10 -8
- package/templates/apps/frontend-blank/package.json +9 -7
- package/templates/apps/frontend-cms/package.json +11 -9
- package/templates/apps/frontend-collab/package.json +12 -9
- package/templates/apps/frontend-collab/src/pages/page.test.tsx +122 -78
- package/templates/apps/frontend-contact/package.json +9 -7
- package/templates/apps/frontend-dashboard/package.json +9 -7
- package/templates/apps/frontend-docs/package.json +9 -7
- package/templates/apps/frontend-i18n/package.json +8 -6
- package/templates/apps/frontend-landing/package.json +9 -7
- package/templates/apps/frontend-portal/package.json +10 -8
- package/templates/apps/frontend-saas/app.config.ts +10 -6
- package/templates/apps/frontend-saas/package.json +10 -8
- package/templates/apps/frontend-saas/src/lib/api.ts +27 -32
- package/templates/apps/frontend-saas/src/pages/dashboard/billing/page.tsx +7 -8
- package/templates/apps/frontend-saas/src/pages/dashboard/page.test.tsx +27 -3
- package/templates/apps/frontend-saas/src/pages/dashboard/page.tsx +4 -4
- package/templates/apps/frontend-saas/src/pages/dashboard/team/page.tsx +3 -4
- package/templates/apps/frontend-spa/package.json +9 -7
- package/templates/apps/frontend-ssr/package.json +9 -7
- package/templates/apps/frontend-ssr-api/package.json +10 -8
- package/templates/apps/frontend-static-blog/package.json +8 -6
- package/templates/apps/frontend-status/package.json +10 -8
- package/templates/apps/mobile-app/README.md +1 -0
- package/templates/apps/mobile-app/package.json +4 -2
- package/templates/apps/mobile-app/src/app/index.tsx +22 -12
- package/templates/apps/mobile-app/src/app/orders/[id].tsx +1 -1
- package/templates/apps/mobile-app/src/lib/api.ts +34 -0
- package/templates/apps/mobile-app/voltro.mobile.ts +4 -2
- package/templates/baselines/bare/.env.example +14 -0
- package/templates/baselines/bare/baseline.json +4 -4
- package/templates/baselines/compose/.env.example +14 -0
- package/templates/baselines/compose/README.md +1 -1
- package/templates/baselines/compose/baseline.json +5 -5
- package/templates/baselines/compose-mariadb/.env.example +14 -0
- package/templates/baselines/compose-mariadb/README.md +1 -1
- package/templates/baselines/compose-mariadb/baseline.json +5 -5
- package/templates/baselines/helm/.env.example +14 -0
- package/templates/baselines/helm/baseline.json +4 -4
- package/dist/apiBuild-C-x9YacA.js +0 -2
- package/dist/checkCommand-DRovTKza.js +0 -2
- package/dist/commands-CJfepbm4.js +0 -11541
- package/dist/dbCommand-b1gum4td.js +0 -2
- package/dist/dev-iiMtlkfs.js +0 -3
- package/dist/devActivity-BhIu6ncs.js +0 -159
- package/dist/frameworkTableAssembly-D-EebUQX.js +0 -2
- package/dist/inspect-mmBuRXmy.js +0 -2
- package/dist/manifestBuild-Dj8Jjoto.js +0 -2
- package/dist/seedRunner-Bqxgp7HZ.js +0 -230
- package/dist/serveCommand-DdaM4Hup.js +0 -1608
- package/dist/start-C0koT0UO.js +0 -1084
- /package/templates/apps/api-ai/actions/{summarize.action.server.tsx → summarize.action.server.ts} +0 -0
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { r as e } from "./appGraph-gQ_6GkQQ.js";
|
|
2
|
+
import { dirname as t, join as n } from "node:path";
|
|
3
|
+
import { promises as r } from "node:fs";
|
|
4
|
+
import { createLogger as i } from "@voltro/logger";
|
|
5
|
+
import { Effect as a, Schema as o } from "effect";
|
|
6
|
+
import { generateObject as s } from "@voltro/ai";
|
|
7
|
+
//#region src/appBuilder.ts
|
|
8
|
+
var c = 3, l = 50, u = 256 * 1024, d = (e) => e.reduce((e, t) => e + Buffer.byteLength(t.content, "utf8"), 0), f = async (t, n) => {
|
|
9
|
+
let r = Math.max(1, n.maxAttempts ?? c), i = n.maxArtifacts ?? l, a = n.maxTotalBytes ?? u, o = [];
|
|
10
|
+
for (let s = 1; s <= r; s++) {
|
|
11
|
+
let r = await n.generate({
|
|
12
|
+
prompt: t,
|
|
13
|
+
attempt: s,
|
|
14
|
+
priorDiagnostics: o
|
|
15
|
+
});
|
|
16
|
+
if (r.artifacts.length === 0) return {
|
|
17
|
+
status: "rejected",
|
|
18
|
+
reason: "empty",
|
|
19
|
+
attempts: s,
|
|
20
|
+
diagnostics: []
|
|
21
|
+
};
|
|
22
|
+
if (r.artifacts.length > i || d(r.artifacts) > a) return {
|
|
23
|
+
status: "rejected",
|
|
24
|
+
reason: "too-large",
|
|
25
|
+
attempts: s,
|
|
26
|
+
diagnostics: []
|
|
27
|
+
};
|
|
28
|
+
let c = e(r.graph);
|
|
29
|
+
if (c.ok) return {
|
|
30
|
+
status: "accepted",
|
|
31
|
+
proposal: r,
|
|
32
|
+
attempts: s,
|
|
33
|
+
diagnostics: c.diagnostics
|
|
34
|
+
};
|
|
35
|
+
o = c.diagnostics;
|
|
36
|
+
}
|
|
37
|
+
return {
|
|
38
|
+
status: "rejected",
|
|
39
|
+
reason: "check-failed",
|
|
40
|
+
attempts: r,
|
|
41
|
+
diagnostics: o
|
|
42
|
+
};
|
|
43
|
+
}, p = o.Struct({
|
|
44
|
+
tag: o.String,
|
|
45
|
+
kind: o.String,
|
|
46
|
+
file: o.optional(o.String),
|
|
47
|
+
source: o.optional(o.Union(o.String, o.Array(o.String))),
|
|
48
|
+
targets: o.optional(o.Array(o.Struct({
|
|
49
|
+
table: o.String,
|
|
50
|
+
op: o.String
|
|
51
|
+
}))),
|
|
52
|
+
binds: o.optional(o.Array(o.String)),
|
|
53
|
+
requiresScopes: o.optional(o.Array(o.String))
|
|
54
|
+
}), m = o.Struct({
|
|
55
|
+
tables: o.Array(o.String),
|
|
56
|
+
procedures: o.Array(p),
|
|
57
|
+
scopes: o.optional(o.Array(o.String)),
|
|
58
|
+
routes: o.optional(o.Array(o.Struct({
|
|
59
|
+
pattern: o.String,
|
|
60
|
+
binds: o.Array(o.String),
|
|
61
|
+
file: o.optional(o.String)
|
|
62
|
+
})))
|
|
63
|
+
}), h = o.Struct({
|
|
64
|
+
graph: m,
|
|
65
|
+
artifacts: o.Array(o.Struct({
|
|
66
|
+
path: o.String,
|
|
67
|
+
content: o.String
|
|
68
|
+
}))
|
|
69
|
+
}), g = (e, t) => {
|
|
70
|
+
let n = [
|
|
71
|
+
"You are a Voltro app builder. Emit a structured proposal: the app GRAPH",
|
|
72
|
+
"(tables + procedures + routes) AND the FILES (artifacts) that realise it.",
|
|
73
|
+
"",
|
|
74
|
+
"You may ONLY use these framework primitives / conventions:",
|
|
75
|
+
...e.length > 0 ? e.map((e) => `- ${e}`) : ["- (no capability manifest provided)"],
|
|
76
|
+
"",
|
|
77
|
+
"Rules:",
|
|
78
|
+
"- Every procedure `tag` is `<domain>.<action>` (camelCase segments).",
|
|
79
|
+
"- A query declares `source` (the table(s) it reads); a mutation declares",
|
|
80
|
+
" `targets` ([{ table, op }]); a route `binds` rpc tags that MUST exist.",
|
|
81
|
+
"- `requiresScopes` lists the RBAC scopes a handler needs (must be in `scopes`).",
|
|
82
|
+
"- Emit one artifact per file with its full `content`. Keep it minimal + valid."
|
|
83
|
+
];
|
|
84
|
+
return t.length > 0 && n.push("", "Your PREVIOUS attempt FAILED these checks — FIX each before re-emitting:", ...t.map((e) => `- [${e.rule}]${e.node ? ` ${e.node}` : ""}: ${e.breaks}${e.fix ? ` → ${e.fix}` : ""}`)), n.join("\n");
|
|
85
|
+
}, _ = (e) => async ({ prompt: t, priorDiagnostics: n }) => await a.runPromise(s({
|
|
86
|
+
schema: h,
|
|
87
|
+
prompt: t,
|
|
88
|
+
system: g(e.manifest, n),
|
|
89
|
+
...e.provider === void 0 ? {} : { provider: e.provider },
|
|
90
|
+
...e.maxTokens === void 0 ? {} : { maxTokens: e.maxTokens }
|
|
91
|
+
}).pipe(a.map((e) => e.object))), v = (e) => {
|
|
92
|
+
let t = [];
|
|
93
|
+
for (let n of e.tables) {
|
|
94
|
+
let e = n.columns.map((e) => `${e.name}:${e.type}${e.nullable ? "?" : ""}${e.refersTo ? `→${e.refersTo}` : ""}`).join(", ");
|
|
95
|
+
t.push(`table: ${n.name}(${e})${n.reactive ? " [reactive]" : ""}`);
|
|
96
|
+
}
|
|
97
|
+
for (let n of e.procedures) t.push(`${n.kind}: ${n.tag}`);
|
|
98
|
+
for (let n of e.workflows) t.push(`workflow: ${n.name}`);
|
|
99
|
+
return e.widgets.length > 0 && t.push(`widgets: ${e.widgets.join(", ")}`), t;
|
|
100
|
+
}, y = async (e, t) => {
|
|
101
|
+
let r = await t.readManifest();
|
|
102
|
+
if (r === null) return t.log.error("voltro generate: no app.manifest.generated.json — run `voltro dev` once to emit it, then retry"), {
|
|
103
|
+
status: "rejected",
|
|
104
|
+
reason: "empty",
|
|
105
|
+
attempts: 0,
|
|
106
|
+
diagnostics: []
|
|
107
|
+
};
|
|
108
|
+
let i = v(r);
|
|
109
|
+
t.log.info(`voltro generate: ${i.length} capabilities in scope; asking the model…`);
|
|
110
|
+
let a = await f(e, { generate: t.makeGenerate(i) });
|
|
111
|
+
if (a.status !== "accepted") {
|
|
112
|
+
t.log.warn(`voltro generate: rejected (${a.reason}) after ${a.attempts} attempt(s) — nothing written`);
|
|
113
|
+
for (let e of a.diagnostics) t.log.warn(` [${e.rule}]${e.node ? ` ${e.node}` : ""}: ${e.breaks}${e.fix ? ` → ${e.fix}` : ""}`);
|
|
114
|
+
return a;
|
|
115
|
+
}
|
|
116
|
+
let o = a.proposal.artifacts;
|
|
117
|
+
if (!t.write) {
|
|
118
|
+
t.log.info(`voltro generate: ✓ ${o.length} artifact(s) passed voltro check (dry-run — pass --write to apply):`);
|
|
119
|
+
for (let e of o) t.log.info(` ${e.path}`);
|
|
120
|
+
return a;
|
|
121
|
+
}
|
|
122
|
+
for (let e of o) await t.writeFile(n(t.root, e.path), e.content), t.log.info(` wrote ${e.path}`);
|
|
123
|
+
return t.log.info(`voltro generate: ✓ wrote ${o.length} artifact(s)`), a;
|
|
124
|
+
}, b = async (e) => {
|
|
125
|
+
let a = e.includes("--write"), o = e.filter((e) => !e.startsWith("--")).join(" ").trim(), s = i({ scope: "voltro:generate" });
|
|
126
|
+
if (o.length === 0) return s.error("usage: voltro generate \"<prompt>\" [--write]"), 2;
|
|
127
|
+
let c = process.cwd();
|
|
128
|
+
return (await y(o, {
|
|
129
|
+
root: c,
|
|
130
|
+
write: a,
|
|
131
|
+
log: s,
|
|
132
|
+
readManifest: async () => {
|
|
133
|
+
try {
|
|
134
|
+
let e = await r.readFile(n(c, "app.manifest.generated.json"), "utf8");
|
|
135
|
+
return JSON.parse(e);
|
|
136
|
+
} catch {
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
makeGenerate: (e) => _({ manifest: e }),
|
|
141
|
+
writeFile: async (e, n) => {
|
|
142
|
+
await r.mkdir(t(e), { recursive: !0 }), await r.writeFile(e, n, "utf8");
|
|
143
|
+
}
|
|
144
|
+
})).status === "accepted" ? 0 : 1;
|
|
145
|
+
};
|
|
146
|
+
//#endregion
|
|
147
|
+
export { b as runGenerateCommand };
|
package/dist/index.d.ts
CHANGED
|
@@ -15,6 +15,35 @@ export declare const CLI_NAME: "framework";
|
|
|
15
15
|
*/
|
|
16
16
|
export declare const COMMAND_GROUPS: ReadonlyArray<readonly [string, ReadonlyArray<string>]>;
|
|
17
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Structured `--help` for a command that does not print its own.
|
|
20
|
+
*
|
|
21
|
+
* The dispatcher used to answer `--help` for 39 of the 53 commands with a
|
|
22
|
+
* single summary line — no flags, no example — and `--help` is the second thing
|
|
23
|
+
* a user types after a command surprises them. One renderer
|
|
24
|
+
* (`renderCommandHelp`) turns this data into that page, so growing the coverage
|
|
25
|
+
* is a data edit rather than 39 hand-written print blocks.
|
|
26
|
+
*
|
|
27
|
+
* **Every flag named here must be one the command actually parses.**
|
|
28
|
+
* `commandHelp.test.ts` derives each command's implementation module from the
|
|
29
|
+
* `import('./x')` in its own dispatch entry and fails if a documented flag is
|
|
30
|
+
* not read there — the per-command form of the repo-wide `check-message-apis`
|
|
31
|
+
* rule, which can only see the union of all sources and would therefore accept
|
|
32
|
+
* `voltro test --create-only` because `migrate` happens to parse it.
|
|
33
|
+
*/
|
|
34
|
+
export declare interface CommandHelp {
|
|
35
|
+
/** Usage line WITHOUT the leading `voltro <name>` — e.g. `[app] [--watch]`. */
|
|
36
|
+
readonly usage?: string;
|
|
37
|
+
/** `[flag, what it does]`. The flag includes its dashes and any `<value>`. */
|
|
38
|
+
readonly flags?: ReadonlyArray<readonly [string, string]>;
|
|
39
|
+
/** `[full command line, what it does]`. Each must start with `voltro <name>`. */
|
|
40
|
+
readonly examples?: ReadonlyArray<readonly [string, string]>;
|
|
41
|
+
/** Environment variables that change what this command does. */
|
|
42
|
+
readonly env?: ReadonlyArray<readonly [string, string]>;
|
|
43
|
+
/** Anything else worth a sentence — printed under the flags. */
|
|
44
|
+
readonly notes?: ReadonlyArray<string>;
|
|
45
|
+
}
|
|
46
|
+
|
|
18
47
|
export declare const COMMANDS: ReadonlyArray<CommandSpec>;
|
|
19
48
|
|
|
20
49
|
export declare type CommandSpec = {
|
|
@@ -27,6 +56,9 @@ export declare type CommandSpec = {
|
|
|
27
56
|
/** This command prints its own richer `--help` — let `--help`/`-h` reach it
|
|
28
57
|
* instead of the dispatcher's uniform one-line fallback. */
|
|
29
58
|
readonly handlesHelp?: boolean;
|
|
59
|
+
/** Flags + examples the shared renderer turns into a real `--help` page.
|
|
60
|
+
* Mutually exclusive with `handlesHelp` (that command prints its own). */
|
|
61
|
+
readonly help?: CommandHelp;
|
|
30
62
|
};
|
|
31
63
|
|
|
32
64
|
export declare const dispatch: (argv: ReadonlyArray<string>) => Promise<number>;
|
|
@@ -39,6 +71,19 @@ export declare const listTemplates: () => Promise<ReadonlyArray<TemplateInfo>>;
|
|
|
39
71
|
|
|
40
72
|
export declare const printUsage: () => void;
|
|
41
73
|
|
|
74
|
+
/**
|
|
75
|
+
* ONE renderer for every command's `--help`.
|
|
76
|
+
*
|
|
77
|
+
* Returned as lines rather than printed so the test can assert on the page
|
|
78
|
+
* without capturing stdout — and so `voltro help <command>` and
|
|
79
|
+
* `voltro <command> --help` cannot render differently.
|
|
80
|
+
*
|
|
81
|
+
* A command with no `help` block still gets a real page: name, summary, docs
|
|
82
|
+
* link. That is the old fallback, kept as the FLOOR rather than as the answer —
|
|
83
|
+
* what changed is that a command CAN now say more without printing it by hand.
|
|
84
|
+
*/
|
|
85
|
+
export declare const renderCommandHelp: (command: CommandSpec) => ReadonlyArray<string>;
|
|
86
|
+
|
|
42
87
|
/** Command names close enough to a typo to suggest. Also matches on prefix /
|
|
43
88
|
* substring, so `voltro work` suggests `workflows`. Exported for the test. */
|
|
44
89
|
export declare const suggestCommands: (input: string, limit?: number) => ReadonlyArray<string>;
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { a as e, i as t, n, o as r, r as i, t as a } from "./commands-
|
|
1
|
+
import { a as e, i as t, n, o as r, r as i, t as a } from "./commands-gutsz-Ac.js";
|
|
2
|
+
import { r as o } from "./templates-De8IR5-c.js";
|
|
2
3
|
//#region src/index.ts
|
|
3
|
-
var
|
|
4
|
+
var s = "framework";
|
|
4
5
|
//#endregion
|
|
5
|
-
export {
|
|
6
|
+
export { s as CLI_NAME, a as COMMANDS, n as COMMAND_GROUPS, i as dispatch, o as listTemplates, t as printUsage, e as renderCommandHelp, r as suggestCommands };
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { n as e, r as t, t as n } from "./cliOutput-D1tSBoRM.js";
|
|
2
|
+
import { o as r } from "./updateCommand-Bkptutss.js";
|
|
3
|
+
import { join as i, resolve as a } from "node:path";
|
|
4
|
+
import { readFileSync as o, readdirSync as s, statSync as c } from "node:fs";
|
|
5
|
+
//#region src/infoCommand.ts
|
|
6
|
+
var l = () => {
|
|
7
|
+
let e = new URL("data:video/mp2t;base64,Ly8gQHZvbHRyby9jbGkg4oCUIHRoZSBgZnJhbWV3b3JrYCBjb21tYW5kLWxpbmUgdG9vbC4gRmlyc3Qgc2xpY2UgZXhwb3NlcwovLyB0aGUgY29tbWFuZCByZWdpc3RyeSBhbmQgZGlzcGF0Y2g7IGVhY2ggc3ViY29tbWFuZCdzIGltcGxlbWVudGF0aW9uIGxhbmRzCi8vIGFzIHRoZSByZWxldmFudCBwcmltaXRpdmUgY29tZXMgb25saW5lLgoKZXhwb3J0IGNvbnN0IENMSV9OQU1FID0gJ2ZyYW1ld29yaycgYXMgY29uc3QKCmV4cG9ydCAqIGZyb20gJy4vY29tbWFuZHMnCmV4cG9ydCB7IGxpc3RUZW1wbGF0ZXMsIHR5cGUgVGVtcGxhdGVJbmZvIH0gZnJvbSAnLi90ZW1wbGF0ZXMnCgovLyBgU3RhcnR1cENvbnRleHRgIC8gYFN0YXJ0dXBGbmAgYXJlIGV4cG9zZWQgdmlhIHRoZSBkZWRpY2F0ZWQKLy8gc3VicGF0aCBgQHZvbHRyby9jbGkvc3RhcnR1cGAuIFN1YnBhdGggaW1wb3J0IGtlZXBzIHRoZSBDTEkncyBoZWF2eQovLyB0cmFuc2l0aXZlIGRlcHMgKHN0YXJ0LnRzLCBkZXYudHMsIOKApikgb3V0IG9mIHVzZXItYXBwCi8vIHR5cGVjaGVja2luZyB3aGVuIGFsbCB0aGV5IG5lZWQgaXMgdGhlIHR5cGUuCg==", "" + import.meta.url).pathname;
|
|
8
|
+
for (let t of [i(e, "..", "package.json"), i(e, "package.json")]) try {
|
|
9
|
+
return JSON.parse(o(t, "utf8")).version ?? "0.0.0";
|
|
10
|
+
} catch {}
|
|
11
|
+
return "0.0.0";
|
|
12
|
+
}, u = (e) => {
|
|
13
|
+
let t = i(e, "node_modules", "@voltro"), n;
|
|
14
|
+
try {
|
|
15
|
+
n = s(t).filter((e) => {
|
|
16
|
+
try {
|
|
17
|
+
return c(i(t, e)).isDirectory();
|
|
18
|
+
} catch {
|
|
19
|
+
return !1;
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
} catch {
|
|
23
|
+
return [];
|
|
24
|
+
}
|
|
25
|
+
let r = [];
|
|
26
|
+
for (let e of [...n].sort()) {
|
|
27
|
+
let n = "unknown";
|
|
28
|
+
try {
|
|
29
|
+
n = JSON.parse(o(i(t, e, "package.json"), "utf8")).version ?? "unknown";
|
|
30
|
+
} catch {}
|
|
31
|
+
r.push({
|
|
32
|
+
name: `@voltro/${e}`,
|
|
33
|
+
version: n
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
return r;
|
|
37
|
+
}, d = (e, t = process.env) => {
|
|
38
|
+
let n = u(e), i = [...new Set(n.map((e) => e.version).filter((e) => e !== "unknown"))].sort();
|
|
39
|
+
return {
|
|
40
|
+
cliVersion: l(),
|
|
41
|
+
node: process.version,
|
|
42
|
+
platform: `${process.platform}-${process.arch}`,
|
|
43
|
+
packageManager: r(e),
|
|
44
|
+
dialect: (t.DB_DIALECT ?? "postgres").toLowerCase(),
|
|
45
|
+
dbUrlConfigured: typeof t.DB_URL == "string" && t.DB_URL.length > 0,
|
|
46
|
+
voltroPackages: n,
|
|
47
|
+
versionSkew: i.length > 1 ? i : []
|
|
48
|
+
};
|
|
49
|
+
}, f = async (r) => {
|
|
50
|
+
let i = t(r);
|
|
51
|
+
i && n();
|
|
52
|
+
let o = a(r.find((e) => !e.startsWith("-")) ?? process.cwd()), s = d(o);
|
|
53
|
+
if (i) return e(s), +(s.versionSkew.length > 0);
|
|
54
|
+
if (console.log(`voltro v${s.cliVersion}`), console.log(` node ${s.node} (${s.platform})`), console.log(` package manager ${s.packageManager}`), console.log(` dialect ${s.dialect}${s.dbUrlConfigured ? "" : " (DB_URL not set)"}`), s.voltroPackages.length === 0) return console.log(`\n No @voltro packages found under ${o}/node_modules — run from an app root with deps installed.`), 0;
|
|
55
|
+
console.log(`\n @voltro packages (${s.voltroPackages.length}):`);
|
|
56
|
+
for (let e of s.voltroPackages) console.log(` ${e.name.padEnd(28)} ${e.version}`);
|
|
57
|
+
return s.versionSkew.length > 0 ? (console.log(""), console.log(` ⚠ version skew — @voltro/* are released in lockstep but ${s.versionSkew.length} versions are installed:`), console.log(` ${s.versionSkew.join(", ")}`), console.log(" Run `voltro update` to realign every @voltro/* package."), 1) : 0;
|
|
58
|
+
};
|
|
59
|
+
//#endregion
|
|
60
|
+
export { f as runInfoCommand };
|
|
@@ -46,6 +46,13 @@ var n = "/_voltro/inspect", r = () => process.env.VOLTRO_INSPECT === "off", i =
|
|
|
46
46
|
let t = [];
|
|
47
47
|
for (let n of e) {
|
|
48
48
|
if (typeof n != "object" || !n) continue;
|
|
49
|
+
if (typeof n.open == "string") {
|
|
50
|
+
t.push({
|
|
51
|
+
kind: "open",
|
|
52
|
+
reason: n.open
|
|
53
|
+
});
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
49
56
|
if (typeof n.action == "string" && typeof n.resourceType == "string") {
|
|
50
57
|
t.push({
|
|
51
58
|
kind: "policy",
|
|
@@ -172,12 +179,17 @@ var n = "/_voltro/inspect", r = () => process.env.VOLTRO_INSPECT === "off", i =
|
|
|
172
179
|
name: e.name,
|
|
173
180
|
reactive: e.isReactive,
|
|
174
181
|
framework: e.isFrameworkTable,
|
|
182
|
+
editable: e.editable ?? !0,
|
|
183
|
+
...e.pkColumn === void 0 ? {} : { pkColumn: e.pkColumn },
|
|
175
184
|
columns: e.columns.map((e) => ({
|
|
176
185
|
name: e.name,
|
|
177
186
|
type: String(e.type),
|
|
178
187
|
nullable: e.nullable,
|
|
179
188
|
...e.referencesTable === void 0 ? {} : { refersTo: e.referencesTable },
|
|
180
|
-
...e.oneOf === void 0 ? {} : { enum: e.oneOf }
|
|
189
|
+
...e.oneOf === void 0 ? {} : { enum: e.oneOf },
|
|
190
|
+
...e.serverOnly === !0 ? { serverOnly: !0 } : {},
|
|
191
|
+
...e.encrypted === !0 ? { encrypted: !0 } : {},
|
|
192
|
+
...e.sensitive === void 0 ? {} : { sensitive: e.sensitive }
|
|
181
193
|
}))
|
|
182
194
|
}))
|
|
183
195
|
}), S = (e, t, n = {}, i = {}) => {
|
|
@@ -252,11 +264,22 @@ var n = "/_voltro/inspect", r = () => process.env.VOLTRO_INSPECT === "off", i =
|
|
|
252
264
|
set: 0,
|
|
253
265
|
missingRequired: 0
|
|
254
266
|
}
|
|
255
|
-
}, c) : s(200, t.env(), c) : o === "/_voltro/inspect/data/tables" ? t.kind === "api" ? t.inspectTables === void 0 ? s(200, { tables: [] }, c) : s(200, t.inspectTables(), c) : s(404, { error: "data viewer is api-only" }, c) : o === "/_voltro/inspect/invoke" ? s(404, { error: "invoke not enabled here — use POST handler" }, c) : s(404, {
|
|
267
|
+
}, c) : s(200, t.env(), c) : o === "/_voltro/inspect/data/tables" ? t.kind === "api" ? t.inspectTables === void 0 ? s(200, { tables: [] }, c) : s(200, t.inspectTables(), c) : s(404, { error: "data viewer is api-only" }, c) : o === "/_voltro/inspect/invoke" ? s(404, { error: "invoke not enabled here — use POST handler" }, c) : C.has(o) ? s(404, {
|
|
268
|
+
error: "endpoint not mounted on this instance",
|
|
269
|
+
path: o,
|
|
270
|
+
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."
|
|
271
|
+
}, c) : s(404, {
|
|
256
272
|
error: "unknown inspect endpoint",
|
|
257
273
|
path: o
|
|
258
274
|
}, c);
|
|
259
|
-
}, C =
|
|
275
|
+
}, C = /* @__PURE__ */ new Set([
|
|
276
|
+
`${n}/logs`,
|
|
277
|
+
`${n}/traces`,
|
|
278
|
+
`${n}/workflows`,
|
|
279
|
+
`${n}/storage`,
|
|
280
|
+
`${n}/aggregates`,
|
|
281
|
+
`${n}/flags`
|
|
282
|
+
]), w = async (e, t, n, i = {}) => {
|
|
260
283
|
let o = l(t.origin ?? t.Origin);
|
|
261
284
|
if (r()) return s(503, { error: "inspect disabled (VOLTRO_INSPECT=off)" }, o);
|
|
262
285
|
let c = (i.method ?? "POST").toUpperCase();
|
|
@@ -291,7 +314,26 @@ var n = "/_voltro/inspect", r = () => process.env.VOLTRO_INSPECT === "off", i =
|
|
|
291
314
|
n !== "cookie" && (h[n] = t);
|
|
292
315
|
}
|
|
293
316
|
return s(200, await p(f.input, h), o);
|
|
294
|
-
},
|
|
317
|
+
}, T = async (e, t, n, i = {}) => {
|
|
318
|
+
let o = _(e);
|
|
319
|
+
if (!y(o) || o !== "/_voltro/inspect/migrations" || (i.method ?? "GET").toUpperCase() !== "GET") return null;
|
|
320
|
+
let c = l(n.origin ?? n.Origin);
|
|
321
|
+
if (r()) return s(503, { error: "inspect disabled (VOLTRO_INSPECT=off)" }, c);
|
|
322
|
+
let u = (i.authResolver ?? a)(n, "GET");
|
|
323
|
+
return u.ok ? t.kind === "api" ? t.migrations === void 0 ? s(200, {
|
|
324
|
+
drift: {
|
|
325
|
+
isDrifted: !1,
|
|
326
|
+
liveFingerprint: "",
|
|
327
|
+
liveSnapshot: { tables: [] }
|
|
328
|
+
},
|
|
329
|
+
pending: null,
|
|
330
|
+
history: [],
|
|
331
|
+
softDropSnapshots: []
|
|
332
|
+
}, c) : s(200, await t.migrations(), c) : s(404, { error: "migrations endpoint is api-only" }, c) : s(401, {
|
|
333
|
+
error: "unauthorized",
|
|
334
|
+
reason: u.reason
|
|
335
|
+
}, c);
|
|
336
|
+
}, E = async (e, t, i, o, c = {}) => {
|
|
295
337
|
let u = _(e);
|
|
296
338
|
if (!y(u) || !u.startsWith("/_voltro/inspect/webhooks/")) return null;
|
|
297
339
|
let f = l(i.origin ?? i.Origin);
|
|
@@ -351,7 +393,7 @@ var n = "/_voltro/inspect", r = () => process.env.VOLTRO_INSPECT === "off", i =
|
|
|
351
393
|
message: e?.message ?? String(e)
|
|
352
394
|
}, f);
|
|
353
395
|
}
|
|
354
|
-
},
|
|
396
|
+
}, D = async (e, t, i, o, c = {}) => {
|
|
355
397
|
let u = _(e);
|
|
356
398
|
if (!y(u)) return null;
|
|
357
399
|
let d = l(i.origin ?? i.Origin), f = (c.method ?? "POST").toUpperCase();
|
|
@@ -394,7 +436,7 @@ var n = "/_voltro/inspect", r = () => process.env.VOLTRO_INSPECT === "off", i =
|
|
|
394
436
|
message: e?.message ?? String(e)
|
|
395
437
|
}, d);
|
|
396
438
|
}
|
|
397
|
-
},
|
|
439
|
+
}, O = async (e, t, n, i = {}) => {
|
|
398
440
|
if (_(e) !== "/_voltro/inspect/data/rows") return null;
|
|
399
441
|
let o = l(n.origin ?? n.Origin), c = (i.method ?? "GET").toUpperCase();
|
|
400
442
|
if (c !== "GET") return s(405, {
|
|
@@ -409,9 +451,9 @@ var n = "/_voltro/inspect", r = () => process.env.VOLTRO_INSPECT === "off", i =
|
|
|
409
451
|
}, o);
|
|
410
452
|
if (t.kind !== "api") return s(404, { error: "data viewer is api-only" }, o);
|
|
411
453
|
if (t.inspectRows === void 0) return s(404, { error: "inspectRows not configured" }, o);
|
|
412
|
-
let d =
|
|
454
|
+
let d = A(e), f = d.get("table");
|
|
413
455
|
if (!f) return s(400, { error: "query.table is required" }, o);
|
|
414
|
-
let p =
|
|
456
|
+
let p = j(d.get("offset")) ?? 0, m = j(d.get("limit")) ?? 50, h = {}, g = d.get("q");
|
|
415
457
|
if (g) {
|
|
416
458
|
if (g.length > 8192) return s(400, { error: "query.q too large" }, o);
|
|
417
459
|
try {
|
|
@@ -436,7 +478,7 @@ var n = "/_voltro/inspect", r = () => process.env.VOLTRO_INSPECT === "off", i =
|
|
|
436
478
|
message: e?.message ?? String(e)
|
|
437
479
|
}, o);
|
|
438
480
|
}
|
|
439
|
-
},
|
|
481
|
+
}, k = async (t, n, i, o = {}) => {
|
|
440
482
|
if (_(t) !== "/_voltro/inspect/provenance") return null;
|
|
441
483
|
let c = l(i.origin ?? i.Origin), u = (o.method ?? "GET").toUpperCase();
|
|
442
484
|
if (u !== "GET") return s(405, {
|
|
@@ -453,7 +495,7 @@ var n = "/_voltro/inspect", r = () => process.env.VOLTRO_INSPECT === "off", i =
|
|
|
453
495
|
if (p) return p;
|
|
454
496
|
if (n.kind !== "api") return s(404, { error: "provenance is api-only" }, c);
|
|
455
497
|
if (n.inspectRows === void 0) return s(404, { error: "inspectRows not configured" }, c);
|
|
456
|
-
let m =
|
|
498
|
+
let m = A(t), h = m.get("table"), g = m.get("id"), v = m.get("column") ?? void 0;
|
|
457
499
|
if (!h || !g) return s(400, { error: "query.table and query.id are required" }, c);
|
|
458
500
|
try {
|
|
459
501
|
let t = (await n.inspectRows({
|
|
@@ -480,14 +522,14 @@ var n = "/_voltro/inspect", r = () => process.env.VOLTRO_INSPECT === "off", i =
|
|
|
480
522
|
message: e?.message ?? String(e)
|
|
481
523
|
}, c);
|
|
482
524
|
}
|
|
483
|
-
},
|
|
525
|
+
}, A = (e) => {
|
|
484
526
|
let t = e.indexOf("?");
|
|
485
527
|
return t < 0 ? new URLSearchParams() : new URLSearchParams(e.slice(t + 1));
|
|
486
|
-
},
|
|
528
|
+
}, j = (e) => {
|
|
487
529
|
if (e === null || e === "") return;
|
|
488
530
|
let t = Number(e);
|
|
489
531
|
return Number.isFinite(t) && t >= 0 ? Math.floor(t) : void 0;
|
|
490
|
-
},
|
|
532
|
+
}, M = async (e, t, n, i = {}) => {
|
|
491
533
|
if (_(e) !== "/_voltro/inspect/workflows/runs") return null;
|
|
492
534
|
let o = l(n.origin ?? n.Origin), c = (i.method ?? "GET").toUpperCase();
|
|
493
535
|
if (c !== "GET") return s(405, {
|
|
@@ -507,7 +549,7 @@ var n = "/_voltro/inspect", r = () => process.env.VOLTRO_INSPECT === "off", i =
|
|
|
507
549
|
offset: 0,
|
|
508
550
|
limit: 50
|
|
509
551
|
}, o);
|
|
510
|
-
let d =
|
|
552
|
+
let d = A(e);
|
|
511
553
|
try {
|
|
512
554
|
let e = d.get("deadLettered") === "1" || d.get("deadLettered") === "true", n = (d.get("statuses") ?? "").split(",").map((e) => e.trim()).filter((e) => e !== "");
|
|
513
555
|
return s(200, await t.inspectWorkflowRuns({
|
|
@@ -518,8 +560,8 @@ var n = "/_voltro/inspect", r = () => process.env.VOLTRO_INSPECT === "off", i =
|
|
|
518
560
|
...d.get("idPrefix") === null ? {} : { idPrefix: d.get("idPrefix") },
|
|
519
561
|
...d.get("from") === null ? {} : { startedAfter: d.get("from") },
|
|
520
562
|
...d.get("to") === null ? {} : { startedBefore: d.get("to") },
|
|
521
|
-
offset:
|
|
522
|
-
limit:
|
|
563
|
+
offset: j(d.get("offset")) ?? 0,
|
|
564
|
+
limit: j(d.get("limit")) ?? 50
|
|
523
565
|
}), o);
|
|
524
566
|
} catch (e) {
|
|
525
567
|
return s(500, {
|
|
@@ -527,7 +569,7 @@ var n = "/_voltro/inspect", r = () => process.env.VOLTRO_INSPECT === "off", i =
|
|
|
527
569
|
message: e?.message ?? String(e)
|
|
528
570
|
}, o);
|
|
529
571
|
}
|
|
530
|
-
},
|
|
572
|
+
}, N = async (e, t, n, i = {}) => {
|
|
531
573
|
if (_(e) !== "/_voltro/inspect/workflows/stats") return null;
|
|
532
574
|
let o = l(n.origin ?? n.Origin), c = (i.method ?? "GET").toUpperCase();
|
|
533
575
|
if (c !== "GET") return s(405, {
|
|
@@ -549,11 +591,11 @@ var n = "/_voltro/inspect", r = () => process.env.VOLTRO_INSPECT === "off", i =
|
|
|
549
591
|
total: 0,
|
|
550
592
|
truncated: !1
|
|
551
593
|
}, o);
|
|
552
|
-
let d =
|
|
594
|
+
let d = A(e);
|
|
553
595
|
try {
|
|
554
596
|
return s(200, await t.inspectWorkflowRunStats({
|
|
555
597
|
...d.get("tag") === null ? {} : { tag: d.get("tag") },
|
|
556
|
-
...
|
|
598
|
+
...j(d.get("hours")) === void 0 ? {} : { hours: j(d.get("hours")) }
|
|
557
599
|
}), o);
|
|
558
600
|
} catch (e) {
|
|
559
601
|
return s(500, {
|
|
@@ -561,7 +603,7 @@ var n = "/_voltro/inspect", r = () => process.env.VOLTRO_INSPECT === "off", i =
|
|
|
561
603
|
message: e?.message ?? String(e)
|
|
562
604
|
}, o);
|
|
563
605
|
}
|
|
564
|
-
},
|
|
606
|
+
}, P = async (e, t, n, i, o = {}) => {
|
|
565
607
|
let c = _(e).match(/^\/_voltro\/inspect\/workflows\/start\/([^/]+)$/);
|
|
566
608
|
if (!c) return null;
|
|
567
609
|
let u = decodeURIComponent(c[1] ?? ""), d = l(n.origin ?? n.Origin), f = (o.method ?? "POST").toUpperCase();
|
|
@@ -594,7 +636,7 @@ var n = "/_voltro/inspect", r = () => process.env.VOLTRO_INSPECT === "off", i =
|
|
|
594
636
|
message: e?.message ?? String(e)
|
|
595
637
|
}, d);
|
|
596
638
|
}
|
|
597
|
-
},
|
|
639
|
+
}, F = async (e, t, n, i = {}) => {
|
|
598
640
|
let o = _(e);
|
|
599
641
|
if (!o.startsWith("/_voltro/inspect/schedules")) return null;
|
|
600
642
|
let c = l(n.origin ?? n.Origin);
|
|
@@ -614,7 +656,7 @@ var n = "/_voltro/inspect", r = () => process.env.VOLTRO_INSPECT === "off", i =
|
|
|
614
656
|
expected: "POST"
|
|
615
657
|
}, c);
|
|
616
658
|
if (!t.inspectFireSchedule) return s(404, { error: "inspectFireSchedule not configured" }, c);
|
|
617
|
-
let n = decodeURIComponent(m[1] ?? ""), r =
|
|
659
|
+
let n = decodeURIComponent(m[1] ?? ""), r = A(e).get("trigger") === "external" ? "external" : "manual";
|
|
618
660
|
try {
|
|
619
661
|
return s(200, await t.inspectFireSchedule({
|
|
620
662
|
name: n,
|
|
@@ -638,12 +680,12 @@ var n = "/_voltro/inspect", r = () => process.env.VOLTRO_INSPECT === "off", i =
|
|
|
638
680
|
offset: 0,
|
|
639
681
|
limit: 50
|
|
640
682
|
}, c);
|
|
641
|
-
let n =
|
|
683
|
+
let n = A(e);
|
|
642
684
|
try {
|
|
643
685
|
return s(200, await t.inspectScheduleRuns({
|
|
644
686
|
...n.get("name") === null ? {} : { name: n.get("name") },
|
|
645
|
-
offset:
|
|
646
|
-
limit:
|
|
687
|
+
offset: j(n.get("offset")) ?? 0,
|
|
688
|
+
limit: j(n.get("limit")) ?? 50
|
|
647
689
|
}), c);
|
|
648
690
|
} catch (e) {
|
|
649
691
|
return s(500, {
|
|
@@ -662,7 +704,7 @@ var n = "/_voltro/inspect", r = () => process.env.VOLTRO_INSPECT === "off", i =
|
|
|
662
704
|
error: "unknown schedules endpoint",
|
|
663
705
|
path: o
|
|
664
706
|
}, c);
|
|
665
|
-
},
|
|
707
|
+
}, I = async (e, t, n, i = {}) => {
|
|
666
708
|
if (_(e) !== "/_voltro/inspect/cluster") return null;
|
|
667
709
|
let o = l(n.origin ?? n.Origin);
|
|
668
710
|
if (r()) return s(503, { error: "inspect disabled (VOLTRO_INSPECT=off)" }, o);
|
|
@@ -710,7 +752,7 @@ var n = "/_voltro/inspect", r = () => process.env.VOLTRO_INSPECT === "off", i =
|
|
|
710
752
|
message: e?.message ?? String(e)
|
|
711
753
|
}, o);
|
|
712
754
|
}
|
|
713
|
-
},
|
|
755
|
+
}, L = async (e, t, n, i = {}) => {
|
|
714
756
|
let o = _(e).match(/^\/_voltro\/inspect\/workflows\/runs\/([^/]+)\/steps$/);
|
|
715
757
|
if (!o) return null;
|
|
716
758
|
let c = decodeURIComponent(o[1] ?? ""), u = l(n.origin ?? n.Origin), d = (i.method ?? "GET").toUpperCase();
|
|
@@ -734,7 +776,7 @@ var n = "/_voltro/inspect", r = () => process.env.VOLTRO_INSPECT === "off", i =
|
|
|
734
776
|
message: e?.message ?? String(e)
|
|
735
777
|
}, u);
|
|
736
778
|
}
|
|
737
|
-
},
|
|
779
|
+
}, R = async (e, t, n, i = {}) => {
|
|
738
780
|
let o = _(e).match(/^\/_voltro\/inspect\/workflows\/runs\/([^/]+)\/events$/);
|
|
739
781
|
if (!o) return null;
|
|
740
782
|
let c = decodeURIComponent(o[1] ?? ""), u = l(n.origin ?? n.Origin), d = (i.method ?? "GET").toUpperCase();
|
|
@@ -758,7 +800,7 @@ var n = "/_voltro/inspect", r = () => process.env.VOLTRO_INSPECT === "off", i =
|
|
|
758
800
|
message: e?.message ?? String(e)
|
|
759
801
|
}, u);
|
|
760
802
|
}
|
|
761
|
-
},
|
|
803
|
+
}, z = async (e, t, n, i = {}) => {
|
|
762
804
|
if (_(t) !== "/_voltro/inspect/workflows/events") return null;
|
|
763
805
|
let o = l(n.origin ?? n.Origin), c = (i.method ?? "GET").toUpperCase();
|
|
764
806
|
if (c !== "GET") return s(405, {
|
|
@@ -791,7 +833,7 @@ var n = "/_voltro/inspect", r = () => process.env.VOLTRO_INSPECT === "off", i =
|
|
|
791
833
|
message: e?.message ?? String(e)
|
|
792
834
|
}, o);
|
|
793
835
|
}
|
|
794
|
-
},
|
|
836
|
+
}, B = async (e, t, n, i = {}) => {
|
|
795
837
|
let o = _(t).match(/^\/_voltro\/inspect\/workflows\/events\/([^/]+)\/deliveries$/);
|
|
796
838
|
if (!o) return null;
|
|
797
839
|
let c = decodeURIComponent(o[1] ?? ""), u = l(n.origin ?? n.Origin), d = (i.method ?? "GET").toUpperCase();
|
|
@@ -815,7 +857,7 @@ var n = "/_voltro/inspect", r = () => process.env.VOLTRO_INSPECT === "off", i =
|
|
|
815
857
|
message: e?.message ?? String(e)
|
|
816
858
|
}, u);
|
|
817
859
|
}
|
|
818
|
-
},
|
|
860
|
+
}, V = async (e, t, n, i = {}) => {
|
|
819
861
|
if (_(e) !== "/_voltro/inspect/workflows/children") return null;
|
|
820
862
|
let o = l(n.origin ?? n.Origin), c = (i.method ?? "GET").toUpperCase();
|
|
821
863
|
if (c !== "GET") return s(405, {
|
|
@@ -829,7 +871,7 @@ var n = "/_voltro/inspect", r = () => process.env.VOLTRO_INSPECT === "off", i =
|
|
|
829
871
|
reason: u.reason
|
|
830
872
|
}, o);
|
|
831
873
|
if (t.kind !== "api") return s(404, { error: "workflow children are api-only" }, o);
|
|
832
|
-
let d =
|
|
874
|
+
let d = A(e).get("parentExecutionId");
|
|
833
875
|
if (d === null || d === "") return s(400, { error: "parentExecutionId query param required" }, o);
|
|
834
876
|
if (t.inspectWorkflowChildren === void 0) return s(200, {
|
|
835
877
|
runs: [],
|
|
@@ -845,7 +887,7 @@ var n = "/_voltro/inspect", r = () => process.env.VOLTRO_INSPECT === "off", i =
|
|
|
845
887
|
message: e?.message ?? String(e)
|
|
846
888
|
}, o);
|
|
847
889
|
}
|
|
848
|
-
},
|
|
890
|
+
}, H = async (e, t, n, i, o = {}) => {
|
|
849
891
|
let c = _(e).match(/^\/_voltro\/inspect\/workflows\/runs\/([^/]+)\/(cancel|retry|suspend|resume-from-step|resume|signal|update|discard|redrive)$/);
|
|
850
892
|
if (!c) return null;
|
|
851
893
|
let u = decodeURIComponent(c[1] ?? ""), d = c[2], f = l(n.origin ?? n.Origin), p = (o.method ?? "POST").toUpperCase();
|
|
@@ -903,7 +945,7 @@ var n = "/_voltro/inspect", r = () => process.env.VOLTRO_INSPECT === "off", i =
|
|
|
903
945
|
message: e?.message ?? String(e)
|
|
904
946
|
}, f);
|
|
905
947
|
}
|
|
906
|
-
},
|
|
948
|
+
}, U = async (e, t, n, i, o = {}) => {
|
|
907
949
|
if (_(e) !== "/_voltro/inspect/data/import" || (o.method ?? "POST").toUpperCase() !== "POST") return null;
|
|
908
950
|
let c = l(n.origin ?? n.Origin);
|
|
909
951
|
if (r()) return s(503, { error: "inspect disabled (VOLTRO_INSPECT=off)" }, c);
|
|
@@ -936,7 +978,7 @@ var n = "/_voltro/inspect", r = () => process.env.VOLTRO_INSPECT === "off", i =
|
|
|
936
978
|
message: e?.message ?? String(e)
|
|
937
979
|
}, c);
|
|
938
980
|
}
|
|
939
|
-
},
|
|
981
|
+
}, W = async (e, t, n, i, o = {}) => {
|
|
940
982
|
let c = _(e);
|
|
941
983
|
if (!c.startsWith("/_voltro/inspect/data/rows")) return null;
|
|
942
984
|
let u = (o.method ?? "POST").toUpperCase();
|
|
@@ -974,7 +1016,7 @@ var n = "/_voltro/inspect", r = () => process.env.VOLTRO_INSPECT === "off", i =
|
|
|
974
1016
|
if (!p) return null;
|
|
975
1017
|
let m = decodeURIComponent(p[1] ?? "");
|
|
976
1018
|
if (!m) return s(400, { error: "row id is required in URL" }, d);
|
|
977
|
-
let h =
|
|
1019
|
+
let h = A(e).get("table") ?? "";
|
|
978
1020
|
if (!h) return s(400, { error: "query.table is required" }, d);
|
|
979
1021
|
if (u === "PATCH") {
|
|
980
1022
|
if (!t.inspectUpdateRow) return s(404, { error: "inspectUpdateRow not configured" }, d);
|
|
@@ -1016,7 +1058,7 @@ var n = "/_voltro/inspect", r = () => process.env.VOLTRO_INSPECT === "off", i =
|
|
|
1016
1058
|
error: "method not allowed",
|
|
1017
1059
|
expected: "POST | PATCH | DELETE"
|
|
1018
1060
|
}, d);
|
|
1019
|
-
},
|
|
1061
|
+
}, G = async (e, t, i, o, c = {}) => {
|
|
1020
1062
|
let u = _(e), d = `${n}/workflows/flow-control`;
|
|
1021
1063
|
if (u !== d && !u.startsWith(`${d}/`)) return null;
|
|
1022
1064
|
let f = l(i.origin ?? i.Origin), p = (c.method ?? "GET").toUpperCase();
|
|
@@ -1033,7 +1075,7 @@ var n = "/_voltro/inspect", r = () => process.env.VOLTRO_INSPECT === "off", i =
|
|
|
1033
1075
|
expected: "GET"
|
|
1034
1076
|
}, f);
|
|
1035
1077
|
if (t.inspectInferences === void 0) return s(404, { error: "inspectInferences not configured" }, f);
|
|
1036
|
-
let n =
|
|
1078
|
+
let n = A(e).get("limit"), r = n === null ? void 0 : Number(n);
|
|
1037
1079
|
try {
|
|
1038
1080
|
return s(200, await t.inspectInferences(r !== void 0 && Number.isFinite(r) ? { limit: r } : {}), f);
|
|
1039
1081
|
} catch (e) {
|
|
@@ -1049,7 +1091,7 @@ var n = "/_voltro/inspect", r = () => process.env.VOLTRO_INSPECT === "off", i =
|
|
|
1049
1091
|
expected: "GET"
|
|
1050
1092
|
}, f);
|
|
1051
1093
|
if (t.inspectFlowControl === void 0) return s(404, { error: "inspectFlowControl not configured" }, f);
|
|
1052
|
-
let n =
|
|
1094
|
+
let n = A(e).get("limit"), r = n === null ? void 0 : Number(n);
|
|
1053
1095
|
try {
|
|
1054
1096
|
return s(200, await t.inspectFlowControl(r !== void 0 && Number.isFinite(r) ? { limit: r } : {}), f);
|
|
1055
1097
|
} catch (e) {
|
|
@@ -1115,4 +1157,4 @@ var n = "/_voltro/inspect", r = () => process.env.VOLTRO_INSPECT === "off", i =
|
|
|
1115
1157
|
}, f);
|
|
1116
1158
|
};
|
|
1117
1159
|
//#endregion
|
|
1118
|
-
export {
|
|
1160
|
+
export { r as A, N as C, l as D, P as E, f as M, g as N, h as O, o as P, R as S, M as T, E as _, a, z as b, U as c, G as d, D as f, F as g, S as h, d as i, c as j, u as k, O as l, k as m, b as n, T as o, w as p, x as r, I as s, n as t, W as u, H as v, L as w, B as x, V as y };
|