everything-dev 1.53.2 → 2.0.0-rc.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/README.md +2 -11
- package/dist/_virtual/_rolldown/runtime.cjs +17 -2
- package/dist/_virtual/_rolldown/runtime.mjs +36 -0
- package/dist/api/auth-middleware.cjs +161 -0
- package/dist/api/auth-middleware.cjs.map +1 -0
- package/dist/api/auth-middleware.d.cts +69 -0
- package/dist/api/auth-middleware.d.mts +69 -0
- package/dist/api/auth-middleware.mjs +160 -0
- package/dist/api/auth-middleware.mjs.map +1 -0
- package/dist/api-contract.cjs +250 -62
- package/dist/api-contract.cjs.map +1 -1
- package/dist/api-contract.mjs +246 -65
- package/dist/api-contract.mjs.map +1 -1
- package/dist/app.cjs +99 -26
- package/dist/app.cjs.map +1 -1
- package/dist/app.d.cts +3 -0
- package/dist/app.d.mts +3 -0
- package/dist/app.mjs +100 -27
- package/dist/app.mjs.map +1 -1
- package/dist/auth-login.cjs +163 -0
- package/dist/auth-login.cjs.map +1 -0
- package/dist/auth-login.mjs +162 -0
- package/dist/auth-login.mjs.map +1 -0
- package/dist/auth-session.cjs +64 -0
- package/dist/auth-session.cjs.map +1 -0
- package/dist/auth-session.mjs +58 -0
- package/dist/auth-session.mjs.map +1 -0
- package/dist/auth-types-gen.cjs +0 -1
- package/dist/auth-types-gen.cjs.map +1 -1
- package/dist/build.cjs +37 -173
- package/dist/build.cjs.map +1 -1
- package/dist/build.mjs +37 -171
- package/dist/build.mjs.map +1 -1
- package/dist/bundle-cache.cjs +74 -0
- package/dist/bundle-cache.cjs.map +1 -0
- package/dist/bundle-cache.d.cts +27 -0
- package/dist/bundle-cache.d.mts +27 -0
- package/dist/bundle-cache.mjs +68 -0
- package/dist/bundle-cache.mjs.map +1 -0
- package/dist/bundle-fs-resolve.cjs +209 -0
- package/dist/bundle-fs-resolve.cjs.map +1 -0
- package/dist/bundle-fs-resolve.d.cts +76 -0
- package/dist/bundle-fs-resolve.d.mts +76 -0
- package/dist/bundle-fs-resolve.mjs +202 -0
- package/dist/bundle-fs-resolve.mjs.map +1 -0
- package/dist/cdn-deploy.cjs +126 -0
- package/dist/cdn-deploy.cjs.map +1 -0
- package/dist/cdn-deploy.mjs +124 -0
- package/dist/cdn-deploy.mjs.map +1 -0
- package/dist/cli/db-doctor.cjs +19 -19
- package/dist/cli/db-doctor.cjs.map +1 -1
- package/dist/cli/db-doctor.mjs +18 -18
- package/dist/cli/db-doctor.mjs.map +1 -1
- package/dist/cli/db-repair.cjs +9 -32
- package/dist/cli/db-repair.cjs.map +1 -1
- package/dist/cli/db-repair.mjs +9 -32
- package/dist/cli/db-repair.mjs.map +1 -1
- package/dist/cli/framework-version.cjs +7 -3
- package/dist/cli/framework-version.cjs.map +1 -1
- package/dist/cli/framework-version.mjs +7 -3
- package/dist/cli/framework-version.mjs.map +1 -1
- package/dist/cli/infra.cjs +159 -251
- package/dist/cli/infra.cjs.map +1 -1
- package/dist/cli/infra.mjs +154 -242
- package/dist/cli/infra.mjs.map +1 -1
- package/dist/cli/init.cjs +624 -196
- package/dist/cli/init.cjs.map +1 -1
- package/dist/cli/init.d.cts +61 -8
- package/dist/cli/init.d.mts +61 -8
- package/dist/cli/init.mjs +613 -194
- package/dist/cli/init.mjs.map +1 -1
- package/dist/cli/parse.cjs +8 -7
- package/dist/cli/parse.cjs.map +1 -1
- package/dist/cli/parse.mjs +9 -7
- package/dist/cli/parse.mjs.map +1 -1
- package/dist/cli/prompts.cjs +14 -1
- package/dist/cli/prompts.cjs.map +1 -1
- package/dist/cli/prompts.mjs +14 -1
- package/dist/cli/prompts.mjs.map +1 -1
- package/dist/cli/prune.cjs +220 -0
- package/dist/cli/prune.cjs.map +1 -0
- package/dist/cli/prune.mjs +220 -0
- package/dist/cli/prune.mjs.map +1 -0
- package/dist/cli/snapshot.cjs +2 -1
- package/dist/cli/snapshot.cjs.map +1 -1
- package/dist/cli/snapshot.mjs +2 -1
- package/dist/cli/snapshot.mjs.map +1 -1
- package/dist/cli/status.cjs +5 -4
- package/dist/cli/status.cjs.map +1 -1
- package/dist/cli/status.mjs +6 -5
- package/dist/cli/status.mjs.map +1 -1
- package/dist/cli/sync.cjs +156 -58
- package/dist/cli/sync.cjs.map +1 -1
- package/dist/cli/sync.mjs +158 -63
- package/dist/cli/sync.mjs.map +1 -1
- package/dist/cli/timing.cjs +0 -1
- package/dist/cli/timing.cjs.map +1 -1
- package/dist/cli/upgrade.cjs +95 -69
- package/dist/cli/upgrade.cjs.map +1 -1
- package/dist/cli/upgrade.mjs +97 -72
- package/dist/cli/upgrade.mjs.map +1 -1
- package/dist/cli/utils/helpers.cjs.map +1 -1
- package/dist/cli.cjs +320 -72
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.mjs +316 -68
- package/dist/cli.mjs.map +1 -1
- package/dist/code-artifacts.cjs +76 -8
- package/dist/code-artifacts.cjs.map +1 -1
- package/dist/code-artifacts.mjs +76 -10
- package/dist/code-artifacts.mjs.map +1 -1
- package/dist/commands/build.cjs +65 -0
- package/dist/commands/build.cjs.map +1 -0
- package/dist/commands/build.mjs +65 -0
- package/dist/commands/build.mjs.map +1 -0
- package/dist/commands/config.cjs +77 -0
- package/dist/commands/config.cjs.map +1 -0
- package/dist/commands/config.d.cts +8 -0
- package/dist/commands/config.d.mts +8 -0
- package/dist/commands/config.mjs +74 -0
- package/dist/commands/config.mjs.map +1 -0
- package/dist/commands/db.cjs +107 -0
- package/dist/commands/db.cjs.map +1 -0
- package/dist/commands/db.mjs +107 -0
- package/dist/commands/db.mjs.map +1 -0
- package/dist/commands/deploy.cjs +336 -0
- package/dist/commands/deploy.cjs.map +1 -0
- package/dist/commands/deploy.mjs +334 -0
- package/dist/commands/deploy.mjs.map +1 -0
- package/dist/commands/dev.cjs +75 -0
- package/dist/commands/dev.cjs.map +1 -0
- package/dist/commands/dev.mjs +73 -0
- package/dist/commands/dev.mjs.map +1 -0
- package/dist/commands/init.cjs +234 -0
- package/dist/commands/init.cjs.map +1 -0
- package/dist/commands/init.mjs +231 -0
- package/dist/commands/init.mjs.map +1 -0
- package/dist/commands/keys.cjs +255 -0
- package/dist/commands/keys.cjs.map +1 -0
- package/dist/commands/keys.mjs +253 -0
- package/dist/commands/keys.mjs.map +1 -0
- package/dist/commands/ops.cjs +199 -0
- package/dist/commands/ops.cjs.map +1 -0
- package/dist/commands/ops.mjs +197 -0
- package/dist/commands/ops.mjs.map +1 -0
- package/dist/commands/plugins.cjs +211 -0
- package/dist/commands/plugins.cjs.map +1 -0
- package/dist/commands/plugins.mjs +211 -0
- package/dist/commands/plugins.mjs.map +1 -0
- package/dist/commands/shared.cjs +8 -0
- package/dist/commands/shared.cjs.map +1 -0
- package/dist/commands/shared.d.cts +6 -0
- package/dist/commands/shared.d.mts +6 -0
- package/dist/commands/shared.mjs +8 -0
- package/dist/commands/shared.mjs.map +1 -0
- package/dist/commands/upgrade.cjs +325 -0
- package/dist/commands/upgrade.cjs.map +1 -0
- package/dist/commands/upgrade.mjs +323 -0
- package/dist/commands/upgrade.mjs.map +1 -0
- package/dist/components/dev-render.cjs +340 -0
- package/dist/components/dev-render.cjs.map +1 -0
- package/dist/components/dev-render.mjs +332 -0
- package/dist/components/dev-render.mjs.map +1 -0
- package/dist/config.cjs +460 -221
- package/dist/config.cjs.map +1 -1
- package/dist/config.d.cts +491 -48
- package/dist/config.d.mts +491 -48
- package/dist/config.mjs +439 -212
- package/dist/config.mjs.map +1 -1
- package/dist/contract.cjs +327 -50
- package/dist/contract.cjs.map +1 -1
- package/dist/contract.d.cts +1951 -1062
- package/dist/contract.d.mts +1951 -1062
- package/dist/contract.meta.cjs +107 -12
- package/dist/contract.meta.cjs.map +1 -1
- package/dist/contract.meta.d.cts +166 -8
- package/dist/contract.meta.d.mts +166 -8
- package/dist/contract.meta.mjs +107 -11
- package/dist/contract.meta.mjs.map +1 -1
- package/dist/contract.mjs +580 -327
- package/dist/contract.mjs.map +1 -1
- package/dist/dag.cjs +5 -3
- package/dist/dag.cjs.map +1 -1
- package/dist/dag.mjs +6 -3
- package/dist/dag.mjs.map +1 -1
- package/dist/db/binding.cjs +80 -0
- package/dist/db/binding.cjs.map +1 -0
- package/dist/db/binding.d.cts +39 -0
- package/dist/db/binding.d.mts +39 -0
- package/dist/db/binding.mjs +78 -0
- package/dist/db/binding.mjs.map +1 -0
- package/dist/db/bindings.cjs +78 -0
- package/dist/db/bindings.cjs.map +1 -0
- package/dist/db/bindings.d.cts +34 -0
- package/dist/db/bindings.d.mts +34 -0
- package/dist/db/bindings.mjs +76 -0
- package/dist/db/bindings.mjs.map +1 -0
- package/dist/db/core.cjs +204 -0
- package/dist/db/core.cjs.map +1 -0
- package/dist/db/core.d.cts +69 -0
- package/dist/db/core.d.mts +69 -0
- package/dist/db/core.mjs +192 -0
- package/dist/db/core.mjs.map +1 -0
- package/dist/db/driver.cjs +167 -0
- package/dist/db/driver.cjs.map +1 -0
- package/dist/db/driver.d.cts +50 -0
- package/dist/db/driver.d.mts +50 -0
- package/dist/db/driver.mjs +165 -0
- package/dist/db/driver.mjs.map +1 -0
- package/dist/db/drizzle-kit.cjs +177 -0
- package/dist/db/drizzle-kit.cjs.map +1 -0
- package/dist/db/drizzle-kit.d.cts +25 -0
- package/dist/db/drizzle-kit.d.mts +25 -0
- package/dist/db/drizzle-kit.mjs +175 -0
- package/dist/db/drizzle-kit.mjs.map +1 -0
- package/dist/db/errors.cjs +27 -0
- package/dist/db/errors.cjs.map +1 -0
- package/dist/db/errors.d.cts +16 -0
- package/dist/db/errors.d.mts +16 -0
- package/dist/db/errors.mjs +26 -0
- package/dist/db/errors.mjs.map +1 -0
- package/dist/db/identity.cjs +55 -0
- package/dist/db/identity.cjs.map +1 -0
- package/dist/db/identity.d.cts +40 -0
- package/dist/db/identity.d.mts +40 -0
- package/dist/db/identity.mjs +53 -0
- package/dist/db/identity.mjs.map +1 -0
- package/dist/db/index.cjs +43 -0
- package/dist/db/index.d.cts +9 -0
- package/dist/db/index.d.mts +9 -0
- package/dist/db/index.mjs +10 -0
- package/dist/db/run-migrations.cjs +343 -0
- package/dist/db/run-migrations.cjs.map +1 -0
- package/dist/db/run-migrations.d.cts +87 -0
- package/dist/db/run-migrations.d.mts +87 -0
- package/dist/db/run-migrations.mjs +341 -0
- package/dist/db/run-migrations.mjs.map +1 -0
- package/dist/delegate-signer.cjs +85 -0
- package/dist/delegate-signer.cjs.map +1 -0
- package/dist/delegate-signer.mjs +84 -0
- package/dist/delegate-signer.mjs.map +1 -0
- package/dist/deploy-diff.cjs +119 -0
- package/dist/deploy-diff.cjs.map +1 -0
- package/dist/deploy-diff.mjs +109 -0
- package/dist/deploy-diff.mjs.map +1 -0
- package/dist/descriptor/constructors.cjs +49 -0
- package/dist/descriptor/constructors.cjs.map +1 -0
- package/dist/descriptor/constructors.d.cts +27 -0
- package/dist/descriptor/constructors.d.mts +27 -0
- package/dist/descriptor/constructors.mjs +45 -0
- package/dist/descriptor/constructors.mjs.map +1 -0
- package/dist/descriptor/index.cjs +24 -0
- package/dist/descriptor/index.d.cts +5 -0
- package/dist/descriptor/index.d.mts +5 -0
- package/dist/descriptor/index.mjs +6 -0
- package/dist/descriptor/resolve.cjs +258 -0
- package/dist/descriptor/resolve.cjs.map +1 -0
- package/dist/descriptor/resolve.d.cts +50 -0
- package/dist/descriptor/resolve.d.mts +50 -0
- package/dist/descriptor/resolve.mjs +252 -0
- package/dist/descriptor/resolve.mjs.map +1 -0
- package/dist/descriptor/schema.cjs +109 -0
- package/dist/descriptor/schema.cjs.map +1 -0
- package/dist/descriptor/schema.d.cts +217 -0
- package/dist/descriptor/schema.d.mts +217 -0
- package/dist/descriptor/schema.mjs +102 -0
- package/dist/descriptor/schema.mjs.map +1 -0
- package/dist/descriptor/serialize.cjs +45 -0
- package/dist/descriptor/serialize.cjs.map +1 -0
- package/dist/descriptor/serialize.d.cts +7 -0
- package/dist/descriptor/serialize.d.mts +7 -0
- package/dist/descriptor/serialize.mjs +45 -0
- package/dist/descriptor/serialize.mjs.map +1 -0
- package/dist/dev-log-pipeline.cjs +273 -0
- package/dist/dev-log-pipeline.cjs.map +1 -0
- package/dist/dev-log-pipeline.mjs +267 -0
- package/dist/dev-log-pipeline.mjs.map +1 -0
- package/dist/dev-logs.cjs +39 -8
- package/dist/dev-logs.cjs.map +1 -1
- package/dist/dev-logs.mjs +37 -9
- package/dist/dev-logs.mjs.map +1 -1
- package/dist/dev-program.cjs +405 -0
- package/dist/dev-program.cjs.map +1 -0
- package/dist/dev-program.d.cts +10 -0
- package/dist/dev-program.d.mts +10 -0
- package/dist/dev-program.mjs +395 -0
- package/dist/dev-program.mjs.map +1 -0
- package/dist/dev-session-data.d.cts +27 -0
- package/dist/dev-session-data.d.mts +27 -0
- package/dist/dev-session.cjs +178 -105
- package/dist/dev-session.cjs.map +1 -1
- package/dist/dev-session.mjs +180 -105
- package/dist/dev-session.mjs.map +1 -1
- package/dist/env/process-env.cjs +16 -0
- package/dist/env/process-env.cjs.map +1 -0
- package/dist/env/process-env.mjs +13 -0
- package/dist/env/process-env.mjs.map +1 -0
- package/dist/env/project-env.cjs +144 -0
- package/dist/env/project-env.cjs.map +1 -0
- package/dist/env/project-env.d.cts +1 -0
- package/dist/env/project-env.d.mts +1 -0
- package/dist/env/project-env.mjs +132 -0
- package/dist/env/project-env.mjs.map +1 -0
- package/dist/fastkv.cjs +59 -12
- package/dist/fastkv.cjs.map +1 -1
- package/dist/fastkv.d.cts +42 -6
- package/dist/fastkv.d.mts +42 -6
- package/dist/fastkv.mjs +58 -13
- package/dist/fastkv.mjs.map +1 -1
- package/dist/fingerprint.cjs +57 -0
- package/dist/fingerprint.cjs.map +1 -0
- package/dist/fingerprint.d.cts +14 -0
- package/dist/fingerprint.d.mts +14 -0
- package/dist/fingerprint.mjs +55 -0
- package/dist/fingerprint.mjs.map +1 -0
- package/dist/http-client.cjs +17 -17
- package/dist/http-client.cjs.map +1 -1
- package/dist/http-client.mjs +17 -17
- package/dist/http-client.mjs.map +1 -1
- package/dist/image-deploy.cjs +186 -0
- package/dist/image-deploy.cjs.map +1 -0
- package/dist/image-deploy.mjs +182 -0
- package/dist/image-deploy.mjs.map +1 -0
- package/dist/index.cjs +66 -18
- package/dist/index.d.cts +8 -7
- package/dist/index.d.mts +8 -7
- package/dist/index.mjs +6 -5
- package/dist/infra/docker.cjs +77 -0
- package/dist/infra/docker.cjs.map +1 -0
- package/dist/infra/docker.d.cts +10 -0
- package/dist/infra/docker.d.mts +10 -0
- package/dist/infra/docker.mjs +69 -0
- package/dist/infra/docker.mjs.map +1 -0
- package/dist/infra/materializer.cjs +74 -0
- package/dist/infra/materializer.cjs.map +1 -0
- package/dist/infra/materializer.mjs +70 -0
- package/dist/infra/materializer.mjs.map +1 -0
- package/dist/infra/planner.cjs +135 -103
- package/dist/infra/planner.cjs.map +1 -1
- package/dist/infra/planner.mjs +137 -104
- package/dist/infra/planner.mjs.map +1 -1
- package/dist/infra/port-ownership.cjs +57 -0
- package/dist/infra/port-ownership.cjs.map +1 -0
- package/dist/infra/port-ownership.mjs +57 -0
- package/dist/infra/port-ownership.mjs.map +1 -0
- package/dist/infra/preflight.cjs +45 -33
- package/dist/infra/preflight.cjs.map +1 -1
- package/dist/infra/preflight.d.cts +1 -0
- package/dist/infra/preflight.d.mts +1 -0
- package/dist/infra/preflight.mjs +46 -34
- package/dist/infra/preflight.mjs.map +1 -1
- package/dist/infra/types.cjs.map +1 -1
- package/dist/infra/types.d.cts +2 -0
- package/dist/infra/types.d.mts +2 -0
- package/dist/infra/types.mjs.map +1 -1
- package/dist/integrity.cjs +50 -61
- package/dist/integrity.cjs.map +1 -1
- package/dist/integrity.d.cts +16 -10
- package/dist/integrity.d.mts +16 -10
- package/dist/integrity.mjs +50 -59
- package/dist/integrity.mjs.map +1 -1
- package/dist/internal/manifest-normalizer.cjs +8 -2
- package/dist/internal/manifest-normalizer.cjs.map +1 -1
- package/dist/internal/manifest-normalizer.mjs +9 -3
- package/dist/internal/manifest-normalizer.mjs.map +1 -1
- package/dist/merge.cjs +19 -1
- package/dist/merge.cjs.map +1 -1
- package/dist/merge.d.cts +1 -1
- package/dist/merge.d.mts +1 -1
- package/dist/merge.mjs +19 -2
- package/dist/merge.mjs.map +1 -1
- package/dist/mf.cjs +190 -3
- package/dist/mf.cjs.map +1 -1
- package/dist/mf.d.cts +24 -2
- package/dist/mf.d.mts +24 -2
- package/dist/mf.mjs +189 -4
- package/dist/mf.mjs.map +1 -1
- package/dist/near-cli.cjs +59 -91
- package/dist/near-cli.cjs.map +1 -1
- package/dist/near-cli.mjs +58 -90
- package/dist/near-cli.mjs.map +1 -1
- package/dist/near-signer.cjs +73 -0
- package/dist/near-signer.cjs.map +1 -0
- package/dist/near-signer.mjs +70 -0
- package/dist/near-signer.mjs.map +1 -0
- package/dist/network.cjs +0 -1
- package/dist/network.cjs.map +1 -1
- package/dist/orchestrator.cjs +256 -87
- package/dist/orchestrator.cjs.map +1 -1
- package/dist/orchestrator.mjs +248 -87
- package/dist/orchestrator.mjs.map +1 -1
- package/dist/platform-deploy.cjs +81 -0
- package/dist/platform-deploy.cjs.map +1 -0
- package/dist/platform-deploy.mjs +80 -0
- package/dist/platform-deploy.mjs.map +1 -0
- package/dist/plugin.cjs +54 -1389
- package/dist/plugin.cjs.map +1 -1
- package/dist/plugin.d.cts +6 -896
- package/dist/plugin.d.mts +6 -896
- package/dist/plugin.mjs +53 -1387
- package/dist/plugin.mjs.map +1 -1
- package/dist/process-kill.cjs +44 -0
- package/dist/process-kill.cjs.map +1 -0
- package/dist/process-kill.mjs +43 -0
- package/dist/process-kill.mjs.map +1 -0
- package/dist/process-registry.cjs +64 -9
- package/dist/process-registry.cjs.map +1 -1
- package/dist/process-registry.mjs +61 -10
- package/dist/process-registry.mjs.map +1 -1
- package/dist/progress.cjs +45 -0
- package/dist/progress.cjs.map +1 -0
- package/dist/progress.d.cts +13 -0
- package/dist/progress.d.mts +13 -0
- package/dist/progress.mjs +42 -0
- package/dist/progress.mjs.map +1 -0
- package/dist/publish.cjs +513 -79
- package/dist/publish.cjs.map +1 -1
- package/dist/publish.mjs +515 -82
- package/dist/publish.mjs.map +1 -1
- package/dist/registry-use.cjs +41 -0
- package/dist/registry-use.cjs.map +1 -0
- package/dist/registry-use.mjs +40 -0
- package/dist/registry-use.mjs.map +1 -0
- package/dist/resolution/session.cjs +335 -0
- package/dist/resolution/session.cjs.map +1 -0
- package/dist/resolution/session.d.cts +105 -0
- package/dist/resolution/session.d.mts +105 -0
- package/dist/resolution/session.mjs +331 -0
- package/dist/resolution/session.mjs.map +1 -0
- package/dist/rollback.cjs +131 -0
- package/dist/rollback.cjs.map +1 -0
- package/dist/rollback.mjs +128 -0
- package/dist/rollback.mjs.map +1 -0
- package/dist/sdk.cjs +7 -7
- package/dist/sdk.d.cts +3 -3
- package/dist/sdk.d.mts +3 -3
- package/dist/sdk.mjs +2 -2
- package/dist/service-descriptor.cjs +67 -34
- package/dist/service-descriptor.cjs.map +1 -1
- package/dist/service-descriptor.d.cts +4 -1
- package/dist/service-descriptor.d.mts +3 -0
- package/dist/service-descriptor.mjs +63 -35
- package/dist/service-descriptor.mjs.map +1 -1
- package/dist/shared-deps.cjs +17 -16
- package/dist/shared-deps.cjs.map +1 -1
- package/dist/shared-deps.mjs +17 -16
- package/dist/shared-deps.mjs.map +1 -1
- package/dist/start-config-source.cjs +24 -0
- package/dist/start-config-source.cjs.map +1 -0
- package/dist/start-config-source.d.cts +29 -0
- package/dist/start-config-source.d.mts +29 -0
- package/dist/start-config-source.mjs +22 -0
- package/dist/start-config-source.mjs.map +1 -0
- package/dist/storage-upload.cjs +145 -0
- package/dist/storage-upload.cjs.map +1 -0
- package/dist/storage-upload.mjs +143 -0
- package/dist/storage-upload.mjs.map +1 -0
- package/dist/types.cjs +126 -20
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +867 -585
- package/dist/types.d.mts +867 -585
- package/dist/types.mjs +307 -208
- package/dist/types.mjs.map +1 -1
- package/dist/ui/api.cjs +105 -0
- package/dist/ui/api.cjs.map +1 -0
- package/dist/ui/api.d.cts +31 -0
- package/dist/ui/api.d.mts +31 -0
- package/dist/ui/api.mjs +99 -0
- package/dist/ui/api.mjs.map +1 -0
- package/dist/ui/auth-guards.cjs +50 -0
- package/dist/ui/auth-guards.cjs.map +1 -0
- package/dist/ui/auth-guards.d.cts +39 -0
- package/dist/ui/auth-guards.d.mts +39 -0
- package/dist/ui/auth-guards.mjs +48 -0
- package/dist/ui/auth-guards.mjs.map +1 -0
- package/dist/ui/auth.cjs +197 -0
- package/dist/ui/auth.cjs.map +1 -0
- package/dist/ui/auth.d.cts +56 -0
- package/dist/ui/auth.d.mts +56 -0
- package/dist/ui/auth.mjs +179 -0
- package/dist/ui/auth.mjs.map +1 -0
- package/dist/ui/entry.cjs +16 -0
- package/dist/ui/entry.cjs.map +1 -0
- package/dist/ui/entry.d.cts +12 -0
- package/dist/ui/entry.d.mts +12 -0
- package/dist/ui/entry.mjs +15 -0
- package/dist/ui/entry.mjs.map +1 -0
- package/dist/ui/head.cjs +14 -7
- package/dist/ui/head.cjs.map +1 -1
- package/dist/ui/head.mjs +15 -7
- package/dist/ui/head.mjs.map +1 -1
- package/dist/ui/hydrate.cjs +265 -0
- package/dist/ui/hydrate.cjs.map +1 -0
- package/dist/ui/hydrate.d.cts +48 -0
- package/dist/ui/hydrate.d.mts +48 -0
- package/dist/ui/hydrate.mjs +263 -0
- package/dist/ui/hydrate.mjs.map +1 -0
- package/dist/ui/i18n.cjs +153 -0
- package/dist/ui/i18n.cjs.map +1 -0
- package/dist/ui/i18n.d.cts +29 -0
- package/dist/ui/i18n.d.mts +29 -0
- package/dist/ui/i18n.mjs +140 -0
- package/dist/ui/i18n.mjs.map +1 -0
- package/dist/ui/index.cjs +19 -1
- package/dist/ui/index.d.cts +6 -3
- package/dist/ui/index.d.mts +6 -3
- package/dist/ui/index.mjs +5 -2
- package/dist/ui/locale.cjs +53 -0
- package/dist/ui/locale.cjs.map +1 -0
- package/dist/ui/locale.d.cts +18 -0
- package/dist/ui/locale.d.mts +18 -0
- package/dist/ui/locale.mjs +49 -0
- package/dist/ui/locale.mjs.map +1 -0
- package/dist/ui/manifest/index.cjs +25 -0
- package/dist/ui/manifest/index.cjs.map +1 -0
- package/dist/ui/manifest/index.d.cts +9 -0
- package/dist/ui/manifest/index.d.mts +9 -0
- package/dist/ui/manifest/index.mjs +13 -0
- package/dist/ui/manifest/index.mjs.map +1 -0
- package/dist/ui/manifest-generator.cjs +8 -0
- package/dist/ui/manifest-generator.d.cts +1 -0
- package/dist/ui/manifest-generator.d.mts +1 -0
- package/dist/ui/manifest-generator.mjs +3 -0
- package/dist/ui/message-catalogs.cjs +8 -0
- package/dist/ui/message-catalogs.cjs.map +1 -0
- package/dist/ui/message-catalogs.d.cts +5 -0
- package/dist/ui/message-catalogs.d.mts +5 -0
- package/dist/ui/message-catalogs.mjs +8 -0
- package/dist/ui/message-catalogs.mjs.map +1 -0
- package/dist/ui/metadata.cjs +0 -1
- package/dist/ui/metadata.cjs.map +1 -1
- package/dist/ui/metadata.d.cts +1 -1
- package/dist/ui/metadata.d.mts +1 -1
- package/dist/ui/plugin-path.cjs +37 -0
- package/dist/ui/plugin-path.cjs.map +1 -0
- package/dist/ui/plugin-path.d.cts +25 -0
- package/dist/ui/plugin-path.d.mts +25 -0
- package/dist/ui/plugin-path.mjs +35 -0
- package/dist/ui/plugin-path.mjs.map +1 -0
- package/dist/ui/router-client.cjs +61 -0
- package/dist/ui/router-client.cjs.map +1 -0
- package/dist/ui/router-client.d.cts +20 -0
- package/dist/ui/router-client.d.mts +20 -0
- package/dist/ui/router-client.mjs +60 -0
- package/dist/ui/router-client.mjs.map +1 -0
- package/dist/ui/router-defaults.cjs +48 -0
- package/dist/ui/router-defaults.cjs.map +1 -0
- package/dist/ui/router-defaults.d.cts +8 -0
- package/dist/ui/router-defaults.d.mts +8 -0
- package/dist/ui/router-defaults.mjs +45 -0
- package/dist/ui/router-defaults.mjs.map +1 -0
- package/dist/ui/router-error.cjs +70 -0
- package/dist/ui/router-error.cjs.map +1 -0
- package/dist/ui/router-error.d.cts +19 -0
- package/dist/ui/router-error.d.mts +19 -0
- package/dist/ui/router-error.mjs +69 -0
- package/dist/ui/router-error.mjs.map +1 -0
- package/dist/ui/router-server.cjs +153 -0
- package/dist/ui/router-server.cjs.map +1 -0
- package/dist/ui/router-server.d.cts +38 -0
- package/dist/ui/router-server.d.mts +38 -0
- package/dist/ui/router-server.mjs +152 -0
- package/dist/ui/router-server.mjs.map +1 -0
- package/dist/ui/router.cjs +4 -16
- package/dist/ui/router.cjs.map +1 -1
- package/dist/ui/router.mjs +4 -15
- package/dist/ui/router.mjs.map +1 -1
- package/dist/ui/runtime.cjs +5 -1
- package/dist/ui/runtime.cjs.map +1 -1
- package/dist/ui/runtime.d.cts +2 -1
- package/dist/ui/runtime.d.mts +2 -1
- package/dist/ui/runtime.mjs +5 -1
- package/dist/ui/runtime.mjs.map +1 -1
- package/dist/ui/slot.cjs +34 -0
- package/dist/ui/slot.cjs.map +1 -0
- package/dist/ui/slot.d.cts +43 -0
- package/dist/ui/slot.d.mts +43 -0
- package/dist/ui/slot.mjs +34 -0
- package/dist/ui/slot.mjs.map +1 -0
- package/dist/ui/tenant.cjs +300 -0
- package/dist/ui/tenant.cjs.map +1 -0
- package/dist/ui/tenant.d.cts +122 -0
- package/dist/ui/tenant.d.mts +122 -0
- package/dist/ui/tenant.mjs +279 -0
- package/dist/ui/tenant.mjs.map +1 -0
- package/dist/ui/types.d.cts +32 -2
- package/dist/ui/types.d.mts +32 -2
- package/dist/ui/version-check.cjs +47 -0
- package/dist/ui/version-check.cjs.map +1 -0
- package/dist/ui/version-check.d.cts +23 -0
- package/dist/ui/version-check.d.mts +23 -0
- package/dist/ui/version-check.mjs +46 -0
- package/dist/ui/version-check.mjs.map +1 -0
- package/dist/utils/banner.cjs +2 -2
- package/dist/utils/banner.cjs.map +1 -1
- package/dist/utils/banner.mjs +2 -2
- package/dist/utils/banner.mjs.map +1 -1
- package/dist/utils/linkify.cjs +1 -1
- package/dist/utils/linkify.cjs.map +1 -1
- package/dist/utils/linkify.mjs +1 -0
- package/dist/utils/linkify.mjs.map +1 -1
- package/dist/utils/run.cjs +6 -6
- package/dist/utils/run.cjs.map +1 -1
- package/dist/utils/run.mjs +6 -6
- package/dist/utils/run.mjs.map +1 -1
- package/dist/utils/save-config.cjs +12 -0
- package/dist/utils/save-config.cjs.map +1 -1
- package/dist/utils/save-config.mjs +12 -0
- package/dist/utils/save-config.mjs.map +1 -1
- package/dist/utils/snapshot-hash.cjs +10 -0
- package/dist/utils/snapshot-hash.cjs.map +1 -0
- package/dist/utils/snapshot-hash.mjs +10 -0
- package/dist/utils/snapshot-hash.mjs.map +1 -0
- package/dist/utils/string.cjs +0 -1
- package/dist/utils/string.cjs.map +1 -1
- package/dist/utils/theme.cjs +30 -12
- package/dist/utils/theme.cjs.map +1 -1
- package/dist/utils/theme.mjs +30 -11
- package/dist/utils/theme.mjs.map +1 -1
- package/dist/version-manifest-deploy.cjs +50 -0
- package/dist/version-manifest-deploy.cjs.map +1 -0
- package/dist/version-manifest-deploy.mjs +49 -0
- package/dist/version-manifest-deploy.mjs.map +1 -0
- package/dist/version-manifest-resolve.cjs +42 -0
- package/dist/version-manifest-resolve.cjs.map +1 -0
- package/dist/version-manifest-resolve.d.cts +38 -0
- package/dist/version-manifest-resolve.d.mts +38 -0
- package/dist/version-manifest-resolve.mjs +40 -0
- package/dist/version-manifest-resolve.mjs.map +1 -0
- package/dist/version-status.cjs +18 -0
- package/dist/version-status.cjs.map +1 -0
- package/dist/version-status.d.cts +22 -0
- package/dist/version-status.d.mts +22 -0
- package/dist/version-status.mjs +17 -0
- package/dist/version-status.mjs.map +1 -0
- package/dist/workspace-catalog.cjs +53 -0
- package/dist/workspace-catalog.cjs.map +1 -0
- package/dist/workspace-catalog.mjs +51 -0
- package/dist/workspace-catalog.mjs.map +1 -0
- package/dist/workspace.cjs +237 -0
- package/dist/workspace.cjs.map +1 -0
- package/dist/workspace.mjs +233 -0
- package/dist/workspace.mjs.map +1 -0
- package/package.json +179 -27
- package/skills/add-a-route/SKILL.md +132 -0
- package/skills/api-and-auth/SKILL.md +87 -21
- package/skills/api-and-auth/references/middleware.md +1 -1
- package/skills/cli-reference/SKILL.md +48 -21
- package/skills/code-style/SKILL.md +8 -0
- package/skills/dev-workflow/SKILL.md +50 -26
- package/skills/extends-config/SKILL.md +31 -19
- package/skills/init-upgrade/SKILL.md +29 -16
- package/skills/plugin-development/SKILL.md +46 -112
- package/skills/plugin-development/references/database.md +82 -0
- package/skills/plugin-development/references/request-context.md +67 -0
- package/skills/publish-sync/SKILL.md +99 -22
- package/skills/registry/SKILL.md +82 -0
- package/skills/super-app/SKILL.md +25 -15
- package/skills/talk-to-the-app/SKILL.md +138 -0
- package/skills/ui-integration/SKILL.md +93 -11
- package/dist/cli/db-studio.cjs +0 -131
- package/dist/cli/db-studio.cjs.map +0 -1
- package/dist/cli/db-studio.mjs +0 -127
- package/dist/cli/db-studio.mjs.map +0 -1
- package/dist/cli/init.d.cts.map +0 -1
- package/dist/cli/init.d.mts.map +0 -1
- package/dist/components/dev-view.cjs +0 -309
- package/dist/components/dev-view.cjs.map +0 -1
- package/dist/components/dev-view.mjs +0 -309
- package/dist/components/dev-view.mjs.map +0 -1
- package/dist/components/streaming-view.cjs +0 -134
- package/dist/components/streaming-view.cjs.map +0 -1
- package/dist/components/streaming-view.mjs +0 -132
- package/dist/components/streaming-view.mjs.map +0 -1
- package/dist/config.d.cts.map +0 -1
- package/dist/config.d.mts.map +0 -1
- package/dist/contract.d.cts.map +0 -1
- package/dist/contract.d.mts.map +0 -1
- package/dist/contract.meta.d.cts.map +0 -1
- package/dist/contract.meta.d.mts.map +0 -1
- package/dist/dag.d.cts.map +0 -1
- package/dist/dag.d.mts.map +0 -1
- package/dist/db.cjs +0 -81
- package/dist/db.cjs.map +0 -1
- package/dist/db.d.cts +0 -30
- package/dist/db.d.cts.map +0 -1
- package/dist/db.d.mts +0 -30
- package/dist/db.d.mts.map +0 -1
- package/dist/db.mjs +0 -75
- package/dist/db.mjs.map +0 -1
- package/dist/fastkv.d.cts.map +0 -1
- package/dist/fastkv.d.mts.map +0 -1
- package/dist/integrity.d.cts.map +0 -1
- package/dist/integrity.d.mts.map +0 -1
- package/dist/merge.d.cts.map +0 -1
- package/dist/merge.d.mts.map +0 -1
- package/dist/mf.d.cts.map +0 -1
- package/dist/mf.d.mts.map +0 -1
- package/dist/plugin.d.cts.map +0 -1
- package/dist/plugin.d.mts.map +0 -1
- package/dist/service-descriptor.d.cts.map +0 -1
- package/dist/service-descriptor.d.mts.map +0 -1
- package/dist/types.d.cts.map +0 -1
- package/dist/types.d.mts.map +0 -1
- package/dist/ui/head.d.cts.map +0 -1
- package/dist/ui/head.d.mts.map +0 -1
- package/dist/ui/metadata.d.cts.map +0 -1
- package/dist/ui/metadata.d.mts.map +0 -1
- package/dist/ui/router.d.cts.map +0 -1
- package/dist/ui/router.d.mts.map +0 -1
- package/dist/ui/runtime.d.cts.map +0 -1
- package/dist/ui/runtime.d.mts.map +0 -1
- package/dist/ui/types.d.cts.map +0 -1
- package/dist/ui/types.d.mts.map +0 -1
package/dist/cli.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.mjs","names":["bosPlugin"],"sources":["../src/cli.ts"],"sourcesContent":["import { dirname, resolve } from \"node:path\";\nimport * as p from \"@clack/prompts\";\nimport { findCommandDescriptor } from \"./cli/catalog\";\nimport { resolveFrameworkPackage } from \"./cli/framework-version\";\nimport { printHelp } from \"./cli/help\";\nimport { loadProjectEnv } from \"./cli/infra\";\nimport { fetchParentConfig, runDockerComposeUp } from \"./cli/init\";\nimport { parseCommandInput } from \"./cli/parse\";\nimport { promptInitBasic, promptInitOverrides } from \"./cli/prompts\";\nimport { formatDuration, sumPhaseDurations } from \"./cli/timing\";\nimport { findConfigPath } from \"./config\";\nimport type {\n DevOptions,\n DevResult,\n InitOptions,\n InitResult,\n KillOptions,\n KillResult,\n OverrideSection,\n PsResult,\n StartOptions,\n StartResult,\n} from \"./contract\";\nimport type { ProgressEvent, StartSummary } from \"./plugin\";\nimport bosPlugin, { consumeDevSession, pluginEvents } from \"./plugin\";\nimport { createPluginRuntime } from \"./sdk\";\nimport { printBanner } from \"./utils/banner\";\nimport { colors, frames, gradients, icons } from \"./utils/theme\";\n\nfunction printConfigView(result: {\n account: string;\n domain?: string;\n staging?: { domain: string };\n app?: {\n host: { name?: string; development: string; production?: string };\n ui: { name?: string; development?: string; production?: string; ssr?: string };\n api: { name?: string; development?: string; production?: string; proxy?: string };\n };\n}) {\n console.log();\n console.log(colors.cyan(frames.top(52)));\n console.log(` ${icons.app} ${gradients.cyber(\"CONFIG\")}`);\n console.log(colors.cyan(frames.bottom(52)));\n console.log();\n\n console.log(` ${colors.dim(\"Account\")} ${colors.cyan(result.account)}`);\n console.log(` ${colors.dim(\"Domain\")} ${colors.white(result.domain ?? \"not configured\")}`);\n if (result.staging) {\n console.log(` ${colors.dim(\"Staging\")} ${colors.magenta(result.staging.domain)}`);\n }\n console.log();\n}\n\nfunction formatTimeAgo(isoTimestamp: string): string {\n const now = Date.now();\n const then = new Date(isoTimestamp).getTime();\n const diffMs = now - then;\n const diffMins = Math.floor(diffMs / 60_000);\n if (diffMins < 1) return \"just now\";\n if (diffMins < 60) return `${diffMins} minute${diffMins > 1 ? \"s\" : \"\"} ago`;\n const diffHours = Math.floor(diffMins / 60);\n if (diffHours < 24) return `${diffHours} hour${diffHours > 1 ? \"s\" : \"\"} ago`;\n const diffDays = Math.floor(diffHours / 24);\n if (diffDays < 30) return `${diffDays} day${diffDays > 1 ? \"s\" : \"\"} ago`;\n return isoTimestamp.split(\"T\")[0] ?? isoTimestamp;\n}\n\nfunction normalizeVersion(v: string): string {\n return v.replace(/^[\\^~>=v]+/, \"\").trim();\n}\n\nfunction printTimingSummary(timings: Array<{ name: string; durationMs: number }> | undefined) {\n if (!timings || timings.length === 0) return;\n\n console.log(` ${colors.dim(\"Timings:\")}`);\n for (const timing of timings) {\n console.log(` ${colors.dim(timing.name.padEnd(22))} ${formatDuration(timing.durationMs)}`);\n }\n console.log(\n ` ${colors.dim(\"total\".padEnd(22))} ${formatDuration(sumPhaseDurations(timings))}`,\n );\n}\n\nfunction printStartSummary(summary: StartSummary) {\n console.log();\n console.log(` ${colors.dim(\"Config Source:\")} ${summary.configSource}`);\n if (summary.configSourceHttp) {\n console.log(` ${colors.dim(summary.configSourceHttp)}`);\n }\n console.log(` ${colors.dim(\"Account:\")} ${summary.account}`);\n console.log(` ${colors.dim(\"Domain:\")} ${summary.domain ?? \"not configured\"}`);\n console.log();\n console.log(` ${colors.dim(\"Modules:\")}`);\n console.log(` ${colors.dim(\"HOST\")} → ${summary.modules.host ?? \"local\"}`);\n console.log(` ${colors.dim(\"UI\")} → ${summary.modules.ui ?? \"local\"}`);\n console.log(` ${colors.dim(\"API\")} → ${summary.modules.api ?? \"local\"}`);\n if (summary.modules.auth) {\n console.log(` ${colors.dim(\"AUTH\")} → ${summary.modules.auth}`);\n }\n if (summary.warnings.length > 0) {\n console.log();\n for (const w of summary.warnings) {\n console.log(` ${colors.yellow(w)}`);\n }\n }\n console.log();\n}\n\nfunction clearSpinnerStopLine() {\n if (!process.stdout.isTTY) return;\n process.stdout.write(\"\\u001B[1A\\u001B[2K\\u001B[1G\");\n}\n\nasync function warnIfOutdated(client: any, command: string): Promise<void> {\n if (![\"dev\", \"build\", \"start\"].includes(command)) return;\n\n try {\n const status = await client.status();\n if (status.status === \"error\" || !status.packages) return;\n\n const frameworkPackages = [\"everything-dev\", \"every-plugin\"];\n\n const linked = status.packages.filter((p: { isLinked?: boolean }) => p.isLinked);\n const outdated = status.packages.filter(\n (p: { name: string; installed?: string; latest?: string; isLinked?: boolean }) =>\n !p.isLinked &&\n p.installed &&\n p.latest &&\n normalizeVersion(p.installed) !== normalizeVersion(p.latest) &&\n frameworkPackages.includes(p.name),\n );\n\n if (linked.length > 0) {\n for (const pkg of linked) {\n console.log(colors.dim(` ${pkg.name} is linked locally (v${pkg.installed})`));\n }\n }\n\n if (outdated.length === 0) return;\n\n console.log();\n console.log(colors.yellow(` ! Outdated packages detected:`));\n for (const pkg of outdated) {\n console.log(colors.dim(` ${pkg.name} ${pkg.installed} → ${pkg.latest}`));\n }\n console.log(\n colors.dim(\n ` Run ${colors.cyan(\"bos upgrade\")} to update packages and sync template files.`,\n ),\n );\n console.log();\n } catch {\n // silently ignore if status check fails\n }\n}\n\nasync function main() {\n const args = process.argv.slice(2);\n\n if (args.includes(\"--help\") || args.includes(\"-h\")) {\n printHelp();\n return;\n }\n\n const invocationArgs = args.length > 0 ? args : [\"dev\"];\n const command = invocationArgs[0] ?? \"dev\";\n const configPath = findConfigPath();\n\n const commandMatch = findCommandDescriptor(invocationArgs);\n if (!commandMatch) {\n console.error(`Unknown command: ${command}`);\n process.exit(1);\n }\n\n const { descriptor, consumed } = commandMatch;\n const commandArgs = invocationArgs.slice(consumed);\n\n const projectDir = configPath ? dirname(configPath) : undefined;\n const edResolved = projectDir ? resolveFrameworkPackage(projectDir, \"everything-dev\") : undefined;\n const displayVersion = edResolved?.installedVersion\n ? `${edResolved.installedVersion}${edResolved.isLinked ? \" (linked)\" : \"\"}`\n : undefined;\n if (!process.env.BOS_NO_BANNER) {\n printBanner(\"everything-dev\", displayVersion);\n }\n\n const runtime = createPluginRuntime({\n registry: {\n bos: { module: bosPlugin },\n },\n secrets: {},\n });\n\n const pluginRuntime: any = runtime;\n const loadPlugin = pluginRuntime.usePlugin.bind(pluginRuntime);\n const plugin = await loadPlugin(\"bos\", {\n variables: {\n configPath: configPath ?? undefined,\n },\n secrets: {},\n });\n\n const client = plugin.createClient();\n\n const outdatedWarning = warnIfOutdated(client, command);\n\n try {\n const input = parseCommandInput(descriptor, commandArgs);\n\n if (descriptor.key === \"dev\") {\n const devSpinner = p.spinner();\n devSpinner.start(\"Starting dev environment\");\n\n const devPhaseLabels: Record<string, string> = {\n \"shared deps\": \"Preparing config...\",\n install: \"Installing dependencies...\",\n build: \"Building...\",\n \"resolve config\": \"Resolving config...\",\n ports: \"Finding available ports...\",\n \"generate artifacts\": \"Generating code artifacts...\",\n };\n\n const onDevProgress = (event: ProgressEvent) => {\n const label = devPhaseLabels[event.phase] ?? event.phase;\n if (event.status === \"running\") {\n devSpinner.message(label);\n }\n };\n pluginEvents.on(\"progress\", onDevProgress);\n\n let result: DevResult;\n try {\n result = await client.dev(input as DevOptions);\n } finally {\n pluginEvents.off(\"progress\", onDevProgress);\n }\n\n if (result.status === \"error\") {\n devSpinner.stop(\"Failed\");\n console.error(`[CLI] ${result.description}`);\n process.exit(1);\n }\n\n devSpinner.stop();\n clearSpinnerStopLine();\n\n const session = consumeDevSession();\n await outdatedWarning;\n if (session) {\n const { devApp } = await import(\"./dev-session\");\n devApp(session.orchestrator, session.services, session.runtimeConfig);\n }\n return;\n }\n\n if (descriptor.key === \"start\") {\n const startSpinner = p.spinner();\n startSpinner.start(\"Starting production environment\");\n\n const startPhaseLabels: Record<string, string> = {\n config: \"Preparing config...\",\n \"generate artifacts\": \"Generating code artifacts...\",\n };\n\n const onStartProgress = (event: ProgressEvent) => {\n const label = startPhaseLabels[event.phase] ?? event.phase;\n if (event.status === \"running\") {\n startSpinner.message(label);\n }\n };\n pluginEvents.on(\"progress\", onStartProgress);\n\n let result: StartResult;\n try {\n result = await client.start(input as StartOptions);\n } finally {\n pluginEvents.off(\"progress\", onStartProgress);\n }\n\n if (result.status === \"error\") {\n startSpinner.stop(\"Failed\");\n console.error(`[CLI] ${result.error || \"Unknown error\"}`);\n process.exit(1);\n }\n\n startSpinner.stop(\"Ready\");\n\n const session = consumeDevSession();\n await outdatedWarning;\n if (session) {\n const summary = session.summary;\n if (summary) {\n printStartSummary(summary);\n }\n const { startApp } = await import(\"./dev-session\");\n startApp(session.orchestrator, session.services, session.runtimeConfig);\n }\n return;\n }\n\n if (descriptor.key === \"init\") {\n let initInput: InitOptions = { ...(input as InitOptions) };\n\n if (!initInput.noInteractive) {\n const basic = await promptInitBasic({\n extends: initInput.extends,\n account: initInput.account,\n domain: initInput.domain,\n });\n\n let parentPluginKeys: string[] = [];\n let parentConfig: {\n title?: string;\n description?: string;\n plugins?: Record<string, unknown>;\n } | null = null;\n\n const fetchSpinner = p.spinner();\n fetchSpinner.start(\"Fetching parent config\");\n try {\n parentConfig = await fetchParentConfig(basic.extendsAccount, basic.extendsGateway);\n if (parentConfig?.plugins && typeof parentConfig.plugins === \"object\") {\n parentPluginKeys = Object.keys(parentConfig.plugins);\n }\n } catch {\n fetchSpinner.stop(\"Config not found\");\n console.error(\n `[CLI] No config found at bos://${basic.extendsAccount}/${basic.extendsGateway}`,\n );\n process.exit(1);\n }\n fetchSpinner.stop(\"Config fetched\");\n\n if (\n typeof parentConfig?.title === \"string\" &&\n parentConfig.title.trim() &&\n typeof parentConfig?.description === \"string\" &&\n parentConfig.description.trim()\n ) {\n const shouldContinue = await p.confirm({\n message: `You will be extending ${parentConfig.title} - ${parentConfig.description}. Continue?`,\n initialValue: true,\n });\n\n if (p.isCancel(shouldContinue) || !shouldContinue) {\n process.exit(0);\n }\n }\n\n const overrides = await promptInitOverrides({\n parentPluginKeys,\n plugins: initInput.plugins,\n overrides: initInput.overrides as OverrideSection[] | undefined,\n });\n\n const directory = initInput.directory || basic.domain || basic.extendsGateway;\n\n initInput = {\n ...initInput,\n extends: `bos://${basic.extendsAccount}/${basic.extendsGateway}`,\n directory,\n account: basic.account,\n domain: basic.domain || undefined,\n plugins: overrides.plugins,\n overrides: overrides.overrides,\n noInteractive: true,\n };\n }\n\n const initSpinner = p.spinner();\n initSpinner.start(\"Initializing project\");\n\n const phaseLabels: Record<string, string> = {\n \"parent config\": \"Fetching parent config...\",\n \"template source\": \"Resolving template source...\",\n \"scaffold project\": \"Creating project scaffold...\",\n \"copy files\": \"Copying template files...\",\n \"personalize config\": \"Personalizing config...\",\n \"write snapshot\": \"Writing snapshot...\",\n \"resolve config\": \"Resolving config...\",\n \"generate env/docker\": \"Generating environment config...\",\n \"create env file\": \"Creating .env file...\",\n \"install dependencies\": \"Installing dependencies...\",\n \"generate types\": \"Generating types...\",\n \"generate migrations\": \"Generating database migrations...\",\n \"generate code artifacts\": \"Generating code artifacts...\",\n };\n\n const onProgress = (event: ProgressEvent) => {\n const label = phaseLabels[event.phase] ?? event.phase;\n if (event.status === \"running\") {\n initSpinner.message(label);\n }\n };\n pluginEvents.on(\"progress\", onProgress);\n\n let result: InitResult;\n try {\n result = await client.init(initInput);\n } finally {\n pluginEvents.off(\"progress\", onProgress);\n }\n\n if (result.status === \"error\") {\n initSpinner.stop(\"Failed\");\n console.error(`[CLI] ${result.error || \"Unknown error\"}`);\n process.exit(1);\n }\n\n initSpinner.stop(\"Project initialized\");\n\n console.log(` ${colors.dim(\"Extends:\")} ${result.extends}`);\n console.log(` ${colors.dim(\"Directory:\")} ${result.directory}`);\n if (result.account) console.log(` ${colors.dim(\"Account:\")} ${result.account}`);\n if (result.domain) console.log(` ${colors.dim(\"Domain:\")} ${result.domain}`);\n if (result.overrides && result.overrides.length > 0)\n console.log(` ${colors.dim(\"Overrides:\")} ${result.overrides.join(\", \")}`);\n if (result.plugins && result.plugins.length > 0)\n console.log(` ${colors.dim(\"Plugins:\")} ${result.plugins.join(\", \")}`);\n console.log(` ${colors.dim(\"Files copied:\")} ${result.filesCopied}`);\n printTimingSummary(result.timings);\n console.log();\n console.log(colors.dim(\" Next steps:\"));\n console.log(colors.dim(` cd ${result.directory}`));\n if (!initInput.noInstall) {\n console.log(colors.dim(\" docker compose up -d --wait\"));\n console.log(colors.dim(\" bun run dev\"));\n } else {\n console.log(colors.dim(\" bun install\"));\n console.log(colors.dim(\" docker compose up -d --wait\"));\n console.log(colors.dim(\" bun run dev\"));\n }\n console.log();\n\n if (initInput.noInteractive !== true && !initInput.noInstall && result.targetDir) {\n const shouldStartDocker = await p.confirm({\n message: \"Run docker compose up -d --wait?\",\n initialValue: true,\n });\n\n if (shouldStartDocker === true) {\n const dockerSpinner = p.spinner();\n dockerSpinner.start(\"Starting Docker services\");\n try {\n await runDockerComposeUp(result.targetDir);\n dockerSpinner.stop(\"Docker services ready\");\n } catch (error) {\n dockerSpinner.stop(\"Docker services not started\");\n p.log.warn(\n `docker compose up -d --wait failed: ${error instanceof Error ? error.message : error}`,\n );\n }\n }\n }\n\n return;\n }\n\n await outdatedWarning;\n\n const result = await (client as any)[descriptor.key](input);\n\n if (descriptor.key === \"dbStudio\") {\n if (result.status === \"error\") {\n console.error(`[CLI] ${result.error || \"Unknown error\"}`);\n process.exit(1);\n }\n\n const configPath = findConfigPath();\n if (configPath) loadProjectEnv(dirname(configPath));\n\n const { runStudioLocal, runStudioRemote } = await import(\"./cli/db-studio\");\n const info = {\n key: result.plugin as string,\n source: result.source as \"local\" | \"remote\",\n section: result.section as \"app.api\" | \"app.auth\" | \"plugins\",\n databaseSecret: result.databaseSecret as string,\n databaseUrl: result.databaseUrl as string,\n workspaceDir: result.workspaceDir as string | undefined,\n projectDir: dirname(configPath ?? process.cwd()),\n };\n\n try {\n if (info.source === \"local\" && info.workspaceDir) {\n await runStudioLocal(info);\n } else {\n await runStudioRemote(info);\n }\n } catch (error) {\n console.error(`[CLI] ${error instanceof Error ? error.message : String(error)}`);\n process.exit(1);\n }\n return;\n }\n\n if (descriptor.key === \"dbDoctor\") {\n if (result.status === \"error\") {\n console.error(`[CLI] ${result.error || \"Diagnosis failed\"}`);\n process.exit(1);\n }\n\n const statusIcon = (() => {\n switch (result.diagnosis) {\n case \"healthy\":\n return \"✓\";\n case \"empty\":\n return \"○\";\n case \"unapplied\":\n return \"○\";\n case \"untracked-existing-schema\":\n return \"○\";\n case \"drift-safe-repair\":\n return \"⚠\";\n case \"drift-manual\":\n return \"✗\";\n default:\n return \"?\";\n }\n })();\n\n console.log(`\\n${statusIcon} ${result.plugin}`);\n console.log(` ${colors.dim(`Journal:`)} ${result.journalSchema}.${result.journalTable}`);\n console.log(` ${colors.dim(`Local migrations:`)} ${result.localMigrationCount}`);\n console.log(` ${colors.dim(`Applied hashes:`)} ${result.appliedHashCount}`);\n if (result.expectedTables.length > 0) {\n console.log(` ${colors.dim(`Expected tables:`)} ${result.expectedTables.join(\", \")}`);\n }\n if (result.missingTables.length > 0) {\n console.log(` ${colors.yellow(`Missing tables:`)} ${result.missingTables.join(\", \")}`);\n }\n console.log(` ${colors.dim(`Diagnosis:`)} ${result.diagnosis}`);\n if (result.workspaceDir) {\n console.log(` ${colors.dim(`Workspace:`)} ${result.workspaceDir}`);\n }\n console.log();\n return;\n }\n\n if (descriptor.key === \"dbRepair\") {\n if (result.status === \"refused\") {\n console.log(\n `\\n${colors.yellow(\"!\")} Repair refused for ${result.diagnosis?.plugin ?? result.message}`,\n );\n console.log(` ${result.message}`);\n console.log();\n process.exit(0);\n }\n\n if (result.status === \"error\") {\n console.error(`\\n${colors.error(\"✗\")} Repair failed`);\n console.error(` ${result.message}`);\n console.error();\n process.exit(1);\n }\n\n console.log(`\\n${colors.green(\"✓\")} Repair complete`);\n console.log(` ${result.message}`);\n console.log();\n return;\n }\n\n if (descriptor.key === \"config\") {\n if (!result.config) {\n console.error(\"No bos.config.json found\");\n process.exit(1);\n }\n\n printConfigView(result.config);\n process.stdout.write(`${JSON.stringify(result.config, null, 2)}\\n`);\n return;\n }\n\n if (descriptor.key === \"sync\") {\n if ((input as any).json) {\n console.log(JSON.stringify(result, null, 2));\n return;\n }\n console.log();\n if (result.status === \"error\") {\n console.error(`[CLI] ${result.error || \"Unknown error\"}`);\n process.exit(1);\n }\n if (result.status === \"dry-run\") {\n console.log(colors.cyan(`${icons.ok} Dry run — no files written`));\n } else {\n console.log(colors.green(`${icons.ok} Synced`));\n }\n if (result.updated.length > 0 || result.added.length > 0 || result.conflicted.length > 0) {\n console.log(\n ` ${colors.dim(\"Sync results:\")} ${result.updated.length} updated, ${result.added.length} added, ${result.conflicted.length} conflicted`,\n );\n if (result.updated.length > 0) {\n for (const f of result.updated) console.log(` ${colors.dim(f)}`);\n }\n if (result.added.length > 0) {\n for (const f of result.added) console.log(` ${colors.dim(f)}`);\n }\n if (result.conflicted.length > 0) {\n console.log(\n ` ${colors.yellow(\"Conflicted\")} (template applied, your changes backed up):`,\n );\n if (result.backupDir) console.log(` ${colors.dim(result.backupDir)}`);\n for (const f of result.conflicted) console.log(` ${colors.dim(f)}`);\n }\n }\n if (\n result.updated.length === 0 &&\n result.added.length === 0 &&\n result.conflicted.length === 0\n ) {\n console.log(` ${colors.dim(\"Already up to date\")}`);\n }\n console.log();\n return;\n }\n\n if (descriptor.key === \"upgrade\") {\n if ((input as any).json) {\n console.log(JSON.stringify(result, null, 2));\n return;\n }\n console.log();\n if (result.status === \"error\") {\n console.error(`[CLI] ${result.error || \"Unknown error\"}`);\n process.exit(1);\n }\n if (result.status === \"dry-run\") {\n console.log(colors.cyan(`${icons.ok} Dry run — no changes applied`));\n } else {\n console.log(colors.green(`${icons.ok} Upgrade complete`));\n }\n const mainPkg = result.packages.find(\n (p: { name: string; from?: string; to: string }) => p.name === \"everything-dev\",\n );\n const versionDelta =\n mainPkg?.from && mainPkg.from !== mainPkg.to ? `${mainPkg.from} → ${mainPkg.to}` : null;\n if (versionDelta) {\n console.log(` ${colors.dim(`Upgraded everything-dev ${versionDelta}`)}`);\n }\n for (const pkg of result.packages) {\n if (pkg.name === \"everything-dev\") continue;\n if (pkg.from && pkg.from !== pkg.to) {\n console.log(` ${colors.dim(`${pkg.name} ${pkg.from} → ${pkg.to}`)}`);\n } else if (!pkg.from) {\n console.log(` ${colors.dim(`${pkg.name} ${pkg.to} (new)`)}`);\n } else {\n console.log(` ${colors.dim(`${pkg.name} ${pkg.to} (up to date)`)}`);\n }\n }\n if (result.changelogUrl) {\n console.log(` Changelog: ${result.changelogUrl}`);\n }\n if (result.selectedPlugins && result.selectedPlugins.length > 0) {\n console.log(` Added plugins: ${result.selectedPlugins.join(\", \")}`);\n }\n if (result.sync) {\n const sync = result.sync;\n console.log(` ${colors.dim(\"Sync results:\")}`);\n if (sync.updated.length > 0 || sync.added.length > 0 || sync.conflicted.length > 0) {\n console.log(\n ` ${sync.updated.length} updated, ${sync.added.length} added, ${sync.conflicted.length} conflicted`,\n );\n if (sync.conflicted.length > 0) {\n console.log(\n ` ${colors.yellow(\"Conflicted\")} (template applied, your changes backed up):`,\n );\n if (sync.backupDir) console.log(` ${colors.dim(sync.backupDir)}`);\n for (const f of sync.conflicted) console.log(` ${colors.dim(f)}`);\n }\n } else {\n console.log(` ${colors.dim(\"Already up to date\")}`);\n }\n }\n if (result.migrated && result.migrated.length > 0) {\n console.log(` Migrated: ${result.migrated.length} file(s)`);\n for (const f of result.migrated) console.log(` ${colors.dim(f)}`);\n }\n if (versionDelta || (result.sync && result.sync.conflicted.length > 0)) {\n console.log();\n console.log(colors.dim(\" For AI agents:\"));\n const parentRepo = \"nearbuilders/everything-dev\";\n const somedelta =\n mainPkg?.from && mainPkg.to\n ? `v${mainPkg.from.replace(/^[\\^~>=v]+/, \"\")}...v${mainPkg.to.replace(/^[\\^~>=v]+/, \"\")}`\n : \"\";\n console.log(\n colors.dim(\n ` This upgrade applied template changes${somedelta ? ` (${somedelta})` : \"\"}.`,\n ),\n );\n if (result.sync && result.sync.conflicted.length > 0) {\n console.log(\n colors.dim(\n ` ${result.sync.conflicted.length} file(s) had local conflicts — template version applied, backups at ${result.sync.backupDir || \".bos/sync-backup/\"}.`,\n ),\n );\n console.log(\n colors.dim(\n ` If local changes should be preserved upstream, open a PR: https://github.com/${parentRepo}${somedelta ? `/compare/${somedelta}` : \"\"}`,\n ),\n );\n }\n console.log(\n colors.dim(\n \" Load matching intent skills: bunx @tanstack/intent@latest load everything-dev#...\",\n ),\n );\n console.log(colors.dim(\" Review AGENTS.md — local updates may need merging.\"));\n }\n console.log();\n return;\n }\n\n if (descriptor.key === \"status\") {\n console.log();\n if (result.status === \"error\") {\n console.error(`[CLI] ${result.error || \"Unknown error\"}`);\n process.exit(1);\n }\n console.log(colors.cyan(frames.top(52)));\n console.log(` ${icons.app} ${gradients.cyber(\"STATUS\")}`);\n console.log(colors.cyan(frames.bottom(52)));\n console.log();\n if (result.extends) console.log(` ${colors.dim(\"Extends:\")} ${result.extends}`);\n if (result.account) console.log(` ${colors.dim(\"Account:\")} ${result.account}`);\n if (result.domain) console.log(` ${colors.dim(\"Domain:\")} ${result.domain}`);\n console.log();\n console.log(` ${colors.dim(\"Packages:\")}`);\n for (const pkg of result.packages) {\n const hasUpdate =\n pkg.installed &&\n pkg.latest &&\n normalizeVersion(pkg.installed) !== normalizeVersion(pkg.latest);\n const versionStr = hasUpdate\n ? `${pkg.installed} → ${pkg.latest}`\n : pkg.installed || \"not installed\";\n const label = hasUpdate ? colors.yellow(versionStr) : colors.dim(versionStr);\n console.log(` ${colors.dim(`${pkg.name}`)} ${label}`);\n }\n console.log();\n if (result.lastSync) {\n const ago = formatTimeAgo(result.lastSync);\n console.log(` ${colors.dim(\"Last sync:\")} ${ago}`);\n } else {\n console.log(` ${colors.dim(\"Last sync:\")} never`);\n }\n const envLabel =\n result.envFile === \"found\"\n ? colors.green(\"found\")\n : result.envFile === \"example-only\"\n ? colors.yellow(\"missing (only .env.example found)\")\n : colors.error(\"missing\");\n console.log(` ${colors.dim(\".env:\")} ${envLabel}`);\n if (result.parentReachable !== undefined) {\n const parentLabel = result.parentReachable\n ? colors.green(\"reachable\")\n : colors.error(\"unreachable\");\n console.log(` ${colors.dim(\"Parent:\")} ${parentLabel}`);\n }\n const hasUpdates = result.packages.some(\n (p: { installed?: string; latest?: string }) =>\n p.installed && p.latest && normalizeVersion(p.installed) !== normalizeVersion(p.latest),\n );\n if (hasUpdates) {\n console.log();\n console.log(\n colors.dim(\n ` Run ${colors.cyan(\"bos upgrade\")} to update packages and sync template files.`,\n ),\n );\n }\n console.log();\n return;\n }\n\n if (descriptor.key === \"ps\") {\n const psResult = result as PsResult;\n console.log();\n if (psResult.status === \"error\") {\n console.error(`[CLI] ${psResult.error || \"Unknown error\"}`);\n process.exit(1);\n }\n const entries = psResult.entries ?? [];\n if (entries.length === 0) {\n console.log(colors.dim(\" No tracked development processes running.\"));\n console.log();\n console.log(\n colors.dim(` Start one with ${colors.cyan(\"bos dev\")} and it will appear here.`),\n );\n console.log();\n return;\n }\n console.log(colors.cyan(frames.top(60)));\n console.log(` ${icons.app} ${gradients.cyber(\"PROCESSES\")}`);\n console.log(colors.cyan(frames.bottom(60)));\n console.log();\n for (const entry of entries) {\n const ageMs = Date.now() - entry.startedAt;\n const ageStr =\n ageMs < 60_000\n ? `${Math.floor(ageMs / 1000)}s`\n : ageMs < 3_600_000\n ? `${Math.floor(ageMs / 60_000)}m`\n : `${Math.floor(ageMs / 3_600_000)}h`;\n const roleTag =\n entry.role === \"workspace-parent\"\n ? colors.magenta(\"parent\")\n : entry.role === \"workspace-child\"\n ? colors.blue(\"child\")\n : colors.dim(\"dev\");\n console.log(` ${colors.green(`pid ${entry.pid}`)} ${roleTag} ${colors.dim(ageStr)}`);\n console.log(` ${colors.dim(\"dir:\")} ${entry.configDir}`);\n if (entry.parentPid !== undefined) {\n console.log(` ${colors.dim(\"parent:\")} ${entry.parentPid}`);\n }\n const portPairs = Object.entries(entry.ports ?? {})\n .filter(([, p]) => typeof p === \"number\")\n .map(([k, v]) => `${k}=${v}`);\n if (portPairs.length > 0) {\n console.log(` ${colors.dim(\"ports:\")} ${portPairs.join(\" \")}`);\n }\n if (entry.budget) {\n console.log(` ${colors.dim(\"budget:\")} [${entry.budget.min}, ${entry.budget.max}]`);\n }\n console.log(` ${colors.dim(\"desc:\")} ${entry.description}`);\n console.log();\n }\n return;\n }\n\n if (descriptor.key === \"kill\") {\n const killResult = result as KillResult;\n console.log();\n if (killResult.status === \"error\") {\n console.error(`[CLI] ${killResult.error || \"Unknown error\"}`);\n process.exit(1);\n }\n if (killResult.killed.length > 0) {\n console.log(colors.green(`${icons.ok} Sent ${killResult.killed.length} kill signal(s)`));\n for (const k of killResult.killed) {\n console.log(` ${colors.dim(\"pid\")} ${k.pid} ${colors.dim(k.configDir)}`);\n }\n }\n if (killResult.skipped.length > 0) {\n console.log(colors.yellow(`${icons.err} ${killResult.skipped.length} skipped`));\n for (const s of killResult.skipped) {\n console.log(` ${colors.dim(\"pid\")} ${s.pid} ${colors.dim(s.reason)}`);\n }\n }\n if (killResult.killed.length === 0 && killResult.skipped.length === 0) {\n const opts = input as KillOptions;\n if (opts.all) {\n console.log(colors.dim(\" No tracked processes to kill.\"));\n } else {\n const configPath = findConfigPath();\n const dir = opts.configDir ?? (configPath ? resolve(dirname(configPath)) : process.cwd());\n console.log(colors.dim(` No tracked processes for ${dir}`));\n console.log(colors.dim(` Use ${colors.cyan(\"--all\")} to kill across all directories.`));\n }\n }\n console.log();\n return;\n }\n\n if (descriptor.key === \"typesGen\") {\n console.log();\n if (result.status === \"error\") {\n console.error(`[CLI] ${result.error || \"Unknown error\"}`);\n process.exit(1);\n }\n console.log(colors.green(`${icons.ok} Types generated`));\n if (result.generated.length > 0) {\n console.log(` ${colors.dim(\"Written:\")}`);\n for (const f of result.generated) console.log(` ${colors.dim(f)}`);\n }\n if (result.fetched.length > 0 || result.skipped.length > 0 || result.failed.length > 0) {\n console.log(` ${colors.dim(\"Contract sources:\")}`);\n for (const entry of result.fetched) {\n const space = entry.indexOf(\" \");\n const key = space !== -1 ? entry.slice(0, space) : entry;\n const rest = space !== -1 ? entry.slice(space + 1) : \"\";\n const restSpace = rest.indexOf(\" \");\n const detail = restSpace !== -1 ? rest.slice(restSpace + 1) : \"\";\n console.log(\n ` ${key} ${colors.cyan(\"remote\")}${detail ? ` ${colors.dim(detail)}` : \"\"}`,\n );\n }\n for (const entry of result.skipped) {\n const space = entry.indexOf(\" \");\n const key = space !== -1 ? entry.slice(0, space) : entry;\n const rest = space !== -1 ? entry.slice(space + 1) : \"\";\n if (rest === \"no URL resolved\") {\n console.log(` ${key} ${colors.dim(\"no URL resolved\")}`);\n continue;\n }\n const restSpace = rest.indexOf(\" \");\n const detail = restSpace !== -1 ? rest.slice(restSpace + 1) : \"\";\n console.log(` ${key} ${colors.dim(\"local\")}${detail ? ` ${colors.dim(detail)}` : \"\"}`);\n }\n }\n if (result.failed.length > 0) {\n console.log(` ${colors.yellow(\"Failed:\")}`);\n for (const f of result.failed) {\n const colon = f.indexOf(\": \");\n if (colon !== -1) {\n console.log(` ${colors.error(f.slice(0, colon))}${colors.dim(f.slice(colon))}`);\n } else {\n console.log(` ${colors.error(f)}`);\n }\n }\n }\n console.log();\n return;\n }\n\n if (result?.status === \"error\" && descriptor.key !== \"publish\" && descriptor.key !== \"deploy\") {\n console.error(`[CLI] ${result.error || \"Unknown error\"}`);\n process.exit(1);\n }\n\n if (descriptor.key === \"keyPublish\") {\n process.stdout.write(`Generated publish key for ${result.account}\\n`);\n process.stdout.write(` Network: ${result.network}\\n`);\n process.stdout.write(` Allowance: ${result.allowance}\\n`);\n process.stdout.write(`\\n`);\n process.stdout.write(\n ` Set this as NEAR_PRIVATE_KEY in GitHub Actions or before calling publish:\\n`,\n );\n process.stdout.write(` NEAR_PRIVATE_KEY=${result.privateKey}\\n`);\n }\n\n if (descriptor.key === \"pluginAdd\") {\n console.log();\n console.log(colors.green(`${icons.ok} Added plugin ${result.key}`));\n if (result.development) console.log(` ${colors.dim(\"Development:\")} ${result.development}`);\n if (result.production) console.log(` ${colors.dim(\"Production:\")} ${result.production}`);\n console.log();\n return;\n }\n\n if (descriptor.key === \"pluginRemove\") {\n console.log();\n console.log(colors.green(`${icons.ok} Removed plugin ${result.key}`));\n console.log();\n return;\n }\n\n if (descriptor.key === \"pluginList\") {\n console.log();\n console.log(colors.cyan(frames.top(52)));\n console.log(` ${icons.config} ${gradients.cyber(\"PLUGINS\")}`);\n console.log(colors.cyan(frames.bottom(52)));\n console.log();\n if (result.plugins.length === 0) {\n console.log(colors.dim(\" No plugins configured\"));\n } else {\n for (const pluginItem of result.plugins) {\n console.log(` ${colors.cyan(pluginItem.key)}`);\n if (pluginItem.development)\n console.log(` ${colors.dim(\"Development:\")} ${pluginItem.development}`);\n if (pluginItem.production)\n console.log(` ${colors.dim(\"Production:\")} ${pluginItem.production}`);\n }\n }\n console.log();\n return;\n }\n\n if (descriptor.key === \"pluginPublish\") {\n console.log();\n console.log(colors.green(`${icons.ok} Published plugin ${result.key}`));\n if (result.path) console.log(` ${colors.dim(\"Path:\")} ${result.path}`);\n if (result.script) console.log(` ${colors.dim(\"Script:\")} bun run ${result.script}`);\n if (result.production) console.log(` ${colors.dim(\"Production:\")} ${result.production}`);\n console.log();\n return;\n }\n\n if (descriptor.key === \"publish\") {\n if (result.status === \"dry-run\") {\n console.log();\n console.log(colors.cyan(`${icons.ok} Dry run complete`));\n console.log(` ${colors.dim(\"Registry URL:\")} ${result.registryUrl}`);\n console.log();\n return;\n }\n\n if (result.status === \"error\") {\n console.log();\n console.log(colors.error(`${icons.err} Publish failed`));\n if (result.error) {\n console.log(` ${colors.dim(\"Error:\")} ${result.error}`);\n }\n if (result.deployResults && result.deployResults.length > 0) {\n const failures = result.deployResults.filter((r: any) => !r.success);\n if (failures.length > 0) {\n console.log();\n for (const f of failures) {\n const errorLine = (f.error ?? \"Failed\").split(\"\\n\")[0];\n console.log(` ${colors.error(icons.err)} ${f.key}: ${errorLine}`);\n }\n }\n }\n console.log();\n process.exit(1);\n }\n\n if (result.status === \"published\") {\n console.log();\n console.log(colors.green(`${icons.ok} Published successfully`));\n console.log(` ${colors.dim(\"Registry URL:\")} ${result.registryUrl}`);\n if (result.txHash) {\n console.log(` ${colors.dim(\"Transaction:\")} ${result.txHash}`);\n }\n if (result.built && result.built.length > 0) {\n console.log(` ${colors.dim(\"Built:\")} ${result.built.join(\", \")}`);\n }\n if (result.skipped && result.skipped.length > 0) {\n console.log(` ${colors.dim(\"Skipped:\")} ${result.skipped.join(\", \")}`);\n }\n if (result.deployResults) {\n const warnings = result.deployResults.flatMap((r: any) => r.warnings ?? []);\n if (warnings.length > 0) {\n console.log();\n console.log(` ${colors.yellow(\"⚠\")} Build warnings:`);\n for (const w of warnings) {\n console.log(` ${colors.dim(w)}`);\n }\n }\n }\n console.log();\n return;\n }\n }\n\n if (descriptor.key === \"deploy\") {\n const deployResult = result as any;\n if (deployResult.status === \"dry-run\") {\n console.log();\n console.log(colors.cyan(`${icons.ok} Dry run complete`));\n console.log(` ${colors.dim(\"Registry URL:\")} ${deployResult.registryUrl}`);\n console.log();\n return;\n }\n\n if (deployResult.status === \"error\") {\n console.log();\n console.log(colors.error(`${icons.err} Deploy failed`));\n if (deployResult.error) {\n console.log(` ${colors.dim(\"Error:\")} ${deployResult.error}`);\n }\n if (deployResult.deployResults && deployResult.deployResults.length > 0) {\n const failures = deployResult.deployResults.filter((r: any) => !r.success);\n if (failures.length > 0) {\n console.log();\n for (const f of failures) {\n const errorLine = (f.error ?? \"Failed\").split(\"\\n\")[0];\n console.log(` ${colors.error(icons.err)} ${f.key}: ${errorLine}`);\n }\n }\n }\n console.log();\n process.exit(1);\n }\n\n if (deployResult.status === \"deployed\") {\n console.log();\n console.log(colors.green(`${icons.ok} Deployed successfully`));\n console.log(` ${colors.dim(\"Registry URL:\")} ${deployResult.registryUrl}`);\n if (deployResult.txHash) {\n console.log(` ${colors.dim(\"Transaction:\")} ${deployResult.txHash}`);\n }\n if (deployResult.built && deployResult.built.length > 0) {\n console.log(` ${colors.dim(\"Built:\")} ${deployResult.built.join(\", \")}`);\n }\n if (deployResult.skipped && deployResult.skipped.length > 0) {\n console.log(` ${colors.dim(\"Skipped:\")} ${deployResult.skipped.join(\", \")}`);\n }\n if (deployResult.deployResults) {\n const warnings = deployResult.deployResults.flatMap((r: any) => r.warnings ?? []);\n if (warnings.length > 0) {\n console.log();\n console.log(` ${colors.yellow(\"⚠\")} Build warnings:`);\n for (const w of warnings) {\n console.log(` ${colors.dim(w)}`);\n }\n }\n }\n if (deployResult.redeployed) {\n console.log(\n ` ${colors.dim(\"Railway:\")} redeployed ${deployResult.service ?? \"service\"}`,\n );\n } else if (!process.env.RAILWAY_TOKEN) {\n console.log(` ${colors.yellow(\"Railway:\")} skipped (RAILWAY_TOKEN not set)`);\n }\n console.log();\n return;\n }\n\n if (deployResult.status === \"published\") {\n console.log();\n console.log(colors.yellow(`${icons.err} Config published, but Railway redeploy failed`));\n console.log(` ${colors.dim(\"Registry URL:\")} ${deployResult.registryUrl}`);\n if (deployResult.txHash) {\n console.log(` ${colors.dim(\"Transaction:\")} ${deployResult.txHash}`);\n }\n if (deployResult.error) {\n console.log(` ${colors.dim(\"Railway:\")} ${deployResult.error}`);\n }\n console.log();\n process.exit(1);\n }\n }\n } catch (error) {\n console.error(`[CLI] ${error instanceof Error ? error.message : String(error)}`);\n process.exit(1);\n }\n}\n\nvoid main().catch((error) => {\n console.error(\"[CLI] Fatal error:\", error);\n process.exit(1);\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.mjs","names":["bosPlugin"],"sources":["../src/cli.ts"],"sourcesContent":["import { existsSync, watch } from \"node:fs\";\nimport { readFile } from \"node:fs/promises\";\nimport { dirname, resolve } from \"node:path\";\nimport * as p from \"@clack/prompts\";\nimport { installBundleFetchFromEnv } from \"./bundle-fs-resolve\";\nimport { findCommandDescriptor } from \"./cli/catalog\";\nimport { resolveFrameworkPackage } from \"./cli/framework-version\";\nimport { printHelp } from \"./cli/help\";\nimport { runDockerComposeUp } from \"./cli/init\";\nimport { parseCommandInput } from \"./cli/parse\";\nimport { promptInitBasic, promptInitOverrides } from \"./cli/prompts\";\nimport { formatDuration, sumPhaseDurations } from \"./cli/timing\";\nimport { fetchInitParent } from \"./commands/init\";\nimport { findConfigPath, MISSING_CONFIG_MESSAGE, readAuthoredConfigInput } from \"./config\";\nimport type {\n DevOptions,\n DevResult,\n InitOptions,\n InitResult,\n KeyPublishOptions,\n KillOptions,\n KillResult,\n LogsOptions,\n LogsResult,\n OverrideSection,\n PsResult,\n StartOptions,\n StartResult,\n TypecheckWorkspaceResult,\n} from \"./contract\";\nimport type { StartSummary } from \"./dev-program\";\nimport { getRegistryNamespaceForAccount } from \"./fastkv\";\nimport { listPublishKeys } from \"./near-cli\";\nimport { getNetworkIdForAccount } from \"./network\";\nimport bosPlugin from \"./plugin\";\nimport { type ProgressEvent, pluginEvents } from \"./progress\";\nimport { createPluginRuntime } from \"./sdk\";\nimport { printBanner } from \"./utils/banner\";\nimport { colors, frames, gradients, icons } from \"./utils/theme\";\n\nfunction printConfigView(result: {\n account: string;\n domain?: string;\n staging?: { domain: string };\n app?: {\n host: { name?: string; development: string; production?: string };\n ui: { name?: string; development?: string; production?: string; ssr?: string };\n api: { name?: string; development?: string; production?: string; proxy?: string };\n };\n}) {\n console.log();\n console.log(colors.cyan(frames.top(52)));\n console.log(` ${icons.app} ${gradients.cyber(\"CONFIG\")}`);\n console.log(colors.cyan(frames.bottom(52)));\n console.log();\n\n console.log(` ${colors.dim(\"Account\")} ${colors.cyan(result.account)}`);\n console.log(` ${colors.dim(\"Domain\")} ${colors.white(result.domain ?? \"not configured\")}`);\n if (result.staging) {\n console.log(` ${colors.dim(\"Staging\")} ${colors.magenta(result.staging.domain)}`);\n }\n console.log();\n}\n\nfunction formatTimeAgo(isoTimestamp: string): string {\n const now = Date.now();\n const then = new Date(isoTimestamp).getTime();\n const diffMs = now - then;\n const diffMins = Math.floor(diffMs / 60_000);\n if (diffMins < 1) return \"just now\";\n if (diffMins < 60) return `${diffMins} minute${diffMins > 1 ? \"s\" : \"\"} ago`;\n const diffHours = Math.floor(diffMins / 60);\n if (diffHours < 24) return `${diffHours} hour${diffHours > 1 ? \"s\" : \"\"} ago`;\n const diffDays = Math.floor(diffHours / 24);\n if (diffDays < 30) return `${diffDays} day${diffDays > 1 ? \"s\" : \"\"} ago`;\n return isoTimestamp.split(\"T\")[0] ?? isoTimestamp;\n}\n\nfunction normalizeVersion(v: string): string {\n return v.replace(/^[\\^~>=v]+/, \"\").trim();\n}\n\nconst RETIRED_BOOTSTRAP_STUBS = [\n \"ui/src/entry.ts\",\n \"ui/src/hydrate.tsx\",\n \"ui/src/router.server.tsx\",\n \"ui/src/compose.ts\",\n];\n\n/**\n * Hand-modified bootstrap stubs retire as conflicted (backed up, then\n * deleted) — print the mechanical port into the authored seams (ADR 0023).\n */\nfunction printStubMigrationGuide(retiredConflicted: string[] | undefined) {\n const handModified = (retiredConflicted ?? []).filter((f) => RETIRED_BOOTSTRAP_STUBS.includes(f));\n if (handModified.length === 0) return;\n console.log(` ${colors.yellow(\"Port your stub customizations into the authored seams:\")}`);\n console.log(\n ` ${colors.dim(\"- defaultErrorComponent / defaultPendingComponent / defaultNotFoundComponent\")}`,\n );\n console.log(\n ` ${colors.dim(\" → set them inside the createRouter factory in ui/src/router.tsx (after ...opts)\")}`,\n );\n console.log(\n ` ${colors.dim(\"- apiConnectionError copy + SSR locale config (locales, defaultLocale, cookieName)\")}`,\n );\n console.log(\n ` ${colors.dim(\" → export apiConnectionError / appLocale from ui/src/app.ts (see the scaffold template)\")}`,\n );\n console.log(` ${colors.dim(\" backed-up originals: .bos/sync-backup/<timestamp>/\")}`);\n}\n\nfunction printTimingSummary(timings: Array<{ name: string; durationMs: number }> | undefined) {\n if (!timings || timings.length === 0) return;\n\n console.log(` ${colors.dim(\"Timings:\")}`);\n for (const timing of timings) {\n console.log(` ${colors.dim(timing.name.padEnd(22))} ${formatDuration(timing.durationMs)}`);\n }\n console.log(\n ` ${colors.dim(\"total\".padEnd(22))} ${formatDuration(sumPhaseDurations(timings))}`,\n );\n}\n\nfunction printStartSummary(summary: StartSummary) {\n console.log();\n console.log(` ${colors.dim(\"Config Source:\")} ${summary.configSource}`);\n if (summary.configSourceHttp) {\n console.log(` ${colors.dim(summary.configSourceHttp)}`);\n }\n console.log(` ${colors.dim(\"Account:\")} ${summary.account}`);\n console.log(` ${colors.dim(\"Domain:\")} ${summary.domain ?? \"not configured\"}`);\n console.log();\n console.log(` ${colors.dim(\"Modules:\")}`);\n console.log(` ${colors.dim(\"HOST\")} → ${summary.modules.host ?? \"local\"}`);\n console.log(` ${colors.dim(\"UI\")} → ${summary.modules.ui ?? \"local\"}`);\n console.log(` ${colors.dim(\"API\")} → ${summary.modules.api ?? \"local\"}`);\n if (summary.modules.auth) {\n console.log(` ${colors.dim(\"AUTH\")} → ${summary.modules.auth}`);\n }\n if (summary.warnings.length > 0) {\n console.log();\n for (const w of summary.warnings) {\n console.log(` ${colors.yellow(w)}`);\n }\n }\n console.log();\n}\n\nfunction clearSpinnerStopLine() {\n if (!process.stdout.isTTY) return;\n process.stdout.write(\"\\u001B[1A\\u001B[2K\\u001B[1G\");\n}\n\nasync function warnIfOutdated(client: any, command: string): Promise<void> {\n if (![\"dev\", \"build\", \"start\"].includes(command)) return;\n\n try {\n const status = await client.status();\n if (status.status === \"error\" || !status.packages) return;\n\n const frameworkPackages = [\"everything-dev\", \"every-plugin\"];\n\n const linked = status.packages.filter((p: { isLinked?: boolean }) => p.isLinked);\n const outdated = status.packages.filter(\n (p: { name: string; installed?: string; latest?: string; isLinked?: boolean }) =>\n !p.isLinked &&\n p.installed &&\n p.latest &&\n normalizeVersion(p.installed) !== normalizeVersion(p.latest) &&\n frameworkPackages.includes(p.name),\n );\n\n if (linked.length > 0) {\n for (const pkg of linked) {\n console.log(colors.dim(` ${pkg.name} is linked locally (v${pkg.installed})`));\n }\n }\n\n if (outdated.length === 0) return;\n\n const warn = (line: string) => {\n if (command === \"dev\" || command === \"start\") process.stderr.write(`${line}\\n`);\n else console.log(line);\n };\n warn(\"\");\n warn(colors.yellow(` ! Outdated packages detected:`));\n for (const pkg of outdated) {\n warn(colors.dim(` ${pkg.name} ${pkg.installed} → ${pkg.latest}`));\n }\n warn(\n colors.dim(\n ` Run ${colors.cyan(\"bos upgrade\")} to update packages and sync template files.`,\n ),\n );\n warn(\"\");\n } catch {\n // silently ignore if status check fails\n }\n}\n\nasync function main() {\n const args = process.argv.slice(2);\n\n if (args.includes(\"--help\") || args.includes(\"-h\")) {\n printHelp();\n return;\n }\n\n const invocationArgs = args.length > 0 ? args : [\"dev\"];\n const command = invocationArgs[0] ?? \"dev\";\n\n const commandMatch = findCommandDescriptor(invocationArgs);\n if (!commandMatch) {\n console.error(`Unknown command: ${command}`);\n process.exit(1);\n }\n\n const { descriptor, consumed } = commandMatch;\n const commandArgs = invocationArgs.slice(consumed);\n\n // Parse before the plugin boot: `start --config-path` steers the whole CLI,\n // not just the stack — the plugin initialize resolves and pin-validates the\n // boot config, so it must be the config the command will actually run.\n let parsedInput: unknown;\n try {\n parsedInput = parseCommandInput(descriptor, commandArgs);\n } catch (error) {\n console.error(`[CLI] ${error instanceof Error ? error.message : String(error)}`);\n process.exit(1);\n }\n const bootInput = parsedInput as { configPath?: string };\n\n const cwdConfigPath = findConfigPath();\n const configPath = bootInput.configPath ?? cwdConfigPath;\n installBundleFetchFromEnv({ configPath });\n\n const projectDir = cwdConfigPath ? dirname(cwdConfigPath) : undefined;\n const edResolved = projectDir ? resolveFrameworkPackage(projectDir, \"everything-dev\") : undefined;\n const displayVersion = edResolved?.installedVersion\n ? `${edResolved.installedVersion}${edResolved.isLinked ? \" (linked)\" : \"\"}`\n : undefined;\n if (!process.env.BOS_NO_BANNER) {\n printBanner(\"everything-dev\", displayVersion);\n }\n\n const runtime = createPluginRuntime({\n registry: {\n bos: { module: bosPlugin },\n },\n secrets: {},\n });\n\n const pluginRuntime: any = runtime;\n const loadPlugin = pluginRuntime.usePlugin.bind(pluginRuntime);\n const plugin = await loadPlugin(\"bos\", {\n variables: {\n configPath: configPath ?? undefined,\n configDir: cwdConfigPath ? dirname(cwdConfigPath) : undefined,\n },\n secrets: {},\n });\n\n const client = plugin.createClient();\n\n const outdatedWarning = warnIfOutdated(client, command);\n\n try {\n const input = parsedInput;\n\n const rollbackInput = input as {\n listOnly?: boolean;\n version?: string;\n previous?: boolean;\n [key: string]: unknown;\n };\n if (\n descriptor.key === \"rollback\" &&\n !rollbackInput.listOnly &&\n !rollbackInput.version &&\n !rollbackInput.previous\n ) {\n const listing = await (client as any).rollback({ ...rollbackInput, listOnly: true });\n if (listing.status !== \"list\" || !listing.history?.length) {\n console.error(listing.error ?? \"No publish history found\");\n process.exit(1);\n }\n console.log();\n const selection = await p.select({\n message: \"Roll back to which publish?\",\n options: listing.history.map(\n (entry: {\n blockHeight: number;\n blockTimestamp: string;\n txHash?: string;\n summary: string;\n }) => ({\n value: String(entry.blockHeight),\n label: `${entry.blockTimestamp} (block ${entry.blockHeight})`,\n hint: entry.summary,\n }),\n ),\n });\n if (p.isCancel(selection)) {\n return;\n }\n rollbackInput.version = selection as string;\n }\n\n if (descriptor.key === \"keyPublish\") {\n const keyPublishInput = input as KeyPublishOptions;\n if (keyPublishInput.removeOldKeys === undefined) {\n if (process.stdin.isTTY) {\n const authored = configPath ? await readAuthoredConfigInput(dirname(configPath)) : null;\n const account =\n keyPublishInput.env === \"staging\"\n ? (authored?.staging?.account ?? authored?.account)\n : authored?.account;\n let listed: string[] | null = null;\n if (account) {\n const network = getNetworkIdForAccount(account);\n const contract = getRegistryNamespaceForAccount(account, keyPublishInput.registry);\n try {\n listed = await listPublishKeys({ account, contract, network });\n } catch {\n listed = null;\n }\n }\n if (listed?.length) {\n const removeOldKeys = await p.confirm({\n message: `Remove ${listed.length} existing publish key${listed.length > 1 ? \"s\" : \"\"}?`,\n initialValue: true,\n });\n if (p.isCancel(removeOldKeys)) {\n return;\n }\n keyPublishInput.removeOldKeys = removeOldKeys;\n } else {\n keyPublishInput.removeOldKeys = true;\n }\n } else {\n keyPublishInput.removeOldKeys = true;\n }\n }\n }\n\n if (descriptor.key === \"dev\") {\n const devSpinner = p.spinner();\n devSpinner.start(\"Starting dev environment\");\n\n const devPhaseLabels: Record<string, string> = {\n \"shared deps\": \"Preparing config...\",\n install: \"Installing dependencies...\",\n build: \"Building...\",\n \"resolve config\": \"Resolving config...\",\n ports: \"Finding available ports...\",\n \"docker compose up\": \"Starting local Postgres...\",\n \"generate artifacts\": \"Generating code artifacts...\",\n };\n\n const onDevProgress = (event: ProgressEvent) => {\n const label = devPhaseLabels[event.phase] ?? event.phase;\n if (event.status === \"running\") {\n devSpinner.message(label);\n }\n };\n pluginEvents.on(\"progress\", onDevProgress);\n\n let result: DevResult;\n try {\n result = await client.dev(input as DevOptions);\n } finally {\n pluginEvents.off(\"progress\", onDevProgress);\n }\n\n if (result.status === \"error\") {\n devSpinner.stop(\"Failed\");\n console.error(`[CLI] ${result.description}`);\n process.exit(1);\n }\n\n devSpinner.stop();\n clearSpinnerStopLine();\n\n const session = result.session;\n void outdatedWarning;\n if (session) {\n const { devApp } = await import(\"./dev-session\");\n devApp(\n projectDir ?? process.cwd(),\n session.orchestrator,\n session.services,\n session.runtimeConfig,\n session.envGenerated,\n session.shellEnv,\n );\n }\n return;\n }\n\n if (descriptor.key === \"start\") {\n const startSpinner = p.spinner();\n startSpinner.start(\"Starting production environment\");\n\n const startPhaseLabels: Record<string, string> = {\n config: \"Preparing config...\",\n \"generate artifacts\": \"Generating code artifacts...\",\n };\n\n const onStartProgress = (event: ProgressEvent) => {\n const label = startPhaseLabels[event.phase] ?? event.phase;\n if (event.status === \"running\") {\n startSpinner.message(label);\n }\n };\n pluginEvents.on(\"progress\", onStartProgress);\n\n let result: StartResult;\n try {\n result = await client.start(input as StartOptions);\n } finally {\n pluginEvents.off(\"progress\", onStartProgress);\n }\n\n if (result.status === \"error\") {\n startSpinner.stop(\"Failed\");\n console.error(`[CLI] ${result.error || \"Unknown error\"}`);\n process.exit(1);\n }\n\n startSpinner.stop(\"Ready\");\n\n const session = result.session;\n const summary = result.summary;\n void outdatedWarning;\n if (session) {\n if (summary) {\n printStartSummary(summary);\n }\n const { startApp } = await import(\"./dev-session\");\n startApp(\n projectDir ?? process.cwd(),\n session.orchestrator,\n session.services,\n session.runtimeConfig,\n session.envGenerated,\n session.shellEnv,\n );\n }\n return;\n }\n\n if (descriptor.key === \"init\") {\n let initInput: InitOptions = { ...(input as InitOptions) };\n\n if (!initInput.noInteractive) {\n const basic = await promptInitBasic({\n extends: initInput.extends,\n account: initInput.account,\n domain: initInput.domain,\n });\n\n let parentPluginKeys: string[] = [];\n let parentConfig: {\n title?: string;\n description?: string;\n plugins?: Record<string, unknown>;\n } | null = null;\n\n const fetchSpinner = p.spinner();\n fetchSpinner.start(\"Fetching parent config\");\n try {\n const parent = await fetchInitParent(basic.extendsAccount, basic.extendsGateway);\n parentConfig = parent.parentConfig;\n parentPluginKeys = parent.parentPluginKeys;\n } catch {\n fetchSpinner.stop(\"Config not found\");\n console.error(\n `[CLI] No config found at bos://${basic.extendsAccount}/${basic.extendsGateway}`,\n );\n process.exit(1);\n }\n fetchSpinner.stop(\"Config fetched\");\n\n if (\n typeof parentConfig?.title === \"string\" &&\n parentConfig.title.trim() &&\n typeof parentConfig?.description === \"string\" &&\n parentConfig.description.trim()\n ) {\n const shouldContinue = await p.confirm({\n message: `You will be extending ${parentConfig.title} - ${parentConfig.description}. Continue?`,\n initialValue: true,\n });\n\n if (p.isCancel(shouldContinue) || !shouldContinue) {\n process.exit(0);\n }\n }\n\n const overrides = await promptInitOverrides({\n parentPluginKeys,\n plugins: initInput.plugins,\n overrides: initInput.overrides as OverrideSection[] | undefined,\n level: initInput.level,\n });\n\n const directory = initInput.directory || basic.domain || basic.extendsGateway;\n\n initInput = {\n ...initInput,\n extends: `bos://${basic.extendsAccount}/${basic.extendsGateway}`,\n directory,\n account: basic.account,\n domain: basic.domain || undefined,\n plugins: overrides.plugins,\n overrides: overrides.overrides,\n level: overrides.level ?? initInput.level,\n noInteractive: true,\n };\n }\n\n const initSpinner = p.spinner();\n initSpinner.start(\"Initializing project\");\n\n const phaseLabels: Record<string, string> = {\n \"parent config\": \"Fetching parent config...\",\n \"template source\": \"Resolving template source...\",\n \"scaffold project\": \"Creating project scaffold...\",\n \"copy files\": \"Copying template files...\",\n \"personalize config\": \"Personalizing config...\",\n \"write snapshot\": \"Writing snapshot...\",\n \"resolve config\": \"Resolving config...\",\n \"generate env/docker\": \"Generating environment config...\",\n \"create env file\": \"Creating .env file...\",\n \"install dependencies\": \"Installing dependencies...\",\n \"generate types\": \"Generating types...\",\n \"generate migrations\": \"Generating database migrations...\",\n \"generate code artifacts\": \"Generating code artifacts...\",\n };\n\n const onProgress = (event: ProgressEvent) => {\n const label = phaseLabels[event.phase] ?? event.phase;\n if (event.status === \"running\") {\n initSpinner.message(label);\n }\n };\n pluginEvents.on(\"progress\", onProgress);\n\n let result: InitResult;\n try {\n result = await client.init(initInput);\n } finally {\n pluginEvents.off(\"progress\", onProgress);\n }\n\n if (result.status === \"error\") {\n initSpinner.stop(\"Failed\");\n console.error(`[CLI] ${result.error || \"Unknown error\"}`);\n process.exit(1);\n }\n\n initSpinner.stop(\"Project initialized\");\n\n console.log(` ${colors.dim(\"Extends:\")} ${result.extends}`);\n console.log(` ${colors.dim(\"Directory:\")} ${result.directory}`);\n if (result.account) console.log(` ${colors.dim(\"Account:\")} ${result.account}`);\n if (result.domain) console.log(` ${colors.dim(\"Domain:\")} ${result.domain}`);\n if (result.overrides && result.overrides.length > 0)\n console.log(` ${colors.dim(\"Overrides:\")} ${result.overrides.join(\", \")}`);\n if (result.plugins && result.plugins.length > 0)\n console.log(` ${colors.dim(\"Plugins:\")} ${result.plugins.join(\", \")}`);\n console.log(` ${colors.dim(\"Files copied:\")} ${result.filesCopied}`);\n printTimingSummary(result.timings);\n console.log();\n console.log(colors.dim(\" Next steps:\"));\n console.log(colors.dim(` cd ${result.directory}`));\n if (!initInput.noInstall) {\n console.log(colors.dim(\" pnpm run dev\"));\n } else {\n console.log(colors.dim(\" pnpm install\"));\n console.log(colors.dim(\" pnpm run dev\"));\n }\n console.log();\n\n if (initInput.noInteractive !== true && !initInput.noInstall && result.targetDir) {\n const shouldStartDocker = await p.confirm({\n message: \"Run docker compose up -d --wait?\",\n initialValue: true,\n });\n\n if (shouldStartDocker === true) {\n const dockerSpinner = p.spinner();\n dockerSpinner.start(\"Starting Docker services\");\n const compose = await runDockerComposeUp(result.targetDir);\n if (compose.ok) {\n dockerSpinner.stop(\"Docker services ready\");\n } else {\n dockerSpinner.stop(\"Docker services not started\");\n p.log.warn(\n `docker compose up -d --wait failed${compose.tail ? `:\\n${compose.tail}` : \"\"}`,\n );\n }\n }\n }\n\n return;\n }\n\n const result = await (client as any)[descriptor.key](input);\n\n if (descriptor.key === \"dbStudio\") {\n if (result.status === \"error\") {\n console.error(`[CLI] ${result.error || \"Unknown error\"}`);\n process.exit(1);\n }\n\n return;\n }\n\n if (descriptor.key === \"dbDoctor\") {\n if (result.status === \"error\") {\n console.error(`[CLI] ${result.error || \"Diagnosis failed\"}`);\n process.exit(1);\n }\n\n const statusIcon = (() => {\n switch (result.diagnosis) {\n case \"healthy\":\n return \"✓\";\n case \"empty\":\n return \"○\";\n case \"unapplied\":\n return \"○\";\n case \"untracked-existing-schema\":\n return \"○\";\n case \"drift-safe-repair\":\n return \"⚠\";\n case \"drift-manual\":\n return \"✗\";\n default:\n return \"?\";\n }\n })();\n\n console.log(`\\n${statusIcon} ${result.plugin}`);\n console.log(` ${colors.dim(`Journal:`)} ${result.journalSchema}.${result.journalTable}`);\n console.log(` ${colors.dim(`Local migrations:`)} ${result.localMigrationCount}`);\n console.log(` ${colors.dim(`Applied hashes:`)} ${result.appliedHashCount}`);\n if (result.expectedTables.length > 0) {\n console.log(` ${colors.dim(`Expected tables:`)} ${result.expectedTables.join(\", \")}`);\n }\n if (result.missingTables.length > 0) {\n console.log(` ${colors.yellow(`Missing tables:`)} ${result.missingTables.join(\", \")}`);\n }\n console.log(` ${colors.dim(`Diagnosis:`)} ${result.diagnosis}`);\n if (result.workspaceDir) {\n console.log(` ${colors.dim(`Workspace:`)} ${result.workspaceDir}`);\n }\n console.log();\n return;\n }\n\n if (descriptor.key === \"dbRepair\") {\n if (result.status === \"refused\") {\n console.log(\n `\\n${colors.yellow(\"!\")} Repair refused for ${result.diagnosis?.plugin ?? result.message}`,\n );\n console.log(` ${result.message}`);\n console.log();\n process.exit(0);\n }\n\n if (result.status === \"error\") {\n console.error(`\\n${colors.error(\"✗\")} Repair failed`);\n console.error(` ${result.message}`);\n console.error();\n process.exit(1);\n }\n\n console.log(`\\n${colors.green(\"✓\")} Repair complete`);\n console.log(` ${result.message}`);\n console.log();\n return;\n }\n\n if (descriptor.key === \"config\") {\n if (!result.config) {\n console.error(MISSING_CONFIG_MESSAGE);\n process.exit(1);\n }\n\n printConfigView(result.config);\n process.stdout.write(`${JSON.stringify(result.config, null, 2)}\\n`);\n return;\n }\n\n if (descriptor.key === \"sync\") {\n if ((input as any).json) {\n console.log(JSON.stringify(result, null, 2));\n return;\n }\n console.log();\n if (result.status === \"error\") {\n console.error(`[CLI] ${result.error || \"Unknown error\"}`);\n process.exit(1);\n }\n if (result.status === \"dry-run\") {\n console.log(colors.cyan(`${icons.ok} Dry run — no files written`));\n } else {\n console.log(colors.green(`${icons.ok} Synced`));\n }\n const hasRetirement =\n (result.retired?.length ?? 0) > 0 || (result.retiredConflicted?.length ?? 0) > 0;\n if (\n result.updated.length > 0 ||\n result.added.length > 0 ||\n result.conflicted.length > 0 ||\n hasRetirement\n ) {\n console.log(\n ` ${colors.dim(\"Sync results:\")} ${result.updated.length} updated, ${result.added.length} added, ${result.conflicted.length} conflicted`,\n );\n if (result.updated.length > 0) {\n for (const f of result.updated) console.log(` ${colors.dim(f)}`);\n }\n if (result.added.length > 0) {\n for (const f of result.added) console.log(` ${colors.dim(f)}`);\n }\n if (result.conflicted.length > 0) {\n console.log(\n ` ${colors.yellow(\"Conflicted\")} (template applied, your changes backed up):`,\n );\n if (result.backupDir) console.log(` ${colors.dim(result.backupDir)}`);\n for (const f of result.conflicted) console.log(` ${colors.dim(f)}`);\n }\n if (hasRetirement) {\n console.log(` ${colors.yellow(\"Retired\")} (replaced by generated stubs — ADR 0023):`);\n if (result.retiredBackupDir) console.log(` ${colors.dim(result.retiredBackupDir)}`);\n for (const f of result.retiredConflicted ?? []) {\n console.log(` ${colors.dim(`${f} (backed up)`)}`);\n }\n for (const f of result.retired ?? []) console.log(` ${colors.dim(f)}`);\n printStubMigrationGuide(result.retiredConflicted);\n }\n }\n if (\n result.updated.length === 0 &&\n result.added.length === 0 &&\n result.conflicted.length === 0 &&\n !hasRetirement\n ) {\n console.log(` ${colors.dim(\"Already up to date\")}`);\n }\n console.log();\n return;\n }\n\n if (descriptor.key === \"upgrade\") {\n if ((input as any).json) {\n console.log(JSON.stringify(result, null, 2));\n return;\n }\n console.log();\n if (result.status === \"error\") {\n console.error(`[CLI] ${result.error || \"Unknown error\"}`);\n process.exit(1);\n }\n if (result.status === \"dry-run\") {\n console.log(colors.cyan(`${icons.ok} Dry run — no changes applied`));\n } else {\n console.log(colors.green(`${icons.ok} Upgrade complete`));\n }\n const mainPkg = result.packages.find(\n (p: { name: string; from?: string; to: string }) => p.name === \"everything-dev\",\n );\n const versionDelta =\n mainPkg?.from && mainPkg.from !== mainPkg.to ? `${mainPkg.from} → ${mainPkg.to}` : null;\n if (versionDelta) {\n console.log(` ${colors.dim(`Upgraded everything-dev ${versionDelta}`)}`);\n }\n for (const pkg of result.packages) {\n if (pkg.name === \"everything-dev\") continue;\n if (pkg.from && pkg.from !== pkg.to) {\n console.log(` ${colors.dim(`${pkg.name} ${pkg.from} → ${pkg.to}`)}`);\n } else if (!pkg.from) {\n console.log(` ${colors.dim(`${pkg.name} ${pkg.to} (new)`)}`);\n } else {\n console.log(` ${colors.dim(`${pkg.name} ${pkg.to} (up to date)`)}`);\n }\n }\n if (result.changelogUrl) {\n console.log(` Changelog: ${result.changelogUrl}`);\n }\n if (result.selectedPlugins && result.selectedPlugins.length > 0) {\n console.log(` Added plugins: ${result.selectedPlugins.join(\", \")}`);\n }\n if (result.sync) {\n const sync = result.sync;\n const hasRetirement =\n (sync.retired?.length ?? 0) > 0 || (sync.retiredConflicted?.length ?? 0) > 0;\n console.log(` ${colors.dim(\"Sync results:\")}`);\n if (\n sync.updated.length > 0 ||\n sync.added.length > 0 ||\n sync.conflicted.length > 0 ||\n hasRetirement\n ) {\n console.log(\n ` ${sync.updated.length} updated, ${sync.added.length} added, ${sync.conflicted.length} conflicted`,\n );\n if (sync.conflicted.length > 0) {\n console.log(\n ` ${colors.yellow(\"Conflicted\")} (template applied, your changes backed up):`,\n );\n if (sync.backupDir) console.log(` ${colors.dim(sync.backupDir)}`);\n for (const f of sync.conflicted) console.log(` ${colors.dim(f)}`);\n }\n if (hasRetirement) {\n console.log(` ${colors.yellow(\"Retired\")} (replaced by generated stubs — ADR 0023):`);\n if (sync.retiredBackupDir) console.log(` ${colors.dim(sync.retiredBackupDir)}`);\n for (const f of sync.retiredConflicted ?? []) {\n console.log(` ${colors.dim(`${f} (backed up)`)}`);\n }\n for (const f of sync.retired ?? []) console.log(` ${colors.dim(f)}`);\n printStubMigrationGuide(sync.retiredConflicted);\n }\n } else {\n console.log(` ${colors.dim(\"Already up to date\")}`);\n }\n }\n if (result.migrated && result.migrated.length > 0) {\n console.log(` Migrated: ${result.migrated.length} file(s)`);\n for (const f of result.migrated) console.log(` ${colors.dim(f)}`);\n }\n if (versionDelta || (result.sync && result.sync.conflicted.length > 0)) {\n console.log();\n console.log(colors.dim(\" For AI agents:\"));\n const parentRepo = \"nearbuilders/everything-dev\";\n const somedelta =\n mainPkg?.from && mainPkg.to\n ? `v${mainPkg.from.replace(/^[\\^~>=v]+/, \"\")}...v${mainPkg.to.replace(/^[\\^~>=v]+/, \"\")}`\n : \"\";\n console.log(\n colors.dim(\n ` This upgrade applied template changes${somedelta ? ` (${somedelta})` : \"\"}.`,\n ),\n );\n if (result.sync && result.sync.conflicted.length > 0) {\n console.log(\n colors.dim(\n ` ${result.sync.conflicted.length} file(s) had local conflicts — template version applied, backups at ${result.sync.backupDir || \".bos/sync-backup/\"}.`,\n ),\n );\n console.log(\n colors.dim(\n ` If local changes should be preserved upstream, open a PR: https://github.com/${parentRepo}${somedelta ? `/compare/${somedelta}` : \"\"}`,\n ),\n );\n }\n console.log(\n colors.dim(\n \" Load matching intent skills: pnpm dlx @tanstack/intent@latest load everything-dev#...\",\n ),\n );\n console.log(colors.dim(\" Review AGENTS.md — local updates may need merging.\"));\n }\n console.log();\n return;\n }\n\n if (descriptor.key === \"status\") {\n console.log();\n if (result.status === \"error\") {\n console.error(`[CLI] ${result.error || \"Unknown error\"}`);\n process.exit(1);\n }\n console.log(colors.cyan(frames.top(52)));\n console.log(` ${icons.app} ${gradients.cyber(\"STATUS\")}`);\n console.log(colors.cyan(frames.bottom(52)));\n console.log();\n if (result.extends) console.log(` ${colors.dim(\"Extends:\")} ${result.extends}`);\n if (result.account) console.log(` ${colors.dim(\"Account:\")} ${result.account}`);\n if (result.domain) console.log(` ${colors.dim(\"Domain:\")} ${result.domain}`);\n console.log();\n console.log(` ${colors.dim(\"Packages:\")}`);\n for (const pkg of result.packages) {\n const hasUpdate =\n pkg.installed &&\n pkg.latest &&\n normalizeVersion(pkg.installed) !== normalizeVersion(pkg.latest);\n const versionStr = hasUpdate\n ? `${pkg.installed} → ${pkg.latest}`\n : pkg.installed || \"not installed\";\n const label = hasUpdate ? colors.yellow(versionStr) : colors.dim(versionStr);\n console.log(` ${colors.dim(`${pkg.name}`)} ${label}`);\n }\n console.log();\n if (result.lastSync) {\n const ago = formatTimeAgo(result.lastSync);\n console.log(` ${colors.dim(\"Last sync:\")} ${ago}`);\n } else {\n console.log(` ${colors.dim(\"Last sync:\")} never`);\n }\n const envLabel =\n result.envFile === \"found\"\n ? colors.green(\"found\")\n : result.envFile === \"example-only\"\n ? colors.yellow(\"missing (only .env.example found)\")\n : colors.error(\"missing\");\n console.log(` ${colors.dim(\".env:\")} ${envLabel}`);\n if (result.parentReachable !== undefined) {\n const parentLabel = result.parentReachable\n ? colors.green(\"reachable\")\n : colors.error(\"unreachable\");\n console.log(` ${colors.dim(\"Parent:\")} ${parentLabel}`);\n }\n const hasUpdates = result.packages.some(\n (p: { installed?: string; latest?: string }) =>\n p.installed && p.latest && normalizeVersion(p.installed) !== normalizeVersion(p.latest),\n );\n if (hasUpdates) {\n console.log();\n console.log(\n colors.dim(\n ` Run ${colors.cyan(\"bos upgrade\")} to update packages and sync template files.`,\n ),\n );\n }\n console.log();\n return;\n }\n\n if (descriptor.key === \"ps\") {\n const psResult = result as PsResult;\n console.log();\n if (psResult.status === \"error\") {\n console.error(`[CLI] ${psResult.error || \"Unknown error\"}`);\n process.exit(1);\n }\n const entries = psResult.entries ?? [];\n if (entries.length === 0) {\n console.log(colors.dim(\" No tracked development processes running.\"));\n console.log();\n console.log(\n colors.dim(` Start one with ${colors.cyan(\"bos dev\")} and it will appear here.`),\n );\n console.log();\n return;\n }\n console.log(colors.cyan(frames.top(60)));\n console.log(` ${icons.app} ${gradients.cyber(\"PROCESSES\")}`);\n console.log(colors.cyan(frames.bottom(60)));\n console.log();\n for (const entry of entries) {\n const ageMs = Date.now() - entry.startedAt;\n const ageStr =\n ageMs < 60_000\n ? `${Math.floor(ageMs / 1000)}s`\n : ageMs < 3_600_000\n ? `${Math.floor(ageMs / 60_000)}m`\n : `${Math.floor(ageMs / 3_600_000)}h`;\n const roleTag =\n entry.role === \"workspace-parent\"\n ? colors.magenta(\"parent\")\n : entry.role === \"workspace-child\"\n ? colors.blue(\"child\")\n : colors.dim(\"dev\");\n console.log(` ${colors.green(`pid ${entry.pid}`)} ${roleTag} ${colors.dim(ageStr)}`);\n console.log(` ${colors.dim(\"dir:\")} ${entry.configDir}`);\n if (entry.parentPid !== undefined) {\n console.log(` ${colors.dim(\"parent:\")} ${entry.parentPid}`);\n }\n const portPairs = Object.entries(entry.ports ?? {})\n .filter(([, p]) => typeof p === \"number\")\n .map(([k, v]) => `${k}=${v}`);\n if (portPairs.length > 0) {\n console.log(` ${colors.dim(\"ports:\")} ${portPairs.join(\" \")}`);\n }\n if (entry.budget) {\n console.log(` ${colors.dim(\"budget:\")} [${entry.budget.min}, ${entry.budget.max}]`);\n }\n console.log(` ${colors.dim(\"desc:\")} ${entry.description}`);\n console.log();\n }\n return;\n }\n\n if (descriptor.key === \"logs\") {\n const logsResult = result as LogsResult;\n const opts = input as LogsOptions;\n for (const line of logsResult.lines) {\n console.log(line);\n }\n if (logsResult.lines.length === 0) {\n console.log(colors.dim(` No matching log lines in ${logsResult.logFile}.`));\n }\n if (opts.follow) {\n if (logsResult.logFile === \"unknown\" || !existsSync(logsResult.logFile)) {\n console.log(colors.dim(\" No log file to follow — nothing was found on disk.\"));\n } else {\n const filter = opts.service;\n let byteOffset = 0;\n for (const line of logsResult.lines) byteOffset += Buffer.byteLength(line, \"utf8\") + 1;\n const followMatch = (line: string): boolean => {\n if (!filter) return true;\n const source = /\\] \\[([^\\]]+)\\] \\[(?:OUT|ERR)\\] /.exec(line)?.[1];\n return source === filter || source === `plugin:${filter}`;\n };\n const watcher = watch(logsResult.logFile, (event) => {\n if (event !== \"change\") return;\n void readFile(logsResult.logFile, \"utf8\")\n .then((text) => {\n const newLines = text\n .slice(byteOffset)\n .split(\"\\n\")\n .filter((line) => line.length > 0 && followMatch(line));\n byteOffset = Buffer.byteLength(text, \"utf8\");\n for (const line of newLines) {\n console.log(line);\n }\n })\n .catch(() => {\n // the followed file was rotated or deleted — stop following\n watcher.close();\n });\n });\n console.log(colors.dim(\" Following — Ctrl+C to stop.\"));\n process.on(\"SIGINT\", () => {\n watcher.close();\n process.exit(0);\n });\n }\n }\n return;\n }\n\n if (descriptor.key === \"kill\") {\n const killResult = result as KillResult;\n console.log();\n if (killResult.status === \"error\") {\n console.error(`[CLI] ${killResult.error || \"Unknown error\"}`);\n process.exit(1);\n }\n if (killResult.killed.length > 0) {\n console.log(colors.green(`${icons.ok} Sent ${killResult.killed.length} kill signal(s)`));\n for (const k of killResult.killed) {\n console.log(` ${colors.dim(\"pid\")} ${k.pid} ${colors.dim(k.configDir)}`);\n }\n }\n if (killResult.skipped.length > 0) {\n console.log(colors.yellow(`${icons.err} ${killResult.skipped.length} skipped`));\n for (const s of killResult.skipped) {\n console.log(` ${colors.dim(\"pid\")} ${s.pid} ${colors.dim(s.reason)}`);\n }\n }\n if (killResult.killed.length === 0 && killResult.skipped.length === 0) {\n const opts = input as KillOptions;\n if (opts.all) {\n console.log(colors.dim(\" No tracked processes to kill.\"));\n } else {\n const configPath = findConfigPath();\n const dir = opts.configDir ?? (configPath ? resolve(dirname(configPath)) : process.cwd());\n console.log(colors.dim(` No tracked processes for ${dir}`));\n console.log(colors.dim(` Use ${colors.cyan(\"--all\")} to kill across all directories.`));\n }\n }\n console.log();\n return;\n }\n\n if (descriptor.key === \"typesGen\") {\n console.log();\n if (result.status === \"error\") {\n console.error(`[CLI] ${result.error || \"Unknown error\"}`);\n process.exit(1);\n }\n console.log(colors.green(`${icons.ok} Types generated`));\n if (result.generated.length > 0) {\n console.log(` ${colors.dim(\"Written:\")}`);\n for (const f of result.generated) console.log(` ${colors.dim(f)}`);\n }\n if (result.fetched.length > 0 || result.skipped.length > 0 || result.failed.length > 0) {\n console.log(` ${colors.dim(\"Contract sources:\")}`);\n for (const entry of result.fetched) {\n const space = entry.indexOf(\" \");\n const key = space !== -1 ? entry.slice(0, space) : entry;\n const rest = space !== -1 ? entry.slice(space + 1) : \"\";\n const restSpace = rest.indexOf(\" \");\n const detail = restSpace !== -1 ? rest.slice(restSpace + 1) : \"\";\n console.log(\n ` ${key} ${colors.cyan(\"remote\")}${detail ? ` ${colors.dim(detail)}` : \"\"}`,\n );\n }\n for (const entry of result.skipped) {\n const space = entry.indexOf(\" \");\n const key = space !== -1 ? entry.slice(0, space) : entry;\n const rest = space !== -1 ? entry.slice(space + 1) : \"\";\n if (rest === \"no URL resolved\") {\n console.log(` ${key} ${colors.dim(\"no URL resolved\")}`);\n continue;\n }\n const restSpace = rest.indexOf(\" \");\n const detail = restSpace !== -1 ? rest.slice(restSpace + 1) : \"\";\n console.log(` ${key} ${colors.dim(\"local\")}${detail ? ` ${colors.dim(detail)}` : \"\"}`);\n }\n }\n if (result.failed.length > 0) {\n console.log(` ${colors.yellow(\"Failed:\")}`);\n for (const f of result.failed) {\n const colon = f.indexOf(\": \");\n if (colon !== -1) {\n console.log(` ${colors.error(f.slice(0, colon))}${colors.dim(f.slice(colon))}`);\n } else {\n console.log(` ${colors.error(f)}`);\n }\n }\n }\n console.log();\n return;\n }\n\n if (descriptor.key === \"typecheck\") {\n console.log();\n if (result.status === \"error\") {\n console.error(`[CLI] ${result.error || \"Unknown error\"}`);\n process.exit(1);\n }\n const failed = result.results.filter((r: TypecheckWorkspaceResult) => !r.passed);\n const passed = result.results.filter((r: TypecheckWorkspaceResult) => r.passed);\n console.log(colors.cyan(frames.top(52)));\n console.log(` ${icons.app} ${gradients.cyber(\"TYPECHECK\")}`);\n console.log(colors.cyan(frames.bottom(52)));\n console.log();\n for (const r of result.results) {\n const icon = r.passed ? colors.green(\"✓\") : colors.error(\"✗\");\n console.log(` ${icon} ${r.workspace}`);\n }\n if (result.skipped.length > 0) {\n console.log(` ${colors.dim(`Skipped: ${result.skipped.join(\", \")}`)}`);\n }\n console.log();\n if (failed.length > 0) {\n console.log(` ${colors.error(`${failed.length} failed`)}`);\n for (const f of failed) {\n if (f.error) console.log(` ${colors.dim(f.error)}`);\n }\n console.log();\n process.exit(1);\n }\n console.log(` ${colors.green(`${passed.length} passed`)}`);\n console.log();\n return;\n }\n\n if (descriptor.key === \"mfCheck\") {\n console.log();\n console.log(\n ` ${colors.dim(\"Host\")} ${result.hostReachable ? colors.green(\"OK \") : colors.error(\"FAIL\")} ${\n result.hostVersion ?? \"unreachable\"\n }${result.hostReason ? ` (${result.hostReason})` : \"\"}`,\n );\n for (const r of result.remotes) {\n const tag = r.ok ? colors.green(\"OK \") : colors.error(\"FAIL\");\n console.log(\n ` ${colors.dim(r.role.padEnd(10))} ${tag} ${r.url} pluginVersion=${r.pluginVersion ?? \"?\"}${\n r.reason ? ` ↳ ${r.reason}` : \"\"\n }`,\n );\n }\n console.log();\n if (result.status !== \"ok\") {\n console.log(\n colors.error(\n \" mf-compat: ✗ federation manifests NOT compatible — redeploy affected plugin(s) so pluginVersion and shared versions match host\",\n ),\n );\n console.log();\n process.exit(1);\n }\n console.log(colors.green(\" mf-compat: ✓ all federation manifests compatible\"));\n console.log();\n return;\n }\n\n if (result?.status === \"error\" && descriptor.key !== \"publish\" && descriptor.key !== \"deploy\") {\n console.error(`[CLI] ${result.error || \"Unknown error\"}`);\n process.exit(1);\n }\n\n if (descriptor.key === \"login\") {\n console.log();\n console.log(colors.green(`${icons.ok} Logged in to ${result.siteUrl}`));\n if (result.accountId) console.log(` ${colors.dim(\"Account:\")} ${result.accountId}`);\n if (result.expiresAt) console.log(` ${colors.dim(\"Expires:\")} ${result.expiresAt}`);\n if (result.warning) console.log(` ${colors.yellow(\"⚠\")} ${result.warning}`);\n if (result.publishKey) {\n console.log(\n ` ${colors.dim(\"Publish key:\")} ${result.publishKey.publicKey} ${colors.dim(\n `(${result.publishKey.network}, exported to ${result.publishKey.exportedTo})`,\n )}`,\n );\n }\n console.log();\n return;\n }\n\n if (descriptor.key === \"logout\") {\n console.log();\n console.log(colors.green(`${icons.ok} Logged out`));\n if (result.revokedApiKey) console.log(` ${colors.dim(\"Revoked API key\")}`);\n if (result.removedPublishKey) console.log(` ${colors.dim(\"Removed exported publish key\")}`);\n if (result.warning) console.log(` ${colors.yellow(\"⚠\")} ${result.warning}`);\n console.log();\n return;\n }\n\n if (descriptor.key === \"keyPublish\") {\n process.stdout.write(`Generated publish key for ${result.account}\\n`);\n process.stdout.write(` Network: ${result.network}\\n`);\n process.stdout.write(` Allowance: ${result.allowance}\\n`);\n process.stdout.write(`\\n`);\n const secretName = result.env === \"staging\" ? \"NEAR_TESTNET_PRIVATE_KEY\" : \"NEAR_PRIVATE_KEY\";\n if (!process.stdout.isTTY) {\n process.stderr.write(\n ` ⚠ Non-interactive stdout: this private key will be captured in any log or pipe (GitHub Actions logs persist stdout).\\n`,\n );\n }\n process.stdout.write(\n ` Set this as ${secretName} in GitHub Actions or before calling publish:\\n`,\n );\n process.stdout.write(`${secretName}=${result.privateKey}\\n`);\n }\n\n if (descriptor.key === \"pluginAdd\") {\n console.log();\n console.log(colors.green(`${icons.ok} Added plugin ${result.key}`));\n if (result.development) console.log(` ${colors.dim(\"Development:\")} ${result.development}`);\n if (result.production) console.log(` ${colors.dim(\"Production:\")} ${result.production}`);\n console.log();\n return;\n }\n\n if (descriptor.key === \"pluginRemove\") {\n console.log();\n console.log(colors.green(`${icons.ok} Removed plugin ${result.key}`));\n console.log();\n return;\n }\n\n if (descriptor.key === \"pluginList\") {\n console.log();\n console.log(colors.cyan(frames.top(52)));\n console.log(` ${icons.config} ${gradients.cyber(\"PLUGINS\")}`);\n console.log(colors.cyan(frames.bottom(52)));\n console.log();\n if (result.plugins.length === 0) {\n console.log(colors.dim(\" No plugins configured\"));\n } else {\n for (const pluginItem of result.plugins) {\n console.log(` ${colors.cyan(pluginItem.key)}`);\n if (pluginItem.development)\n console.log(` ${colors.dim(\"Development:\")} ${pluginItem.development}`);\n if (pluginItem.production)\n console.log(` ${colors.dim(\"Production:\")} ${pluginItem.production}`);\n }\n }\n console.log();\n return;\n }\n\n if (descriptor.key === \"pluginPublish\") {\n console.log();\n console.log(colors.green(`${icons.ok} Published plugin ${result.key}`));\n if (result.path) console.log(` ${colors.dim(\"Path:\")} ${result.path}`);\n if (result.production) console.log(` ${colors.dim(\"Production:\")} ${result.production}`);\n if (result.version) console.log(` ${colors.dim(\"Version:\")} ${result.version}`);\n if (result.fingerprint) console.log(` ${colors.dim(\"Fingerprint:\")} ${result.fingerprint}`);\n console.log();\n return;\n }\n\n if (descriptor.key === \"registryUse\") {\n console.log();\n if (result.status === \"error\") {\n console.error(colors.error(`${icons.err} ${result.error || \"Unknown error\"}`));\n process.exit(1);\n }\n console.log(\n colors.green(\n `${icons.ok} ${result.status === \"dry-run\" ? \"Dry run\" : \"Composed\"} from ${result.from}`,\n ),\n );\n for (const section of result.applied) {\n console.log(` ${colors.green(\"+\")} ${section}`);\n }\n if (result.configPath) {\n console.log(` ${colors.dim(\"Config:\")} ${result.configPath}`);\n }\n if (result.status === \"updated\") {\n console.log(colors.dim(\" Run bos types gen to refresh generated types.\"));\n }\n console.log();\n return;\n }\n\n if (descriptor.key === \"publish\") {\n if (result.status === \"dry-run\") {\n console.log();\n console.log(colors.cyan(`${icons.ok} Dry run complete`));\n console.log(` ${colors.dim(\"Registry URL:\")} ${result.registryUrl}`);\n console.log();\n return;\n }\n\n if (result.status === \"error\") {\n console.log();\n console.log(colors.error(`${icons.err} Publish failed`));\n if (result.error) {\n console.log(` ${colors.dim(\"Error:\")} ${result.error}`);\n }\n if (result.deployResults && result.deployResults.length > 0) {\n const failures = result.deployResults.filter((r: any) => !r.success);\n if (failures.length > 0) {\n console.log();\n for (const f of failures) {\n const errorLine = (f.error ?? \"Failed\").split(\"\\n\")[0];\n console.log(` ${colors.error(icons.err)} ${f.key}: ${errorLine}`);\n }\n }\n }\n console.log();\n process.exit(1);\n }\n\n if (result.status === \"published\") {\n console.log();\n console.log(colors.green(`${icons.ok} Published successfully`));\n console.log(` ${colors.dim(\"Registry URL:\")} ${result.registryUrl}`);\n if (result.txHash) {\n console.log(` ${colors.dim(\"Transaction:\")} ${result.txHash}`);\n }\n if (result.built && result.built.length > 0) {\n console.log(` ${colors.dim(\"Built:\")} ${result.built.join(\", \")}`);\n }\n if (result.skipped && result.skipped.length > 0) {\n console.log(` ${colors.dim(\"Skipped:\")} ${result.skipped.join(\", \")}`);\n }\n if (result.deployResults) {\n const warnings = result.deployResults.flatMap((r: any) => r.warnings ?? []);\n if (warnings.length > 0) {\n console.log();\n console.log(` ${colors.yellow(\"⚠\")} Build warnings:`);\n for (const w of warnings) {\n console.log(` ${colors.dim(w)}`);\n }\n }\n }\n console.log();\n return;\n }\n }\n\n if (descriptor.key === \"rollback\") {\n const rollbackResult = result as any;\n if (rollbackResult.status === \"error\") {\n console.log();\n console.log(colors.error(`${icons.err} Roll back failed`));\n if (rollbackResult.error) {\n console.log(` ${colors.dim(\"Error:\")} ${rollbackResult.error}`);\n }\n if (rollbackResult.verification) {\n console.log();\n for (const check of rollbackResult.verification) {\n const mark = check.ok ? colors.green(icons.ok) : colors.error(icons.err);\n const reason = check.reason ? colors.dim(` — ${check.reason}`) : \"\";\n console.log(` ${mark} ${check.slot}${reason}`);\n }\n }\n console.log();\n process.exit(1);\n }\n\n if (rollbackResult.status === \"dry-run\") {\n console.log();\n console.log(colors.cyan(`${icons.ok} Rollback dry run complete`));\n console.log(` ${colors.dim(\"Registry URL:\")} ${rollbackResult.registryUrl}`);\n console.log();\n return;\n }\n\n console.log();\n console.log(colors.green(`${icons.ok} Rolled back`));\n console.log(` ${colors.dim(\"Registry URL:\")} ${rollbackResult.registryUrl}`);\n if (rollbackResult.txHash) {\n console.log(` ${colors.dim(\"Transaction:\")} ${rollbackResult.txHash}`);\n }\n console.log();\n return;\n }\n\n if (descriptor.key === \"deploy\") {\n const deployResult = result as any;\n if (deployResult.status === \"list\") {\n console.log();\n console.log(colors.cyan(\"Recent publishes (audit trail)\"));\n for (const entry of deployResult.history ?? []) {\n console.log(\n ` ${entry.blockTimestamp} ${colors.dim(`block ${entry.blockHeight}`)}${entry.publishedAt ? colors.dim(` ${entry.publishedAt}`) : \"\"}`,\n );\n }\n console.log();\n return;\n }\n if (deployResult.fingerprint) {\n console.log(` ${colors.dim(\"Fingerprint:\")} ${deployResult.fingerprint}`);\n }\n if (deployResult.status === \"dry-run\") {\n console.log();\n console.log(colors.cyan(`${icons.ok} Dry run complete`));\n console.log(` ${colors.dim(\"Registry URL:\")} ${deployResult.registryUrl}`);\n console.log();\n return;\n }\n\n if (deployResult.status === \"error\") {\n console.log();\n console.log(colors.error(`${icons.err} Deploy failed`));\n if (deployResult.error) {\n console.log(` ${colors.dim(\"Error:\")} ${deployResult.error}`);\n }\n if (deployResult.deployResults && deployResult.deployResults.length > 0) {\n const failures = deployResult.deployResults.filter((r: any) => !r.success);\n if (failures.length > 0) {\n console.log();\n for (const f of failures) {\n const errorLine = (f.error ?? \"Failed\").split(\"\\n\")[0];\n console.log(` ${colors.error(icons.err)} ${f.key}: ${errorLine}`);\n }\n }\n }\n console.log();\n process.exit(1);\n }\n\n if (deployResult.status === \"deployed\") {\n console.log();\n console.log(colors.green(`${icons.ok} Deployed successfully`));\n console.log(` ${colors.dim(\"Registry URL:\")} ${deployResult.registryUrl}`);\n if (deployResult.txHash) {\n console.log(` ${colors.dim(\"Transaction:\")} ${deployResult.txHash}`);\n }\n if (deployResult.built && deployResult.built.length > 0) {\n console.log(` ${colors.dim(\"Built:\")} ${deployResult.built.join(\", \")}`);\n }\n if (deployResult.skipped && deployResult.skipped.length > 0) {\n console.log(` ${colors.dim(\"Skipped:\")} ${deployResult.skipped.join(\", \")}`);\n }\n if (deployResult.deployResults) {\n const warnings = deployResult.deployResults.flatMap((r: any) => r.warnings ?? []);\n if (warnings.length > 0) {\n console.log();\n console.log(` ${colors.yellow(\"⚠\")} Build warnings:`);\n for (const w of warnings) {\n console.log(` ${colors.dim(w)}`);\n }\n }\n }\n if (deployResult.image) {\n console.log(` ${colors.dim(\"Image:\")} ${deployResult.image}`);\n }\n if (deployResult.service) {\n console.log(` ${colors.dim(\"Railway:\")} deployed ${deployResult.service}`);\n }\n console.log();\n return;\n }\n\n if (deployResult.status === \"published\") {\n console.log();\n console.log(colors.yellow(`${icons.err} Config published, but a deploy leg failed`));\n console.log(` ${colors.dim(\"Registry URL:\")} ${deployResult.registryUrl}`);\n if (deployResult.txHash) {\n console.log(` ${colors.dim(\"Transaction:\")} ${deployResult.txHash}`);\n }\n if (deployResult.error) {\n console.log(` ${colors.dim(\"Error:\")} ${deployResult.error}`);\n }\n console.log();\n process.exit(1);\n }\n }\n\n if (descriptor.key === \"infraExport\") {\n process.stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n return;\n }\n } catch (error) {\n console.error(`[CLI] ${error instanceof Error ? error.message : String(error)}`);\n process.exit(1);\n }\n}\n\nvoid main().catch((error) => {\n console.error(\"[CLI] Fatal error:\", error);\n process.exit(1);\n});\n"],"mappings":"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"}
|
package/dist/code-artifacts.cjs
CHANGED
|
@@ -1,24 +1,92 @@
|
|
|
1
1
|
const require_api_contract = require('./api-contract.cjs');
|
|
2
2
|
const require_config = require('./config.cjs');
|
|
3
|
+
const require_resolution_session = require('./resolution/session.cjs');
|
|
4
|
+
let node_fs = require("node:fs");
|
|
3
5
|
let node_path = require("node:path");
|
|
6
|
+
let effect = require("effect");
|
|
7
|
+
let every_plugin_ui_manifest = require("every-plugin/ui/manifest");
|
|
8
|
+
let every_plugin_build_ui = require("every-plugin/build/ui");
|
|
9
|
+
let every_plugin_ui_manifest_generator = require("every-plugin/ui/manifest-generator");
|
|
4
10
|
|
|
5
11
|
//#region src/code-artifacts.ts
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
12
|
+
var ArtifactGenError = class extends effect.Schema.TaggedError()("ArtifactGenError", {
|
|
13
|
+
phase: effect.Schema.String,
|
|
14
|
+
cause: effect.Schema.optional(effect.Schema.Unknown)
|
|
15
|
+
}) {};
|
|
16
|
+
function uiManifestTargets(runtimeConfig) {
|
|
17
|
+
const targets = [];
|
|
18
|
+
const ui = runtimeConfig.ui;
|
|
19
|
+
if (ui?.source === "local" && ui.localPath) targets.push({
|
|
20
|
+
workspaceRoot: ui.localPath,
|
|
21
|
+
pluginName: every_plugin_ui_manifest.CORE_UI_PLUGIN_KEY,
|
|
22
|
+
emitRouteTree: !(0, node_fs.existsSync)((0, node_path.join)(ui.localPath, "src/routeTree.gen.ts"))
|
|
23
|
+
});
|
|
24
|
+
for (const [key, plugin] of Object.entries(runtimeConfig.plugins ?? {})) {
|
|
25
|
+
const uiPath = plugin.ui?.localPath;
|
|
26
|
+
if (plugin.ui?.source === "local" && uiPath && (0, node_fs.existsSync)((0, node_path.join)(uiPath, "rsbuild.config.ts"))) targets.push({
|
|
27
|
+
workspaceRoot: uiPath,
|
|
28
|
+
pluginName: key,
|
|
29
|
+
emitRouteTree: false
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
return targets;
|
|
33
|
+
}
|
|
34
|
+
const generateCodeArtifactsEffect = effect.Effect.fn("generateCodeArtifacts")(function* (configDir, config, opts) {
|
|
35
|
+
const env = opts?.env;
|
|
36
|
+
if (env) yield* effect.Effect.try({
|
|
37
|
+
try: () => require_config.writeResolvedConfig(configDir, config, env, opts?.extendsChain),
|
|
38
|
+
catch: (cause) => new ArtifactGenError({
|
|
39
|
+
phase: "write resolved config",
|
|
40
|
+
cause
|
|
41
|
+
})
|
|
42
|
+
});
|
|
43
|
+
const runtimeConfig = opts?.runtimeConfig ?? (yield* effect.Effect.tryPromise({
|
|
44
|
+
try: () => require_resolution_session.openResolution({ cwd: configDir }),
|
|
45
|
+
catch: (cause) => new ArtifactGenError({
|
|
46
|
+
phase: "load resolved config",
|
|
47
|
+
cause
|
|
48
|
+
})
|
|
49
|
+
}))?.runtime;
|
|
9
50
|
if (!runtimeConfig) return null;
|
|
10
|
-
const bridge =
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
51
|
+
const bridge = yield* effect.Effect.tryPromise({
|
|
52
|
+
try: () => require_api_contract.syncApiContractBridge({
|
|
53
|
+
configDir,
|
|
54
|
+
runtimeConfig,
|
|
55
|
+
apiBaseUrl: runtimeConfig.api.url
|
|
56
|
+
}),
|
|
57
|
+
catch: (cause) => new ArtifactGenError({
|
|
58
|
+
phase: "sync api contract bridge",
|
|
59
|
+
cause
|
|
60
|
+
})
|
|
14
61
|
});
|
|
62
|
+
for (const target of uiManifestTargets(runtimeConfig)) {
|
|
63
|
+
if (target.pluginName === every_plugin_ui_manifest.CORE_UI_PLUGIN_KEY) yield* effect.Effect.try({
|
|
64
|
+
try: () => (0, every_plugin_build_ui.emitCoreUiStubs)(target.workspaceRoot),
|
|
65
|
+
catch: (cause) => new ArtifactGenError({
|
|
66
|
+
phase: `emit ui stubs (${target.pluginName})`,
|
|
67
|
+
cause
|
|
68
|
+
})
|
|
69
|
+
});
|
|
70
|
+
yield* effect.Effect.tryPromise({
|
|
71
|
+
try: () => (0, every_plugin_ui_manifest_generator.generateUiManifest)(target),
|
|
72
|
+
catch: (cause) => new ArtifactGenError({
|
|
73
|
+
phase: `generate ui manifest (${target.pluginName})`,
|
|
74
|
+
cause
|
|
75
|
+
})
|
|
76
|
+
});
|
|
77
|
+
}
|
|
15
78
|
return {
|
|
16
|
-
resolvedConfigPath:
|
|
79
|
+
resolvedConfigPath: env ? (0, node_path.join)(configDir, ".bos/bos.resolved-config.json") : void 0,
|
|
17
80
|
contractBridgePath: bridge.bridgePath,
|
|
18
81
|
contractStatus: bridge.status
|
|
19
82
|
};
|
|
83
|
+
});
|
|
84
|
+
async function generateCodeArtifacts(configDir, config, opts) {
|
|
85
|
+
return effect.Effect.runPromise(generateCodeArtifactsEffect(configDir, config, opts));
|
|
20
86
|
}
|
|
21
87
|
|
|
22
88
|
//#endregion
|
|
89
|
+
exports.ArtifactGenError = ArtifactGenError;
|
|
23
90
|
exports.generateCodeArtifacts = generateCodeArtifacts;
|
|
91
|
+
exports.generateCodeArtifactsEffect = generateCodeArtifactsEffect;
|
|
24
92
|
//# sourceMappingURL=code-artifacts.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-artifacts.cjs","names":["
|
|
1
|
+
{"version":3,"file":"code-artifacts.cjs","names":["Schema","CORE_UI_PLUGIN_KEY","existsSync","join","Effect","writeResolvedConfig","openResolution","syncApiContractBridge","emitCoreUiStubs","generateUiManifest"],"sources":["../src/code-artifacts.ts"],"sourcesContent":["import { existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { Effect, Schema } from \"effect\";\nimport { emitCoreUiStubs } from \"every-plugin/build/ui\";\nimport { CORE_UI_PLUGIN_KEY } from \"every-plugin/ui/manifest\";\nimport { generateUiManifest } from \"every-plugin/ui/manifest-generator\";\nimport { type ContractBridgeStatus, syncApiContractBridge } from \"./api-contract\";\nimport { writeResolvedConfig } from \"./config\";\nimport type { BosEnv } from \"./merge\";\nimport { openResolution } from \"./resolution/session\";\nimport type { BosConfig, RuntimeConfig } from \"./types\";\n\nexport class ArtifactGenError extends Schema.TaggedError<ArtifactGenError>()(\"ArtifactGenError\", {\n phase: Schema.String,\n cause: Schema.optional(Schema.Unknown),\n}) {}\n\ninterface GeneratedArtifacts {\n resolvedConfigPath?: string;\n contractBridgePath: string;\n}\n\ninterface UiManifestTarget {\n workspaceRoot: string;\n pluginName: string;\n emitRouteTree: boolean;\n}\n\nfunction uiManifestTargets(runtimeConfig: RuntimeConfig): UiManifestTarget[] {\n const targets: UiManifestTarget[] = [];\n const ui = runtimeConfig.ui;\n // The core ui is always a manifest target when local — with no authored\n // rsbuild.config.ts the every-plugin build synthesizes one, so the\n // config's existence no longer gates manifest generation.\n if (ui?.source === \"local\" && ui.localPath) {\n targets.push({\n workspaceRoot: ui.localPath,\n pluginName: CORE_UI_PLUGIN_KEY,\n emitRouteTree: !existsSync(join(ui.localPath, \"src/routeTree.gen.ts\")),\n });\n }\n for (const [key, plugin] of Object.entries(runtimeConfig.plugins ?? {})) {\n const uiPath = plugin.ui?.localPath;\n if (plugin.ui?.source === \"local\" && uiPath && existsSync(join(uiPath, \"rsbuild.config.ts\"))) {\n targets.push({ workspaceRoot: uiPath, pluginName: key, emitRouteTree: false });\n }\n }\n return targets;\n}\n\nexport const generateCodeArtifactsEffect = Effect.fn(\"generateCodeArtifacts\")(function* (\n configDir: string,\n config: BosConfig,\n opts?: {\n env?: BosEnv;\n extendsChain?: string[];\n runtimeConfig?: RuntimeConfig;\n },\n): Effect.fn.Return<\n (GeneratedArtifacts & { contractStatus: ContractBridgeStatus[] }) | null,\n ArtifactGenError\n> {\n const env = opts?.env;\n if (env) {\n yield* Effect.try({\n try: () => writeResolvedConfig(configDir, config, env, opts?.extendsChain),\n catch: (cause) => new ArtifactGenError({ phase: \"write resolved config\", cause }),\n });\n }\n\n const runtimeConfig =\n opts?.runtimeConfig ??\n (yield* Effect.tryPromise({\n try: () => openResolution({ cwd: configDir }),\n catch: (cause) => new ArtifactGenError({ phase: \"load resolved config\", cause }),\n }))?.runtime;\n if (!runtimeConfig) return null;\n\n const bridge = yield* Effect.tryPromise({\n try: () =>\n syncApiContractBridge({\n configDir,\n runtimeConfig,\n apiBaseUrl: runtimeConfig.api.url,\n }),\n catch: (cause) => new ArtifactGenError({ phase: \"sync api contract bridge\", cause }),\n });\n\n for (const target of uiManifestTargets(runtimeConfig)) {\n if (target.pluginName === CORE_UI_PLUGIN_KEY) {\n yield* Effect.try({\n try: () => emitCoreUiStubs(target.workspaceRoot),\n catch: (cause) =>\n new ArtifactGenError({ phase: `emit ui stubs (${target.pluginName})`, cause }),\n });\n }\n yield* Effect.tryPromise({\n try: () => generateUiManifest(target),\n catch: (cause) =>\n new ArtifactGenError({ phase: `generate ui manifest (${target.pluginName})`, cause }),\n });\n }\n\n return {\n resolvedConfigPath: env ? join(configDir, \".bos/bos.resolved-config.json\") : undefined,\n contractBridgePath: bridge.bridgePath,\n contractStatus: bridge.status,\n };\n});\n\nexport async function generateCodeArtifacts(\n configDir: string,\n config: BosConfig,\n opts?: {\n env?: BosEnv;\n extendsChain?: string[];\n runtimeConfig?: RuntimeConfig;\n },\n): Promise<(GeneratedArtifacts & { contractStatus: ContractBridgeStatus[] }) | null> {\n return Effect.runPromise(generateCodeArtifactsEffect(configDir, config, opts));\n}\n"],"mappings":";;;;;;;;;;;AAYA,IAAa,mBAAb,cAAsCA,cAAO,YAA8B,CAAC,CAAC,oBAAoB;CAC/F,OAAOA,cAAO;CACd,OAAOA,cAAO,SAASA,cAAO,OAAO;AACvC,CAAC,CAAC,CAAC,CAAC;AAaJ,SAAS,kBAAkB,eAAkD;CAC3E,MAAM,UAA8B,CAAC;CACrC,MAAM,KAAK,cAAc;CAIzB,IAAI,IAAI,WAAW,WAAW,GAAG,WAC/B,QAAQ,KAAK;EACX,eAAe,GAAG;EAClB,YAAYC;EACZ,eAAe,KAACC,wBAAWC,gBAAK,GAAG,WAAW,sBAAsB,CAAC;CACvE,CAAC;CAEH,KAAK,MAAM,CAAC,KAAK,WAAW,OAAO,QAAQ,cAAc,WAAW,CAAC,CAAC,GAAG;EACvE,MAAM,SAAS,OAAO,IAAI;EAC1B,IAAI,OAAO,IAAI,WAAW,WAAW,cAAUD,wBAAWC,gBAAK,QAAQ,mBAAmB,CAAC,GACzF,QAAQ,KAAK;GAAE,eAAe;GAAQ,YAAY;GAAK,eAAe;EAAM,CAAC;CAEjF;CACA,OAAO;AACT;AAEA,MAAa,8BAA8BC,cAAO,GAAG,uBAAuB,CAAC,CAAC,WAC5E,WACA,QACA,MAQA;CACA,MAAM,MAAM,MAAM;CAClB,IAAI,KACF,OAAOA,cAAO,IAAI;EAChB,WAAWC,mCAAoB,WAAW,QAAQ,KAAK,MAAM,YAAY;EACzE,QAAQ,UAAU,IAAI,iBAAiB;GAAE,OAAO;GAAyB;EAAM,CAAC;CAClF,CAAC;CAGH,MAAM,gBACJ,MAAM,kBACL,OAAOD,cAAO,WAAW;EACxB,WAAWE,0CAAe,EAAE,KAAK,UAAU,CAAC;EAC5C,QAAQ,UAAU,IAAI,iBAAiB;GAAE,OAAO;GAAwB;EAAM,CAAC;CACjF,CAAC,EAAC,EAAG;CACP,IAAI,CAAC,eAAe,OAAO;CAE3B,MAAM,SAAS,OAAOF,cAAO,WAAW;EACtC,WACEG,2CAAsB;GACpB;GACA;GACA,YAAY,cAAc,IAAI;EAChC,CAAC;EACH,QAAQ,UAAU,IAAI,iBAAiB;GAAE,OAAO;GAA4B;EAAM,CAAC;CACrF,CAAC;CAED,KAAK,MAAM,UAAU,kBAAkB,aAAa,GAAG;EACrD,IAAI,OAAO,eAAeN,6CACxB,OAAOG,cAAO,IAAI;GAChB,eAAWI,uCAAgB,OAAO,aAAa;GAC/C,QAAQ,UACN,IAAI,iBAAiB;IAAE,OAAO,kBAAkB,OAAO,WAAW;IAAI;GAAM,CAAC;EACjF,CAAC;EAEH,OAAOJ,cAAO,WAAW;GACvB,eAAWK,uDAAmB,MAAM;GACpC,QAAQ,UACN,IAAI,iBAAiB;IAAE,OAAO,yBAAyB,OAAO,WAAW;IAAI;GAAM,CAAC;EACxF,CAAC;CACH;CAEA,OAAO;EACL,oBAAoB,UAAMN,gBAAK,WAAW,+BAA+B,IAAI;EAC7E,oBAAoB,OAAO;EAC3B,gBAAgB,OAAO;CACzB;AACF,CAAC;AAED,eAAsB,sBACpB,WACA,QACA,MAKmF;CACnF,OAAOC,cAAO,WAAW,4BAA4B,WAAW,QAAQ,IAAI,CAAC;AAC/E"}
|
package/dist/code-artifacts.mjs
CHANGED
|
@@ -1,24 +1,90 @@
|
|
|
1
1
|
import { syncApiContractBridge } from "./api-contract.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { writeResolvedConfig } from "./config.mjs";
|
|
3
|
+
import { openResolution } from "./resolution/session.mjs";
|
|
4
|
+
import { existsSync } from "node:fs";
|
|
3
5
|
import { join } from "node:path";
|
|
6
|
+
import { Effect, Schema } from "effect";
|
|
7
|
+
import { CORE_UI_PLUGIN_KEY } from "every-plugin/ui/manifest";
|
|
8
|
+
import { emitCoreUiStubs } from "every-plugin/build/ui";
|
|
9
|
+
import { generateUiManifest } from "every-plugin/ui/manifest-generator";
|
|
4
10
|
|
|
5
11
|
//#region src/code-artifacts.ts
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
12
|
+
var ArtifactGenError = class extends Schema.TaggedError()("ArtifactGenError", {
|
|
13
|
+
phase: Schema.String,
|
|
14
|
+
cause: Schema.optional(Schema.Unknown)
|
|
15
|
+
}) {};
|
|
16
|
+
function uiManifestTargets(runtimeConfig) {
|
|
17
|
+
const targets = [];
|
|
18
|
+
const ui = runtimeConfig.ui;
|
|
19
|
+
if (ui?.source === "local" && ui.localPath) targets.push({
|
|
20
|
+
workspaceRoot: ui.localPath,
|
|
21
|
+
pluginName: CORE_UI_PLUGIN_KEY,
|
|
22
|
+
emitRouteTree: !existsSync(join(ui.localPath, "src/routeTree.gen.ts"))
|
|
23
|
+
});
|
|
24
|
+
for (const [key, plugin] of Object.entries(runtimeConfig.plugins ?? {})) {
|
|
25
|
+
const uiPath = plugin.ui?.localPath;
|
|
26
|
+
if (plugin.ui?.source === "local" && uiPath && existsSync(join(uiPath, "rsbuild.config.ts"))) targets.push({
|
|
27
|
+
workspaceRoot: uiPath,
|
|
28
|
+
pluginName: key,
|
|
29
|
+
emitRouteTree: false
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
return targets;
|
|
33
|
+
}
|
|
34
|
+
const generateCodeArtifactsEffect = Effect.fn("generateCodeArtifacts")(function* (configDir, config, opts) {
|
|
35
|
+
const env = opts?.env;
|
|
36
|
+
if (env) yield* Effect.try({
|
|
37
|
+
try: () => writeResolvedConfig(configDir, config, env, opts?.extendsChain),
|
|
38
|
+
catch: (cause) => new ArtifactGenError({
|
|
39
|
+
phase: "write resolved config",
|
|
40
|
+
cause
|
|
41
|
+
})
|
|
42
|
+
});
|
|
43
|
+
const runtimeConfig = opts?.runtimeConfig ?? (yield* Effect.tryPromise({
|
|
44
|
+
try: () => openResolution({ cwd: configDir }),
|
|
45
|
+
catch: (cause) => new ArtifactGenError({
|
|
46
|
+
phase: "load resolved config",
|
|
47
|
+
cause
|
|
48
|
+
})
|
|
49
|
+
}))?.runtime;
|
|
9
50
|
if (!runtimeConfig) return null;
|
|
10
|
-
const bridge =
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
51
|
+
const bridge = yield* Effect.tryPromise({
|
|
52
|
+
try: () => syncApiContractBridge({
|
|
53
|
+
configDir,
|
|
54
|
+
runtimeConfig,
|
|
55
|
+
apiBaseUrl: runtimeConfig.api.url
|
|
56
|
+
}),
|
|
57
|
+
catch: (cause) => new ArtifactGenError({
|
|
58
|
+
phase: "sync api contract bridge",
|
|
59
|
+
cause
|
|
60
|
+
})
|
|
14
61
|
});
|
|
62
|
+
for (const target of uiManifestTargets(runtimeConfig)) {
|
|
63
|
+
if (target.pluginName === CORE_UI_PLUGIN_KEY) yield* Effect.try({
|
|
64
|
+
try: () => emitCoreUiStubs(target.workspaceRoot),
|
|
65
|
+
catch: (cause) => new ArtifactGenError({
|
|
66
|
+
phase: `emit ui stubs (${target.pluginName})`,
|
|
67
|
+
cause
|
|
68
|
+
})
|
|
69
|
+
});
|
|
70
|
+
yield* Effect.tryPromise({
|
|
71
|
+
try: () => generateUiManifest(target),
|
|
72
|
+
catch: (cause) => new ArtifactGenError({
|
|
73
|
+
phase: `generate ui manifest (${target.pluginName})`,
|
|
74
|
+
cause
|
|
75
|
+
})
|
|
76
|
+
});
|
|
77
|
+
}
|
|
15
78
|
return {
|
|
16
|
-
resolvedConfigPath:
|
|
79
|
+
resolvedConfigPath: env ? join(configDir, ".bos/bos.resolved-config.json") : void 0,
|
|
17
80
|
contractBridgePath: bridge.bridgePath,
|
|
18
81
|
contractStatus: bridge.status
|
|
19
82
|
};
|
|
83
|
+
});
|
|
84
|
+
async function generateCodeArtifacts(configDir, config, opts) {
|
|
85
|
+
return Effect.runPromise(generateCodeArtifactsEffect(configDir, config, opts));
|
|
20
86
|
}
|
|
21
87
|
|
|
22
88
|
//#endregion
|
|
23
|
-
export { generateCodeArtifacts };
|
|
89
|
+
export { ArtifactGenError, generateCodeArtifacts, generateCodeArtifactsEffect };
|
|
24
90
|
//# sourceMappingURL=code-artifacts.mjs.map
|