@canonical/pragma-cli 0.31.0 → 0.33.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 +35 -421
- package/dist/pragma +0 -0
- package/package.json +28 -42
- package/src/bin.ts +292 -11
- package/src/capabilities/block/blockList.test.ts +79 -0
- package/src/capabilities/block/blockList.verb.ts +163 -0
- package/src/capabilities/block/index.ts +25 -0
- package/src/capabilities/block/pack.ts +166 -0
- package/src/capabilities/block/parity.test.ts +187 -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 +140 -0
- package/src/capabilities/capabilities/capabilities.verb.ts +48 -0
- package/src/capabilities/capabilities/catalog.ts +148 -0
- package/src/capabilities/capabilities/hints.ts +212 -0
- package/src/capabilities/capabilities/index.ts +13 -0
- package/src/capabilities/capabilities/types.ts +60 -0
- package/src/capabilities/colophon/collectColophon.ts +68 -0
- package/src/capabilities/colophon/colophon.render.test.ts +114 -0
- package/src/capabilities/colophon/colophon.render.ts +47 -0
- package/src/capabilities/colophon/colophon.test.ts +241 -0
- package/src/capabilities/colophon/colophon.verb.ts +44 -0
- package/src/capabilities/colophon/index.ts +6 -0
- package/src/capabilities/colophon/markdownTerminal.test.ts +50 -0
- package/src/capabilities/colophon/markdownTerminal.ts +104 -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/fields.ts +81 -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.test.ts +65 -0
- package/src/capabilities/config/show.render.ts +107 -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 +225 -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 +432 -0
- package/src/capabilities/create/create.verb.ts +493 -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 +114 -0
- package/src/capabilities/doctor/checks/checkMcpConfigured.ts +67 -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/checks/deriveBand.test.ts +42 -0
- package/src/capabilities/doctor/checks/deriveBand.ts +28 -0
- package/src/capabilities/doctor/doctor.render.test.ts +170 -0
- package/src/capabilities/doctor/doctor.render.ts +198 -0
- package/src/capabilities/doctor/doctor.test.ts +209 -0
- package/src/capabilities/doctor/doctor.verb.ts +46 -0
- package/src/capabilities/doctor/index.ts +6 -0
- package/src/capabilities/doctor/runChecks.ts +100 -0
- package/src/capabilities/doctor/types.ts +56 -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 +19 -0
- package/src/capabilities/ontology/ontology.test.ts +246 -0
- package/src/capabilities/ontology/queries.ts +197 -0
- package/src/capabilities/ontology/render.ts +87 -0
- package/src/capabilities/ontology/verbs.ts +269 -0
- package/src/capabilities/prompt/index.ts +18 -0
- package/src/capabilities/prompt/prompt.render.test.ts +94 -0
- package/src/capabilities/prompt/prompt.render.ts +87 -0
- package/src/capabilities/prompt/prompt.test.ts +180 -0
- package/src/capabilities/prompt/types.ts +30 -0
- package/src/capabilities/prompt/verbs.ts +93 -0
- package/src/capabilities/reference.test.ts +32 -0
- package/src/capabilities/resources/index.ts +15 -0
- package/src/capabilities/resources/provider.ts +245 -0
- package/src/capabilities/resources/resources.test.ts +213 -0
- package/src/capabilities/roundtrip.test.ts +107 -0
- package/src/capabilities/scopeTypeSync.test.ts +37 -0
- package/src/capabilities/setup/index.ts +12 -0
- package/src/capabilities/setup/operations/setupCompletions.ts +141 -0
- package/src/capabilities/setup/operations/setupGenerator.ts +403 -0
- package/src/capabilities/setup/operations/setupLsp.ts +105 -0
- package/src/capabilities/setup/operations/setupMcp.ts +262 -0
- package/src/capabilities/setup/operations/setupSkills.ts +205 -0
- package/src/capabilities/setup/setup.render.test.ts +109 -0
- package/src/capabilities/setup/setup.render.ts +96 -0
- package/src/capabilities/setup/setup.test.ts +702 -0
- package/src/capabilities/setup/setup.verb.ts +261 -0
- package/src/capabilities/setup/shell.ts +85 -0
- package/src/capabilities/setup/types.ts +99 -0
- package/src/capabilities/shared/assertExecOk.ts +106 -0
- package/src/capabilities/shared/bands.ts +16 -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 +102 -0
- package/src/capabilities/sources/index.ts +15 -0
- package/src/capabilities/sources/installSkills.ts +124 -0
- package/src/capabilities/sources/runUpdate.ts +464 -0
- package/src/capabilities/sources/sources.test.ts +828 -0
- package/src/capabilities/sources/status.render.test.ts +65 -0
- package/src/capabilities/sources/status.render.ts +83 -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 +233 -0
- package/src/capabilities/tier/index.ts +19 -0
- package/src/capabilities/tier/lookup.render.test.ts +72 -0
- package/src/capabilities/tier/lookup.render.ts +59 -0
- package/src/capabilities/tier/lookup.test.ts +83 -0
- package/src/capabilities/tier/lookup.verb.ts +44 -0
- package/src/capabilities/tier/pack.ts +28 -0
- package/src/capabilities/tier/runLookup.ts +87 -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 +339 -0
- package/src/kernel/completion/bashDrive.test.ts +73 -0
- package/src/kernel/completion/complete.test.ts +99 -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 +277 -0
- package/src/kernel/completion/index.ts +42 -0
- package/src/kernel/completion/model.test.ts +405 -0
- package/src/kernel/completion/model.ts +258 -0
- package/src/kernel/completion/parse.test.ts +336 -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 +431 -0
- package/src/kernel/project/cli/buildProgram.ts +291 -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 +107 -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 +220 -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/mcpError.ts +52 -0
- package/src/kernel/project/mcp/parity.test.ts +72 -0
- package/src/kernel/project/mcp/prompts/prompts.test.ts +104 -0
- package/src/kernel/project/mcp/prompts/provider.ts +104 -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 +31 -0
- package/src/kernel/render/index.ts +30 -0
- package/src/kernel/render/prefixes.ts +21 -0
- package/src/kernel/render/renderers.test.ts +205 -0
- package/src/kernel/render/renderers.ts +447 -0
- package/src/kernel/render/style.test.ts +31 -0
- package/src/kernel/render/style.ts +74 -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 +176 -0
- package/src/kernel/runtime/graphpack/buildIndex.test.ts +103 -0
- package/src/kernel/runtime/graphpack/buildIndex.ts +317 -0
- package/src/kernel/runtime/graphpack/embedded/pack.generated.ts +5 -0
- package/src/kernel/runtime/graphpack/embedded/pack.index.generated.ts +3 -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 +221 -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 +117 -0
- package/src/kernel/runtime/graphpack/types.ts +125 -0
- package/src/kernel/runtime/index.ts +15 -0
- package/src/kernel/runtime/loadSession.ts +48 -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 +380 -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/storeReadiness.ts +61 -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 +144 -0
- package/src/kernel/spec/asVerb.ts +23 -0
- package/src/kernel/spec/emitReference.test.ts +196 -0
- package/src/kernel/spec/emitReference.ts +491 -0
- package/src/kernel/spec/emitSurface.test.ts +65 -0
- package/src/kernel/spec/emitSurface.ts +225 -0
- package/src/kernel/spec/index.ts +36 -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 +54 -0
- package/src/testing/behavioral/completion.test.ts +132 -0
- package/src/testing/behavioral/disclosure.test.ts +115 -0
- package/src/testing/behavioral/docExamples.test.ts +283 -0
- package/src/testing/behavioral/errorMatrix.mcp.test.ts +120 -0
- package/src/testing/behavioral/errorMatrix.storeless.test.ts +124 -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 +131 -0
- package/src/testing/behavioral/journeys.defaultPack.test.ts +571 -0
- package/src/testing/behavioral/journeys.interactiveTty.e2e.test.ts +66 -0
- package/src/testing/behavioral/journeys.livePack.e2e.test.ts +129 -0
- package/src/testing/behavioral/journeys.mcpLifecycle.mcp.test.ts +176 -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/behavioral/staleCommands.test.ts +76 -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 +248 -0
- package/src/testing/eval/cases/readNouns.ts +235 -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 +331 -0
- package/src/testing/fixtures/graph/canonical.ts +184 -0
- package/src/testing/fixtures/graph/defaultPack.ts +178 -0
- package/src/testing/fixtures/graph/owlExport.ts +95 -0
- package/src/testing/fixtures/packs/recipe.ts +78 -0
- package/src/testing/helpers/extractSnippets.ts +29 -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/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
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime context shapes threaded through the kernel.
|
|
3
|
+
*
|
|
4
|
+
* The grammar (`VerbSpec.run`) receives a {@link PragmaRuntime}; the CLI and
|
|
5
|
+
* MCP projectors build one per invocation. The interface grows one field-group
|
|
6
|
+
* per PR as each layer lands — global flags with the CLI projector, resolved
|
|
7
|
+
* config + provenance with the config layer — so a verb only ever sees fields
|
|
8
|
+
* that are actually populated by the time it runs.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import type { DetailLevel, OutputFormat } from "../../constants.js";
|
|
12
|
+
import type { ConfigLayers } from "../config/types.js";
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Global flags parsed once, before the command tree runs, and shared by every
|
|
16
|
+
* verb. The renderer reads these to pick a formatter; auto-LLM is recorded
|
|
17
|
+
* separately so inferred mode can shape output without switching behaviour.
|
|
18
|
+
*/
|
|
19
|
+
export interface GlobalFlags {
|
|
20
|
+
/** Condensed Markdown output, from `--format llm` or auto-detection. */
|
|
21
|
+
readonly llm: boolean;
|
|
22
|
+
/** True when `llm` was inferred from a non-interactive stdout, not requested. */
|
|
23
|
+
readonly autoLlm?: boolean;
|
|
24
|
+
/** Selected output format; `--format text` is normalised to `plain`. */
|
|
25
|
+
readonly format: OutputFormat;
|
|
26
|
+
/** Diagnostic output to stderr. */
|
|
27
|
+
readonly verbose: boolean;
|
|
28
|
+
/** Explicit progressive-disclosure level from `--detail`, if any. */
|
|
29
|
+
readonly detail?: DetailLevel;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* A booted store session: the immutable bundle a pack read produces. ke/graphql
|
|
34
|
+
* types are referenced inline so this module carries no static import of the
|
|
35
|
+
* heavy runtime — the store code stays dynamic-import-only.
|
|
36
|
+
*/
|
|
37
|
+
export interface StoreSession {
|
|
38
|
+
/** The ke triple store (booted from the pack's n-quads cache). */
|
|
39
|
+
readonly store: import("@canonical/ke").Store;
|
|
40
|
+
/** The executable GraphQL schema (rebuilt from the extraction artifact). */
|
|
41
|
+
readonly schema: import("graphql").GraphQLSchema;
|
|
42
|
+
/** Create a fresh execution context bound to a store (accepts a Promise). */
|
|
43
|
+
readonly createContext: (
|
|
44
|
+
store:
|
|
45
|
+
| import("@canonical/ke").Store
|
|
46
|
+
| Promise<import("@canonical/ke").Store>,
|
|
47
|
+
) => import("@canonical/ke-graphql").CompilerContext;
|
|
48
|
+
/** The prefixes the store (and every query) was built with. */
|
|
49
|
+
readonly prefixes: Readonly<Record<string, string>>;
|
|
50
|
+
/** The storeless entity index shipped with the pack. */
|
|
51
|
+
readonly index: import("./graphpack/types.js").PackIndex;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* The lazy store handle. `get()` memoizes a successful {@link StoreSession}
|
|
56
|
+
* boot (a rejected boot is not memoized — a cold store throws STORE_UNAVAILABLE
|
|
57
|
+
* and a later `get()` retries); `booted` reports whether the store has actually
|
|
58
|
+
* been constructed (the storeless-guarantee spy target); `invalidate()` drops
|
|
59
|
+
* the memoized session (and the config memo it depends on) so the next `get()`
|
|
60
|
+
* re-boots — the long-lived MCP server calls it after every real mutation.
|
|
61
|
+
*/
|
|
62
|
+
export interface LazyStore {
|
|
63
|
+
/** Boot (once) and return the store session; throws STORE_UNAVAILABLE cold. */
|
|
64
|
+
get(): Promise<StoreSession>;
|
|
65
|
+
/** Whether the store has been constructed yet (spy target). */
|
|
66
|
+
readonly booted: boolean;
|
|
67
|
+
/** Drop the memoized session so the next `get()` re-boots against disk. */
|
|
68
|
+
invalidate(): void;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* The query facade: `graphql` is the default typed spine (executed against the
|
|
73
|
+
* pack's precompiled schema); `sparql` is the raw, auto-prefixed escape hatch.
|
|
74
|
+
* Both boot the store lazily on first use.
|
|
75
|
+
*/
|
|
76
|
+
export interface QueryFacade {
|
|
77
|
+
/** Execute a GraphQL document against the pack's precompiled schema. */
|
|
78
|
+
graphql(
|
|
79
|
+
document: string,
|
|
80
|
+
variables?: Record<string, unknown> | null,
|
|
81
|
+
): Promise<import("graphql").ExecutionResult>;
|
|
82
|
+
/** Execute a raw SPARQL query against the store (prefixes auto-applied). */
|
|
83
|
+
sparql(text: string): Promise<import("@canonical/ke").QueryResult>;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Mutation-invocation context — present only for a mutating verb, set by the
|
|
88
|
+
* CLI/MCP projector just before `run`. `preview` is true for a plan-only
|
|
89
|
+
* invocation (`--dry-run` on the CLI, or an MCP tool call without `confirm`): a
|
|
90
|
+
* mutating verb reads it to describe its intended effects WITHOUT performing
|
|
91
|
+
* network or heavy setup, so a preview stays side-effect-free. Real execution
|
|
92
|
+
* leaves it false. This is the generic seam every mutation verb copies.
|
|
93
|
+
*/
|
|
94
|
+
export interface MutationRuntime {
|
|
95
|
+
/** True for a plan-only preview; false for a real execution. */
|
|
96
|
+
readonly preview: boolean;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* How this invocation reaches the user — populated by the projector for a
|
|
101
|
+
* mutating verb. An interactive verb reads it to pick its prompt strategy: an
|
|
102
|
+
* attended CLI without `--yes` gets a wizard; a non-interactive CLI (or `--yes`)
|
|
103
|
+
* gets flags+defaults; MCP gets params-or-error. `signal` aborts a run.
|
|
104
|
+
*
|
|
105
|
+
* NOTE (PR6): interactive setup mutations reuse this exact shape.
|
|
106
|
+
*/
|
|
107
|
+
export interface InteractionRuntime {
|
|
108
|
+
/**
|
|
109
|
+
* Both stdin and STDERR are a TTY (CLI); always false over MCP. Gated on
|
|
110
|
+
* stderr — not stdout — because the interactive Ink wizard renders to stderr
|
|
111
|
+
* and reads stdin, so `pragma <verb> 2>/dev/null` (stderr redirected) must
|
|
112
|
+
* fall to the non-interactive path rather than mounting an invisible render
|
|
113
|
+
* that blocks on stdin.
|
|
114
|
+
*/
|
|
115
|
+
readonly isTTY: boolean;
|
|
116
|
+
/** Which projector is driving this run. */
|
|
117
|
+
readonly transport: "cli" | "mcp";
|
|
118
|
+
/** The user asked to skip an interactive confirmation (`--yes` / MCP confirm). */
|
|
119
|
+
readonly yes: boolean;
|
|
120
|
+
/** Abort signal for the run, if the projector wired one. */
|
|
121
|
+
readonly signal?: AbortSignal;
|
|
122
|
+
/**
|
|
123
|
+
* Abort the run (internal seam field, NOT covenant surface). An interactive
|
|
124
|
+
* verb threads this into its wizard so an in-Ink Ctrl-C — which Ink's raw
|
|
125
|
+
* mode swallows before it can become a SIGINT — aborts the run's
|
|
126
|
+
* `AbortController`, firing the interpreter's `checkInterrupted` between
|
|
127
|
+
* effects. The projector wires it alongside `signal`.
|
|
128
|
+
*/
|
|
129
|
+
readonly abort?: () => void;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* The opaque runner options a mutating verb's `run` assembles and the projector
|
|
134
|
+
* spreads into the node interpreter on the REAL-run branch only (never on
|
|
135
|
+
* dry-run/undo, which stay handler-free and mock prompts). It carries the
|
|
136
|
+
* interactivity + progress seam: the prompt handler, the stamping/progress
|
|
137
|
+
* effect callbacks, log routing, and an optional teardown the projector runs in
|
|
138
|
+
* a `finally` (e.g. to dispose an Ink render).
|
|
139
|
+
*
|
|
140
|
+
* The task-effect types are referenced inline so this module carries no static
|
|
141
|
+
* import of the node interpreter — the runtime stays cheap to construct.
|
|
142
|
+
*/
|
|
143
|
+
export interface RunnerOptions {
|
|
144
|
+
/** Resolve each interactive `Prompt` effect (the injected UI strategy). */
|
|
145
|
+
promptHandler?: (
|
|
146
|
+
effect: import("@canonical/task").Effect & { _tag: "Prompt" },
|
|
147
|
+
) => Promise<unknown>;
|
|
148
|
+
/** Called before each effect — the stamping + progress seam. */
|
|
149
|
+
onEffectStart?: (effect: import("@canonical/task").Effect) => void;
|
|
150
|
+
/** Called after each effect completes (with its duration). */
|
|
151
|
+
onEffectComplete?: (
|
|
152
|
+
effect: import("@canonical/task").Effect,
|
|
153
|
+
duration: number,
|
|
154
|
+
) => void;
|
|
155
|
+
/** Route task log output. */
|
|
156
|
+
onLog?: (level: "debug" | "info" | "warn" | "error", message: string) => void;
|
|
157
|
+
/**
|
|
158
|
+
* The per-call write root: relative fs-effect paths resolve against it in the
|
|
159
|
+
* node interpreter (`RunTaskOptions.cwd`), and it is the SAME `rt.cwd` the
|
|
160
|
+
* SEC-2 path jail validates — so a mutating verb's output can never land
|
|
161
|
+
* outside the directory the jail checked (no jail bypass). Absolute effect
|
|
162
|
+
* paths are unchanged; omitting it falls back to `process.cwd()`. Honest as of
|
|
163
|
+
* PR7 (the node interpreter now honours `RunTaskOptions.cwd`).
|
|
164
|
+
*/
|
|
165
|
+
cwd?: string;
|
|
166
|
+
/** Abort signal, forwarded to the interpreter. */
|
|
167
|
+
signal?: AbortSignal;
|
|
168
|
+
/** Teardown run by the projector after the task settles (e.g. unmount Ink). */
|
|
169
|
+
dispose?: () => void | Promise<void>;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Per-invocation runtime handed to every verb `run`. Storeless verbs use only
|
|
174
|
+
* `cwd`/`version`/`globalFlags`/`loadConfig`; store-backed verbs reach the graph
|
|
175
|
+
* through `store`/`query`. The dispatcher boots the store only for
|
|
176
|
+
* `capability.needsStore` verbs, so a storeless verb never constructs it.
|
|
177
|
+
*/
|
|
178
|
+
export interface PragmaRuntime {
|
|
179
|
+
/** Directory the invocation resolves project state (config) against. */
|
|
180
|
+
readonly cwd: string;
|
|
181
|
+
/** CLI version string, surfaced by `info`. */
|
|
182
|
+
readonly version: string;
|
|
183
|
+
/** Global flags for this invocation. */
|
|
184
|
+
readonly globalFlags: GlobalFlags;
|
|
185
|
+
/** Memoized layered-config loader (resolved once per invocation). */
|
|
186
|
+
readonly loadConfig: () => Promise<ConfigLayers>;
|
|
187
|
+
/** The lazy store — booted only for `needsStore` verbs. */
|
|
188
|
+
readonly store: LazyStore;
|
|
189
|
+
/** The query facade over the lazy store. */
|
|
190
|
+
readonly query: QueryFacade;
|
|
191
|
+
/** Mutation context, set by the projector for a mutating verb (else absent). */
|
|
192
|
+
readonly mutation?: MutationRuntime;
|
|
193
|
+
/** How this run reaches the user, set by the projector for a mutating verb. */
|
|
194
|
+
readonly interaction?: InteractionRuntime;
|
|
195
|
+
/**
|
|
196
|
+
* Progress seam for a long mutating verb. Set by the projector (the CLI writes
|
|
197
|
+
* each message to stderr) so a verb can STREAM stage lines while it does heavy
|
|
198
|
+
* EAGER work — the resolve/parse/build that runs before its Task is even
|
|
199
|
+
* returned, which the Task interpreter's `onLog` therefore never sees. A verb
|
|
200
|
+
* emits through `runtime.report?.(…)`; unset (e.g. over MCP) makes it a no-op.
|
|
201
|
+
* Diagnostic-only: progress goes to stderr, never the stdout data stream.
|
|
202
|
+
*/
|
|
203
|
+
readonly report?: (message: string) => void;
|
|
204
|
+
/**
|
|
205
|
+
* The runner options a mutating verb's `run` assembles for its real
|
|
206
|
+
* execution. NOT readonly: the verb writes it as its last act before
|
|
207
|
+
* returning the Task, and the projector reads it back on the real-run branch.
|
|
208
|
+
*/
|
|
209
|
+
exec?: RunnerOptions;
|
|
210
|
+
}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { spawnSync } from "node:child_process";
|
|
2
|
+
import {
|
|
3
|
+
existsSync,
|
|
4
|
+
mkdirSync,
|
|
5
|
+
mkdtempSync,
|
|
6
|
+
rmSync,
|
|
7
|
+
writeFileSync,
|
|
8
|
+
} from "node:fs";
|
|
9
|
+
import { tmpdir } from "node:os";
|
|
10
|
+
import { join } from "node:path";
|
|
11
|
+
import { fileURLToPath } from "node:url";
|
|
12
|
+
import { afterAll, beforeAll, describe, expect, it } from "vitest";
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* The store-boot path only fully lives in the standalone binary: this is the
|
|
16
|
+
* one thing vitest's in-process suite cannot catch — whether oxigraph's WASM
|
|
17
|
+
* and the embedded pack survive `bun build --compile`. So compile a fresh
|
|
18
|
+
* binary from the current source and spawn it. If the WASM did not embed, the
|
|
19
|
+
* probe crashes and this fails loudly (rather than the compiled CLI silently
|
|
20
|
+
* failing every store-backed command in production).
|
|
21
|
+
*/
|
|
22
|
+
const packageRoot = fileURLToPath(new URL("../../../", import.meta.url));
|
|
23
|
+
|
|
24
|
+
let workdir: string;
|
|
25
|
+
let binary: string;
|
|
26
|
+
|
|
27
|
+
beforeAll(() => {
|
|
28
|
+
workdir = mkdtempSync(join(tmpdir(), "pragma-wasm-smoke-"));
|
|
29
|
+
binary = join(workdir, "pragma-smoke");
|
|
30
|
+
const build = spawnSync(
|
|
31
|
+
"bun",
|
|
32
|
+
[
|
|
33
|
+
"build",
|
|
34
|
+
"--compile",
|
|
35
|
+
"--target=bun-linux-x64",
|
|
36
|
+
"src/bin.ts",
|
|
37
|
+
"--outfile",
|
|
38
|
+
binary,
|
|
39
|
+
],
|
|
40
|
+
{ cwd: packageRoot, stdio: "pipe", encoding: "utf-8" },
|
|
41
|
+
);
|
|
42
|
+
if (build.status !== 0) {
|
|
43
|
+
throw new Error(`smoke build failed:\n${build.stderr}`);
|
|
44
|
+
}
|
|
45
|
+
}, 120_000);
|
|
46
|
+
|
|
47
|
+
afterAll(() => {
|
|
48
|
+
rmSync(workdir, { recursive: true, force: true });
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
/** Run the compiled binary in a scratch cwd with isolated XDG dirs (no local
|
|
52
|
+
* node_modules, no real cache) — proves the binary is self-contained. */
|
|
53
|
+
const runBinary = (args: string[]) =>
|
|
54
|
+
spawnSync(binary, args, {
|
|
55
|
+
cwd: workdir,
|
|
56
|
+
stdio: "pipe",
|
|
57
|
+
encoding: "utf-8",
|
|
58
|
+
env: {
|
|
59
|
+
...process.env,
|
|
60
|
+
HOME: workdir,
|
|
61
|
+
XDG_CACHE_HOME: join(workdir, "cache"),
|
|
62
|
+
XDG_STATE_HOME: join(workdir, "state"),
|
|
63
|
+
XDG_CONFIG_HOME: join(workdir, "config"),
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
describe("oxigraph WASM + embedded pack embed in the compiled binary (PROTECTED)", () => {
|
|
68
|
+
it("dist binary boots the embedded store via __store-probe (needsStore path)", () => {
|
|
69
|
+
const run = runBinary(["__store-probe"]);
|
|
70
|
+
expect(run.status, run.stderr).toBe(0);
|
|
71
|
+
const out = JSON.parse(run.stdout.trim()) as {
|
|
72
|
+
ok: boolean;
|
|
73
|
+
entities: number;
|
|
74
|
+
triples: string;
|
|
75
|
+
};
|
|
76
|
+
expect(out.ok).toBe(true);
|
|
77
|
+
expect(out.entities).toBe(6);
|
|
78
|
+
expect(Number(out.triples)).toBeGreaterThan(0);
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
it("dist binary runs storeless sources status", () => {
|
|
82
|
+
const run = runBinary(["sources", "status", "--format", "json"]);
|
|
83
|
+
expect(run.status, run.stderr).toBe(0);
|
|
84
|
+
const envelope = JSON.parse(run.stdout.trim()) as {
|
|
85
|
+
ok: boolean;
|
|
86
|
+
data: { lockPresent: boolean; cached: boolean };
|
|
87
|
+
};
|
|
88
|
+
expect(envelope.ok).toBe(true);
|
|
89
|
+
// A fresh install: no lock, store not yet built.
|
|
90
|
+
expect(envelope.data.lockPresent).toBe(false);
|
|
91
|
+
expect(envelope.data.cached).toBe(false);
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
// Regression guard: `sources update` walks a package's TTL directories. The
|
|
95
|
+
// compiled binary's node:fs globSync mishandles `**` (returns bogus paths),
|
|
96
|
+
// which the in-process suite could not catch — so exercise the real binary.
|
|
97
|
+
it("dist binary runs sources update end-to-end (build + lock + status)", () => {
|
|
98
|
+
const pkg = join(workdir, "pkg");
|
|
99
|
+
const proj = join(workdir, "proj");
|
|
100
|
+
mkdirSync(join(pkg, "definitions"), { recursive: true });
|
|
101
|
+
mkdirSync(proj, { recursive: true });
|
|
102
|
+
writeFileSync(
|
|
103
|
+
join(pkg, "definitions", "w.ttl"),
|
|
104
|
+
`@prefix ex: <https://ex.test/#> .
|
|
105
|
+
@prefix owl: <http://www.w3.org/2002/07/owl#> .
|
|
106
|
+
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
|
|
107
|
+
ex:Widget a owl:Class ; rdfs:label "Widget" .
|
|
108
|
+
ex:one a ex:Widget ; rdfs:label "One" .
|
|
109
|
+
`,
|
|
110
|
+
);
|
|
111
|
+
writeFileSync(
|
|
112
|
+
join(proj, "pragma.config.ts"),
|
|
113
|
+
`export default { packages: [{ name: "pkg-a", source: "file://${pkg}" }] };\n`,
|
|
114
|
+
);
|
|
115
|
+
|
|
116
|
+
const env = {
|
|
117
|
+
HOME: workdir,
|
|
118
|
+
XDG_CACHE_HOME: join(workdir, "cache"),
|
|
119
|
+
XDG_STATE_HOME: join(workdir, "state"),
|
|
120
|
+
XDG_CONFIG_HOME: join(workdir, "config"),
|
|
121
|
+
};
|
|
122
|
+
const inProj = (args: string[]) =>
|
|
123
|
+
spawnSync(binary, args, {
|
|
124
|
+
cwd: proj,
|
|
125
|
+
stdio: "pipe",
|
|
126
|
+
encoding: "utf-8",
|
|
127
|
+
env: { ...process.env, ...env },
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
const update = inProj(["sources", "update", "--yes", "--format", "json"]);
|
|
131
|
+
expect(update.status, update.stderr).toBe(0);
|
|
132
|
+
expect(existsSync(join(proj, "pragma.lock.json"))).toBe(true);
|
|
133
|
+
|
|
134
|
+
const status = inProj(["sources", "status", "--format", "json"]);
|
|
135
|
+
const envelope = JSON.parse(status.stdout.trim()) as {
|
|
136
|
+
data: { lockPresent: boolean; cached: boolean; entityCount: number };
|
|
137
|
+
};
|
|
138
|
+
expect(envelope.data.lockPresent).toBe(true);
|
|
139
|
+
expect(envelope.data.cached).toBe(true);
|
|
140
|
+
// Distinct abox subjects: the one individual (ex:one). The ex:Widget class
|
|
141
|
+
// is tbox schema, not an entity — the raw entity count would double this (A1).
|
|
142
|
+
expect(envelope.data.entityCount).toBe(1);
|
|
143
|
+
});
|
|
144
|
+
});
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Widen a strongly-typed verb to the base {@link VerbSpec} at the registry
|
|
3
|
+
* boundary.
|
|
4
|
+
*
|
|
5
|
+
* A `VerbSpec<P, R>` with a concrete `R` cannot be placed directly in a
|
|
6
|
+
* `CapabilityModule.verbs` array (`VerbSpec<…, unknown>[]`) because `Formatters`
|
|
7
|
+
* is invariant in its data type. Authoring keeps the strong `R` so the
|
|
8
|
+
* formatters in each `*.render.ts` are type-checked against the real payload;
|
|
9
|
+
* this erases only that phantom `R` where the module is composed. The
|
|
10
|
+
* projectors re-narrow through the verb's own formatters at run time.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import type { VerbSpec } from "./types.js";
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Erase a verb's concrete data type for registry composition.
|
|
17
|
+
*
|
|
18
|
+
* @param verb - A strongly-typed verb spec.
|
|
19
|
+
* @returns The same verb widened to the base `VerbSpec`.
|
|
20
|
+
*/
|
|
21
|
+
export function asVerb<P, R>(verb: VerbSpec<P, R>): VerbSpec {
|
|
22
|
+
return verb as unknown as VerbSpec;
|
|
23
|
+
}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import {
|
|
3
|
+
fixtureModule,
|
|
4
|
+
fixtureReferenceModule,
|
|
5
|
+
} from "../../testing/fixtures/fixtureCapability.js";
|
|
6
|
+
import { ERROR_CODES } from "../error/constants.js";
|
|
7
|
+
import { emitReference } from "./emitReference.js";
|
|
8
|
+
|
|
9
|
+
/** The four pages every reference doc set carries. */
|
|
10
|
+
const PAGES = ["index.md", "commands.md", "tools.md", "errors.md"];
|
|
11
|
+
|
|
12
|
+
describe("emitReference", () => {
|
|
13
|
+
const docs = emitReference([fixtureReferenceModule]);
|
|
14
|
+
const index = docs.get("index.md") ?? "";
|
|
15
|
+
const commands = docs.get("commands.md") ?? "";
|
|
16
|
+
const tools = docs.get("tools.md") ?? "";
|
|
17
|
+
const errors = docs.get("errors.md") ?? "";
|
|
18
|
+
|
|
19
|
+
it("emits exactly the four reference pages", () => {
|
|
20
|
+
expect([...docs.keys()].sort()).toEqual([...PAGES].sort());
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
it("ends every page in exactly one trailing newline", () => {
|
|
24
|
+
for (const content of docs.values()) {
|
|
25
|
+
expect(content.endsWith("\n")).toBe(true);
|
|
26
|
+
expect(content.endsWith("\n\n")).toBe(false);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
it("is deterministic — the same catalog yields byte-identical pages", () => {
|
|
31
|
+
const again = emitReference([fixtureReferenceModule]);
|
|
32
|
+
for (const page of PAGES) {
|
|
33
|
+
expect(again.get(page)).toBe(docs.get(page));
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
describe("index.md", () => {
|
|
38
|
+
it("reports counts derived from the live grammar", () => {
|
|
39
|
+
// gizmo + ping = 2 nouns; local/scan/tidy/wipe/ping = 5 commands (hidden
|
|
40
|
+
// dropped); scan/tidy/wipe/ping = 4 tools (local withheld); 1 resource
|
|
41
|
+
// template (the module's `mcpResources` surface).
|
|
42
|
+
expect(index).toContain("**2** command nouns");
|
|
43
|
+
expect(index).toContain("**5** CLI commands");
|
|
44
|
+
expect(index).toContain("**4** MCP tools");
|
|
45
|
+
expect(index).toContain("**1** resource template(s)");
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
it("links the three sibling pages with relative paths", () => {
|
|
49
|
+
expect(index).toContain("(./commands.md)");
|
|
50
|
+
expect(index).toContain("(./tools.md)");
|
|
51
|
+
expect(index).toContain("(./errors.md)");
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
describe("commands.md", () => {
|
|
56
|
+
it("groups verbs under noun headings, sorted, hidden excluded", () => {
|
|
57
|
+
expect(commands).toContain("## gizmo");
|
|
58
|
+
expect(commands).toContain("## ping");
|
|
59
|
+
expect(commands.indexOf("## gizmo")).toBeLessThan(
|
|
60
|
+
commands.indexOf("## ping"),
|
|
61
|
+
);
|
|
62
|
+
expect(commands).not.toContain("hidden");
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
it("renders a read verb's usage, args, flags, attributes, and examples", () => {
|
|
66
|
+
expect(commands).toContain("### pragma gizmo scan");
|
|
67
|
+
expect(commands).toContain("pragma gizmo scan [targets...] [options]");
|
|
68
|
+
// Optional variadic positional token.
|
|
69
|
+
expect(commands).toContain("| `[targets...]` | no |");
|
|
70
|
+
// Enum flag: escaped pipe token, enum values, and default in the description.
|
|
71
|
+
expect(commands).toContain("| `--mode` | `<fast\\|slow>` |");
|
|
72
|
+
expect(commands).toContain("(one of: fast, slow) (default: fast)");
|
|
73
|
+
// Each flag kind renders its value placeholder.
|
|
74
|
+
expect(commands).toContain("| `--limit` | `<number>` |");
|
|
75
|
+
expect(commands).toContain("| `--label` | `<string>` |");
|
|
76
|
+
expect(commands).toContain("| `--include` | `<value...>` |");
|
|
77
|
+
// A bare boolean switch has no value placeholder.
|
|
78
|
+
expect(commands).toContain("| `--deep` | — |");
|
|
79
|
+
expect(commands).toContain("- Store: storeless.");
|
|
80
|
+
expect(commands).toContain("- MCP: exposed as the `gizmo_scan` tool.");
|
|
81
|
+
// A note becomes a trailing comment; a noteless example stays bare.
|
|
82
|
+
expect(commands).toContain("pragma gizmo scan # scan everything");
|
|
83
|
+
expect(commands).toContain("pragma gizmo scan alpha --mode slow");
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
it("marks a store-backed destructive mutation's CLI attributes", () => {
|
|
87
|
+
expect(commands).toContain("### pragma gizmo wipe");
|
|
88
|
+
expect(commands).toContain("pragma gizmo wipe <path>");
|
|
89
|
+
expect(commands).toContain(
|
|
90
|
+
"- Store: reads the local store (`pragma sources update` builds it).",
|
|
91
|
+
);
|
|
92
|
+
expect(commands).toContain("- Mutation: plan-first");
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
it("marks a visible verb withheld from MCP", () => {
|
|
96
|
+
expect(commands).toContain("### pragma gizmo local");
|
|
97
|
+
expect(commands).toContain("- MCP: not exposed (CLI-only).");
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
it("renders a self-verb with no sub-command in its invocation", () => {
|
|
101
|
+
expect(commands).toContain("### pragma ping");
|
|
102
|
+
expect(commands).toContain("```\npragma ping\n```");
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
it("falls back to the summary when a verb has no doc", () => {
|
|
106
|
+
// `ping` has no `doc`; its summary is the section body.
|
|
107
|
+
const pingSection = commands.slice(commands.indexOf("### pragma ping"));
|
|
108
|
+
expect(pingSection).toContain("Ping the gizmo host.");
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
describe("tools.md", () => {
|
|
113
|
+
it("adds the disclosure `detail` param and comma-joined enum types", () => {
|
|
114
|
+
expect(tools).toContain("### gizmo_scan");
|
|
115
|
+
expect(tools).toContain("| `mode` | enum(fast, slow) | no |");
|
|
116
|
+
expect(tools).toContain("| `include` | string[] | no |");
|
|
117
|
+
expect(tools).toContain(
|
|
118
|
+
"| `detail` | enum(summary, detailed) | no | Progressive-disclosure level (default summary). |",
|
|
119
|
+
);
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
it("adds confirm + cwd to a mutating tool and flags it destructive", () => {
|
|
123
|
+
const wipe = tools.slice(tools.indexOf("### gizmo_wipe"));
|
|
124
|
+
expect(wipe).toContain("| `confirm` | boolean | no |");
|
|
125
|
+
expect(wipe).toContain("| `cwd` | string | no |");
|
|
126
|
+
expect(tools).toContain(
|
|
127
|
+
"Mutation — plan-first (set `confirm: true` to apply). Marked destructive.",
|
|
128
|
+
);
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
it("marks a non-destructive mutating tool as such", () => {
|
|
132
|
+
const tidy = tools.slice(tools.indexOf("### gizmo_tidy"));
|
|
133
|
+
expect(tidy).toContain("| `confirm` | boolean | no |");
|
|
134
|
+
// The `destructive: false` branch of `formatToolAnnotations`.
|
|
135
|
+
expect(tools).toContain(
|
|
136
|
+
"Mutation — plan-first (set `confirm: true` to apply). Non-destructive.",
|
|
137
|
+
);
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
it("omits verbs withheld from MCP", () => {
|
|
141
|
+
expect(tools).not.toContain("gizmo_local");
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
it("marks a no-param tool as taking no input", () => {
|
|
145
|
+
const ping = tools.slice(tools.indexOf("### ping"));
|
|
146
|
+
expect(ping.slice(0, 200)).toContain("_No input parameters._");
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
it("renders every non-tool surface bullet the module declares", () => {
|
|
150
|
+
expect(tools).toContain("## Non-tool surface");
|
|
151
|
+
// The module declares an `mcpResources` template surface (its `surface.
|
|
152
|
+
// templates` id) and an `mcpPrompts` native surface, so all three bullets
|
|
153
|
+
// render — exercising both optional branches of `renderNonToolSurface`.
|
|
154
|
+
expect(tools).toContain("- **Resources**: `gizmo:{+uri}`");
|
|
155
|
+
expect(tools).toContain("- **Prompts**:");
|
|
156
|
+
expect(tools).toContain("- **Instructions**:");
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
describe("errors.md", () => {
|
|
161
|
+
it("renders the exit-code table and the full error catalog", () => {
|
|
162
|
+
expect(errors).toContain("| `0` | success |");
|
|
163
|
+
expect(errors).toContain("| `3` | store unavailable |");
|
|
164
|
+
expect(errors).toContain("| `ENTITY_NOT_FOUND` |");
|
|
165
|
+
expect(errors).toContain("| `UNSUPPORTED` |");
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
it("lists every code in the closed ERROR_CODES tuple (exhaustive)", () => {
|
|
169
|
+
// Non-circular exhaustiveness: iterate the source-of-truth tuple and
|
|
170
|
+
// assert each code's `catalog` row is present, so a code added to the
|
|
171
|
+
// kernel without a catalog entry fails here (not just the 2 spot-checks).
|
|
172
|
+
for (const code of ERROR_CODES) {
|
|
173
|
+
expect(errors, `errors.md is missing \`${code}\``).toContain(
|
|
174
|
+
`\`${code}\``,
|
|
175
|
+
);
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
it("embeds the response envelope as a JSON block", () => {
|
|
180
|
+
expect(errors).toContain("```json");
|
|
181
|
+
expect(errors).toContain('"ok": true');
|
|
182
|
+
expect(errors).toContain('"code": "<ErrorCode>"');
|
|
183
|
+
});
|
|
184
|
+
});
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
describe("emitReference — MCP annotation branches", () => {
|
|
188
|
+
it("renders a destructive fixture tool and a native-prompt-free surface", () => {
|
|
189
|
+
// `fixtureModule.make` is exposed, mutating, and destructive — the same
|
|
190
|
+
// `Marked destructive.` branch, driven from the emitSurface fixture.
|
|
191
|
+
const tools = emitReference([fixtureModule]).get("tools.md") ?? "";
|
|
192
|
+
expect(tools).toContain("### widget_make");
|
|
193
|
+
expect(tools).toContain("Marked destructive.");
|
|
194
|
+
expect(tools).not.toContain("- **Prompts**:");
|
|
195
|
+
});
|
|
196
|
+
});
|