@canonical/pragma-cli 0.31.0 → 0.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/pragma +0 -0
- package/package.json +27 -42
- package/src/bin.ts +292 -11
- package/src/capabilities/block/blockList.verb.ts +150 -0
- package/src/capabilities/block/index.ts +25 -0
- package/src/capabilities/block/pack.ts +155 -0
- package/src/capabilities/block/parity.test.ts +180 -0
- package/src/capabilities/block/tierChain.ts +78 -0
- package/src/capabilities/capabilities/capabilities.render.ts +89 -0
- package/src/capabilities/capabilities/capabilities.test.ts +131 -0
- package/src/capabilities/capabilities/capabilities.verb.ts +48 -0
- package/src/capabilities/capabilities/catalog.ts +144 -0
- package/src/capabilities/capabilities/hints.ts +221 -0
- package/src/capabilities/capabilities/index.ts +13 -0
- package/src/capabilities/capabilities/types.ts +58 -0
- package/src/capabilities/colophon/collectColophon.ts +68 -0
- package/src/capabilities/colophon/colophon.render.test.ts +87 -0
- package/src/capabilities/colophon/colophon.render.ts +38 -0
- package/src/capabilities/colophon/colophon.test.ts +241 -0
- package/src/capabilities/colophon/colophon.verb.ts +41 -0
- package/src/capabilities/colophon/index.ts +6 -0
- package/src/capabilities/colophon/markdownTerminal.test.ts +50 -0
- package/src/capabilities/colophon/markdownTerminal.ts +85 -0
- package/src/capabilities/colophon/pragmaColophon.ts +66 -0
- package/src/capabilities/colophon/types.ts +29 -0
- package/src/capabilities/config/collectConfigShow.ts +32 -0
- package/src/capabilities/config/field.render.ts +28 -0
- package/src/capabilities/config/field.test.ts +188 -0
- package/src/capabilities/config/fields.ts +152 -0
- package/src/capabilities/config/index.ts +6 -0
- package/src/capabilities/config/runField.ts +59 -0
- package/src/capabilities/config/runSet.ts +38 -0
- package/src/capabilities/config/set.test.ts +207 -0
- package/src/capabilities/config/set.verb.ts +70 -0
- package/src/capabilities/config/show.render.ts +61 -0
- package/src/capabilities/config/show.verb.ts +45 -0
- package/src/capabilities/config/types.ts +27 -0
- package/src/capabilities/create/byteEquality.subprocess.test.ts +88 -0
- package/src/capabilities/create/byteEquality.test.ts +222 -0
- package/src/capabilities/create/compiledCreate.subprocess.test.ts +152 -0
- package/src/capabilities/create/create.mcp.test.ts +139 -0
- package/src/capabilities/create/create.render.ts +50 -0
- package/src/capabilities/create/create.test.ts +403 -0
- package/src/capabilities/create/create.verb.ts +435 -0
- package/src/capabilities/create/cwdJail.test.ts +129 -0
- package/src/capabilities/create/generatorToVerbSpec.ts +111 -0
- package/src/capabilities/create/index.ts +25 -0
- package/src/capabilities/create/pathJail.ts +73 -0
- package/src/capabilities/create/pickGenerator.ts +63 -0
- package/src/capabilities/create/templates.embedded.generated.ts +53 -0
- package/src/capabilities/create/types.ts +8 -0
- package/src/capabilities/doctor/checks/checkConfigFile.ts +41 -0
- package/src/capabilities/doctor/checks/checkKeStore.ts +39 -0
- package/src/capabilities/doctor/checks/checkMcpCommands.ts +108 -0
- package/src/capabilities/doctor/checks/checkMcpConfigured.ts +61 -0
- package/src/capabilities/doctor/checks/checkNodeVersion.ts +25 -0
- package/src/capabilities/doctor/checks/checkPackageRefs.ts +73 -0
- package/src/capabilities/doctor/checks/checkPragmaVersion.ts +22 -0
- package/src/capabilities/doctor/checks/checkShellCompletions.test.ts +111 -0
- package/src/capabilities/doctor/checks/checkShellCompletions.ts +131 -0
- package/src/capabilities/doctor/checks/checkSkillsSymlinked.ts +60 -0
- package/src/capabilities/doctor/doctor.render.ts +116 -0
- package/src/capabilities/doctor/doctor.test.ts +179 -0
- package/src/capabilities/doctor/doctor.verb.ts +46 -0
- package/src/capabilities/doctor/index.ts +6 -0
- package/src/capabilities/doctor/runChecks.ts +76 -0
- package/src/capabilities/doctor/types.ts +41 -0
- package/src/capabilities/emptyRecovery.test.ts +112 -0
- package/src/capabilities/graph/index.ts +21 -0
- package/src/capabilities/graph/inspect.render.ts +38 -0
- package/src/capabilities/graph/inspect.test.ts +80 -0
- package/src/capabilities/graph/inspect.verb.ts +51 -0
- package/src/capabilities/graph/query.render.ts +77 -0
- package/src/capabilities/graph/query.test.ts +156 -0
- package/src/capabilities/graph/query.verb.ts +58 -0
- package/src/capabilities/graph/runQuery.ts +49 -0
- package/src/capabilities/index.ts +54 -0
- package/src/capabilities/info/collectInfo.ts +76 -0
- package/src/capabilities/info/index.ts +6 -0
- package/src/capabilities/info/info.render.ts +72 -0
- package/src/capabilities/info/info.test.ts +127 -0
- package/src/capabilities/info/info.verb.ts +46 -0
- package/src/capabilities/info/types.ts +42 -0
- package/src/capabilities/lazy.test.ts +89 -0
- package/src/capabilities/meta/complete.verb.ts +52 -0
- package/src/capabilities/meta/index.ts +15 -0
- package/src/capabilities/meta/mcp.verb.ts +35 -0
- package/src/capabilities/modifier/index.ts +15 -0
- package/src/capabilities/modifier/pack.ts +64 -0
- package/src/capabilities/ontology/index.ts +12 -0
- package/src/capabilities/ontology/ontology.test.ts +94 -0
- package/src/capabilities/ontology/queries.ts +197 -0
- package/src/capabilities/ontology/render.ts +87 -0
- package/src/capabilities/ontology/verbs.ts +170 -0
- package/src/capabilities/prompt/index.ts +18 -0
- package/src/capabilities/prompt/prompt.render.ts +70 -0
- package/src/capabilities/prompt/prompt.test.ts +119 -0
- package/src/capabilities/prompt/types.ts +30 -0
- package/src/capabilities/prompt/verbs.ts +93 -0
- package/src/capabilities/resources/index.ts +15 -0
- package/src/capabilities/resources/provider.ts +231 -0
- package/src/capabilities/resources/resources.test.ts +114 -0
- package/src/capabilities/roundtrip.test.ts +107 -0
- package/src/capabilities/setup/index.ts +6 -0
- package/src/capabilities/setup/operations/setupCompletions.ts +108 -0
- package/src/capabilities/setup/operations/setupGenerator.ts +307 -0
- package/src/capabilities/setup/operations/setupLsp.ts +61 -0
- package/src/capabilities/setup/operations/setupMcp.ts +85 -0
- package/src/capabilities/setup/operations/setupSkills.ts +199 -0
- package/src/capabilities/setup/setup.render.ts +49 -0
- package/src/capabilities/setup/setup.test.ts +351 -0
- package/src/capabilities/setup/setup.verb.ts +209 -0
- package/src/capabilities/setup/shell.ts +85 -0
- package/src/capabilities/setup/types.ts +42 -0
- package/src/capabilities/shared/assertExecOk.ts +106 -0
- package/src/capabilities/shared/packageManager.ts +62 -0
- package/src/capabilities/shared/registry.ts +70 -0
- package/src/capabilities/skill/discover.ts +178 -0
- package/src/capabilities/skill/index.ts +12 -0
- package/src/capabilities/skill/render.ts +60 -0
- package/src/capabilities/skill/skill.test.ts +142 -0
- package/src/capabilities/skill/verbs.ts +100 -0
- package/src/capabilities/sources/collectStatus.ts +87 -0
- package/src/capabilities/sources/index.ts +15 -0
- package/src/capabilities/sources/installSkills.ts +124 -0
- package/src/capabilities/sources/runUpdate.ts +407 -0
- package/src/capabilities/sources/sources.test.ts +642 -0
- package/src/capabilities/sources/status.render.ts +56 -0
- package/src/capabilities/sources/status.verb.ts +42 -0
- package/src/capabilities/sources/types.ts +51 -0
- package/src/capabilities/sources/update.render.ts +35 -0
- package/src/capabilities/sources/update.verb.ts +76 -0
- package/src/capabilities/standard/index.ts +18 -0
- package/src/capabilities/standard/pack.ts +128 -0
- package/src/capabilities/standard/parity.test.ts +208 -0
- package/src/capabilities/surface.test.ts +208 -0
- package/src/capabilities/tier/index.ts +19 -0
- package/src/capabilities/tier/lookup.render.ts +34 -0
- package/src/capabilities/tier/lookup.test.ts +68 -0
- package/src/capabilities/tier/lookup.verb.ts +44 -0
- package/src/capabilities/tier/pack.ts +28 -0
- package/src/capabilities/tier/runLookup.ts +59 -0
- package/src/capabilities/token/addConfig.render.ts +27 -0
- package/src/capabilities/token/addConfig.test.ts +62 -0
- package/src/capabilities/token/addConfig.verb.ts +40 -0
- package/src/capabilities/token/index.ts +19 -0
- package/src/capabilities/token/pack.ts +58 -0
- package/src/capabilities/token/runAddConfig.ts +95 -0
- package/src/capabilities/upgrade/index.ts +6 -0
- package/src/capabilities/upgrade/runUpgrade.ts +119 -0
- package/src/capabilities/upgrade/types.ts +21 -0
- package/src/capabilities/upgrade/upgrade.render.ts +55 -0
- package/src/capabilities/upgrade/upgrade.test.ts +372 -0
- package/src/capabilities/upgrade/upgrade.verb.ts +56 -0
- package/src/constants.test.ts +33 -0
- package/src/constants.ts +38 -70
- package/src/index.ts +27 -122
- package/src/kernel/completion/__snapshots__/emitScripts.test.ts.snap +340 -0
- package/src/kernel/completion/bashDrive.test.ts +73 -0
- package/src/kernel/completion/complete.test.ts +101 -0
- package/src/kernel/completion/complete.ts +77 -0
- package/src/kernel/completion/emitScripts.test.ts +173 -0
- package/src/kernel/completion/emitScripts.ts +122 -0
- package/src/kernel/completion/entitySource.test.ts +198 -0
- package/src/kernel/completion/entitySource.ts +269 -0
- package/src/kernel/completion/index.ts +42 -0
- package/src/kernel/completion/model.test.ts +405 -0
- package/src/kernel/completion/model.ts +259 -0
- package/src/kernel/completion/parse.test.ts +338 -0
- package/src/kernel/completion/parse.ts +294 -0
- package/src/kernel/completion/rank.test.ts +100 -0
- package/src/kernel/completion/rank.ts +118 -0
- package/src/kernel/completion/resolve.test.ts +204 -0
- package/src/kernel/completion/resolve.ts +133 -0
- package/src/kernel/completion/safety.test.ts +374 -0
- package/src/kernel/completion/templates/bash.ts +249 -0
- package/src/kernel/completion/templates/fish.ts +245 -0
- package/src/kernel/completion/templates/shared.ts +134 -0
- package/src/kernel/completion/templates/zsh.ts +246 -0
- package/src/kernel/completion/types.ts +153 -0
- package/src/kernel/config/__snapshots__/firstRun.test.ts.snap +11 -0
- package/src/kernel/config/defaults.ts +28 -0
- package/src/kernel/config/evaluateProjectConfig.ts +119 -0
- package/src/kernel/config/findProjectConfig.ts +45 -0
- package/src/kernel/config/firstRun.test.ts +60 -0
- package/src/kernel/config/firstRun.ts +91 -0
- package/src/kernel/config/globalConfig.ts +94 -0
- package/src/kernel/config/index.ts +35 -0
- package/src/kernel/config/paths.ts +39 -0
- package/src/kernel/config/readConfig.test.ts +245 -0
- package/src/kernel/config/readConfig.ts +94 -0
- package/src/kernel/config/schema.ts +56 -0
- package/src/kernel/config/types.ts +106 -0
- package/src/kernel/config/writeConfigField.ts +82 -0
- package/src/kernel/error/PragmaError.test.ts +119 -0
- package/src/kernel/error/PragmaError.ts +182 -0
- package/src/kernel/error/constants.ts +38 -0
- package/src/kernel/error/fromTaskError.test.ts +83 -0
- package/src/kernel/error/fromTaskError.ts +80 -0
- package/src/kernel/error/index.ts +23 -0
- package/src/kernel/error/recovery.test.ts +60 -0
- package/src/kernel/error/recovery.ts +49 -0
- package/src/kernel/error/renderError.ts +101 -0
- package/src/kernel/error/serialize.ts +28 -0
- package/src/kernel/error/types.ts +62 -0
- package/src/kernel/packs/collect.test.ts +138 -0
- package/src/kernel/packs/collect.ts +108 -0
- package/src/kernel/packs/compile.test.ts +229 -0
- package/src/kernel/packs/compile.ts +315 -0
- package/src/kernel/packs/disclosure.test.ts +200 -0
- package/src/kernel/packs/disclosure.ts +98 -0
- package/src/kernel/packs/glob.ts +39 -0
- package/src/kernel/packs/graphql/buildLookupDocument.ts +397 -0
- package/src/kernel/packs/graphql/fetchGraphqlLookup.ts +217 -0
- package/src/kernel/packs/graphql/nameMap.ts +67 -0
- package/src/kernel/packs/graphqlSource.test.ts +383 -0
- package/src/kernel/packs/iri.ts +78 -0
- package/src/kernel/packs/renderPack.ts +196 -0
- package/src/kernel/packs/resolveEntity.ts +232 -0
- package/src/kernel/packs/runBodies.ts +157 -0
- package/src/kernel/packs/sample.ts +60 -0
- package/src/kernel/packs/schema.ts +328 -0
- package/src/kernel/packs/sparql/applyFilters.ts +83 -0
- package/src/kernel/packs/sparql/applySearch.ts +33 -0
- package/src/kernel/packs/sparql/buildLookupQuery.ts +180 -0
- package/src/kernel/packs/sparql/escape.ts +22 -0
- package/src/kernel/packs/sparql/runSelect.test.ts +80 -0
- package/src/kernel/packs/sparql/runSelect.ts +84 -0
- package/src/kernel/packs/toolDescription.test.ts +81 -0
- package/src/kernel/packs/types.ts +337 -0
- package/src/kernel/packs/uniqueness.ts +35 -0
- package/src/kernel/project/cli/buildProgram.test.ts +387 -0
- package/src/kernel/project/cli/buildProgram.ts +280 -0
- package/src/kernel/project/cli/dispatch.test.ts +288 -0
- package/src/kernel/project/cli/dispatch.ts +334 -0
- package/src/kernel/project/cli/exitCodes.test.ts +59 -0
- package/src/kernel/project/cli/exitCodes.ts +68 -0
- package/src/kernel/project/cli/globalFlags.test.ts +99 -0
- package/src/kernel/project/cli/globalFlags.ts +149 -0
- package/src/kernel/project/cli/helpFormat.ts +58 -0
- package/src/kernel/project/cli/index.ts +21 -0
- package/src/kernel/project/cli/interactionSeam.test.ts +99 -0
- package/src/kernel/project/cli/rootHelp.ts +218 -0
- package/src/kernel/project/cli/suggest.test.ts +54 -0
- package/src/kernel/project/cli/suggest.ts +67 -0
- package/src/kernel/project/cli/suggestNames.ts +122 -0
- package/src/kernel/project/cli/verbHelp.test.ts +138 -0
- package/src/kernel/project/cli/verbHelp.ts +144 -0
- package/src/kernel/project/mcp/buildServer.ts +70 -0
- package/src/kernel/project/mcp/envelope.ts +44 -0
- package/src/kernel/project/mcp/index.ts +8 -0
- package/src/kernel/project/mcp/instructions.ts +48 -0
- package/src/kernel/project/mcp/parity.test.ts +72 -0
- package/src/kernel/project/mcp/prompts/prompts.test.ts +96 -0
- package/src/kernel/project/mcp/prompts/provider.ts +74 -0
- package/src/kernel/project/mcp/prompts/source.ts +194 -0
- package/src/kernel/project/mcp/registerVerb.test.ts +238 -0
- package/src/kernel/project/mcp/registerVerb.ts +296 -0
- package/src/kernel/project/mcp/serve.ts +34 -0
- package/src/kernel/project/mcp/toolDescriptions.test.ts +80 -0
- package/src/kernel/render/__snapshots__/renderers.test.ts.snap +127 -0
- package/src/kernel/render/compactUri.ts +25 -0
- package/src/kernel/render/contracts.ts +72 -0
- package/src/kernel/render/disclosure.ts +44 -0
- package/src/kernel/render/envelope.ts +50 -0
- package/src/kernel/render/formatters.ts +30 -0
- package/src/kernel/render/index.ts +30 -0
- package/src/kernel/render/prefixes.ts +21 -0
- package/src/kernel/render/renderers.test.ts +171 -0
- package/src/kernel/render/renderers.ts +429 -0
- package/src/kernel/render/writeStdout.test.ts +43 -0
- package/src/kernel/render/writeStdout.ts +49 -0
- package/src/kernel/runtime/boot.test.ts +69 -0
- package/src/kernel/runtime/boot.ts +59 -0
- package/src/kernel/runtime/facade.test.ts +125 -0
- package/src/kernel/runtime/facade.ts +47 -0
- package/src/kernel/runtime/graphpack/build.ts +148 -0
- package/src/kernel/runtime/graphpack/buildIndex.ts +229 -0
- package/src/kernel/runtime/graphpack/embedded/pack.generated.ts +8 -0
- package/src/kernel/runtime/graphpack/embedded/pack.index.generated.ts +4 -0
- package/src/kernel/runtime/graphpack/embedded/sample.ttl +39 -0
- package/src/kernel/runtime/graphpack/embedded.ts +70 -0
- package/src/kernel/runtime/graphpack/graphpack.test.ts +153 -0
- package/src/kernel/runtime/graphpack/hash.ts +46 -0
- package/src/kernel/runtime/graphpack/index.ts +21 -0
- package/src/kernel/runtime/graphpack/manifest.ts +55 -0
- package/src/kernel/runtime/graphpack/read.ts +102 -0
- package/src/kernel/runtime/graphpack/types.ts +111 -0
- package/src/kernel/runtime/index.ts +15 -0
- package/src/kernel/runtime/loadSession.ts +56 -0
- package/src/kernel/runtime/lock.ts +90 -0
- package/src/kernel/runtime/paths.ts +37 -0
- package/src/kernel/runtime/probe.test.ts +16 -0
- package/src/kernel/runtime/probe.ts +39 -0
- package/src/kernel/runtime/readEntity.ts +83 -0
- package/src/kernel/runtime/refs/gitOps.ts +88 -0
- package/src/kernel/runtime/refs/parseRef.test.ts +34 -0
- package/src/kernel/runtime/refs/parseRef.ts +103 -0
- package/src/kernel/runtime/refs/resolve.ts +320 -0
- package/src/kernel/runtime/resolveSources.test.ts +154 -0
- package/src/kernel/runtime/resolveSources.ts +66 -0
- package/src/kernel/runtime/store.test.ts +94 -0
- package/src/kernel/runtime/store.ts +90 -0
- package/src/kernel/runtime/storeless.test.ts +86 -0
- package/src/kernel/runtime/types.ts +210 -0
- package/src/kernel/runtime/wasmEmbed.test.ts +142 -0
- package/src/kernel/spec/asVerb.ts +23 -0
- package/src/kernel/spec/emitSurface.test.ts +65 -0
- package/src/kernel/spec/emitSurface.ts +223 -0
- package/src/kernel/spec/index.ts +34 -0
- package/src/kernel/spec/surfaceConformance.test.ts +94 -0
- package/src/kernel/spec/surfaceConformance.ts +135 -0
- package/src/kernel/spec/types.ts +233 -0
- package/src/kernel/spec/validate.test.ts +81 -0
- package/src/kernel/spec/validate.ts +125 -0
- package/src/testing/PARITY_GAPS.test.ts +32 -0
- package/src/testing/PARITY_GAPS.ts +179 -0
- package/src/testing/behavioral/README.md +164 -0
- package/src/testing/behavioral/agentSession.mcp.test.ts +160 -0
- package/src/testing/behavioral/autoLlm.e2e.test.ts +44 -0
- package/src/testing/behavioral/completion.test.ts +132 -0
- package/src/testing/behavioral/disclosure.test.ts +103 -0
- package/src/testing/behavioral/errorMatrix.mcp.test.ts +120 -0
- package/src/testing/behavioral/errorMatrix.storeless.test.ts +123 -0
- package/src/testing/behavioral/exitCodes.e2e.test.ts +53 -0
- package/src/testing/behavioral/firstRun.e2e.test.ts +40 -0
- package/src/testing/behavioral/harness.foundation.test.ts +136 -0
- package/src/testing/behavioral/journeys.cli.test.ts +129 -0
- package/src/testing/behavioral/liveReadSurface.ts +80 -0
- package/src/testing/behavioral/mcpServe.e2e.test.ts +21 -0
- package/src/testing/behavioral/mcpSurface.test.ts +139 -0
- package/src/testing/behavioral/parity.test.ts +224 -0
- package/src/testing/behavioral/rootCli.e2e.test.ts +62 -0
- package/src/testing/eval/__snapshots__/eval.test.ts.snap +201 -0
- package/src/testing/eval/cases/assembly.ts +195 -0
- package/src/testing/eval/cases/effectful.ts +245 -0
- package/src/testing/eval/cases/readNouns.ts +232 -0
- package/src/testing/eval/cases/stable.ts +163 -0
- package/src/testing/eval/eval.test.ts +74 -0
- package/src/testing/eval/harness.ts +91 -0
- package/src/testing/eval/report.ts +58 -0
- package/src/testing/fixtures/blockGraph.ts +112 -0
- package/src/testing/fixtures/completionFixture.ts +239 -0
- package/src/testing/fixtures/fixtureCapability.ts +175 -0
- package/src/testing/fixtures/graph/canonical.ts +184 -0
- package/src/testing/fixtures/packs/recipe.ts +78 -0
- package/src/testing/helpers/fixtureGraph.ts +148 -0
- package/src/testing/helpers/golden.ts +45 -0
- package/src/testing/helpers/packRuntime.ts +118 -0
- package/src/testing/helpers/parity.ts +86 -0
- package/src/testing/helpers/projectCli.ts +35 -0
- package/src/testing/helpers/projectMcp.ts +145 -0
- package/src/testing/helpers/runCli.ts +128 -0
- package/src/testing/perf/budgets.test.ts +164 -0
- package/src/testing/perf/budgets.ts +37 -0
- package/src/testing/perf/globalSetup.ts +30 -0
- package/src/testing/perf/measure.ts +97 -0
- package/src/testing/setupXdgIsolation.ts +13 -12
- package/src/types.ts +42 -0
- package/README.md +0 -458
- package/src/bin.test.ts +0 -54
- package/src/compile-validation.runner.ts +0 -137
- package/src/compile-validation.ts +0 -191
- package/src/completions/computeSocketPath.test.ts +0 -26
- package/src/completions/computeSocketPath.ts +0 -16
- package/src/completions/constants.ts +0 -25
- package/src/completions/handleQuery.test.ts +0 -125
- package/src/completions/handleQuery.ts +0 -49
- package/src/completions/index.ts +0 -14
- package/src/completions/queryCompletions.test.ts +0 -105
- package/src/completions/queryCompletions.ts +0 -75
- package/src/completions/querySocket.test.ts +0 -101
- package/src/completions/querySocket.ts +0 -71
- package/src/completions/startCompletionsServer.test.ts +0 -74
- package/src/completions/startCompletionsServer.ts +0 -75
- package/src/completions/startCompletionsServer.unit.test.ts +0 -131
- package/src/completions/waitForSocket.test.ts +0 -27
- package/src/completions/waitForSocket.ts +0 -27
- package/src/config/configExists.ts +0 -14
- package/src/config/defaultConfig.test.ts +0 -33
- package/src/config/defaultConfig.ts +0 -59
- package/src/config/defaults.json +0 -17
- package/src/config/findProjectConfigPath.test.ts +0 -53
- package/src/config/findProjectConfigPath.ts +0 -36
- package/src/config/index.ts +0 -21
- package/src/config/mergeConfigFileUpdate.ts +0 -58
- package/src/config/parseConfigValues.ts +0 -217
- package/src/config/readConfig.test.ts +0 -395
- package/src/config/readConfig.ts +0 -21
- package/src/config/readConfigLayers.test.ts +0 -109
- package/src/config/readConfigLayers.ts +0 -118
- package/src/config/resolveConfigPath.test.ts +0 -20
- package/src/config/resolveConfigPath.ts +0 -11
- package/src/config/resolveGlobalConfigPath.ts +0 -13
- package/src/config/resolveWriteConfigPath.test.ts +0 -53
- package/src/config/resolveWriteConfigPath.ts +0 -31
- package/src/config/types.ts +0 -128
- package/src/config/writeConfig.ts +0 -37
- package/src/domains/block/blockConfig.ts +0 -97
- package/src/domains/block/commands/index.ts +0 -5
- package/src/domains/block/commands/list.test.ts +0 -111
- package/src/domains/block/commands/list.ts +0 -11
- package/src/domains/block/commands/lookup.test.ts +0 -187
- package/src/domains/block/commands/lookup.ts +0 -14
- package/src/domains/block/commands/sample.ts +0 -56
- package/src/domains/block/formatters/index.ts +0 -5
- package/src/domains/block/formatters/list.test.ts +0 -107
- package/src/domains/block/formatters/list.ts +0 -50
- package/src/domains/block/formatters/lookup.test.ts +0 -318
- package/src/domains/block/formatters/lookup.ts +0 -149
- package/src/domains/block/formatters/sample.ts +0 -21
- package/src/domains/block/formatters/types.ts +0 -16
- package/src/domains/block/helpers/index.ts +0 -4
- package/src/domains/block/helpers/resolveAspects.test.ts +0 -64
- package/src/domains/block/helpers/resolveAspects.ts +0 -35
- package/src/domains/block/index.ts +0 -25
- package/src/domains/block/mcp/index.ts +0 -2
- package/src/domains/block/mcp/specs.ts +0 -67
- package/src/domains/block/operations/index.ts +0 -5
- package/src/domains/block/operations/list.test.ts +0 -80
- package/src/domains/block/operations/list.ts +0 -72
- package/src/domains/block/operations/lookup.test.ts +0 -129
- package/src/domains/block/operations/lookup.ts +0 -446
- package/src/domains/block/operations/sample.ts +0 -41
- package/src/domains/block/orchestration/blockEmptyError.test.ts +0 -26
- package/src/domains/block/orchestration/blockEmptyError.ts +0 -19
- package/src/domains/block/orchestration/buildBlockFilters.ts +0 -12
- package/src/domains/block/orchestration/enrichBlocks.ts +0 -44
- package/src/domains/block/orchestration/index.ts +0 -5
- package/src/domains/block/orchestration/resolveBlockList.ts +0 -39
- package/src/domains/block/orchestration/resolveBlockLookup.ts +0 -35
- package/src/domains/block/stories.test.ts +0 -28
- package/src/domains/block/stories.ts +0 -260
- package/src/domains/block/types.ts +0 -30
- package/src/domains/config/commands/channel.test.ts +0 -128
- package/src/domains/config/commands/channel.ts +0 -99
- package/src/domains/config/commands/configScope.ts +0 -46
- package/src/domains/config/commands/framework.test.ts +0 -119
- package/src/domains/config/commands/framework.ts +0 -103
- package/src/domains/config/commands/index.ts +0 -6
- package/src/domains/config/commands/show.test.ts +0 -61
- package/src/domains/config/commands/show.ts +0 -11
- package/src/domains/config/commands/tier.test.ts +0 -102
- package/src/domains/config/commands/tier.ts +0 -97
- package/src/domains/config/commands/trace.test.ts +0 -165
- package/src/domains/config/commands/trace.ts +0 -83
- package/src/domains/config/formatters/channel.test.ts +0 -70
- package/src/domains/config/formatters/channel.ts +0 -37
- package/src/domains/config/formatters/framework.ts +0 -37
- package/src/domains/config/formatters/index.ts +0 -6
- package/src/domains/config/formatters/show.test.ts +0 -153
- package/src/domains/config/formatters/show.ts +0 -89
- package/src/domains/config/formatters/tier.test.ts +0 -86
- package/src/domains/config/formatters/tier.ts +0 -48
- package/src/domains/config/formatters/trace.ts +0 -28
- package/src/domains/config/index.ts +0 -36
- package/src/domains/config/mcp/index.ts +0 -2
- package/src/domains/config/mcp/specs.ts +0 -100
- package/src/domains/config/operations/index.ts +0 -6
- package/src/domains/config/operations/show.test.ts +0 -78
- package/src/domains/config/operations/show.ts +0 -48
- package/src/domains/config/operations/types.ts +0 -20
- package/src/domains/config/operations/validateChannel.test.ts +0 -36
- package/src/domains/config/operations/validateChannel.ts +0 -24
- package/src/domains/config/operations/validateFramework.ts +0 -24
- package/src/domains/config/operations/validateTier.test.ts +0 -65
- package/src/domains/config/operations/validateTier.ts +0 -43
- package/src/domains/config/stories.ts +0 -42
- package/src/domains/config/tasks/index.ts +0 -6
- package/src/domains/config/tasks/setChannel.ts +0 -21
- package/src/domains/config/tasks/setFramework.ts +0 -21
- package/src/domains/config/tasks/setTier.ts +0 -20
- package/src/domains/config/tasks/setTrace.ts +0 -20
- package/src/domains/config/tasks/writeConfigField.ts +0 -41
- package/src/domains/create/generatorPack/bundled.ts +0 -49
- package/src/domains/create/generatorPack/compileGeneratorPack.test.ts +0 -159
- package/src/domains/create/generatorPack/compileGeneratorPack.ts +0 -312
- package/src/domains/create/index.ts +0 -21
- package/src/domains/create/mcp/index.ts +0 -2
- package/src/domains/create/mcp/specs.ts +0 -13
- package/src/domains/create/renderGeneratorUi.test.ts +0 -103
- package/src/domains/create/renderGeneratorUi.ts +0 -65
- package/src/domains/doctor/commands/doctor.test.ts +0 -75
- package/src/domains/doctor/commands/doctor.ts +0 -43
- package/src/domains/doctor/commands/index.ts +0 -2
- package/src/domains/doctor/formatters/doctor.test.ts +0 -165
- package/src/domains/doctor/formatters/doctor.ts +0 -136
- package/src/domains/doctor/formatters/index.ts +0 -2
- package/src/domains/doctor/index.ts +0 -9
- package/src/domains/doctor/mcp/index.ts +0 -2
- package/src/domains/doctor/mcp/specs.ts +0 -41
- package/src/domains/doctor/operations/checks/checkConfigFile.ts +0 -42
- package/src/domains/doctor/operations/checks/checkKeStore.ts +0 -38
- package/src/domains/doctor/operations/checks/checkMcpCommands.ts +0 -133
- package/src/domains/doctor/operations/checks/checkMcpConfigured.ts +0 -65
- package/src/domains/doctor/operations/checks/checkNodeVersion.ts +0 -25
- package/src/domains/doctor/operations/checks/checkPackageRefs.ts +0 -76
- package/src/domains/doctor/operations/checks/checkPragmaVersion.ts +0 -20
- package/src/domains/doctor/operations/checks/checkShellCompletions.ts +0 -42
- package/src/domains/doctor/operations/checks/checkSkillsSymlinked.ts +0 -64
- package/src/domains/doctor/operations/checks/index.ts +0 -10
- package/src/domains/doctor/operations/checks.test.ts +0 -307
- package/src/domains/doctor/operations/index.ts +0 -3
- package/src/domains/doctor/operations/runChecks.test.ts +0 -176
- package/src/domains/doctor/operations/runChecks.ts +0 -78
- package/src/domains/doctor/operations/types.ts +0 -42
- package/src/domains/graph/commands/index.ts +0 -4
- package/src/domains/graph/commands/inspect.test.ts +0 -94
- package/src/domains/graph/commands/inspect.ts +0 -63
- package/src/domains/graph/commands/query.test.ts +0 -94
- package/src/domains/graph/commands/query.ts +0 -60
- package/src/domains/graph/formatters/index.ts +0 -4
- package/src/domains/graph/formatters/inspect.ts +0 -50
- package/src/domains/graph/formatters/query.test.ts +0 -87
- package/src/domains/graph/formatters/query.ts +0 -74
- package/src/domains/graph/helpers/index.ts +0 -3
- package/src/domains/graph/helpers/resolveUri.test.ts +0 -50
- package/src/domains/graph/helpers/resolveUri.ts +0 -77
- package/src/domains/graph/index.ts +0 -22
- package/src/domains/graph/mcp/index.ts +0 -2
- package/src/domains/graph/mcp/specs.ts +0 -82
- package/src/domains/graph/operations/executeQuery.test.ts +0 -68
- package/src/domains/graph/operations/executeQuery.ts +0 -32
- package/src/domains/graph/operations/index.ts +0 -4
- package/src/domains/graph/operations/inspectUri.test.ts +0 -101
- package/src/domains/graph/operations/inspectUri.ts +0 -64
- package/src/domains/graphql/commands/build.test.ts +0 -196
- package/src/domains/graphql/commands/build.ts +0 -117
- package/src/domains/graphql/commands/check.test.ts +0 -141
- package/src/domains/graphql/commands/check.ts +0 -81
- package/src/domains/graphql/commands/index.ts +0 -5
- package/src/domains/graphql/commands/serve.test.ts +0 -46
- package/src/domains/graphql/commands/serve.ts +0 -141
- package/src/domains/graphql/constants.ts +0 -10
- package/src/domains/graphql/formatters/index.ts +0 -3
- package/src/domains/graphql/formatters/report.ts +0 -78
- package/src/domains/graphql/helpers/gatherSources.test.ts +0 -92
- package/src/domains/graphql/helpers/gatherSources.ts +0 -58
- package/src/domains/graphql/helpers/index.ts +0 -6
- package/src/domains/graphql/helpers/parsePrefixes.test.ts +0 -44
- package/src/domains/graphql/helpers/parsePrefixes.ts +0 -38
- package/src/domains/graphql/helpers/resolveSourceFiles.test.ts +0 -65
- package/src/domains/graphql/helpers/resolveSourceFiles.ts +0 -66
- package/src/domains/graphql/helpers/routeGraphql.test.ts +0 -43
- package/src/domains/graphql/helpers/routeGraphql.ts +0 -28
- package/src/domains/graphql/index.ts +0 -24
- package/src/domains/graphql/operations/compileSchema.test.ts +0 -95
- package/src/domains/graphql/operations/compileSchema.ts +0 -107
- package/src/domains/graphql/operations/createSchemaServer.test.ts +0 -50
- package/src/domains/graphql/operations/createSchemaServer.ts +0 -75
- package/src/domains/graphql/operations/ensureSchemaArtifact.test.ts +0 -167
- package/src/domains/graphql/operations/ensureSchemaArtifact.ts +0 -178
- package/src/domains/graphql/operations/index.ts +0 -17
- package/src/domains/graphql/types.ts +0 -29
- package/src/domains/info/commands/index.ts +0 -4
- package/src/domains/info/commands/info.test.ts +0 -88
- package/src/domains/info/commands/info.ts +0 -47
- package/src/domains/info/commands/upgrade.test.ts +0 -183
- package/src/domains/info/commands/upgrade.ts +0 -153
- package/src/domains/info/constants.test.ts +0 -22
- package/src/domains/info/constants.ts +0 -15
- package/src/domains/info/formatters/index.ts +0 -8
- package/src/domains/info/formatters/info.test.ts +0 -207
- package/src/domains/info/formatters/info.ts +0 -131
- package/src/domains/info/formatters/upgrade.test.ts +0 -136
- package/src/domains/info/formatters/upgrade.ts +0 -70
- package/src/domains/info/index.ts +0 -9
- package/src/domains/info/mcp/index.ts +0 -2
- package/src/domains/info/mcp/specs.ts +0 -65
- package/src/domains/info/operations/checkRegistryVersion.test.ts +0 -124
- package/src/domains/info/operations/checkRegistryVersion.ts +0 -45
- package/src/domains/info/operations/collectEntityCounts.test.ts +0 -156
- package/src/domains/info/operations/collectEntityCounts.ts +0 -123
- package/src/domains/info/operations/collectInfo.test.ts +0 -122
- package/src/domains/info/operations/collectInfo.ts +0 -94
- package/src/domains/info/operations/collectStoreSummary.test.ts +0 -61
- package/src/domains/info/operations/collectStoreSummary.ts +0 -42
- package/src/domains/info/operations/index.ts +0 -6
- package/src/domains/info/types.test-d.ts +0 -35
- package/src/domains/info/types.ts +0 -67
- package/src/domains/llm/capabilities.test.ts +0 -111
- package/src/domains/llm/commands/capabilities.ts +0 -37
- package/src/domains/llm/commands/index.ts +0 -4
- package/src/domains/llm/commands/llm.ts +0 -41
- package/src/domains/llm/data/commandReference.ts +0 -106
- package/src/domains/llm/data/decisionTrees.ts +0 -55
- package/src/domains/llm/data/index.ts +0 -6
- package/src/domains/llm/data/toolCatalog.ts +0 -221
- package/src/domains/llm/formatters/capabilities.ts +0 -50
- package/src/domains/llm/formatters/index.ts +0 -4
- package/src/domains/llm/formatters/orientation.ts +0 -57
- package/src/domains/llm/index.ts +0 -9
- package/src/domains/llm/llmCommand.test.ts +0 -101
- package/src/domains/llm/mcp/index.ts +0 -2
- package/src/domains/llm/mcp/specs.ts +0 -93
- package/src/domains/llm/operations/collectContext.test.ts +0 -64
- package/src/domains/llm/operations/collectContext.ts +0 -37
- package/src/domains/llm/operations/index.ts +0 -3
- package/src/domains/llm/types.ts +0 -72
- package/src/domains/modifier/commands/index.ts +0 -5
- package/src/domains/modifier/commands/list.test.ts +0 -57
- package/src/domains/modifier/commands/list.ts +0 -9
- package/src/domains/modifier/commands/lookup.test.ts +0 -91
- package/src/domains/modifier/commands/lookup.ts +0 -14
- package/src/domains/modifier/commands/sample.ts +0 -54
- package/src/domains/modifier/formatters/index.ts +0 -8
- package/src/domains/modifier/formatters/list.test.ts +0 -38
- package/src/domains/modifier/formatters/list.ts +0 -22
- package/src/domains/modifier/formatters/lookup.test.ts +0 -33
- package/src/domains/modifier/formatters/lookup.ts +0 -50
- package/src/domains/modifier/formatters/sample.ts +0 -15
- package/src/domains/modifier/index.ts +0 -27
- package/src/domains/modifier/mcp/index.ts +0 -2
- package/src/domains/modifier/mcp/specs.ts +0 -65
- package/src/domains/modifier/modifierConfig.ts +0 -36
- package/src/domains/modifier/operations/index.ts +0 -5
- package/src/domains/modifier/operations/list.test.ts +0 -39
- package/src/domains/modifier/operations/list.ts +0 -41
- package/src/domains/modifier/operations/lookup.test.ts +0 -37
- package/src/domains/modifier/operations/lookup.ts +0 -69
- package/src/domains/modifier/operations/sample.ts +0 -32
- package/src/domains/modifier/orchestration/index.ts +0 -3
- package/src/domains/modifier/orchestration/modifierEmptyError.test.ts +0 -26
- package/src/domains/modifier/orchestration/modifierEmptyError.ts +0 -15
- package/src/domains/modifier/orchestration/resolveModifierList.ts +0 -16
- package/src/domains/modifier/orchestration/resolveModifierLookup.ts +0 -33
- package/src/domains/modifier/stories.test.ts +0 -20
- package/src/domains/modifier/stories.ts +0 -86
- package/src/domains/modifier/types.ts +0 -5
- package/src/domains/ontology/commands/index.ts +0 -4
- package/src/domains/ontology/commands/list.test.ts +0 -84
- package/src/domains/ontology/commands/list.ts +0 -11
- package/src/domains/ontology/commands/show.test.ts +0 -179
- package/src/domains/ontology/commands/show.ts +0 -14
- package/src/domains/ontology/formatters/index.ts +0 -5
- package/src/domains/ontology/formatters/list.ts +0 -64
- package/src/domains/ontology/formatters/show.ts +0 -396
- package/src/domains/ontology/helpers/buildClassTree.ts +0 -89
- package/src/domains/ontology/helpers/completeClassNames.ts +0 -43
- package/src/domains/ontology/helpers/expandOntologyIris.ts +0 -79
- package/src/domains/ontology/helpers/findNamespace.ts +0 -23
- package/src/domains/ontology/helpers/index.ts +0 -21
- package/src/domains/ontology/helpers/queryClasses.ts +0 -66
- package/src/domains/ontology/helpers/queryProperties.ts +0 -90
- package/src/domains/ontology/helpers/queryTboxFacts.ts +0 -160
- package/src/domains/ontology/helpers/resolvePrefix.ts +0 -45
- package/src/domains/ontology/index.ts +0 -26
- package/src/domains/ontology/mcp/index.ts +0 -2
- package/src/domains/ontology/mcp/specs.ts +0 -16
- package/src/domains/ontology/operations/index.ts +0 -5
- package/src/domains/ontology/operations/listOntologies.test.ts +0 -122
- package/src/domains/ontology/operations/listOntologies.ts +0 -197
- package/src/domains/ontology/operations/showOntology.test.ts +0 -184
- package/src/domains/ontology/operations/showOntology.ts +0 -323
- package/src/domains/ontology/operations/showOntologyRaw.test.ts +0 -41
- package/src/domains/ontology/operations/showOntologyRaw.ts +0 -50
- package/src/domains/ontology/stories.test.ts +0 -36
- package/src/domains/ontology/stories.ts +0 -153
- package/src/domains/refs/commands/updateRefs.ts +0 -52
- package/src/domains/refs/formatters/updateRefs.ts +0 -27
- package/src/domains/refs/index.ts +0 -27
- package/src/domains/refs/operations/gitOps.test.ts +0 -155
- package/src/domains/refs/operations/gitOps.ts +0 -92
- package/src/domains/refs/operations/index.ts +0 -10
- package/src/domains/refs/operations/parseRef.test.ts +0 -157
- package/src/domains/refs/operations/parseRef.ts +0 -114
- package/src/domains/refs/operations/paths.test.ts +0 -98
- package/src/domains/refs/operations/paths.ts +0 -91
- package/src/domains/refs/operations/readGlobalRefs.test.ts +0 -63
- package/src/domains/refs/operations/readGlobalRefs.ts +0 -37
- package/src/domains/refs/operations/updateRefs.test.ts +0 -167
- package/src/domains/refs/operations/updateRefs.ts +0 -180
- package/src/domains/setup/commands/all.ts +0 -58
- package/src/domains/setup/commands/completions.ts +0 -85
- package/src/domains/setup/commands/entrypoints.test.ts +0 -170
- package/src/domains/setup/commands/index.ts +0 -7
- package/src/domains/setup/commands/lsp.ts +0 -49
- package/src/domains/setup/commands/mcp.ts +0 -119
- package/src/domains/setup/commands/setup.ts +0 -70
- package/src/domains/setup/commands/skills.test.ts +0 -68
- package/src/domains/setup/commands/skills.ts +0 -110
- package/src/domains/setup/formatters/index.ts +0 -2
- package/src/domains/setup/formatters/skills.test.ts +0 -103
- package/src/domains/setup/formatters/skills.ts +0 -112
- package/src/domains/setup/formatters/types.ts +0 -7
- package/src/domains/setup/helpers/completionScripts.test.ts +0 -58
- package/src/domains/setup/helpers/completionScripts.ts +0 -92
- package/src/domains/setup/helpers/constants.ts +0 -2
- package/src/domains/setup/helpers/detectShell.test.ts +0 -48
- package/src/domains/setup/helpers/detectShell.ts +0 -20
- package/src/domains/setup/helpers/index.ts +0 -12
- package/src/domains/setup/helpers/runSetupTask.test.ts +0 -277
- package/src/domains/setup/helpers/runSetupTask.ts +0 -221
- package/src/domains/setup/index.ts +0 -37
- package/src/domains/setup/operations/index.ts +0 -6
- package/src/domains/setup/operations/setupAll.test.ts +0 -48
- package/src/domains/setup/operations/setupAll.ts +0 -41
- package/src/domains/setup/operations/setupCompletions.test.ts +0 -94
- package/src/domains/setup/operations/setupCompletions.ts +0 -54
- package/src/domains/setup/operations/setupLsp.test.ts +0 -30
- package/src/domains/setup/operations/setupLsp.ts +0 -22
- package/src/domains/setup/operations/setupMcp.test.ts +0 -120
- package/src/domains/setup/operations/setupMcp.ts +0 -108
- package/src/domains/setup/operations/setupSkills.test.ts +0 -191
- package/src/domains/setup/operations/setupSkills.ts +0 -160
- package/src/domains/setup/types.ts +0 -18
- package/src/domains/shared/ToolSpec.ts +0 -49
- package/src/domains/shared/bootStore.bareCore.test.ts +0 -63
- package/src/domains/shared/bootStore.test.ts +0 -82
- package/src/domains/shared/bootStore.ts +0 -171
- package/src/domains/shared/buildQuery.ts +0 -18
- package/src/domains/shared/compactUri.test.ts +0 -32
- package/src/domains/shared/compactUri.ts +0 -21
- package/src/domains/shared/context.ts +0 -16
- package/src/domains/shared/contracts.ts +0 -164
- package/src/domains/shared/createInteractivePromptSession.test.ts +0 -439
- package/src/domains/shared/createInteractivePromptSession.ts +0 -236
- package/src/domains/shared/emptyErrorRecovery.test.ts +0 -106
- package/src/domains/shared/extractLocalName.test.ts +0 -21
- package/src/domains/shared/extractLocalName.ts +0 -14
- package/src/domains/shared/filters/buildChannelFilter.test.ts +0 -52
- package/src/domains/shared/filters/buildChannelFilter.ts +0 -41
- package/src/domains/shared/filters/buildFilterConfig.ts +0 -15
- package/src/domains/shared/filters/buildFilters.test.ts +0 -33
- package/src/domains/shared/filters/buildFilters.ts +0 -30
- package/src/domains/shared/filters/buildTierFilter.test.ts +0 -78
- package/src/domains/shared/filters/buildTierFilter.ts +0 -69
- package/src/domains/shared/filters/describeFilters.ts +0 -14
- package/src/domains/shared/filters/index.ts +0 -10
- package/src/domains/shared/formatters.ts +0 -103
- package/src/domains/shared/listTiers.ts +0 -40
- package/src/domains/shared/loaders/bundledLoader.test.ts +0 -248
- package/src/domains/shared/loaders/bundledLoader.ts +0 -254
- package/src/domains/shared/loaders/gitLoader.ts +0 -30
- package/src/domains/shared/loaders/index.ts +0 -9
- package/src/domains/shared/loaders/localLoader.ts +0 -71
- package/src/domains/shared/loaders/readPackageDir.test.ts +0 -58
- package/src/domains/shared/loaders/readPackageDir.ts +0 -185
- package/src/domains/shared/loaders/storyAssetsPlugin.test.ts +0 -84
- package/src/domains/shared/loaders/storyAssetsPlugin.ts +0 -46
- package/src/domains/shared/lookupMany.test.ts +0 -135
- package/src/domains/shared/lookupMany.ts +0 -101
- package/src/domains/shared/mergeAndParseRefs.test.ts +0 -89
- package/src/domains/shared/mergeAndParseRefs.ts +0 -44
- package/src/domains/shared/namespaces.ts +0 -26
- package/src/domains/shared/packages.ts +0 -20
- package/src/domains/shared/parseSampleCount.test.ts +0 -47
- package/src/domains/shared/parseSampleCount.ts +0 -45
- package/src/domains/shared/pickRandom.ts +0 -22
- package/src/domains/shared/prefixes.test.ts +0 -211
- package/src/domains/shared/prefixes.ts +0 -204
- package/src/domains/shared/renderers.ts +0 -410
- package/src/domains/shared/resolveConfiguredGraphs.test.ts +0 -27
- package/src/domains/shared/resolveConfiguredGraphs.ts +0 -41
- package/src/domains/shared/resolveLookupExitCode.test.ts +0 -48
- package/src/domains/shared/resolveLookupExitCode.ts +0 -42
- package/src/domains/shared/runtime.ts +0 -61
- package/src/domains/shared/sampleFormatters.ts +0 -47
- package/src/domains/shared/semanticPackage.test.ts +0 -89
- package/src/domains/shared/semanticPackage.ts +0 -127
- package/src/domains/shared/stories/compileLookupCommand.test.ts +0 -145
- package/src/domains/shared/stories/compileLookupCommand.ts +0 -102
- package/src/domains/shared/stories/compileLookupTool.test.ts +0 -105
- package/src/domains/shared/stories/compileLookupTool.ts +0 -96
- package/src/domains/shared/stories/compileReadCommand.test.ts +0 -121
- package/src/domains/shared/stories/compileReadCommand.ts +0 -48
- package/src/domains/shared/stories/compileReadTool.test.ts +0 -64
- package/src/domains/shared/stories/compileReadTool.ts +0 -38
- package/src/domains/shared/stories/condense.test.ts +0 -18
- package/src/domains/shared/stories/condense.ts +0 -15
- package/src/domains/shared/stories/index.ts +0 -20
- package/src/domains/shared/stories/normalizeNames.test.ts +0 -20
- package/src/domains/shared/stories/normalizeNames.ts +0 -22
- package/src/domains/shared/stories/pack/applyPackFilters.test.ts +0 -151
- package/src/domains/shared/stories/pack/applyPackFilters.ts +0 -111
- package/src/domains/shared/stories/pack/applyPackSearch.test.ts +0 -57
- package/src/domains/shared/stories/pack/applyPackSearch.ts +0 -41
- package/src/domains/shared/stories/pack/buildLookupQuery.test.ts +0 -81
- package/src/domains/shared/stories/pack/buildLookupQuery.ts +0 -154
- package/src/domains/shared/stories/pack/bundled/index.ts +0 -23
- package/src/domains/shared/stories/pack/bundled/standardPack.ts +0 -164
- package/src/domains/shared/stories/pack/bundled/tierPack.ts +0 -50
- package/src/domains/shared/stories/pack/collectPackStories.test.ts +0 -406
- package/src/domains/shared/stories/pack/collectPackStories.ts +0 -158
- package/src/domains/shared/stories/pack/compilePackCommands.ts +0 -50
- package/src/domains/shared/stories/pack/compilePackStories.test.ts +0 -751
- package/src/domains/shared/stories/pack/compilePackStories.ts +0 -724
- package/src/domains/shared/stories/pack/compilePackToolSpecs.ts +0 -55
- package/src/domains/shared/stories/pack/index.ts +0 -42
- package/src/domains/shared/stories/pack/reservedVerbs.test.ts +0 -213
- package/src/domains/shared/stories/pack/reservedVerbs.ts +0 -170
- package/src/domains/shared/stories/pack/runSelectQuery.ts +0 -31
- package/src/domains/shared/stories/pack/standardParity.test.ts +0 -381
- package/src/domains/shared/stories/pack/types.ts +0 -224
- package/src/domains/shared/stories/pack/validateStoryPackDefinition.test.ts +0 -742
- package/src/domains/shared/stories/pack/validateStoryPackDefinition.ts +0 -859
- package/src/domains/shared/stories/projectCliParameters.test.ts +0 -59
- package/src/domains/shared/stories/projectCliParameters.ts +0 -57
- package/src/domains/shared/stories/projectToolParams.test.ts +0 -50
- package/src/domains/shared/stories/projectToolParams.ts +0 -32
- package/src/domains/shared/stories/requirePragmaContext.test.ts +0 -23
- package/src/domains/shared/stories/requirePragmaContext.ts +0 -23
- package/src/domains/shared/stories/resolveLookupDetailed.test.ts +0 -57
- package/src/domains/shared/stories/resolveLookupDetailed.ts +0 -27
- package/src/domains/shared/stories/types.ts +0 -179
- package/src/domains/shared/suggestions/detectCrossDomain.test.ts +0 -43
- package/src/domains/shared/suggestions/detectCrossDomain.ts +0 -116
- package/src/domains/shared/suggestions/expandGlob.test.ts +0 -92
- package/src/domains/shared/suggestions/expandGlob.ts +0 -52
- package/src/domains/shared/suggestions/expandLookupQueries.ts +0 -57
- package/src/domains/shared/suggestions/index.ts +0 -7
- package/src/domains/shared/suggestions/listDomainNames.ts +0 -61
- package/src/domains/shared/suggestions/suggestNames.test.ts +0 -70
- package/src/domains/shared/suggestions/suggestNames.ts +0 -130
- package/src/domains/shared/types/block.ts +0 -107
- package/src/domains/shared/types/common.ts +0 -33
- package/src/domains/shared/types/graph.ts +0 -17
- package/src/domains/shared/types/index.ts +0 -46
- package/src/domains/shared/types/modifier.ts +0 -22
- package/src/domains/shared/types/ontology.ts +0 -145
- package/src/domains/shared/types/runtime.ts +0 -24
- package/src/domains/shared/types/sample.ts +0 -17
- package/src/domains/shared/types/standard.ts +0 -21
- package/src/domains/shared/types/tier.ts +0 -15
- package/src/domains/shared/types/token.ts +0 -30
- package/src/domains/skill/commands/index.ts +0 -4
- package/src/domains/skill/commands/list.test.ts +0 -115
- package/src/domains/skill/commands/list.ts +0 -11
- package/src/domains/skill/commands/lookup.test.ts +0 -118
- package/src/domains/skill/commands/lookup.ts +0 -14
- package/src/domains/skill/formatters/index.ts +0 -3
- package/src/domains/skill/formatters/list.test.ts +0 -140
- package/src/domains/skill/formatters/list.ts +0 -119
- package/src/domains/skill/formatters/lookup.test.ts +0 -46
- package/src/domains/skill/formatters/lookup.ts +0 -57
- package/src/domains/skill/formatters/types.ts +0 -8
- package/src/domains/skill/helpers/index.ts +0 -6
- package/src/domains/skill/helpers/parseFrontmatter.test.ts +0 -122
- package/src/domains/skill/helpers/parseFrontmatter.ts +0 -112
- package/src/domains/skill/helpers/resolveSkillSources.ts +0 -70
- package/src/domains/skill/index.ts +0 -23
- package/src/domains/skill/mcp/index.ts +0 -2
- package/src/domains/skill/mcp/specs.ts +0 -19
- package/src/domains/skill/operations/discover.test.ts +0 -176
- package/src/domains/skill/operations/discover.ts +0 -59
- package/src/domains/skill/operations/index.ts +0 -5
- package/src/domains/skill/operations/list.test.ts +0 -76
- package/src/domains/skill/operations/list.ts +0 -47
- package/src/domains/skill/operations/lookup.test.ts +0 -91
- package/src/domains/skill/operations/lookup.ts +0 -70
- package/src/domains/skill/stories.test.ts +0 -43
- package/src/domains/skill/stories.ts +0 -103
- package/src/domains/skill/types.ts +0 -33
- package/src/domains/token/commands/add-config.test.ts +0 -68
- package/src/domains/token/commands/add-config.ts +0 -62
- package/src/domains/token/commands/index.ts +0 -6
- package/src/domains/token/commands/list.test.ts +0 -82
- package/src/domains/token/commands/list.ts +0 -54
- package/src/domains/token/commands/lookup.test.ts +0 -133
- package/src/domains/token/commands/lookup.ts +0 -107
- package/src/domains/token/commands/sample.ts +0 -54
- package/src/domains/token/featureFlag.ts +0 -17
- package/src/domains/token/formatters/index.ts +0 -8
- package/src/domains/token/formatters/list.test.ts +0 -37
- package/src/domains/token/formatters/list.ts +0 -24
- package/src/domains/token/formatters/lookup.test.ts +0 -61
- package/src/domains/token/formatters/lookup.ts +0 -107
- package/src/domains/token/formatters/sample.ts +0 -16
- package/src/domains/token/index.ts +0 -45
- package/src/domains/token/mcp/index.ts +0 -2
- package/src/domains/token/mcp/specs.ts +0 -207
- package/src/domains/token/operations/add-config.test.ts +0 -68
- package/src/domains/token/operations/add-config.ts +0 -61
- package/src/domains/token/operations/index.ts +0 -8
- package/src/domains/token/operations/list.test.ts +0 -50
- package/src/domains/token/operations/list.ts +0 -52
- package/src/domains/token/operations/lookup.test.ts +0 -42
- package/src/domains/token/operations/lookup.ts +0 -75
- package/src/domains/token/operations/sample.ts +0 -32
- package/src/domains/token/orchestration/index.ts +0 -3
- package/src/domains/token/orchestration/resolveTokenList.ts +0 -17
- package/src/domains/token/orchestration/resolveTokenLookup.ts +0 -33
- package/src/domains/token/orchestration/tokenEmptyError.test.ts +0 -33
- package/src/domains/token/orchestration/tokenEmptyError.ts +0 -20
- package/src/domains/token/tokenConfig.ts +0 -38
- package/src/domains/token/types.ts +0 -6
- package/src/domains/trace/commands/clear.ts +0 -71
- package/src/domains/trace/commands/index.ts +0 -5
- package/src/domains/trace/commands/resolveTraceLimit.test.ts +0 -31
- package/src/domains/trace/commands/sessions.ts +0 -32
- package/src/domains/trace/commands/show.ts +0 -171
- package/src/domains/trace/formatters/index.ts +0 -9
- package/src/domains/trace/formatters/sessions.ts +0 -80
- package/src/domains/trace/formatters/show.ts +0 -122
- package/src/domains/trace/index.ts +0 -17
- package/src/domains/trace/operations/index.ts +0 -8
- package/src/domains/trace/operations/listSessions.test.ts +0 -55
- package/src/domains/trace/operations/listSessions.ts +0 -52
- package/src/domains/trace/operations/readTraceLog.test.ts +0 -100
- package/src/domains/trace/operations/readTraceLog.ts +0 -104
- package/src/domains/trace/tracePlugin.test.ts +0 -171
- package/src/domains/trace/tracePlugin.ts +0 -159
- package/src/domains/trace/types.ts +0 -65
- package/src/embedWasm.ts +0 -42
- package/src/error/PragmaError.test.ts +0 -121
- package/src/error/PragmaError.ts +0 -177
- package/src/error/constants.ts +0 -12
- package/src/error/index.ts +0 -4
- package/src/error/types.ts +0 -55
- package/src/mcp/createMcpServer.test.ts +0 -41
- package/src/mcp/createMcpServer.ts +0 -53
- package/src/mcp/error/buildRecovery.test.ts +0 -37
- package/src/mcp/error/buildRecovery.ts +0 -17
- package/src/mcp/error/index.ts +0 -12
- package/src/mcp/error/serializeError.test.ts +0 -121
- package/src/mcp/error/serializeError.ts +0 -31
- package/src/mcp/error/serializeErrorPayload.test.ts +0 -38
- package/src/mcp/error/serializeErrorPayload.ts +0 -34
- package/src/mcp/error/types.ts +0 -59
- package/src/mcp/index.ts +0 -15
- package/src/mcp/registerResources.test.ts +0 -566
- package/src/mcp/registerResources.ts +0 -9
- package/src/mcp/resources/buildGraphIndex.ts +0 -167
- package/src/mcp/resources/buildResourceList.test.ts +0 -97
- package/src/mcp/resources/buildResourceList.ts +0 -176
- package/src/mcp/resources/classifyEntity.test.ts +0 -40
- package/src/mcp/resources/classifyEntity.ts +0 -27
- package/src/mcp/resources/constants.ts +0 -105
- package/src/mcp/resources/displayPredicates.ts +0 -62
- package/src/mcp/resources/pickFirstValue.test.ts +0 -29
- package/src/mcp/resources/pickFirstValue.ts +0 -26
- package/src/mcp/resources/pickPrimaryType.test.ts +0 -41
- package/src/mcp/resources/pickPrimaryType.ts +0 -26
- package/src/mcp/resources/rankUriCompletions.test.ts +0 -52
- package/src/mcp/resources/rankUriCompletions.ts +0 -64
- package/src/mcp/resources/readEntity.ts +0 -169
- package/src/mcp/resources/registerResources.ts +0 -126
- package/src/mcp/resources/types.ts +0 -128
- package/src/mcp/runMcpServer.test.ts +0 -66
- package/src/mcp/runMcpServer.ts +0 -24
- package/src/mcp/tools/index.ts +0 -74
- package/src/mcp/tools/registerFromSpec.ts +0 -97
- package/src/mcp/tools/registerTools.test.ts +0 -1277
- package/src/mcp/types.ts +0 -66
- package/src/mcp/utils/estimateTokens.test.ts +0 -14
- package/src/mcp/utils/estimateTokens.ts +0 -9
- package/src/mcp/utils/index.ts +0 -11
- package/src/mcp/utils/wrapTool.test.ts +0 -109
- package/src/mcp/utils/wrapTool.ts +0 -81
- package/src/package-manager/constants.ts +0 -29
- package/src/package-manager/detectInstallSource.test.ts +0 -23
- package/src/package-manager/detectInstallSource.ts +0 -111
- package/src/package-manager/detectLocalInstall.test.ts +0 -16
- package/src/package-manager/detectLocalInstall.ts +0 -43
- package/src/package-manager/detectPackageManager.test.ts +0 -81
- package/src/package-manager/detectPackageManager.ts +0 -30
- package/src/package-manager/index.ts +0 -6
- package/src/package-manager/types.ts +0 -10
- package/src/pipeline/collectCommands.test.ts +0 -187
- package/src/pipeline/collectCommands.ts +0 -75
- package/src/pipeline/constants.ts +0 -14
- package/src/pipeline/createProgram.test.ts +0 -116
- package/src/pipeline/createProgram.ts +0 -89
- package/src/pipeline/firstRun.test.ts +0 -80
- package/src/pipeline/firstRun.ts +0 -99
- package/src/pipeline/formatTerminal.test.ts +0 -43
- package/src/pipeline/formatTerminal.ts +0 -53
- package/src/pipeline/index.ts +0 -22
- package/src/pipeline/mapExitCode.test.ts +0 -41
- package/src/pipeline/mapExitCode.ts +0 -12
- package/src/pipeline/parseGlobalFlags.test.ts +0 -193
- package/src/pipeline/parseGlobalFlags.ts +0 -135
- package/src/pipeline/renderError.test.ts +0 -151
- package/src/pipeline/renderError.ts +0 -129
- package/src/pipeline/resolveCommandKind.test.ts +0 -80
- package/src/pipeline/resolveCommandKind.ts +0 -82
- package/src/pipeline/rootHelp.test.ts +0 -87
- package/src/pipeline/rootHelp.ts +0 -265
- package/src/pipeline/runCli.orchestration.test.ts +0 -435
- package/src/pipeline/runCli.test.ts +0 -83
- package/src/pipeline/runCli.ts +0 -411
- package/src/pipeline/types.ts +0 -17
- package/src/testing/cli.ts +0 -71
- package/src/testing/createTestMcpClient.ts +0 -68
- package/src/testing/dsFixtures.ts +0 -523
- package/src/testing/fixtures/canonical-config.json +0 -4
- package/src/testing/fixtures/canonical.ttl +0 -437
- package/src/testing/fixtures/filtered-config.json +0 -4
- package/src/testing/fixtures.ts +0 -34
- package/src/testing/graphqlFixtures.ts +0 -72
- package/src/testing/helpers/assertParity.ts +0 -28
- package/src/testing/helpers/createTestMcpClient.ts +0 -40
- package/src/testing/helpers/createTestRuntime.ts +0 -67
- package/src/testing/index.ts +0 -22
- package/src/testing/integration/__snapshots__/executor-golden.test.ts.snap +0 -1207
- package/src/testing/integration/agent-session.test.ts +0 -148
- package/src/testing/integration/boot.test.ts +0 -105
- package/src/testing/integration/cli-user-stories.test.ts +0 -261
- package/src/testing/integration/cross-binary-byte-equality.test.ts +0 -129
- package/src/testing/integration/edge-cases.test.ts +0 -275
- package/src/testing/integration/executor-execution.test.ts +0 -103
- package/src/testing/integration/executor-golden.test.ts +0 -145
- package/src/testing/integration/mcp-surface.test.ts +0 -605
- package/src/testing/integration/parity.test.ts +0 -596
- package/src/testing/regression/0001-skill-discovery-granularity.test.ts +0 -71
- package/src/testing/standardParityFixtures.ts +0 -35
- package/src/testing/store.ts +0 -39
- package/src/testing/storyFixtures.ts +0 -63
- package/src/testing/types.ts +0 -20
- package/src/tui/components/BulletList/BulletList.tsx +0 -46
- package/src/tui/components/BulletList/index.ts +0 -2
- package/src/tui/components/BulletList/types.ts +0 -6
- package/src/tui/components/Card/Card.tsx +0 -73
- package/src/tui/components/Card/index.ts +0 -1
- package/src/tui/components/Card/types.ts +0 -12
- package/src/tui/components/CodeBlock/CodeBlock.tsx +0 -37
- package/src/tui/components/CodeBlock/index.ts +0 -2
- package/src/tui/components/CodeBlock/types.ts +0 -6
- package/src/tui/components/DataRow/DataRow.tsx +0 -80
- package/src/tui/components/DataRow/index.ts +0 -2
- package/src/tui/components/DataRow/types.ts +0 -14
- package/src/tui/components/FieldRow/FieldRow.tsx +0 -24
- package/src/tui/components/FieldRow/index.ts +0 -2
- package/src/tui/components/FieldRow/types.ts +0 -10
- package/src/tui/components/HeaderRow/HeaderRow.tsx +0 -32
- package/src/tui/components/HeaderRow/index.ts +0 -2
- package/src/tui/components/HeaderRow/types.ts +0 -8
- package/src/tui/components/MarkdownText/MarkdownText.tsx +0 -19
- package/src/tui/components/MarkdownText/index.ts +0 -2
- package/src/tui/components/MarkdownText/types.ts +0 -4
- package/src/tui/components/MiniTable/MiniTable.tsx +0 -82
- package/src/tui/components/MiniTable/index.ts +0 -2
- package/src/tui/components/MiniTable/types.ts +0 -6
- package/src/tui/components/SectionRenderer/SectionRenderer.tsx +0 -91
- package/src/tui/components/SectionRenderer/index.ts +0 -2
- package/src/tui/components/SectionRenderer/types.ts +0 -15
- package/src/tui/components/TreeView/TreeView.tsx +0 -84
- package/src/tui/components/TreeView/index.ts +0 -2
- package/src/tui/components/TreeView/types.ts +0 -6
- package/src/tui/components/index.ts +0 -19
- package/src/tui/constants.ts +0 -39
- package/src/tui/createListView.ts +0 -23
- package/src/tui/createLookupView.ts +0 -26
- package/src/tui/helpers/computeWidths.ts +0 -53
- package/src/tui/helpers/fitColumns.ts +0 -33
- package/src/tui/helpers/formatMarkdown.ts +0 -19
- package/src/tui/helpers/getTerminalSize.ts +0 -16
- package/src/tui/helpers/index.ts +0 -6
- package/src/tui/helpers/syntaxColor.ts +0 -67
- package/src/tui/helpers/truncateText.ts +0 -12
- package/src/tui/hooks/index.ts +0 -3
- package/src/tui/hooks/types.ts +0 -7
- package/src/tui/hooks/useAutoExit.ts +0 -17
- package/src/tui/hooks/useTerminalSize.ts +0 -19
- package/src/tui/index.ts +0 -15
- package/src/tui/renderInk.tsx +0 -18
- package/src/tui/types.ts +0 -12
- package/src/tui/views/ListView/ListView.tsx +0 -104
- package/src/tui/views/ListView/index.ts +0 -2
- package/src/tui/views/ListView/types.ts +0 -14
- package/src/tui/views/LookupView/LookupView.tsx +0 -244
- package/src/tui/views/LookupView/index.ts +0 -2
- package/src/tui/views/LookupView/types.ts +0 -16
- package/src/tui/views/index.ts +0 -4
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The embedded fallback pack: a small, self-contained pack compiled into the
|
|
3
|
+
* binary as inlined strings (`pack.generated.ts`, produced by
|
|
4
|
+
* `scripts/genEmbedded.ts`). It is the store the CLI boots when no packages are
|
|
5
|
+
* configured beyond the defaults and no lock has been written yet — so a fresh
|
|
6
|
+
* install answers store-backed reads without a network round-trip.
|
|
7
|
+
*
|
|
8
|
+
* The inlined strings are materialized into the ordinary content-addressed pack
|
|
9
|
+
* cache on first use and then read back through {@link readPack}, so the
|
|
10
|
+
* embedded pack and a built pack share one boot path. Inlining as JS strings
|
|
11
|
+
* (rather than file assets) guarantees the content survives `bun build
|
|
12
|
+
* --compile` with no asset-embedding step.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import {
|
|
16
|
+
existsSync,
|
|
17
|
+
mkdirSync,
|
|
18
|
+
mkdtempSync,
|
|
19
|
+
renameSync,
|
|
20
|
+
rmSync,
|
|
21
|
+
writeFileSync,
|
|
22
|
+
} from "node:fs";
|
|
23
|
+
import { join } from "node:path";
|
|
24
|
+
import { packDir, packsCacheDir } from "../paths.js";
|
|
25
|
+
import { dataNq, manifestJson, schemaJson } from "./embedded/pack.generated.js";
|
|
26
|
+
import { indexJson } from "./embedded/pack.index.generated.js";
|
|
27
|
+
import { packIsComplete } from "./manifest.js";
|
|
28
|
+
import {
|
|
29
|
+
DATA_FILE,
|
|
30
|
+
INDEX_FILE,
|
|
31
|
+
MANIFEST_FILE,
|
|
32
|
+
manifestSchema,
|
|
33
|
+
SCHEMA_FILE,
|
|
34
|
+
} from "./types.js";
|
|
35
|
+
|
|
36
|
+
/** The embedded pack's content hash (its cache-directory name). */
|
|
37
|
+
export function embeddedContentHash(): string {
|
|
38
|
+
return manifestSchema.parse(JSON.parse(manifestJson)).contentHash;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Materialize the embedded pack into the pack cache and return its directory.
|
|
43
|
+
*
|
|
44
|
+
* Idempotent: if the content-addressed directory already holds a complete pack
|
|
45
|
+
* (this or a previous run, or a build with identical sources), it is reused.
|
|
46
|
+
*
|
|
47
|
+
* @returns The pack directory, ready for {@link readPack}.
|
|
48
|
+
* @note Impure — writes the inlined pack files into the cache.
|
|
49
|
+
*/
|
|
50
|
+
export function materializeEmbeddedPack(): string {
|
|
51
|
+
const dir = packDir(embeddedContentHash());
|
|
52
|
+
if (packIsComplete(dir)) return dir;
|
|
53
|
+
|
|
54
|
+
mkdirSync(packsCacheDir(), { recursive: true });
|
|
55
|
+
const temp = mkdtempSync(join(packsCacheDir(), ".embed-"));
|
|
56
|
+
try {
|
|
57
|
+
writeFileSync(join(temp, DATA_FILE), dataNq);
|
|
58
|
+
writeFileSync(join(temp, SCHEMA_FILE), schemaJson);
|
|
59
|
+
writeFileSync(join(temp, INDEX_FILE), indexJson);
|
|
60
|
+
// Written last — the completeness marker.
|
|
61
|
+
writeFileSync(join(temp, MANIFEST_FILE), manifestJson);
|
|
62
|
+
if (!packIsComplete(dir)) {
|
|
63
|
+
rmSync(dir, { recursive: true, force: true });
|
|
64
|
+
renameSync(temp, dir);
|
|
65
|
+
}
|
|
66
|
+
} finally {
|
|
67
|
+
if (existsSync(temp)) rmSync(temp, { recursive: true, force: true });
|
|
68
|
+
}
|
|
69
|
+
return dir;
|
|
70
|
+
}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { existsSync, mkdtempSync, readFileSync, rmSync } from "node:fs";
|
|
2
|
+
import { tmpdir } from "node:os";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { executeLocal } from "@canonical/ke-graphql";
|
|
5
|
+
import { afterAll, beforeAll, describe, expect, it } from "vitest";
|
|
6
|
+
import { buildPack } from "./build.js";
|
|
7
|
+
import { contentHash } from "./hash.js";
|
|
8
|
+
import { readPack } from "./read.js";
|
|
9
|
+
import { DATA_FILE, INDEX_FILE, MANIFEST_FILE, SCHEMA_FILE } from "./types.js";
|
|
10
|
+
|
|
11
|
+
const PREFIXES = {
|
|
12
|
+
ex: "https://pragma.canonical.com/sample#",
|
|
13
|
+
owl: "http://www.w3.org/2002/07/owl#",
|
|
14
|
+
rdfs: "http://www.w3.org/2000/01/rdf-schema#",
|
|
15
|
+
xsd: "http://www.w3.org/2001/XMLSchema#",
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const TTL = `
|
|
19
|
+
@prefix ex: <https://pragma.canonical.com/sample#> .
|
|
20
|
+
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
|
|
21
|
+
@prefix owl: <http://www.w3.org/2002/07/owl#> .
|
|
22
|
+
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
|
|
23
|
+
ex:Component a owl:Class ; rdfs:label "Component" .
|
|
24
|
+
ex:componentName a owl:DatatypeProperty ; rdfs:domain ex:Component ; rdfs:range xsd:string .
|
|
25
|
+
ex:Button a ex:Component ; rdfs:label "Button" ; ex:componentName "Button" .
|
|
26
|
+
ex:Card a ex:Component ; rdfs:label "Card" ; ex:componentName "Card" .
|
|
27
|
+
`;
|
|
28
|
+
|
|
29
|
+
const build = (inputs: { path: string; content: string }[]) =>
|
|
30
|
+
buildPack(inputs, {
|
|
31
|
+
name: "test-pack",
|
|
32
|
+
version: "0.0.0",
|
|
33
|
+
sourceRef: "test:inline",
|
|
34
|
+
prefixes: PREFIXES,
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
let savedCacheHome: string | undefined;
|
|
38
|
+
let cacheHome: string;
|
|
39
|
+
|
|
40
|
+
beforeAll(() => {
|
|
41
|
+
savedCacheHome = process.env.XDG_CACHE_HOME;
|
|
42
|
+
cacheHome = mkdtempSync(join(tmpdir(), "pragma-graphpack-"));
|
|
43
|
+
process.env.XDG_CACHE_HOME = cacheHome;
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
afterAll(() => {
|
|
47
|
+
process.env.XDG_CACHE_HOME = savedCacheHome;
|
|
48
|
+
rmSync(cacheHome, { recursive: true, force: true });
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
describe("graphpack round-trip (PROTECTED)", () => {
|
|
52
|
+
it("builds the four artifact files and reuses a cached pack", async () => {
|
|
53
|
+
const result = await build([{ path: "a.ttl", content: TTL }]);
|
|
54
|
+
expect(result.reused).toBe(false);
|
|
55
|
+
for (const file of [DATA_FILE, SCHEMA_FILE, INDEX_FILE, MANIFEST_FILE]) {
|
|
56
|
+
expect(existsSync(join(result.dir, file))).toBe(true);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// A second build over identical inputs is a pure cache hit — no rebuild.
|
|
60
|
+
const again = await build([{ path: "a.ttl", content: TTL }]);
|
|
61
|
+
expect(again.reused).toBe(true);
|
|
62
|
+
expect(again.contentHash).toBe(result.contentHash);
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
it("boots the pack: SPARQL data + an executable schema + the entity index", async () => {
|
|
66
|
+
const { dir } = await build([{ path: "a.ttl", content: TTL }]);
|
|
67
|
+
const session = await readPack(dir);
|
|
68
|
+
try {
|
|
69
|
+
const count = await session.store.query(
|
|
70
|
+
"SELECT (COUNT(*) AS ?n) WHERE { ?s ?p ?o }" as never,
|
|
71
|
+
);
|
|
72
|
+
expect(count.type).toBe("select");
|
|
73
|
+
expect(
|
|
74
|
+
Number((count as { bindings: { n: string }[] }).bindings[0]?.n),
|
|
75
|
+
).toBeGreaterThan(0);
|
|
76
|
+
|
|
77
|
+
// compileFromExtraction produced a working schema.
|
|
78
|
+
expect(session.schema.getType("Component")).toBeDefined();
|
|
79
|
+
|
|
80
|
+
// A GraphQL query resolves ABox data through the booted store.
|
|
81
|
+
const gql = await executeLocal({
|
|
82
|
+
schema: session.schema,
|
|
83
|
+
source: "{ __schema { queryType { name } } }",
|
|
84
|
+
contextValue: session.createContext(session.store),
|
|
85
|
+
});
|
|
86
|
+
expect((gql as { errors?: unknown[] }).errors).toBeUndefined();
|
|
87
|
+
|
|
88
|
+
// The index carries the FROZEN { name, type } minimum.
|
|
89
|
+
const names = session.index.entities.map((e) => e.name);
|
|
90
|
+
expect(names).toContain("ex:Button");
|
|
91
|
+
expect(names).toContain("ex:Component");
|
|
92
|
+
const button = session.index.entities.find((e) => e.name === "ex:Button");
|
|
93
|
+
expect(button?.type).toBe("ex:Component");
|
|
94
|
+
expect(button?.box).toBe("abox");
|
|
95
|
+
const component = session.index.entities.find(
|
|
96
|
+
(e) => e.name === "ex:Component",
|
|
97
|
+
);
|
|
98
|
+
expect(component?.type).toBe("owl:Class");
|
|
99
|
+
expect(component?.box).toBe("tbox");
|
|
100
|
+
} finally {
|
|
101
|
+
session.store.dispose();
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
describe("graphpack hash stability (PROTECTED)", () => {
|
|
107
|
+
it("is order-independent and content-sensitive", async () => {
|
|
108
|
+
const a = { path: "a.ttl", content: "ex:one a ex:X ." };
|
|
109
|
+
const b = { path: "b.ttl", content: "ex:two a ex:Y ." };
|
|
110
|
+
const forward = await contentHash([a, b]);
|
|
111
|
+
const reversed = await contentHash([b, a]);
|
|
112
|
+
expect(forward).toBe(reversed);
|
|
113
|
+
|
|
114
|
+
const changed = await contentHash([
|
|
115
|
+
{ ...a, content: "ex:one a ex:Z ." },
|
|
116
|
+
b,
|
|
117
|
+
]);
|
|
118
|
+
expect(changed).not.toBe(forward);
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
it("the built manifest's contentHash names its cache directory", async () => {
|
|
122
|
+
const result = await build([{ path: "a.ttl", content: TTL }]);
|
|
123
|
+
const manifest = JSON.parse(
|
|
124
|
+
readFileSync(join(result.dir, MANIFEST_FILE), "utf-8"),
|
|
125
|
+
);
|
|
126
|
+
expect(manifest.contentHash).toBe(result.contentHash);
|
|
127
|
+
expect(result.dir.endsWith(result.contentHash)).toBe(true);
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
describe("graphpack read — incomplete pack recovery (CLI + MCP)", () => {
|
|
132
|
+
it("an incomplete pack is STORE_UNAVAILABLE with a `sources_update` tool recovery", async () => {
|
|
133
|
+
// A dir with no manifest is an incomplete pack — readPack rejects before any
|
|
134
|
+
// store boot. The recovery names both the CLI command and the MCP tool an
|
|
135
|
+
// agent calls, so a cold agent isn't left with a CLI-only hint it can't run.
|
|
136
|
+
const emptyDir = mkdtempSync(join(tmpdir(), "pragma-incomplete-pack-"));
|
|
137
|
+
try {
|
|
138
|
+
let caught: unknown;
|
|
139
|
+
try {
|
|
140
|
+
await readPack(emptyDir);
|
|
141
|
+
} catch (error) {
|
|
142
|
+
caught = error;
|
|
143
|
+
}
|
|
144
|
+
expect(caught).toMatchObject({ code: "STORE_UNAVAILABLE" });
|
|
145
|
+
const recovery = (caught as { recovery?: Record<string, unknown> })
|
|
146
|
+
.recovery;
|
|
147
|
+
expect(recovery?.cli).toBe("pragma sources update");
|
|
148
|
+
expect(recovery?.mcp).toMatchObject({ tool: "sources_update" });
|
|
149
|
+
} finally {
|
|
150
|
+
rmSync(emptyDir, { recursive: true, force: true });
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
});
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The two content hashes a pack carries — kept in distinct roles, never
|
|
3
|
+
* conflated.
|
|
4
|
+
*
|
|
5
|
+
* 1. {@link contentHash} — a SHA-256 (ke-graphql's `sha256Hex`) over the
|
|
6
|
+
* canonicalized *source inputs* (sorted by path, path + content joined with
|
|
7
|
+
* fixed delimiters). It names the pack's cache directory and is pinned in the
|
|
8
|
+
* lock, so the same sources always resolve to the same directory and a
|
|
9
|
+
* changed source is a new directory (free invalidation). Hashing the sorted
|
|
10
|
+
* TTL *inputs* — never the `data.nq` dump, whose n-quads line order is not
|
|
11
|
+
* canonical — keeps it deterministic.
|
|
12
|
+
* 2. `hashSources` (re-exported from ke-graphql) — an order-independent FNV-1a
|
|
13
|
+
* 64 fingerprint stored *inside* `schema.json` as the extraction's freshness
|
|
14
|
+
* token. ke-graphql compares it against the loaded sources to detect a stale
|
|
15
|
+
* artifact. It is a staleness signal, not a cache key.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import { hashSources, sha256Hex } from "@canonical/ke-graphql";
|
|
19
|
+
|
|
20
|
+
/** A single source input: a stable path label and its raw text content. */
|
|
21
|
+
export interface HashInput {
|
|
22
|
+
readonly path: string;
|
|
23
|
+
readonly content: string;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/** Delimiter between a source's path and its content. */
|
|
27
|
+
const FIELD_SEP = "\n<<<pragma-pack:content>>>\n";
|
|
28
|
+
/** Delimiter between successive sources. */
|
|
29
|
+
const RECORD_SEP = "\n<<<pragma-pack:next>>>\n";
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* The pack's content hash: SHA-256 over the canonicalized source inputs.
|
|
33
|
+
*
|
|
34
|
+
* @param inputs - The source inputs (path + content).
|
|
35
|
+
* @returns The lowercase hex SHA-256 — the pack's cache-directory name.
|
|
36
|
+
* @note Async — SHA-256 via Web Crypto.
|
|
37
|
+
*/
|
|
38
|
+
export function contentHash(inputs: readonly HashInput[]): Promise<string> {
|
|
39
|
+
const canonical = [...inputs]
|
|
40
|
+
.sort((a, b) => (a.path < b.path ? -1 : a.path > b.path ? 1 : 0))
|
|
41
|
+
.map((input) => `${input.path}${FIELD_SEP}${input.content}`)
|
|
42
|
+
.join(RECORD_SEP);
|
|
43
|
+
return sha256Hex(canonical);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export { hashSources };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Graphpack barrel — the content-addressed pack cache: build, read, embedded
|
|
3
|
+
* fallback, and the artifact contracts.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export type {
|
|
7
|
+
BuildPackInput,
|
|
8
|
+
BuildPackOptions,
|
|
9
|
+
BuildPackResult,
|
|
10
|
+
} from "./build.js";
|
|
11
|
+
export { buildPack } from "./build.js";
|
|
12
|
+
export { buildIndex } from "./buildIndex.js";
|
|
13
|
+
export { embeddedContentHash, materializeEmbeddedPack } from "./embedded.js";
|
|
14
|
+
export { contentHash, type HashInput, hashSources } from "./hash.js";
|
|
15
|
+
export { packIsComplete, readManifest } from "./manifest.js";
|
|
16
|
+
export { readPack } from "./read.js";
|
|
17
|
+
export type {
|
|
18
|
+
Manifest,
|
|
19
|
+
PackIndex,
|
|
20
|
+
PackIndexEntity,
|
|
21
|
+
} from "./types.js";
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read a pack's `manifest.json`. Its presence is the completeness marker: a
|
|
3
|
+
* directory without a valid manifest is a torn build (writes land in a temp
|
|
4
|
+
* directory and the manifest is renamed in last), so an absent or invalid
|
|
5
|
+
* manifest means "treat the pack as not there".
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { existsSync, readFileSync, statSync } from "node:fs";
|
|
9
|
+
import { join } from "node:path";
|
|
10
|
+
import {
|
|
11
|
+
DATA_FILE,
|
|
12
|
+
INDEX_FILE,
|
|
13
|
+
MANIFEST_FILE,
|
|
14
|
+
type Manifest,
|
|
15
|
+
manifestSchema,
|
|
16
|
+
SCHEMA_FILE,
|
|
17
|
+
} from "./types.js";
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Read and validate a pack directory's manifest.
|
|
21
|
+
*
|
|
22
|
+
* @param dir - The pack directory.
|
|
23
|
+
* @returns The parsed manifest, or `undefined` when absent or invalid.
|
|
24
|
+
* @note Impure — reads from disk.
|
|
25
|
+
*/
|
|
26
|
+
export function readManifest(dir: string): Manifest | undefined {
|
|
27
|
+
const path = join(dir, MANIFEST_FILE);
|
|
28
|
+
if (!existsSync(path)) return undefined;
|
|
29
|
+
try {
|
|
30
|
+
return manifestSchema.parse(JSON.parse(readFileSync(path, "utf-8")));
|
|
31
|
+
} catch {
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/** Whether a pack directory holds a complete pack: a valid manifest AND every
|
|
37
|
+
* non-empty query artifact — the `data.nq` dump, the extracted `schema.json`,
|
|
38
|
+
* and the entity `index.json`. The manifest alone is not enough: an intact
|
|
39
|
+
* manifest beside a missing/truncated `data.nq` boots EMPTY (a silent, then
|
|
40
|
+
* permanent, loss), and a torn or evicted `schema.json`/`index.json` (manifest +
|
|
41
|
+
* dump intact) would be REUSED by `buildPack` and then fail at BOOT as an
|
|
42
|
+
* internal error. Requiring all three present + non-empty makes `buildPack`
|
|
43
|
+
* rebuild a torn pack and makes the boot decision surface STORE_UNAVAILABLE
|
|
44
|
+
* (the ordinary "not built" recovery) instead of a "please report this" crash. */
|
|
45
|
+
export function packIsComplete(dir: string): boolean {
|
|
46
|
+
if (readManifest(dir) === undefined) return false;
|
|
47
|
+
for (const file of [DATA_FILE, SCHEMA_FILE, INDEX_FILE]) {
|
|
48
|
+
try {
|
|
49
|
+
if (statSync(join(dir, file)).size <= 0) return false;
|
|
50
|
+
} catch {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Boot a {@link StoreSession} from a built pack directory — the perf keystone.
|
|
3
|
+
*
|
|
4
|
+
* The store loads from `data.nq` through ke's cache path (no TTL parse), and
|
|
5
|
+
* the executable GraphQL schema is rebuilt from `schema.json` via ke-graphql's
|
|
6
|
+
* `compileFromExtraction` — passes 2-7, pure JS, no store, no SPARQL. The live
|
|
7
|
+
* 7-pass `compile` is NEVER called here; that only runs at build time. The
|
|
8
|
+
* entity index is a plain `JSON.parse`. The result is an immutable session the
|
|
9
|
+
* lazy store memoizes for the process's lifetime.
|
|
10
|
+
*
|
|
11
|
+
* Reached only behind a dynamic import (store boot), never on the storeless
|
|
12
|
+
* fast path.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { readFileSync } from "node:fs";
|
|
16
|
+
import { join } from "node:path";
|
|
17
|
+
import { createStore } from "@canonical/ke";
|
|
18
|
+
import { compileFromExtraction } from "@canonical/ke-graphql";
|
|
19
|
+
import { RECOVERY_CLI_PREFIX } from "../../../constants.js";
|
|
20
|
+
import { PragmaError } from "../../error/PragmaError.js";
|
|
21
|
+
import { cliRecovery } from "../../error/recovery.js";
|
|
22
|
+
import type { StoreSession } from "../types.js";
|
|
23
|
+
import { readManifest } from "./manifest.js";
|
|
24
|
+
import {
|
|
25
|
+
DATA_FILE,
|
|
26
|
+
INDEX_FILE,
|
|
27
|
+
packIndexSchema,
|
|
28
|
+
SCHEMA_FILE,
|
|
29
|
+
} from "./types.js";
|
|
30
|
+
|
|
31
|
+
/** STORE_UNAVAILABLE with the canonical `pragma sources update` recovery (CLI + MCP). */
|
|
32
|
+
function packUnavailable(reason: string): PragmaError {
|
|
33
|
+
return PragmaError.storeUnavailable(reason, {
|
|
34
|
+
recovery: cliRecovery(
|
|
35
|
+
`${RECOVERY_CLI_PREFIX}sources update`,
|
|
36
|
+
"Rebuild the local store from the configured packages.",
|
|
37
|
+
// An agent recovers by calling the tool, then retrying (PR9 C1 cold-store
|
|
38
|
+
// retry makes the post-update retry succeed).
|
|
39
|
+
{ tool: "sources_update" },
|
|
40
|
+
),
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Read a pack directory into a bootable store session.
|
|
46
|
+
*
|
|
47
|
+
* @param dir - The pack directory (must hold a complete pack).
|
|
48
|
+
* @returns The store session: store, schema, context factory, prefixes, index.
|
|
49
|
+
* @throws PragmaError STORE_UNAVAILABLE when the pack is incomplete.
|
|
50
|
+
* @note Impure — creates a store from the cached n-quads dump.
|
|
51
|
+
*/
|
|
52
|
+
export async function readPack(dir: string): Promise<StoreSession> {
|
|
53
|
+
const manifest = readManifest(dir);
|
|
54
|
+
if (!manifest) {
|
|
55
|
+
throw packUnavailable(`The pack at ${dir} is incomplete.`);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const store = await createStore({
|
|
59
|
+
// Cache hit loads the n-quads dump directly — no sources are re-parsed.
|
|
60
|
+
sources: [],
|
|
61
|
+
prefixes: manifest.prefixes,
|
|
62
|
+
cache: join(dir, DATA_FILE),
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
// `loaderCache: "process"` shares the DataLoader caches across every context
|
|
66
|
+
// for this immutable store's lifetime (the MCP p95 win) — sound because the
|
|
67
|
+
// store never mutates between reloads. PR7 relies on it.
|
|
68
|
+
const compiled = compileFromExtraction(
|
|
69
|
+
readFileSync(join(dir, SCHEMA_FILE), "utf-8"),
|
|
70
|
+
{ loaderCache: "process" },
|
|
71
|
+
);
|
|
72
|
+
const index = packIndexSchema.parse(
|
|
73
|
+
JSON.parse(readFileSync(join(dir, INDEX_FILE), "utf-8")),
|
|
74
|
+
);
|
|
75
|
+
|
|
76
|
+
// Guard against a corrupt/unparseable `data.nq` beside an intact manifest:
|
|
77
|
+
// ke silently falls back to an EMPTY store (and rewrites an empty dump).
|
|
78
|
+
// If the index says the pack is populated but the store booted with no
|
|
79
|
+
// triples, the cache is ruined — surface STORE_UNAVAILABLE (and, via the
|
|
80
|
+
// now-empty dump, `packIsComplete` turns false so recovery rebuilds) rather
|
|
81
|
+
// than serve an empty graph as if it were the pack.
|
|
82
|
+
if (index.entities.length > 0 && !(await storeHasTriples(store))) {
|
|
83
|
+
store.dispose();
|
|
84
|
+
throw packUnavailable(`The pack at ${dir} has a corrupt data cache.`);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
return {
|
|
88
|
+
store,
|
|
89
|
+
schema: compiled.schema,
|
|
90
|
+
createContext: compiled.createContext,
|
|
91
|
+
prefixes: manifest.prefixes,
|
|
92
|
+
index,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/** Whether the booted store holds at least one triple (a cheap ASK probe). */
|
|
97
|
+
async function storeHasTriples(store: StoreSession["store"]): Promise<boolean> {
|
|
98
|
+
const result = (await store.query("ASK { ?s ?p ?o }" as never)) as {
|
|
99
|
+
result: boolean;
|
|
100
|
+
};
|
|
101
|
+
return result.result === true;
|
|
102
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Graphpack artifact contracts — the four files a built pack directory holds
|
|
3
|
+
* and the zod schemas that keep them honest on read.
|
|
4
|
+
*
|
|
5
|
+
* A pack is the content-addressed, boot-ready form of a set of RDF sources:
|
|
6
|
+
* `data.nq` (the store's n-quads dump — boots via ke's cache path, no TTL
|
|
7
|
+
* parse), `schema.json` (the serialized ke-graphql extraction — boots via
|
|
8
|
+
* `compileFromExtraction`, no live 7-pass compile), `index.json` (the storeless
|
|
9
|
+
* entity index the completion tier and reads consume), and `manifest.json`
|
|
10
|
+
* (provenance + the prefixes the store was built with). A directory missing
|
|
11
|
+
* `manifest.json` is treated as absent (a torn build), so writes are always
|
|
12
|
+
* temp-dir + atomic rename.
|
|
13
|
+
*
|
|
14
|
+
* This module is reached only behind a dynamic import (pack build / read /
|
|
15
|
+
* store boot), so its zod dependency never lands on the storeless fast path.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import { z } from "zod";
|
|
19
|
+
|
|
20
|
+
/** The n-quads store dump — ke boots it via `createStore({ cache })`. */
|
|
21
|
+
export const DATA_FILE = "data.nq";
|
|
22
|
+
/** The serialized ke-graphql extraction — boots via `compileFromExtraction`. */
|
|
23
|
+
export const SCHEMA_FILE = "schema.json";
|
|
24
|
+
/** The storeless entity index (PR-C's dynamic-completion contract). */
|
|
25
|
+
export const INDEX_FILE = "index.json";
|
|
26
|
+
/** Provenance + prefixes; its presence marks a pack directory as complete. */
|
|
27
|
+
export const MANIFEST_FILE = "manifest.json";
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* One indexed entity. The `{ name, type }` pair is the FROZEN minimum the
|
|
31
|
+
* dynamic-completion tier (and PR-C's read verbs) rely on; every other field is
|
|
32
|
+
* enrichment a later PR may add without breaking the contract.
|
|
33
|
+
*/
|
|
34
|
+
export interface PackIndexEntity {
|
|
35
|
+
/** Completion token — the prefixed name a user types (e.g. `ds:Button`). */
|
|
36
|
+
readonly name: string;
|
|
37
|
+
/** Prefixed primary `rdf:type` — the completion filter key (e.g. `ds:UIBlock`). */
|
|
38
|
+
readonly type: string;
|
|
39
|
+
/** Full subject URI. */
|
|
40
|
+
readonly uri?: string;
|
|
41
|
+
/** Prefixed subject (same value as `name`, kept explicit for readers). */
|
|
42
|
+
readonly prefixed?: string;
|
|
43
|
+
/** All prefixed `rdf:type` values asserted on the subject. */
|
|
44
|
+
readonly types?: readonly string[];
|
|
45
|
+
/** Human label (rdfs:label / skos:prefLabel / dcterms:title / schema:name). */
|
|
46
|
+
readonly label?: string | null;
|
|
47
|
+
/**
|
|
48
|
+
* Alternative completable names — the `ds:name` values a family (e.g.
|
|
49
|
+
* `ds:Tier`, matched by `tier lookup`) is addressed by, when they differ from
|
|
50
|
+
* `name`/`label`. Enrichment for the storeless name-completion sources.
|
|
51
|
+
*/
|
|
52
|
+
readonly altNames?: readonly string[];
|
|
53
|
+
/** Schema (`tbox`) vs individual (`abox`). */
|
|
54
|
+
readonly box?: "tbox" | "abox";
|
|
55
|
+
/** Short description (rdfs:comment / dcterms:description / skos:definition). */
|
|
56
|
+
readonly description?: string | null;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* The storeless entity index a pack ships as `index.json`.
|
|
61
|
+
*
|
|
62
|
+
* `version` is `2` for packs built by this kernel (the v2 enrichment fields on
|
|
63
|
+
* each entity + the resource browser depend on it); `1` is a legacy artifact
|
|
64
|
+
* whose enrichment is absent — the resources provider degrades to a "run
|
|
65
|
+
* `pragma sources update`" hint rather than a live re-index.
|
|
66
|
+
*/
|
|
67
|
+
export interface PackIndex {
|
|
68
|
+
readonly version: 1 | 2;
|
|
69
|
+
/** The pack's content hash (matches its cache directory name). */
|
|
70
|
+
readonly contentHash: string;
|
|
71
|
+
readonly prefixes: Readonly<Record<string, string>>;
|
|
72
|
+
readonly entities: readonly PackIndexEntity[];
|
|
73
|
+
/** Full-type-URI → count of asserted instances. */
|
|
74
|
+
readonly instanceCountByType: Readonly<Record<string, number>>;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/** zod schema validating a persisted {@link PackIndexEntity}. */
|
|
78
|
+
export const packIndexEntitySchema: z.ZodType<PackIndexEntity> = z.object({
|
|
79
|
+
name: z.string(),
|
|
80
|
+
type: z.string(),
|
|
81
|
+
uri: z.string().optional(),
|
|
82
|
+
prefixed: z.string().optional(),
|
|
83
|
+
types: z.array(z.string()).optional(),
|
|
84
|
+
label: z.string().nullable().optional(),
|
|
85
|
+
altNames: z.array(z.string()).optional(),
|
|
86
|
+
box: z.enum(["tbox", "abox"]).optional(),
|
|
87
|
+
description: z.string().nullable().optional(),
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
/** zod schema validating a persisted {@link PackIndex}. */
|
|
91
|
+
export const packIndexSchema: z.ZodType<PackIndex> = z.object({
|
|
92
|
+
version: z.union([z.literal(1), z.literal(2)]),
|
|
93
|
+
contentHash: z.string(),
|
|
94
|
+
prefixes: z.record(z.string(), z.string()),
|
|
95
|
+
entities: z.array(packIndexEntitySchema),
|
|
96
|
+
instanceCountByType: z.record(z.string(), z.number()),
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
/** zod schema validating a persisted `manifest.json`. */
|
|
100
|
+
export const manifestSchema = z.object({
|
|
101
|
+
name: z.string(),
|
|
102
|
+
version: z.string(),
|
|
103
|
+
/** The config `packages` ref this pack was built from (verbatim), or a label. */
|
|
104
|
+
sourceRef: z.string(),
|
|
105
|
+
contentHash: z.string(),
|
|
106
|
+
prefixes: z.record(z.string(), z.string()),
|
|
107
|
+
createdAt: z.string(),
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
/** Pack provenance and the prefixes the store was built with. */
|
|
111
|
+
export type Manifest = z.infer<typeof manifestSchema>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime kernel barrel — the per-invocation context, its builder, and the
|
|
3
|
+
* lazy store / query facade the store-backed capabilities reach through.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export { bootRuntime } from "./boot.js";
|
|
7
|
+
export { createQueryFacade } from "./facade.js";
|
|
8
|
+
export { createLazyStore, type LazyStoreContext } from "./store.js";
|
|
9
|
+
export type {
|
|
10
|
+
GlobalFlags,
|
|
11
|
+
LazyStore,
|
|
12
|
+
PragmaRuntime,
|
|
13
|
+
QueryFacade,
|
|
14
|
+
StoreSession,
|
|
15
|
+
} from "./types.js";
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve the boot decision into a live {@link StoreSession} — the heavy,
|
|
3
|
+
* dynamic-import-only module that pulls ke/ke-graphql/oxigraph.
|
|
4
|
+
*
|
|
5
|
+
* The lazy store reaches this behind `await import(...)`, so nothing on the
|
|
6
|
+
* storeless fast path (or in the `capabilities/index` static graph) loads the
|
|
7
|
+
* runtime. Boot is cache-only and networkless: a cold store surfaces
|
|
8
|
+
* STORE_UNAVAILABLE with the single `pragma sources update` recovery, rather
|
|
9
|
+
* than silently reaching out.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { RECOVERY_CLI_PREFIX } from "../../constants.js";
|
|
13
|
+
import type { ConfigLayers } from "../config/types.js";
|
|
14
|
+
import { PragmaError } from "../error/PragmaError.js";
|
|
15
|
+
import { cliRecovery } from "../error/recovery.js";
|
|
16
|
+
import { materializeEmbeddedPack } from "./graphpack/embedded.js";
|
|
17
|
+
import { readPack } from "./graphpack/read.js";
|
|
18
|
+
import { resolveSources } from "./resolveSources.js";
|
|
19
|
+
import type { StoreSession } from "./types.js";
|
|
20
|
+
|
|
21
|
+
/** What {@link loadStoreSession} needs from the runtime. */
|
|
22
|
+
export interface LoadSessionContext {
|
|
23
|
+
readonly cwd: string;
|
|
24
|
+
readonly loadConfig: () => Promise<ConfigLayers>;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Boot the store session per the decision table.
|
|
29
|
+
*
|
|
30
|
+
* @param ctx - The working directory and memoized config loader.
|
|
31
|
+
* @returns The booted store session.
|
|
32
|
+
* @throws PragmaError STORE_UNAVAILABLE when the store is cold.
|
|
33
|
+
* @note Impure — reads config, materializes/loads a pack, boots oxigraph.
|
|
34
|
+
*/
|
|
35
|
+
export async function loadStoreSession(
|
|
36
|
+
ctx: LoadSessionContext,
|
|
37
|
+
): Promise<StoreSession> {
|
|
38
|
+
const layers = await ctx.loadConfig();
|
|
39
|
+
const decision = resolveSources(layers, ctx.cwd);
|
|
40
|
+
|
|
41
|
+
if (decision.kind === "unavailable") {
|
|
42
|
+
throw PragmaError.storeUnavailable(`${decision.reason}.`, {
|
|
43
|
+
recovery: cliRecovery(
|
|
44
|
+
`${RECOVERY_CLI_PREFIX}sources update`,
|
|
45
|
+
"Build the local store from the configured packages.",
|
|
46
|
+
// An agent recovers by calling the tool (then retrying — PR9's C1 cold-
|
|
47
|
+
// store retry makes a post-update retry succeed).
|
|
48
|
+
{ tool: "sources_update" },
|
|
49
|
+
),
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const dir =
|
|
54
|
+
decision.kind === "embedded" ? materializeEmbeddedPack() : decision.dir;
|
|
55
|
+
return readPack(dir);
|
|
56
|
+
}
|