@canonical/pragma-cli 0.34.0 → 0.36.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 +153 -30
- package/bundled-skills/add-standard/SKILL.md +338 -0
- package/bundled-skills/adoption-a1-styles/SKILL.md +269 -0
- package/bundled-skills/adoption-a2-components/SKILL.md +291 -0
- package/bundled-skills/adoption-a3-forms/SKILL.md +260 -0
- package/bundled-skills/anatomy-author/ANATOMY_DSL_SPEC.md +406 -0
- package/bundled-skills/anatomy-author/SKILL.md +1226 -0
- package/bundled-skills/design-auditor/SKILL.md +455 -0
- package/bundled-skills/implement-component/SKILL.md +333 -0
- package/bundled-skills/specify-component/SKILL.md +331 -0
- package/bundled-skills/specify-pattern/SKILL.md +292 -0
- package/dist/.build-ok +0 -0
- package/dist/package.json +84 -0
- package/dist/pragma.conf.js +1016 -0
- package/dist/pragma.conf.js.map +1 -0
- package/dist/src/bin.js +356 -0
- package/dist/src/bin.js.map +1 -0
- package/dist/src/capabilities/capabilities/capabilities.render.js +70 -0
- package/dist/src/capabilities/capabilities/capabilities.render.js.map +1 -0
- package/dist/src/capabilities/capabilities/capabilities.verb.js +59 -0
- package/dist/src/capabilities/capabilities/capabilities.verb.js.map +1 -0
- package/dist/src/capabilities/capabilities/catalog.js +130 -0
- package/dist/src/capabilities/capabilities/catalog.js.map +1 -0
- package/dist/src/capabilities/capabilities/hints.js +195 -0
- package/dist/src/capabilities/capabilities/hints.js.map +1 -0
- package/dist/src/capabilities/capabilities/index.js +11 -0
- package/dist/src/capabilities/capabilities/index.js.map +1 -0
- package/dist/src/capabilities/capabilities/types.js +11 -0
- package/dist/src/capabilities/capabilities/types.js.map +1 -0
- package/dist/src/capabilities/colophon/collectColophon.js +83 -0
- package/dist/src/capabilities/colophon/collectColophon.js.map +1 -0
- package/dist/src/capabilities/colophon/colophon.render.js +59 -0
- package/dist/src/capabilities/colophon/colophon.render.js.map +1 -0
- package/dist/src/capabilities/colophon/colophon.verb.js +43 -0
- package/dist/src/capabilities/colophon/colophon.verb.js.map +1 -0
- package/dist/src/capabilities/colophon/index.js +5 -0
- package/dist/src/capabilities/colophon/index.js.map +1 -0
- package/dist/src/capabilities/colophon/markdownTerminal.js +90 -0
- package/dist/src/capabilities/colophon/markdownTerminal.js.map +1 -0
- package/dist/src/capabilities/colophon/types.js +10 -0
- package/dist/src/capabilities/colophon/types.js.map +1 -0
- package/dist/src/capabilities/config/collectConfigShow.js +59 -0
- package/dist/src/capabilities/config/collectConfigShow.js.map +1 -0
- package/dist/src/capabilities/config/field.render.js +22 -0
- package/dist/src/capabilities/config/field.render.js.map +1 -0
- package/dist/src/capabilities/config/fields.js +46 -0
- package/dist/src/capabilities/config/fields.js.map +1 -0
- package/dist/src/capabilities/config/get.verb.js +61 -0
- package/dist/src/capabilities/config/get.verb.js.map +1 -0
- package/dist/src/capabilities/config/index.js +5 -0
- package/dist/src/capabilities/config/index.js.map +1 -0
- package/dist/src/capabilities/config/runField.js +59 -0
- package/dist/src/capabilities/config/runField.js.map +1 -0
- package/dist/src/capabilities/config/runGet.js +28 -0
- package/dist/src/capabilities/config/runGet.js.map +1 -0
- package/dist/src/capabilities/config/runSet.js +53 -0
- package/dist/src/capabilities/config/runSet.js.map +1 -0
- package/dist/src/capabilities/config/set.verb.js +66 -0
- package/dist/src/capabilities/config/set.verb.js.map +1 -0
- package/dist/src/capabilities/config/show.render.js +84 -0
- package/dist/src/capabilities/config/show.render.js.map +1 -0
- package/dist/src/capabilities/config/show.verb.js +44 -0
- package/dist/src/capabilities/config/show.verb.js.map +1 -0
- package/dist/src/capabilities/config/types.js +5 -0
- package/dist/src/capabilities/config/types.js.map +1 -0
- package/dist/src/capabilities/config/unset.verb.js +49 -0
- package/dist/src/capabilities/config/unset.verb.js.map +1 -0
- package/dist/src/capabilities/create/cliProjection.js +195 -0
- package/dist/src/capabilities/create/cliProjection.js.map +1 -0
- package/dist/src/capabilities/create/constants.js +47 -0
- package/dist/src/capabilities/create/constants.js.map +1 -0
- package/dist/src/capabilities/create/create.render.js +100 -0
- package/dist/src/capabilities/create/create.render.js.map +1 -0
- package/dist/src/capabilities/create/create.verb.js +438 -0
- package/dist/src/capabilities/create/create.verb.js.map +1 -0
- package/dist/src/capabilities/create/createHelp.js +47 -0
- package/dist/src/capabilities/create/createHelp.js.map +1 -0
- package/dist/src/capabilities/create/createSurface.generated.js +394 -0
- package/dist/src/capabilities/create/createSurface.generated.js.map +1 -0
- package/dist/src/capabilities/create/generatorToVerbSpec.js +106 -0
- package/dist/src/capabilities/create/generatorToVerbSpec.js.map +1 -0
- package/dist/src/capabilities/create/index.js +18 -0
- package/dist/src/capabilities/create/index.js.map +1 -0
- package/dist/src/capabilities/create/messages.js +16 -0
- package/dist/src/capabilities/create/messages.js.map +1 -0
- package/dist/src/capabilities/create/mount.js +294 -0
- package/dist/src/capabilities/create/mount.js.map +1 -0
- package/dist/src/capabilities/create/pathJail.js +65 -0
- package/dist/src/capabilities/create/pathJail.js.map +1 -0
- package/dist/src/capabilities/create/pickGenerator.js +53 -0
- package/dist/src/capabilities/create/pickGenerator.js.map +1 -0
- package/dist/src/capabilities/create/types.js +2 -0
- package/dist/src/capabilities/create/types.js.map +1 -0
- package/dist/src/capabilities/distribution.js +40 -0
- package/dist/src/capabilities/distribution.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/checkKeStore.js +40 -0
- package/dist/src/capabilities/doctor/checks/checkKeStore.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/checkNodeVersion.js +21 -0
- package/dist/src/capabilities/doctor/checks/checkNodeVersion.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/checkPackageRefs.js +148 -0
- package/dist/src/capabilities/doctor/checks/checkPackageRefs.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/checkPragmaVersion.js +19 -0
- package/dist/src/capabilities/doctor/checks/checkPragmaVersion.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/checkShellCompletions.js +199 -0
- package/dist/src/capabilities/doctor/checks/checkShellCompletions.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/harnessInventory.js +195 -0
- package/dist/src/capabilities/doctor/checks/harnessInventory.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/index.js +27 -0
- package/dist/src/capabilities/doctor/checks/index.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/mcpCommand.js +57 -0
- package/dist/src/capabilities/doctor/checks/mcpCommand.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/targetHealth.js +349 -0
- package/dist/src/capabilities/doctor/checks/targetHealth.js.map +1 -0
- package/dist/src/capabilities/doctor/doctor.render.js +164 -0
- package/dist/src/capabilities/doctor/doctor.render.js.map +1 -0
- package/dist/src/capabilities/doctor/doctor.verb.js +49 -0
- package/dist/src/capabilities/doctor/doctor.verb.js.map +1 -0
- package/dist/src/capabilities/doctor/index.js +5 -0
- package/dist/src/capabilities/doctor/index.js.map +1 -0
- package/dist/src/capabilities/doctor/runChecks.js +86 -0
- package/dist/src/capabilities/doctor/runChecks.js.map +1 -0
- package/dist/src/capabilities/doctor/types.js +5 -0
- package/dist/src/capabilities/doctor/types.js.map +1 -0
- package/dist/src/capabilities/graph/index.js +19 -0
- package/dist/src/capabilities/graph/index.js.map +1 -0
- package/dist/src/capabilities/graph/inspect.render.js +76 -0
- package/dist/src/capabilities/graph/inspect.render.js.map +1 -0
- package/dist/src/capabilities/graph/inspect.verb.js +53 -0
- package/dist/src/capabilities/graph/inspect.verb.js.map +1 -0
- package/dist/src/capabilities/graph/query.render.js +73 -0
- package/dist/src/capabilities/graph/query.render.js.map +1 -0
- package/dist/src/capabilities/graph/query.verb.js +49 -0
- package/dist/src/capabilities/graph/query.verb.js.map +1 -0
- package/dist/src/capabilities/graph/runQuery.js +41 -0
- package/dist/src/capabilities/graph/runQuery.js.map +1 -0
- package/dist/src/capabilities/index.js +56 -0
- package/dist/src/capabilities/index.js.map +1 -0
- package/dist/src/capabilities/info/collectInfo.js +72 -0
- package/dist/src/capabilities/info/collectInfo.js.map +1 -0
- package/dist/src/capabilities/info/index.js +5 -0
- package/dist/src/capabilities/info/index.js.map +1 -0
- package/dist/src/capabilities/info/info.render.js +57 -0
- package/dist/src/capabilities/info/info.render.js.map +1 -0
- package/dist/src/capabilities/info/info.verb.js +42 -0
- package/dist/src/capabilities/info/info.verb.js.map +1 -0
- package/dist/src/capabilities/info/types.js +5 -0
- package/dist/src/capabilities/info/types.js.map +1 -0
- package/dist/src/capabilities/meta/complete.verb.js +43 -0
- package/dist/src/capabilities/meta/complete.verb.js.map +1 -0
- package/dist/src/capabilities/meta/index.js +13 -0
- package/dist/src/capabilities/meta/index.js.map +1 -0
- package/dist/src/capabilities/meta/mcp.verb.js +34 -0
- package/dist/src/capabilities/meta/mcp.verb.js.map +1 -0
- package/dist/src/capabilities/ontology/index.js +21 -0
- package/dist/src/capabilities/ontology/index.js.map +1 -0
- package/dist/src/capabilities/ontology/queries.js +123 -0
- package/dist/src/capabilities/ontology/queries.js.map +1 -0
- package/dist/src/capabilities/ontology/render.js +66 -0
- package/dist/src/capabilities/ontology/render.js.map +1 -0
- package/dist/src/capabilities/ontology/verbs.js +181 -0
- package/dist/src/capabilities/ontology/verbs.js.map +1 -0
- package/dist/src/capabilities/prompt/index.js +16 -0
- package/dist/src/capabilities/prompt/index.js.map +1 -0
- package/dist/src/capabilities/prompt/prompt.render.js +78 -0
- package/dist/src/capabilities/prompt/prompt.render.js.map +1 -0
- package/dist/src/capabilities/prompt/types.js +10 -0
- package/dist/src/capabilities/prompt/types.js.map +1 -0
- package/dist/src/capabilities/prompt/verbs.js +93 -0
- package/dist/src/capabilities/prompt/verbs.js.map +1 -0
- package/dist/src/capabilities/resources/index.js +10 -0
- package/dist/src/capabilities/resources/index.js.map +1 -0
- package/dist/src/capabilities/resources/provider.js +423 -0
- package/dist/src/capabilities/resources/provider.js.map +1 -0
- package/dist/src/capabilities/setup/buildPlan.js +172 -0
- package/dist/src/capabilities/setup/buildPlan.js.map +1 -0
- package/dist/src/capabilities/setup/index.js +5 -0
- package/dist/src/capabilities/setup/index.js.map +1 -0
- package/dist/src/capabilities/setup/mode.js +53 -0
- package/dist/src/capabilities/setup/mode.js.map +1 -0
- package/dist/src/capabilities/setup/operations/index.js +39 -0
- package/dist/src/capabilities/setup/operations/index.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupCompletions.js +160 -0
- package/dist/src/capabilities/setup/operations/setupCompletions.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupConfig.js +101 -0
- package/dist/src/capabilities/setup/operations/setupConfig.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupGenerator.js +390 -0
- package/dist/src/capabilities/setup/operations/setupGenerator.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupLsp.js +329 -0
- package/dist/src/capabilities/setup/operations/setupLsp.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupMcp.js +253 -0
- package/dist/src/capabilities/setup/operations/setupMcp.js.map +1 -0
- package/dist/src/capabilities/setup/operations/setupSkills.js +594 -0
- package/dist/src/capabilities/setup/operations/setupSkills.js.map +1 -0
- package/dist/src/capabilities/setup/plan.js +128 -0
- package/dist/src/capabilities/setup/plan.js.map +1 -0
- package/dist/src/capabilities/setup/plan.render.js +271 -0
- package/dist/src/capabilities/setup/plan.render.js.map +1 -0
- package/dist/src/capabilities/setup/setup.render.js +54 -0
- package/dist/src/capabilities/setup/setup.render.js.map +1 -0
- package/dist/src/capabilities/setup/setup.verb.js +387 -0
- package/dist/src/capabilities/setup/setup.verb.js.map +1 -0
- package/dist/src/capabilities/setup/shell.js +196 -0
- package/dist/src/capabilities/setup/shell.js.map +1 -0
- package/dist/src/capabilities/setup/targets.js +328 -0
- package/dist/src/capabilities/setup/targets.js.map +1 -0
- package/dist/src/capabilities/setup/types.js +5 -0
- package/dist/src/capabilities/setup/types.js.map +1 -0
- package/dist/src/capabilities/shared/assertExecOk.js +137 -0
- package/dist/src/capabilities/shared/assertExecOk.js.map +1 -0
- package/dist/src/capabilities/shared/index.js +27 -0
- package/dist/src/capabilities/shared/index.js.map +1 -0
- package/dist/src/capabilities/shared/packageManager.js +349 -0
- package/dist/src/capabilities/shared/packageManager.js.map +1 -0
- package/dist/src/capabilities/shared/registry.js +55 -0
- package/dist/src/capabilities/shared/registry.js.map +1 -0
- package/dist/src/capabilities/skill/discover.js +281 -0
- package/dist/src/capabilities/skill/discover.js.map +1 -0
- package/dist/src/capabilities/skill/index.js +10 -0
- package/dist/src/capabilities/skill/index.js.map +1 -0
- package/dist/src/capabilities/skill/render.js +49 -0
- package/dist/src/capabilities/skill/render.js.map +1 -0
- package/dist/src/capabilities/skill/verbs.js +83 -0
- package/dist/src/capabilities/skill/verbs.js.map +1 -0
- package/dist/src/capabilities/sources/collectStatus.js +103 -0
- package/dist/src/capabilities/sources/collectStatus.js.map +1 -0
- package/dist/src/capabilities/sources/index.js +13 -0
- package/dist/src/capabilities/sources/index.js.map +1 -0
- package/dist/src/capabilities/sources/installSkills.js +309 -0
- package/dist/src/capabilities/sources/installSkills.js.map +1 -0
- package/dist/src/capabilities/sources/runUpdate.js +460 -0
- package/dist/src/capabilities/sources/runUpdate.js.map +1 -0
- package/dist/src/capabilities/sources/status.render.js +64 -0
- package/dist/src/capabilities/sources/status.render.js.map +1 -0
- package/dist/src/capabilities/sources/status.verb.js +40 -0
- package/dist/src/capabilities/sources/status.verb.js.map +1 -0
- package/dist/src/capabilities/sources/types.js +6 -0
- package/dist/src/capabilities/sources/types.js.map +1 -0
- package/dist/src/capabilities/sources/update.render.js +34 -0
- package/dist/src/capabilities/sources/update.render.js.map +1 -0
- package/dist/src/capabilities/sources/update.verb.js +55 -0
- package/dist/src/capabilities/sources/update.verb.js.map +1 -0
- package/dist/src/capabilities/upgrade/index.js +5 -0
- package/dist/src/capabilities/upgrade/index.js.map +1 -0
- package/dist/src/capabilities/upgrade/runUpgrade.js +135 -0
- package/dist/src/capabilities/upgrade/runUpgrade.js.map +1 -0
- package/dist/src/capabilities/upgrade/types.js +5 -0
- package/dist/src/capabilities/upgrade/types.js.map +1 -0
- package/dist/src/capabilities/upgrade/upgrade.render.js +52 -0
- package/dist/src/capabilities/upgrade/upgrade.render.js.map +1 -0
- package/dist/src/capabilities/upgrade/upgrade.verb.js +52 -0
- package/dist/src/capabilities/upgrade/upgrade.verb.js.map +1 -0
- package/dist/src/capabilities/version/index.js +10 -0
- package/dist/src/capabilities/version/index.js.map +1 -0
- package/dist/src/capabilities/version/version.verb.js +36 -0
- package/dist/src/capabilities/version/version.verb.js.map +1 -0
- package/dist/src/constants.js +87 -0
- package/dist/src/constants.js.map +1 -0
- package/dist/src/index.js +12 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/kernel/completion/complete.js +66 -0
- package/dist/src/kernel/completion/complete.js.map +1 -0
- package/dist/src/kernel/completion/emitScripts.js +92 -0
- package/dist/src/kernel/completion/emitScripts.js.map +1 -0
- package/dist/src/kernel/completion/entitySource.js +285 -0
- package/dist/src/kernel/completion/entitySource.js.map +1 -0
- package/dist/src/kernel/completion/index.js +14 -0
- package/dist/src/kernel/completion/index.js.map +1 -0
- package/dist/src/kernel/completion/model.js +301 -0
- package/dist/src/kernel/completion/model.js.map +1 -0
- package/dist/src/kernel/completion/parse.js +253 -0
- package/dist/src/kernel/completion/parse.js.map +1 -0
- package/dist/src/kernel/completion/rank.js +101 -0
- package/dist/src/kernel/completion/rank.js.map +1 -0
- package/dist/src/kernel/completion/resolve.js +100 -0
- package/dist/src/kernel/completion/resolve.js.map +1 -0
- package/dist/src/kernel/completion/templates/bash.js +209 -0
- package/dist/src/kernel/completion/templates/bash.js.map +1 -0
- package/dist/src/kernel/completion/templates/fish.js +214 -0
- package/dist/src/kernel/completion/templates/fish.js.map +1 -0
- package/dist/src/kernel/completion/templates/index.js +23 -0
- package/dist/src/kernel/completion/templates/index.js.map +1 -0
- package/dist/src/kernel/completion/templates/shared.js +98 -0
- package/dist/src/kernel/completion/templates/shared.js.map +1 -0
- package/dist/src/kernel/completion/templates/zsh.js +201 -0
- package/dist/src/kernel/completion/templates/zsh.js.map +1 -0
- package/dist/src/kernel/completion/types.js +13 -0
- package/dist/src/kernel/completion/types.js.map +1 -0
- package/dist/src/kernel/config/defaults.js +17 -0
- package/dist/src/kernel/config/defaults.js.map +1 -0
- package/dist/src/kernel/config/evaluateProjectConfig.js +126 -0
- package/dist/src/kernel/config/evaluateProjectConfig.js.map +1 -0
- package/dist/src/kernel/config/findProjectConfig.js +43 -0
- package/dist/src/kernel/config/findProjectConfig.js.map +1 -0
- package/dist/src/kernel/config/firstRun.js +34 -0
- package/dist/src/kernel/config/firstRun.js.map +1 -0
- package/dist/src/kernel/config/globalConfig.js +79 -0
- package/dist/src/kernel/config/globalConfig.js.map +1 -0
- package/dist/src/kernel/config/index.js +16 -0
- package/dist/src/kernel/config/index.js.map +1 -0
- package/dist/src/kernel/config/paths.js +35 -0
- package/dist/src/kernel/config/paths.js.map +1 -0
- package/dist/src/kernel/config/readConfig.js +78 -0
- package/dist/src/kernel/config/readConfig.js.map +1 -0
- package/dist/src/kernel/config/schema.js +130 -0
- package/dist/src/kernel/config/schema.js.map +1 -0
- package/dist/src/kernel/config/types.js +19 -0
- package/dist/src/kernel/config/types.js.map +1 -0
- package/dist/src/kernel/config/writeConfigField.js +59 -0
- package/dist/src/kernel/config/writeConfigField.js.map +1 -0
- package/dist/src/kernel/copy.js +43 -0
- package/dist/src/kernel/copy.js.map +1 -0
- package/dist/src/kernel/error/PragmaError.js +149 -0
- package/dist/src/kernel/error/PragmaError.js.map +1 -0
- package/dist/src/kernel/error/constants.js +40 -0
- package/dist/src/kernel/error/constants.js.map +1 -0
- package/dist/src/kernel/error/fromTaskError.js +96 -0
- package/dist/src/kernel/error/fromTaskError.js.map +1 -0
- package/dist/src/kernel/error/index.js +13 -0
- package/dist/src/kernel/error/index.js.map +1 -0
- package/dist/src/kernel/error/recovery.js +52 -0
- package/dist/src/kernel/error/recovery.js.map +1 -0
- package/dist/src/kernel/error/renderError.js +115 -0
- package/dist/src/kernel/error/renderError.js.map +1 -0
- package/dist/src/kernel/error/serialize.js +25 -0
- package/dist/src/kernel/error/serialize.js.map +1 -0
- package/dist/src/kernel/error/types.js +9 -0
- package/dist/src/kernel/error/types.js.map +1 -0
- package/dist/src/kernel/index.js +34 -0
- package/dist/src/kernel/index.js.map +1 -0
- package/dist/src/kernel/interactivity.js +68 -0
- package/dist/src/kernel/interactivity.js.map +1 -0
- package/dist/src/kernel/packs/collect.js +187 -0
- package/dist/src/kernel/packs/collect.js.map +1 -0
- package/dist/src/kernel/packs/compile.js +304 -0
- package/dist/src/kernel/packs/compile.js.map +1 -0
- package/dist/src/kernel/packs/disclosure.js +76 -0
- package/dist/src/kernel/packs/disclosure.js.map +1 -0
- package/dist/src/kernel/packs/glob.js +38 -0
- package/dist/src/kernel/packs/glob.js.map +1 -0
- package/dist/src/kernel/packs/graphql/buildLookupDocument.js +258 -0
- package/dist/src/kernel/packs/graphql/buildLookupDocument.js.map +1 -0
- package/dist/src/kernel/packs/graphql/fetchGraphqlLookup.js +157 -0
- package/dist/src/kernel/packs/graphql/fetchGraphqlLookup.js.map +1 -0
- package/dist/src/kernel/packs/graphql/index.js +20 -0
- package/dist/src/kernel/packs/graphql/index.js.map +1 -0
- package/dist/src/kernel/packs/graphql/nameMap.js +63 -0
- package/dist/src/kernel/packs/graphql/nameMap.js.map +1 -0
- package/dist/src/kernel/packs/index.js +34 -0
- package/dist/src/kernel/packs/index.js.map +1 -0
- package/dist/src/kernel/packs/iri.js +110 -0
- package/dist/src/kernel/packs/iri.js.map +1 -0
- package/dist/src/kernel/packs/renderPack.js +129 -0
- package/dist/src/kernel/packs/renderPack.js.map +1 -0
- package/dist/src/kernel/packs/resolveEntity.js +274 -0
- package/dist/src/kernel/packs/resolveEntity.js.map +1 -0
- package/dist/src/kernel/packs/runBodies.js +140 -0
- package/dist/src/kernel/packs/runBodies.js.map +1 -0
- package/dist/src/kernel/packs/sample.js +56 -0
- package/dist/src/kernel/packs/sample.js.map +1 -0
- package/dist/src/kernel/packs/schema.js +421 -0
- package/dist/src/kernel/packs/schema.js.map +1 -0
- package/dist/src/kernel/packs/sparql/applyFilters.js +167 -0
- package/dist/src/kernel/packs/sparql/applyFilters.js.map +1 -0
- package/dist/src/kernel/packs/sparql/applySearch.js +25 -0
- package/dist/src/kernel/packs/sparql/applySearch.js.map +1 -0
- package/dist/src/kernel/packs/sparql/buildLookupQuery.js +480 -0
- package/dist/src/kernel/packs/sparql/buildLookupQuery.js.map +1 -0
- package/dist/src/kernel/packs/sparql/escape.js +21 -0
- package/dist/src/kernel/packs/sparql/escape.js.map +1 -0
- package/dist/src/kernel/packs/sparql/index.js +31 -0
- package/dist/src/kernel/packs/sparql/index.js.map +1 -0
- package/dist/src/kernel/packs/sparql/runSelect.js +101 -0
- package/dist/src/kernel/packs/sparql/runSelect.js.map +1 -0
- package/dist/src/kernel/packs/types.js +30 -0
- package/dist/src/kernel/packs/types.js.map +1 -0
- package/dist/src/kernel/packs/uniqueness.js +30 -0
- package/dist/src/kernel/packs/uniqueness.js.map +1 -0
- package/dist/src/kernel/project/cli/buildProgram.js +263 -0
- package/dist/src/kernel/project/cli/buildProgram.js.map +1 -0
- package/dist/src/kernel/project/cli/constants.js +27 -0
- package/dist/src/kernel/project/cli/constants.js.map +1 -0
- package/dist/src/kernel/project/cli/dispatch.js +420 -0
- package/dist/src/kernel/project/cli/dispatch.js.map +1 -0
- package/dist/src/kernel/project/cli/exitCodes.js +66 -0
- package/dist/src/kernel/project/cli/exitCodes.js.map +1 -0
- package/dist/src/kernel/project/cli/globalFlags.js +219 -0
- package/dist/src/kernel/project/cli/globalFlags.js.map +1 -0
- package/dist/src/kernel/project/cli/helpFormat.js +58 -0
- package/dist/src/kernel/project/cli/helpFormat.js.map +1 -0
- package/dist/src/kernel/project/cli/index.js +14 -0
- package/dist/src/kernel/project/cli/index.js.map +1 -0
- package/dist/src/kernel/project/cli/rootHelp.js +227 -0
- package/dist/src/kernel/project/cli/rootHelp.js.map +1 -0
- package/dist/src/kernel/project/cli/suggest.js +75 -0
- package/dist/src/kernel/project/cli/suggest.js.map +1 -0
- package/dist/src/kernel/project/cli/suggestNames.js +96 -0
- package/dist/src/kernel/project/cli/suggestNames.js.map +1 -0
- package/dist/src/kernel/project/cli/verbHelp.js +131 -0
- package/dist/src/kernel/project/cli/verbHelp.js.map +1 -0
- package/dist/src/kernel/project/mcp/buildServer.js +67 -0
- package/dist/src/kernel/project/mcp/buildServer.js.map +1 -0
- package/dist/src/kernel/project/mcp/envelope.js +37 -0
- package/dist/src/kernel/project/mcp/envelope.js.map +1 -0
- package/dist/src/kernel/project/mcp/index.js +8 -0
- package/dist/src/kernel/project/mcp/index.js.map +1 -0
- package/dist/src/kernel/project/mcp/instructions.js +44 -0
- package/dist/src/kernel/project/mcp/instructions.js.map +1 -0
- package/dist/src/kernel/project/mcp/mcpError.js +42 -0
- package/dist/src/kernel/project/mcp/mcpError.js.map +1 -0
- package/dist/src/kernel/project/mcp/prompts/index.js +36 -0
- package/dist/src/kernel/project/mcp/prompts/index.js.map +1 -0
- package/dist/src/kernel/project/mcp/prompts/provider.js +98 -0
- package/dist/src/kernel/project/mcp/prompts/provider.js.map +1 -0
- package/dist/src/kernel/project/mcp/prompts/source.js +154 -0
- package/dist/src/kernel/project/mcp/prompts/source.js.map +1 -0
- package/dist/src/kernel/project/mcp/registerVerb.js +315 -0
- package/dist/src/kernel/project/mcp/registerVerb.js.map +1 -0
- package/dist/src/kernel/project/mcp/serve.js +35 -0
- package/dist/src/kernel/project/mcp/serve.js.map +1 -0
- package/dist/src/kernel/render/compactUri.js +24 -0
- package/dist/src/kernel/render/compactUri.js.map +1 -0
- package/dist/src/kernel/render/contracts.js +10 -0
- package/dist/src/kernel/render/contracts.js.map +1 -0
- package/dist/src/kernel/render/disclosure.js +34 -0
- package/dist/src/kernel/render/disclosure.js.map +1 -0
- package/dist/src/kernel/render/envelope.js +30 -0
- package/dist/src/kernel/render/envelope.js.map +1 -0
- package/dist/src/kernel/render/formatters.js +27 -0
- package/dist/src/kernel/render/formatters.js.map +1 -0
- package/dist/src/kernel/render/index.js +15 -0
- package/dist/src/kernel/render/index.js.map +1 -0
- package/dist/src/kernel/render/prefixes.js +46 -0
- package/dist/src/kernel/render/prefixes.js.map +1 -0
- package/dist/src/kernel/render/renderers.js +468 -0
- package/dist/src/kernel/render/renderers.js.map +1 -0
- package/dist/src/kernel/render/style.js +105 -0
- package/dist/src/kernel/render/style.js.map +1 -0
- package/dist/src/kernel/render/turtle.js +194 -0
- package/dist/src/kernel/render/turtle.js.map +1 -0
- package/dist/src/kernel/render/vocabulary.js +174 -0
- package/dist/src/kernel/render/vocabulary.js.map +1 -0
- package/dist/src/kernel/render/writeStdout.js +43 -0
- package/dist/src/kernel/render/writeStdout.js.map +1 -0
- package/dist/src/kernel/runtime/boot.js +49 -0
- package/dist/src/kernel/runtime/boot.js.map +1 -0
- package/dist/src/kernel/runtime/facade.js +39 -0
- package/dist/src/kernel/runtime/facade.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/build.js +122 -0
- package/dist/src/kernel/runtime/graphpack/build.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/buildIndex.js +303 -0
- package/dist/src/kernel/runtime/graphpack/buildIndex.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.generated.js +6 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.generated.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.index.generated.js +4 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.index.generated.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.stories.generated.js +4 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.stories.generated.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/embedded.js +82 -0
- package/dist/src/kernel/runtime/graphpack/embedded.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/hash.js +38 -0
- package/dist/src/kernel/runtime/graphpack/hash.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/index.js +11 -0
- package/dist/src/kernel/runtime/graphpack/index.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/manifest.js +145 -0
- package/dist/src/kernel/runtime/graphpack/manifest.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/read.js +92 -0
- package/dist/src/kernel/runtime/graphpack/read.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/schemas.js +70 -0
- package/dist/src/kernel/runtime/graphpack/schemas.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/stories.js +68 -0
- package/dist/src/kernel/runtime/graphpack/stories.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/types.js +55 -0
- package/dist/src/kernel/runtime/graphpack/types.js.map +1 -0
- package/dist/src/kernel/runtime/index.js +8 -0
- package/dist/src/kernel/runtime/index.js.map +1 -0
- package/dist/src/kernel/runtime/loadSession.js +34 -0
- package/dist/src/kernel/runtime/loadSession.js.map +1 -0
- package/dist/src/kernel/runtime/paths.js +78 -0
- package/dist/src/kernel/runtime/paths.js.map +1 -0
- package/dist/src/kernel/runtime/probe.js +37 -0
- package/dist/src/kernel/runtime/probe.js.map +1 -0
- package/dist/src/kernel/runtime/readEntity.js +363 -0
- package/dist/src/kernel/runtime/readEntity.js.map +1 -0
- package/dist/src/kernel/runtime/refs/gitOps.js +65 -0
- package/dist/src/kernel/runtime/refs/gitOps.js.map +1 -0
- package/dist/src/kernel/runtime/refs/index.js +29 -0
- package/dist/src/kernel/runtime/refs/index.js.map +1 -0
- package/dist/src/kernel/runtime/refs/parseRef.js +70 -0
- package/dist/src/kernel/runtime/refs/parseRef.js.map +1 -0
- package/dist/src/kernel/runtime/refs/resolve.js +332 -0
- package/dist/src/kernel/runtime/refs/resolve.js.map +1 -0
- package/dist/src/kernel/runtime/resolveSources.js +62 -0
- package/dist/src/kernel/runtime/resolveSources.js.map +1 -0
- package/dist/src/kernel/runtime/store.js +75 -0
- package/dist/src/kernel/runtime/store.js.map +1 -0
- package/dist/src/kernel/runtime/storeReadiness.js +51 -0
- package/dist/src/kernel/runtime/storeReadiness.js.map +1 -0
- package/dist/src/kernel/runtime/types.js +11 -0
- package/dist/src/kernel/runtime/types.js.map +1 -0
- package/dist/src/kernel/spec/asVerb.js +21 -0
- package/dist/src/kernel/spec/asVerb.js.map +1 -0
- package/dist/src/kernel/spec/emitReference.js +578 -0
- package/dist/src/kernel/spec/emitReference.js.map +1 -0
- package/dist/src/kernel/spec/emitSurface.js +202 -0
- package/dist/src/kernel/spec/emitSurface.js.map +1 -0
- package/dist/src/kernel/spec/index.js +11 -0
- package/dist/src/kernel/spec/index.js.map +1 -0
- package/dist/src/kernel/spec/surfaceConformance.js +103 -0
- package/dist/src/kernel/spec/surfaceConformance.js.map +1 -0
- package/dist/src/kernel/spec/types.js +14 -0
- package/dist/src/kernel/spec/types.js.map +1 -0
- package/dist/src/kernel/spec/validate.js +110 -0
- package/dist/src/kernel/spec/validate.js.map +1 -0
- package/dist/src/kernel/vocabulary.js +97 -0
- package/dist/src/kernel/vocabulary.js.map +1 -0
- package/dist/src/types.js +11 -0
- package/dist/src/types.js.map +1 -0
- package/package.json +22 -23
- package/pragma.conf.ts +486 -90
- package/src/bin.ts +274 -82
- package/src/capabilities/block.parity.test.ts +29 -12
- package/src/capabilities/block.shipped.exec.test.ts +282 -0
- package/src/capabilities/block.tierRank.exec.test.ts +300 -0
- package/src/capabilities/capabilities/capabilities.render.ts +1 -1
- package/src/capabilities/capabilities/capabilities.verb.ts +1 -1
- package/src/capabilities/capabilities/catalog.ts +3 -3
- package/src/capabilities/capabilities/hints.ts +32 -7
- package/src/capabilities/capabilities/index.ts +1 -1
- package/src/capabilities/colophon/collectColophon.ts +35 -24
- package/src/capabilities/colophon/colophon.render.ts +24 -1
- package/src/capabilities/colophon/colophon.test.ts +42 -21
- package/src/capabilities/colophon/colophon.verb.ts +4 -4
- package/src/capabilities/config/collectConfigShow.test.ts +1 -0
- package/src/capabilities/config/collectConfigShow.ts +3 -3
- package/src/capabilities/config/field.render.ts +4 -5
- package/src/capabilities/config/fields.ts +17 -10
- package/src/capabilities/config/get.verb.ts +70 -0
- package/src/capabilities/config/getUnset.test.ts +264 -0
- package/src/capabilities/config/index.ts +5 -1
- package/src/capabilities/config/runField.ts +40 -22
- package/src/capabilities/config/runGet.ts +34 -0
- package/src/capabilities/config/runSet.ts +35 -9
- package/src/capabilities/config/set.test.ts +48 -14
- package/src/capabilities/config/set.verb.ts +8 -7
- package/src/capabilities/config/show.render.ts +1 -1
- package/src/capabilities/config/show.verb.ts +9 -6
- package/src/capabilities/config/types.ts +18 -4
- package/src/capabilities/config/unset.verb.ts +58 -0
- package/src/capabilities/create/byteEquality.subprocess.test.ts +2 -3
- package/src/capabilities/create/byteEquality.test.ts +25 -11
- package/src/capabilities/create/cliProjection.ts +227 -0
- package/src/capabilities/create/constants.ts +36 -61
- package/src/capabilities/create/create.mcp.test.ts +89 -5
- package/src/capabilities/create/create.render.ts +71 -7
- package/src/capabilities/create/create.test.ts +433 -219
- package/src/capabilities/create/create.verb.ts +297 -328
- package/src/capabilities/create/createGrammar.test.ts +865 -0
- package/src/capabilities/create/createHelp.ts +71 -0
- package/src/capabilities/create/createSurface.generated.ts +400 -0
- package/src/capabilities/create/crossCli.subprocess.test.ts +745 -0
- package/src/capabilities/create/cwdJail.test.ts +24 -5
- package/src/capabilities/create/generatorToVerbSpec.test.ts +186 -0
- package/src/capabilities/create/generatorToVerbSpec.ts +13 -11
- package/src/capabilities/create/index.ts +7 -4
- package/src/capabilities/create/messages.ts +18 -0
- package/src/capabilities/create/mount.ts +391 -0
- package/src/capabilities/create/pathJail.test.ts +90 -0
- package/src/capabilities/create/pathJail.ts +8 -5
- package/src/capabilities/create/pickGenerator.ts +23 -35
- package/src/capabilities/create/shippedCreate.subprocess.test.ts +164 -0
- package/src/capabilities/create/types.ts +20 -0
- package/src/capabilities/distribution.parity.test.ts +4 -0
- package/src/capabilities/distribution.test.ts +3 -1
- package/src/capabilities/distribution.ts +10 -15
- package/src/capabilities/doctor/checks/checkKeStore.ts +7 -5
- package/src/capabilities/doctor/checks/checkPackageRefs.ts +75 -8
- package/src/capabilities/doctor/checks/checkPragmaVersion.ts +2 -2
- package/src/capabilities/doctor/checks/checkShellCompletions.test.ts +76 -29
- package/src/capabilities/doctor/checks/checkShellCompletions.ts +63 -17
- package/src/capabilities/doctor/checks/harnessInventory.test.ts +219 -0
- package/src/capabilities/doctor/checks/harnessInventory.ts +298 -0
- package/src/capabilities/doctor/checks/index.ts +27 -0
- package/src/capabilities/doctor/checks/mcpCommand.test.ts +100 -0
- package/src/capabilities/doctor/checks/mcpCommand.ts +69 -0
- package/src/capabilities/doctor/checks/targetHealth.ts +444 -0
- package/src/capabilities/doctor/doctor.render.test.ts +125 -38
- package/src/capabilities/doctor/doctor.render.ts +74 -74
- package/src/capabilities/doctor/doctor.test.ts +338 -37
- package/src/capabilities/doctor/doctor.verb.ts +8 -3
- package/src/capabilities/doctor/runChecks.ts +65 -63
- package/src/capabilities/doctor/types.ts +22 -15
- package/src/capabilities/emptyRecovery.test.ts +21 -8
- package/src/capabilities/graph/examples.exec.test.ts +107 -0
- package/src/capabilities/graph/index.ts +1 -1
- package/src/capabilities/graph/inspect.render.ts +70 -22
- package/src/capabilities/graph/inspect.test.ts +260 -5
- package/src/capabilities/graph/inspect.verb.ts +18 -6
- package/src/capabilities/graph/query.render.ts +15 -3
- package/src/capabilities/graph/query.verb.ts +3 -3
- package/src/capabilities/graph/runQuery.ts +2 -3
- package/src/capabilities/index.ts +3 -1
- package/src/capabilities/info/collectInfo.ts +13 -5
- package/src/capabilities/info/info.render.ts +7 -3
- package/src/capabilities/info/info.test.ts +37 -1
- package/src/capabilities/info/info.verb.ts +1 -1
- package/src/capabilities/info/types.ts +10 -2
- package/src/capabilities/lazy.test.ts +32 -0
- package/src/capabilities/meta/complete.verb.ts +1 -1
- package/src/capabilities/meta/index.ts +1 -1
- package/src/capabilities/meta/mcp.verb.ts +10 -8
- package/src/capabilities/ontology/index.ts +15 -11
- package/src/capabilities/ontology/ontology.test.ts +6 -55
- package/src/capabilities/ontology/queries.ts +2 -2
- package/src/capabilities/ontology/render.ts +3 -4
- package/src/capabilities/ontology/verbs.ts +27 -68
- package/src/capabilities/prompt/index.ts +2 -2
- package/src/capabilities/prompt/prompt.render.ts +6 -2
- package/src/capabilities/prompt/types.ts +1 -1
- package/src/capabilities/prompt/verbs.ts +4 -5
- package/src/capabilities/reference.test.ts +63 -0
- package/src/capabilities/renderVocabularySync.test.ts +82 -0
- package/src/capabilities/resources/provider.ts +342 -85
- package/src/capabilities/resources/resources.test.ts +355 -59
- package/src/capabilities/scopeTypeSync.test.ts +29 -15
- package/src/capabilities/setup/buildPlan.ts +240 -0
- package/src/capabilities/setup/index.ts +7 -7
- package/src/capabilities/setup/mode.ts +74 -0
- package/src/capabilities/setup/operations/index.ts +79 -0
- package/src/capabilities/setup/operations/setupCompletions.ts +97 -24
- package/src/capabilities/setup/operations/setupConfig.ts +124 -0
- package/src/capabilities/setup/operations/setupGenerator.ts +478 -334
- package/src/capabilities/setup/operations/setupLsp.ts +420 -67
- package/src/capabilities/setup/operations/setupMcp.ts +238 -127
- package/src/capabilities/setup/operations/setupSkills.ts +667 -105
- package/src/capabilities/setup/plan.render.ts +336 -0
- package/src/capabilities/setup/plan.ts +241 -0
- package/src/capabilities/setup/setup.mcp.correctness.test.ts +432 -0
- package/src/capabilities/setup/setup.render.test.ts +297 -75
- package/src/capabilities/setup/setup.render.ts +45 -77
- package/src/capabilities/setup/setup.test.ts +1819 -225
- package/src/capabilities/setup/setup.verb.ts +288 -78
- package/src/capabilities/setup/shell.test.ts +86 -0
- package/src/capabilities/setup/shell.ts +137 -11
- package/src/capabilities/setup/targets.ts +435 -0
- package/src/capabilities/setup/types.ts +23 -70
- package/src/capabilities/shared/assertExecOk.ts +68 -10
- package/src/capabilities/shared/index.ts +43 -0
- package/src/capabilities/shared/packageManager.test.ts +470 -0
- package/src/capabilities/shared/packageManager.ts +425 -34
- package/src/capabilities/skill/bundledSkills.test.ts +347 -0
- package/src/capabilities/skill/discover.ts +131 -10
- package/src/capabilities/skill/index.ts +1 -1
- package/src/capabilities/skill/render.ts +10 -9
- package/src/capabilities/skill/skill.test.ts +22 -7
- package/src/capabilities/skill/verbs.ts +3 -4
- package/src/capabilities/sources/collectStatus.ts +7 -2
- package/src/capabilities/sources/index.ts +1 -1
- package/src/capabilities/sources/installSkills.ts +265 -10
- package/src/capabilities/sources/runUpdate.ts +131 -23
- package/src/capabilities/sources/sources.test.ts +382 -2
- package/src/capabilities/sources/status.render.ts +1 -1
- package/src/capabilities/sources/status.verb.ts +1 -1
- package/src/capabilities/sources/update.render.ts +1 -1
- package/src/capabilities/sources/update.verb.ts +4 -4
- package/src/capabilities/surface.test.ts +136 -19
- package/src/capabilities/upgrade/runUpgrade.ts +53 -14
- package/src/capabilities/upgrade/types.ts +10 -2
- package/src/capabilities/upgrade/upgrade.render.ts +13 -7
- package/src/capabilities/upgrade/upgrade.test.ts +75 -3
- package/src/capabilities/upgrade/upgrade.verb.ts +1 -1
- package/src/capabilities/version/index.ts +12 -0
- package/src/capabilities/version/version.test.ts +66 -0
- package/src/capabilities/version/version.verb.ts +39 -0
- package/src/constants.ts +36 -1
- package/src/identity.test.ts +57 -29
- package/src/kernel/completion/__snapshots__/emitScripts.test.ts.snap +15 -13
- package/src/kernel/completion/complete.test.ts +12 -2
- package/src/kernel/completion/complete.ts +1 -1
- package/src/kernel/completion/emitScripts.ts +1 -1
- package/src/kernel/completion/entitySource.test.ts +16 -3
- package/src/kernel/completion/entitySource.ts +21 -8
- package/src/kernel/completion/model.test.ts +164 -12
- package/src/kernel/completion/model.ts +94 -14
- package/src/kernel/completion/parse.test.ts +4 -7
- package/src/kernel/completion/parse.ts +15 -0
- package/src/kernel/completion/resolve.test.ts +0 -1
- package/src/kernel/completion/safety.test.ts +50 -35
- package/src/kernel/completion/shellDrive.test.ts +28 -9
- package/src/kernel/completion/templates/bash.ts +7 -2
- package/src/kernel/completion/templates/index.ts +23 -0
- package/src/kernel/completion/types.ts +7 -0
- package/src/kernel/config/defaults.test.ts +27 -3
- package/src/kernel/config/defaults.ts +4 -3
- package/src/kernel/config/evaluateProjectConfig.ts +31 -8
- package/src/kernel/config/firstRun.test.ts +44 -38
- package/src/kernel/config/firstRun.ts +24 -88
- package/src/kernel/config/index.ts +1 -1
- package/src/kernel/config/readConfig.test.ts +6 -3
- package/src/kernel/config/readConfig.ts +1 -1
- package/src/kernel/config/schema.ts +3 -1
- package/src/kernel/config/types.ts +3 -1
- package/src/kernel/copy.test.ts +34 -4
- package/src/kernel/copy.ts +54 -0
- package/src/kernel/error/PragmaError.test.ts +5 -2
- package/src/kernel/error/PragmaError.ts +4 -2
- package/src/kernel/error/constants.ts +7 -5
- package/src/kernel/error/fromTaskError.ts +28 -6
- package/src/kernel/error/recovery.ts +14 -0
- package/src/kernel/error/renderError.ts +42 -1
- package/src/kernel/error/types.ts +21 -1
- package/src/kernel/index.ts +35 -0
- package/src/kernel/interactivity.test.ts +76 -0
- package/src/kernel/interactivity.ts +69 -0
- package/src/kernel/packs/collect.ts +12 -16
- package/src/kernel/packs/compile.test.ts +222 -1
- package/src/kernel/packs/compile.ts +93 -3
- package/src/kernel/packs/disclosure.ts +2 -2
- package/src/kernel/packs/graphql/buildLookupDocument.ts +1 -1
- package/src/kernel/packs/graphql/fetchGraphqlLookup.ts +3 -4
- package/src/kernel/packs/graphql/index.ts +20 -0
- package/src/kernel/packs/index.ts +40 -0
- package/src/kernel/packs/iri.test.ts +73 -0
- package/src/kernel/packs/iri.ts +66 -14
- package/src/kernel/packs/renderPack.ts +25 -6
- package/src/kernel/packs/resolveEntity.test.ts +274 -0
- package/src/kernel/packs/resolveEntity.ts +200 -42
- package/src/kernel/packs/runBodies.ts +86 -22
- package/src/kernel/packs/sample.ts +1 -1
- package/src/kernel/packs/schema.ts +78 -5
- package/src/kernel/packs/sparql/applyFilters.ts +136 -16
- package/src/kernel/packs/sparql/buildLookupQuery.test.ts +290 -0
- package/src/kernel/packs/sparql/buildLookupQuery.ts +367 -17
- package/src/kernel/packs/sparql/index.ts +37 -0
- package/src/kernel/packs/sparql/runSelect.test.ts +1 -1
- package/src/kernel/packs/sparql/runSelect.ts +3 -4
- package/src/kernel/packs/toolDescription.test.ts +77 -4
- package/src/kernel/packs/types.ts +136 -0
- package/src/kernel/packs/uniqueness.ts +1 -1
- package/src/kernel/project/cli/buildProgram.test.ts +218 -12
- package/src/kernel/project/cli/buildProgram.ts +84 -18
- package/src/kernel/project/cli/constants.ts +34 -0
- package/src/kernel/project/cli/dispatch.test.ts +160 -2
- package/src/kernel/project/cli/dispatch.ts +226 -45
- package/src/kernel/project/cli/exitCodes.ts +1 -1
- package/src/kernel/project/cli/globalFlags.test.ts +117 -1
- package/src/kernel/project/cli/globalFlags.ts +134 -31
- package/src/kernel/project/cli/helpFormat.ts +14 -2
- package/src/kernel/project/cli/rootHelp.ts +74 -12
- package/src/kernel/project/cli/suggest.test.ts +33 -1
- package/src/kernel/project/cli/suggest.ts +25 -1
- package/src/kernel/project/cli/verbHelp.test.ts +30 -0
- package/src/kernel/project/cli/verbHelp.ts +23 -7
- package/src/kernel/project/mcp/buildServer.ts +7 -4
- package/src/kernel/project/mcp/envelope.ts +2 -2
- package/src/kernel/project/mcp/instructions.ts +2 -2
- package/src/kernel/project/mcp/mcpError.ts +1 -1
- package/src/kernel/project/mcp/parity.test.ts +5 -2
- package/src/kernel/project/mcp/prompts/index.ts +37 -0
- package/src/kernel/project/mcp/prompts/source.ts +2 -2
- package/src/kernel/project/mcp/registerVerb.ts +55 -10
- package/src/kernel/project/mcp/serve.ts +2 -2
- package/src/kernel/render/__snapshots__/renderers.test.ts.snap +7 -4
- package/src/kernel/render/contracts.ts +21 -0
- package/src/kernel/render/envelope.ts +2 -3
- package/src/kernel/render/formatters.ts +1 -1
- package/src/kernel/render/renderers.test.ts +243 -6
- package/src/kernel/render/renderers.ts +222 -20
- package/src/kernel/render/style.test.ts +75 -24
- package/src/kernel/render/style.ts +59 -6
- package/src/kernel/render/turtle.ts +222 -0
- package/src/kernel/render/vocabulary.ts +276 -0
- package/src/kernel/runtime/graphpack/buildIndex.ts +1 -1
- package/src/kernel/runtime/graphpack/embedded/pack.generated.ts +3 -3
- package/src/kernel/runtime/graphpack/embedded/pack.index.generated.ts +1 -1
- package/src/kernel/runtime/graphpack/embedded.ts +3 -3
- package/src/kernel/runtime/graphpack/manifest.ts +1 -1
- package/src/kernel/runtime/graphpack/read.ts +1 -2
- package/src/kernel/runtime/loadSession.ts +1 -1
- package/src/kernel/runtime/probe.ts +6 -6
- package/src/kernel/runtime/readEntity.ts +472 -28
- package/src/kernel/runtime/refs/index.ts +39 -0
- package/src/kernel/runtime/refs/parseRef.ts +2 -2
- package/src/kernel/runtime/refs/resolve.ts +4 -4
- package/src/kernel/runtime/storeReadiness.ts +1 -2
- package/src/kernel/runtime/types.ts +15 -1
- package/src/kernel/runtime/wasmEmbed.test.ts +37 -39
- package/src/kernel/spec/emitReference.ts +105 -30
- package/src/kernel/spec/emitSurface.ts +48 -6
- package/src/kernel/spec/surfaceConformance.test.ts +4 -2
- package/src/kernel/spec/types.ts +277 -4
- package/src/testing/PARITY_GAPS.ts +9 -3
- package/src/testing/behavioral/docExamples.test.ts +16 -0
- package/src/testing/behavioral/errorMatrix.mcp.test.ts +112 -9
- package/src/testing/behavioral/firstRun.e2e.test.ts +24 -24
- package/src/testing/behavioral/journeys.cli.test.ts +1 -1
- package/src/testing/behavioral/journeys.defaultPack.test.ts +7 -7
- package/src/testing/behavioral/journeys.firstInstall.test.ts +7 -2
- package/src/testing/behavioral/journeys.implementation.test.ts +206 -0
- package/src/testing/behavioral/journeys.interactiveTty.e2e.test.ts +2 -2
- package/src/testing/behavioral/journeys.packageStories.test.ts +10 -7
- package/src/testing/behavioral/mcpServe.e2e.test.ts +57 -2
- package/src/testing/behavioral/mcpSurface.test.ts +1 -1
- package/src/testing/behavioral/rootCli.e2e.test.ts +26 -2
- package/src/testing/eval/__snapshots__/eval.test.ts.snap +26 -1
- package/src/testing/eval/cases/effectful.ts +3 -2
- package/src/testing/eval/cases/readNouns.ts +245 -9
- package/src/testing/fixtures/blockGraph.ts +104 -10
- package/src/testing/fixtures/graph/canonical.ts +182 -13
- package/src/testing/fixtures/graph/defaultPack.ts +1 -1
- package/src/testing/helpers/blankCanonicalRanges.ts +36 -0
- package/src/testing/helpers/projectMcp.ts +32 -6
- package/src/testing/helpers/runCli.ts +35 -18
- package/src/testing/perf/budgets.test.ts +20 -9
- package/src/testing/perf/budgets.ts +58 -9
- package/src/testing/perf/codegen.test.ts +126 -0
- package/src/testing/perf/globalSetup.test.ts +286 -0
- package/src/testing/perf/globalSetup.ts +505 -23
- package/src/testing/perf/measure.test.ts +38 -0
- package/src/testing/perf/measure.ts +23 -4
- package/src/testing/setupXdgIsolation.ts +81 -21
- package/src/testing/tempRoot.globalSetup.ts +122 -0
- package/dist/pragma +0 -0
- package/src/capabilities/create/compiledCreate.subprocess.test.ts +0 -189
- package/src/capabilities/create/templates.embedded.generated.ts +0 -28
- package/src/capabilities/doctor/checks/checkConfigFile.ts +0 -42
- package/src/capabilities/doctor/checks/checkMcpCommands.ts +0 -114
- package/src/capabilities/doctor/checks/checkMcpConfigured.ts +0 -68
- package/src/capabilities/doctor/checks/checkSkillsSymlinked.ts +0 -61
- package/src/capabilities/doctor/checks/deriveBand.test.ts +0 -42
- package/src/capabilities/doctor/checks/deriveBand.ts +0 -28
- package/src/capabilities/shared/bands.ts +0 -16
- package/src/kernel/config/__snapshots__/firstRun.test.ts.snap +0 -11
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate the ONE GraphQL document a `source: "graphql"` pack lookup executes
|
|
3
|
+
* after its SPARQL name→URI resolve.
|
|
4
|
+
*
|
|
5
|
+
* The compiler — not the pack author — writes the GraphQL: pack declarations
|
|
6
|
+
* name RDF properties, and this module maps each onto the OWL-derived schema
|
|
7
|
+
* using the same naming rules the ke-graphql compiler applied (strip `has`/`is`,
|
|
8
|
+
* pluralize for multi-valued fields — see {@link ./nameMap}).
|
|
9
|
+
*
|
|
10
|
+
* Missing-name semantics mirror the SPARQL path's OPTIONAL clauses: a DERIVED
|
|
11
|
+
* name that maps onto no schema field anywhere simply drops out of the document
|
|
12
|
+
* (ontology drift degrades to emptiness, not failure). An EXPLICIT `graphqlField`
|
|
13
|
+
* override that names no field is a fail-fast error, as are cardinality
|
|
14
|
+
* mismatches. A property on only some concrete classes under an interface
|
|
15
|
+
* fragment resolves through subtype-scoped `... on <Subtype>` fragments.
|
|
16
|
+
*
|
|
17
|
+
* Injection safety: the document text is composed ONLY from validated pack terms
|
|
18
|
+
* and names read from the compiled schema; the entity IRI travels via
|
|
19
|
+
* `variableValues.uri`, never string interpolation.
|
|
20
|
+
*
|
|
21
|
+
* Ported from #856; retargeted onto graphql-js `GraphQLSchema` (referenced as an
|
|
22
|
+
* inline type — this module has no runtime `graphql`/`ke-graphql` import, so it
|
|
23
|
+
* stays off the storeless fast path).
|
|
24
|
+
*/
|
|
25
|
+
import { PragmaError } from "../../error/index.js";
|
|
26
|
+
import { activeExpands, activeFields } from "./../sparql/buildLookupQuery.js";
|
|
27
|
+
import { isNestedExpand } from "../types.js";
|
|
28
|
+
import { MAX_PAGE_SIZE, pluralize, stripVerbPrefix } from "./nameMap.js";
|
|
29
|
+
/** Local name of an IRI (`…#Thing`/`…/Thing` → `Thing`). */
|
|
30
|
+
function extractLocalName(uri) {
|
|
31
|
+
const hash = uri.lastIndexOf("#");
|
|
32
|
+
if (hash !== -1)
|
|
33
|
+
return uri.slice(hash + 1);
|
|
34
|
+
const slash = uri.lastIndexOf("/");
|
|
35
|
+
if (slash !== -1)
|
|
36
|
+
return uri.slice(slash + 1);
|
|
37
|
+
return uri;
|
|
38
|
+
}
|
|
39
|
+
/** Does a schema type expose fields (object or interface)? */
|
|
40
|
+
function isComposite(type) {
|
|
41
|
+
return (typeof type === "object" &&
|
|
42
|
+
type !== null &&
|
|
43
|
+
"getFields" in type &&
|
|
44
|
+
typeof type.getFields === "function");
|
|
45
|
+
}
|
|
46
|
+
/** Unwrap NonNull/List wrappers to the named type underneath. */
|
|
47
|
+
function namedType(type) {
|
|
48
|
+
let current = type;
|
|
49
|
+
while (typeof current === "object" &&
|
|
50
|
+
current !== null &&
|
|
51
|
+
"ofType" in current &&
|
|
52
|
+
current.ofType) {
|
|
53
|
+
current = current.ofType;
|
|
54
|
+
}
|
|
55
|
+
return current;
|
|
56
|
+
}
|
|
57
|
+
/** Is the field type a GraphQL list? Detected from the type's string form. */
|
|
58
|
+
function isListType(type) {
|
|
59
|
+
return String(type).includes("[");
|
|
60
|
+
}
|
|
61
|
+
/** Is the named type a generated Relay connection envelope? */
|
|
62
|
+
function isConnection(type) {
|
|
63
|
+
return (isComposite(type) &&
|
|
64
|
+
type.name.endsWith("Connection") &&
|
|
65
|
+
"edges" in type.getFields());
|
|
66
|
+
}
|
|
67
|
+
/** Local name of a validated pack term (`ds:Component` → `Component`). */
|
|
68
|
+
function termLocalName(term) {
|
|
69
|
+
if (term.includes("://"))
|
|
70
|
+
return extractLocalName(term);
|
|
71
|
+
const colon = term.indexOf(":");
|
|
72
|
+
return colon === -1 ? term : term.slice(colon + 1);
|
|
73
|
+
}
|
|
74
|
+
function buildDocumentError(source, message) {
|
|
75
|
+
return PragmaError.configError(`Invalid story in ${source}: ${message}`);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Resolve a pack term to the GraphQL field it maps to on a container type. With
|
|
79
|
+
* an explicit `graphqlField` the name is only checked for existence (a miss
|
|
80
|
+
* throws). Otherwise the derivation applies; a derived miss returns `undefined`.
|
|
81
|
+
*/
|
|
82
|
+
function resolveGraphqlField(container, term, override, preferPlural, where, source) {
|
|
83
|
+
const fields = container.getFields();
|
|
84
|
+
if (override) {
|
|
85
|
+
const match = fields[override];
|
|
86
|
+
if (!match) {
|
|
87
|
+
throw buildDocumentError(source, `"${where}.graphqlField" "${override}" is not a field of GraphQL type "${container.name}".`);
|
|
88
|
+
}
|
|
89
|
+
return { fieldName: override, type: match.type };
|
|
90
|
+
}
|
|
91
|
+
if (term.includes("/") && !term.includes("://")) {
|
|
92
|
+
throw buildDocumentError(source, `"${where}" uses a property path ("${term}"), which the GraphQL source cannot express — set "graphqlField" or use source "sparql".`);
|
|
93
|
+
}
|
|
94
|
+
const base = stripVerbPrefix(termLocalName(term));
|
|
95
|
+
const forms = preferPlural
|
|
96
|
+
? [pluralize(base), base]
|
|
97
|
+
: [base, pluralize(base)];
|
|
98
|
+
for (const candidate of [...new Set(forms)]) {
|
|
99
|
+
const match = fields[candidate];
|
|
100
|
+
if (match)
|
|
101
|
+
return { fieldName: candidate, type: match.type };
|
|
102
|
+
}
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
/** Alias a selection only when the output name differs from the field. */
|
|
106
|
+
function aliased(name, fieldName) {
|
|
107
|
+
return name === fieldName ? name : `${name}: ${fieldName}`;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Build the selection for one flat value (field or section): scalars select
|
|
111
|
+
* bare, singular entity references select `{ uri }`. Multi-valued fields are
|
|
112
|
+
* rejected. `undefined` when the derived name maps onto no field.
|
|
113
|
+
*/
|
|
114
|
+
function buildValueSelection(container, value, where, source) {
|
|
115
|
+
const resolved = resolveGraphqlField(container, value.property, value.graphqlField, false, where, source);
|
|
116
|
+
if (!resolved)
|
|
117
|
+
return undefined;
|
|
118
|
+
const { fieldName, type } = resolved;
|
|
119
|
+
const named = namedType(type);
|
|
120
|
+
if (isConnection(named) || isListType(type)) {
|
|
121
|
+
throw buildDocumentError(source, `"${where}" property "${value.property}" resolves to multi-valued GraphQL field "${container.name}.${fieldName}" — declare it as an expand.`);
|
|
122
|
+
}
|
|
123
|
+
if (isComposite(named)) {
|
|
124
|
+
return {
|
|
125
|
+
text: `${aliased(value.name, fieldName)} { uri }`,
|
|
126
|
+
projection: { kind: "entity", name: value.name },
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
if (fieldName === "uri") {
|
|
130
|
+
return {
|
|
131
|
+
text: aliased(value.name, fieldName),
|
|
132
|
+
projection: { kind: "iri", name: value.name },
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
return {
|
|
136
|
+
text: aliased(value.name, fieldName),
|
|
137
|
+
projection: { kind: "scalar", name: value.name },
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Build the selection for a multi-valued projection (an expand or nested
|
|
142
|
+
* expand): Relay connections select through `edges { node }`; embedded lists
|
|
143
|
+
* select children directly. `undefined` when the relation maps onto no field or
|
|
144
|
+
* every child selection was omitted.
|
|
145
|
+
*/
|
|
146
|
+
function buildCollectionSelection(container, expand, where, source) {
|
|
147
|
+
const resolved = resolveGraphqlField(container, expand.relation, expand.graphqlField, true, where, source);
|
|
148
|
+
if (!resolved)
|
|
149
|
+
return undefined;
|
|
150
|
+
const { fieldName, type } = resolved;
|
|
151
|
+
const named = namedType(type);
|
|
152
|
+
const connection = isConnection(named);
|
|
153
|
+
if (!connection && !isListType(type)) {
|
|
154
|
+
throw buildDocumentError(source, `"${where}" relation "${expand.relation}" resolves to singular GraphQL field "${container.name}.${fieldName}" — declare it as a field.`);
|
|
155
|
+
}
|
|
156
|
+
const childType = connection
|
|
157
|
+
? namedType(named.getFields().edges?.type)
|
|
158
|
+
: named;
|
|
159
|
+
const nodeType = connection && isComposite(childType)
|
|
160
|
+
? namedType(childType.getFields().node?.type)
|
|
161
|
+
: childType;
|
|
162
|
+
if (!isComposite(nodeType)) {
|
|
163
|
+
throw buildDocumentError(source, `"${where}" relation "${expand.relation}" resolves to a list of scalars on "${container.name}" — declare it as a field or fix the relation.`);
|
|
164
|
+
}
|
|
165
|
+
const children = expand.select
|
|
166
|
+
.map((entry, index) => {
|
|
167
|
+
const childWhere = `${where}.select[${index}]`;
|
|
168
|
+
if (isNestedExpand(entry)) {
|
|
169
|
+
return buildCollectionSelection(nodeType, entry, childWhere, source);
|
|
170
|
+
}
|
|
171
|
+
return buildValueSelection(nodeType, entry, childWhere, source);
|
|
172
|
+
})
|
|
173
|
+
.filter((child) => child !== undefined);
|
|
174
|
+
if (children.length === 0)
|
|
175
|
+
return undefined;
|
|
176
|
+
const childText = children.map((child) => child.text).join(" ");
|
|
177
|
+
const body = connection
|
|
178
|
+
? `(first: ${MAX_PAGE_SIZE}) { edges { node { ${childText} } } }`
|
|
179
|
+
: ` { ${childText} }`;
|
|
180
|
+
return {
|
|
181
|
+
text: `${aliased(expand.name, fieldName)}${body}`,
|
|
182
|
+
projection: {
|
|
183
|
+
kind: "collection",
|
|
184
|
+
name: expand.name,
|
|
185
|
+
connection,
|
|
186
|
+
children: children.map((child) => child.projection),
|
|
187
|
+
},
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
/** The concrete object types under an interface fragment (empty for object types). */
|
|
191
|
+
function possibleSubtypes(schema, fragmentType) {
|
|
192
|
+
const lookup = schema.getPossibleTypes;
|
|
193
|
+
return lookup.call(schema, fragmentType).filter(isComposite);
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Build one top-level selection, falling back to subtype scoping: a term that
|
|
197
|
+
* does not resolve on the fragment type is tried on each concrete class under it
|
|
198
|
+
* and selected inside `... on <Subtype>` fragments. `undefined` when the term
|
|
199
|
+
* resolves nowhere (omitted, mirroring an unbound OPTIONAL).
|
|
200
|
+
*/
|
|
201
|
+
function buildScopedSelection(schema, fragmentType, build) {
|
|
202
|
+
const direct = build(fragmentType);
|
|
203
|
+
if (direct)
|
|
204
|
+
return direct;
|
|
205
|
+
const scoped = possibleSubtypes(schema, fragmentType)
|
|
206
|
+
.map((subtype) => {
|
|
207
|
+
const selection = build(subtype);
|
|
208
|
+
return selection === undefined
|
|
209
|
+
? undefined
|
|
210
|
+
: {
|
|
211
|
+
...selection,
|
|
212
|
+
text: `... on ${subtype.name} { ${selection.text} }`,
|
|
213
|
+
};
|
|
214
|
+
})
|
|
215
|
+
.filter((selection) => selection !== undefined);
|
|
216
|
+
if (scoped.length === 0)
|
|
217
|
+
return undefined;
|
|
218
|
+
return {
|
|
219
|
+
text: scoped.map((selection) => selection.text).join(" "),
|
|
220
|
+
projection: scoped[0].projection,
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Generate the lookup document for a pack lookup at a canonical level.
|
|
225
|
+
*
|
|
226
|
+
* @param lookup - A validated graphql-sourced lookup declaration.
|
|
227
|
+
* @param schema - The runtime's compiled OWL-derived schema.
|
|
228
|
+
* @param source - Pack source, for error attribution.
|
|
229
|
+
* @param level - Active canonical level (undefined: everything included).
|
|
230
|
+
* @returns The document text and its unwrap plan.
|
|
231
|
+
* @throws PragmaError CONFIG_ERROR when a declaration does not map onto the schema.
|
|
232
|
+
*/
|
|
233
|
+
export function buildLookupDocument(lookup, schema, source, level) {
|
|
234
|
+
const typeName = lookup.graphqlType ?? termLocalName(lookup.type ?? "");
|
|
235
|
+
const fragmentType = schema.getType(typeName);
|
|
236
|
+
if (!isComposite(fragmentType)) {
|
|
237
|
+
throw buildDocumentError(source, `lookup.graphqlType "${typeName}" is not an object or interface type in the compiled GraphQL schema.`);
|
|
238
|
+
}
|
|
239
|
+
const selections = [
|
|
240
|
+
...activeFields(lookup, level).map((field, index) => buildScopedSelection(schema, fragmentType, (container) => buildValueSelection(container, field, `lookup.fields/sections[${index}]`, source))),
|
|
241
|
+
...activeExpands(lookup, level).map((expand, index) => buildScopedSelection(schema, fragmentType, (container) => buildCollectionSelection(container, expand, `lookup.expand[${index}]`, source))),
|
|
242
|
+
].filter((selection) => selection !== undefined);
|
|
243
|
+
const body = selections.map((selection) => ` ${selection.text}`);
|
|
244
|
+
const text = [
|
|
245
|
+
"query PackLookup($uri: ID!) {",
|
|
246
|
+
" node(id: $uri) {",
|
|
247
|
+
` ... on ${fragmentType.name} {`,
|
|
248
|
+
...(body.length > 0 ? body : [" uri"]),
|
|
249
|
+
" }",
|
|
250
|
+
" }",
|
|
251
|
+
"}",
|
|
252
|
+
].join("\n");
|
|
253
|
+
return {
|
|
254
|
+
source: text,
|
|
255
|
+
projections: selections.map((selection) => selection.projection),
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
//# sourceMappingURL=buildLookupDocument.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildLookupDocument.js","sourceRoot":"","sources":["../../../../../src/kernel/packs/graphql/buildLookupDocument.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Execute a `source: "graphql"` pack lookup's generated document and unwrap the
|
|
3
|
+
* result to the flat pack entity shape.
|
|
4
|
+
*
|
|
5
|
+
* Retargeted onto the PR2 facade: the compiled schema comes from the booted
|
|
6
|
+
* `StoreSession` (`rt.store.get()`), and the document runs through
|
|
7
|
+
* `rt.query.graphql` (ke-graphql's in-process `executeLocal` — no server, no
|
|
8
|
+
* HTTP). Relay envelopes are unwrapped here (connections → arrays, entity
|
|
9
|
+
* references → IRI strings, prefixed URIs → full IRIs), so the resolved entity
|
|
10
|
+
* is shape-identical to the SPARQL path.
|
|
11
|
+
*
|
|
12
|
+
* Injection safety: the resolved entity IRI enters execution EXCLUSIVELY via
|
|
13
|
+
* `variableValues.uri` — never interpolated into the document text, which is
|
|
14
|
+
* composed only from validated pack terms and compiled schema names.
|
|
15
|
+
*/
|
|
16
|
+
import { cliRecovery, PragmaError } from "../../error/index.js";
|
|
17
|
+
import { buildLookupDocument, } from "./buildLookupDocument.js";
|
|
18
|
+
/**
|
|
19
|
+
* @param rt - The runtime (lazy store + query facade).
|
|
20
|
+
* @param lookup - The validated lookup declaration.
|
|
21
|
+
* @param entityUri - IRI resolved by the SPARQL name→URI query (store output).
|
|
22
|
+
* @param entityName - The entity's canonical stored name.
|
|
23
|
+
* @param source - Pack source, for error attribution.
|
|
24
|
+
* @param prefixes - The runtime's merged prefix map (prefixed→full expansion).
|
|
25
|
+
* @param level - Active canonical level (gates fields/expands at fetch).
|
|
26
|
+
* @returns The unwrapped pack entity.
|
|
27
|
+
* @throws PragmaError STORE_UNAVAILABLE when execution reports errors,
|
|
28
|
+
* ENTITY_NOT_FOUND when a resolved IRI has no typed node in the schema.
|
|
29
|
+
* @note Impure — reads the compiled schema and queries the store.
|
|
30
|
+
*/
|
|
31
|
+
export async function fetchGraphqlLookup(rt, lookup, entityUri, entityName, source, prefixes, level) {
|
|
32
|
+
const session = await rt.store.get();
|
|
33
|
+
const plan = buildLookupDocument(lookup, session.schema, source, level);
|
|
34
|
+
const result = await rt.query.graphql(plan.source, { uri: entityUri });
|
|
35
|
+
if (result.errors && result.errors.length > 0) {
|
|
36
|
+
const messages = result.errors
|
|
37
|
+
.slice(0, 3)
|
|
38
|
+
.map((error) => error.message)
|
|
39
|
+
.join("; ");
|
|
40
|
+
throw PragmaError.storeUnavailable(`GraphQL lookup failed: ${messages}`, {
|
|
41
|
+
// `graph inspect` needs a <uri>; `ontology list` is runnable as-is.
|
|
42
|
+
recovery: cliRecovery("ontology list", "Check the loaded ontology and namespaces.", { tool: "ontology_list" }),
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
const node = result.data?.node;
|
|
46
|
+
if (node === null || node === undefined || typeof node !== "object") {
|
|
47
|
+
// The name→URI resolve DID find this IRI, so the store is available — the
|
|
48
|
+
// entity simply has no typed node (its rdf:type is missing from the loaded
|
|
49
|
+
// ontology). That is a runtime not-found, not an unavailable store (exit 3).
|
|
50
|
+
throw new PragmaError({
|
|
51
|
+
code: "ENTITY_NOT_FOUND",
|
|
52
|
+
message: `Cannot resolve <${entityUri}> — its rdf:type may be missing from the ontology.`,
|
|
53
|
+
recovery: cliRecovery(`graph inspect ${entityUri}`, "Inspect the entity's triples to check its rdf:type."),
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
const entity = { uri: entityUri, name: entityName };
|
|
57
|
+
const record = node;
|
|
58
|
+
for (const projection of plan.projections) {
|
|
59
|
+
const value = unwrapProjection(record[projection.name], projection, prefixes);
|
|
60
|
+
if (value !== undefined)
|
|
61
|
+
entity[projection.name] = value;
|
|
62
|
+
}
|
|
63
|
+
return entity;
|
|
64
|
+
}
|
|
65
|
+
/** Unwrap one projected key to the flat pack shape (absent → omitted). */
|
|
66
|
+
function unwrapProjection(value, projection, prefixes) {
|
|
67
|
+
switch (projection.kind) {
|
|
68
|
+
case "scalar":
|
|
69
|
+
return value === null || value === undefined ? undefined : String(value);
|
|
70
|
+
case "iri":
|
|
71
|
+
return value === null || value === undefined
|
|
72
|
+
? undefined
|
|
73
|
+
: expandPrefixed(String(value), prefixes);
|
|
74
|
+
case "entity":
|
|
75
|
+
return unwrapEntityRef(value, prefixes);
|
|
76
|
+
case "collection": {
|
|
77
|
+
const nodes = collectionNodes(value, projection.connection);
|
|
78
|
+
return nodes.map((node) => unwrapChildRow(node, projection.children, prefixes));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/** Unwrap `{ uri }` to the full IRI string (the identity field is prefixed). */
|
|
83
|
+
function unwrapEntityRef(value, prefixes) {
|
|
84
|
+
const uri = value?.uri;
|
|
85
|
+
return typeof uri === "string" ? expandPrefixed(uri, prefixes) : undefined;
|
|
86
|
+
}
|
|
87
|
+
/** Strip the Relay envelope (or pass a plain list through) to node records. */
|
|
88
|
+
function collectionNodes(value, connection) {
|
|
89
|
+
if (connection) {
|
|
90
|
+
const edges = value?.edges;
|
|
91
|
+
if (!Array.isArray(edges))
|
|
92
|
+
return [];
|
|
93
|
+
return edges
|
|
94
|
+
.map((edge) => edge.node)
|
|
95
|
+
.filter((node) => typeof node === "object" && node !== null);
|
|
96
|
+
}
|
|
97
|
+
if (!Array.isArray(value))
|
|
98
|
+
return [];
|
|
99
|
+
return value.filter((node) => typeof node === "object" && node !== null);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Unwrap one child row. A nested expand with a single scalar select collapses
|
|
103
|
+
* each grandchild to that value (so `values: ["Dense", "Comfortable"]`); a
|
|
104
|
+
* multi-field select keeps one record per grandchild.
|
|
105
|
+
*/
|
|
106
|
+
function unwrapChildRow(node, children, prefixes) {
|
|
107
|
+
const row = {};
|
|
108
|
+
for (const child of children) {
|
|
109
|
+
const value = node[child.name];
|
|
110
|
+
if (child.kind === "collection") {
|
|
111
|
+
const grandchildren = collectionNodes(value, child.connection);
|
|
112
|
+
const single = child.children.length === 1 && child.children[0]?.kind === "scalar"
|
|
113
|
+
? child.children[0]
|
|
114
|
+
: undefined;
|
|
115
|
+
row[child.name] = single
|
|
116
|
+
? grandchildren
|
|
117
|
+
.map((grandchild) => grandchild[single.name])
|
|
118
|
+
.filter((v) => v !== null && v !== undefined)
|
|
119
|
+
.map(String)
|
|
120
|
+
: grandchildren.map((grandchild) => {
|
|
121
|
+
const record = {};
|
|
122
|
+
for (const leaf of child.children) {
|
|
123
|
+
const leafValue = unwrapLeaf(grandchild[leaf.name], leaf, prefixes);
|
|
124
|
+
if (leafValue !== undefined)
|
|
125
|
+
record[leaf.name] = leafValue;
|
|
126
|
+
}
|
|
127
|
+
return record;
|
|
128
|
+
});
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
const unwrapped = unwrapLeaf(value, child, prefixes);
|
|
132
|
+
if (unwrapped !== undefined)
|
|
133
|
+
row[child.name] = unwrapped;
|
|
134
|
+
}
|
|
135
|
+
return row;
|
|
136
|
+
}
|
|
137
|
+
/** Unwrap one non-collection leaf value (entity refs and `uri` → full IRIs). */
|
|
138
|
+
function unwrapLeaf(value, leaf, prefixes) {
|
|
139
|
+
if (leaf.kind === "entity")
|
|
140
|
+
return unwrapEntityRef(value, prefixes);
|
|
141
|
+
if (value === null || value === undefined)
|
|
142
|
+
return undefined;
|
|
143
|
+
return leaf.kind === "iri"
|
|
144
|
+
? expandPrefixed(String(value), prefixes)
|
|
145
|
+
: String(value);
|
|
146
|
+
}
|
|
147
|
+
/** Expand a prefixed URI (`ds:global`) to its full IRI via the merged prefixes. */
|
|
148
|
+
function expandPrefixed(uri, prefixes) {
|
|
149
|
+
if (uri.includes("://"))
|
|
150
|
+
return uri;
|
|
151
|
+
const colon = uri.indexOf(":");
|
|
152
|
+
if (colon === -1)
|
|
153
|
+
return uri;
|
|
154
|
+
const namespace = prefixes[uri.slice(0, colon)];
|
|
155
|
+
return namespace ? `${namespace}${uri.slice(colon + 1)}` : uri;
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=fetchGraphqlLookup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchGraphqlLookup.js","sourceRoot":"","sources":["../../../../../src/kernel/packs/graphql/fetchGraphqlLookup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGhE,OAAO,EACL,mBAAmB,GAEpB,MAAM,0BAA0B,CAAC;AAElC;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,EAA0C,EAC1C,MAAkB,EAClB,SAAiB,EACjB,UAAkB,EAClB,MAAc,EACd,QAA0C,EAC1C,KAAc;IAEd,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAExE,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;IAEvE,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM;aAC3B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aACX,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;aAC7B,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,WAAW,CAAC,gBAAgB,CAAC,0BAA0B,QAAQ,EAAE,EAAE;YACvE,oEAAoE;YACpE,QAAQ,EAAE,WAAW,CACnB,eAAe,EACf,2CAA2C,EAC3C,EAAE,IAAI,EAAE,eAAe,EAAE,CAC1B;SACF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,IAAI,GAAI,MAAM,CAAC,IAA8C,EAAE,IAAI,CAAC;IAC1E,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACpE,0EAA0E;QAC1E,2EAA2E;QAC3E,6EAA6E;QAC7E,MAAM,IAAI,WAAW,CAAC;YACpB,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,mBAAmB,SAAS,oDAAoD;YACzF,QAAQ,EAAE,WAAW,CACnB,iBAAiB,SAAS,EAAE,EAC5B,qDAAqD,CACtD;SACF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAe,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAChE,MAAM,MAAM,GAAG,IAA+B,CAAC;IAC/C,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,gBAAgB,CAC5B,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EACvB,UAAU,EACV,QAAQ,CACT,CAAC;QACF,IAAI,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IAC3D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,0EAA0E;AAC1E,SAAS,gBAAgB,CACvB,KAAc,EACd,UAA2B,EAC3B,QAA0C;IAE1C,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;QACxB,KAAK,QAAQ;YACX,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3E,KAAK,KAAK;YACR,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;gBAC1C,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC9C,KAAK,QAAQ;YACX,OAAO,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC1C,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;YAC5D,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACxB,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CACpD,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,SAAS,eAAe,CACtB,KAAc,EACd,QAA0C;IAE1C,MAAM,GAAG,GAAI,KAA8C,EAAE,GAAG,CAAC;IACjE,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7E,CAAC;AAED,+EAA+E;AAC/E,SAAS,eAAe,CACtB,KAAc,EACd,UAAmB;IAEnB,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,KAAK,GAAI,KAAgD,EAAE,KAAK,CAAC;QACvE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACrC,OAAO,KAAK;aACT,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAE,IAA2B,CAAC,IAAI,CAAC;aAChD,MAAM,CACL,CAAC,IAAI,EAAmC,EAAE,CACxC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,CAC5C,CAAC;IACN,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACrC,OAAO,KAAK,CAAC,MAAM,CACjB,CAAC,IAAI,EAAmC,EAAE,CACxC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,CAC5C,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CACrB,IAA6B,EAC7B,QAAoC,EACpC,QAA0C;IAE1C,MAAM,GAAG,GAAiB,EAAE,CAAC;IAC7B,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAChC,MAAM,aAAa,GAAG,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YAC/D,MAAM,MAAM,GACV,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,QAAQ;gBACjE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACnB,CAAC,CAAC,SAAS,CAAC;YAChB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM;gBACtB,CAAC,CAAC,aAAa;qBACV,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;qBAC5C,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,CAAC;qBACzD,GAAG,CAAC,MAAM,CAAC;gBAChB,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;oBAC/B,MAAM,MAAM,GAA2B,EAAE,CAAC;oBAC1C,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;wBAClC,MAAM,SAAS,GAAG,UAAU,CAC1B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EACrB,IAAI,EACJ,QAAQ,CACT,CAAC;wBACF,IAAI,SAAS,KAAK,SAAS;4BAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;oBAC7D,CAAC;oBACD,OAAO,MAAM,CAAC;gBAChB,CAAC,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACrD,IAAI,SAAS,KAAK,SAAS;YAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;IAC3D,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,gFAAgF;AAChF,SAAS,UAAU,CACjB,KAAc,EACd,IAAqB,EACrB,QAA0C;IAE1C,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACpE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC5D,OAAO,IAAI,CAAC,IAAI,KAAK,KAAK;QACxB,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;QACzC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpB,CAAC;AAED,mFAAmF;AACnF,SAAS,cAAc,CACrB,GAAW,EACX,QAA0C;IAE1C,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IACpC,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,GAAG,CAAC;IAC7B,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAChD,OAAO,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AACjE,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The GraphQL lookup path — what a `source: "graphql"` pack story executes
|
|
3
|
+
* once SPARQL has resolved its name to an entity IRI.
|
|
4
|
+
*
|
|
5
|
+
* The three files here are one function split for testability, not three
|
|
6
|
+
* services: the naming rules derive schema field names from the RDF properties
|
|
7
|
+
* a pack declares, the document generator turns a lookup declaration plus
|
|
8
|
+
* those names into the single query to run, and the fetcher executes it and
|
|
9
|
+
* unwraps the Relay envelope into the same flat entity shape the SPARQL path
|
|
10
|
+
* produces. Only the last of those is something a caller does.
|
|
11
|
+
*
|
|
12
|
+
* So the barrel is one export, and the narrowness is the point. The document
|
|
13
|
+
* generator's contract is that the entity IRI travels as a query VARIABLE and
|
|
14
|
+
* never as interpolated text, and that a document is composed only from
|
|
15
|
+
* validated pack terms and compiled schema names. Handing out the generator on
|
|
16
|
+
* its own would hand out a way to build a document and execute it by some
|
|
17
|
+
* other route; handing out the fetcher hands out the guarantee with it.
|
|
18
|
+
*/
|
|
19
|
+
export { fetchGraphqlLookup } from "./fetchGraphqlLookup.js";
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/kernel/packs/graphql/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The GraphQL naming rules the pack document generator needs — ported verbatim
|
|
3
|
+
* from ke-graphql's internal `compiler/nameMap` (Pass 4). ke-graphql does not
|
|
4
|
+
* re-export these helpers from its public entry, so they are reimplemented here
|
|
5
|
+
* with the SAME logic to guarantee the derived field names match the names the
|
|
6
|
+
* compiler actually generated. Keeping the port faithful is load-bearing: a
|
|
7
|
+
* divergence would derive a field the schema does not expose.
|
|
8
|
+
*/
|
|
9
|
+
/** Irregular plurals the suffix rules cannot produce. */
|
|
10
|
+
const IRREGULAR_PLURALS = {
|
|
11
|
+
child: "children",
|
|
12
|
+
person: "people",
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Pluralize a camelCase field name (matching ke-graphql):
|
|
16
|
+
* a. irregulars (child → children), preserving a camelCase prefix
|
|
17
|
+
* b. already ends in 's' → unchanged
|
|
18
|
+
* c. consonant + 'y' → 'ies'
|
|
19
|
+
* d. x/z/ch/sh → '+es'
|
|
20
|
+
* e. default → '+s'
|
|
21
|
+
*/
|
|
22
|
+
export function pluralize(name) {
|
|
23
|
+
for (const [singular, plural] of Object.entries(IRREGULAR_PLURALS)) {
|
|
24
|
+
if (name.toLowerCase() === singular) {
|
|
25
|
+
return name[0] === name[0]?.toUpperCase()
|
|
26
|
+
? plural.charAt(0).toUpperCase() + plural.slice(1)
|
|
27
|
+
: plural;
|
|
28
|
+
}
|
|
29
|
+
const suffix = singular.charAt(0).toUpperCase() + singular.slice(1);
|
|
30
|
+
if (name.endsWith(suffix)) {
|
|
31
|
+
return (name.slice(0, -suffix.length) +
|
|
32
|
+
plural.charAt(0).toUpperCase() +
|
|
33
|
+
plural.slice(1));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
if (name.endsWith("s"))
|
|
37
|
+
return name;
|
|
38
|
+
if (/[^aeiou]y$/i.test(name))
|
|
39
|
+
return `${name.slice(0, -1)}ies`;
|
|
40
|
+
if (/(x|z|ch|sh)$/i.test(name))
|
|
41
|
+
return `${name}es`;
|
|
42
|
+
return `${name}s`;
|
|
43
|
+
}
|
|
44
|
+
/** Strip a leading `has`/`is` verb from a field name (matching ke-graphql). */
|
|
45
|
+
export function stripVerbPrefix(name) {
|
|
46
|
+
for (const prefix of ["has", "is"]) {
|
|
47
|
+
if (name.startsWith(prefix) &&
|
|
48
|
+
name.length > prefix.length &&
|
|
49
|
+
name[prefix.length] === name[prefix.length]?.toUpperCase()) {
|
|
50
|
+
const stripped = name.slice(prefix.length);
|
|
51
|
+
return stripped.charAt(0).toLowerCase() + stripped.slice(1);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return name;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* The schema's page-size clamp for Relay connections. ke-graphql's
|
|
58
|
+
* `MAX_PAGE_SIZE`; stated explicitly on generated connection selections to make
|
|
59
|
+
* the fetched window visible. The schema clamps regardless, so an inlined value
|
|
60
|
+
* only affects the stated bound, never correctness.
|
|
61
|
+
*/
|
|
62
|
+
export const MAX_PAGE_SIZE = 100;
|
|
63
|
+
//# sourceMappingURL=nameMap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nameMap.js","sourceRoot":"","sources":["../../../../../src/kernel/packs/graphql/nameMap.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,yDAAyD;AACzD,MAAM,iBAAiB,GAA2B;IAChD,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,QAAQ;CACjB,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACnE,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE;gBACvC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBAClD,CAAC,CAAC,MAAM,CAAC;QACb,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,OAAO,CACL,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;gBAC7B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;gBAC9B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAChB,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IAC/D,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,GAAG,IAAI,IAAI,CAAC;IACnD,OAAO,GAAG,IAAI,GAAG,CAAC;AACpB,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,KAAK,MAAM,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;QACnC,IACE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;YAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,EAC1D,CAAC;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC3C,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The packs domain — declared stories become runnable verbs.
|
|
3
|
+
*
|
|
4
|
+
* One pipeline runs end to end inside this folder: a JSON pack declaration is
|
|
5
|
+
* parsed and validated, compiled into `VerbSpec`s, and given run bodies that
|
|
6
|
+
* resolve entities out of the graph and formatters that render them. The
|
|
7
|
+
* intermediate stages — the schema parser, the query/render/run-body builders,
|
|
8
|
+
* the entity resolver, the sampler, the glob expander — are steps in that
|
|
9
|
+
* pipeline, not services, and they stay off this barrel: a caller reaching for
|
|
10
|
+
* one of them is a caller reassembling the pipeline by hand, and the whole
|
|
11
|
+
* point of compiling a pack once is that nobody has to.
|
|
12
|
+
*
|
|
13
|
+
* What crosses the boundary is the pipeline's ends and the contracts naming
|
|
14
|
+
* them. `compilePack` is the entry the distribution and the config-story path
|
|
15
|
+
* both take. `validateStories` and `loadEffectiveModules` are the two ways
|
|
16
|
+
* third-party stories are admitted — the first screens records and reports
|
|
17
|
+
* every problem (which is how `doctor` reports a story the CLI drops rather
|
|
18
|
+
* than letting it vanish), the second is the full load the MCP server and the
|
|
19
|
+
* `capabilities` verb take. `resolvePackDetail` and `resolveUri` are the two
|
|
20
|
+
* decisions a pack's own reads defer to the runtime, and `verbKey` is the
|
|
21
|
+
* identity function every surface keys a verb by.
|
|
22
|
+
*
|
|
23
|
+
* `loadEffectiveModules` reads config and the answering pack behind DYNAMIC
|
|
24
|
+
* imports so a bare `--help` never pays for either; consumers reach it lazily
|
|
25
|
+
* today for exactly that reason, and routing it through this barrel statically
|
|
26
|
+
* would put the config reader back on the fast path.
|
|
27
|
+
*/
|
|
28
|
+
export { loadEffectiveModules, validateStories } from "./collect.js";
|
|
29
|
+
export { compilePack } from "./compile.js";
|
|
30
|
+
export { resolvePackDetail } from "./disclosure.js";
|
|
31
|
+
export { resolveUri } from "./iri.js";
|
|
32
|
+
export { distributionSource } from "./types.js";
|
|
33
|
+
export { verbKey } from "./uniqueness.js";
|
|
34
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/kernel/packs/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAMtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC"}
|