@canonical/pragma-cli 0.31.0 → 0.32.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/dist/pragma +0 -0
- package/package.json +27 -42
- package/src/bin.ts +292 -11
- package/src/capabilities/block/blockList.verb.ts +150 -0
- package/src/capabilities/block/index.ts +25 -0
- package/src/capabilities/block/pack.ts +155 -0
- package/src/capabilities/block/parity.test.ts +180 -0
- package/src/capabilities/block/tierChain.ts +78 -0
- package/src/capabilities/capabilities/capabilities.render.ts +89 -0
- package/src/capabilities/capabilities/capabilities.test.ts +131 -0
- package/src/capabilities/capabilities/capabilities.verb.ts +48 -0
- package/src/capabilities/capabilities/catalog.ts +144 -0
- package/src/capabilities/capabilities/hints.ts +221 -0
- package/src/capabilities/capabilities/index.ts +13 -0
- package/src/capabilities/capabilities/types.ts +58 -0
- package/src/capabilities/colophon/collectColophon.ts +68 -0
- package/src/capabilities/colophon/colophon.render.test.ts +87 -0
- package/src/capabilities/colophon/colophon.render.ts +38 -0
- package/src/capabilities/colophon/colophon.test.ts +241 -0
- package/src/capabilities/colophon/colophon.verb.ts +41 -0
- package/src/capabilities/colophon/index.ts +6 -0
- package/src/capabilities/colophon/markdownTerminal.test.ts +50 -0
- package/src/capabilities/colophon/markdownTerminal.ts +85 -0
- package/src/capabilities/colophon/pragmaColophon.ts +66 -0
- package/src/capabilities/colophon/types.ts +29 -0
- package/src/capabilities/config/collectConfigShow.ts +32 -0
- package/src/capabilities/config/field.render.ts +28 -0
- package/src/capabilities/config/field.test.ts +188 -0
- package/src/capabilities/config/fields.ts +152 -0
- package/src/capabilities/config/index.ts +6 -0
- package/src/capabilities/config/runField.ts +59 -0
- package/src/capabilities/config/runSet.ts +38 -0
- package/src/capabilities/config/set.test.ts +207 -0
- package/src/capabilities/config/set.verb.ts +70 -0
- package/src/capabilities/config/show.render.ts +61 -0
- package/src/capabilities/config/show.verb.ts +45 -0
- package/src/capabilities/config/types.ts +27 -0
- package/src/capabilities/create/byteEquality.subprocess.test.ts +88 -0
- package/src/capabilities/create/byteEquality.test.ts +222 -0
- package/src/capabilities/create/compiledCreate.subprocess.test.ts +152 -0
- package/src/capabilities/create/create.mcp.test.ts +139 -0
- package/src/capabilities/create/create.render.ts +50 -0
- package/src/capabilities/create/create.test.ts +403 -0
- package/src/capabilities/create/create.verb.ts +435 -0
- package/src/capabilities/create/cwdJail.test.ts +129 -0
- package/src/capabilities/create/generatorToVerbSpec.ts +111 -0
- package/src/capabilities/create/index.ts +25 -0
- package/src/capabilities/create/pathJail.ts +73 -0
- package/src/capabilities/create/pickGenerator.ts +63 -0
- package/src/capabilities/create/templates.embedded.generated.ts +53 -0
- package/src/capabilities/create/types.ts +8 -0
- package/src/capabilities/doctor/checks/checkConfigFile.ts +41 -0
- package/src/capabilities/doctor/checks/checkKeStore.ts +39 -0
- package/src/capabilities/doctor/checks/checkMcpCommands.ts +108 -0
- package/src/capabilities/doctor/checks/checkMcpConfigured.ts +61 -0
- package/src/capabilities/doctor/checks/checkNodeVersion.ts +25 -0
- package/src/capabilities/doctor/checks/checkPackageRefs.ts +73 -0
- package/src/capabilities/doctor/checks/checkPragmaVersion.ts +22 -0
- package/src/capabilities/doctor/checks/checkShellCompletions.test.ts +111 -0
- package/src/capabilities/doctor/checks/checkShellCompletions.ts +131 -0
- package/src/capabilities/doctor/checks/checkSkillsSymlinked.ts +60 -0
- package/src/capabilities/doctor/doctor.render.ts +116 -0
- package/src/capabilities/doctor/doctor.test.ts +179 -0
- package/src/capabilities/doctor/doctor.verb.ts +46 -0
- package/src/capabilities/doctor/index.ts +6 -0
- package/src/capabilities/doctor/runChecks.ts +76 -0
- package/src/capabilities/doctor/types.ts +41 -0
- package/src/capabilities/emptyRecovery.test.ts +112 -0
- package/src/capabilities/graph/index.ts +21 -0
- package/src/capabilities/graph/inspect.render.ts +38 -0
- package/src/capabilities/graph/inspect.test.ts +80 -0
- package/src/capabilities/graph/inspect.verb.ts +51 -0
- package/src/capabilities/graph/query.render.ts +77 -0
- package/src/capabilities/graph/query.test.ts +156 -0
- package/src/capabilities/graph/query.verb.ts +58 -0
- package/src/capabilities/graph/runQuery.ts +49 -0
- package/src/capabilities/index.ts +54 -0
- package/src/capabilities/info/collectInfo.ts +76 -0
- package/src/capabilities/info/index.ts +6 -0
- package/src/capabilities/info/info.render.ts +72 -0
- package/src/capabilities/info/info.test.ts +127 -0
- package/src/capabilities/info/info.verb.ts +46 -0
- package/src/capabilities/info/types.ts +42 -0
- package/src/capabilities/lazy.test.ts +89 -0
- package/src/capabilities/meta/complete.verb.ts +52 -0
- package/src/capabilities/meta/index.ts +15 -0
- package/src/capabilities/meta/mcp.verb.ts +35 -0
- package/src/capabilities/modifier/index.ts +15 -0
- package/src/capabilities/modifier/pack.ts +64 -0
- package/src/capabilities/ontology/index.ts +12 -0
- package/src/capabilities/ontology/ontology.test.ts +94 -0
- package/src/capabilities/ontology/queries.ts +197 -0
- package/src/capabilities/ontology/render.ts +87 -0
- package/src/capabilities/ontology/verbs.ts +170 -0
- package/src/capabilities/prompt/index.ts +18 -0
- package/src/capabilities/prompt/prompt.render.ts +70 -0
- package/src/capabilities/prompt/prompt.test.ts +119 -0
- package/src/capabilities/prompt/types.ts +30 -0
- package/src/capabilities/prompt/verbs.ts +93 -0
- package/src/capabilities/resources/index.ts +15 -0
- package/src/capabilities/resources/provider.ts +231 -0
- package/src/capabilities/resources/resources.test.ts +114 -0
- package/src/capabilities/roundtrip.test.ts +107 -0
- package/src/capabilities/setup/index.ts +6 -0
- package/src/capabilities/setup/operations/setupCompletions.ts +108 -0
- package/src/capabilities/setup/operations/setupGenerator.ts +307 -0
- package/src/capabilities/setup/operations/setupLsp.ts +61 -0
- package/src/capabilities/setup/operations/setupMcp.ts +85 -0
- package/src/capabilities/setup/operations/setupSkills.ts +199 -0
- package/src/capabilities/setup/setup.render.ts +49 -0
- package/src/capabilities/setup/setup.test.ts +351 -0
- package/src/capabilities/setup/setup.verb.ts +209 -0
- package/src/capabilities/setup/shell.ts +85 -0
- package/src/capabilities/setup/types.ts +42 -0
- package/src/capabilities/shared/assertExecOk.ts +106 -0
- package/src/capabilities/shared/packageManager.ts +62 -0
- package/src/capabilities/shared/registry.ts +70 -0
- package/src/capabilities/skill/discover.ts +178 -0
- package/src/capabilities/skill/index.ts +12 -0
- package/src/capabilities/skill/render.ts +60 -0
- package/src/capabilities/skill/skill.test.ts +142 -0
- package/src/capabilities/skill/verbs.ts +100 -0
- package/src/capabilities/sources/collectStatus.ts +87 -0
- package/src/capabilities/sources/index.ts +15 -0
- package/src/capabilities/sources/installSkills.ts +124 -0
- package/src/capabilities/sources/runUpdate.ts +407 -0
- package/src/capabilities/sources/sources.test.ts +642 -0
- package/src/capabilities/sources/status.render.ts +56 -0
- package/src/capabilities/sources/status.verb.ts +42 -0
- package/src/capabilities/sources/types.ts +51 -0
- package/src/capabilities/sources/update.render.ts +35 -0
- package/src/capabilities/sources/update.verb.ts +76 -0
- package/src/capabilities/standard/index.ts +18 -0
- package/src/capabilities/standard/pack.ts +128 -0
- package/src/capabilities/standard/parity.test.ts +208 -0
- package/src/capabilities/surface.test.ts +208 -0
- package/src/capabilities/tier/index.ts +19 -0
- package/src/capabilities/tier/lookup.render.ts +34 -0
- package/src/capabilities/tier/lookup.test.ts +68 -0
- package/src/capabilities/tier/lookup.verb.ts +44 -0
- package/src/capabilities/tier/pack.ts +28 -0
- package/src/capabilities/tier/runLookup.ts +59 -0
- package/src/capabilities/token/addConfig.render.ts +27 -0
- package/src/capabilities/token/addConfig.test.ts +62 -0
- package/src/capabilities/token/addConfig.verb.ts +40 -0
- package/src/capabilities/token/index.ts +19 -0
- package/src/capabilities/token/pack.ts +58 -0
- package/src/capabilities/token/runAddConfig.ts +95 -0
- package/src/capabilities/upgrade/index.ts +6 -0
- package/src/capabilities/upgrade/runUpgrade.ts +119 -0
- package/src/capabilities/upgrade/types.ts +21 -0
- package/src/capabilities/upgrade/upgrade.render.ts +55 -0
- package/src/capabilities/upgrade/upgrade.test.ts +372 -0
- package/src/capabilities/upgrade/upgrade.verb.ts +56 -0
- package/src/constants.test.ts +33 -0
- package/src/constants.ts +38 -70
- package/src/index.ts +27 -122
- package/src/kernel/completion/__snapshots__/emitScripts.test.ts.snap +340 -0
- package/src/kernel/completion/bashDrive.test.ts +73 -0
- package/src/kernel/completion/complete.test.ts +101 -0
- package/src/kernel/completion/complete.ts +77 -0
- package/src/kernel/completion/emitScripts.test.ts +173 -0
- package/src/kernel/completion/emitScripts.ts +122 -0
- package/src/kernel/completion/entitySource.test.ts +198 -0
- package/src/kernel/completion/entitySource.ts +269 -0
- package/src/kernel/completion/index.ts +42 -0
- package/src/kernel/completion/model.test.ts +405 -0
- package/src/kernel/completion/model.ts +259 -0
- package/src/kernel/completion/parse.test.ts +338 -0
- package/src/kernel/completion/parse.ts +294 -0
- package/src/kernel/completion/rank.test.ts +100 -0
- package/src/kernel/completion/rank.ts +118 -0
- package/src/kernel/completion/resolve.test.ts +204 -0
- package/src/kernel/completion/resolve.ts +133 -0
- package/src/kernel/completion/safety.test.ts +374 -0
- package/src/kernel/completion/templates/bash.ts +249 -0
- package/src/kernel/completion/templates/fish.ts +245 -0
- package/src/kernel/completion/templates/shared.ts +134 -0
- package/src/kernel/completion/templates/zsh.ts +246 -0
- package/src/kernel/completion/types.ts +153 -0
- package/src/kernel/config/__snapshots__/firstRun.test.ts.snap +11 -0
- package/src/kernel/config/defaults.ts +28 -0
- package/src/kernel/config/evaluateProjectConfig.ts +119 -0
- package/src/kernel/config/findProjectConfig.ts +45 -0
- package/src/kernel/config/firstRun.test.ts +60 -0
- package/src/kernel/config/firstRun.ts +91 -0
- package/src/kernel/config/globalConfig.ts +94 -0
- package/src/kernel/config/index.ts +35 -0
- package/src/kernel/config/paths.ts +39 -0
- package/src/kernel/config/readConfig.test.ts +245 -0
- package/src/kernel/config/readConfig.ts +94 -0
- package/src/kernel/config/schema.ts +56 -0
- package/src/kernel/config/types.ts +106 -0
- package/src/kernel/config/writeConfigField.ts +82 -0
- package/src/kernel/error/PragmaError.test.ts +119 -0
- package/src/kernel/error/PragmaError.ts +182 -0
- package/src/kernel/error/constants.ts +38 -0
- package/src/kernel/error/fromTaskError.test.ts +83 -0
- package/src/kernel/error/fromTaskError.ts +80 -0
- package/src/kernel/error/index.ts +23 -0
- package/src/kernel/error/recovery.test.ts +60 -0
- package/src/kernel/error/recovery.ts +49 -0
- package/src/kernel/error/renderError.ts +101 -0
- package/src/kernel/error/serialize.ts +28 -0
- package/src/kernel/error/types.ts +62 -0
- package/src/kernel/packs/collect.test.ts +138 -0
- package/src/kernel/packs/collect.ts +108 -0
- package/src/kernel/packs/compile.test.ts +229 -0
- package/src/kernel/packs/compile.ts +315 -0
- package/src/kernel/packs/disclosure.test.ts +200 -0
- package/src/kernel/packs/disclosure.ts +98 -0
- package/src/kernel/packs/glob.ts +39 -0
- package/src/kernel/packs/graphql/buildLookupDocument.ts +397 -0
- package/src/kernel/packs/graphql/fetchGraphqlLookup.ts +217 -0
- package/src/kernel/packs/graphql/nameMap.ts +67 -0
- package/src/kernel/packs/graphqlSource.test.ts +383 -0
- package/src/kernel/packs/iri.ts +78 -0
- package/src/kernel/packs/renderPack.ts +196 -0
- package/src/kernel/packs/resolveEntity.ts +232 -0
- package/src/kernel/packs/runBodies.ts +157 -0
- package/src/kernel/packs/sample.ts +60 -0
- package/src/kernel/packs/schema.ts +328 -0
- package/src/kernel/packs/sparql/applyFilters.ts +83 -0
- package/src/kernel/packs/sparql/applySearch.ts +33 -0
- package/src/kernel/packs/sparql/buildLookupQuery.ts +180 -0
- package/src/kernel/packs/sparql/escape.ts +22 -0
- package/src/kernel/packs/sparql/runSelect.test.ts +80 -0
- package/src/kernel/packs/sparql/runSelect.ts +84 -0
- package/src/kernel/packs/toolDescription.test.ts +81 -0
- package/src/kernel/packs/types.ts +337 -0
- package/src/kernel/packs/uniqueness.ts +35 -0
- package/src/kernel/project/cli/buildProgram.test.ts +387 -0
- package/src/kernel/project/cli/buildProgram.ts +280 -0
- package/src/kernel/project/cli/dispatch.test.ts +288 -0
- package/src/kernel/project/cli/dispatch.ts +334 -0
- package/src/kernel/project/cli/exitCodes.test.ts +59 -0
- package/src/kernel/project/cli/exitCodes.ts +68 -0
- package/src/kernel/project/cli/globalFlags.test.ts +99 -0
- package/src/kernel/project/cli/globalFlags.ts +149 -0
- package/src/kernel/project/cli/helpFormat.ts +58 -0
- package/src/kernel/project/cli/index.ts +21 -0
- package/src/kernel/project/cli/interactionSeam.test.ts +99 -0
- package/src/kernel/project/cli/rootHelp.ts +218 -0
- package/src/kernel/project/cli/suggest.test.ts +54 -0
- package/src/kernel/project/cli/suggest.ts +67 -0
- package/src/kernel/project/cli/suggestNames.ts +122 -0
- package/src/kernel/project/cli/verbHelp.test.ts +138 -0
- package/src/kernel/project/cli/verbHelp.ts +144 -0
- package/src/kernel/project/mcp/buildServer.ts +70 -0
- package/src/kernel/project/mcp/envelope.ts +44 -0
- package/src/kernel/project/mcp/index.ts +8 -0
- package/src/kernel/project/mcp/instructions.ts +48 -0
- package/src/kernel/project/mcp/parity.test.ts +72 -0
- package/src/kernel/project/mcp/prompts/prompts.test.ts +96 -0
- package/src/kernel/project/mcp/prompts/provider.ts +74 -0
- package/src/kernel/project/mcp/prompts/source.ts +194 -0
- package/src/kernel/project/mcp/registerVerb.test.ts +238 -0
- package/src/kernel/project/mcp/registerVerb.ts +296 -0
- package/src/kernel/project/mcp/serve.ts +34 -0
- package/src/kernel/project/mcp/toolDescriptions.test.ts +80 -0
- package/src/kernel/render/__snapshots__/renderers.test.ts.snap +127 -0
- package/src/kernel/render/compactUri.ts +25 -0
- package/src/kernel/render/contracts.ts +72 -0
- package/src/kernel/render/disclosure.ts +44 -0
- package/src/kernel/render/envelope.ts +50 -0
- package/src/kernel/render/formatters.ts +30 -0
- package/src/kernel/render/index.ts +30 -0
- package/src/kernel/render/prefixes.ts +21 -0
- package/src/kernel/render/renderers.test.ts +171 -0
- package/src/kernel/render/renderers.ts +429 -0
- package/src/kernel/render/writeStdout.test.ts +43 -0
- package/src/kernel/render/writeStdout.ts +49 -0
- package/src/kernel/runtime/boot.test.ts +69 -0
- package/src/kernel/runtime/boot.ts +59 -0
- package/src/kernel/runtime/facade.test.ts +125 -0
- package/src/kernel/runtime/facade.ts +47 -0
- package/src/kernel/runtime/graphpack/build.ts +148 -0
- package/src/kernel/runtime/graphpack/buildIndex.ts +229 -0
- package/src/kernel/runtime/graphpack/embedded/pack.generated.ts +8 -0
- package/src/kernel/runtime/graphpack/embedded/pack.index.generated.ts +4 -0
- package/src/kernel/runtime/graphpack/embedded/sample.ttl +39 -0
- package/src/kernel/runtime/graphpack/embedded.ts +70 -0
- package/src/kernel/runtime/graphpack/graphpack.test.ts +153 -0
- package/src/kernel/runtime/graphpack/hash.ts +46 -0
- package/src/kernel/runtime/graphpack/index.ts +21 -0
- package/src/kernel/runtime/graphpack/manifest.ts +55 -0
- package/src/kernel/runtime/graphpack/read.ts +102 -0
- package/src/kernel/runtime/graphpack/types.ts +111 -0
- package/src/kernel/runtime/index.ts +15 -0
- package/src/kernel/runtime/loadSession.ts +56 -0
- package/src/kernel/runtime/lock.ts +90 -0
- package/src/kernel/runtime/paths.ts +37 -0
- package/src/kernel/runtime/probe.test.ts +16 -0
- package/src/kernel/runtime/probe.ts +39 -0
- package/src/kernel/runtime/readEntity.ts +83 -0
- package/src/kernel/runtime/refs/gitOps.ts +88 -0
- package/src/kernel/runtime/refs/parseRef.test.ts +34 -0
- package/src/kernel/runtime/refs/parseRef.ts +103 -0
- package/src/kernel/runtime/refs/resolve.ts +320 -0
- package/src/kernel/runtime/resolveSources.test.ts +154 -0
- package/src/kernel/runtime/resolveSources.ts +66 -0
- package/src/kernel/runtime/store.test.ts +94 -0
- package/src/kernel/runtime/store.ts +90 -0
- package/src/kernel/runtime/storeless.test.ts +86 -0
- package/src/kernel/runtime/types.ts +210 -0
- package/src/kernel/runtime/wasmEmbed.test.ts +142 -0
- package/src/kernel/spec/asVerb.ts +23 -0
- package/src/kernel/spec/emitSurface.test.ts +65 -0
- package/src/kernel/spec/emitSurface.ts +223 -0
- package/src/kernel/spec/index.ts +34 -0
- package/src/kernel/spec/surfaceConformance.test.ts +94 -0
- package/src/kernel/spec/surfaceConformance.ts +135 -0
- package/src/kernel/spec/types.ts +233 -0
- package/src/kernel/spec/validate.test.ts +81 -0
- package/src/kernel/spec/validate.ts +125 -0
- package/src/testing/PARITY_GAPS.test.ts +32 -0
- package/src/testing/PARITY_GAPS.ts +179 -0
- package/src/testing/behavioral/README.md +164 -0
- package/src/testing/behavioral/agentSession.mcp.test.ts +160 -0
- package/src/testing/behavioral/autoLlm.e2e.test.ts +44 -0
- package/src/testing/behavioral/completion.test.ts +132 -0
- package/src/testing/behavioral/disclosure.test.ts +103 -0
- package/src/testing/behavioral/errorMatrix.mcp.test.ts +120 -0
- package/src/testing/behavioral/errorMatrix.storeless.test.ts +123 -0
- package/src/testing/behavioral/exitCodes.e2e.test.ts +53 -0
- package/src/testing/behavioral/firstRun.e2e.test.ts +40 -0
- package/src/testing/behavioral/harness.foundation.test.ts +136 -0
- package/src/testing/behavioral/journeys.cli.test.ts +129 -0
- package/src/testing/behavioral/liveReadSurface.ts +80 -0
- package/src/testing/behavioral/mcpServe.e2e.test.ts +21 -0
- package/src/testing/behavioral/mcpSurface.test.ts +139 -0
- package/src/testing/behavioral/parity.test.ts +224 -0
- package/src/testing/behavioral/rootCli.e2e.test.ts +62 -0
- package/src/testing/eval/__snapshots__/eval.test.ts.snap +201 -0
- package/src/testing/eval/cases/assembly.ts +195 -0
- package/src/testing/eval/cases/effectful.ts +245 -0
- package/src/testing/eval/cases/readNouns.ts +232 -0
- package/src/testing/eval/cases/stable.ts +163 -0
- package/src/testing/eval/eval.test.ts +74 -0
- package/src/testing/eval/harness.ts +91 -0
- package/src/testing/eval/report.ts +58 -0
- package/src/testing/fixtures/blockGraph.ts +112 -0
- package/src/testing/fixtures/completionFixture.ts +239 -0
- package/src/testing/fixtures/fixtureCapability.ts +175 -0
- package/src/testing/fixtures/graph/canonical.ts +184 -0
- package/src/testing/fixtures/packs/recipe.ts +78 -0
- package/src/testing/helpers/fixtureGraph.ts +148 -0
- package/src/testing/helpers/golden.ts +45 -0
- package/src/testing/helpers/packRuntime.ts +118 -0
- package/src/testing/helpers/parity.ts +86 -0
- package/src/testing/helpers/projectCli.ts +35 -0
- package/src/testing/helpers/projectMcp.ts +145 -0
- package/src/testing/helpers/runCli.ts +128 -0
- package/src/testing/perf/budgets.test.ts +164 -0
- package/src/testing/perf/budgets.ts +37 -0
- package/src/testing/perf/globalSetup.ts +30 -0
- package/src/testing/perf/measure.ts +97 -0
- package/src/testing/setupXdgIsolation.ts +13 -12
- package/src/types.ts +42 -0
- package/README.md +0 -458
- package/src/bin.test.ts +0 -54
- package/src/compile-validation.runner.ts +0 -137
- package/src/compile-validation.ts +0 -191
- package/src/completions/computeSocketPath.test.ts +0 -26
- package/src/completions/computeSocketPath.ts +0 -16
- package/src/completions/constants.ts +0 -25
- package/src/completions/handleQuery.test.ts +0 -125
- package/src/completions/handleQuery.ts +0 -49
- package/src/completions/index.ts +0 -14
- package/src/completions/queryCompletions.test.ts +0 -105
- package/src/completions/queryCompletions.ts +0 -75
- package/src/completions/querySocket.test.ts +0 -101
- package/src/completions/querySocket.ts +0 -71
- package/src/completions/startCompletionsServer.test.ts +0 -74
- package/src/completions/startCompletionsServer.ts +0 -75
- package/src/completions/startCompletionsServer.unit.test.ts +0 -131
- package/src/completions/waitForSocket.test.ts +0 -27
- package/src/completions/waitForSocket.ts +0 -27
- package/src/config/configExists.ts +0 -14
- package/src/config/defaultConfig.test.ts +0 -33
- package/src/config/defaultConfig.ts +0 -59
- package/src/config/defaults.json +0 -17
- package/src/config/findProjectConfigPath.test.ts +0 -53
- package/src/config/findProjectConfigPath.ts +0 -36
- package/src/config/index.ts +0 -21
- package/src/config/mergeConfigFileUpdate.ts +0 -58
- package/src/config/parseConfigValues.ts +0 -217
- package/src/config/readConfig.test.ts +0 -395
- package/src/config/readConfig.ts +0 -21
- package/src/config/readConfigLayers.test.ts +0 -109
- package/src/config/readConfigLayers.ts +0 -118
- package/src/config/resolveConfigPath.test.ts +0 -20
- package/src/config/resolveConfigPath.ts +0 -11
- package/src/config/resolveGlobalConfigPath.ts +0 -13
- package/src/config/resolveWriteConfigPath.test.ts +0 -53
- package/src/config/resolveWriteConfigPath.ts +0 -31
- package/src/config/types.ts +0 -128
- package/src/config/writeConfig.ts +0 -37
- package/src/domains/block/blockConfig.ts +0 -97
- package/src/domains/block/commands/index.ts +0 -5
- package/src/domains/block/commands/list.test.ts +0 -111
- package/src/domains/block/commands/list.ts +0 -11
- package/src/domains/block/commands/lookup.test.ts +0 -187
- package/src/domains/block/commands/lookup.ts +0 -14
- package/src/domains/block/commands/sample.ts +0 -56
- package/src/domains/block/formatters/index.ts +0 -5
- package/src/domains/block/formatters/list.test.ts +0 -107
- package/src/domains/block/formatters/list.ts +0 -50
- package/src/domains/block/formatters/lookup.test.ts +0 -318
- package/src/domains/block/formatters/lookup.ts +0 -149
- package/src/domains/block/formatters/sample.ts +0 -21
- package/src/domains/block/formatters/types.ts +0 -16
- package/src/domains/block/helpers/index.ts +0 -4
- package/src/domains/block/helpers/resolveAspects.test.ts +0 -64
- package/src/domains/block/helpers/resolveAspects.ts +0 -35
- package/src/domains/block/index.ts +0 -25
- package/src/domains/block/mcp/index.ts +0 -2
- package/src/domains/block/mcp/specs.ts +0 -67
- package/src/domains/block/operations/index.ts +0 -5
- package/src/domains/block/operations/list.test.ts +0 -80
- package/src/domains/block/operations/list.ts +0 -72
- package/src/domains/block/operations/lookup.test.ts +0 -129
- package/src/domains/block/operations/lookup.ts +0 -446
- package/src/domains/block/operations/sample.ts +0 -41
- package/src/domains/block/orchestration/blockEmptyError.test.ts +0 -26
- package/src/domains/block/orchestration/blockEmptyError.ts +0 -19
- package/src/domains/block/orchestration/buildBlockFilters.ts +0 -12
- package/src/domains/block/orchestration/enrichBlocks.ts +0 -44
- package/src/domains/block/orchestration/index.ts +0 -5
- package/src/domains/block/orchestration/resolveBlockList.ts +0 -39
- package/src/domains/block/orchestration/resolveBlockLookup.ts +0 -35
- package/src/domains/block/stories.test.ts +0 -28
- package/src/domains/block/stories.ts +0 -260
- package/src/domains/block/types.ts +0 -30
- package/src/domains/config/commands/channel.test.ts +0 -128
- package/src/domains/config/commands/channel.ts +0 -99
- package/src/domains/config/commands/configScope.ts +0 -46
- package/src/domains/config/commands/framework.test.ts +0 -119
- package/src/domains/config/commands/framework.ts +0 -103
- package/src/domains/config/commands/index.ts +0 -6
- package/src/domains/config/commands/show.test.ts +0 -61
- package/src/domains/config/commands/show.ts +0 -11
- package/src/domains/config/commands/tier.test.ts +0 -102
- package/src/domains/config/commands/tier.ts +0 -97
- package/src/domains/config/commands/trace.test.ts +0 -165
- package/src/domains/config/commands/trace.ts +0 -83
- package/src/domains/config/formatters/channel.test.ts +0 -70
- package/src/domains/config/formatters/channel.ts +0 -37
- package/src/domains/config/formatters/framework.ts +0 -37
- package/src/domains/config/formatters/index.ts +0 -6
- package/src/domains/config/formatters/show.test.ts +0 -153
- package/src/domains/config/formatters/show.ts +0 -89
- package/src/domains/config/formatters/tier.test.ts +0 -86
- package/src/domains/config/formatters/tier.ts +0 -48
- package/src/domains/config/formatters/trace.ts +0 -28
- package/src/domains/config/index.ts +0 -36
- package/src/domains/config/mcp/index.ts +0 -2
- package/src/domains/config/mcp/specs.ts +0 -100
- package/src/domains/config/operations/index.ts +0 -6
- package/src/domains/config/operations/show.test.ts +0 -78
- package/src/domains/config/operations/show.ts +0 -48
- package/src/domains/config/operations/types.ts +0 -20
- package/src/domains/config/operations/validateChannel.test.ts +0 -36
- package/src/domains/config/operations/validateChannel.ts +0 -24
- package/src/domains/config/operations/validateFramework.ts +0 -24
- package/src/domains/config/operations/validateTier.test.ts +0 -65
- package/src/domains/config/operations/validateTier.ts +0 -43
- package/src/domains/config/stories.ts +0 -42
- package/src/domains/config/tasks/index.ts +0 -6
- package/src/domains/config/tasks/setChannel.ts +0 -21
- package/src/domains/config/tasks/setFramework.ts +0 -21
- package/src/domains/config/tasks/setTier.ts +0 -20
- package/src/domains/config/tasks/setTrace.ts +0 -20
- package/src/domains/config/tasks/writeConfigField.ts +0 -41
- package/src/domains/create/generatorPack/bundled.ts +0 -49
- package/src/domains/create/generatorPack/compileGeneratorPack.test.ts +0 -159
- package/src/domains/create/generatorPack/compileGeneratorPack.ts +0 -312
- package/src/domains/create/index.ts +0 -21
- package/src/domains/create/mcp/index.ts +0 -2
- package/src/domains/create/mcp/specs.ts +0 -13
- package/src/domains/create/renderGeneratorUi.test.ts +0 -103
- package/src/domains/create/renderGeneratorUi.ts +0 -65
- package/src/domains/doctor/commands/doctor.test.ts +0 -75
- package/src/domains/doctor/commands/doctor.ts +0 -43
- package/src/domains/doctor/commands/index.ts +0 -2
- package/src/domains/doctor/formatters/doctor.test.ts +0 -165
- package/src/domains/doctor/formatters/doctor.ts +0 -136
- package/src/domains/doctor/formatters/index.ts +0 -2
- package/src/domains/doctor/index.ts +0 -9
- package/src/domains/doctor/mcp/index.ts +0 -2
- package/src/domains/doctor/mcp/specs.ts +0 -41
- package/src/domains/doctor/operations/checks/checkConfigFile.ts +0 -42
- package/src/domains/doctor/operations/checks/checkKeStore.ts +0 -38
- package/src/domains/doctor/operations/checks/checkMcpCommands.ts +0 -133
- package/src/domains/doctor/operations/checks/checkMcpConfigured.ts +0 -65
- package/src/domains/doctor/operations/checks/checkNodeVersion.ts +0 -25
- package/src/domains/doctor/operations/checks/checkPackageRefs.ts +0 -76
- package/src/domains/doctor/operations/checks/checkPragmaVersion.ts +0 -20
- package/src/domains/doctor/operations/checks/checkShellCompletions.ts +0 -42
- package/src/domains/doctor/operations/checks/checkSkillsSymlinked.ts +0 -64
- package/src/domains/doctor/operations/checks/index.ts +0 -10
- package/src/domains/doctor/operations/checks.test.ts +0 -307
- package/src/domains/doctor/operations/index.ts +0 -3
- package/src/domains/doctor/operations/runChecks.test.ts +0 -176
- package/src/domains/doctor/operations/runChecks.ts +0 -78
- package/src/domains/doctor/operations/types.ts +0 -42
- package/src/domains/graph/commands/index.ts +0 -4
- package/src/domains/graph/commands/inspect.test.ts +0 -94
- package/src/domains/graph/commands/inspect.ts +0 -63
- package/src/domains/graph/commands/query.test.ts +0 -94
- package/src/domains/graph/commands/query.ts +0 -60
- package/src/domains/graph/formatters/index.ts +0 -4
- package/src/domains/graph/formatters/inspect.ts +0 -50
- package/src/domains/graph/formatters/query.test.ts +0 -87
- package/src/domains/graph/formatters/query.ts +0 -74
- package/src/domains/graph/helpers/index.ts +0 -3
- package/src/domains/graph/helpers/resolveUri.test.ts +0 -50
- package/src/domains/graph/helpers/resolveUri.ts +0 -77
- package/src/domains/graph/index.ts +0 -22
- package/src/domains/graph/mcp/index.ts +0 -2
- package/src/domains/graph/mcp/specs.ts +0 -82
- package/src/domains/graph/operations/executeQuery.test.ts +0 -68
- package/src/domains/graph/operations/executeQuery.ts +0 -32
- package/src/domains/graph/operations/index.ts +0 -4
- package/src/domains/graph/operations/inspectUri.test.ts +0 -101
- package/src/domains/graph/operations/inspectUri.ts +0 -64
- package/src/domains/graphql/commands/build.test.ts +0 -196
- package/src/domains/graphql/commands/build.ts +0 -117
- package/src/domains/graphql/commands/check.test.ts +0 -141
- package/src/domains/graphql/commands/check.ts +0 -81
- package/src/domains/graphql/commands/index.ts +0 -5
- package/src/domains/graphql/commands/serve.test.ts +0 -46
- package/src/domains/graphql/commands/serve.ts +0 -141
- package/src/domains/graphql/constants.ts +0 -10
- package/src/domains/graphql/formatters/index.ts +0 -3
- package/src/domains/graphql/formatters/report.ts +0 -78
- package/src/domains/graphql/helpers/gatherSources.test.ts +0 -92
- package/src/domains/graphql/helpers/gatherSources.ts +0 -58
- package/src/domains/graphql/helpers/index.ts +0 -6
- package/src/domains/graphql/helpers/parsePrefixes.test.ts +0 -44
- package/src/domains/graphql/helpers/parsePrefixes.ts +0 -38
- package/src/domains/graphql/helpers/resolveSourceFiles.test.ts +0 -65
- package/src/domains/graphql/helpers/resolveSourceFiles.ts +0 -66
- package/src/domains/graphql/helpers/routeGraphql.test.ts +0 -43
- package/src/domains/graphql/helpers/routeGraphql.ts +0 -28
- package/src/domains/graphql/index.ts +0 -24
- package/src/domains/graphql/operations/compileSchema.test.ts +0 -95
- package/src/domains/graphql/operations/compileSchema.ts +0 -107
- package/src/domains/graphql/operations/createSchemaServer.test.ts +0 -50
- package/src/domains/graphql/operations/createSchemaServer.ts +0 -75
- package/src/domains/graphql/operations/ensureSchemaArtifact.test.ts +0 -167
- package/src/domains/graphql/operations/ensureSchemaArtifact.ts +0 -178
- package/src/domains/graphql/operations/index.ts +0 -17
- package/src/domains/graphql/types.ts +0 -29
- package/src/domains/info/commands/index.ts +0 -4
- package/src/domains/info/commands/info.test.ts +0 -88
- package/src/domains/info/commands/info.ts +0 -47
- package/src/domains/info/commands/upgrade.test.ts +0 -183
- package/src/domains/info/commands/upgrade.ts +0 -153
- package/src/domains/info/constants.test.ts +0 -22
- package/src/domains/info/constants.ts +0 -15
- package/src/domains/info/formatters/index.ts +0 -8
- package/src/domains/info/formatters/info.test.ts +0 -207
- package/src/domains/info/formatters/info.ts +0 -131
- package/src/domains/info/formatters/upgrade.test.ts +0 -136
- package/src/domains/info/formatters/upgrade.ts +0 -70
- package/src/domains/info/index.ts +0 -9
- package/src/domains/info/mcp/index.ts +0 -2
- package/src/domains/info/mcp/specs.ts +0 -65
- package/src/domains/info/operations/checkRegistryVersion.test.ts +0 -124
- package/src/domains/info/operations/checkRegistryVersion.ts +0 -45
- package/src/domains/info/operations/collectEntityCounts.test.ts +0 -156
- package/src/domains/info/operations/collectEntityCounts.ts +0 -123
- package/src/domains/info/operations/collectInfo.test.ts +0 -122
- package/src/domains/info/operations/collectInfo.ts +0 -94
- package/src/domains/info/operations/collectStoreSummary.test.ts +0 -61
- package/src/domains/info/operations/collectStoreSummary.ts +0 -42
- package/src/domains/info/operations/index.ts +0 -6
- package/src/domains/info/types.test-d.ts +0 -35
- package/src/domains/info/types.ts +0 -67
- package/src/domains/llm/capabilities.test.ts +0 -111
- package/src/domains/llm/commands/capabilities.ts +0 -37
- package/src/domains/llm/commands/index.ts +0 -4
- package/src/domains/llm/commands/llm.ts +0 -41
- package/src/domains/llm/data/commandReference.ts +0 -106
- package/src/domains/llm/data/decisionTrees.ts +0 -55
- package/src/domains/llm/data/index.ts +0 -6
- package/src/domains/llm/data/toolCatalog.ts +0 -221
- package/src/domains/llm/formatters/capabilities.ts +0 -50
- package/src/domains/llm/formatters/index.ts +0 -4
- package/src/domains/llm/formatters/orientation.ts +0 -57
- package/src/domains/llm/index.ts +0 -9
- package/src/domains/llm/llmCommand.test.ts +0 -101
- package/src/domains/llm/mcp/index.ts +0 -2
- package/src/domains/llm/mcp/specs.ts +0 -93
- package/src/domains/llm/operations/collectContext.test.ts +0 -64
- package/src/domains/llm/operations/collectContext.ts +0 -37
- package/src/domains/llm/operations/index.ts +0 -3
- package/src/domains/llm/types.ts +0 -72
- package/src/domains/modifier/commands/index.ts +0 -5
- package/src/domains/modifier/commands/list.test.ts +0 -57
- package/src/domains/modifier/commands/list.ts +0 -9
- package/src/domains/modifier/commands/lookup.test.ts +0 -91
- package/src/domains/modifier/commands/lookup.ts +0 -14
- package/src/domains/modifier/commands/sample.ts +0 -54
- package/src/domains/modifier/formatters/index.ts +0 -8
- package/src/domains/modifier/formatters/list.test.ts +0 -38
- package/src/domains/modifier/formatters/list.ts +0 -22
- package/src/domains/modifier/formatters/lookup.test.ts +0 -33
- package/src/domains/modifier/formatters/lookup.ts +0 -50
- package/src/domains/modifier/formatters/sample.ts +0 -15
- package/src/domains/modifier/index.ts +0 -27
- package/src/domains/modifier/mcp/index.ts +0 -2
- package/src/domains/modifier/mcp/specs.ts +0 -65
- package/src/domains/modifier/modifierConfig.ts +0 -36
- package/src/domains/modifier/operations/index.ts +0 -5
- package/src/domains/modifier/operations/list.test.ts +0 -39
- package/src/domains/modifier/operations/list.ts +0 -41
- package/src/domains/modifier/operations/lookup.test.ts +0 -37
- package/src/domains/modifier/operations/lookup.ts +0 -69
- package/src/domains/modifier/operations/sample.ts +0 -32
- package/src/domains/modifier/orchestration/index.ts +0 -3
- package/src/domains/modifier/orchestration/modifierEmptyError.test.ts +0 -26
- package/src/domains/modifier/orchestration/modifierEmptyError.ts +0 -15
- package/src/domains/modifier/orchestration/resolveModifierList.ts +0 -16
- package/src/domains/modifier/orchestration/resolveModifierLookup.ts +0 -33
- package/src/domains/modifier/stories.test.ts +0 -20
- package/src/domains/modifier/stories.ts +0 -86
- package/src/domains/modifier/types.ts +0 -5
- package/src/domains/ontology/commands/index.ts +0 -4
- package/src/domains/ontology/commands/list.test.ts +0 -84
- package/src/domains/ontology/commands/list.ts +0 -11
- package/src/domains/ontology/commands/show.test.ts +0 -179
- package/src/domains/ontology/commands/show.ts +0 -14
- package/src/domains/ontology/formatters/index.ts +0 -5
- package/src/domains/ontology/formatters/list.ts +0 -64
- package/src/domains/ontology/formatters/show.ts +0 -396
- package/src/domains/ontology/helpers/buildClassTree.ts +0 -89
- package/src/domains/ontology/helpers/completeClassNames.ts +0 -43
- package/src/domains/ontology/helpers/expandOntologyIris.ts +0 -79
- package/src/domains/ontology/helpers/findNamespace.ts +0 -23
- package/src/domains/ontology/helpers/index.ts +0 -21
- package/src/domains/ontology/helpers/queryClasses.ts +0 -66
- package/src/domains/ontology/helpers/queryProperties.ts +0 -90
- package/src/domains/ontology/helpers/queryTboxFacts.ts +0 -160
- package/src/domains/ontology/helpers/resolvePrefix.ts +0 -45
- package/src/domains/ontology/index.ts +0 -26
- package/src/domains/ontology/mcp/index.ts +0 -2
- package/src/domains/ontology/mcp/specs.ts +0 -16
- package/src/domains/ontology/operations/index.ts +0 -5
- package/src/domains/ontology/operations/listOntologies.test.ts +0 -122
- package/src/domains/ontology/operations/listOntologies.ts +0 -197
- package/src/domains/ontology/operations/showOntology.test.ts +0 -184
- package/src/domains/ontology/operations/showOntology.ts +0 -323
- package/src/domains/ontology/operations/showOntologyRaw.test.ts +0 -41
- package/src/domains/ontology/operations/showOntologyRaw.ts +0 -50
- package/src/domains/ontology/stories.test.ts +0 -36
- package/src/domains/ontology/stories.ts +0 -153
- package/src/domains/refs/commands/updateRefs.ts +0 -52
- package/src/domains/refs/formatters/updateRefs.ts +0 -27
- package/src/domains/refs/index.ts +0 -27
- package/src/domains/refs/operations/gitOps.test.ts +0 -155
- package/src/domains/refs/operations/gitOps.ts +0 -92
- package/src/domains/refs/operations/index.ts +0 -10
- package/src/domains/refs/operations/parseRef.test.ts +0 -157
- package/src/domains/refs/operations/parseRef.ts +0 -114
- package/src/domains/refs/operations/paths.test.ts +0 -98
- package/src/domains/refs/operations/paths.ts +0 -91
- package/src/domains/refs/operations/readGlobalRefs.test.ts +0 -63
- package/src/domains/refs/operations/readGlobalRefs.ts +0 -37
- package/src/domains/refs/operations/updateRefs.test.ts +0 -167
- package/src/domains/refs/operations/updateRefs.ts +0 -180
- package/src/domains/setup/commands/all.ts +0 -58
- package/src/domains/setup/commands/completions.ts +0 -85
- package/src/domains/setup/commands/entrypoints.test.ts +0 -170
- package/src/domains/setup/commands/index.ts +0 -7
- package/src/domains/setup/commands/lsp.ts +0 -49
- package/src/domains/setup/commands/mcp.ts +0 -119
- package/src/domains/setup/commands/setup.ts +0 -70
- package/src/domains/setup/commands/skills.test.ts +0 -68
- package/src/domains/setup/commands/skills.ts +0 -110
- package/src/domains/setup/formatters/index.ts +0 -2
- package/src/domains/setup/formatters/skills.test.ts +0 -103
- package/src/domains/setup/formatters/skills.ts +0 -112
- package/src/domains/setup/formatters/types.ts +0 -7
- package/src/domains/setup/helpers/completionScripts.test.ts +0 -58
- package/src/domains/setup/helpers/completionScripts.ts +0 -92
- package/src/domains/setup/helpers/constants.ts +0 -2
- package/src/domains/setup/helpers/detectShell.test.ts +0 -48
- package/src/domains/setup/helpers/detectShell.ts +0 -20
- package/src/domains/setup/helpers/index.ts +0 -12
- package/src/domains/setup/helpers/runSetupTask.test.ts +0 -277
- package/src/domains/setup/helpers/runSetupTask.ts +0 -221
- package/src/domains/setup/index.ts +0 -37
- package/src/domains/setup/operations/index.ts +0 -6
- package/src/domains/setup/operations/setupAll.test.ts +0 -48
- package/src/domains/setup/operations/setupAll.ts +0 -41
- package/src/domains/setup/operations/setupCompletions.test.ts +0 -94
- package/src/domains/setup/operations/setupCompletions.ts +0 -54
- package/src/domains/setup/operations/setupLsp.test.ts +0 -30
- package/src/domains/setup/operations/setupLsp.ts +0 -22
- package/src/domains/setup/operations/setupMcp.test.ts +0 -120
- package/src/domains/setup/operations/setupMcp.ts +0 -108
- package/src/domains/setup/operations/setupSkills.test.ts +0 -191
- package/src/domains/setup/operations/setupSkills.ts +0 -160
- package/src/domains/setup/types.ts +0 -18
- package/src/domains/shared/ToolSpec.ts +0 -49
- package/src/domains/shared/bootStore.bareCore.test.ts +0 -63
- package/src/domains/shared/bootStore.test.ts +0 -82
- package/src/domains/shared/bootStore.ts +0 -171
- package/src/domains/shared/buildQuery.ts +0 -18
- package/src/domains/shared/compactUri.test.ts +0 -32
- package/src/domains/shared/compactUri.ts +0 -21
- package/src/domains/shared/context.ts +0 -16
- package/src/domains/shared/contracts.ts +0 -164
- package/src/domains/shared/createInteractivePromptSession.test.ts +0 -439
- package/src/domains/shared/createInteractivePromptSession.ts +0 -236
- package/src/domains/shared/emptyErrorRecovery.test.ts +0 -106
- package/src/domains/shared/extractLocalName.test.ts +0 -21
- package/src/domains/shared/extractLocalName.ts +0 -14
- package/src/domains/shared/filters/buildChannelFilter.test.ts +0 -52
- package/src/domains/shared/filters/buildChannelFilter.ts +0 -41
- package/src/domains/shared/filters/buildFilterConfig.ts +0 -15
- package/src/domains/shared/filters/buildFilters.test.ts +0 -33
- package/src/domains/shared/filters/buildFilters.ts +0 -30
- package/src/domains/shared/filters/buildTierFilter.test.ts +0 -78
- package/src/domains/shared/filters/buildTierFilter.ts +0 -69
- package/src/domains/shared/filters/describeFilters.ts +0 -14
- package/src/domains/shared/filters/index.ts +0 -10
- package/src/domains/shared/formatters.ts +0 -103
- package/src/domains/shared/listTiers.ts +0 -40
- package/src/domains/shared/loaders/bundledLoader.test.ts +0 -248
- package/src/domains/shared/loaders/bundledLoader.ts +0 -254
- package/src/domains/shared/loaders/gitLoader.ts +0 -30
- package/src/domains/shared/loaders/index.ts +0 -9
- package/src/domains/shared/loaders/localLoader.ts +0 -71
- package/src/domains/shared/loaders/readPackageDir.test.ts +0 -58
- package/src/domains/shared/loaders/readPackageDir.ts +0 -185
- package/src/domains/shared/loaders/storyAssetsPlugin.test.ts +0 -84
- package/src/domains/shared/loaders/storyAssetsPlugin.ts +0 -46
- package/src/domains/shared/lookupMany.test.ts +0 -135
- package/src/domains/shared/lookupMany.ts +0 -101
- package/src/domains/shared/mergeAndParseRefs.test.ts +0 -89
- package/src/domains/shared/mergeAndParseRefs.ts +0 -44
- package/src/domains/shared/namespaces.ts +0 -26
- package/src/domains/shared/packages.ts +0 -20
- package/src/domains/shared/parseSampleCount.test.ts +0 -47
- package/src/domains/shared/parseSampleCount.ts +0 -45
- package/src/domains/shared/pickRandom.ts +0 -22
- package/src/domains/shared/prefixes.test.ts +0 -211
- package/src/domains/shared/prefixes.ts +0 -204
- package/src/domains/shared/renderers.ts +0 -410
- package/src/domains/shared/resolveConfiguredGraphs.test.ts +0 -27
- package/src/domains/shared/resolveConfiguredGraphs.ts +0 -41
- package/src/domains/shared/resolveLookupExitCode.test.ts +0 -48
- package/src/domains/shared/resolveLookupExitCode.ts +0 -42
- package/src/domains/shared/runtime.ts +0 -61
- package/src/domains/shared/sampleFormatters.ts +0 -47
- package/src/domains/shared/semanticPackage.test.ts +0 -89
- package/src/domains/shared/semanticPackage.ts +0 -127
- package/src/domains/shared/stories/compileLookupCommand.test.ts +0 -145
- package/src/domains/shared/stories/compileLookupCommand.ts +0 -102
- package/src/domains/shared/stories/compileLookupTool.test.ts +0 -105
- package/src/domains/shared/stories/compileLookupTool.ts +0 -96
- package/src/domains/shared/stories/compileReadCommand.test.ts +0 -121
- package/src/domains/shared/stories/compileReadCommand.ts +0 -48
- package/src/domains/shared/stories/compileReadTool.test.ts +0 -64
- package/src/domains/shared/stories/compileReadTool.ts +0 -38
- package/src/domains/shared/stories/condense.test.ts +0 -18
- package/src/domains/shared/stories/condense.ts +0 -15
- package/src/domains/shared/stories/index.ts +0 -20
- package/src/domains/shared/stories/normalizeNames.test.ts +0 -20
- package/src/domains/shared/stories/normalizeNames.ts +0 -22
- package/src/domains/shared/stories/pack/applyPackFilters.test.ts +0 -151
- package/src/domains/shared/stories/pack/applyPackFilters.ts +0 -111
- package/src/domains/shared/stories/pack/applyPackSearch.test.ts +0 -57
- package/src/domains/shared/stories/pack/applyPackSearch.ts +0 -41
- package/src/domains/shared/stories/pack/buildLookupQuery.test.ts +0 -81
- package/src/domains/shared/stories/pack/buildLookupQuery.ts +0 -154
- package/src/domains/shared/stories/pack/bundled/index.ts +0 -23
- package/src/domains/shared/stories/pack/bundled/standardPack.ts +0 -164
- package/src/domains/shared/stories/pack/bundled/tierPack.ts +0 -50
- package/src/domains/shared/stories/pack/collectPackStories.test.ts +0 -406
- package/src/domains/shared/stories/pack/collectPackStories.ts +0 -158
- package/src/domains/shared/stories/pack/compilePackCommands.ts +0 -50
- package/src/domains/shared/stories/pack/compilePackStories.test.ts +0 -751
- package/src/domains/shared/stories/pack/compilePackStories.ts +0 -724
- package/src/domains/shared/stories/pack/compilePackToolSpecs.ts +0 -55
- package/src/domains/shared/stories/pack/index.ts +0 -42
- package/src/domains/shared/stories/pack/reservedVerbs.test.ts +0 -213
- package/src/domains/shared/stories/pack/reservedVerbs.ts +0 -170
- package/src/domains/shared/stories/pack/runSelectQuery.ts +0 -31
- package/src/domains/shared/stories/pack/standardParity.test.ts +0 -381
- package/src/domains/shared/stories/pack/types.ts +0 -224
- package/src/domains/shared/stories/pack/validateStoryPackDefinition.test.ts +0 -742
- package/src/domains/shared/stories/pack/validateStoryPackDefinition.ts +0 -859
- package/src/domains/shared/stories/projectCliParameters.test.ts +0 -59
- package/src/domains/shared/stories/projectCliParameters.ts +0 -57
- package/src/domains/shared/stories/projectToolParams.test.ts +0 -50
- package/src/domains/shared/stories/projectToolParams.ts +0 -32
- package/src/domains/shared/stories/requirePragmaContext.test.ts +0 -23
- package/src/domains/shared/stories/requirePragmaContext.ts +0 -23
- package/src/domains/shared/stories/resolveLookupDetailed.test.ts +0 -57
- package/src/domains/shared/stories/resolveLookupDetailed.ts +0 -27
- package/src/domains/shared/stories/types.ts +0 -179
- package/src/domains/shared/suggestions/detectCrossDomain.test.ts +0 -43
- package/src/domains/shared/suggestions/detectCrossDomain.ts +0 -116
- package/src/domains/shared/suggestions/expandGlob.test.ts +0 -92
- package/src/domains/shared/suggestions/expandGlob.ts +0 -52
- package/src/domains/shared/suggestions/expandLookupQueries.ts +0 -57
- package/src/domains/shared/suggestions/index.ts +0 -7
- package/src/domains/shared/suggestions/listDomainNames.ts +0 -61
- package/src/domains/shared/suggestions/suggestNames.test.ts +0 -70
- package/src/domains/shared/suggestions/suggestNames.ts +0 -130
- package/src/domains/shared/types/block.ts +0 -107
- package/src/domains/shared/types/common.ts +0 -33
- package/src/domains/shared/types/graph.ts +0 -17
- package/src/domains/shared/types/index.ts +0 -46
- package/src/domains/shared/types/modifier.ts +0 -22
- package/src/domains/shared/types/ontology.ts +0 -145
- package/src/domains/shared/types/runtime.ts +0 -24
- package/src/domains/shared/types/sample.ts +0 -17
- package/src/domains/shared/types/standard.ts +0 -21
- package/src/domains/shared/types/tier.ts +0 -15
- package/src/domains/shared/types/token.ts +0 -30
- package/src/domains/skill/commands/index.ts +0 -4
- package/src/domains/skill/commands/list.test.ts +0 -115
- package/src/domains/skill/commands/list.ts +0 -11
- package/src/domains/skill/commands/lookup.test.ts +0 -118
- package/src/domains/skill/commands/lookup.ts +0 -14
- package/src/domains/skill/formatters/index.ts +0 -3
- package/src/domains/skill/formatters/list.test.ts +0 -140
- package/src/domains/skill/formatters/list.ts +0 -119
- package/src/domains/skill/formatters/lookup.test.ts +0 -46
- package/src/domains/skill/formatters/lookup.ts +0 -57
- package/src/domains/skill/formatters/types.ts +0 -8
- package/src/domains/skill/helpers/index.ts +0 -6
- package/src/domains/skill/helpers/parseFrontmatter.test.ts +0 -122
- package/src/domains/skill/helpers/parseFrontmatter.ts +0 -112
- package/src/domains/skill/helpers/resolveSkillSources.ts +0 -70
- package/src/domains/skill/index.ts +0 -23
- package/src/domains/skill/mcp/index.ts +0 -2
- package/src/domains/skill/mcp/specs.ts +0 -19
- package/src/domains/skill/operations/discover.test.ts +0 -176
- package/src/domains/skill/operations/discover.ts +0 -59
- package/src/domains/skill/operations/index.ts +0 -5
- package/src/domains/skill/operations/list.test.ts +0 -76
- package/src/domains/skill/operations/list.ts +0 -47
- package/src/domains/skill/operations/lookup.test.ts +0 -91
- package/src/domains/skill/operations/lookup.ts +0 -70
- package/src/domains/skill/stories.test.ts +0 -43
- package/src/domains/skill/stories.ts +0 -103
- package/src/domains/skill/types.ts +0 -33
- package/src/domains/token/commands/add-config.test.ts +0 -68
- package/src/domains/token/commands/add-config.ts +0 -62
- package/src/domains/token/commands/index.ts +0 -6
- package/src/domains/token/commands/list.test.ts +0 -82
- package/src/domains/token/commands/list.ts +0 -54
- package/src/domains/token/commands/lookup.test.ts +0 -133
- package/src/domains/token/commands/lookup.ts +0 -107
- package/src/domains/token/commands/sample.ts +0 -54
- package/src/domains/token/featureFlag.ts +0 -17
- package/src/domains/token/formatters/index.ts +0 -8
- package/src/domains/token/formatters/list.test.ts +0 -37
- package/src/domains/token/formatters/list.ts +0 -24
- package/src/domains/token/formatters/lookup.test.ts +0 -61
- package/src/domains/token/formatters/lookup.ts +0 -107
- package/src/domains/token/formatters/sample.ts +0 -16
- package/src/domains/token/index.ts +0 -45
- package/src/domains/token/mcp/index.ts +0 -2
- package/src/domains/token/mcp/specs.ts +0 -207
- package/src/domains/token/operations/add-config.test.ts +0 -68
- package/src/domains/token/operations/add-config.ts +0 -61
- package/src/domains/token/operations/index.ts +0 -8
- package/src/domains/token/operations/list.test.ts +0 -50
- package/src/domains/token/operations/list.ts +0 -52
- package/src/domains/token/operations/lookup.test.ts +0 -42
- package/src/domains/token/operations/lookup.ts +0 -75
- package/src/domains/token/operations/sample.ts +0 -32
- package/src/domains/token/orchestration/index.ts +0 -3
- package/src/domains/token/orchestration/resolveTokenList.ts +0 -17
- package/src/domains/token/orchestration/resolveTokenLookup.ts +0 -33
- package/src/domains/token/orchestration/tokenEmptyError.test.ts +0 -33
- package/src/domains/token/orchestration/tokenEmptyError.ts +0 -20
- package/src/domains/token/tokenConfig.ts +0 -38
- package/src/domains/token/types.ts +0 -6
- package/src/domains/trace/commands/clear.ts +0 -71
- package/src/domains/trace/commands/index.ts +0 -5
- package/src/domains/trace/commands/resolveTraceLimit.test.ts +0 -31
- package/src/domains/trace/commands/sessions.ts +0 -32
- package/src/domains/trace/commands/show.ts +0 -171
- package/src/domains/trace/formatters/index.ts +0 -9
- package/src/domains/trace/formatters/sessions.ts +0 -80
- package/src/domains/trace/formatters/show.ts +0 -122
- package/src/domains/trace/index.ts +0 -17
- package/src/domains/trace/operations/index.ts +0 -8
- package/src/domains/trace/operations/listSessions.test.ts +0 -55
- package/src/domains/trace/operations/listSessions.ts +0 -52
- package/src/domains/trace/operations/readTraceLog.test.ts +0 -100
- package/src/domains/trace/operations/readTraceLog.ts +0 -104
- package/src/domains/trace/tracePlugin.test.ts +0 -171
- package/src/domains/trace/tracePlugin.ts +0 -159
- package/src/domains/trace/types.ts +0 -65
- package/src/embedWasm.ts +0 -42
- package/src/error/PragmaError.test.ts +0 -121
- package/src/error/PragmaError.ts +0 -177
- package/src/error/constants.ts +0 -12
- package/src/error/index.ts +0 -4
- package/src/error/types.ts +0 -55
- package/src/mcp/createMcpServer.test.ts +0 -41
- package/src/mcp/createMcpServer.ts +0 -53
- package/src/mcp/error/buildRecovery.test.ts +0 -37
- package/src/mcp/error/buildRecovery.ts +0 -17
- package/src/mcp/error/index.ts +0 -12
- package/src/mcp/error/serializeError.test.ts +0 -121
- package/src/mcp/error/serializeError.ts +0 -31
- package/src/mcp/error/serializeErrorPayload.test.ts +0 -38
- package/src/mcp/error/serializeErrorPayload.ts +0 -34
- package/src/mcp/error/types.ts +0 -59
- package/src/mcp/index.ts +0 -15
- package/src/mcp/registerResources.test.ts +0 -566
- package/src/mcp/registerResources.ts +0 -9
- package/src/mcp/resources/buildGraphIndex.ts +0 -167
- package/src/mcp/resources/buildResourceList.test.ts +0 -97
- package/src/mcp/resources/buildResourceList.ts +0 -176
- package/src/mcp/resources/classifyEntity.test.ts +0 -40
- package/src/mcp/resources/classifyEntity.ts +0 -27
- package/src/mcp/resources/constants.ts +0 -105
- package/src/mcp/resources/displayPredicates.ts +0 -62
- package/src/mcp/resources/pickFirstValue.test.ts +0 -29
- package/src/mcp/resources/pickFirstValue.ts +0 -26
- package/src/mcp/resources/pickPrimaryType.test.ts +0 -41
- package/src/mcp/resources/pickPrimaryType.ts +0 -26
- package/src/mcp/resources/rankUriCompletions.test.ts +0 -52
- package/src/mcp/resources/rankUriCompletions.ts +0 -64
- package/src/mcp/resources/readEntity.ts +0 -169
- package/src/mcp/resources/registerResources.ts +0 -126
- package/src/mcp/resources/types.ts +0 -128
- package/src/mcp/runMcpServer.test.ts +0 -66
- package/src/mcp/runMcpServer.ts +0 -24
- package/src/mcp/tools/index.ts +0 -74
- package/src/mcp/tools/registerFromSpec.ts +0 -97
- package/src/mcp/tools/registerTools.test.ts +0 -1277
- package/src/mcp/types.ts +0 -66
- package/src/mcp/utils/estimateTokens.test.ts +0 -14
- package/src/mcp/utils/estimateTokens.ts +0 -9
- package/src/mcp/utils/index.ts +0 -11
- package/src/mcp/utils/wrapTool.test.ts +0 -109
- package/src/mcp/utils/wrapTool.ts +0 -81
- package/src/package-manager/constants.ts +0 -29
- package/src/package-manager/detectInstallSource.test.ts +0 -23
- package/src/package-manager/detectInstallSource.ts +0 -111
- package/src/package-manager/detectLocalInstall.test.ts +0 -16
- package/src/package-manager/detectLocalInstall.ts +0 -43
- package/src/package-manager/detectPackageManager.test.ts +0 -81
- package/src/package-manager/detectPackageManager.ts +0 -30
- package/src/package-manager/index.ts +0 -6
- package/src/package-manager/types.ts +0 -10
- package/src/pipeline/collectCommands.test.ts +0 -187
- package/src/pipeline/collectCommands.ts +0 -75
- package/src/pipeline/constants.ts +0 -14
- package/src/pipeline/createProgram.test.ts +0 -116
- package/src/pipeline/createProgram.ts +0 -89
- package/src/pipeline/firstRun.test.ts +0 -80
- package/src/pipeline/firstRun.ts +0 -99
- package/src/pipeline/formatTerminal.test.ts +0 -43
- package/src/pipeline/formatTerminal.ts +0 -53
- package/src/pipeline/index.ts +0 -22
- package/src/pipeline/mapExitCode.test.ts +0 -41
- package/src/pipeline/mapExitCode.ts +0 -12
- package/src/pipeline/parseGlobalFlags.test.ts +0 -193
- package/src/pipeline/parseGlobalFlags.ts +0 -135
- package/src/pipeline/renderError.test.ts +0 -151
- package/src/pipeline/renderError.ts +0 -129
- package/src/pipeline/resolveCommandKind.test.ts +0 -80
- package/src/pipeline/resolveCommandKind.ts +0 -82
- package/src/pipeline/rootHelp.test.ts +0 -87
- package/src/pipeline/rootHelp.ts +0 -265
- package/src/pipeline/runCli.orchestration.test.ts +0 -435
- package/src/pipeline/runCli.test.ts +0 -83
- package/src/pipeline/runCli.ts +0 -411
- package/src/pipeline/types.ts +0 -17
- package/src/testing/cli.ts +0 -71
- package/src/testing/createTestMcpClient.ts +0 -68
- package/src/testing/dsFixtures.ts +0 -523
- package/src/testing/fixtures/canonical-config.json +0 -4
- package/src/testing/fixtures/canonical.ttl +0 -437
- package/src/testing/fixtures/filtered-config.json +0 -4
- package/src/testing/fixtures.ts +0 -34
- package/src/testing/graphqlFixtures.ts +0 -72
- package/src/testing/helpers/assertParity.ts +0 -28
- package/src/testing/helpers/createTestMcpClient.ts +0 -40
- package/src/testing/helpers/createTestRuntime.ts +0 -67
- package/src/testing/index.ts +0 -22
- package/src/testing/integration/__snapshots__/executor-golden.test.ts.snap +0 -1207
- package/src/testing/integration/agent-session.test.ts +0 -148
- package/src/testing/integration/boot.test.ts +0 -105
- package/src/testing/integration/cli-user-stories.test.ts +0 -261
- package/src/testing/integration/cross-binary-byte-equality.test.ts +0 -129
- package/src/testing/integration/edge-cases.test.ts +0 -275
- package/src/testing/integration/executor-execution.test.ts +0 -103
- package/src/testing/integration/executor-golden.test.ts +0 -145
- package/src/testing/integration/mcp-surface.test.ts +0 -605
- package/src/testing/integration/parity.test.ts +0 -596
- package/src/testing/regression/0001-skill-discovery-granularity.test.ts +0 -71
- package/src/testing/standardParityFixtures.ts +0 -35
- package/src/testing/store.ts +0 -39
- package/src/testing/storyFixtures.ts +0 -63
- package/src/testing/types.ts +0 -20
- package/src/tui/components/BulletList/BulletList.tsx +0 -46
- package/src/tui/components/BulletList/index.ts +0 -2
- package/src/tui/components/BulletList/types.ts +0 -6
- package/src/tui/components/Card/Card.tsx +0 -73
- package/src/tui/components/Card/index.ts +0 -1
- package/src/tui/components/Card/types.ts +0 -12
- package/src/tui/components/CodeBlock/CodeBlock.tsx +0 -37
- package/src/tui/components/CodeBlock/index.ts +0 -2
- package/src/tui/components/CodeBlock/types.ts +0 -6
- package/src/tui/components/DataRow/DataRow.tsx +0 -80
- package/src/tui/components/DataRow/index.ts +0 -2
- package/src/tui/components/DataRow/types.ts +0 -14
- package/src/tui/components/FieldRow/FieldRow.tsx +0 -24
- package/src/tui/components/FieldRow/index.ts +0 -2
- package/src/tui/components/FieldRow/types.ts +0 -10
- package/src/tui/components/HeaderRow/HeaderRow.tsx +0 -32
- package/src/tui/components/HeaderRow/index.ts +0 -2
- package/src/tui/components/HeaderRow/types.ts +0 -8
- package/src/tui/components/MarkdownText/MarkdownText.tsx +0 -19
- package/src/tui/components/MarkdownText/index.ts +0 -2
- package/src/tui/components/MarkdownText/types.ts +0 -4
- package/src/tui/components/MiniTable/MiniTable.tsx +0 -82
- package/src/tui/components/MiniTable/index.ts +0 -2
- package/src/tui/components/MiniTable/types.ts +0 -6
- package/src/tui/components/SectionRenderer/SectionRenderer.tsx +0 -91
- package/src/tui/components/SectionRenderer/index.ts +0 -2
- package/src/tui/components/SectionRenderer/types.ts +0 -15
- package/src/tui/components/TreeView/TreeView.tsx +0 -84
- package/src/tui/components/TreeView/index.ts +0 -2
- package/src/tui/components/TreeView/types.ts +0 -6
- package/src/tui/components/index.ts +0 -19
- package/src/tui/constants.ts +0 -39
- package/src/tui/createListView.ts +0 -23
- package/src/tui/createLookupView.ts +0 -26
- package/src/tui/helpers/computeWidths.ts +0 -53
- package/src/tui/helpers/fitColumns.ts +0 -33
- package/src/tui/helpers/formatMarkdown.ts +0 -19
- package/src/tui/helpers/getTerminalSize.ts +0 -16
- package/src/tui/helpers/index.ts +0 -6
- package/src/tui/helpers/syntaxColor.ts +0 -67
- package/src/tui/helpers/truncateText.ts +0 -12
- package/src/tui/hooks/index.ts +0 -3
- package/src/tui/hooks/types.ts +0 -7
- package/src/tui/hooks/useAutoExit.ts +0 -17
- package/src/tui/hooks/useTerminalSize.ts +0 -19
- package/src/tui/index.ts +0 -15
- package/src/tui/renderInk.tsx +0 -18
- package/src/tui/types.ts +0 -12
- package/src/tui/views/ListView/ListView.tsx +0 -104
- package/src/tui/views/ListView/index.ts +0 -2
- package/src/tui/views/ListView/types.ts +0 -14
- package/src/tui/views/LookupView/LookupView.tsx +0 -244
- package/src/tui/views/LookupView/index.ts +0 -2
- package/src/tui/views/LookupView/types.ts +0 -16
- package/src/tui/views/index.ts +0 -4
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
import { afterAll, beforeAll, describe, expect, it } from "vitest";
|
|
2
|
-
import type { PragmaContext } from "../domains/shared/context.js";
|
|
3
|
-
import type { PragmaRuntime } from "../domains/shared/runtime.js";
|
|
4
|
-
import {
|
|
5
|
-
deriveReservedVerbs,
|
|
6
|
-
isReserved,
|
|
7
|
-
nounVerbFromPath,
|
|
8
|
-
nounVerbFromToolName,
|
|
9
|
-
} from "../domains/shared/stories/pack/index.js";
|
|
10
|
-
import { TOKEN_READ_SURFACE_ENABLED } from "../domains/token/featureFlag.js";
|
|
11
|
-
import { allSpecs } from "../mcp/tools/index.js";
|
|
12
|
-
import createTestRuntime from "../testing/helpers/createTestRuntime.js";
|
|
13
|
-
import collectCommands, { builtInCommands } from "./collectCommands.js";
|
|
14
|
-
|
|
15
|
-
let runtime: PragmaRuntime;
|
|
16
|
-
|
|
17
|
-
beforeAll(async () => {
|
|
18
|
-
runtime = await createTestRuntime();
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
afterAll(() => {
|
|
22
|
-
runtime.dispose();
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
function makeCtx(overrides: Partial<PragmaContext> = {}): PragmaContext {
|
|
26
|
-
return {
|
|
27
|
-
...runtime,
|
|
28
|
-
globalFlags: { llm: false, format: "text" as const, verbose: false },
|
|
29
|
-
...overrides,
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
describe("collectCommands", () => {
|
|
34
|
-
it("includes block, ontology, and graph command paths", () => {
|
|
35
|
-
const commands = collectCommands(makeCtx());
|
|
36
|
-
const paths = commands.map((command) => command.path.join(" "));
|
|
37
|
-
|
|
38
|
-
expect(paths).toContain("block list");
|
|
39
|
-
expect(paths).toContain("block lookup");
|
|
40
|
-
expect(paths).toContain("ontology list");
|
|
41
|
-
expect(paths).toContain("ontology show");
|
|
42
|
-
expect(paths).toContain("graph query");
|
|
43
|
-
expect(paths).toContain("graph inspect");
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
// Golden surface: the full built-in command set, in emission order. The
|
|
47
|
-
// per-(noun, verb) reserved-guard flip must not add, drop, rename, or REORDER
|
|
48
|
-
// a single built-in command — order drives help output and registration.
|
|
49
|
-
// `tier list` and the whole `standard` noun are no longer here: the
|
|
50
|
-
// hand-written domains were deleted and are served by bundled story packs
|
|
51
|
-
// (asserted below).
|
|
52
|
-
it("has a stable built-in command surface", () => {
|
|
53
|
-
const paths = builtInCommands(makeCtx()).map((command) =>
|
|
54
|
-
command.path.join(" "),
|
|
55
|
-
);
|
|
56
|
-
|
|
57
|
-
expect(paths).toEqual([
|
|
58
|
-
"config tier",
|
|
59
|
-
"config channel",
|
|
60
|
-
"config trace",
|
|
61
|
-
"config framework",
|
|
62
|
-
"config show",
|
|
63
|
-
"create component",
|
|
64
|
-
"create package",
|
|
65
|
-
"create application",
|
|
66
|
-
"create domain",
|
|
67
|
-
"create route",
|
|
68
|
-
"create wrapper",
|
|
69
|
-
"setup",
|
|
70
|
-
"setup lsp",
|
|
71
|
-
"setup mcp",
|
|
72
|
-
"setup completions",
|
|
73
|
-
"setup skills",
|
|
74
|
-
"modifier list",
|
|
75
|
-
"modifier lookup",
|
|
76
|
-
"modifier sample",
|
|
77
|
-
...(TOKEN_READ_SURFACE_ENABLED ? ["token list", "token lookup"] : []),
|
|
78
|
-
"tokens add-config",
|
|
79
|
-
...(TOKEN_READ_SURFACE_ENABLED ? ["token sample"] : []),
|
|
80
|
-
"block list",
|
|
81
|
-
"block lookup",
|
|
82
|
-
"block sample",
|
|
83
|
-
"ontology list",
|
|
84
|
-
"ontology show",
|
|
85
|
-
"graph query",
|
|
86
|
-
"graph inspect",
|
|
87
|
-
"graphql build",
|
|
88
|
-
"graphql check",
|
|
89
|
-
"graphql serve",
|
|
90
|
-
"skill list",
|
|
91
|
-
"skill lookup",
|
|
92
|
-
"doctor",
|
|
93
|
-
"info",
|
|
94
|
-
"upgrade",
|
|
95
|
-
"llm",
|
|
96
|
-
"capabilities",
|
|
97
|
-
]);
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
it("serves `tier list` from the bundled pack, not a built-in", () => {
|
|
101
|
-
const builtInPaths = builtInCommands(makeCtx()).map((c) =>
|
|
102
|
-
c.path.join(" "),
|
|
103
|
-
);
|
|
104
|
-
const allPaths = collectCommands(makeCtx()).map((c) => c.path.join(" "));
|
|
105
|
-
|
|
106
|
-
expect(builtInPaths).not.toContain("tier list");
|
|
107
|
-
expect(allPaths).toContain("tier list");
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
it("serves the whole `standard` noun from the bundled pack", () => {
|
|
111
|
-
const builtInPaths = builtInCommands(makeCtx()).map((c) =>
|
|
112
|
-
c.path.join(" "),
|
|
113
|
-
);
|
|
114
|
-
const allPaths = collectCommands(makeCtx()).map((c) => c.path.join(" "));
|
|
115
|
-
|
|
116
|
-
const standardVerbs = [
|
|
117
|
-
"standard list",
|
|
118
|
-
"standard lookup",
|
|
119
|
-
"standard categories",
|
|
120
|
-
"standard sample",
|
|
121
|
-
];
|
|
122
|
-
for (const path of standardVerbs) {
|
|
123
|
-
expect(builtInPaths).not.toContain(path);
|
|
124
|
-
expect(allPaths).toContain(path);
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
});
|
|
128
|
-
|
|
129
|
-
// Cross-surface skew invariant (FIX 2 / R4-F1): the CLI and MCP surfaces both
|
|
130
|
-
// derive their reserved map through the single shared deriveReservedVerbs, so
|
|
131
|
-
// they MUST agree on every leaf read (noun, verb) reservation. If they drifted,
|
|
132
|
-
// a pack migrating a `list`/`lookup` verb could be admitted on one surface and
|
|
133
|
-
// blocked on the other. Operational nouns legitimately differ (graphql/setup/
|
|
134
|
-
// upgrade are CLI-only), so the invariant is scoped to the read verbs that
|
|
135
|
-
// packs actually emit.
|
|
136
|
-
describe("cross-surface reserved-verb parity", () => {
|
|
137
|
-
const READ_VERBS = ["list", "lookup"] as const;
|
|
138
|
-
|
|
139
|
-
it("CLI and MCP reserve the same list/lookup verbs for every leaf read noun", () => {
|
|
140
|
-
// Both surfaces derive reservations from BUILT-INS only (production reserves
|
|
141
|
-
// from built-ins, before appending packs), so a bundled/config/package pack
|
|
142
|
-
// never inflates the reserved map. Using collectCommands here would fold the
|
|
143
|
-
// bundled tier pack into the CLI side and break the symmetry.
|
|
144
|
-
const cliPairs = builtInCommands(makeCtx()).map((command) =>
|
|
145
|
-
nounVerbFromPath(command.path),
|
|
146
|
-
);
|
|
147
|
-
const mcpPairs = allSpecs.map((spec) => nounVerbFromToolName(spec.name));
|
|
148
|
-
|
|
149
|
-
const cliReserved = deriveReservedVerbs(cliPairs);
|
|
150
|
-
const mcpReserved = deriveReservedVerbs(mcpPairs);
|
|
151
|
-
|
|
152
|
-
// FIX 1 on the real CLI surface: operational nouns own no list/lookup, so
|
|
153
|
-
// they are reserved wholesale — a pack emitting `list` stays blocked.
|
|
154
|
-
for (const noun of ["config", "graph", "graphql", "setup", "create"]) {
|
|
155
|
-
expect(isReserved(cliReserved, noun, "list")).toBe(true);
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
// Leaf read nouns: those that own a `list`/`lookup` verb on either surface.
|
|
159
|
-
const readNouns = new Set(
|
|
160
|
-
[...cliPairs, ...mcpPairs]
|
|
161
|
-
.filter(([, verb]) => verb === "list" || verb === "lookup")
|
|
162
|
-
.map(([noun]) => noun),
|
|
163
|
-
);
|
|
164
|
-
|
|
165
|
-
// Sanity: the real leaf-migration targets are present, so this asserts
|
|
166
|
-
// something (a silently empty set would make the test vacuous). `tier`
|
|
167
|
-
// and `standard` are no longer here — both were cut over to bundled
|
|
168
|
-
// packs, so they are correctly absent from the built-in reserved
|
|
169
|
-
// surface on both sides. The token noun only owns read verbs while its
|
|
170
|
-
// feature flag is on.
|
|
171
|
-
const expectedReadNouns = ["block", "modifier"];
|
|
172
|
-
if (TOKEN_READ_SURFACE_ENABLED) expectedReadNouns.push("token");
|
|
173
|
-
for (const noun of expectedReadNouns) {
|
|
174
|
-
expect(readNouns.has(noun)).toBe(true);
|
|
175
|
-
}
|
|
176
|
-
expect(readNouns.has("standard")).toBe(false);
|
|
177
|
-
|
|
178
|
-
for (const noun of readNouns) {
|
|
179
|
-
for (const verb of READ_VERBS) {
|
|
180
|
-
expect(
|
|
181
|
-
isReserved(cliReserved, noun, verb),
|
|
182
|
-
`CLI/MCP disagree on ${noun} ${verb}`,
|
|
183
|
-
).toBe(isReserved(mcpReserved, noun, verb));
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
});
|
|
187
|
-
});
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import type { CommandDefinition } from "@canonical/cli-core";
|
|
2
|
-
import { commands as blockCommands } from "../domains/block/index.js";
|
|
3
|
-
import { commands as configCommands } from "../domains/config/index.js";
|
|
4
|
-
import { commands as createCommands } from "../domains/create/index.js";
|
|
5
|
-
import { doctorCommand } from "../domains/doctor/commands/index.js";
|
|
6
|
-
import { commands as graphCommands } from "../domains/graph/index.js";
|
|
7
|
-
import { commands as graphqlCommands } from "../domains/graphql/index.js";
|
|
8
|
-
import { infoCommand, upgradeCommand } from "../domains/info/index.js";
|
|
9
|
-
import {
|
|
10
|
-
buildCapabilitiesCommand,
|
|
11
|
-
buildLlmCommand,
|
|
12
|
-
} from "../domains/llm/index.js";
|
|
13
|
-
import { commands as modifierCommands } from "../domains/modifier/index.js";
|
|
14
|
-
import { commands as ontologyCommands } from "../domains/ontology/index.js";
|
|
15
|
-
import { commands as setupCommands } from "../domains/setup/index.js";
|
|
16
|
-
import type { PragmaContext } from "../domains/shared/context.js";
|
|
17
|
-
import {
|
|
18
|
-
compilePackCommands,
|
|
19
|
-
deriveReservedVerbs,
|
|
20
|
-
nounVerbFromPath,
|
|
21
|
-
} from "../domains/shared/stories/pack/index.js";
|
|
22
|
-
import { commands as skillCommands } from "../domains/skill/index.js";
|
|
23
|
-
import { commands as tokenCommands } from "../domains/token/index.js";
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* The built-in (hand-written domain) command surface, in emission order.
|
|
27
|
-
*
|
|
28
|
-
* Excludes story-pack commands (bundled, config, or package). Exported so the
|
|
29
|
-
* reserved-verb derivation and its tests share the exact input production uses
|
|
30
|
-
* — the reserved map is built from built-ins only, never from packs.
|
|
31
|
-
*/
|
|
32
|
-
export function builtInCommands(ctx: PragmaContext): CommandDefinition[] {
|
|
33
|
-
return [
|
|
34
|
-
...configCommands(ctx),
|
|
35
|
-
...createCommands(),
|
|
36
|
-
...setupCommands(),
|
|
37
|
-
...modifierCommands(ctx),
|
|
38
|
-
...tokenCommands(ctx),
|
|
39
|
-
...blockCommands(ctx),
|
|
40
|
-
...ontologyCommands(ctx),
|
|
41
|
-
...graphCommands(ctx),
|
|
42
|
-
...graphqlCommands(),
|
|
43
|
-
...skillCommands(ctx),
|
|
44
|
-
doctorCommand,
|
|
45
|
-
infoCommand,
|
|
46
|
-
upgradeCommand,
|
|
47
|
-
buildLlmCommand(ctx),
|
|
48
|
-
buildCapabilitiesCommand(),
|
|
49
|
-
];
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Collect all CLI command definitions: built-in domains plus story packs.
|
|
54
|
-
*
|
|
55
|
-
* Extracted from runCli so the completions server can import the command list
|
|
56
|
-
* independently without running the full CLI pipeline.
|
|
57
|
-
*
|
|
58
|
-
* Story packs (bundled transitional packs, plus config- and package-declared
|
|
59
|
-
* stories) project onto the same surface. Leaf read nouns reserve only the
|
|
60
|
-
* (noun, verb) pairs they own, so a pack can add a verb no built-in owns and,
|
|
61
|
-
* once a built-in leaf is deleted, its bundled pack takes over the freed noun;
|
|
62
|
-
* operational nouns (config, graph, setup, …) stay reserved wholesale.
|
|
63
|
-
*
|
|
64
|
-
* @param ctx - The pragma context providing store, config, and global flags.
|
|
65
|
-
* @returns The full array of command definitions for all domains.
|
|
66
|
-
*/
|
|
67
|
-
export default function collectCommands(
|
|
68
|
-
ctx: PragmaContext,
|
|
69
|
-
): CommandDefinition[] {
|
|
70
|
-
const builtIn = builtInCommands(ctx);
|
|
71
|
-
const reserved = deriveReservedVerbs(
|
|
72
|
-
builtIn.map((command) => nounVerbFromPath(command.path)),
|
|
73
|
-
);
|
|
74
|
-
return [...builtIn, ...compilePackCommands(ctx, reserved)];
|
|
75
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { ErrorCode } from "../error/types.js";
|
|
2
|
-
|
|
3
|
-
/** Map from error codes to numeric process exit codes. */
|
|
4
|
-
const EXIT_CODES: Record<ErrorCode, number> = {
|
|
5
|
-
ENTITY_NOT_FOUND: 1,
|
|
6
|
-
EMPTY_RESULTS: 2,
|
|
7
|
-
INVALID_INPUT: 3,
|
|
8
|
-
AMBIGUOUS_INPUT: 3,
|
|
9
|
-
CONFIG_ERROR: 4,
|
|
10
|
-
STORE_ERROR: 5,
|
|
11
|
-
INTERNAL_ERROR: 127,
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
export { EXIT_CODES };
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
2
|
-
|
|
3
|
-
const runMcpServerMock = vi.fn(async () => undefined);
|
|
4
|
-
|
|
5
|
-
vi.mock("../mcp/runMcpServer.js", () => ({
|
|
6
|
-
default: runMcpServerMock,
|
|
7
|
-
}));
|
|
8
|
-
|
|
9
|
-
describe("createProgram", () => {
|
|
10
|
-
beforeEach(() => {
|
|
11
|
-
vi.clearAllMocks();
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
afterEach(() => {
|
|
15
|
-
process.exitCode = undefined;
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
it("uses plain root help when llm is disabled", async () => {
|
|
19
|
-
const { default: createProgram } = await import("./createProgram.js");
|
|
20
|
-
|
|
21
|
-
const program = createProgram([], {
|
|
22
|
-
cwd: "/tmp/work",
|
|
23
|
-
store: {},
|
|
24
|
-
config: { tier: undefined, channel: "normal" },
|
|
25
|
-
globalFlags: { llm: false, format: "text", verbose: false },
|
|
26
|
-
});
|
|
27
|
-
const write = vi.fn();
|
|
28
|
-
(
|
|
29
|
-
program as {
|
|
30
|
-
_events: {
|
|
31
|
-
beforeAllHelp: (ctx: {
|
|
32
|
-
command: unknown;
|
|
33
|
-
write: (value: string) => void;
|
|
34
|
-
}) => void;
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
)._events.beforeAllHelp({ command: program, write });
|
|
38
|
-
|
|
39
|
-
// Assert on single-chalk-span strings so the check is robust whether or
|
|
40
|
-
// not color is enabled (CI renders with color; ANSI resets would otherwise
|
|
41
|
-
// split a multi-word phrase like "Usage: pragma").
|
|
42
|
-
expect(write).toHaveBeenCalledWith(
|
|
43
|
-
expect.stringContaining("For AI agents"),
|
|
44
|
-
);
|
|
45
|
-
expect(write).toHaveBeenCalledWith(expect.stringContaining("Global flags"));
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
it("uses llm root help when llm is enabled", async () => {
|
|
49
|
-
const { default: createProgram } = await import("./createProgram.js");
|
|
50
|
-
|
|
51
|
-
const program = createProgram([], {
|
|
52
|
-
cwd: "/tmp/work",
|
|
53
|
-
store: {},
|
|
54
|
-
config: { tier: undefined, channel: "normal" },
|
|
55
|
-
globalFlags: { llm: true, format: "text", verbose: false },
|
|
56
|
-
});
|
|
57
|
-
const write = vi.fn();
|
|
58
|
-
(
|
|
59
|
-
program as {
|
|
60
|
-
_events: {
|
|
61
|
-
beforeAllHelp: (ctx: {
|
|
62
|
-
command: unknown;
|
|
63
|
-
write: (value: string) => void;
|
|
64
|
-
}) => void;
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
)._events.beforeAllHelp({ command: program, write });
|
|
68
|
-
|
|
69
|
-
expect(write).toHaveBeenCalledWith(
|
|
70
|
-
expect.stringContaining("# pragma commands"),
|
|
71
|
-
);
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
it("does not inject root help text into subcommand help", async () => {
|
|
75
|
-
const { default: createProgram } = await import("./createProgram.js");
|
|
76
|
-
|
|
77
|
-
const program = createProgram([], {
|
|
78
|
-
cwd: "/tmp/work",
|
|
79
|
-
store: {},
|
|
80
|
-
config: { tier: undefined, channel: "normal" },
|
|
81
|
-
globalFlags: { llm: false, format: "text", verbose: false },
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
const mcpCommand = program.commands.find(
|
|
85
|
-
(command) => command.name() === "mcp",
|
|
86
|
-
);
|
|
87
|
-
expect(mcpCommand).toBeDefined();
|
|
88
|
-
const write = vi.fn();
|
|
89
|
-
(
|
|
90
|
-
program as {
|
|
91
|
-
_events: {
|
|
92
|
-
beforeAllHelp: (ctx: {
|
|
93
|
-
command: unknown;
|
|
94
|
-
write: (value: string) => void;
|
|
95
|
-
}) => void;
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
)._events.beforeAllHelp({ command: mcpCommand, write });
|
|
99
|
-
expect(write).not.toHaveBeenCalled();
|
|
100
|
-
});
|
|
101
|
-
|
|
102
|
-
it("runs the mcp subcommand action", async () => {
|
|
103
|
-
const { default: createProgram } = await import("./createProgram.js");
|
|
104
|
-
|
|
105
|
-
const program = createProgram([], {
|
|
106
|
-
cwd: "/tmp/work",
|
|
107
|
-
store: {},
|
|
108
|
-
config: { tier: undefined, channel: "normal" },
|
|
109
|
-
globalFlags: { llm: false, format: "text", verbose: false },
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
await program.parseAsync(["node", "pragma", "mcp"]);
|
|
113
|
-
|
|
114
|
-
expect(runMcpServerMock).toHaveBeenCalledTimes(1);
|
|
115
|
-
});
|
|
116
|
-
});
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
type CommandDefinition,
|
|
3
|
-
detectRenderMode,
|
|
4
|
-
formatLlmHelp,
|
|
5
|
-
type HandleResultOptions,
|
|
6
|
-
registerAll,
|
|
7
|
-
} from "@canonical/cli-core";
|
|
8
|
-
import { Command } from "commander";
|
|
9
|
-
import { PROGRAM_DESCRIPTION, PROGRAM_NAME, VERSION } from "../constants.js";
|
|
10
|
-
import type { PragmaContext } from "../domains/shared/context.js";
|
|
11
|
-
import formatRootHelp from "./rootHelp.js";
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Build and configure the top-level Commander program.
|
|
15
|
-
*
|
|
16
|
-
* Registers all domain commands, global flags, help formatting,
|
|
17
|
-
* and the `mcp` subcommand. Returns the configured Commander instance
|
|
18
|
-
* ready for `parseAsync`.
|
|
19
|
-
*
|
|
20
|
-
* @param commands - Domain command definitions to register.
|
|
21
|
-
* @param ctx - Shared pragma context (global flags, store, config).
|
|
22
|
-
* @returns Configured Commander program.
|
|
23
|
-
*
|
|
24
|
-
* @note Impure — attaches process.stdout/stderr handlers and lazy-imports the MCP server.
|
|
25
|
-
*/
|
|
26
|
-
export default function createProgram(
|
|
27
|
-
commands: readonly CommandDefinition[],
|
|
28
|
-
ctx: PragmaContext,
|
|
29
|
-
): Command {
|
|
30
|
-
const program = new Command();
|
|
31
|
-
program.name(PROGRAM_NAME);
|
|
32
|
-
program.version(VERSION, "-V, --version");
|
|
33
|
-
program.description(PROGRAM_DESCRIPTION);
|
|
34
|
-
program.exitOverride();
|
|
35
|
-
program.configureOutput({
|
|
36
|
-
writeOut: (str) => process.stdout.write(str),
|
|
37
|
-
writeErr: (str) => process.stderr.write(str),
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
// Global flags (--llm, --format, --verbose) are pre-parsed by
|
|
41
|
-
// parseGlobalFlags() and stripped from argv before Commander sees it.
|
|
42
|
-
// Declaring them here keeps them visible in --help output.
|
|
43
|
-
program.option(
|
|
44
|
-
"--llm",
|
|
45
|
-
"Condensed Markdown output for LLM consumption",
|
|
46
|
-
false,
|
|
47
|
-
);
|
|
48
|
-
program.option("--format <type>", "Output format (text or json)", "text");
|
|
49
|
-
program.option("--verbose", "Diagnostic output to stderr", false);
|
|
50
|
-
// Commander will never see these flags in argv (they're stripped),
|
|
51
|
-
// so enablePositionalOptions() scoping can't reject them.
|
|
52
|
-
|
|
53
|
-
program.addHelpText("beforeAll", (_ctx) => {
|
|
54
|
-
// Only show root-level help when the help is for the root program itself.
|
|
55
|
-
// Subcommand help is handled by registerAll via formatNounHelp/formatVerbHelp.
|
|
56
|
-
if (_ctx.command !== program) return "";
|
|
57
|
-
if (ctx.globalFlags.llm) {
|
|
58
|
-
return formatLlmHelp(PROGRAM_NAME, commands);
|
|
59
|
-
}
|
|
60
|
-
return formatRootHelp(PROGRAM_NAME, PROGRAM_DESCRIPTION, commands);
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
program.helpOption("-h, --help", "Show help");
|
|
64
|
-
program.configureHelp({ formatHelp: () => "" });
|
|
65
|
-
|
|
66
|
-
program
|
|
67
|
-
.command("mcp")
|
|
68
|
-
.description("Start the MCP server over stdio")
|
|
69
|
-
.action(async () => {
|
|
70
|
-
const { default: runMcpServer } = await import("../mcp/runMcpServer.js");
|
|
71
|
-
await runMcpServer();
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
const mode = detectRenderMode(ctx.globalFlags);
|
|
75
|
-
const resultOptions: HandleResultOptions = {
|
|
76
|
-
mode,
|
|
77
|
-
renderInk:
|
|
78
|
-
mode === "ink"
|
|
79
|
-
? async (element: unknown) => {
|
|
80
|
-
const { renderInk } = await import("#tui");
|
|
81
|
-
await renderInk(element as import("react").ReactElement);
|
|
82
|
-
}
|
|
83
|
-
: undefined,
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
registerAll(program, commands, ctx, resultOptions);
|
|
87
|
-
|
|
88
|
-
return program;
|
|
89
|
-
}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { existsSync, mkdtempSync, readFileSync, rmSync } from "node:fs";
|
|
2
|
-
import { tmpdir } from "node:os";
|
|
3
|
-
import { join } from "node:path";
|
|
4
|
-
import { afterEach, beforeEach, describe, expect, it } from "vitest";
|
|
5
|
-
import ensureFirstRun from "./firstRun.js";
|
|
6
|
-
|
|
7
|
-
let xdg: string;
|
|
8
|
-
let savedXdg: string | undefined;
|
|
9
|
-
let lines: string[];
|
|
10
|
-
|
|
11
|
-
const write = (line: string) => {
|
|
12
|
-
lines.push(line);
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
beforeEach(() => {
|
|
16
|
-
savedXdg = process.env.XDG_CONFIG_HOME;
|
|
17
|
-
xdg = mkdtempSync(join(tmpdir(), "pragma-firstrun-"));
|
|
18
|
-
process.env.XDG_CONFIG_HOME = xdg;
|
|
19
|
-
lines = [];
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
afterEach(() => {
|
|
23
|
-
process.env.XDG_CONFIG_HOME = savedXdg;
|
|
24
|
-
rmSync(xdg, { recursive: true, force: true });
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
const configPath = () => join(xdg, "pragma", "config.json");
|
|
28
|
-
|
|
29
|
-
describe("ensureFirstRun", () => {
|
|
30
|
-
it("creates the global config with defaults and greets on first run", async () => {
|
|
31
|
-
await ensureFirstRun(write);
|
|
32
|
-
|
|
33
|
-
expect(existsSync(configPath())).toBe(true);
|
|
34
|
-
expect(JSON.parse(readFileSync(configPath(), "utf-8"))).toEqual({});
|
|
35
|
-
|
|
36
|
-
const text = lines.join("\n");
|
|
37
|
-
expect(text).toContain("pre-release pragma CLI");
|
|
38
|
-
expect(text).toContain("github.com/canonical/pragma");
|
|
39
|
-
expect(text).toContain(configPath());
|
|
40
|
-
expect(text).toContain("pragma.config.json");
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
it("is silent and leaves the config untouched on subsequent runs", async () => {
|
|
44
|
-
await ensureFirstRun(write);
|
|
45
|
-
lines = [];
|
|
46
|
-
|
|
47
|
-
await ensureFirstRun(write);
|
|
48
|
-
|
|
49
|
-
expect(lines).toEqual([]);
|
|
50
|
-
expect(readFileSync(configPath(), "utf-8")).toBe("{}\n");
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
it("never overwrites an existing config", async () => {
|
|
54
|
-
await ensureFirstRun(write);
|
|
55
|
-
const custom = '{ "channel": "experimental" }\n';
|
|
56
|
-
const { writeFileSync } = await import("node:fs");
|
|
57
|
-
writeFileSync(configPath(), custom);
|
|
58
|
-
lines = [];
|
|
59
|
-
|
|
60
|
-
await ensureFirstRun(write);
|
|
61
|
-
|
|
62
|
-
expect(readFileSync(configPath(), "utf-8")).toBe(custom);
|
|
63
|
-
expect(lines).toEqual([]);
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
it("degrades to a warning instead of throwing when the config cannot be created", async () => {
|
|
67
|
-
// Point XDG at a path whose parent is a FILE, so mkdir must fail.
|
|
68
|
-
const blocker = join(xdg, "blocker");
|
|
69
|
-
const { writeFileSync } = await import("node:fs");
|
|
70
|
-
writeFileSync(blocker, "not a directory");
|
|
71
|
-
process.env.XDG_CONFIG_HOME = join(blocker, "nested");
|
|
72
|
-
|
|
73
|
-
await expect(ensureFirstRun(write)).resolves.toBeUndefined();
|
|
74
|
-
// Exactly one warning line and no welcome banner: creation is attempted
|
|
75
|
-
// before the greeting, so a failure degrades to a single stderr warning.
|
|
76
|
-
expect(lines).toHaveLength(1);
|
|
77
|
-
expect(lines[0]).toContain("could not create the global pragma config");
|
|
78
|
-
expect(lines.join("\n")).not.toContain("pre-release pragma CLI");
|
|
79
|
-
});
|
|
80
|
-
});
|
package/src/pipeline/firstRun.ts
DELETED
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* First-run onboarding — welcome note + global config creation.
|
|
3
|
-
*
|
|
4
|
-
* On the first invocation of pragma (detected by the absence of the global
|
|
5
|
-
* config file), print a short welcome to stderr and create
|
|
6
|
-
* `$XDG_CONFIG_HOME/pragma/config.json` with defaults. Modeled as a
|
|
7
|
-
* {@link Task} so the effects (exists/mkdir/write/log) stay declarative and
|
|
8
|
-
* testable, mirroring the config domain's write tasks.
|
|
9
|
-
*
|
|
10
|
-
* The banner goes to STDERR: stdout belongs to command output (`--format
|
|
11
|
-
* json` consumers, MCP stdio), and the note must never corrupt it.
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
import { dirname } from "node:path";
|
|
15
|
-
import {
|
|
16
|
-
$,
|
|
17
|
-
exists,
|
|
18
|
-
gen,
|
|
19
|
-
info,
|
|
20
|
-
mkdir,
|
|
21
|
-
type Task,
|
|
22
|
-
writeFile,
|
|
23
|
-
} from "@canonical/task";
|
|
24
|
-
import { runTask } from "@canonical/task/node";
|
|
25
|
-
import { resolveGlobalConfigPath } from "../config/index.js";
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Seed content for a fresh global config: an empty object, so every field
|
|
29
|
-
* keeps its built-in default and `config show` reports honest provenance
|
|
30
|
-
* (nothing is pinned that the user did not choose).
|
|
31
|
-
*/
|
|
32
|
-
const SEED_CONFIG = "{}\n";
|
|
33
|
-
|
|
34
|
-
/** Build the welcome note. The resolved path is shown so it is copyable. */
|
|
35
|
-
function welcomeLines(path: string): string[] {
|
|
36
|
-
return [
|
|
37
|
-
"Hello! Thanks for taking the time to try the pre-release pragma CLI.",
|
|
38
|
-
"Please file issues, suggestions, and feedback at https://github.com/canonical/pragma/issues.",
|
|
39
|
-
`Pragma stores its configuration in ${path} (just created with defaults).`,
|
|
40
|
-
"A `pragma.config.json` in the current directory or any directory above it overrides it per project.",
|
|
41
|
-
"",
|
|
42
|
-
];
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* The first-run task: create the global config, announcing it on first run.
|
|
47
|
-
*
|
|
48
|
-
* @returns Task yielding whether the config was created and its path.
|
|
49
|
-
* @note Impure — checks/creates the global config file, emits log effects.
|
|
50
|
-
*/
|
|
51
|
-
export function firstRunTask(): Task<{ created: boolean; path: string }> {
|
|
52
|
-
return gen(function* () {
|
|
53
|
-
const path = resolveGlobalConfigPath();
|
|
54
|
-
|
|
55
|
-
if (yield* $(exists(path))) {
|
|
56
|
-
return { created: false, path };
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// Create the config first, then greet: if creation fails the effects throw
|
|
60
|
-
// before any line is emitted, so onboarding degrades to the single stderr
|
|
61
|
-
// warning ensureFirstRun writes — never a "just created" banner alongside a
|
|
62
|
-
// failure. `mkdir` is recursive (its default), so a missing XDG parent is
|
|
63
|
-
// created rather than being treated as an error.
|
|
64
|
-
yield* $(mkdir(dirname(path), true));
|
|
65
|
-
yield* $(writeFile(path, SEED_CONFIG));
|
|
66
|
-
|
|
67
|
-
for (const line of welcomeLines(path)) {
|
|
68
|
-
yield* $(info(line));
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
return { created: true, path };
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Run the first-run task, tolerating every failure.
|
|
77
|
-
*
|
|
78
|
-
* Onboarding must never break the CLI: a read-only home, a weird XDG path,
|
|
79
|
-
* or a race with a concurrent first run degrade to a single stderr warning
|
|
80
|
-
* and the invocation proceeds normally (the config layers treat a missing
|
|
81
|
-
* global file as defaults anyway).
|
|
82
|
-
*
|
|
83
|
-
* @param write - Stderr sink, injectable for tests.
|
|
84
|
-
* @note Impure — filesystem effects + stderr.
|
|
85
|
-
*/
|
|
86
|
-
export default async function ensureFirstRun(
|
|
87
|
-
write: (line: string) => void = (line) => process.stderr.write(`${line}\n`),
|
|
88
|
-
): Promise<void> {
|
|
89
|
-
try {
|
|
90
|
-
await runTask(firstRunTask(), {
|
|
91
|
-
// Route log effects to stderr without the interpreter's [INFO] prefix —
|
|
92
|
-
// this is a greeting, not diagnostics.
|
|
93
|
-
onLog: (_level, message) => write(message),
|
|
94
|
-
});
|
|
95
|
-
} catch (error) {
|
|
96
|
-
const reason = error instanceof Error ? error.message : String(error);
|
|
97
|
-
write(`Warning: could not create the global pragma config — ${reason}`);
|
|
98
|
-
}
|
|
99
|
-
}
|