@canonical/pragma-cli 0.31.0 → 0.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -421
- package/dist/pragma +0 -0
- package/package.json +28 -42
- package/src/bin.ts +292 -11
- package/src/capabilities/block/blockList.test.ts +79 -0
- package/src/capabilities/block/blockList.verb.ts +163 -0
- package/src/capabilities/block/index.ts +25 -0
- package/src/capabilities/block/pack.ts +166 -0
- package/src/capabilities/block/parity.test.ts +187 -0
- package/src/capabilities/block/tierChain.ts +78 -0
- package/src/capabilities/capabilities/capabilities.render.ts +89 -0
- package/src/capabilities/capabilities/capabilities.test.ts +140 -0
- package/src/capabilities/capabilities/capabilities.verb.ts +48 -0
- package/src/capabilities/capabilities/catalog.ts +148 -0
- package/src/capabilities/capabilities/hints.ts +212 -0
- package/src/capabilities/capabilities/index.ts +13 -0
- package/src/capabilities/capabilities/types.ts +60 -0
- package/src/capabilities/colophon/collectColophon.ts +68 -0
- package/src/capabilities/colophon/colophon.render.test.ts +114 -0
- package/src/capabilities/colophon/colophon.render.ts +47 -0
- package/src/capabilities/colophon/colophon.test.ts +241 -0
- package/src/capabilities/colophon/colophon.verb.ts +44 -0
- package/src/capabilities/colophon/index.ts +6 -0
- package/src/capabilities/colophon/markdownTerminal.test.ts +50 -0
- package/src/capabilities/colophon/markdownTerminal.ts +104 -0
- package/src/capabilities/colophon/pragmaColophon.ts +66 -0
- package/src/capabilities/colophon/types.ts +29 -0
- package/src/capabilities/config/collectConfigShow.ts +32 -0
- package/src/capabilities/config/field.render.ts +28 -0
- package/src/capabilities/config/fields.ts +81 -0
- package/src/capabilities/config/index.ts +6 -0
- package/src/capabilities/config/runField.ts +59 -0
- package/src/capabilities/config/runSet.ts +38 -0
- package/src/capabilities/config/set.test.ts +207 -0
- package/src/capabilities/config/set.verb.ts +70 -0
- package/src/capabilities/config/show.render.test.ts +65 -0
- package/src/capabilities/config/show.render.ts +107 -0
- package/src/capabilities/config/show.verb.ts +45 -0
- package/src/capabilities/config/types.ts +27 -0
- package/src/capabilities/create/byteEquality.subprocess.test.ts +88 -0
- package/src/capabilities/create/byteEquality.test.ts +225 -0
- package/src/capabilities/create/compiledCreate.subprocess.test.ts +152 -0
- package/src/capabilities/create/create.mcp.test.ts +139 -0
- package/src/capabilities/create/create.render.ts +50 -0
- package/src/capabilities/create/create.test.ts +432 -0
- package/src/capabilities/create/create.verb.ts +493 -0
- package/src/capabilities/create/cwdJail.test.ts +129 -0
- package/src/capabilities/create/generatorToVerbSpec.ts +111 -0
- package/src/capabilities/create/index.ts +25 -0
- package/src/capabilities/create/pathJail.ts +73 -0
- package/src/capabilities/create/pickGenerator.ts +63 -0
- package/src/capabilities/create/templates.embedded.generated.ts +53 -0
- package/src/capabilities/create/types.ts +8 -0
- package/src/capabilities/doctor/checks/checkConfigFile.ts +41 -0
- package/src/capabilities/doctor/checks/checkKeStore.ts +39 -0
- package/src/capabilities/doctor/checks/checkMcpCommands.ts +114 -0
- package/src/capabilities/doctor/checks/checkMcpConfigured.ts +67 -0
- package/src/capabilities/doctor/checks/checkNodeVersion.ts +25 -0
- package/src/capabilities/doctor/checks/checkPackageRefs.ts +73 -0
- package/src/capabilities/doctor/checks/checkPragmaVersion.ts +22 -0
- package/src/capabilities/doctor/checks/checkShellCompletions.test.ts +111 -0
- package/src/capabilities/doctor/checks/checkShellCompletions.ts +131 -0
- package/src/capabilities/doctor/checks/checkSkillsSymlinked.ts +60 -0
- package/src/capabilities/doctor/checks/deriveBand.test.ts +42 -0
- package/src/capabilities/doctor/checks/deriveBand.ts +28 -0
- package/src/capabilities/doctor/doctor.render.test.ts +170 -0
- package/src/capabilities/doctor/doctor.render.ts +198 -0
- package/src/capabilities/doctor/doctor.test.ts +209 -0
- package/src/capabilities/doctor/doctor.verb.ts +46 -0
- package/src/capabilities/doctor/index.ts +6 -0
- package/src/capabilities/doctor/runChecks.ts +100 -0
- package/src/capabilities/doctor/types.ts +56 -0
- package/src/capabilities/emptyRecovery.test.ts +112 -0
- package/src/capabilities/graph/index.ts +21 -0
- package/src/capabilities/graph/inspect.render.ts +38 -0
- package/src/capabilities/graph/inspect.test.ts +80 -0
- package/src/capabilities/graph/inspect.verb.ts +51 -0
- package/src/capabilities/graph/query.render.ts +77 -0
- package/src/capabilities/graph/query.test.ts +156 -0
- package/src/capabilities/graph/query.verb.ts +58 -0
- package/src/capabilities/graph/runQuery.ts +49 -0
- package/src/capabilities/index.ts +54 -0
- package/src/capabilities/info/collectInfo.ts +76 -0
- package/src/capabilities/info/index.ts +6 -0
- package/src/capabilities/info/info.render.ts +72 -0
- package/src/capabilities/info/info.test.ts +127 -0
- package/src/capabilities/info/info.verb.ts +46 -0
- package/src/capabilities/info/types.ts +42 -0
- package/src/capabilities/lazy.test.ts +89 -0
- package/src/capabilities/meta/complete.verb.ts +52 -0
- package/src/capabilities/meta/index.ts +15 -0
- package/src/capabilities/meta/mcp.verb.ts +35 -0
- package/src/capabilities/modifier/index.ts +15 -0
- package/src/capabilities/modifier/pack.ts +64 -0
- package/src/capabilities/ontology/index.ts +19 -0
- package/src/capabilities/ontology/ontology.test.ts +246 -0
- package/src/capabilities/ontology/queries.ts +197 -0
- package/src/capabilities/ontology/render.ts +87 -0
- package/src/capabilities/ontology/verbs.ts +269 -0
- package/src/capabilities/prompt/index.ts +18 -0
- package/src/capabilities/prompt/prompt.render.test.ts +94 -0
- package/src/capabilities/prompt/prompt.render.ts +87 -0
- package/src/capabilities/prompt/prompt.test.ts +180 -0
- package/src/capabilities/prompt/types.ts +30 -0
- package/src/capabilities/prompt/verbs.ts +93 -0
- package/src/capabilities/reference.test.ts +32 -0
- package/src/capabilities/resources/index.ts +15 -0
- package/src/capabilities/resources/provider.ts +245 -0
- package/src/capabilities/resources/resources.test.ts +213 -0
- package/src/capabilities/roundtrip.test.ts +107 -0
- package/src/capabilities/scopeTypeSync.test.ts +37 -0
- package/src/capabilities/setup/index.ts +12 -0
- package/src/capabilities/setup/operations/setupCompletions.ts +141 -0
- package/src/capabilities/setup/operations/setupGenerator.ts +403 -0
- package/src/capabilities/setup/operations/setupLsp.ts +105 -0
- package/src/capabilities/setup/operations/setupMcp.ts +262 -0
- package/src/capabilities/setup/operations/setupSkills.ts +205 -0
- package/src/capabilities/setup/setup.render.test.ts +109 -0
- package/src/capabilities/setup/setup.render.ts +96 -0
- package/src/capabilities/setup/setup.test.ts +702 -0
- package/src/capabilities/setup/setup.verb.ts +261 -0
- package/src/capabilities/setup/shell.ts +85 -0
- package/src/capabilities/setup/types.ts +99 -0
- package/src/capabilities/shared/assertExecOk.ts +106 -0
- package/src/capabilities/shared/bands.ts +16 -0
- package/src/capabilities/shared/packageManager.ts +62 -0
- package/src/capabilities/shared/registry.ts +70 -0
- package/src/capabilities/skill/discover.ts +178 -0
- package/src/capabilities/skill/index.ts +12 -0
- package/src/capabilities/skill/render.ts +60 -0
- package/src/capabilities/skill/skill.test.ts +142 -0
- package/src/capabilities/skill/verbs.ts +100 -0
- package/src/capabilities/sources/collectStatus.ts +102 -0
- package/src/capabilities/sources/index.ts +15 -0
- package/src/capabilities/sources/installSkills.ts +124 -0
- package/src/capabilities/sources/runUpdate.ts +464 -0
- package/src/capabilities/sources/sources.test.ts +828 -0
- package/src/capabilities/sources/status.render.test.ts +65 -0
- package/src/capabilities/sources/status.render.ts +83 -0
- package/src/capabilities/sources/status.verb.ts +42 -0
- package/src/capabilities/sources/types.ts +51 -0
- package/src/capabilities/sources/update.render.ts +35 -0
- package/src/capabilities/sources/update.verb.ts +76 -0
- package/src/capabilities/standard/index.ts +18 -0
- package/src/capabilities/standard/pack.ts +128 -0
- package/src/capabilities/standard/parity.test.ts +208 -0
- package/src/capabilities/surface.test.ts +233 -0
- package/src/capabilities/tier/index.ts +19 -0
- package/src/capabilities/tier/lookup.render.test.ts +72 -0
- package/src/capabilities/tier/lookup.render.ts +59 -0
- package/src/capabilities/tier/lookup.test.ts +83 -0
- package/src/capabilities/tier/lookup.verb.ts +44 -0
- package/src/capabilities/tier/pack.ts +28 -0
- package/src/capabilities/tier/runLookup.ts +87 -0
- package/src/capabilities/token/addConfig.render.ts +27 -0
- package/src/capabilities/token/addConfig.test.ts +62 -0
- package/src/capabilities/token/addConfig.verb.ts +40 -0
- package/src/capabilities/token/index.ts +19 -0
- package/src/capabilities/token/pack.ts +58 -0
- package/src/capabilities/token/runAddConfig.ts +95 -0
- package/src/capabilities/upgrade/index.ts +6 -0
- package/src/capabilities/upgrade/runUpgrade.ts +119 -0
- package/src/capabilities/upgrade/types.ts +21 -0
- package/src/capabilities/upgrade/upgrade.render.ts +55 -0
- package/src/capabilities/upgrade/upgrade.test.ts +372 -0
- package/src/capabilities/upgrade/upgrade.verb.ts +56 -0
- package/src/constants.test.ts +33 -0
- package/src/constants.ts +38 -70
- package/src/index.ts +27 -122
- package/src/kernel/completion/__snapshots__/emitScripts.test.ts.snap +339 -0
- package/src/kernel/completion/bashDrive.test.ts +73 -0
- package/src/kernel/completion/complete.test.ts +99 -0
- package/src/kernel/completion/complete.ts +77 -0
- package/src/kernel/completion/emitScripts.test.ts +173 -0
- package/src/kernel/completion/emitScripts.ts +122 -0
- package/src/kernel/completion/entitySource.test.ts +198 -0
- package/src/kernel/completion/entitySource.ts +277 -0
- package/src/kernel/completion/index.ts +42 -0
- package/src/kernel/completion/model.test.ts +405 -0
- package/src/kernel/completion/model.ts +258 -0
- package/src/kernel/completion/parse.test.ts +336 -0
- package/src/kernel/completion/parse.ts +294 -0
- package/src/kernel/completion/rank.test.ts +100 -0
- package/src/kernel/completion/rank.ts +118 -0
- package/src/kernel/completion/resolve.test.ts +204 -0
- package/src/kernel/completion/resolve.ts +133 -0
- package/src/kernel/completion/safety.test.ts +374 -0
- package/src/kernel/completion/templates/bash.ts +249 -0
- package/src/kernel/completion/templates/fish.ts +245 -0
- package/src/kernel/completion/templates/shared.ts +134 -0
- package/src/kernel/completion/templates/zsh.ts +246 -0
- package/src/kernel/completion/types.ts +153 -0
- package/src/kernel/config/__snapshots__/firstRun.test.ts.snap +11 -0
- package/src/kernel/config/defaults.ts +28 -0
- package/src/kernel/config/evaluateProjectConfig.ts +119 -0
- package/src/kernel/config/findProjectConfig.ts +45 -0
- package/src/kernel/config/firstRun.test.ts +60 -0
- package/src/kernel/config/firstRun.ts +91 -0
- package/src/kernel/config/globalConfig.ts +94 -0
- package/src/kernel/config/index.ts +35 -0
- package/src/kernel/config/paths.ts +39 -0
- package/src/kernel/config/readConfig.test.ts +245 -0
- package/src/kernel/config/readConfig.ts +94 -0
- package/src/kernel/config/schema.ts +56 -0
- package/src/kernel/config/types.ts +106 -0
- package/src/kernel/config/writeConfigField.ts +82 -0
- package/src/kernel/error/PragmaError.test.ts +119 -0
- package/src/kernel/error/PragmaError.ts +182 -0
- package/src/kernel/error/constants.ts +38 -0
- package/src/kernel/error/fromTaskError.test.ts +83 -0
- package/src/kernel/error/fromTaskError.ts +80 -0
- package/src/kernel/error/index.ts +23 -0
- package/src/kernel/error/recovery.test.ts +60 -0
- package/src/kernel/error/recovery.ts +49 -0
- package/src/kernel/error/renderError.ts +101 -0
- package/src/kernel/error/serialize.ts +28 -0
- package/src/kernel/error/types.ts +62 -0
- package/src/kernel/packs/collect.test.ts +138 -0
- package/src/kernel/packs/collect.ts +108 -0
- package/src/kernel/packs/compile.test.ts +229 -0
- package/src/kernel/packs/compile.ts +315 -0
- package/src/kernel/packs/disclosure.test.ts +200 -0
- package/src/kernel/packs/disclosure.ts +98 -0
- package/src/kernel/packs/glob.ts +39 -0
- package/src/kernel/packs/graphql/buildLookupDocument.ts +397 -0
- package/src/kernel/packs/graphql/fetchGraphqlLookup.ts +217 -0
- package/src/kernel/packs/graphql/nameMap.ts +67 -0
- package/src/kernel/packs/graphqlSource.test.ts +383 -0
- package/src/kernel/packs/iri.ts +78 -0
- package/src/kernel/packs/renderPack.ts +196 -0
- package/src/kernel/packs/resolveEntity.ts +232 -0
- package/src/kernel/packs/runBodies.ts +157 -0
- package/src/kernel/packs/sample.ts +60 -0
- package/src/kernel/packs/schema.ts +328 -0
- package/src/kernel/packs/sparql/applyFilters.ts +83 -0
- package/src/kernel/packs/sparql/applySearch.ts +33 -0
- package/src/kernel/packs/sparql/buildLookupQuery.ts +180 -0
- package/src/kernel/packs/sparql/escape.ts +22 -0
- package/src/kernel/packs/sparql/runSelect.test.ts +80 -0
- package/src/kernel/packs/sparql/runSelect.ts +84 -0
- package/src/kernel/packs/toolDescription.test.ts +81 -0
- package/src/kernel/packs/types.ts +337 -0
- package/src/kernel/packs/uniqueness.ts +35 -0
- package/src/kernel/project/cli/buildProgram.test.ts +431 -0
- package/src/kernel/project/cli/buildProgram.ts +291 -0
- package/src/kernel/project/cli/dispatch.test.ts +288 -0
- package/src/kernel/project/cli/dispatch.ts +334 -0
- package/src/kernel/project/cli/exitCodes.test.ts +59 -0
- package/src/kernel/project/cli/exitCodes.ts +68 -0
- package/src/kernel/project/cli/globalFlags.test.ts +107 -0
- package/src/kernel/project/cli/globalFlags.ts +149 -0
- package/src/kernel/project/cli/helpFormat.ts +58 -0
- package/src/kernel/project/cli/index.ts +21 -0
- package/src/kernel/project/cli/interactionSeam.test.ts +99 -0
- package/src/kernel/project/cli/rootHelp.ts +220 -0
- package/src/kernel/project/cli/suggest.test.ts +54 -0
- package/src/kernel/project/cli/suggest.ts +67 -0
- package/src/kernel/project/cli/suggestNames.ts +122 -0
- package/src/kernel/project/cli/verbHelp.test.ts +138 -0
- package/src/kernel/project/cli/verbHelp.ts +144 -0
- package/src/kernel/project/mcp/buildServer.ts +70 -0
- package/src/kernel/project/mcp/envelope.ts +44 -0
- package/src/kernel/project/mcp/index.ts +8 -0
- package/src/kernel/project/mcp/instructions.ts +48 -0
- package/src/kernel/project/mcp/mcpError.ts +52 -0
- package/src/kernel/project/mcp/parity.test.ts +72 -0
- package/src/kernel/project/mcp/prompts/prompts.test.ts +104 -0
- package/src/kernel/project/mcp/prompts/provider.ts +104 -0
- package/src/kernel/project/mcp/prompts/source.ts +194 -0
- package/src/kernel/project/mcp/registerVerb.test.ts +238 -0
- package/src/kernel/project/mcp/registerVerb.ts +296 -0
- package/src/kernel/project/mcp/serve.ts +34 -0
- package/src/kernel/project/mcp/toolDescriptions.test.ts +80 -0
- package/src/kernel/render/__snapshots__/renderers.test.ts.snap +127 -0
- package/src/kernel/render/compactUri.ts +25 -0
- package/src/kernel/render/contracts.ts +72 -0
- package/src/kernel/render/disclosure.ts +44 -0
- package/src/kernel/render/envelope.ts +50 -0
- package/src/kernel/render/formatters.ts +31 -0
- package/src/kernel/render/index.ts +30 -0
- package/src/kernel/render/prefixes.ts +21 -0
- package/src/kernel/render/renderers.test.ts +205 -0
- package/src/kernel/render/renderers.ts +447 -0
- package/src/kernel/render/style.test.ts +31 -0
- package/src/kernel/render/style.ts +74 -0
- package/src/kernel/render/writeStdout.test.ts +43 -0
- package/src/kernel/render/writeStdout.ts +49 -0
- package/src/kernel/runtime/boot.test.ts +69 -0
- package/src/kernel/runtime/boot.ts +59 -0
- package/src/kernel/runtime/facade.test.ts +125 -0
- package/src/kernel/runtime/facade.ts +47 -0
- package/src/kernel/runtime/graphpack/build.ts +176 -0
- package/src/kernel/runtime/graphpack/buildIndex.test.ts +103 -0
- package/src/kernel/runtime/graphpack/buildIndex.ts +317 -0
- package/src/kernel/runtime/graphpack/embedded/pack.generated.ts +5 -0
- package/src/kernel/runtime/graphpack/embedded/pack.index.generated.ts +3 -0
- package/src/kernel/runtime/graphpack/embedded/sample.ttl +39 -0
- package/src/kernel/runtime/graphpack/embedded.ts +70 -0
- package/src/kernel/runtime/graphpack/graphpack.test.ts +221 -0
- package/src/kernel/runtime/graphpack/hash.ts +46 -0
- package/src/kernel/runtime/graphpack/index.ts +21 -0
- package/src/kernel/runtime/graphpack/manifest.ts +55 -0
- package/src/kernel/runtime/graphpack/read.ts +117 -0
- package/src/kernel/runtime/graphpack/types.ts +125 -0
- package/src/kernel/runtime/index.ts +15 -0
- package/src/kernel/runtime/loadSession.ts +48 -0
- package/src/kernel/runtime/lock.ts +90 -0
- package/src/kernel/runtime/paths.ts +37 -0
- package/src/kernel/runtime/probe.test.ts +16 -0
- package/src/kernel/runtime/probe.ts +39 -0
- package/src/kernel/runtime/readEntity.ts +83 -0
- package/src/kernel/runtime/refs/gitOps.ts +88 -0
- package/src/kernel/runtime/refs/parseRef.test.ts +34 -0
- package/src/kernel/runtime/refs/parseRef.ts +103 -0
- package/src/kernel/runtime/refs/resolve.ts +380 -0
- package/src/kernel/runtime/resolveSources.test.ts +154 -0
- package/src/kernel/runtime/resolveSources.ts +66 -0
- package/src/kernel/runtime/store.test.ts +94 -0
- package/src/kernel/runtime/store.ts +90 -0
- package/src/kernel/runtime/storeReadiness.ts +61 -0
- package/src/kernel/runtime/storeless.test.ts +86 -0
- package/src/kernel/runtime/types.ts +210 -0
- package/src/kernel/runtime/wasmEmbed.test.ts +144 -0
- package/src/kernel/spec/asVerb.ts +23 -0
- package/src/kernel/spec/emitReference.test.ts +196 -0
- package/src/kernel/spec/emitReference.ts +491 -0
- package/src/kernel/spec/emitSurface.test.ts +65 -0
- package/src/kernel/spec/emitSurface.ts +225 -0
- package/src/kernel/spec/index.ts +36 -0
- package/src/kernel/spec/surfaceConformance.test.ts +94 -0
- package/src/kernel/spec/surfaceConformance.ts +135 -0
- package/src/kernel/spec/types.ts +233 -0
- package/src/kernel/spec/validate.test.ts +81 -0
- package/src/kernel/spec/validate.ts +125 -0
- package/src/testing/PARITY_GAPS.test.ts +32 -0
- package/src/testing/PARITY_GAPS.ts +179 -0
- package/src/testing/behavioral/README.md +164 -0
- package/src/testing/behavioral/agentSession.mcp.test.ts +160 -0
- package/src/testing/behavioral/autoLlm.e2e.test.ts +54 -0
- package/src/testing/behavioral/completion.test.ts +132 -0
- package/src/testing/behavioral/disclosure.test.ts +115 -0
- package/src/testing/behavioral/docExamples.test.ts +283 -0
- package/src/testing/behavioral/errorMatrix.mcp.test.ts +120 -0
- package/src/testing/behavioral/errorMatrix.storeless.test.ts +124 -0
- package/src/testing/behavioral/exitCodes.e2e.test.ts +53 -0
- package/src/testing/behavioral/firstRun.e2e.test.ts +40 -0
- package/src/testing/behavioral/harness.foundation.test.ts +136 -0
- package/src/testing/behavioral/journeys.cli.test.ts +131 -0
- package/src/testing/behavioral/journeys.defaultPack.test.ts +571 -0
- package/src/testing/behavioral/journeys.interactiveTty.e2e.test.ts +66 -0
- package/src/testing/behavioral/journeys.livePack.e2e.test.ts +129 -0
- package/src/testing/behavioral/journeys.mcpLifecycle.mcp.test.ts +176 -0
- package/src/testing/behavioral/liveReadSurface.ts +80 -0
- package/src/testing/behavioral/mcpServe.e2e.test.ts +21 -0
- package/src/testing/behavioral/mcpSurface.test.ts +139 -0
- package/src/testing/behavioral/parity.test.ts +224 -0
- package/src/testing/behavioral/rootCli.e2e.test.ts +62 -0
- package/src/testing/behavioral/staleCommands.test.ts +76 -0
- package/src/testing/eval/__snapshots__/eval.test.ts.snap +201 -0
- package/src/testing/eval/cases/assembly.ts +195 -0
- package/src/testing/eval/cases/effectful.ts +248 -0
- package/src/testing/eval/cases/readNouns.ts +235 -0
- package/src/testing/eval/cases/stable.ts +163 -0
- package/src/testing/eval/eval.test.ts +74 -0
- package/src/testing/eval/harness.ts +91 -0
- package/src/testing/eval/report.ts +58 -0
- package/src/testing/fixtures/blockGraph.ts +112 -0
- package/src/testing/fixtures/completionFixture.ts +239 -0
- package/src/testing/fixtures/fixtureCapability.ts +331 -0
- package/src/testing/fixtures/graph/canonical.ts +184 -0
- package/src/testing/fixtures/graph/defaultPack.ts +178 -0
- package/src/testing/fixtures/graph/owlExport.ts +95 -0
- package/src/testing/fixtures/packs/recipe.ts +78 -0
- package/src/testing/helpers/extractSnippets.ts +29 -0
- package/src/testing/helpers/fixtureGraph.ts +148 -0
- package/src/testing/helpers/golden.ts +45 -0
- package/src/testing/helpers/packRuntime.ts +118 -0
- package/src/testing/helpers/parity.ts +86 -0
- package/src/testing/helpers/projectCli.ts +35 -0
- package/src/testing/helpers/projectMcp.ts +145 -0
- package/src/testing/helpers/runCli.ts +128 -0
- package/src/testing/perf/budgets.test.ts +164 -0
- package/src/testing/perf/budgets.ts +37 -0
- package/src/testing/perf/globalSetup.ts +30 -0
- package/src/testing/perf/measure.ts +97 -0
- package/src/testing/setupXdgIsolation.ts +13 -12
- package/src/types.ts +42 -0
- package/src/bin.test.ts +0 -54
- package/src/compile-validation.runner.ts +0 -137
- package/src/compile-validation.ts +0 -191
- package/src/completions/computeSocketPath.test.ts +0 -26
- package/src/completions/computeSocketPath.ts +0 -16
- package/src/completions/constants.ts +0 -25
- package/src/completions/handleQuery.test.ts +0 -125
- package/src/completions/handleQuery.ts +0 -49
- package/src/completions/index.ts +0 -14
- package/src/completions/queryCompletions.test.ts +0 -105
- package/src/completions/queryCompletions.ts +0 -75
- package/src/completions/querySocket.test.ts +0 -101
- package/src/completions/querySocket.ts +0 -71
- package/src/completions/startCompletionsServer.test.ts +0 -74
- package/src/completions/startCompletionsServer.ts +0 -75
- package/src/completions/startCompletionsServer.unit.test.ts +0 -131
- package/src/completions/waitForSocket.test.ts +0 -27
- package/src/completions/waitForSocket.ts +0 -27
- package/src/config/configExists.ts +0 -14
- package/src/config/defaultConfig.test.ts +0 -33
- package/src/config/defaultConfig.ts +0 -59
- package/src/config/defaults.json +0 -17
- package/src/config/findProjectConfigPath.test.ts +0 -53
- package/src/config/findProjectConfigPath.ts +0 -36
- package/src/config/index.ts +0 -21
- package/src/config/mergeConfigFileUpdate.ts +0 -58
- package/src/config/parseConfigValues.ts +0 -217
- package/src/config/readConfig.test.ts +0 -395
- package/src/config/readConfig.ts +0 -21
- package/src/config/readConfigLayers.test.ts +0 -109
- package/src/config/readConfigLayers.ts +0 -118
- package/src/config/resolveConfigPath.test.ts +0 -20
- package/src/config/resolveConfigPath.ts +0 -11
- package/src/config/resolveGlobalConfigPath.ts +0 -13
- package/src/config/resolveWriteConfigPath.test.ts +0 -53
- package/src/config/resolveWriteConfigPath.ts +0 -31
- package/src/config/types.ts +0 -128
- package/src/config/writeConfig.ts +0 -37
- package/src/domains/block/blockConfig.ts +0 -97
- package/src/domains/block/commands/index.ts +0 -5
- package/src/domains/block/commands/list.test.ts +0 -111
- package/src/domains/block/commands/list.ts +0 -11
- package/src/domains/block/commands/lookup.test.ts +0 -187
- package/src/domains/block/commands/lookup.ts +0 -14
- package/src/domains/block/commands/sample.ts +0 -56
- package/src/domains/block/formatters/index.ts +0 -5
- package/src/domains/block/formatters/list.test.ts +0 -107
- package/src/domains/block/formatters/list.ts +0 -50
- package/src/domains/block/formatters/lookup.test.ts +0 -318
- package/src/domains/block/formatters/lookup.ts +0 -149
- package/src/domains/block/formatters/sample.ts +0 -21
- package/src/domains/block/formatters/types.ts +0 -16
- package/src/domains/block/helpers/index.ts +0 -4
- package/src/domains/block/helpers/resolveAspects.test.ts +0 -64
- package/src/domains/block/helpers/resolveAspects.ts +0 -35
- package/src/domains/block/index.ts +0 -25
- package/src/domains/block/mcp/index.ts +0 -2
- package/src/domains/block/mcp/specs.ts +0 -67
- package/src/domains/block/operations/index.ts +0 -5
- package/src/domains/block/operations/list.test.ts +0 -80
- package/src/domains/block/operations/list.ts +0 -72
- package/src/domains/block/operations/lookup.test.ts +0 -129
- package/src/domains/block/operations/lookup.ts +0 -446
- package/src/domains/block/operations/sample.ts +0 -41
- package/src/domains/block/orchestration/blockEmptyError.test.ts +0 -26
- package/src/domains/block/orchestration/blockEmptyError.ts +0 -19
- package/src/domains/block/orchestration/buildBlockFilters.ts +0 -12
- package/src/domains/block/orchestration/enrichBlocks.ts +0 -44
- package/src/domains/block/orchestration/index.ts +0 -5
- package/src/domains/block/orchestration/resolveBlockList.ts +0 -39
- package/src/domains/block/orchestration/resolveBlockLookup.ts +0 -35
- package/src/domains/block/stories.test.ts +0 -28
- package/src/domains/block/stories.ts +0 -260
- package/src/domains/block/types.ts +0 -30
- package/src/domains/config/commands/channel.test.ts +0 -128
- package/src/domains/config/commands/channel.ts +0 -99
- package/src/domains/config/commands/configScope.ts +0 -46
- package/src/domains/config/commands/framework.test.ts +0 -119
- package/src/domains/config/commands/framework.ts +0 -103
- package/src/domains/config/commands/index.ts +0 -6
- package/src/domains/config/commands/show.test.ts +0 -61
- package/src/domains/config/commands/show.ts +0 -11
- package/src/domains/config/commands/tier.test.ts +0 -102
- package/src/domains/config/commands/tier.ts +0 -97
- package/src/domains/config/commands/trace.test.ts +0 -165
- package/src/domains/config/commands/trace.ts +0 -83
- package/src/domains/config/formatters/channel.test.ts +0 -70
- package/src/domains/config/formatters/channel.ts +0 -37
- package/src/domains/config/formatters/framework.ts +0 -37
- package/src/domains/config/formatters/index.ts +0 -6
- package/src/domains/config/formatters/show.test.ts +0 -153
- package/src/domains/config/formatters/show.ts +0 -89
- package/src/domains/config/formatters/tier.test.ts +0 -86
- package/src/domains/config/formatters/tier.ts +0 -48
- package/src/domains/config/formatters/trace.ts +0 -28
- package/src/domains/config/index.ts +0 -36
- package/src/domains/config/mcp/index.ts +0 -2
- package/src/domains/config/mcp/specs.ts +0 -100
- package/src/domains/config/operations/index.ts +0 -6
- package/src/domains/config/operations/show.test.ts +0 -78
- package/src/domains/config/operations/show.ts +0 -48
- package/src/domains/config/operations/types.ts +0 -20
- package/src/domains/config/operations/validateChannel.test.ts +0 -36
- package/src/domains/config/operations/validateChannel.ts +0 -24
- package/src/domains/config/operations/validateFramework.ts +0 -24
- package/src/domains/config/operations/validateTier.test.ts +0 -65
- package/src/domains/config/operations/validateTier.ts +0 -43
- package/src/domains/config/stories.ts +0 -42
- package/src/domains/config/tasks/index.ts +0 -6
- package/src/domains/config/tasks/setChannel.ts +0 -21
- package/src/domains/config/tasks/setFramework.ts +0 -21
- package/src/domains/config/tasks/setTier.ts +0 -20
- package/src/domains/config/tasks/setTrace.ts +0 -20
- package/src/domains/config/tasks/writeConfigField.ts +0 -41
- package/src/domains/create/generatorPack/bundled.ts +0 -49
- package/src/domains/create/generatorPack/compileGeneratorPack.test.ts +0 -159
- package/src/domains/create/generatorPack/compileGeneratorPack.ts +0 -312
- package/src/domains/create/index.ts +0 -21
- package/src/domains/create/mcp/index.ts +0 -2
- package/src/domains/create/mcp/specs.ts +0 -13
- package/src/domains/create/renderGeneratorUi.test.ts +0 -103
- package/src/domains/create/renderGeneratorUi.ts +0 -65
- package/src/domains/doctor/commands/doctor.test.ts +0 -75
- package/src/domains/doctor/commands/doctor.ts +0 -43
- package/src/domains/doctor/commands/index.ts +0 -2
- package/src/domains/doctor/formatters/doctor.test.ts +0 -165
- package/src/domains/doctor/formatters/doctor.ts +0 -136
- package/src/domains/doctor/formatters/index.ts +0 -2
- package/src/domains/doctor/index.ts +0 -9
- package/src/domains/doctor/mcp/index.ts +0 -2
- package/src/domains/doctor/mcp/specs.ts +0 -41
- package/src/domains/doctor/operations/checks/checkConfigFile.ts +0 -42
- package/src/domains/doctor/operations/checks/checkKeStore.ts +0 -38
- package/src/domains/doctor/operations/checks/checkMcpCommands.ts +0 -133
- package/src/domains/doctor/operations/checks/checkMcpConfigured.ts +0 -65
- package/src/domains/doctor/operations/checks/checkNodeVersion.ts +0 -25
- package/src/domains/doctor/operations/checks/checkPackageRefs.ts +0 -76
- package/src/domains/doctor/operations/checks/checkPragmaVersion.ts +0 -20
- package/src/domains/doctor/operations/checks/checkShellCompletions.ts +0 -42
- package/src/domains/doctor/operations/checks/checkSkillsSymlinked.ts +0 -64
- package/src/domains/doctor/operations/checks/index.ts +0 -10
- package/src/domains/doctor/operations/checks.test.ts +0 -307
- package/src/domains/doctor/operations/index.ts +0 -3
- package/src/domains/doctor/operations/runChecks.test.ts +0 -176
- package/src/domains/doctor/operations/runChecks.ts +0 -78
- package/src/domains/doctor/operations/types.ts +0 -42
- package/src/domains/graph/commands/index.ts +0 -4
- package/src/domains/graph/commands/inspect.test.ts +0 -94
- package/src/domains/graph/commands/inspect.ts +0 -63
- package/src/domains/graph/commands/query.test.ts +0 -94
- package/src/domains/graph/commands/query.ts +0 -60
- package/src/domains/graph/formatters/index.ts +0 -4
- package/src/domains/graph/formatters/inspect.ts +0 -50
- package/src/domains/graph/formatters/query.test.ts +0 -87
- package/src/domains/graph/formatters/query.ts +0 -74
- package/src/domains/graph/helpers/index.ts +0 -3
- package/src/domains/graph/helpers/resolveUri.test.ts +0 -50
- package/src/domains/graph/helpers/resolveUri.ts +0 -77
- package/src/domains/graph/index.ts +0 -22
- package/src/domains/graph/mcp/index.ts +0 -2
- package/src/domains/graph/mcp/specs.ts +0 -82
- package/src/domains/graph/operations/executeQuery.test.ts +0 -68
- package/src/domains/graph/operations/executeQuery.ts +0 -32
- package/src/domains/graph/operations/index.ts +0 -4
- package/src/domains/graph/operations/inspectUri.test.ts +0 -101
- package/src/domains/graph/operations/inspectUri.ts +0 -64
- package/src/domains/graphql/commands/build.test.ts +0 -196
- package/src/domains/graphql/commands/build.ts +0 -117
- package/src/domains/graphql/commands/check.test.ts +0 -141
- package/src/domains/graphql/commands/check.ts +0 -81
- package/src/domains/graphql/commands/index.ts +0 -5
- package/src/domains/graphql/commands/serve.test.ts +0 -46
- package/src/domains/graphql/commands/serve.ts +0 -141
- package/src/domains/graphql/constants.ts +0 -10
- package/src/domains/graphql/formatters/index.ts +0 -3
- package/src/domains/graphql/formatters/report.ts +0 -78
- package/src/domains/graphql/helpers/gatherSources.test.ts +0 -92
- package/src/domains/graphql/helpers/gatherSources.ts +0 -58
- package/src/domains/graphql/helpers/index.ts +0 -6
- package/src/domains/graphql/helpers/parsePrefixes.test.ts +0 -44
- package/src/domains/graphql/helpers/parsePrefixes.ts +0 -38
- package/src/domains/graphql/helpers/resolveSourceFiles.test.ts +0 -65
- package/src/domains/graphql/helpers/resolveSourceFiles.ts +0 -66
- package/src/domains/graphql/helpers/routeGraphql.test.ts +0 -43
- package/src/domains/graphql/helpers/routeGraphql.ts +0 -28
- package/src/domains/graphql/index.ts +0 -24
- package/src/domains/graphql/operations/compileSchema.test.ts +0 -95
- package/src/domains/graphql/operations/compileSchema.ts +0 -107
- package/src/domains/graphql/operations/createSchemaServer.test.ts +0 -50
- package/src/domains/graphql/operations/createSchemaServer.ts +0 -75
- package/src/domains/graphql/operations/ensureSchemaArtifact.test.ts +0 -167
- package/src/domains/graphql/operations/ensureSchemaArtifact.ts +0 -178
- package/src/domains/graphql/operations/index.ts +0 -17
- package/src/domains/graphql/types.ts +0 -29
- package/src/domains/info/commands/index.ts +0 -4
- package/src/domains/info/commands/info.test.ts +0 -88
- package/src/domains/info/commands/info.ts +0 -47
- package/src/domains/info/commands/upgrade.test.ts +0 -183
- package/src/domains/info/commands/upgrade.ts +0 -153
- package/src/domains/info/constants.test.ts +0 -22
- package/src/domains/info/constants.ts +0 -15
- package/src/domains/info/formatters/index.ts +0 -8
- package/src/domains/info/formatters/info.test.ts +0 -207
- package/src/domains/info/formatters/info.ts +0 -131
- package/src/domains/info/formatters/upgrade.test.ts +0 -136
- package/src/domains/info/formatters/upgrade.ts +0 -70
- package/src/domains/info/index.ts +0 -9
- package/src/domains/info/mcp/index.ts +0 -2
- package/src/domains/info/mcp/specs.ts +0 -65
- package/src/domains/info/operations/checkRegistryVersion.test.ts +0 -124
- package/src/domains/info/operations/checkRegistryVersion.ts +0 -45
- package/src/domains/info/operations/collectEntityCounts.test.ts +0 -156
- package/src/domains/info/operations/collectEntityCounts.ts +0 -123
- package/src/domains/info/operations/collectInfo.test.ts +0 -122
- package/src/domains/info/operations/collectInfo.ts +0 -94
- package/src/domains/info/operations/collectStoreSummary.test.ts +0 -61
- package/src/domains/info/operations/collectStoreSummary.ts +0 -42
- package/src/domains/info/operations/index.ts +0 -6
- package/src/domains/info/types.test-d.ts +0 -35
- package/src/domains/info/types.ts +0 -67
- package/src/domains/llm/capabilities.test.ts +0 -111
- package/src/domains/llm/commands/capabilities.ts +0 -37
- package/src/domains/llm/commands/index.ts +0 -4
- package/src/domains/llm/commands/llm.ts +0 -41
- package/src/domains/llm/data/commandReference.ts +0 -106
- package/src/domains/llm/data/decisionTrees.ts +0 -55
- package/src/domains/llm/data/index.ts +0 -6
- package/src/domains/llm/data/toolCatalog.ts +0 -221
- package/src/domains/llm/formatters/capabilities.ts +0 -50
- package/src/domains/llm/formatters/index.ts +0 -4
- package/src/domains/llm/formatters/orientation.ts +0 -57
- package/src/domains/llm/index.ts +0 -9
- package/src/domains/llm/llmCommand.test.ts +0 -101
- package/src/domains/llm/mcp/index.ts +0 -2
- package/src/domains/llm/mcp/specs.ts +0 -93
- package/src/domains/llm/operations/collectContext.test.ts +0 -64
- package/src/domains/llm/operations/collectContext.ts +0 -37
- package/src/domains/llm/operations/index.ts +0 -3
- package/src/domains/llm/types.ts +0 -72
- package/src/domains/modifier/commands/index.ts +0 -5
- package/src/domains/modifier/commands/list.test.ts +0 -57
- package/src/domains/modifier/commands/list.ts +0 -9
- package/src/domains/modifier/commands/lookup.test.ts +0 -91
- package/src/domains/modifier/commands/lookup.ts +0 -14
- package/src/domains/modifier/commands/sample.ts +0 -54
- package/src/domains/modifier/formatters/index.ts +0 -8
- package/src/domains/modifier/formatters/list.test.ts +0 -38
- package/src/domains/modifier/formatters/list.ts +0 -22
- package/src/domains/modifier/formatters/lookup.test.ts +0 -33
- package/src/domains/modifier/formatters/lookup.ts +0 -50
- package/src/domains/modifier/formatters/sample.ts +0 -15
- package/src/domains/modifier/index.ts +0 -27
- package/src/domains/modifier/mcp/index.ts +0 -2
- package/src/domains/modifier/mcp/specs.ts +0 -65
- package/src/domains/modifier/modifierConfig.ts +0 -36
- package/src/domains/modifier/operations/index.ts +0 -5
- package/src/domains/modifier/operations/list.test.ts +0 -39
- package/src/domains/modifier/operations/list.ts +0 -41
- package/src/domains/modifier/operations/lookup.test.ts +0 -37
- package/src/domains/modifier/operations/lookup.ts +0 -69
- package/src/domains/modifier/operations/sample.ts +0 -32
- package/src/domains/modifier/orchestration/index.ts +0 -3
- package/src/domains/modifier/orchestration/modifierEmptyError.test.ts +0 -26
- package/src/domains/modifier/orchestration/modifierEmptyError.ts +0 -15
- package/src/domains/modifier/orchestration/resolveModifierList.ts +0 -16
- package/src/domains/modifier/orchestration/resolveModifierLookup.ts +0 -33
- package/src/domains/modifier/stories.test.ts +0 -20
- package/src/domains/modifier/stories.ts +0 -86
- package/src/domains/modifier/types.ts +0 -5
- package/src/domains/ontology/commands/index.ts +0 -4
- package/src/domains/ontology/commands/list.test.ts +0 -84
- package/src/domains/ontology/commands/list.ts +0 -11
- package/src/domains/ontology/commands/show.test.ts +0 -179
- package/src/domains/ontology/commands/show.ts +0 -14
- package/src/domains/ontology/formatters/index.ts +0 -5
- package/src/domains/ontology/formatters/list.ts +0 -64
- package/src/domains/ontology/formatters/show.ts +0 -396
- package/src/domains/ontology/helpers/buildClassTree.ts +0 -89
- package/src/domains/ontology/helpers/completeClassNames.ts +0 -43
- package/src/domains/ontology/helpers/expandOntologyIris.ts +0 -79
- package/src/domains/ontology/helpers/findNamespace.ts +0 -23
- package/src/domains/ontology/helpers/index.ts +0 -21
- package/src/domains/ontology/helpers/queryClasses.ts +0 -66
- package/src/domains/ontology/helpers/queryProperties.ts +0 -90
- package/src/domains/ontology/helpers/queryTboxFacts.ts +0 -160
- package/src/domains/ontology/helpers/resolvePrefix.ts +0 -45
- package/src/domains/ontology/index.ts +0 -26
- package/src/domains/ontology/mcp/index.ts +0 -2
- package/src/domains/ontology/mcp/specs.ts +0 -16
- package/src/domains/ontology/operations/index.ts +0 -5
- package/src/domains/ontology/operations/listOntologies.test.ts +0 -122
- package/src/domains/ontology/operations/listOntologies.ts +0 -197
- package/src/domains/ontology/operations/showOntology.test.ts +0 -184
- package/src/domains/ontology/operations/showOntology.ts +0 -323
- package/src/domains/ontology/operations/showOntologyRaw.test.ts +0 -41
- package/src/domains/ontology/operations/showOntologyRaw.ts +0 -50
- package/src/domains/ontology/stories.test.ts +0 -36
- package/src/domains/ontology/stories.ts +0 -153
- package/src/domains/refs/commands/updateRefs.ts +0 -52
- package/src/domains/refs/formatters/updateRefs.ts +0 -27
- package/src/domains/refs/index.ts +0 -27
- package/src/domains/refs/operations/gitOps.test.ts +0 -155
- package/src/domains/refs/operations/gitOps.ts +0 -92
- package/src/domains/refs/operations/index.ts +0 -10
- package/src/domains/refs/operations/parseRef.test.ts +0 -157
- package/src/domains/refs/operations/parseRef.ts +0 -114
- package/src/domains/refs/operations/paths.test.ts +0 -98
- package/src/domains/refs/operations/paths.ts +0 -91
- package/src/domains/refs/operations/readGlobalRefs.test.ts +0 -63
- package/src/domains/refs/operations/readGlobalRefs.ts +0 -37
- package/src/domains/refs/operations/updateRefs.test.ts +0 -167
- package/src/domains/refs/operations/updateRefs.ts +0 -180
- package/src/domains/setup/commands/all.ts +0 -58
- package/src/domains/setup/commands/completions.ts +0 -85
- package/src/domains/setup/commands/entrypoints.test.ts +0 -170
- package/src/domains/setup/commands/index.ts +0 -7
- package/src/domains/setup/commands/lsp.ts +0 -49
- package/src/domains/setup/commands/mcp.ts +0 -119
- package/src/domains/setup/commands/setup.ts +0 -70
- package/src/domains/setup/commands/skills.test.ts +0 -68
- package/src/domains/setup/commands/skills.ts +0 -110
- package/src/domains/setup/formatters/index.ts +0 -2
- package/src/domains/setup/formatters/skills.test.ts +0 -103
- package/src/domains/setup/formatters/skills.ts +0 -112
- package/src/domains/setup/formatters/types.ts +0 -7
- package/src/domains/setup/helpers/completionScripts.test.ts +0 -58
- package/src/domains/setup/helpers/completionScripts.ts +0 -92
- package/src/domains/setup/helpers/constants.ts +0 -2
- package/src/domains/setup/helpers/detectShell.test.ts +0 -48
- package/src/domains/setup/helpers/detectShell.ts +0 -20
- package/src/domains/setup/helpers/index.ts +0 -12
- package/src/domains/setup/helpers/runSetupTask.test.ts +0 -277
- package/src/domains/setup/helpers/runSetupTask.ts +0 -221
- package/src/domains/setup/index.ts +0 -37
- package/src/domains/setup/operations/index.ts +0 -6
- package/src/domains/setup/operations/setupAll.test.ts +0 -48
- package/src/domains/setup/operations/setupAll.ts +0 -41
- package/src/domains/setup/operations/setupCompletions.test.ts +0 -94
- package/src/domains/setup/operations/setupCompletions.ts +0 -54
- package/src/domains/setup/operations/setupLsp.test.ts +0 -30
- package/src/domains/setup/operations/setupLsp.ts +0 -22
- package/src/domains/setup/operations/setupMcp.test.ts +0 -120
- package/src/domains/setup/operations/setupMcp.ts +0 -108
- package/src/domains/setup/operations/setupSkills.test.ts +0 -191
- package/src/domains/setup/operations/setupSkills.ts +0 -160
- package/src/domains/setup/types.ts +0 -18
- package/src/domains/shared/ToolSpec.ts +0 -49
- package/src/domains/shared/bootStore.bareCore.test.ts +0 -63
- package/src/domains/shared/bootStore.test.ts +0 -82
- package/src/domains/shared/bootStore.ts +0 -171
- package/src/domains/shared/buildQuery.ts +0 -18
- package/src/domains/shared/compactUri.test.ts +0 -32
- package/src/domains/shared/compactUri.ts +0 -21
- package/src/domains/shared/context.ts +0 -16
- package/src/domains/shared/contracts.ts +0 -164
- package/src/domains/shared/createInteractivePromptSession.test.ts +0 -439
- package/src/domains/shared/createInteractivePromptSession.ts +0 -236
- package/src/domains/shared/emptyErrorRecovery.test.ts +0 -106
- package/src/domains/shared/extractLocalName.test.ts +0 -21
- package/src/domains/shared/extractLocalName.ts +0 -14
- package/src/domains/shared/filters/buildChannelFilter.test.ts +0 -52
- package/src/domains/shared/filters/buildChannelFilter.ts +0 -41
- package/src/domains/shared/filters/buildFilterConfig.ts +0 -15
- package/src/domains/shared/filters/buildFilters.test.ts +0 -33
- package/src/domains/shared/filters/buildFilters.ts +0 -30
- package/src/domains/shared/filters/buildTierFilter.test.ts +0 -78
- package/src/domains/shared/filters/buildTierFilter.ts +0 -69
- package/src/domains/shared/filters/describeFilters.ts +0 -14
- package/src/domains/shared/filters/index.ts +0 -10
- package/src/domains/shared/formatters.ts +0 -103
- package/src/domains/shared/listTiers.ts +0 -40
- package/src/domains/shared/loaders/bundledLoader.test.ts +0 -248
- package/src/domains/shared/loaders/bundledLoader.ts +0 -254
- package/src/domains/shared/loaders/gitLoader.ts +0 -30
- package/src/domains/shared/loaders/index.ts +0 -9
- package/src/domains/shared/loaders/localLoader.ts +0 -71
- package/src/domains/shared/loaders/readPackageDir.test.ts +0 -58
- package/src/domains/shared/loaders/readPackageDir.ts +0 -185
- package/src/domains/shared/loaders/storyAssetsPlugin.test.ts +0 -84
- package/src/domains/shared/loaders/storyAssetsPlugin.ts +0 -46
- package/src/domains/shared/lookupMany.test.ts +0 -135
- package/src/domains/shared/lookupMany.ts +0 -101
- package/src/domains/shared/mergeAndParseRefs.test.ts +0 -89
- package/src/domains/shared/mergeAndParseRefs.ts +0 -44
- package/src/domains/shared/namespaces.ts +0 -26
- package/src/domains/shared/packages.ts +0 -20
- package/src/domains/shared/parseSampleCount.test.ts +0 -47
- package/src/domains/shared/parseSampleCount.ts +0 -45
- package/src/domains/shared/pickRandom.ts +0 -22
- package/src/domains/shared/prefixes.test.ts +0 -211
- package/src/domains/shared/prefixes.ts +0 -204
- package/src/domains/shared/renderers.ts +0 -410
- package/src/domains/shared/resolveConfiguredGraphs.test.ts +0 -27
- package/src/domains/shared/resolveConfiguredGraphs.ts +0 -41
- package/src/domains/shared/resolveLookupExitCode.test.ts +0 -48
- package/src/domains/shared/resolveLookupExitCode.ts +0 -42
- package/src/domains/shared/runtime.ts +0 -61
- package/src/domains/shared/sampleFormatters.ts +0 -47
- package/src/domains/shared/semanticPackage.test.ts +0 -89
- package/src/domains/shared/semanticPackage.ts +0 -127
- package/src/domains/shared/stories/compileLookupCommand.test.ts +0 -145
- package/src/domains/shared/stories/compileLookupCommand.ts +0 -102
- package/src/domains/shared/stories/compileLookupTool.test.ts +0 -105
- package/src/domains/shared/stories/compileLookupTool.ts +0 -96
- package/src/domains/shared/stories/compileReadCommand.test.ts +0 -121
- package/src/domains/shared/stories/compileReadCommand.ts +0 -48
- package/src/domains/shared/stories/compileReadTool.test.ts +0 -64
- package/src/domains/shared/stories/compileReadTool.ts +0 -38
- package/src/domains/shared/stories/condense.test.ts +0 -18
- package/src/domains/shared/stories/condense.ts +0 -15
- package/src/domains/shared/stories/index.ts +0 -20
- package/src/domains/shared/stories/normalizeNames.test.ts +0 -20
- package/src/domains/shared/stories/normalizeNames.ts +0 -22
- package/src/domains/shared/stories/pack/applyPackFilters.test.ts +0 -151
- package/src/domains/shared/stories/pack/applyPackFilters.ts +0 -111
- package/src/domains/shared/stories/pack/applyPackSearch.test.ts +0 -57
- package/src/domains/shared/stories/pack/applyPackSearch.ts +0 -41
- package/src/domains/shared/stories/pack/buildLookupQuery.test.ts +0 -81
- package/src/domains/shared/stories/pack/buildLookupQuery.ts +0 -154
- package/src/domains/shared/stories/pack/bundled/index.ts +0 -23
- package/src/domains/shared/stories/pack/bundled/standardPack.ts +0 -164
- package/src/domains/shared/stories/pack/bundled/tierPack.ts +0 -50
- package/src/domains/shared/stories/pack/collectPackStories.test.ts +0 -406
- package/src/domains/shared/stories/pack/collectPackStories.ts +0 -158
- package/src/domains/shared/stories/pack/compilePackCommands.ts +0 -50
- package/src/domains/shared/stories/pack/compilePackStories.test.ts +0 -751
- package/src/domains/shared/stories/pack/compilePackStories.ts +0 -724
- package/src/domains/shared/stories/pack/compilePackToolSpecs.ts +0 -55
- package/src/domains/shared/stories/pack/index.ts +0 -42
- package/src/domains/shared/stories/pack/reservedVerbs.test.ts +0 -213
- package/src/domains/shared/stories/pack/reservedVerbs.ts +0 -170
- package/src/domains/shared/stories/pack/runSelectQuery.ts +0 -31
- package/src/domains/shared/stories/pack/standardParity.test.ts +0 -381
- package/src/domains/shared/stories/pack/types.ts +0 -224
- package/src/domains/shared/stories/pack/validateStoryPackDefinition.test.ts +0 -742
- package/src/domains/shared/stories/pack/validateStoryPackDefinition.ts +0 -859
- package/src/domains/shared/stories/projectCliParameters.test.ts +0 -59
- package/src/domains/shared/stories/projectCliParameters.ts +0 -57
- package/src/domains/shared/stories/projectToolParams.test.ts +0 -50
- package/src/domains/shared/stories/projectToolParams.ts +0 -32
- package/src/domains/shared/stories/requirePragmaContext.test.ts +0 -23
- package/src/domains/shared/stories/requirePragmaContext.ts +0 -23
- package/src/domains/shared/stories/resolveLookupDetailed.test.ts +0 -57
- package/src/domains/shared/stories/resolveLookupDetailed.ts +0 -27
- package/src/domains/shared/stories/types.ts +0 -179
- package/src/domains/shared/suggestions/detectCrossDomain.test.ts +0 -43
- package/src/domains/shared/suggestions/detectCrossDomain.ts +0 -116
- package/src/domains/shared/suggestions/expandGlob.test.ts +0 -92
- package/src/domains/shared/suggestions/expandGlob.ts +0 -52
- package/src/domains/shared/suggestions/expandLookupQueries.ts +0 -57
- package/src/domains/shared/suggestions/index.ts +0 -7
- package/src/domains/shared/suggestions/listDomainNames.ts +0 -61
- package/src/domains/shared/suggestions/suggestNames.test.ts +0 -70
- package/src/domains/shared/suggestions/suggestNames.ts +0 -130
- package/src/domains/shared/types/block.ts +0 -107
- package/src/domains/shared/types/common.ts +0 -33
- package/src/domains/shared/types/graph.ts +0 -17
- package/src/domains/shared/types/index.ts +0 -46
- package/src/domains/shared/types/modifier.ts +0 -22
- package/src/domains/shared/types/ontology.ts +0 -145
- package/src/domains/shared/types/runtime.ts +0 -24
- package/src/domains/shared/types/sample.ts +0 -17
- package/src/domains/shared/types/standard.ts +0 -21
- package/src/domains/shared/types/tier.ts +0 -15
- package/src/domains/shared/types/token.ts +0 -30
- package/src/domains/skill/commands/index.ts +0 -4
- package/src/domains/skill/commands/list.test.ts +0 -115
- package/src/domains/skill/commands/list.ts +0 -11
- package/src/domains/skill/commands/lookup.test.ts +0 -118
- package/src/domains/skill/commands/lookup.ts +0 -14
- package/src/domains/skill/formatters/index.ts +0 -3
- package/src/domains/skill/formatters/list.test.ts +0 -140
- package/src/domains/skill/formatters/list.ts +0 -119
- package/src/domains/skill/formatters/lookup.test.ts +0 -46
- package/src/domains/skill/formatters/lookup.ts +0 -57
- package/src/domains/skill/formatters/types.ts +0 -8
- package/src/domains/skill/helpers/index.ts +0 -6
- package/src/domains/skill/helpers/parseFrontmatter.test.ts +0 -122
- package/src/domains/skill/helpers/parseFrontmatter.ts +0 -112
- package/src/domains/skill/helpers/resolveSkillSources.ts +0 -70
- package/src/domains/skill/index.ts +0 -23
- package/src/domains/skill/mcp/index.ts +0 -2
- package/src/domains/skill/mcp/specs.ts +0 -19
- package/src/domains/skill/operations/discover.test.ts +0 -176
- package/src/domains/skill/operations/discover.ts +0 -59
- package/src/domains/skill/operations/index.ts +0 -5
- package/src/domains/skill/operations/list.test.ts +0 -76
- package/src/domains/skill/operations/list.ts +0 -47
- package/src/domains/skill/operations/lookup.test.ts +0 -91
- package/src/domains/skill/operations/lookup.ts +0 -70
- package/src/domains/skill/stories.test.ts +0 -43
- package/src/domains/skill/stories.ts +0 -103
- package/src/domains/skill/types.ts +0 -33
- package/src/domains/token/commands/add-config.test.ts +0 -68
- package/src/domains/token/commands/add-config.ts +0 -62
- package/src/domains/token/commands/index.ts +0 -6
- package/src/domains/token/commands/list.test.ts +0 -82
- package/src/domains/token/commands/list.ts +0 -54
- package/src/domains/token/commands/lookup.test.ts +0 -133
- package/src/domains/token/commands/lookup.ts +0 -107
- package/src/domains/token/commands/sample.ts +0 -54
- package/src/domains/token/featureFlag.ts +0 -17
- package/src/domains/token/formatters/index.ts +0 -8
- package/src/domains/token/formatters/list.test.ts +0 -37
- package/src/domains/token/formatters/list.ts +0 -24
- package/src/domains/token/formatters/lookup.test.ts +0 -61
- package/src/domains/token/formatters/lookup.ts +0 -107
- package/src/domains/token/formatters/sample.ts +0 -16
- package/src/domains/token/index.ts +0 -45
- package/src/domains/token/mcp/index.ts +0 -2
- package/src/domains/token/mcp/specs.ts +0 -207
- package/src/domains/token/operations/add-config.test.ts +0 -68
- package/src/domains/token/operations/add-config.ts +0 -61
- package/src/domains/token/operations/index.ts +0 -8
- package/src/domains/token/operations/list.test.ts +0 -50
- package/src/domains/token/operations/list.ts +0 -52
- package/src/domains/token/operations/lookup.test.ts +0 -42
- package/src/domains/token/operations/lookup.ts +0 -75
- package/src/domains/token/operations/sample.ts +0 -32
- package/src/domains/token/orchestration/index.ts +0 -3
- package/src/domains/token/orchestration/resolveTokenList.ts +0 -17
- package/src/domains/token/orchestration/resolveTokenLookup.ts +0 -33
- package/src/domains/token/orchestration/tokenEmptyError.test.ts +0 -33
- package/src/domains/token/orchestration/tokenEmptyError.ts +0 -20
- package/src/domains/token/tokenConfig.ts +0 -38
- package/src/domains/token/types.ts +0 -6
- package/src/domains/trace/commands/clear.ts +0 -71
- package/src/domains/trace/commands/index.ts +0 -5
- package/src/domains/trace/commands/resolveTraceLimit.test.ts +0 -31
- package/src/domains/trace/commands/sessions.ts +0 -32
- package/src/domains/trace/commands/show.ts +0 -171
- package/src/domains/trace/formatters/index.ts +0 -9
- package/src/domains/trace/formatters/sessions.ts +0 -80
- package/src/domains/trace/formatters/show.ts +0 -122
- package/src/domains/trace/index.ts +0 -17
- package/src/domains/trace/operations/index.ts +0 -8
- package/src/domains/trace/operations/listSessions.test.ts +0 -55
- package/src/domains/trace/operations/listSessions.ts +0 -52
- package/src/domains/trace/operations/readTraceLog.test.ts +0 -100
- package/src/domains/trace/operations/readTraceLog.ts +0 -104
- package/src/domains/trace/tracePlugin.test.ts +0 -171
- package/src/domains/trace/tracePlugin.ts +0 -159
- package/src/domains/trace/types.ts +0 -65
- package/src/embedWasm.ts +0 -42
- package/src/error/PragmaError.test.ts +0 -121
- package/src/error/PragmaError.ts +0 -177
- package/src/error/constants.ts +0 -12
- package/src/error/index.ts +0 -4
- package/src/error/types.ts +0 -55
- package/src/mcp/createMcpServer.test.ts +0 -41
- package/src/mcp/createMcpServer.ts +0 -53
- package/src/mcp/error/buildRecovery.test.ts +0 -37
- package/src/mcp/error/buildRecovery.ts +0 -17
- package/src/mcp/error/index.ts +0 -12
- package/src/mcp/error/serializeError.test.ts +0 -121
- package/src/mcp/error/serializeError.ts +0 -31
- package/src/mcp/error/serializeErrorPayload.test.ts +0 -38
- package/src/mcp/error/serializeErrorPayload.ts +0 -34
- package/src/mcp/error/types.ts +0 -59
- package/src/mcp/index.ts +0 -15
- package/src/mcp/registerResources.test.ts +0 -566
- package/src/mcp/registerResources.ts +0 -9
- package/src/mcp/resources/buildGraphIndex.ts +0 -167
- package/src/mcp/resources/buildResourceList.test.ts +0 -97
- package/src/mcp/resources/buildResourceList.ts +0 -176
- package/src/mcp/resources/classifyEntity.test.ts +0 -40
- package/src/mcp/resources/classifyEntity.ts +0 -27
- package/src/mcp/resources/constants.ts +0 -105
- package/src/mcp/resources/displayPredicates.ts +0 -62
- package/src/mcp/resources/pickFirstValue.test.ts +0 -29
- package/src/mcp/resources/pickFirstValue.ts +0 -26
- package/src/mcp/resources/pickPrimaryType.test.ts +0 -41
- package/src/mcp/resources/pickPrimaryType.ts +0 -26
- package/src/mcp/resources/rankUriCompletions.test.ts +0 -52
- package/src/mcp/resources/rankUriCompletions.ts +0 -64
- package/src/mcp/resources/readEntity.ts +0 -169
- package/src/mcp/resources/registerResources.ts +0 -126
- package/src/mcp/resources/types.ts +0 -128
- package/src/mcp/runMcpServer.test.ts +0 -66
- package/src/mcp/runMcpServer.ts +0 -24
- package/src/mcp/tools/index.ts +0 -74
- package/src/mcp/tools/registerFromSpec.ts +0 -97
- package/src/mcp/tools/registerTools.test.ts +0 -1277
- package/src/mcp/types.ts +0 -66
- package/src/mcp/utils/estimateTokens.test.ts +0 -14
- package/src/mcp/utils/estimateTokens.ts +0 -9
- package/src/mcp/utils/index.ts +0 -11
- package/src/mcp/utils/wrapTool.test.ts +0 -109
- package/src/mcp/utils/wrapTool.ts +0 -81
- package/src/package-manager/constants.ts +0 -29
- package/src/package-manager/detectInstallSource.test.ts +0 -23
- package/src/package-manager/detectInstallSource.ts +0 -111
- package/src/package-manager/detectLocalInstall.test.ts +0 -16
- package/src/package-manager/detectLocalInstall.ts +0 -43
- package/src/package-manager/detectPackageManager.test.ts +0 -81
- package/src/package-manager/detectPackageManager.ts +0 -30
- package/src/package-manager/index.ts +0 -6
- package/src/package-manager/types.ts +0 -10
- package/src/pipeline/collectCommands.test.ts +0 -187
- package/src/pipeline/collectCommands.ts +0 -75
- package/src/pipeline/constants.ts +0 -14
- package/src/pipeline/createProgram.test.ts +0 -116
- package/src/pipeline/createProgram.ts +0 -89
- package/src/pipeline/firstRun.test.ts +0 -80
- package/src/pipeline/firstRun.ts +0 -99
- package/src/pipeline/formatTerminal.test.ts +0 -43
- package/src/pipeline/formatTerminal.ts +0 -53
- package/src/pipeline/index.ts +0 -22
- package/src/pipeline/mapExitCode.test.ts +0 -41
- package/src/pipeline/mapExitCode.ts +0 -12
- package/src/pipeline/parseGlobalFlags.test.ts +0 -193
- package/src/pipeline/parseGlobalFlags.ts +0 -135
- package/src/pipeline/renderError.test.ts +0 -151
- package/src/pipeline/renderError.ts +0 -129
- package/src/pipeline/resolveCommandKind.test.ts +0 -80
- package/src/pipeline/resolveCommandKind.ts +0 -82
- package/src/pipeline/rootHelp.test.ts +0 -87
- package/src/pipeline/rootHelp.ts +0 -265
- package/src/pipeline/runCli.orchestration.test.ts +0 -435
- package/src/pipeline/runCli.test.ts +0 -83
- package/src/pipeline/runCli.ts +0 -411
- package/src/pipeline/types.ts +0 -17
- package/src/testing/cli.ts +0 -71
- package/src/testing/createTestMcpClient.ts +0 -68
- package/src/testing/dsFixtures.ts +0 -523
- package/src/testing/fixtures/canonical-config.json +0 -4
- package/src/testing/fixtures/canonical.ttl +0 -437
- package/src/testing/fixtures/filtered-config.json +0 -4
- package/src/testing/fixtures.ts +0 -34
- package/src/testing/graphqlFixtures.ts +0 -72
- package/src/testing/helpers/assertParity.ts +0 -28
- package/src/testing/helpers/createTestMcpClient.ts +0 -40
- package/src/testing/helpers/createTestRuntime.ts +0 -67
- package/src/testing/index.ts +0 -22
- package/src/testing/integration/__snapshots__/executor-golden.test.ts.snap +0 -1207
- package/src/testing/integration/agent-session.test.ts +0 -148
- package/src/testing/integration/boot.test.ts +0 -105
- package/src/testing/integration/cli-user-stories.test.ts +0 -261
- package/src/testing/integration/cross-binary-byte-equality.test.ts +0 -129
- package/src/testing/integration/edge-cases.test.ts +0 -275
- package/src/testing/integration/executor-execution.test.ts +0 -103
- package/src/testing/integration/executor-golden.test.ts +0 -145
- package/src/testing/integration/mcp-surface.test.ts +0 -605
- package/src/testing/integration/parity.test.ts +0 -596
- package/src/testing/regression/0001-skill-discovery-granularity.test.ts +0 -71
- package/src/testing/standardParityFixtures.ts +0 -35
- package/src/testing/store.ts +0 -39
- package/src/testing/storyFixtures.ts +0 -63
- package/src/testing/types.ts +0 -20
- package/src/tui/components/BulletList/BulletList.tsx +0 -46
- package/src/tui/components/BulletList/index.ts +0 -2
- package/src/tui/components/BulletList/types.ts +0 -6
- package/src/tui/components/Card/Card.tsx +0 -73
- package/src/tui/components/Card/index.ts +0 -1
- package/src/tui/components/Card/types.ts +0 -12
- package/src/tui/components/CodeBlock/CodeBlock.tsx +0 -37
- package/src/tui/components/CodeBlock/index.ts +0 -2
- package/src/tui/components/CodeBlock/types.ts +0 -6
- package/src/tui/components/DataRow/DataRow.tsx +0 -80
- package/src/tui/components/DataRow/index.ts +0 -2
- package/src/tui/components/DataRow/types.ts +0 -14
- package/src/tui/components/FieldRow/FieldRow.tsx +0 -24
- package/src/tui/components/FieldRow/index.ts +0 -2
- package/src/tui/components/FieldRow/types.ts +0 -10
- package/src/tui/components/HeaderRow/HeaderRow.tsx +0 -32
- package/src/tui/components/HeaderRow/index.ts +0 -2
- package/src/tui/components/HeaderRow/types.ts +0 -8
- package/src/tui/components/MarkdownText/MarkdownText.tsx +0 -19
- package/src/tui/components/MarkdownText/index.ts +0 -2
- package/src/tui/components/MarkdownText/types.ts +0 -4
- package/src/tui/components/MiniTable/MiniTable.tsx +0 -82
- package/src/tui/components/MiniTable/index.ts +0 -2
- package/src/tui/components/MiniTable/types.ts +0 -6
- package/src/tui/components/SectionRenderer/SectionRenderer.tsx +0 -91
- package/src/tui/components/SectionRenderer/index.ts +0 -2
- package/src/tui/components/SectionRenderer/types.ts +0 -15
- package/src/tui/components/TreeView/TreeView.tsx +0 -84
- package/src/tui/components/TreeView/index.ts +0 -2
- package/src/tui/components/TreeView/types.ts +0 -6
- package/src/tui/components/index.ts +0 -19
- package/src/tui/constants.ts +0 -39
- package/src/tui/createListView.ts +0 -23
- package/src/tui/createLookupView.ts +0 -26
- package/src/tui/helpers/computeWidths.ts +0 -53
- package/src/tui/helpers/fitColumns.ts +0 -33
- package/src/tui/helpers/formatMarkdown.ts +0 -19
- package/src/tui/helpers/getTerminalSize.ts +0 -16
- package/src/tui/helpers/index.ts +0 -6
- package/src/tui/helpers/syntaxColor.ts +0 -67
- package/src/tui/helpers/truncateText.ts +0 -12
- package/src/tui/hooks/index.ts +0 -3
- package/src/tui/hooks/types.ts +0 -7
- package/src/tui/hooks/useAutoExit.ts +0 -17
- package/src/tui/hooks/useTerminalSize.ts +0 -19
- package/src/tui/index.ts +0 -15
- package/src/tui/renderInk.tsx +0 -18
- package/src/tui/types.ts +0 -12
- package/src/tui/views/ListView/ListView.tsx +0 -104
- package/src/tui/views/ListView/index.ts +0 -2
- package/src/tui/views/ListView/types.ts +0 -14
- package/src/tui/views/LookupView/LookupView.tsx +0 -244
- package/src/tui/views/LookupView/index.ts +0 -2
- package/src/tui/views/LookupView/types.ts +0 -16
- package/src/tui/views/index.ts +0 -4
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Namespace helpers for SPARQL queries.
|
|
3
|
-
*
|
|
4
|
-
* Derived from {@link PREFIX_MAP} via {@link createNamespace} for use
|
|
5
|
-
* in the `sparql` tagged template.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import { createNamespace } from "@canonical/ke";
|
|
9
|
-
import { PREFIX_MAP, TRANSITIONAL_DS_PREFIX_MAP } from "./prefixes.js";
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Design system namespace — classes, properties, and instances (e.g., `ds:Component`).
|
|
13
|
-
* @remarks transitional — sourced from the bundled DS fallback until the
|
|
14
|
-
* design-system package declares its own prefixes (remove in P4).
|
|
15
|
-
*/
|
|
16
|
-
export const ds = createNamespace(TRANSITIONAL_DS_PREFIX_MAP.ds);
|
|
17
|
-
/**
|
|
18
|
-
* Component specification namespace — component-level metadata (e.g., `cs:anatomy`).
|
|
19
|
-
* @remarks transitional — sourced from the bundled DS fallback until the
|
|
20
|
-
* code-standards package declares its own prefixes (remove in P4).
|
|
21
|
-
*/
|
|
22
|
-
export const cs = createNamespace(TRANSITIONAL_DS_PREFIX_MAP.cs);
|
|
23
|
-
/** RDF Schema namespace — core vocabulary (e.g., `rdfs:label`, `rdfs:subClassOf`). */
|
|
24
|
-
export const rdfs = createNamespace(PREFIX_MAP.rdfs);
|
|
25
|
-
/** OWL namespace — ontology constructs (e.g., `owl:Class`, `owl:ObjectProperty`). */
|
|
26
|
-
export const owl = createNamespace(PREFIX_MAP.owl);
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Default semantic graph package registry.
|
|
3
|
-
*
|
|
4
|
-
* Sourced from the declarative built-in defaults document
|
|
5
|
-
* (`src/config/defaults.json`) — pragma core carries no hardcoded
|
|
6
|
-
* knowledge of specific design-system packages. These form the base
|
|
7
|
-
* package set whenever a config layer does not declare a non-empty
|
|
8
|
-
* `packages` list; global `refs.json` entries then merge over them by
|
|
9
|
-
* package name, and a non-empty config list replaces them entirely
|
|
10
|
-
* (see `mergeAndParseRefs`).
|
|
11
|
-
*
|
|
12
|
-
* Resolution is handled by the loader chain in `loaders/`.
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
import { DEFAULT_CONFIG } from "../../config/defaultConfig.js";
|
|
16
|
-
import type { RawPackageEntry } from "../refs/operations/parseRef.js";
|
|
17
|
-
|
|
18
|
-
/** Default semantic graph packages loaded when no config overrides are present. */
|
|
19
|
-
export const DEFAULT_PACKAGES: readonly RawPackageEntry[] =
|
|
20
|
-
DEFAULT_CONFIG.packages;
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "vitest";
|
|
2
|
-
import { PragmaError } from "../../error/index.js";
|
|
3
|
-
import parseSampleCount, {
|
|
4
|
-
DEFAULT_SAMPLE_COUNT,
|
|
5
|
-
MAX_SAMPLE_COUNT,
|
|
6
|
-
MIN_SAMPLE_COUNT,
|
|
7
|
-
} from "./parseSampleCount.js";
|
|
8
|
-
|
|
9
|
-
describe("parseSampleCount", () => {
|
|
10
|
-
it("returns the default for undefined/null/empty input", () => {
|
|
11
|
-
expect(parseSampleCount(undefined)).toBe(DEFAULT_SAMPLE_COUNT);
|
|
12
|
-
expect(parseSampleCount(null)).toBe(DEFAULT_SAMPLE_COUNT);
|
|
13
|
-
expect(parseSampleCount("")).toBe(DEFAULT_SAMPLE_COUNT);
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
it("accepts an in-range integer verbatim", () => {
|
|
17
|
-
expect(parseSampleCount("3")).toBe(3);
|
|
18
|
-
expect(parseSampleCount(4)).toBe(4);
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
it("clamps below the minimum and above the maximum", () => {
|
|
22
|
-
expect(parseSampleCount("0")).toBe(MIN_SAMPLE_COUNT);
|
|
23
|
-
expect(parseSampleCount("-3")).toBe(MIN_SAMPLE_COUNT);
|
|
24
|
-
expect(parseSampleCount("99")).toBe(MAX_SAMPLE_COUNT);
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
it("tolerates surrounding whitespace", () => {
|
|
28
|
-
expect(parseSampleCount(" 3 ")).toBe(3);
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
it.each([
|
|
32
|
-
"abc",
|
|
33
|
-
"3.5",
|
|
34
|
-
"0x5",
|
|
35
|
-
"1e1",
|
|
36
|
-
"3,4",
|
|
37
|
-
"NaN",
|
|
38
|
-
"Infinity",
|
|
39
|
-
])("throws INVALID_INPUT for the non-integer value %j", (value) => {
|
|
40
|
-
expect(() => parseSampleCount(value)).toThrowError(PragmaError);
|
|
41
|
-
try {
|
|
42
|
-
parseSampleCount(value);
|
|
43
|
-
} catch (error) {
|
|
44
|
-
expect((error as PragmaError).code).toBe("INVALID_INPUT");
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
});
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Parse and validate the `--count` argument shared by every `sample` command.
|
|
3
|
-
*
|
|
4
|
-
* A missing count falls back to the default. A non-numeric or non-integer
|
|
5
|
-
* value is rejected as invalid input (so the command exits non-zero) rather
|
|
6
|
-
* than silently coercing to `NaN` and returning zero samples. A valid integer
|
|
7
|
-
* is clamped to the supported 1–5 range.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
import { PragmaError } from "#error";
|
|
11
|
-
|
|
12
|
-
/** Smallest number of samples a `sample` command will return. */
|
|
13
|
-
export const MIN_SAMPLE_COUNT = 1;
|
|
14
|
-
/** Largest number of samples a `sample` command will return. */
|
|
15
|
-
export const MAX_SAMPLE_COUNT = 5;
|
|
16
|
-
/** Number of samples returned when `--count` is omitted. */
|
|
17
|
-
export const DEFAULT_SAMPLE_COUNT = 2;
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Resolve the raw `--count` param into a clamped sample count.
|
|
21
|
-
*
|
|
22
|
-
* @param raw - The raw param value (`params.count`), possibly undefined.
|
|
23
|
-
* @returns An integer in [MIN_SAMPLE_COUNT, MAX_SAMPLE_COUNT].
|
|
24
|
-
* @throws PragmaError INVALID_INPUT when `raw` is present but not an integer.
|
|
25
|
-
*/
|
|
26
|
-
export default function parseSampleCount(raw: unknown): number {
|
|
27
|
-
if (raw === undefined || raw === null || raw === "") {
|
|
28
|
-
return DEFAULT_SAMPLE_COUNT;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
// Accept only a plain decimal integer. Number() would otherwise coerce hex
|
|
32
|
-
// ("0x5"), scientific ("1e1"), and whitespace-padded forms, none of which a
|
|
33
|
-
// user should be able to pass to --count.
|
|
34
|
-
const text = String(raw).trim();
|
|
35
|
-
if (!/^-?\d+$/.test(text)) {
|
|
36
|
-
throw PragmaError.invalidInput("count", String(raw), {
|
|
37
|
-
recovery: {
|
|
38
|
-
message: `Provide an integer between ${MIN_SAMPLE_COUNT} and ${MAX_SAMPLE_COUNT}.`,
|
|
39
|
-
},
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
const parsed = Number(text);
|
|
44
|
-
return Math.max(MIN_SAMPLE_COUNT, Math.min(MAX_SAMPLE_COUNT, parsed));
|
|
45
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Pick `count` random items from an array without replacement.
|
|
3
|
-
*
|
|
4
|
-
* Uses Fisher-Yates partial shuffle for uniform distribution.
|
|
5
|
-
* Returns at most `arr.length` items if count exceeds the array size.
|
|
6
|
-
*/
|
|
7
|
-
export default function pickRandom<T>(
|
|
8
|
-
arr: readonly T[],
|
|
9
|
-
count: number,
|
|
10
|
-
): readonly T[] {
|
|
11
|
-
const n = Math.min(count, arr.length);
|
|
12
|
-
if (n === 0) return [];
|
|
13
|
-
|
|
14
|
-
const copy = [...arr];
|
|
15
|
-
for (let i = 0; i < n; i++) {
|
|
16
|
-
const j = i + Math.floor(Math.random() * (copy.length - i));
|
|
17
|
-
const tmp = copy[i];
|
|
18
|
-
copy[i] = copy[j] as T;
|
|
19
|
-
copy[j] = tmp as T;
|
|
20
|
-
}
|
|
21
|
-
return copy.slice(0, n);
|
|
22
|
-
}
|
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
import { afterEach, beforeEach, describe, expect, it } from "vitest";
|
|
2
|
-
import {
|
|
3
|
-
DEFAULT_PREFIX_MAP,
|
|
4
|
-
P,
|
|
5
|
-
PREFIX_MAP,
|
|
6
|
-
resolvePrefixes,
|
|
7
|
-
TRANSITIONAL_DS_PREFIX_MAP,
|
|
8
|
-
TTL_PREFIXES,
|
|
9
|
-
} from "./prefixes.js";
|
|
10
|
-
|
|
11
|
-
describe("core PREFIX_MAP", () => {
|
|
12
|
-
it("ships only generic RDF vocabularies — no design-system prefixes", () => {
|
|
13
|
-
expect(Object.keys(PREFIX_MAP).sort()).toEqual([
|
|
14
|
-
"owl",
|
|
15
|
-
"rdf",
|
|
16
|
-
"rdfs",
|
|
17
|
-
"skos",
|
|
18
|
-
"xsd",
|
|
19
|
-
]);
|
|
20
|
-
expect(PREFIX_MAP).not.toHaveProperty("ds");
|
|
21
|
-
expect(PREFIX_MAP).not.toHaveProperty("cs");
|
|
22
|
-
});
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
describe("TRANSITIONAL_DS_PREFIX_MAP", () => {
|
|
26
|
-
it("bundles the design-system prefixes separately from the core", () => {
|
|
27
|
-
expect(TRANSITIONAL_DS_PREFIX_MAP).toEqual({
|
|
28
|
-
ds: "https://ds.canonical.com/",
|
|
29
|
-
cs: "http://pragma.canonical.com/codestandards#",
|
|
30
|
-
});
|
|
31
|
-
});
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
describe("DEFAULT_PREFIX_MAP (display set)", () => {
|
|
35
|
-
it("reproduces the pre-P0 compaction set — ds/cs plus rdfs/owl/skos", () => {
|
|
36
|
-
expect(Object.keys(DEFAULT_PREFIX_MAP).sort()).toEqual([
|
|
37
|
-
"cs",
|
|
38
|
-
"ds",
|
|
39
|
-
"owl",
|
|
40
|
-
"rdfs",
|
|
41
|
-
"skos",
|
|
42
|
-
]);
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
it("omits rdf/xsd so URI compaction in output is unchanged", () => {
|
|
46
|
-
expect(DEFAULT_PREFIX_MAP).not.toHaveProperty("rdf");
|
|
47
|
-
expect(DEFAULT_PREFIX_MAP).not.toHaveProperty("xsd");
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
describe("P accessor", () => {
|
|
52
|
-
it("exposes prefixed-name accessors including the transitional ds/cs", () => {
|
|
53
|
-
expect(P.ds).toBe("ds:");
|
|
54
|
-
expect(P.cs).toBe("cs:");
|
|
55
|
-
expect(P.rdfs).toBe("rdfs:");
|
|
56
|
-
expect(P.owl).toBe("owl:");
|
|
57
|
-
expect(P.skos).toBe("skos:");
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
describe("TTL_PREFIXES", () => {
|
|
62
|
-
it("declares every display prefix plus xsd", () => {
|
|
63
|
-
expect(TTL_PREFIXES).toContain("@prefix ds: <https://ds.canonical.com/> .");
|
|
64
|
-
expect(TTL_PREFIXES).toContain(
|
|
65
|
-
"@prefix cs: <http://pragma.canonical.com/codestandards#> .",
|
|
66
|
-
);
|
|
67
|
-
expect(TTL_PREFIXES).toContain(
|
|
68
|
-
"@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .",
|
|
69
|
-
);
|
|
70
|
-
});
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
describe("resolvePrefixes", () => {
|
|
74
|
-
it("returns core plus the transitional DS fallback for a bare core", () => {
|
|
75
|
-
const resolved = resolvePrefixes([]);
|
|
76
|
-
expect(resolved).toEqual({ ...PREFIX_MAP, ...TRANSITIONAL_DS_PREFIX_MAP });
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
it("layers package-declared prefixes over the fallback", () => {
|
|
80
|
-
const resolved = resolvePrefixes([
|
|
81
|
-
{ prefixes: { ex: "https://example.org/" } },
|
|
82
|
-
]);
|
|
83
|
-
expect(resolved.ex).toBe("https://example.org/");
|
|
84
|
-
// core + fallback still present
|
|
85
|
-
expect(resolved.ds).toBe(TRANSITIONAL_DS_PREFIX_MAP.ds);
|
|
86
|
-
expect(resolved.rdf).toBe(PREFIX_MAP.rdf);
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
it("lets a package override the transitional DS fallback", () => {
|
|
90
|
-
const resolved = resolvePrefixes([
|
|
91
|
-
{ prefixes: { ds: "https://packaged-ds.example/" } },
|
|
92
|
-
]);
|
|
93
|
-
expect(resolved.ds).toBe("https://packaged-ds.example/");
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
it("lets config prefixes win over both packages and the fallback", () => {
|
|
97
|
-
const resolved = resolvePrefixes(
|
|
98
|
-
[{ prefixes: { ds: "https://packaged-ds.example/" } }],
|
|
99
|
-
{ ds: "https://config-ds.example/" },
|
|
100
|
-
);
|
|
101
|
-
expect(resolved.ds).toBe("https://config-ds.example/");
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
it("merges multiple packages in array order", () => {
|
|
105
|
-
const resolved = resolvePrefixes([
|
|
106
|
-
{ prefixes: { a: "https://one.example/" } },
|
|
107
|
-
{ prefixes: { a: "https://two.example/", b: "https://b.example/" } },
|
|
108
|
-
]);
|
|
109
|
-
expect(resolved.a).toBe("https://two.example/");
|
|
110
|
-
expect(resolved.b).toBe("https://b.example/");
|
|
111
|
-
});
|
|
112
|
-
|
|
113
|
-
it("tolerates packages that declare no prefixes", () => {
|
|
114
|
-
const resolved = resolvePrefixes([{}, { prefixes: undefined }]);
|
|
115
|
-
expect(resolved).toEqual({ ...PREFIX_MAP, ...TRANSITIONAL_DS_PREFIX_MAP });
|
|
116
|
-
});
|
|
117
|
-
});
|
|
118
|
-
|
|
119
|
-
describe("resolvePrefixes — injection & shadowing hardening", () => {
|
|
120
|
-
let warnings: string[];
|
|
121
|
-
let write: typeof process.stderr.write;
|
|
122
|
-
|
|
123
|
-
beforeEach(() => {
|
|
124
|
-
warnings = [];
|
|
125
|
-
write = process.stderr.write;
|
|
126
|
-
process.stderr.write = ((chunk: string | Uint8Array) => {
|
|
127
|
-
warnings.push(String(chunk));
|
|
128
|
-
return true;
|
|
129
|
-
}) as typeof process.stderr.write;
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
afterEach(() => {
|
|
133
|
-
process.stderr.write = write;
|
|
134
|
-
});
|
|
135
|
-
|
|
136
|
-
it("drops a namespace that could break out of the SPARQL IRIREF", () => {
|
|
137
|
-
// A `>` would close `<...>` early and inject arbitrary SPARQL into every
|
|
138
|
-
// query the store runs.
|
|
139
|
-
const resolved = resolvePrefixes([
|
|
140
|
-
{ prefixes: { evil: "http://e> SELECT * WHERE {?s ?p ?o} #" } },
|
|
141
|
-
]);
|
|
142
|
-
expect(resolved).not.toHaveProperty("evil");
|
|
143
|
-
expect(warnings.join("")).toContain("not valid in an IRI");
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
it("rejects namespaces containing whitespace or angle/quote/brace chars", () => {
|
|
147
|
-
const resolved = resolvePrefixes([
|
|
148
|
-
{
|
|
149
|
-
prefixes: {
|
|
150
|
-
space: "http://e /x",
|
|
151
|
-
quote: 'http://e"x',
|
|
152
|
-
brace: "http://e{x}",
|
|
153
|
-
},
|
|
154
|
-
},
|
|
155
|
-
]);
|
|
156
|
-
expect(resolved).not.toHaveProperty("space");
|
|
157
|
-
expect(resolved).not.toHaveProperty("quote");
|
|
158
|
-
expect(resolved).not.toHaveProperty("brace");
|
|
159
|
-
});
|
|
160
|
-
|
|
161
|
-
it("keeps a clean namespace untouched", () => {
|
|
162
|
-
const resolved = resolvePrefixes([
|
|
163
|
-
{ prefixes: { ex: "https://example.org/ns#" } },
|
|
164
|
-
]);
|
|
165
|
-
expect(resolved.ex).toBe("https://example.org/ns#");
|
|
166
|
-
expect(warnings).toHaveLength(0);
|
|
167
|
-
});
|
|
168
|
-
|
|
169
|
-
it("refuses to let a package redefine a reserved core prefix", () => {
|
|
170
|
-
const resolved = resolvePrefixes([
|
|
171
|
-
{ prefixes: { rdf: "https://evil.example/rdf#" } },
|
|
172
|
-
]);
|
|
173
|
-
expect(resolved.rdf).toBe(PREFIX_MAP.rdf);
|
|
174
|
-
expect(warnings.join("")).toContain("reserved");
|
|
175
|
-
});
|
|
176
|
-
|
|
177
|
-
it("refuses reserved prefixes from config too", () => {
|
|
178
|
-
const resolved = resolvePrefixes([], { owl: "https://evil.example/owl#" });
|
|
179
|
-
expect(resolved.owl).toBe(PREFIX_MAP.owl);
|
|
180
|
-
});
|
|
181
|
-
|
|
182
|
-
it("skips a malformed prefix name", () => {
|
|
183
|
-
const resolved = resolvePrefixes([
|
|
184
|
-
{ prefixes: { "bad name!": "https://example.org/" } },
|
|
185
|
-
]);
|
|
186
|
-
expect(resolved).not.toHaveProperty("bad name!");
|
|
187
|
-
expect(warnings.join("")).toContain("not a valid prefix name");
|
|
188
|
-
});
|
|
189
|
-
|
|
190
|
-
it("warns on a last-wins collision between two packages", () => {
|
|
191
|
-
const resolved = resolvePrefixes([
|
|
192
|
-
{ prefixes: { a: "https://one.example/" } },
|
|
193
|
-
{ prefixes: { a: "https://two.example/" } },
|
|
194
|
-
]);
|
|
195
|
-
expect(resolved.a).toBe("https://two.example/");
|
|
196
|
-
expect(warnings.join("")).toContain("overrides an earlier declaration");
|
|
197
|
-
});
|
|
198
|
-
|
|
199
|
-
it("names the declaring package in collision warnings when available", () => {
|
|
200
|
-
resolvePrefixes([
|
|
201
|
-
{ name: "@canonical/one", prefixes: { a: "https://one.example/" } },
|
|
202
|
-
{ name: "@canonical/two", prefixes: { a: "https://two.example/" } },
|
|
203
|
-
]);
|
|
204
|
-
expect(warnings.join("")).toContain('package "@canonical/two"');
|
|
205
|
-
});
|
|
206
|
-
|
|
207
|
-
it("does not warn when a package overrides the trusted DS fallback", () => {
|
|
208
|
-
resolvePrefixes([{ prefixes: { ds: "https://packaged-ds.example/" } }]);
|
|
209
|
-
expect(warnings).toHaveLength(0);
|
|
210
|
-
});
|
|
211
|
-
});
|
|
@@ -1,204 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Prefix maps for ke store creation and display compaction.
|
|
3
|
-
*
|
|
4
|
-
* The core ships only generic RDF vocabularies. Domain prefixes (e.g. the
|
|
5
|
-
* design system's `ds:`/`cs:`) are supplied by the loaded semantic
|
|
6
|
-
* packages and merged over the core at boot via {@link resolvePrefixes}.
|
|
7
|
-
* Renaming a key here updates every derived accessor automatically.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
import type { PrefixMap } from "@canonical/ke";
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Core prefix map — the generic RDF vocabularies pragma itself ships.
|
|
14
|
-
*
|
|
15
|
-
* Registered as PREFIX declarations in every SPARQL query and used as the
|
|
16
|
-
* base of the effective prefix map. Contains no domain-specific prefixes:
|
|
17
|
-
* `ds:`/`cs:` and any other package namespaces arrive from the resolved
|
|
18
|
-
* semantic packages (see {@link resolvePrefixes}).
|
|
19
|
-
*/
|
|
20
|
-
export const PREFIX_MAP = {
|
|
21
|
-
rdf: "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
|
|
22
|
-
rdfs: "http://www.w3.org/2000/01/rdf-schema#",
|
|
23
|
-
owl: "http://www.w3.org/2002/07/owl#",
|
|
24
|
-
skos: "http://www.w3.org/2004/02/skos/core#",
|
|
25
|
-
xsd: "http://www.w3.org/2001/XMLSchema#",
|
|
26
|
-
} as const satisfies PrefixMap;
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Transitional design-system prefixes bundled with the core.
|
|
30
|
-
*
|
|
31
|
-
* @remarks transitional — remove in P4. These belong to the
|
|
32
|
-
* `@canonical/design-system` and `@canonical/code-standards` packages and
|
|
33
|
-
* must move into their own prefix declarations. Until those packages
|
|
34
|
-
* declare `pragma.prefixes`, this bundled fallback keeps existing DS
|
|
35
|
-
* queries resolving and DS IRIs compacting in output. Package-declared
|
|
36
|
-
* prefixes (and config overrides) win over this fallback.
|
|
37
|
-
*/
|
|
38
|
-
export const TRANSITIONAL_DS_PREFIX_MAP = {
|
|
39
|
-
ds: "https://ds.canonical.com/",
|
|
40
|
-
cs: "http://pragma.canonical.com/codestandards#",
|
|
41
|
-
} as const satisfies PrefixMap;
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* The default display/compaction prefix set and the base of the derived
|
|
45
|
-
* accessors — the exact set compacted before P0 split the core from the
|
|
46
|
-
* design system, kept stable during the transition.
|
|
47
|
-
*
|
|
48
|
-
* Deliberately omits `rdf:`/`xsd:` (present in {@link PREFIX_MAP}) so URI
|
|
49
|
-
* compaction in output is unchanged from pre-P0 behavior; the store's
|
|
50
|
-
* query prefix map (see {@link resolvePrefixes}) still carries them.
|
|
51
|
-
*
|
|
52
|
-
* @remarks transitional — the `ds:`/`cs:` members move to their packages
|
|
53
|
-
* in P4, at which point this collapses toward {@link PREFIX_MAP}. Runtime
|
|
54
|
-
* code should prefer the map from {@link resolvePrefixes}, which layers in
|
|
55
|
-
* package-declared and config prefixes over the store base.
|
|
56
|
-
*/
|
|
57
|
-
export const DEFAULT_PREFIX_MAP = {
|
|
58
|
-
ds: TRANSITIONAL_DS_PREFIX_MAP.ds,
|
|
59
|
-
cs: TRANSITIONAL_DS_PREFIX_MAP.cs,
|
|
60
|
-
rdfs: PREFIX_MAP.rdfs,
|
|
61
|
-
owl: PREFIX_MAP.owl,
|
|
62
|
-
skos: PREFIX_MAP.skos,
|
|
63
|
-
} as const satisfies PrefixMap;
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* Core prefixes reserved for pragma's own vocabularies. Packages and config
|
|
67
|
-
* may not redefine these — every query and the RDF/OWL/SKOS toolchain depend
|
|
68
|
-
* on them resolving to the canonical W3C namespaces, so a package that shadows
|
|
69
|
-
* `rdf:` (accidentally or maliciously) would silently corrupt every query.
|
|
70
|
-
*/
|
|
71
|
-
const RESERVED_PREFIXES: ReadonlySet<string> = new Set(Object.keys(PREFIX_MAP));
|
|
72
|
-
|
|
73
|
-
/** A syntactically safe SPARQL prefix name (PN_PREFIX subset we accept). */
|
|
74
|
-
const SAFE_PREFIX_NAME = /^[A-Za-z][A-Za-z0-9_-]*$/;
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* Reject a namespace that cannot appear inside a SPARQL `<IRIREF>` unescaped.
|
|
78
|
-
* ke injects prefixes verbatim as `PREFIX name: <iri>`; a namespace containing
|
|
79
|
-
* `>` (or whitespace/control/`<"{}|^`\``) would break out of the IRI and inject
|
|
80
|
-
* arbitrary SPARQL into every query. SPARQL's IRIREF grammar forbids exactly
|
|
81
|
-
* these, so anything matching is both unsafe and invalid Turtle/SPARQL.
|
|
82
|
-
*/
|
|
83
|
-
// biome-ignore lint/suspicious/noControlCharactersInRegex: IRIREF forbids U+0000–U+0020 by grammar
|
|
84
|
-
const UNSAFE_NAMESPACE = /[\x00-\x20<>"{}|^`\\]/;
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* Validate and merge one source of declared prefixes onto an accumulator.
|
|
88
|
-
*
|
|
89
|
-
* Skips (with a stderr warning) any entry that is unsafe to inject: a
|
|
90
|
-
* malformed prefix name, a namespace that could break out of the SPARQL
|
|
91
|
-
* IRIREF, or an attempt to redefine a reserved core prefix. Also warns when a
|
|
92
|
-
* later source silently overrides an already-declared prefix (last-wins
|
|
93
|
-
* collision), so a name clash between two packages is visible rather than
|
|
94
|
-
* mysterious.
|
|
95
|
-
*
|
|
96
|
-
* @note Impure — writes warnings to stderr.
|
|
97
|
-
*/
|
|
98
|
-
function mergePrefixSource(
|
|
99
|
-
acc: Record<string, string>,
|
|
100
|
-
claimed: Set<string>,
|
|
101
|
-
source: Readonly<Record<string, string>> | undefined,
|
|
102
|
-
origin: string,
|
|
103
|
-
): void {
|
|
104
|
-
if (!source) return;
|
|
105
|
-
for (const [name, namespace] of Object.entries(source)) {
|
|
106
|
-
if (!SAFE_PREFIX_NAME.test(name)) {
|
|
107
|
-
process.stderr.write(
|
|
108
|
-
`Warning: ignoring prefix "${name}" from ${origin} — not a valid prefix name.\n`,
|
|
109
|
-
);
|
|
110
|
-
continue;
|
|
111
|
-
}
|
|
112
|
-
if (RESERVED_PREFIXES.has(name)) {
|
|
113
|
-
process.stderr.write(
|
|
114
|
-
`Warning: ignoring prefix "${name}" from ${origin} — "${name}:" is reserved for a core RDF vocabulary and cannot be redefined.\n`,
|
|
115
|
-
);
|
|
116
|
-
continue;
|
|
117
|
-
}
|
|
118
|
-
if (UNSAFE_NAMESPACE.test(namespace)) {
|
|
119
|
-
process.stderr.write(
|
|
120
|
-
`Warning: ignoring prefix "${name}" from ${origin} — namespace contains characters that are not valid in an IRI.\n`,
|
|
121
|
-
);
|
|
122
|
-
continue;
|
|
123
|
-
}
|
|
124
|
-
// Warn only on a collision between two *validated* sources (package vs.
|
|
125
|
-
// package/config). Silently overriding the trusted DS fallback is the
|
|
126
|
-
// expected transitional handoff, not a clash.
|
|
127
|
-
if (claimed.has(name) && acc[name] !== namespace) {
|
|
128
|
-
process.stderr.write(
|
|
129
|
-
`Warning: prefix "${name}" from ${origin} overrides an earlier declaration (was <${acc[name]}>, now <${namespace}>).\n`,
|
|
130
|
-
);
|
|
131
|
-
}
|
|
132
|
-
acc[name] = namespace;
|
|
133
|
-
claimed.add(name);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
/**
|
|
138
|
-
* Resolve the effective prefix map for a boot.
|
|
139
|
-
*
|
|
140
|
-
* Precedence (lowest → highest): the generic {@link PREFIX_MAP}, the
|
|
141
|
-
* transitional DS fallback, prefixes declared by resolved packages (in
|
|
142
|
-
* array order), then config-level overrides. A package that declares its
|
|
143
|
-
* own `ds:`/`cs:` therefore overrides the bundled fallback, and a user's
|
|
144
|
-
* `pragma.config.json` `prefixes` wins over everything.
|
|
145
|
-
*
|
|
146
|
-
* Package- and config-declared prefixes are validated before they reach the
|
|
147
|
-
* store: unsafe names/namespaces are skipped (they would otherwise be injected
|
|
148
|
-
* verbatim into every SPARQL query), reserved core prefixes cannot be
|
|
149
|
-
* redefined, and last-wins collisions are surfaced as warnings. The bundled
|
|
150
|
-
* core and DS fallback are trusted and merged as-is.
|
|
151
|
-
*
|
|
152
|
-
* @param packages - Resolved packages, each optionally declaring prefixes.
|
|
153
|
-
* @param configPrefixes - Config-level prefix overrides.
|
|
154
|
-
* @returns The merged prefix map for the store and every query.
|
|
155
|
-
*/
|
|
156
|
-
export function resolvePrefixes(
|
|
157
|
-
packages: readonly {
|
|
158
|
-
readonly name?: string;
|
|
159
|
-
readonly prefixes?: Readonly<Record<string, string>>;
|
|
160
|
-
}[] = [],
|
|
161
|
-
configPrefixes?: Readonly<Record<string, string>>,
|
|
162
|
-
): Record<string, string> {
|
|
163
|
-
const merged: Record<string, string> = {
|
|
164
|
-
...PREFIX_MAP,
|
|
165
|
-
...TRANSITIONAL_DS_PREFIX_MAP,
|
|
166
|
-
};
|
|
167
|
-
// Keys claimed by a validated source, so collisions between two such
|
|
168
|
-
// sources warn while overriding the trusted seed stays silent.
|
|
169
|
-
const claimed = new Set<string>();
|
|
170
|
-
for (const pkg of packages) {
|
|
171
|
-
// Name the declaring package in the origin so collision/injection
|
|
172
|
-
// warnings point at the actual source, not a generic placeholder.
|
|
173
|
-
const origin = pkg.name ? `package "${pkg.name}"` : "a semantic package";
|
|
174
|
-
mergePrefixSource(merged, claimed, pkg.prefixes, origin);
|
|
175
|
-
}
|
|
176
|
-
mergePrefixSource(merged, claimed, configPrefixes, "pragma.config.json");
|
|
177
|
-
return merged;
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* SPARQL prefix accessors derived from {@link DEFAULT_PREFIX_MAP}.
|
|
182
|
-
*
|
|
183
|
-
* Use in query templates: `${P.ds}Component` → `"ds:Component"`.
|
|
184
|
-
* Renaming a key in the underlying maps automatically updates every query.
|
|
185
|
-
*
|
|
186
|
-
* @remarks The `ds:`/`cs:` accessors are transitional (see
|
|
187
|
-
* {@link TRANSITIONAL_DS_PREFIX_MAP}); they resolve at query time against
|
|
188
|
-
* the store's merged prefix map, which the packages now supply.
|
|
189
|
-
*/
|
|
190
|
-
export const P = Object.fromEntries(
|
|
191
|
-
Object.keys(DEFAULT_PREFIX_MAP).map((k) => [k, `${k}:`]),
|
|
192
|
-
) as { readonly [K in keyof typeof DEFAULT_PREFIX_MAP]: `${K}:` };
|
|
193
|
-
|
|
194
|
-
/**
|
|
195
|
-
* Turtle `@prefix` declarations derived from {@link DEFAULT_PREFIX_MAP},
|
|
196
|
-
* plus `xsd:` — commonly used by TTL data files but omitted from the
|
|
197
|
-
* display set (SPARQL queries auto-inject the store prefix map).
|
|
198
|
-
*/
|
|
199
|
-
export const TTL_PREFIXES = [
|
|
200
|
-
...Object.entries(DEFAULT_PREFIX_MAP).map(
|
|
201
|
-
([k, uri]) => `@prefix ${k}: <${uri}> .`,
|
|
202
|
-
),
|
|
203
|
-
`@prefix xsd: <${PREFIX_MAP.xsd}> .`,
|
|
204
|
-
].join("\n");
|