@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
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `runSelect` — the single choke point for every TRUSTED, generated SPARQL read.
|
|
3
|
+
*
|
|
4
|
+
* Pins the unseeded-store remap: a generated pack query only references the
|
|
5
|
+
* pack's own `ds:`/`cs:` prefixes, so a "Prefix not found" from the facade means
|
|
6
|
+
* the store was never built — an actionable STORE_UNAVAILABLE, NOT a raw error
|
|
7
|
+
* collapsing to INTERNAL_ERROR ("please report this issue"). The recovery carries
|
|
8
|
+
* BOTH the CLI command (`pragma sources update`) and the MCP tool an agent calls
|
|
9
|
+
* (`sources_update`), so either surface can recover.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { describe, expect, it } from "vitest";
|
|
13
|
+
import type { PragmaRuntime } from "../../runtime/types.js";
|
|
14
|
+
import { runSelect } from "./runSelect.js";
|
|
15
|
+
|
|
16
|
+
/** A runtime whose query facade throws the given error for every SPARQL call. */
|
|
17
|
+
function throwingRuntime(error: unknown): Pick<PragmaRuntime, "query"> {
|
|
18
|
+
return {
|
|
19
|
+
query: {
|
|
20
|
+
sparql: async () => {
|
|
21
|
+
throw error;
|
|
22
|
+
},
|
|
23
|
+
} as unknown as PragmaRuntime["query"],
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/** A runtime whose facade resolves a fixed SELECT result. */
|
|
28
|
+
function selectRuntime(
|
|
29
|
+
bindings: Record<string, string>[],
|
|
30
|
+
): Pick<PragmaRuntime, "query"> {
|
|
31
|
+
return {
|
|
32
|
+
query: {
|
|
33
|
+
sparql: async () => ({ type: "select", bindings }),
|
|
34
|
+
} as unknown as PragmaRuntime["query"],
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
describe("runSelect — unseeded-store remap (ROOT A)", () => {
|
|
39
|
+
it("remaps a 'Prefix not found' to STORE_UNAVAILABLE with CLI + MCP recovery", async () => {
|
|
40
|
+
let caught: unknown;
|
|
41
|
+
try {
|
|
42
|
+
await runSelect(
|
|
43
|
+
throwingRuntime(new Error("Prefix not found: ds")),
|
|
44
|
+
"SELECT ?x WHERE { ?x a ds:Thing }",
|
|
45
|
+
"block",
|
|
46
|
+
);
|
|
47
|
+
} catch (error) {
|
|
48
|
+
caught = error;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// The whole point: it is NOT an unclassified INTERNAL_ERROR.
|
|
52
|
+
expect(caught).toMatchObject({ code: "STORE_UNAVAILABLE" });
|
|
53
|
+
const recovery = (caught as { recovery?: Record<string, unknown> })
|
|
54
|
+
.recovery;
|
|
55
|
+
expect(recovery?.cli).toBe("pragma sources update");
|
|
56
|
+
// An agent cannot run a shell command — it recovers via the tool.
|
|
57
|
+
expect(recovery?.mcp).toMatchObject({ tool: "sources_update" });
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
it("passes a non-prefix facade error through unchanged (not remapped)", async () => {
|
|
61
|
+
const boom = new Error("some other engine failure");
|
|
62
|
+
let caught: unknown;
|
|
63
|
+
try {
|
|
64
|
+
await runSelect(throwingRuntime(boom), "SELECT ?x WHERE {}", "block");
|
|
65
|
+
} catch (error) {
|
|
66
|
+
caught = error;
|
|
67
|
+
}
|
|
68
|
+
// A generic failure is NOT masquerading as a cold store.
|
|
69
|
+
expect(caught).toBe(boom);
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
it("returns the bindings on a well-formed SELECT", async () => {
|
|
73
|
+
const rows = await runSelect(
|
|
74
|
+
selectRuntime([{ name: "Button" }, { name: "Card" }]),
|
|
75
|
+
"SELECT ?name WHERE { ?x ds:name ?name }",
|
|
76
|
+
"block",
|
|
77
|
+
);
|
|
78
|
+
expect(rows).toEqual([{ name: "Button" }, { name: "Card" }]);
|
|
79
|
+
});
|
|
80
|
+
});
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Run a pack story's SELECT through the query facade and return its rows.
|
|
3
|
+
*
|
|
4
|
+
* The store rejects non-read queries at the engine level; this guards the result
|
|
5
|
+
* shape so a pack whose query is not a SELECT fails with a recoverable config
|
|
6
|
+
* error instead of a shape mismatch downstream. The facade boots the store
|
|
7
|
+
* lazily and auto-applies the pack's prefixes, so generated queries use prefixed
|
|
8
|
+
* terms directly. This is the single choke point for every TRUSTED, generated
|
|
9
|
+
* SPARQL read (list stories, lookup name→URI resolves, expands) — user SPARQL
|
|
10
|
+
* (`graph query`) goes through the facade directly and stays INVALID_INPUT.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { RECOVERY_CLI_PREFIX } from "../../../constants.js";
|
|
14
|
+
import { PragmaError } from "../../error/PragmaError.js";
|
|
15
|
+
import { cliRecovery } from "../../error/recovery.js";
|
|
16
|
+
import type { PragmaRuntime } from "../../runtime/types.js";
|
|
17
|
+
import type { PackRow } from "../types.js";
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* True when a trusted, generated query failed because the store does not know a
|
|
21
|
+
* prefix it used. A generated pack query only references the pack's own
|
|
22
|
+
* ontology prefixes (`ds:`/`cs:`), so a "prefix not found" means the store is
|
|
23
|
+
* unseeded — the fresh-install embedded fallback carries no design-system
|
|
24
|
+
* ontology — rather than a query bug.
|
|
25
|
+
*/
|
|
26
|
+
function isUnseededStoreError(error: unknown): boolean {
|
|
27
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
28
|
+
return /prefix/i.test(message) && /not\s+found/i.test(message);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Run the facade query, remapping an unseeded-store failure. A generated pack
|
|
33
|
+
* query hitting an unknown prefix means the store was never built for this
|
|
34
|
+
* design system (the first thing a fresh install hits) — surface the actionable
|
|
35
|
+
* STORE_UNAVAILABLE with the canonical `pragma sources update` recovery instead
|
|
36
|
+
* of a raw SPARQL "Prefix not found" wrapped as INTERNAL_ERROR ("please report
|
|
37
|
+
* this issue"). Returns the inferred facade result type, so this module stays
|
|
38
|
+
* clear of a static `@canonical/ke` import (the lazy-dispatch guard).
|
|
39
|
+
*/
|
|
40
|
+
async function queryOrRemap(rt: Pick<PragmaRuntime, "query">, query: string) {
|
|
41
|
+
try {
|
|
42
|
+
return await rt.query.sparql(query);
|
|
43
|
+
} catch (error) {
|
|
44
|
+
if (error instanceof PragmaError) throw error;
|
|
45
|
+
if (isUnseededStoreError(error)) {
|
|
46
|
+
throw PragmaError.storeUnavailable(
|
|
47
|
+
"The store has not been built for this project yet.",
|
|
48
|
+
{
|
|
49
|
+
recovery: cliRecovery(
|
|
50
|
+
`${RECOVERY_CLI_PREFIX}sources update`,
|
|
51
|
+
"Build the local store from the configured design-system packages.",
|
|
52
|
+
// An agent recovers by calling the tool, then retrying (PR9 C1 cold-
|
|
53
|
+
// store retry makes the post-update retry succeed).
|
|
54
|
+
{ tool: "sources_update" },
|
|
55
|
+
),
|
|
56
|
+
},
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
throw error;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* @param rt - The runtime (its query facade over the lazy store).
|
|
65
|
+
* @param query - SPARQL SELECT text (prefixes auto-applied by the store).
|
|
66
|
+
* @param source - The pack source, for error attribution.
|
|
67
|
+
* @returns One record per row, keyed by SELECT variable name.
|
|
68
|
+
* @throws PragmaError CONFIG_ERROR when the query is not a SELECT;
|
|
69
|
+
* STORE_UNAVAILABLE (exit 3) when the store is unseeded.
|
|
70
|
+
* @note Impure — queries the store through the facade.
|
|
71
|
+
*/
|
|
72
|
+
export async function runSelect(
|
|
73
|
+
rt: Pick<PragmaRuntime, "query">,
|
|
74
|
+
query: string,
|
|
75
|
+
source: string,
|
|
76
|
+
): Promise<PackRow[]> {
|
|
77
|
+
const result = await queryOrRemap(rt, query);
|
|
78
|
+
if (result.type !== "select") {
|
|
79
|
+
throw PragmaError.configError(
|
|
80
|
+
`Story query in ${source} must be a SELECT (got ${result.type}).`,
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
return result.bindings as PackRow[];
|
|
84
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PROTECTED — the pack `toolDescription` → MCP tool description wiring.
|
|
3
|
+
*
|
|
4
|
+
* A pack authors `toolDescription` FOR the agent-facing MCP tool description
|
|
5
|
+
* (see kernel/packs/types.ts, "MCP tool description"). The compiler routes it
|
|
6
|
+
* into `VerbSpec.doc`, the MCP projector emits `doc ?? summary` as the tool
|
|
7
|
+
* description, and the CLI projector renders `doc` in verb help WITHOUT the
|
|
8
|
+
* MCP tool-call example (`noun_verb {…}` is MCP-transport syntax).
|
|
9
|
+
*
|
|
10
|
+
* This pins representative text on BOTH surfaces so the routing can't silently
|
|
11
|
+
* regress: the rich description must reach MCP, and the MCP tool-call example
|
|
12
|
+
* must never leak into CLI `--help`.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { describe, expect, it } from "vitest";
|
|
16
|
+
import { standardModule } from "../../capabilities/standard/index.js";
|
|
17
|
+
import { tokenModule } from "../../capabilities/token/index.js";
|
|
18
|
+
import { projectMcp } from "../../testing/helpers/projectMcp.js";
|
|
19
|
+
import { formatVerbHelp } from "../project/cli/verbHelp.js";
|
|
20
|
+
import type { VerbSpec } from "../spec/types.js";
|
|
21
|
+
|
|
22
|
+
const verb = (
|
|
23
|
+
module: { verbs: readonly VerbSpec[] },
|
|
24
|
+
label: string,
|
|
25
|
+
): VerbSpec => {
|
|
26
|
+
const found = module.verbs.find((v) => v.path[1] === label);
|
|
27
|
+
if (!found) throw new Error(`no verb "${label}"`);
|
|
28
|
+
return found;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
describe("pack toolDescription wiring (PROTECTED)", () => {
|
|
32
|
+
it("routes the lookup-level toolDescription to MCP, whole (with the call example)", async () => {
|
|
33
|
+
const mcp = await projectMcp([tokenModule]);
|
|
34
|
+
const desc = (await mcp.listTools()).find(
|
|
35
|
+
(t) => t.name === "token_lookup",
|
|
36
|
+
)?.description;
|
|
37
|
+
await mcp.cleanup();
|
|
38
|
+
expect(desc).toContain(
|
|
39
|
+
"Get type and theme values for one or more design tokens by name.",
|
|
40
|
+
);
|
|
41
|
+
// The authored MCP tool-call example survives on the MCP surface.
|
|
42
|
+
expect(desc).toContain(
|
|
43
|
+
'Example: token_lookup { names: ["color.primary"] }',
|
|
44
|
+
);
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
it("routes the definition-level toolDescription to the MCP list tool", async () => {
|
|
48
|
+
const mcp = await projectMcp([tokenModule]);
|
|
49
|
+
const desc = (await mcp.listTools()).find(
|
|
50
|
+
(t) => t.name === "token_list",
|
|
51
|
+
)?.description;
|
|
52
|
+
await mcp.cleanup();
|
|
53
|
+
// The rich description reaches MCP (was previously dropped — only `summary`
|
|
54
|
+
// reached the tool), including the authored call example.
|
|
55
|
+
expect(desc).toContain("List all design tokens with their type.");
|
|
56
|
+
expect(desc).toContain("Example: token_list {}");
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
it("routes an extra-verb toolDescription to its MCP tool", async () => {
|
|
60
|
+
const mcp = await projectMcp([standardModule]);
|
|
61
|
+
const desc = (await mcp.listTools()).find(
|
|
62
|
+
(t) => t.name === "standard_categories",
|
|
63
|
+
)?.description;
|
|
64
|
+
await mcp.cleanup();
|
|
65
|
+
expect(desc).toBe("List all code standard categories.");
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
it("CLI --help shows the rich prose but NEVER the MCP tool-call syntax", () => {
|
|
69
|
+
const lookupHelp = formatVerbHelp("pragma", verb(tokenModule, "lookup"));
|
|
70
|
+
expect(lookupHelp).toContain(
|
|
71
|
+
"Get type and theme values for one or more design tokens by name.",
|
|
72
|
+
);
|
|
73
|
+
// No-leaks: the `token_lookup {…}` MCP call shape must not reach CLI help.
|
|
74
|
+
expect(lookupHelp).not.toContain("token_lookup {");
|
|
75
|
+
expect(lookupHelp).not.toContain("Example:");
|
|
76
|
+
|
|
77
|
+
const listHelp = formatVerbHelp("pragma", verb(tokenModule, "list"));
|
|
78
|
+
expect(listHelp).toContain("List all design tokens with their type.");
|
|
79
|
+
expect(listHelp).not.toContain("token_list {");
|
|
80
|
+
});
|
|
81
|
+
});
|
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The pack grammar (v2) — "reads as data".
|
|
3
|
+
*
|
|
4
|
+
* A pack maps a noun to preferred queries: a SPARQL SELECT for the list story
|
|
5
|
+
* and a generated, injection-safe lookup. One grammar and one compiler
|
|
6
|
+
* ({@link ../compile}) project a pack into {@link ../../spec/types.VerbSpec}s;
|
|
7
|
+
* the CLI and MCP projectors then treat pack verbs like any other. This closes
|
|
8
|
+
* the two old forks — three read-noun styles collapse to one pack shape, and
|
|
9
|
+
* the two pack compilers collapse to one.
|
|
10
|
+
*
|
|
11
|
+
* These types are hand-authored and zod-free so the compiler (reached on the
|
|
12
|
+
* `--help`/`__complete` fast path via `capabilities/index`) never pulls zod;
|
|
13
|
+
* {@link ../schema} validates the same shapes and is imported lazily, only for
|
|
14
|
+
* dynamic (config/package) packs and in tests.
|
|
15
|
+
*
|
|
16
|
+
* Progressive disclosure is CANONICAL: a level tag names one of
|
|
17
|
+
* `constants.DETAIL_LEVELS` (`summary` < `standard` < `detailed`), and gating
|
|
18
|
+
* is by that canonical index — a pack's declared `levels` is any ordered subset
|
|
19
|
+
* of the canonical set.
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
/** A list column: a SELECT variable to display. */
|
|
23
|
+
export interface PackColumn {
|
|
24
|
+
/** SELECT variable name (without `?`). */
|
|
25
|
+
readonly field: string;
|
|
26
|
+
/** Column heading (defaults to the field name). */
|
|
27
|
+
readonly label?: string;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/** A looked-up value: an output name bound to a property of the entity. */
|
|
31
|
+
export interface PackField {
|
|
32
|
+
/** Output field name on the looked-up entity. */
|
|
33
|
+
readonly name: string;
|
|
34
|
+
/** Property to read — a prefixed name (`ds:tier`) or absolute IRI. */
|
|
35
|
+
readonly property: string;
|
|
36
|
+
/** Display label (defaults to the field name). */
|
|
37
|
+
readonly label?: string;
|
|
38
|
+
/**
|
|
39
|
+
* Explicit GraphQL field name for `source: "graphql"` lookups — the escape
|
|
40
|
+
* hatch when the ontology→schema derivation does not match the compiled
|
|
41
|
+
* schema. Ignored on the SPARQL path.
|
|
42
|
+
*/
|
|
43
|
+
readonly graphqlField?: string;
|
|
44
|
+
/**
|
|
45
|
+
* Minimum canonical disclosure level at which this value is fetched and
|
|
46
|
+
* rendered. Omitted means the base level (always included). Below its level
|
|
47
|
+
* the value is excluded from the generated query/document.
|
|
48
|
+
*/
|
|
49
|
+
readonly level?: string;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/** A long-form lookup section (inline field or code block). */
|
|
53
|
+
export interface PackSection extends PackField {
|
|
54
|
+
/** Rendering kind (inline field or fenced code block). */
|
|
55
|
+
readonly kind?: "field" | "code";
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/** A field read from each child node of a {@link PackExpand}. */
|
|
59
|
+
export interface PackExpandField {
|
|
60
|
+
/** Output field name on the child record. */
|
|
61
|
+
readonly name: string;
|
|
62
|
+
/** Property to read on the child node — prefixed name, IRI, or path. */
|
|
63
|
+
readonly property: string;
|
|
64
|
+
/** Display label (defaults to the field name). */
|
|
65
|
+
readonly label?: string;
|
|
66
|
+
/** Explicit GraphQL field name (escape hatch). Ignored on the SPARQL path. */
|
|
67
|
+
readonly graphqlField?: string;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* A second-hop projection inside an expand's `select` — GraphQL source only.
|
|
72
|
+
* One extra level (child → grandchildren); a nested expand's `select` admits
|
|
73
|
+
* only scalar fields, so nesting stops here. Rejected on `source: "sparql"`.
|
|
74
|
+
*/
|
|
75
|
+
export interface PackNestedExpand {
|
|
76
|
+
/** Output field holding the grandchild values on each child record. */
|
|
77
|
+
readonly name: string;
|
|
78
|
+
/** Relation from the child node to each grandchild — prefixed name or IRI. */
|
|
79
|
+
readonly relation: string;
|
|
80
|
+
/** Explicit GraphQL field name (escape hatch over the derived name). */
|
|
81
|
+
readonly graphqlField?: string;
|
|
82
|
+
/** Scalar fields to read from each grandchild. */
|
|
83
|
+
readonly select: readonly PackExpandField[];
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/** One entry of an expand's `select`: a child field or a nested expand. */
|
|
87
|
+
export type PackExpandSelect = PackExpandField | PackNestedExpand;
|
|
88
|
+
|
|
89
|
+
/** Whether an expand-select entry is a nested expand (vs a plain field). */
|
|
90
|
+
export function isNestedExpand(
|
|
91
|
+
entry: PackExpandSelect,
|
|
92
|
+
): entry is PackNestedExpand {
|
|
93
|
+
return "relation" in entry;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* A multi-valued nested projection: `entity → relation → child nodes`, each
|
|
98
|
+
* child projected to a small record. Resolved with a generated, injection-safe
|
|
99
|
+
* sub-SELECT bound to the already-resolved entity IRI (never user input) on the
|
|
100
|
+
* SPARQL path, or one document hop on the GraphQL path.
|
|
101
|
+
*/
|
|
102
|
+
export interface PackExpand {
|
|
103
|
+
/** Output field holding the child array on the looked-up entity. */
|
|
104
|
+
readonly name: string;
|
|
105
|
+
/** Section heading (defaults to the field name). */
|
|
106
|
+
readonly heading?: string;
|
|
107
|
+
/** Render kind for the array (`list` or `table`; defaults to `list`). */
|
|
108
|
+
readonly kind?: "list" | "table";
|
|
109
|
+
/** Relation from the entity to each child node — prefixed name, IRI, or path. */
|
|
110
|
+
readonly relation: string;
|
|
111
|
+
/** Explicit GraphQL field name (escape hatch). Ignored on the SPARQL path. */
|
|
112
|
+
readonly graphqlField?: string;
|
|
113
|
+
/**
|
|
114
|
+
* Fields to read from each child node. On `source: "graphql"` lookups an
|
|
115
|
+
* entry may instead be one {@link PackNestedExpand} level.
|
|
116
|
+
*/
|
|
117
|
+
readonly select: readonly PackExpandSelect[];
|
|
118
|
+
/** Render the section even when the array is empty (default: false). */
|
|
119
|
+
readonly showWhenEmpty?: boolean;
|
|
120
|
+
/** Minimum canonical disclosure level at which this expand is fetched. */
|
|
121
|
+
readonly level?: string;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Progressive-disclosure capability for a lookup. Declares an ordered subset of
|
|
126
|
+
* the canonical levels (the first is the base/default, always shown); the
|
|
127
|
+
* compiler derives a `--detail`/`detail` selector and gates fields/expands by
|
|
128
|
+
* canonical index.
|
|
129
|
+
*/
|
|
130
|
+
export interface PackDisclosure {
|
|
131
|
+
/** Ordered canonical level names (`⊆ constants.DETAIL_LEVELS`). */
|
|
132
|
+
readonly levels: readonly string[];
|
|
133
|
+
/** Default level when none is requested (must be one of `levels`). */
|
|
134
|
+
readonly default?: string;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* A declarative list filter: a CLI/MCP parameter constraining one SELECT
|
|
139
|
+
* variable. Filters are row predicates applied AFTER the author query runs — the
|
|
140
|
+
* query text is never modified, so filter input cannot inject SPARQL.
|
|
141
|
+
*/
|
|
142
|
+
export interface PackFilter {
|
|
143
|
+
/** Parameter name — a single lowercase word (`--param` / MCP key). */
|
|
144
|
+
readonly param: string;
|
|
145
|
+
/** SELECT variable the filter constrains (without `?`). */
|
|
146
|
+
readonly variable: string;
|
|
147
|
+
/**
|
|
148
|
+
* Allowed values; anything else is rejected with INVALID_INPUT and the set
|
|
149
|
+
* projects to an enum. Omitted when the value set is data-driven (a free
|
|
150
|
+
* string matched case-insensitively against the variable).
|
|
151
|
+
*/
|
|
152
|
+
readonly values?: readonly string[];
|
|
153
|
+
/** Help text (defaults to a generated description). */
|
|
154
|
+
readonly description?: string;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Free-text search over list rows: a `--search` string keeping a row when ANY
|
|
159
|
+
* named SELECT variable contains the term (case-insensitive substring). Applied
|
|
160
|
+
* after the author query, so input never touches the query text.
|
|
161
|
+
*/
|
|
162
|
+
export interface PackSearch {
|
|
163
|
+
/** SELECT variables searched (without `?`). */
|
|
164
|
+
readonly variables: readonly string[];
|
|
165
|
+
/** Help text (defaults to a generated description). */
|
|
166
|
+
readonly description?: string;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/** Opt-in empty-result recovery for a list story. */
|
|
170
|
+
export interface PackEmptyRecovery {
|
|
171
|
+
/** Human-readable cause + fix (e.g. which packages provide the data). */
|
|
172
|
+
readonly message: string;
|
|
173
|
+
/** Runnable pragma command fixing the emptiness (rendered on the CLI). */
|
|
174
|
+
readonly cli?: string;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/** The list half of a pack (always SPARQL-sourced). */
|
|
178
|
+
export interface PackList {
|
|
179
|
+
/** SPARQL SELECT producing one row per item. */
|
|
180
|
+
readonly query: string;
|
|
181
|
+
/** Columns to render, referencing SELECT variables. */
|
|
182
|
+
readonly columns: readonly PackColumn[];
|
|
183
|
+
/** Declarative filters projected to CLI flags and MCP parameters. */
|
|
184
|
+
readonly filters?: readonly PackFilter[];
|
|
185
|
+
/** Free-text search projected to a `--search` flag / `search` parameter. */
|
|
186
|
+
readonly search?: PackSearch;
|
|
187
|
+
/** Opt-in empty-result recovery (typed EMPTY_RESULTS instead of an empty list). */
|
|
188
|
+
readonly emptyRecovery?: PackEmptyRecovery;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* An additional list-shaped verb: `<noun> <verb>` compiled through the SAME
|
|
193
|
+
* machinery as `list` (e.g. standard's `categories`). May not collide with the
|
|
194
|
+
* compiled `list`/`lookup`/`sample` verbs.
|
|
195
|
+
*/
|
|
196
|
+
export interface PackVerb extends PackList {
|
|
197
|
+
/** Verb name (kebab-case), e.g. `"categories"`. */
|
|
198
|
+
readonly verb: string;
|
|
199
|
+
/** CLI description for the command. */
|
|
200
|
+
readonly description?: string;
|
|
201
|
+
/** MCP tool description (defaults to the CLI description). */
|
|
202
|
+
readonly toolDescription?: string;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* The sample capability: `<noun> sample [count]` returns 1–5 randomly selected
|
|
207
|
+
* complete entities (resolved through the lookup path at the HIGHEST level).
|
|
208
|
+
*/
|
|
209
|
+
export interface PackSample {
|
|
210
|
+
/** Default sample count when none is requested (1–5; default 2). */
|
|
211
|
+
readonly count?: number;
|
|
212
|
+
/**
|
|
213
|
+
* Omit the `[count]` positional — the sample always returns {@link count}
|
|
214
|
+
* (default 2) entries. Used where the covenant freezes a no-argument sample
|
|
215
|
+
* (`block`/`modifier`/`token`); `standard` keeps the `[count]` positional.
|
|
216
|
+
*/
|
|
217
|
+
readonly fixedCount?: boolean;
|
|
218
|
+
/** CLI description for the command. */
|
|
219
|
+
readonly description?: string;
|
|
220
|
+
/** MCP tool description (defaults to the CLI description). */
|
|
221
|
+
readonly toolDescription?: string;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Per-family autocomplete override for a lookup's `<name>` positional. Name
|
|
226
|
+
* completion is DERIVED-BY-DEFAULT from the family's index type; this tunes or
|
|
227
|
+
* opts out of it. Absent means "completion on, engine defaults".
|
|
228
|
+
*/
|
|
229
|
+
export interface PackCompletion {
|
|
230
|
+
/** `false` opts the family out of name completion (default: on). */
|
|
231
|
+
readonly enabled?: boolean;
|
|
232
|
+
/** Match strategy against the partial (default: substring). */
|
|
233
|
+
readonly match?: "prefix" | "substring" | "fuzzy";
|
|
234
|
+
/** Minimum typed chars before the shell execs completion (default: global). */
|
|
235
|
+
readonly minChars?: number;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* The lookup half of a pack. The query is generated from `by` and `type`/`types`
|
|
240
|
+
* — user-supplied names are escaped by the generator, never interpolated by the
|
|
241
|
+
* author. The `source` selects the field-fetch strategy; the name→URI resolve is
|
|
242
|
+
* ALWAYS generated SPARQL regardless of source (an implementation detail, not a
|
|
243
|
+
* second declared source).
|
|
244
|
+
*/
|
|
245
|
+
export interface PackLookup {
|
|
246
|
+
/**
|
|
247
|
+
* Field-fetch strategy (default `"sparql"`). `"graphql"` keeps the SPARQL
|
|
248
|
+
* name→URI resolve, then fetches all fields/sections/expands in ONE generated
|
|
249
|
+
* document executed in-process against the compiled schema. Both sources
|
|
250
|
+
* unwrap to the same flat {@link PackEntity} shape.
|
|
251
|
+
*/
|
|
252
|
+
readonly source?: "sparql" | "graphql";
|
|
253
|
+
/** Property whose value names the entity — prefixed name or IRI. */
|
|
254
|
+
readonly by: string;
|
|
255
|
+
/** Optional single class constraint — prefixed name or IRI. */
|
|
256
|
+
readonly type?: string;
|
|
257
|
+
/** CLI description for the lookup command (defaults to a generated one). */
|
|
258
|
+
readonly description?: string;
|
|
259
|
+
/** MCP tool description for the lookup verb (authored one-liner). */
|
|
260
|
+
readonly toolDescription?: string;
|
|
261
|
+
/**
|
|
262
|
+
* Class constraints when entities span several classes — projected as a SPARQL
|
|
263
|
+
* VALUES constraint on the name resolve. Mutually exclusive with `type`.
|
|
264
|
+
*/
|
|
265
|
+
readonly types?: readonly string[];
|
|
266
|
+
/**
|
|
267
|
+
* GraphQL type or interface the generated document's inline fragment targets
|
|
268
|
+
* (`source: "graphql"` only). Defaults to the local name of `type`; required
|
|
269
|
+
* when `types` is used (an interface covering all of them, e.g. `"UIBlock"`).
|
|
270
|
+
*/
|
|
271
|
+
readonly graphqlType?: string;
|
|
272
|
+
/** Inline fields shown under the entity title. */
|
|
273
|
+
readonly fields?: readonly PackField[];
|
|
274
|
+
/** Long-form sections shown after the fields. */
|
|
275
|
+
readonly sections?: readonly PackSection[];
|
|
276
|
+
/** Multi-valued nested projections (structured sections). */
|
|
277
|
+
readonly expand?: readonly PackExpand[];
|
|
278
|
+
/** Progressive-disclosure levels; enables the derived `--detail` flag. */
|
|
279
|
+
readonly disclosure?: PackDisclosure;
|
|
280
|
+
/** Sample capability: `true` for defaults, or a configured sample. */
|
|
281
|
+
readonly sample?: true | PackSample;
|
|
282
|
+
/** Autocomplete override for the `<name>` positional (derive-by-default). */
|
|
283
|
+
readonly completion?: PackCompletion;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
/** A pack list row / flat lookup base: variable name → string value. */
|
|
287
|
+
export type PackRow = Record<string, string>;
|
|
288
|
+
|
|
289
|
+
/**
|
|
290
|
+
* A child record under an expand. Scalar values come from child fields; a nested
|
|
291
|
+
* expand contributes either a collapsed string array (single-field select) or
|
|
292
|
+
* one small record per grandchild.
|
|
293
|
+
*/
|
|
294
|
+
export type PackChildRow = Record<
|
|
295
|
+
string,
|
|
296
|
+
string | readonly string[] | readonly PackRow[]
|
|
297
|
+
>;
|
|
298
|
+
|
|
299
|
+
/**
|
|
300
|
+
* A looked-up pack entity: flat string values plus any expanded child arrays.
|
|
301
|
+
* Both fetch sources resolve to this same shape, so rendering, `--format json`,
|
|
302
|
+
* and the MCP envelope are identical downstream regardless of the fetch layer.
|
|
303
|
+
*/
|
|
304
|
+
export type PackEntity = Record<string, string | readonly PackChildRow[]>;
|
|
305
|
+
|
|
306
|
+
/** One declarative read story: a noun with its preferred queries. */
|
|
307
|
+
export interface PackDefinition {
|
|
308
|
+
/** Command noun (kebab-case), e.g. `"standard"` → `pragma standard list`. */
|
|
309
|
+
readonly noun: string;
|
|
310
|
+
/** CLI description for the list command. */
|
|
311
|
+
readonly description?: string;
|
|
312
|
+
/** MCP tool description (defaults to the CLI description). */
|
|
313
|
+
readonly toolDescription?: string;
|
|
314
|
+
/**
|
|
315
|
+
* The list story. Optional so a pack can serve only the lookup verb of a noun
|
|
316
|
+
* whose list stays hand-written (e.g. `block`). At least one of `list`/`lookup`
|
|
317
|
+
* must be declared.
|
|
318
|
+
*/
|
|
319
|
+
readonly list?: PackList;
|
|
320
|
+
/** Additional list-shaped verbs beyond `list` (e.g. `categories`). */
|
|
321
|
+
readonly verbs?: readonly PackVerb[];
|
|
322
|
+
/** The lookup story. */
|
|
323
|
+
readonly lookup?: PackLookup;
|
|
324
|
+
/**
|
|
325
|
+
* Markdown narrating how this pack's domain is made — its ontology/graph
|
|
326
|
+
* story. Data, like the queries. Surfaced storelessly (off the effective
|
|
327
|
+
* modules) by `pragma colophon`, after pragma's own built-in colophon.
|
|
328
|
+
*/
|
|
329
|
+
readonly colophon?: string;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
/** A validated pack definition paired with where it was declared. */
|
|
333
|
+
export interface PackEntry {
|
|
334
|
+
/** Where the definition was declared (config path, package file, or bundled). */
|
|
335
|
+
readonly source: string;
|
|
336
|
+
readonly definition: PackDefinition;
|
|
337
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plain `(noun, verb)` uniqueness across compiled verbs.
|
|
3
|
+
*
|
|
4
|
+
* Replaces the old reserved-verb / derive-reserved machinery: every verb the
|
|
5
|
+
* projectors see — authored, bundled-pack, or dynamic-pack — must own a distinct
|
|
6
|
+
* `(noun, verb)` key. Precedence (config > package > bundled) is resolved by
|
|
7
|
+
* NOUN before this runs, so a surviving collision here is a real conflict (a
|
|
8
|
+
* dynamic pack claiming an authored noun's verb), reported with both sources.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import type { VerbSpec } from "../spec/types.js";
|
|
12
|
+
|
|
13
|
+
/** The `(noun, verb)` key for a verb path (`["standard","list"]` → `standard list`). */
|
|
14
|
+
export function verbKey(path: readonly [string, string?]): string {
|
|
15
|
+
return path[1] ? `${path[0]} ${path[1]}` : path[0];
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Assert that no two verbs share a `(noun, verb)` key.
|
|
20
|
+
*
|
|
21
|
+
* @param verbs - Every verb the projectors will see.
|
|
22
|
+
* @throws Error naming the colliding key on the first duplicate.
|
|
23
|
+
*/
|
|
24
|
+
export function assertUniqueVerbs(verbs: readonly VerbSpec[]): void {
|
|
25
|
+
const seen = new Set<string>();
|
|
26
|
+
for (const verb of verbs) {
|
|
27
|
+
const key = verbKey(verb.path);
|
|
28
|
+
if (seen.has(key)) {
|
|
29
|
+
throw new Error(
|
|
30
|
+
`duplicate command "${key}" — two capabilities claim it.`,
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
seen.add(key);
|
|
34
|
+
}
|
|
35
|
+
}
|