@canonical/pragma-cli 0.30.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 -40
- 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 -68
- package/src/index.ts +27 -134
- 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 +17 -5
- package/src/types.ts +42 -0
- package/README.md +0 -429
- 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 -18
- package/src/completions/handleQuery.test.ts +0 -93
- package/src/completions/handleQuery.ts +0 -30
- package/src/completions/index.ts +0 -14
- package/src/completions/queryCompletions.test.ts +0 -100
- package/src/completions/queryCompletions.ts +0 -61
- package/src/completions/querySocket.test.ts +0 -70
- package/src/completions/querySocket.ts +0 -44
- 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 -215
- package/src/config/readConfig.test.ts +0 -395
- package/src/config/readConfig.ts +0 -21
- package/src/config/readConfigLayers.test.ts +0 -107
- package/src/config/readConfigLayers.ts +0 -115
- 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 -121
- 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 -55
- 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 -41
- 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 -254
- package/src/domains/block/types.ts +0 -30
- package/src/domains/config/commands/channel.test.ts +0 -112
- package/src/domains/config/commands/channel.ts +0 -86
- package/src/domains/config/commands/configScope.ts +0 -46
- package/src/domains/config/commands/framework.test.ts +0 -105
- package/src/domains/config/commands/framework.ts +0 -91
- 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 -95
- package/src/domains/config/commands/tier.ts +0 -84
- 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 -56
- package/src/domains/config/operations/validateTier.ts +0 -35
- 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/commands/component.test.ts +0 -166
- package/src/domains/create/commands/component.ts +0 -123
- package/src/domains/create/commands/index.ts +0 -3
- package/src/domains/create/commands/package.test.ts +0 -35
- package/src/domains/create/commands/package.ts +0 -21
- package/src/domains/create/generators.ts +0 -8
- package/src/domains/create/index.ts +0 -15
- package/src/domains/create/mcp/index.ts +0 -2
- package/src/domains/create/mcp/specs.ts +0 -168
- 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 -117
- package/src/domains/doctor/formatters/doctor.ts +0 -84
- 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 -130
- 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 -58
- 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 -305
- 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 -20
- 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 -92
- 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.ts +0 -37
- 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 -40
- package/src/domains/graphql/commands/serve.ts +0 -131
- 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 -56
- package/src/domains/graphql/helpers/resolveSourceFiles.ts +0 -45
- 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/index.ts +0 -12
- 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 -133
- package/src/domains/info/formatters/upgrade.ts +0 -68
- 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/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 -5
- package/src/domains/info/types.test-d.ts +0 -35
- package/src/domains/info/types.ts +0 -54
- package/src/domains/llm/capabilities.test.ts +0 -91
- package/src/domains/llm/commands/capabilities.ts +0 -28
- package/src/domains/llm/commands/index.ts +0 -4
- package/src/domains/llm/commands/llm.ts +0 -37
- package/src/domains/llm/data/commandReference.ts +0 -97
- package/src/domains/llm/data/decisionTrees.ts +0 -50
- package/src/domains/llm/data/index.ts +0 -6
- package/src/domains/llm/data/toolCatalog.ts +0 -190
- 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 -53
- package/src/domains/llm/index.ts +0 -9
- package/src/domains/llm/llmCommand.test.ts +0 -93
- package/src/domains/llm/mcp/index.ts +0 -2
- package/src/domains/llm/mcp/specs.ts +0 -94
- package/src/domains/llm/operations/collectContext.ts +0 -47
- 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 -53
- 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 -67
- 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 -77
- 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 -82
- package/src/domains/ontology/commands/list.ts +0 -11
- package/src/domains/ontology/commands/show.test.ts +0 -103
- package/src/domains/ontology/commands/show.ts +0 -14
- package/src/domains/ontology/formatters/index.ts +0 -4
- package/src/domains/ontology/formatters/list.ts +0 -39
- package/src/domains/ontology/formatters/show.ts +0 -105
- package/src/domains/ontology/helpers/findNamespace.ts +0 -23
- package/src/domains/ontology/helpers/index.ts +0 -7
- package/src/domains/ontology/helpers/queryClasses.ts +0 -50
- package/src/domains/ontology/helpers/queryProperties.ts +0 -57
- 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 -45
- package/src/domains/ontology/operations/listOntologies.ts +0 -101
- package/src/domains/ontology/operations/showOntology.test.ts +0 -65
- package/src/domains/ontology/operations/showOntology.ts +0 -41
- package/src/domains/ontology/operations/showOntologyRaw.test.ts +0 -39
- 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 -108
- 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 -181
- 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 -6
- package/src/domains/setup/commands/lsp.ts +0 -49
- package/src/domains/setup/commands/mcp.ts +0 -119
- 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 -33
- 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 -29
- package/src/domains/setup/operations/setupLsp.ts +0 -17
- 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.ts +0 -135
- 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 -109
- 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 -82
- package/src/domains/shared/loaders/bundledLoader.test.ts +0 -248
- package/src/domains/shared/loaders/bundledLoader.ts +0 -206
- package/src/domains/shared/loaders/gitLoader.ts +0 -31
- package/src/domains/shared/loaders/index.ts +0 -9
- package/src/domains/shared/loaders/localLoader.ts +0 -87
- package/src/domains/shared/loaders/readPackageDir.ts +0 -147
- 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 -120
- package/src/domains/shared/lookupMany.ts +0 -85
- package/src/domains/shared/mergeAndParseRefs.test.ts +0 -89
- package/src/domains/shared/mergeAndParseRefs.ts +0 -44
- package/src/domains/shared/namespaces.ts +0 -18
- package/src/domains/shared/packages.ts +0 -20
- package/src/domains/shared/pickRandom.ts +0 -22
- package/src/domains/shared/prefixes.ts +0 -37
- 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/runtime.ts +0 -61
- package/src/domains/shared/sampleFormatters.ts +0 -47
- package/src/domains/shared/semanticPackage.ts +0 -112
- package/src/domains/shared/stories/compileLookupCommand.test.ts +0 -145
- package/src/domains/shared/stories/compileLookupCommand.ts +0 -100
- 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 -102
- package/src/domains/shared/stories/pack/applyPackFilters.ts +0 -76
- package/src/domains/shared/stories/pack/buildLookupQuery.test.ts +0 -51
- package/src/domains/shared/stories/pack/buildLookupQuery.ts +0 -80
- package/src/domains/shared/stories/pack/collectPackStories.test.ts +0 -108
- package/src/domains/shared/stories/pack/collectPackStories.ts +0 -76
- package/src/domains/shared/stories/pack/compilePackCommands.ts +0 -40
- package/src/domains/shared/stories/pack/compilePackStories.test.ts +0 -146
- package/src/domains/shared/stories/pack/compilePackStories.ts +0 -253
- package/src/domains/shared/stories/pack/compilePackToolSpecs.ts +0 -43
- package/src/domains/shared/stories/pack/index.ts +0 -28
- package/src/domains/shared/stories/pack/runSelectQuery.ts +0 -31
- package/src/domains/shared/stories/pack/standardParity.test.ts +0 -308
- package/src/domains/shared/stories/pack/types.ts +0 -104
- package/src/domains/shared/stories/pack/validateStoryPackDefinition.test.ts +0 -240
- package/src/domains/shared/stories/pack/validateStoryPackDefinition.ts +0 -408
- 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 -171
- 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 -50
- package/src/domains/shared/types/modifier.ts +0 -22
- package/src/domains/shared/types/ontology.ts +0 -50
- 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 -64
- 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/standard/commands/categories.test.ts +0 -70
- package/src/domains/standard/commands/categories.ts +0 -48
- package/src/domains/standard/commands/index.ts +0 -6
- package/src/domains/standard/commands/list.test.ts +0 -105
- package/src/domains/standard/commands/list.ts +0 -11
- package/src/domains/standard/commands/lookup.test.ts +0 -135
- package/src/domains/standard/commands/lookup.ts +0 -14
- package/src/domains/standard/commands/sample.ts +0 -57
- package/src/domains/standard/formatters/categories.test.ts +0 -44
- package/src/domains/standard/formatters/categories.ts +0 -38
- package/src/domains/standard/formatters/index.ts +0 -10
- package/src/domains/standard/formatters/list.test.ts +0 -169
- package/src/domains/standard/formatters/list.ts +0 -184
- package/src/domains/standard/formatters/lookup.test.ts +0 -95
- package/src/domains/standard/formatters/lookup.ts +0 -101
- package/src/domains/standard/formatters/sample.ts +0 -15
- package/src/domains/standard/formatters/types.ts +0 -31
- package/src/domains/standard/index.ts +0 -40
- package/src/domains/standard/mcp/index.ts +0 -2
- package/src/domains/standard/mcp/specs.ts +0 -89
- package/src/domains/standard/operations/categories.test.ts +0 -61
- package/src/domains/standard/operations/categories.ts +0 -38
- package/src/domains/standard/operations/index.ts +0 -6
- package/src/domains/standard/operations/list.test.ts +0 -75
- package/src/domains/standard/operations/list.ts +0 -64
- package/src/domains/standard/operations/lookup.test.ts +0 -58
- package/src/domains/standard/operations/lookup.ts +0 -151
- package/src/domains/standard/operations/sample.ts +0 -35
- package/src/domains/standard/orchestration/buildStandardFilters.ts +0 -11
- package/src/domains/standard/orchestration/index.ts +0 -4
- package/src/domains/standard/orchestration/resolveStandardList.ts +0 -45
- package/src/domains/standard/orchestration/resolveStandardLookup.ts +0 -33
- package/src/domains/standard/orchestration/standardEmptyError.test.ts +0 -33
- package/src/domains/standard/orchestration/standardEmptyError.ts +0 -29
- package/src/domains/standard/standardConfig.ts +0 -42
- package/src/domains/standard/stories.test.ts +0 -24
- package/src/domains/standard/stories.ts +0 -151
- package/src/domains/standard/types.ts +0 -15
- package/src/domains/tier/commands/index.ts +0 -3
- package/src/domains/tier/commands/list.test.ts +0 -67
- package/src/domains/tier/commands/list.ts +0 -9
- package/src/domains/tier/formatters/index.ts +0 -3
- package/src/domains/tier/formatters/list.test.ts +0 -33
- package/src/domains/tier/formatters/list.ts +0 -45
- package/src/domains/tier/index.ts +0 -17
- package/src/domains/tier/mcp/index.ts +0 -2
- package/src/domains/tier/mcp/specs.ts +0 -12
- package/src/domains/tier/operations/index.ts +0 -3
- package/src/domains/tier/operations/list.test.ts +0 -32
- package/src/domains/tier/operations/list.ts +0 -33
- package/src/domains/tier/stories.test.ts +0 -22
- package/src/domains/tier/stories.ts +0 -52
- 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 -125
- package/src/domains/token/commands/lookup.ts +0 -95
- package/src/domains/token/commands/sample.ts +0 -53
- 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 -40
- package/src/domains/token/mcp/index.ts +0 -2
- package/src/domains/token/mcp/specs.ts +0 -195
- 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/sessions.ts +0 -32
- package/src/domains/trace/commands/show.ts +0 -145
- 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 -66
- package/src/mcp/tools/registerFromSpec.ts +0 -97
- package/src/mcp/tools/registerTools.test.ts +0 -1201
- 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 -37
- package/src/pipeline/collectCommands.ts +0 -60
- package/src/pipeline/constants.ts +0 -14
- package/src/pipeline/createProgram.test.ts +0 -112
- package/src/pipeline/createProgram.ts +0 -89
- 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 -92
- package/src/pipeline/parseGlobalFlags.ts +0 -46
- package/src/pipeline/renderError.test.ts +0 -151
- package/src/pipeline/renderError.ts +0 -129
- package/src/pipeline/resolveCommandKind.test.ts +0 -68
- package/src/pipeline/resolveCommandKind.ts +0 -78
- package/src/pipeline/runCli.orchestration.test.ts +0 -419
- package/src/pipeline/runCli.test.ts +0 -70
- package/src/pipeline/runCli.ts +0 -268
- package/src/pipeline/types.ts +0 -17
- package/src/testing/cli.ts +0 -43
- package/src/testing/createTestMcpClient.ts +0 -68
- package/src/testing/dsFixtures.ts +0 -506
- 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 -25
- 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 -198
- package/src/testing/integration/cross-binary-byte-equality.test.ts +0 -129
- package/src/testing/integration/edge-cases.test.ts +0 -263
- package/src/testing/integration/executor-execution.test.ts +0 -101
- package/src/testing/integration/executor-golden.test.ts +0 -145
- package/src/testing/integration/mcp-surface.test.ts +0 -580
- package/src/testing/integration/parity.test.ts +0 -547
- package/src/testing/regression/0001-skill-discovery-granularity.test.ts +0 -71
- package/src/testing/standardParityFixtures.ts +0 -92
- 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,164 @@
|
|
|
1
|
+
# `testing/behavioral/` — the cross-cutting behavioral-test layer
|
|
2
|
+
|
|
3
|
+
This directory holds PR4's deliverable: the integration/e2e layer that sits
|
|
4
|
+
ON TOP of each capability PR's own per-noun unit tests. It does not re-test
|
|
5
|
+
per-noun unit behavior — read that in a capability's own `*.test.ts`
|
|
6
|
+
(`src/capabilities/<noun>/*.test.ts`). This directory answers a different
|
|
7
|
+
question: does the WHOLE SYSTEM — CLI, MCP, the process boundary, the shared
|
|
8
|
+
fixture graph — behave consistently across nouns and surfaces?
|
|
9
|
+
|
|
10
|
+
If you are landing PR5, PR6, or PR7 and wondering where your journey test
|
|
11
|
+
goes, read this file first.
|
|
12
|
+
|
|
13
|
+
## The non-negotiable rule: parameterize, don't hard-code
|
|
14
|
+
|
|
15
|
+
Every file in this directory drives its assertions over the LIVE surface —
|
|
16
|
+
`liveReadSurface.ts` (derived from `emitSurface(capabilities)`) or a direct
|
|
17
|
+
`emitSurface(capabilities)` call — never a noun/verb/tool name copied from a
|
|
18
|
+
plan document. When PR5 adds `create`, PR6 adds `config` mutations, or PR7
|
|
19
|
+
adds the capabilities catalog, most of the sweeps in this directory (B1, B3,
|
|
20
|
+
B4, B5, B6, B10) pick the new nouns/tools up AUTOMATICALLY, with zero edits
|
|
21
|
+
here. If a sweep does NOT pick up your new noun and you believe it should,
|
|
22
|
+
that's a bug in the sweep's filter — fix the filter, don't hand-add your noun
|
|
23
|
+
name to a list.
|
|
24
|
+
|
|
25
|
+
The one test that must NOT auto-grow is `capabilities/surface.test.ts`
|
|
26
|
+
(PR3-owned, not in this directory) — each PR re-snapshots its OWN emitted
|
|
27
|
+
slice there, in its own diff, and `assertConforms` keeps checking `emitted ⊆
|
|
28
|
+
covenant` (never `==`), since the covenant is the frozen FUTURE surface and
|
|
29
|
+
the emitted set legitimately grows PR-by-PR.
|
|
30
|
+
|
|
31
|
+
## What's here
|
|
32
|
+
|
|
33
|
+
| File | What it proves |
|
|
34
|
+
|---|---|
|
|
35
|
+
| `liveReadSurface.ts` | The parameterization helper — every other file imports `liveVerbs`/`listVerbs`/`lookupVerbs` from here rather than deriving its own. |
|
|
36
|
+
| `harness.foundation.test.ts` | The framework itself boots (fixture graph, foreign-namespace pack, `runCli`, the golden normalizer). |
|
|
37
|
+
| `firstRun.e2e.test.ts`, `rootCli.e2e.test.ts`, `exitCodes.e2e.test.ts`, `mcpServe.e2e.test.ts`, `autoLlm.e2e.test.ts` | The THIN spawn-e2e layer — the real process boundary, kept to exactly these cases (R7). Everything else in this package runs in-process. |
|
|
38
|
+
| `parity.test.ts` | The uniform CLI-json == MCP-json helper (`helpers/parity.ts`), proven on the stable nouns and swept across every read noun (B5). |
|
|
39
|
+
| `errorMatrix.storeless.test.ts`, `errorMatrix.mcp.test.ts` | The error/recovery render matrix, storeless + fixture-backed halves. |
|
|
40
|
+
| `agentSession.mcp.test.ts` | A multi-step agent MCP session (list → pick → lookup) + the SPARQL escape hatch. |
|
|
41
|
+
| `mcpSurface.test.ts` | Every MCP tool the live catalog exposes is callable and well-formed — the "surface ⊆ covenant, exercised" proof. |
|
|
42
|
+
| `disclosure.test.ts` | The cross-noun disclosure sweep (mechanism itself is PR3's/kernel's protected unit test — this only sweeps the noun SET). |
|
|
43
|
+
| `journeys.cli.test.ts` | The `block list` tier-chain/channel journey (the one hand-written verb). |
|
|
44
|
+
| `completion.test.ts` | The THIN main-line `__complete` candidate contract (§6 — see "Completion" below). |
|
|
45
|
+
|
|
46
|
+
Plus `testing/eval/` (the eval harness + seed cases) and `testing/PARITY_GAPS.ts`
|
|
47
|
+
(the consolidated accepted-divergence ledger) — siblings of this directory,
|
|
48
|
+
same ownership.
|
|
49
|
+
|
|
50
|
+
## The shared fixture graph
|
|
51
|
+
|
|
52
|
+
`testing/fixtures/graph/canonical.ts` is the ONE content graph every
|
|
53
|
+
store-backed behavioral test boots through. It imports PR3's Button/Modal
|
|
54
|
+
fixture (`testing/fixtures/blockGraph.ts`) verbatim and extends it (tier
|
|
55
|
+
chain, a release channel, tokens, code standards) — it does not fork a
|
|
56
|
+
second graph. If your PR needs new entities for its own journey:
|
|
57
|
+
|
|
58
|
+
- Prefer EXTENDING `canonical.ts` (add a Turtle fragment, concatenate) over
|
|
59
|
+
creating a new fixture file, so the whole package keeps testing against one
|
|
60
|
+
graph and existing anchor assertions (Button, `code/function/purity`,
|
|
61
|
+
`importance`→`primary`, the 4 `ds:Component`s) stay valid.
|
|
62
|
+
- If your noun needs an entirely different ontology/vocabulary (like the
|
|
63
|
+
`ex:` recipe pack does, `testing/fixtures/packs/recipe.ts`), a new fixture
|
|
64
|
+
file is fine — that's the "foreign namespace" pattern, not the main graph.
|
|
65
|
+
|
|
66
|
+
## Booting a store-backed fixture: `bootFixtureRuntime`
|
|
67
|
+
|
|
68
|
+
```ts
|
|
69
|
+
import { bootFixtureRuntime } from "../helpers/fixtureGraph.js";
|
|
70
|
+
import { CANONICAL_TTL, CANONICAL_CONFIG } from "../fixtures/graph/canonical.js";
|
|
71
|
+
|
|
72
|
+
const fixture = await bootFixtureRuntime({ ttl: CANONICAL_TTL, config: CANONICAL_CONFIG });
|
|
73
|
+
try {
|
|
74
|
+
// fixture.cwd carries a REAL pragma.lock.json — bootRuntime(flags, fixture.cwd),
|
|
75
|
+
// executeVerb(...), projectMcp(modules, fixture.cwd), and (if you must)
|
|
76
|
+
// runCli(args, { cwd: fixture.cwd }) all resolve the SAME cached pack.
|
|
77
|
+
} finally {
|
|
78
|
+
await fixture.dispose();
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Use `packRuntime.ts#buildFixtureRuntime` (PR3's helper) instead when you only
|
|
83
|
+
need ONE surface (a direct `verb.run()` call) — it's cheaper (no lock file).
|
|
84
|
+
Reach for `bootFixtureRuntime` specifically when you need CLI and MCP (or a
|
|
85
|
+
spawn) to agree on the same store.
|
|
86
|
+
|
|
87
|
+
## Cross-surface parity: `assertCliMcpParity`
|
|
88
|
+
|
|
89
|
+
```ts
|
|
90
|
+
import { assertCliMcpParity } from "../helpers/parity.js";
|
|
91
|
+
|
|
92
|
+
await assertCliMcpParity({
|
|
93
|
+
modules: capabilities, // or your module array
|
|
94
|
+
verb: yourVerbSpec,
|
|
95
|
+
tool: "your_tool_name",
|
|
96
|
+
cwd: fixture.cwd,
|
|
97
|
+
params: { name: ["Something"] }, // same bag serves both surfaces
|
|
98
|
+
});
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
v2's MCP envelope IS the CLI `--format json` envelope — this is structural
|
|
102
|
+
deep-equality, not the old condensed-shape byte comparison. Don't reproduce a
|
|
103
|
+
`condensed`/token-count MCP shape; there isn't one (`PARITY_GAPS`
|
|
104
|
+
`no-condensed-mcp-envelope`).
|
|
105
|
+
|
|
106
|
+
Two things this helper does NOT handle — check `PARITY_GAPS.ts` before
|
|
107
|
+
assuming a mismatch is a bug:
|
|
108
|
+
- A mutating verb's plan-first preview differs in `meta` shape between a CLI
|
|
109
|
+
`--dry-run` and an unconfirmed MCP call by design (`plan-first-meta-differs`).
|
|
110
|
+
- `sample` verbs draw an independent random selection per call — never assert
|
|
111
|
+
content equality on one, only structure.
|
|
112
|
+
|
|
113
|
+
## Adding your PR's journey
|
|
114
|
+
|
|
115
|
+
1. **New nouns your PR adds are picked up automatically** by every sweep in
|
|
116
|
+
this directory that iterates `liveReadSurface.ts`, `emitSurface`, or
|
|
117
|
+
`capabilities` directly. Run the existing suite after landing your noun —
|
|
118
|
+
if `mcpSurface.test.ts`/`parity.test.ts` (B4/B5) pass with no edits, you're
|
|
119
|
+
already covered for the generic contract.
|
|
120
|
+
2. **Your noun's own SPECIFIC journey** (a multi-step flow only your noun
|
|
121
|
+
makes sense for — e.g. PR5's `create` dry-run → real → byte-equality with
|
|
122
|
+
summon) is your PR's to add, as a new file here (`journeys.<yourNoun>.test.ts`
|
|
123
|
+
or similar), following the naming/parameterization conventions above.
|
|
124
|
+
3. **Extend, don't duplicate, the eval seed.** Add a `cases/<yourArea>.ts`
|
|
125
|
+
file (`EvalCase[]`) under `testing/eval/cases/`, mirroring
|
|
126
|
+
`cases/readNouns.ts`, and wire it into `eval.test.ts`/`report.ts`'s
|
|
127
|
+
`allSeedCases` concat.
|
|
128
|
+
4. **Append to `PARITY_GAPS.ts`**, don't start a second ledger, when you find
|
|
129
|
+
(or design in) an intentional divergence from a naive parity/behavior
|
|
130
|
+
expectation.
|
|
131
|
+
5. **Keep the spawn layer thin.** Only reach for `runCli` when the PROCESS
|
|
132
|
+
BOUNDARY itself is what's under test (first-run, `--version`, real exit
|
|
133
|
+
codes, `mcp` serve boot). Everything else: `executeVerb`/`projectCli`/
|
|
134
|
+
`projectMcp`/`bootFixtureRuntime`, in-process.
|
|
135
|
+
|
|
136
|
+
## Extension points this PR left for you, by owner
|
|
137
|
+
|
|
138
|
+
- **PR5 (`create`)** — `C1` in the port ledger. No journey exists yet for
|
|
139
|
+
`create component/package/application` dry-run/real/byte-equality. Add
|
|
140
|
+
`journeys.create.test.ts` here plus its own eval cases.
|
|
141
|
+
- **PR6 (config mutation, info enrichment, doctor, upgrade, setup, `graph
|
|
142
|
+
query`)** — `C2`/`C3`/`C4` — **BUILT**. Each new verb ships its own
|
|
143
|
+
in-diff coverage: `config/field.test.ts`, `info/info.test.ts`,
|
|
144
|
+
`doctor/doctor.test.ts`, `upgrade/upgrade.test.ts`, `setup/setup.test.ts`,
|
|
145
|
+
`graph/query.test.ts`. `graph query` (tool `graph_query`) is now LIVE
|
|
146
|
+
(`PARITY_GAPS` `graph-query-deferred` reworded to record its two residual
|
|
147
|
+
divergences); B2's SPARQL-escape-hatch coverage continues to exercise the
|
|
148
|
+
shared `PragmaRuntime.query.sparql` facade the live verb delegates to. Future
|
|
149
|
+
work may re-drive B2 through the tool the way B1-B6 do for the read nouns.
|
|
150
|
+
- **PR7 (capabilities catalog, MCP prompts, budget activation)** — `C5`. The
|
|
151
|
+
eval harness (`testing/eval/`) is seeded with 14 representative cases across
|
|
152
|
+
all 4 kinds (tool/content/disclosure/prompt) — populate the full matrix on
|
|
153
|
+
top, not a parallel harness. `mcpP95Warm` (`testing/perf/mcpP95Warm.seed.test.ts`)
|
|
154
|
+
and `condensedSDL` (`testing/eval/cases/stable.ts`) are SEEDED (measured,
|
|
155
|
+
softly checked) — this is where they graduate to enforced, alongside
|
|
156
|
+
`help`/`complete`/`warmStoreVerb` in `testing/perf/budgets.test.ts`.
|
|
157
|
+
- **PR8 (completion merge, PR-C)** — `R6`. This package's main-line
|
|
158
|
+
`kernel/completion/complete.ts` is intentionally minimal; PR-C's fuller
|
|
159
|
+
engine (shell drivers, script goldens, rank/parse/resolve) lands at PR8.
|
|
160
|
+
`completion.test.ts` documents two gaps the fuller engine may want to close
|
|
161
|
+
(verb-level candidates aren't sorted; there's no per-verb flag completion at
|
|
162
|
+
all today) — see `PARITY_GAPS` `completion-verb-level-not-sorted`. Don't
|
|
163
|
+
double-port the rich suite; this file's thin candidate-format/set contract
|
|
164
|
+
is all PR4 owns here.
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* B1 — a multi-step agent MCP session over the shared canonical fixture graph;
|
|
3
|
+
* B2 — the SPARQL escape hatch (deterministic bindings over a known graph).
|
|
4
|
+
*
|
|
5
|
+
* Every noun/verb driven here comes from `liveReadSurface.ts` (parameterized
|
|
6
|
+
* over `emitSurface(capabilities)`) — nothing is a noun name copied from the
|
|
7
|
+
* plan, except the "categories" journey, which is itself found by searching
|
|
8
|
+
* the live surface for a `categories`-shaped verb (today only `standard`
|
|
9
|
+
* declares one; the test degrades to a no-op if none exists).
|
|
10
|
+
*
|
|
11
|
+
* B2 (R2 — the live surface): `graph query` (tool `graph_query`) is now live as
|
|
12
|
+
* of PR6, with its own SELECT/ASK/CONSTRUCT + parity coverage in
|
|
13
|
+
* `capabilities/graph/query.test.ts`. B2 keeps exercising the escape hatch
|
|
14
|
+
* through `PragmaRuntime.query.sparql` directly — the exact seam the live verb
|
|
15
|
+
* delegates to (see PARITY_GAPS `graph-query-deferred`).
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import { afterAll, beforeAll, describe, expect, it } from "vitest";
|
|
19
|
+
import { capabilities } from "../../capabilities/index.js";
|
|
20
|
+
import {
|
|
21
|
+
ALL_VISIBLE_CONFIG,
|
|
22
|
+
CANONICAL_TTL,
|
|
23
|
+
} from "../fixtures/graph/canonical.js";
|
|
24
|
+
import {
|
|
25
|
+
bootFixtureRuntime,
|
|
26
|
+
type FixtureGraph,
|
|
27
|
+
} from "../helpers/fixtureGraph.js";
|
|
28
|
+
import { projectMcp } from "../helpers/projectMcp.js";
|
|
29
|
+
import { listVerbs, liveVerbs, lookupVerbs } from "./liveReadSurface.js";
|
|
30
|
+
|
|
31
|
+
/** Nouns exposing BOTH a `list` and a `lookup` — the "browse then inspect" pair. */
|
|
32
|
+
const browsableNouns = listVerbs
|
|
33
|
+
.map((v) => v.noun)
|
|
34
|
+
.filter((noun) => lookupVerbs.some((v) => v.noun === noun));
|
|
35
|
+
|
|
36
|
+
/** The one live verb literally named `categories`, if any noun declares one. */
|
|
37
|
+
const categoriesVerb = liveVerbs.find(
|
|
38
|
+
(v) => v.verb === "categories" && v.tool !== false,
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
let fixture: FixtureGraph;
|
|
42
|
+
let mcp: Awaited<ReturnType<typeof projectMcp>>;
|
|
43
|
+
|
|
44
|
+
beforeAll(async () => {
|
|
45
|
+
fixture = await bootFixtureRuntime({
|
|
46
|
+
ttl: CANONICAL_TTL,
|
|
47
|
+
config: ALL_VISIBLE_CONFIG,
|
|
48
|
+
});
|
|
49
|
+
mcp = await projectMcp(capabilities, fixture.cwd);
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
afterAll(async () => {
|
|
53
|
+
await mcp.cleanup();
|
|
54
|
+
await fixture.dispose();
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
describe("agent session — list, pick, lookup (B1)", () => {
|
|
58
|
+
it.each(
|
|
59
|
+
browsableNouns,
|
|
60
|
+
)("%s: list -> pick first -> lookup resolves it", async (noun) => {
|
|
61
|
+
const list = await mcp.callTool(`${noun}_list`);
|
|
62
|
+
expect(list.ok).toBe(true);
|
|
63
|
+
const rows = list.data as { name: string }[];
|
|
64
|
+
expect(rows.length).toBeGreaterThan(0);
|
|
65
|
+
const first = rows[0] as { name: string };
|
|
66
|
+
|
|
67
|
+
const lookup = await mcp.callTool(`${noun}_lookup`, { name: [first.name] });
|
|
68
|
+
expect(lookup.ok).toBe(true);
|
|
69
|
+
const data = lookup.data as {
|
|
70
|
+
results: { name: string }[];
|
|
71
|
+
errors: unknown[];
|
|
72
|
+
};
|
|
73
|
+
expect(data.errors).toEqual([]);
|
|
74
|
+
expect(data.results[0]?.name).toBe(first.name);
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
it.each(
|
|
78
|
+
browsableNouns,
|
|
79
|
+
)("%s: a BATCH lookup with one hit reports the miss without failing the call", async (noun) => {
|
|
80
|
+
// `makeLookupRun` (kernel/packs/runBodies.ts) throws on a TOTAL miss (see
|
|
81
|
+
// the errorMatrix.mcp.test.ts B3 suite) — a partial batch is the "miss
|
|
82
|
+
// reported, call not failed" shape (an ADAPTATION of the plan's B1/B3
|
|
83
|
+
// wording, which described a single-name miss; verified against the
|
|
84
|
+
// live behavior).
|
|
85
|
+
const list = await mcp.callTool(`${noun}_list`);
|
|
86
|
+
const rows = list.data as { name: string }[];
|
|
87
|
+
const known = (rows[0] as { name: string }).name;
|
|
88
|
+
|
|
89
|
+
const result = await mcp.callTool(`${noun}_lookup`, {
|
|
90
|
+
name: [known, "zzz-definitely-not-a-real-entity"],
|
|
91
|
+
});
|
|
92
|
+
expect(result.ok).toBe(true);
|
|
93
|
+
const data = result.data as {
|
|
94
|
+
results: { name: string }[];
|
|
95
|
+
errors: { code: string }[];
|
|
96
|
+
};
|
|
97
|
+
expect(data.results[0]?.name).toBe(known);
|
|
98
|
+
expect(data.errors[0]?.code).toBe("ENTITY_NOT_FOUND");
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
describe("agent session — the categories journey, if the live surface declares one (B1)", () => {
|
|
103
|
+
it("categories -> list{category} -> lookup has dos", async () => {
|
|
104
|
+
if (!categoriesVerb) return; // No noun currently declares `categories` — skip gracefully.
|
|
105
|
+
const noun = categoriesVerb.noun;
|
|
106
|
+
|
|
107
|
+
const categories = await mcp.callTool(`${noun}_categories`);
|
|
108
|
+
expect(categories.ok).toBe(true);
|
|
109
|
+
const categoryRows = categories.data as { name: string }[];
|
|
110
|
+
expect(categoryRows.length).toBeGreaterThan(0);
|
|
111
|
+
|
|
112
|
+
// Walk categories -> entries until the sweep finds one with declared
|
|
113
|
+
// `dos` (a category whose standards happen to have none is not a
|
|
114
|
+
// failure — the journey just needs ONE positive case to prove the shape).
|
|
115
|
+
let foundDos: readonly unknown[] | undefined;
|
|
116
|
+
for (const category of categoryRows) {
|
|
117
|
+
const filtered = await mcp.callTool(`${noun}_list`, {
|
|
118
|
+
category: category.name,
|
|
119
|
+
});
|
|
120
|
+
const rows = filtered.data as { name: string }[];
|
|
121
|
+
for (const row of rows) {
|
|
122
|
+
const lookup = await mcp.callTool(`${noun}_lookup`, {
|
|
123
|
+
name: [row.name],
|
|
124
|
+
detail: "standard",
|
|
125
|
+
});
|
|
126
|
+
const data = lookup.data as { results: { dos?: unknown[] }[] };
|
|
127
|
+
const dos = data.results[0]?.dos;
|
|
128
|
+
if (dos && dos.length > 0) {
|
|
129
|
+
foundDos = dos;
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
if (foundDos) break;
|
|
134
|
+
}
|
|
135
|
+
expect(foundDos?.length).toBeGreaterThan(0);
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
describe("the SPARQL escape hatch — deterministic bindings (B2, adapted)", () => {
|
|
140
|
+
it("resolves the 4 canonical components, ordered by name", async () => {
|
|
141
|
+
const result = await fixture.runtime.query.sparql(
|
|
142
|
+
"SELECT ?name WHERE { ?c a ds:Component ; ds:name ?name } ORDER BY ?name",
|
|
143
|
+
);
|
|
144
|
+
expect(result.type).toBe("select");
|
|
145
|
+
const names =
|
|
146
|
+
result.type === "select" ? result.bindings.map((b) => b.name) : [];
|
|
147
|
+
expect(names).toEqual(["Beta Widget", "Button", "LXD Panel", "Modal"]);
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
it("a COUNT aggregate over ds:Component matches the list length", async () => {
|
|
151
|
+
const countResult = await fixture.runtime.query.sparql(
|
|
152
|
+
"SELECT (COUNT(*) AS ?c) WHERE { ?comp a ds:Component }",
|
|
153
|
+
);
|
|
154
|
+
const count =
|
|
155
|
+
countResult.type === "select"
|
|
156
|
+
? Number(countResult.bindings[0]?.c ?? 0)
|
|
157
|
+
: 0;
|
|
158
|
+
expect(count).toBe(4);
|
|
159
|
+
});
|
|
160
|
+
});
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A10 — auto-LLM output-mode selection, observed through the real binary.
|
|
3
|
+
*
|
|
4
|
+
* `parseGlobalFlags`'s auto-LLM RULE is PR1-protected at the unit level
|
|
5
|
+
* (`globalFlags.test.ts`, with an injected `OutputEnvironment`). What only a
|
|
6
|
+
* spawn can prove is the OBSERVABLE consequence: a piped `pragma` process
|
|
7
|
+
* (the shape an agent captures) really does default to condensed Markdown
|
|
8
|
+
* with no flag. `runCli`/`spawnSync` always pipes stdout — there is no
|
|
9
|
+
* practical way to allocate a real TTY in this harness to exercise the
|
|
10
|
+
* opposite (interactive) branch, which stays a PR1 unit concern
|
|
11
|
+
* (`isTty: true` injected).
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import { describe, expect, it } from "vitest";
|
|
15
|
+
import { runCli } from "../helpers/runCli.js";
|
|
16
|
+
|
|
17
|
+
describe("auto-LLM on a piped (non-TTY) stdout (A10, e2e)", () => {
|
|
18
|
+
it("defaults to condensed Markdown with no flag", () => {
|
|
19
|
+
const result = runCli(["info"]);
|
|
20
|
+
expect(result.exitCode).toBe(0);
|
|
21
|
+
// llm formatters render a Markdown heading; plain does not.
|
|
22
|
+
expect(result.stdout).toMatch(/^#/);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it("--format json disables auto-llm even when piped", () => {
|
|
26
|
+
const result = runCli(["info", "--format", "json"]);
|
|
27
|
+
expect(result.exitCode).toBe(0);
|
|
28
|
+
expect(() => JSON.parse(result.stdout)).not.toThrow();
|
|
29
|
+
expect(result.stdout.startsWith("#")).toBe(false);
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it("PRAGMA_NO_AUTO_LLM keeps plain output when piped", () => {
|
|
33
|
+
const result = runCli(["info"], { env: { PRAGMA_NO_AUTO_LLM: "1" } });
|
|
34
|
+
expect(result.exitCode).toBe(0);
|
|
35
|
+
expect(result.stdout.startsWith("#")).toBe(false);
|
|
36
|
+
expect(result.stdout).toContain("pragma v");
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
it("an explicit --llm matches the auto-selected output", () => {
|
|
40
|
+
const auto = runCli(["info"]);
|
|
41
|
+
const explicit = runCli(["info", "--llm"]);
|
|
42
|
+
expect(explicit.stdout).toBe(auto.stdout);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* B10 — the LIVE `__complete` candidate contract over the live read surface.
|
|
3
|
+
*
|
|
4
|
+
* The full completion engine (`kernel/completion`: parse → resolve → rank, the
|
|
5
|
+
* spec-derived model, the entity seam) owns the unit-level guarantees; this
|
|
6
|
+
* pins the behaviour end-to-end against the LIVE capabilities and — for the
|
|
7
|
+
* entity tier — against a REAL built pack index on disk (the locked-pack branch
|
|
8
|
+
* of the storeless reader, which the engine's own tests exercise only via the
|
|
9
|
+
* embedded fallback). Parameterized over the live read surface so noun/verb
|
|
10
|
+
* renames never churn it.
|
|
11
|
+
*
|
|
12
|
+
* The engine's `runComplete(words, modules, env)` is async and never throws;
|
|
13
|
+
* the entity tier is fed by `indexCompletionEnv(cwd)` — a storeless read of the
|
|
14
|
+
* active pack's `index.json`, never a store boot.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { describe, expect, it } from "vitest";
|
|
18
|
+
import { capabilities } from "../../capabilities/index.js";
|
|
19
|
+
import { runComplete } from "../../kernel/completion/complete.js";
|
|
20
|
+
import { indexCompletionEnv } from "../../kernel/completion/entitySource.js";
|
|
21
|
+
import { emitSurface } from "../../kernel/spec/emitSurface.js";
|
|
22
|
+
import {
|
|
23
|
+
ALL_VISIBLE_CONFIG,
|
|
24
|
+
CANONICAL_TTL,
|
|
25
|
+
} from "../fixtures/graph/canonical.js";
|
|
26
|
+
import { bootFixtureRuntime } from "../helpers/fixtureGraph.js";
|
|
27
|
+
import { liveVerbs } from "./liveReadSurface.js";
|
|
28
|
+
|
|
29
|
+
const liveNouns = [...new Set(liveVerbs.map((v) => v.noun))];
|
|
30
|
+
/** noun -> its live verb labels (self-verb nouns get one entry: the noun itself). */
|
|
31
|
+
const verbsByNoun = new Map<string, string[]>();
|
|
32
|
+
for (const v of liveVerbs) {
|
|
33
|
+
const list = verbsByNoun.get(v.noun) ?? [];
|
|
34
|
+
if (v.verb !== v.noun) list.push(v.verb);
|
|
35
|
+
verbsByNoun.set(v.noun, list);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
describe("noun-level candidates: sorted, prefix-filtered, program name stripped", () => {
|
|
39
|
+
it("a live prefix resolves exactly the matching live nouns, sorted", async () => {
|
|
40
|
+
const expected = liveNouns.filter((n) => n.startsWith("s")).sort();
|
|
41
|
+
expect(expected.length).toBeGreaterThan(0); // sanity: the sweep covers something
|
|
42
|
+
await expect(runComplete(["s"], capabilities)).resolves.toEqual(expected);
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
it("an unknown prefix resolves to nothing", async () => {
|
|
46
|
+
await expect(
|
|
47
|
+
runComplete(["zzz-not-a-noun"], capabilities),
|
|
48
|
+
).resolves.toEqual([]);
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
it("strips a leading program name some shells include", async () => {
|
|
52
|
+
const expected = liveNouns.filter((n) => n.startsWith("s")).sort();
|
|
53
|
+
await expect(runComplete(["pragma", "s"], capabilities)).resolves.toEqual(
|
|
54
|
+
expected,
|
|
55
|
+
);
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
describe("verb-level candidates: the SET matches the live surface", () => {
|
|
60
|
+
const multiVerbNouns = [...verbsByNoun.entries()].filter(
|
|
61
|
+
([, verbs]) => verbs.length > 1,
|
|
62
|
+
);
|
|
63
|
+
|
|
64
|
+
it("has at least one multi-verb noun to sweep", () => {
|
|
65
|
+
expect(multiVerbNouns.length).toBeGreaterThan(0);
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
it.each(
|
|
69
|
+
multiVerbNouns,
|
|
70
|
+
)("%s: candidates == its live verb set", async (noun, verbs) => {
|
|
71
|
+
const candidates = await runComplete([noun, ""], capabilities);
|
|
72
|
+
expect([...candidates].sort()).toEqual([...verbs].sort());
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
describe("flags are kebab-cased at emission (the live, testable guarantee)", () => {
|
|
77
|
+
it("every emitted flag is kebab-case, never camelCase", () => {
|
|
78
|
+
const { nouns } = emitSurface(capabilities);
|
|
79
|
+
let sawAtLeastOneFlag = false;
|
|
80
|
+
for (const { verbs } of Object.values(nouns)) {
|
|
81
|
+
for (const verb of verbs) {
|
|
82
|
+
for (const flag of verb.flags ?? []) {
|
|
83
|
+
sawAtLeastOneFlag = true;
|
|
84
|
+
expect(flag).toMatch(/^--[a-z][a-z0-9-]*$/);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
expect(sawAtLeastOneFlag).toBe(true);
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
describe("entity params resolve from a real built pack index (B10)", () => {
|
|
93
|
+
it("a lookup's entity positional completes from the built pack index", async () => {
|
|
94
|
+
const fixture = await bootFixtureRuntime({
|
|
95
|
+
ttl: CANONICAL_TTL,
|
|
96
|
+
config: ALL_VISIBLE_CONFIG,
|
|
97
|
+
});
|
|
98
|
+
try {
|
|
99
|
+
// The locked-pack branch of the storeless reader: a real index.json on
|
|
100
|
+
// disk under the fixture cwd, read without booting the store.
|
|
101
|
+
const all = await runComplete(
|
|
102
|
+
["block", "lookup", ""],
|
|
103
|
+
capabilities,
|
|
104
|
+
indexCompletionEnv(fixture.cwd),
|
|
105
|
+
);
|
|
106
|
+
expect(all.length).toBeGreaterThan(0);
|
|
107
|
+
|
|
108
|
+
const narrowed = await runComplete(
|
|
109
|
+
["block", "lookup", "ds:b"],
|
|
110
|
+
capabilities,
|
|
111
|
+
indexCompletionEnv(fixture.cwd),
|
|
112
|
+
);
|
|
113
|
+
// Every ranked candidate carries the partial (case-insensitive), and the
|
|
114
|
+
// filter is strictly narrowing — the index tier really ran.
|
|
115
|
+
expect(
|
|
116
|
+
narrowed.every((name) => name.toLowerCase().includes("ds:b")),
|
|
117
|
+
).toBe(true);
|
|
118
|
+
expect(narrowed.length).toBeGreaterThan(0);
|
|
119
|
+
expect(narrowed.length).toBeLessThan(all.length);
|
|
120
|
+
} finally {
|
|
121
|
+
await fixture.dispose();
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
describe("global flags complete for a dash prefix, at any position", () => {
|
|
127
|
+
it("completes global flags regardless of position", async () => {
|
|
128
|
+
await expect(runComplete(["--l"], capabilities)).resolves.toEqual([
|
|
129
|
+
"--llm",
|
|
130
|
+
]);
|
|
131
|
+
});
|
|
132
|
+
});
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* B6 — the cross-noun disclosure SWEEP, de-duplicated against PR3's own unit
|
|
3
|
+
* coverage.
|
|
4
|
+
*
|
|
5
|
+
* PR3 already ships `disclosure — canonical-index gating` / `resolveDetail
|
|
6
|
+
* precedence` / `MCP detail param` as protected MECHANISM tests
|
|
7
|
+
* (`kernel/packs/disclosure.test.ts`). PR4's job is different: prove the
|
|
8
|
+
* mechanism holds across EVERY noun that actually opts into disclosure — not
|
|
9
|
+
* re-testing precedence or gating, just sweeping the noun SET. Parameterized
|
|
10
|
+
* over `liveReadSurface.ts`, filtered to verbs whose `VerbSpec.disclosure` is
|
|
11
|
+
* actually declared (today: `block`, `standard` — `modifier`/`token` declare
|
|
12
|
+
* no disclosure spec at all, verified against the live pack definitions, so
|
|
13
|
+
* they are correctly excluded rather than assumed).
|
|
14
|
+
*
|
|
15
|
+
* The per-field comparison is CONTENT-AGNOSTIC (key-set growth, not a named
|
|
16
|
+
* field) so the sweep needs no per-noun knowledge of which field is "the deep
|
|
17
|
+
* one" — canonical `digest`->`standard` rename (PARITY_GAPS
|
|
18
|
+
* `digest-renamed-standard`) is exercised implicitly: gating is by canonical
|
|
19
|
+
* index, and the sweep never names a level string other than the three
|
|
20
|
+
* canonical ones.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
import { afterAll, beforeAll, describe, expect, it } from "vitest";
|
|
24
|
+
import { capabilities } from "../../capabilities/index.js";
|
|
25
|
+
import { DETAIL_LEVELS } from "../../constants.js";
|
|
26
|
+
import {
|
|
27
|
+
ALL_VISIBLE_CONFIG,
|
|
28
|
+
CANONICAL_TTL,
|
|
29
|
+
} from "../fixtures/graph/canonical.js";
|
|
30
|
+
import {
|
|
31
|
+
bootFixtureRuntime,
|
|
32
|
+
type FixtureGraph,
|
|
33
|
+
} from "../helpers/fixtureGraph.js";
|
|
34
|
+
import { projectMcp } from "../helpers/projectMcp.js";
|
|
35
|
+
import { lookupVerbs } from "./liveReadSurface.js";
|
|
36
|
+
|
|
37
|
+
const disclosureLookupVerbs = lookupVerbs.filter(
|
|
38
|
+
(v) => v.spec.disclosure !== undefined,
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
let fixture: FixtureGraph;
|
|
42
|
+
let mcp: Awaited<ReturnType<typeof projectMcp>>;
|
|
43
|
+
|
|
44
|
+
beforeAll(async () => {
|
|
45
|
+
fixture = await bootFixtureRuntime({
|
|
46
|
+
ttl: CANONICAL_TTL,
|
|
47
|
+
config: ALL_VISIBLE_CONFIG,
|
|
48
|
+
});
|
|
49
|
+
mcp = await projectMcp(capabilities, fixture.cwd);
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
afterAll(async () => {
|
|
53
|
+
await mcp.cleanup();
|
|
54
|
+
await fixture.dispose();
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
describe("declares its levels within the canonical index (B6)", () => {
|
|
58
|
+
it.each(disclosureLookupVerbs)("$noun: levels ⊆ the canonical index", (v) => {
|
|
59
|
+
const levels = v.spec.disclosure?.levels ?? [];
|
|
60
|
+
for (const level of levels) {
|
|
61
|
+
expect(DETAIL_LEVELS as readonly string[]).toContain(level);
|
|
62
|
+
}
|
|
63
|
+
expect(levels).toContain(v.spec.disclosure?.default);
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
describe("detail:summary vs detail:detailed — key-set growth (B6)", () => {
|
|
68
|
+
it.each(
|
|
69
|
+
disclosureLookupVerbs,
|
|
70
|
+
)("%s_lookup: detailed carries every summary key plus at least one more", async (v) => {
|
|
71
|
+
const noun = v.noun;
|
|
72
|
+
const list = await mcp.callTool(`${noun}_list`);
|
|
73
|
+
const rows = list.data as { name: string }[];
|
|
74
|
+
const name = rows[0]?.name;
|
|
75
|
+
expect(name).toBeDefined();
|
|
76
|
+
if (!name) return;
|
|
77
|
+
|
|
78
|
+
const summary = await mcp.callTool(`${noun}_lookup`, {
|
|
79
|
+
name: [name],
|
|
80
|
+
detail: "summary",
|
|
81
|
+
});
|
|
82
|
+
const detailed = await mcp.callTool(`${noun}_lookup`, {
|
|
83
|
+
name: [name],
|
|
84
|
+
detail: "detailed",
|
|
85
|
+
});
|
|
86
|
+
expect(summary.ok).toBe(true);
|
|
87
|
+
expect(detailed.ok).toBe(true);
|
|
88
|
+
|
|
89
|
+
const summaryEntity = (
|
|
90
|
+
summary.data as { results: Record<string, unknown>[] }
|
|
91
|
+
).results[0] as Record<string, unknown>;
|
|
92
|
+
const detailedEntity = (
|
|
93
|
+
detailed.data as { results: Record<string, unknown>[] }
|
|
94
|
+
).results[0] as Record<string, unknown>;
|
|
95
|
+
|
|
96
|
+
const summaryKeys = new Set(Object.keys(summaryEntity));
|
|
97
|
+
const detailedKeys = new Set(Object.keys(detailedEntity));
|
|
98
|
+
for (const key of summaryKeys) {
|
|
99
|
+
expect(detailedKeys.has(key)).toBe(true);
|
|
100
|
+
}
|
|
101
|
+
expect(detailedKeys.size).toBeGreaterThan(summaryKeys.size);
|
|
102
|
+
});
|
|
103
|
+
});
|