@canonical/pragma-cli 0.36.0 → 0.38.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 +3 -2
- package/bundled-skills/adoption-a1-styles/SKILL.md +24 -0
- package/bundled-skills/adoption-a2-components/SKILL.md +22 -6
- package/bundled-skills/anatomy-author/ANATOMY_DSL_SPEC.md +1397 -327
- package/bundled-skills/anatomy-author/SKILL.md +840 -137
- package/bundled-skills/design-auditor/SKILL.md +133 -9
- package/bundled-skills/implement-component/SKILL.md +192 -23
- package/bundled-skills/specify-component/SKILL.md +124 -12
- package/bundled-skills/specify-pattern/SKILL.md +47 -8
- package/dist/package.json +23 -20
- package/dist/pragma.conf.js +963 -40
- package/dist/pragma.conf.js.map +1 -1
- package/dist/src/capabilities/capabilities/catalog.js +14 -5
- package/dist/src/capabilities/capabilities/catalog.js.map +1 -1
- package/dist/src/capabilities/capabilities/hints.js +33 -5
- package/dist/src/capabilities/capabilities/hints.js.map +1 -1
- package/dist/src/capabilities/config/show.render.js +30 -2
- package/dist/src/capabilities/config/show.render.js.map +1 -1
- package/dist/src/capabilities/create/create.verb.js +2 -1
- package/dist/src/capabilities/create/create.verb.js.map +1 -1
- package/dist/src/capabilities/create/createSurface.generated.js +23 -1
- package/dist/src/capabilities/create/createSurface.generated.js.map +1 -1
- package/dist/src/capabilities/doctor/checks/checkNodeVersion.js +11 -6
- package/dist/src/capabilities/doctor/checks/checkNodeVersion.js.map +1 -1
- package/dist/src/capabilities/doctor/checks/harnessInventory.js +1 -1
- package/dist/src/capabilities/doctor/checks/harnessInventory.js.map +1 -1
- package/dist/src/capabilities/doctor/checks/isSupportedNodeVersion.js +38 -0
- package/dist/src/capabilities/doctor/checks/isSupportedNodeVersion.js.map +1 -0
- package/dist/src/capabilities/doctor/checks/targetHealth.js +104 -14
- package/dist/src/capabilities/doctor/checks/targetHealth.js.map +1 -1
- package/dist/src/capabilities/graph/connect.render.js +101 -0
- package/dist/src/capabilities/graph/connect.render.js.map +1 -0
- package/dist/src/capabilities/graph/connect.types.js +21 -0
- package/dist/src/capabilities/graph/connect.types.js.map +1 -0
- package/dist/src/capabilities/graph/connect.verb.js +147 -0
- package/dist/src/capabilities/graph/connect.verb.js.map +1 -0
- package/dist/src/capabilities/graph/index.js +5 -3
- package/dist/src/capabilities/graph/index.js.map +1 -1
- package/dist/src/capabilities/graph/queryText.js +206 -0
- package/dist/src/capabilities/graph/queryText.js.map +1 -0
- package/dist/src/capabilities/graph/relationIndex.js +302 -0
- package/dist/src/capabilities/graph/relationIndex.js.map +1 -0
- package/dist/src/capabilities/graph/runConnect.js +456 -0
- package/dist/src/capabilities/graph/runConnect.js.map +1 -0
- package/dist/src/capabilities/graph/runQuery.js +21 -4
- package/dist/src/capabilities/graph/runQuery.js.map +1 -1
- package/dist/src/capabilities/setup/buildPlan.js +6 -2
- package/dist/src/capabilities/setup/buildPlan.js.map +1 -1
- package/dist/src/capabilities/setup/operations/index.js +7 -2
- package/dist/src/capabilities/setup/operations/index.js.map +1 -1
- package/dist/src/capabilities/setup/operations/setupCompletions.js +6 -2
- package/dist/src/capabilities/setup/operations/setupCompletions.js.map +1 -1
- package/dist/src/capabilities/setup/operations/setupConfig.js +4 -2
- package/dist/src/capabilities/setup/operations/setupConfig.js.map +1 -1
- package/dist/src/capabilities/setup/operations/setupGenerator.js +72 -14
- package/dist/src/capabilities/setup/operations/setupGenerator.js.map +1 -1
- package/dist/src/capabilities/setup/operations/setupLsp.js +372 -62
- package/dist/src/capabilities/setup/operations/setupLsp.js.map +1 -1
- package/dist/src/capabilities/setup/operations/setupMcp.js +150 -5
- package/dist/src/capabilities/setup/operations/setupMcp.js.map +1 -1
- package/dist/src/capabilities/setup/operations/setupSkills.js +4 -2
- package/dist/src/capabilities/setup/operations/setupSkills.js.map +1 -1
- package/dist/src/capabilities/setup/operations/writability.js +114 -0
- package/dist/src/capabilities/setup/operations/writability.js.map +1 -0
- package/dist/src/capabilities/setup/plan.js.map +1 -1
- package/dist/src/capabilities/setup/setup.verb.js +80 -31
- package/dist/src/capabilities/setup/setup.verb.js.map +1 -1
- package/dist/src/capabilities/setup/targets.js +124 -42
- package/dist/src/capabilities/setup/targets.js.map +1 -1
- package/dist/src/capabilities/shared/index.js +1 -1
- package/dist/src/capabilities/shared/index.js.map +1 -1
- package/dist/src/constants.js +7 -1
- package/dist/src/constants.js.map +1 -1
- package/dist/src/kernel/error/renderError.js +3 -2
- package/dist/src/kernel/error/renderError.js.map +1 -1
- package/dist/src/kernel/error/validOptions.js +41 -0
- package/dist/src/kernel/error/validOptions.js.map +1 -0
- package/dist/src/kernel/packs/compile.js +90 -6
- package/dist/src/kernel/packs/compile.js.map +1 -1
- package/dist/src/kernel/packs/cursor.js +135 -0
- package/dist/src/kernel/packs/cursor.js.map +1 -0
- package/dist/src/kernel/packs/graphql/buildLookupDocument.js +9 -2
- package/dist/src/kernel/packs/graphql/buildLookupDocument.js.map +1 -1
- package/dist/src/kernel/packs/paging.js +108 -0
- package/dist/src/kernel/packs/paging.js.map +1 -0
- package/dist/src/kernel/packs/renderPack.js +154 -5
- package/dist/src/kernel/packs/renderPack.js.map +1 -1
- package/dist/src/kernel/packs/resolveEntity.js +118 -19
- package/dist/src/kernel/packs/resolveEntity.js.map +1 -1
- package/dist/src/kernel/packs/runBodies.js +156 -18
- package/dist/src/kernel/packs/runBodies.js.map +1 -1
- package/dist/src/kernel/packs/schema.js +160 -12
- package/dist/src/kernel/packs/schema.js.map +1 -1
- package/dist/src/kernel/packs/sparql/authorQuery.js +227 -0
- package/dist/src/kernel/packs/sparql/authorQuery.js.map +1 -0
- package/dist/src/kernel/packs/sparql/buildListQuery.js +251 -0
- package/dist/src/kernel/packs/sparql/buildListQuery.js.map +1 -0
- package/dist/src/kernel/packs/sparql/buildLookupQuery.js +125 -22
- package/dist/src/kernel/packs/sparql/buildLookupQuery.js.map +1 -1
- package/dist/src/kernel/packs/sparql/filterValues.js +145 -0
- package/dist/src/kernel/packs/sparql/filterValues.js.map +1 -0
- package/dist/src/kernel/packs/sparql/index.js +24 -14
- package/dist/src/kernel/packs/sparql/index.js.map +1 -1
- package/dist/src/kernel/packs/sparql/runSelect.js +10 -4
- package/dist/src/kernel/packs/sparql/runSelect.js.map +1 -1
- package/dist/src/kernel/packs/sparql/searchTerm.js +25 -0
- package/dist/src/kernel/packs/sparql/searchTerm.js.map +1 -0
- package/dist/src/kernel/packs/storyRules.js +151 -0
- package/dist/src/kernel/packs/storyRules.js.map +1 -0
- package/dist/src/kernel/packs/tierScope.js +310 -0
- package/dist/src/kernel/packs/tierScope.js.map +1 -0
- package/dist/src/kernel/packs/types.js +80 -0
- package/dist/src/kernel/packs/types.js.map +1 -1
- package/dist/src/kernel/project/cli/buildProgram.js +10 -1
- package/dist/src/kernel/project/cli/buildProgram.js.map +1 -1
- package/dist/src/kernel/project/cli/dispatch.js +104 -3
- package/dist/src/kernel/project/cli/dispatch.js.map +1 -1
- package/dist/src/kernel/project/cli/rootHelp.js +8 -5
- package/dist/src/kernel/project/cli/rootHelp.js.map +1 -1
- package/dist/src/kernel/project/cli/suggestNames.js +31 -7
- package/dist/src/kernel/project/cli/suggestNames.js.map +1 -1
- package/dist/src/kernel/project/mcp/registerVerb.js +5 -1
- package/dist/src/kernel/project/mcp/registerVerb.js.map +1 -1
- package/dist/src/kernel/render/renderers.js +34 -2
- package/dist/src/kernel/render/renderers.js.map +1 -1
- package/dist/src/kernel/runtime/graphpack/embedded/pack.generated.js +2 -3
- package/dist/src/kernel/runtime/graphpack/embedded/pack.generated.js.map +1 -1
- package/dist/src/kernel/runtime/graphpack/embedded/pack.index.generated.js +1 -1
- package/dist/src/kernel/runtime/graphpack/embedded/pack.index.generated.js.map +1 -1
- package/dist/src/kernel/runtime/graphpack/embedded/pack.manifest.generated.js +4 -0
- package/dist/src/kernel/runtime/graphpack/embedded/pack.manifest.generated.js.map +1 -0
- package/dist/src/kernel/runtime/graphpack/embedded.js +13 -6
- package/dist/src/kernel/runtime/graphpack/embedded.js.map +1 -1
- package/dist/src/kernel/runtime/graphpack/read.js +17 -10
- package/dist/src/kernel/runtime/graphpack/read.js.map +1 -1
- package/dist/src/kernel/runtime/loadSession.js +3 -1
- package/dist/src/kernel/runtime/loadSession.js.map +1 -1
- package/dist/src/kernel/runtime/probe.js +1 -1
- package/dist/src/kernel/runtime/probe.js.map +1 -1
- package/dist/src/kernel/runtime/readEntity.js +19 -4
- package/dist/src/kernel/runtime/readEntity.js.map +1 -1
- package/dist/src/kernel/runtime/refs/parseRef.js +17 -1
- package/dist/src/kernel/runtime/refs/parseRef.js.map +1 -1
- package/dist/src/kernel/runtime/refs/resolve.js +38 -5
- package/dist/src/kernel/runtime/refs/resolve.js.map +1 -1
- package/dist/src/kernel/spec/emitReference.js +1 -1
- package/dist/src/kernel/spec/emitReference.js.map +1 -1
- package/package.json +23 -20
- package/pragma.conf.ts +983 -40
- package/src/capabilities/block.parity.test.ts +207 -27
- package/src/capabilities/block.shipped.exec.test.ts +156 -14
- package/src/capabilities/block.tierRank.exec.test.ts +46 -9
- package/src/capabilities/capabilities/catalog.ts +14 -5
- package/src/capabilities/capabilities/hints.ts +40 -5
- package/src/capabilities/config/collectConfigShow.test.ts +1 -0
- package/src/capabilities/config/set.test.ts +24 -25
- package/src/capabilities/config/show.render.test.ts +9 -4
- package/src/capabilities/config/show.render.ts +30 -2
- package/src/capabilities/create/byteEquality.test.ts +28 -1
- package/src/capabilities/create/create.test.ts +1 -0
- package/src/capabilities/create/create.verb.ts +2 -1
- package/src/capabilities/create/createGrammar.test.ts +4 -1
- package/src/capabilities/create/createSurface.generated.ts +23 -1
- package/src/capabilities/create/crossCli.subprocess.test.ts +10 -3
- package/src/capabilities/distribution.parity.test.ts +12 -11
- package/src/capabilities/distribution.test.ts +77 -7
- package/src/capabilities/doctor/checks/checkNodeVersion.test.ts +49 -0
- package/src/capabilities/doctor/checks/checkNodeVersion.ts +11 -7
- package/src/capabilities/doctor/checks/harnessInventory.test.ts +13 -6
- package/src/capabilities/doctor/checks/harnessInventory.ts +8 -4
- package/src/capabilities/doctor/checks/isSupportedNodeVersion.test.ts +111 -0
- package/src/capabilities/doctor/checks/isSupportedNodeVersion.ts +34 -0
- package/src/capabilities/doctor/checks/mcpCommand.test.ts +7 -1
- package/src/capabilities/doctor/checks/targetHealth.ts +114 -13
- package/src/capabilities/doctor/doctor.test.ts +327 -36
- package/src/capabilities/emptyRecovery.test.ts +84 -28
- package/src/capabilities/graph/connect.render.ts +141 -0
- package/src/capabilities/graph/connect.shipped.exec.test.ts +370 -0
- package/src/capabilities/graph/connect.test.ts +361 -0
- package/src/capabilities/graph/connect.types.ts +136 -0
- package/src/capabilities/graph/connect.verb.ts +165 -0
- package/src/capabilities/graph/index.ts +5 -3
- package/src/capabilities/graph/query.shipped.exec.test.ts +66 -0
- package/src/capabilities/graph/query.test.ts +17 -0
- package/src/capabilities/graph/queryText.test.ts +121 -0
- package/src/capabilities/graph/queryText.ts +240 -0
- package/src/capabilities/graph/relationIndex.ts +372 -0
- package/src/capabilities/graph/runConnect.ts +577 -0
- package/src/capabilities/graph/runQuery.ts +21 -6
- package/src/capabilities/lazy.test.ts +32 -2
- package/src/capabilities/listBudget.shipped.exec.test.ts +239 -0
- package/src/capabilities/listLookup.shipped.exec.test.ts +387 -0
- package/src/capabilities/listQuery.shipped.exec.test.ts +400 -0
- package/src/capabilities/resources/resources.test.ts +38 -2
- package/src/capabilities/setup/buildPlan.ts +7 -1
- package/src/capabilities/setup/operations/index.ts +14 -0
- package/src/capabilities/setup/operations/setupCompletions.ts +9 -2
- package/src/capabilities/setup/operations/setupConfig.ts +7 -2
- package/src/capabilities/setup/operations/setupGenerator.ts +93 -15
- package/src/capabilities/setup/operations/setupLsp.ts +544 -85
- package/src/capabilities/setup/operations/setupMcp.ts +212 -4
- package/src/capabilities/setup/operations/setupSkills.ts +7 -2
- package/src/capabilities/setup/operations/writability.test.ts +151 -0
- package/src/capabilities/setup/operations/writability.ts +135 -0
- package/src/capabilities/setup/plan.ts +11 -0
- package/src/capabilities/setup/setup.test.ts +992 -16
- package/src/capabilities/setup/setup.verb.ts +84 -36
- package/src/capabilities/setup/targets.ts +152 -48
- package/src/capabilities/setup/types.ts +41 -5
- package/src/capabilities/shared/index.ts +1 -0
- package/src/capabilities/sources/sources.test.ts +55 -0
- package/src/capabilities/surface.test.ts +59 -11
- package/src/capabilities/tier.parity.test.ts +2 -2
- package/src/capabilities/token.parity.test.ts +784 -0
- package/src/capabilities/tokenGraph.cli.test.ts +279 -0
- package/src/capabilities/tokenGraph.shipped.exec.test.ts +653 -0
- package/src/capabilities/variable.parity.test.ts +448 -0
- package/src/constants.ts +8 -0
- package/src/kernel/completion/shellDrive.test.ts +32 -30
- package/src/kernel/config/defaults.test.ts +21 -2
- package/src/kernel/config/readConfig.test.ts +1 -1
- package/src/kernel/error/renderError.ts +3 -2
- package/src/kernel/error/validOptions.test.ts +57 -0
- package/src/kernel/error/validOptions.ts +45 -0
- package/src/kernel/packs/collect.test.ts +2 -0
- package/src/kernel/packs/compile.test.ts +188 -15
- package/src/kernel/packs/compile.ts +109 -14
- package/src/kernel/packs/cursor.ts +135 -0
- package/src/kernel/packs/filteredEmpty.test.ts +213 -0
- package/src/kernel/packs/graphql/buildLookupDocument.ts +16 -9
- package/src/kernel/packs/graphqlSource.test.ts +152 -0
- package/src/kernel/packs/listNotice.test.ts +156 -0
- package/src/kernel/packs/paging.ts +110 -0
- package/src/kernel/packs/renderPack.ts +186 -13
- package/src/kernel/packs/resolveEntity.test.ts +62 -3
- package/src/kernel/packs/resolveEntity.ts +186 -26
- package/src/kernel/packs/runBodies.ts +196 -26
- package/src/kernel/packs/schema.ts +180 -13
- package/src/kernel/packs/sparql/authorQuery.test.ts +179 -0
- package/src/kernel/packs/sparql/authorQuery.ts +257 -0
- package/src/kernel/packs/sparql/buildListQuery.test.ts +344 -0
- package/src/kernel/packs/sparql/buildListQuery.ts +344 -0
- package/src/kernel/packs/sparql/buildLookupQuery.test.ts +138 -0
- package/src/kernel/packs/sparql/buildLookupQuery.ts +140 -20
- package/src/kernel/packs/sparql/filterValues.test.ts +86 -0
- package/src/kernel/packs/sparql/filterValues.ts +182 -0
- package/src/kernel/packs/sparql/index.ts +30 -14
- package/src/kernel/packs/sparql/runSelect.test.ts +63 -0
- package/src/kernel/packs/sparql/runSelect.ts +42 -2
- package/src/kernel/packs/sparql/searchTerm.ts +29 -0
- package/src/kernel/packs/storyRules.ts +180 -0
- package/src/kernel/packs/tierScope.test.ts +487 -0
- package/src/kernel/packs/tierScope.ts +409 -0
- package/src/kernel/packs/toolDescription.test.ts +13 -10
- package/src/kernel/packs/types.ts +311 -9
- package/src/kernel/project/cli/buildProgram.ts +17 -1
- package/src/kernel/project/cli/dispatch.test.ts +87 -0
- package/src/kernel/project/cli/dispatch.ts +114 -4
- package/src/kernel/project/cli/rootHelp.ts +8 -5
- package/src/kernel/project/cli/suggest.test.ts +35 -0
- package/src/kernel/project/cli/suggestNames.ts +34 -7
- package/src/kernel/project/mcp/registerVerb.ts +5 -1
- package/src/kernel/render/contracts.ts +2 -0
- package/src/kernel/render/prefixes.test.ts +2 -0
- package/src/kernel/render/renderers.test.ts +43 -0
- package/src/kernel/render/renderers.ts +34 -1
- package/src/kernel/runtime/graphpack/embedded/pack.generated.ts +2 -3
- package/src/kernel/runtime/graphpack/embedded/pack.index.generated.ts +1 -1
- package/src/kernel/runtime/graphpack/embedded/pack.manifest.generated.ts +3 -0
- package/src/kernel/runtime/graphpack/embedded.ts +14 -6
- package/src/kernel/runtime/graphpack/graphpack.test.ts +31 -5
- package/src/kernel/runtime/graphpack/read.ts +17 -13
- package/src/kernel/runtime/loadSession.ts +3 -1
- package/src/kernel/runtime/probe.ts +1 -1
- package/src/kernel/runtime/readEntity.ts +19 -4
- package/src/kernel/runtime/refs/parseRef.test.ts +49 -1
- package/src/kernel/runtime/refs/parseRef.ts +25 -1
- package/src/kernel/runtime/refs/resolve.ts +39 -5
- package/src/kernel/runtime/types.ts +30 -0
- package/src/kernel/spec/emitReference.ts +1 -1
- package/src/kernel/spec/surfaceConformance.test.ts +2 -2
- package/src/kernel/spec/types.ts +17 -0
- package/src/testing/PARITY_GAPS.ts +4 -4
- package/src/testing/behavioral/agentSession.mcp.test.ts +43 -39
- package/src/testing/behavioral/completion.test.ts +7 -6
- package/src/testing/behavioral/disclosure.test.ts +39 -37
- package/src/testing/behavioral/errorMatrix.mcp.test.ts +82 -64
- package/src/testing/behavioral/errorMatrix.storeless.test.ts +11 -10
- package/src/testing/behavioral/journeys.cli.test.ts +71 -32
- package/src/testing/behavioral/journeys.defaultPack.test.ts +6 -4
- package/src/testing/behavioral/journeys.firstInstall.test.ts +70 -5
- package/src/testing/behavioral/journeys.mcpLifecycle.mcp.test.ts +4 -3
- package/src/testing/behavioral/journeys.packageStories.test.ts +2 -1
- package/src/testing/behavioral/mcpSurface.test.ts +28 -25
- package/src/testing/behavioral/parity.test.ts +25 -23
- package/src/testing/eval/__snapshots__/eval.test.ts.snap +20 -0
- package/src/testing/eval/cases/effectful.ts +7 -1
- package/src/testing/eval/cases/readNouns.ts +100 -11
- package/src/testing/fixtures/blockGraph.ts +89 -5
- package/src/testing/fixtures/connectGraph.ts +159 -0
- package/src/testing/fixtures/graph/canonical.ts +128 -32
- package/src/testing/helpers/fsProbe.ts +88 -0
- package/src/testing/helpers/runCli.test.ts +44 -0
- package/src/testing/helpers/runCli.ts +27 -3
- package/src/testing/perf/budgets.test.ts +3 -1
- package/src/testing/perf/budgets.ts +138 -54
- package/dist/src/kernel/packs/sparql/applyFilters.js +0 -167
- package/dist/src/kernel/packs/sparql/applyFilters.js.map +0 -1
- package/dist/src/kernel/packs/sparql/applySearch.js +0 -25
- package/dist/src/kernel/packs/sparql/applySearch.js.map +0 -1
- package/src/kernel/packs/sparql/applyFilters.ts +0 -203
- package/src/kernel/packs/sparql/applySearch.ts +0 -33
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
*/
|
|
27
27
|
import { MCP_SERVER_NAME } from "../../../constants.js";
|
|
28
28
|
import { detectionFailure, detectTargets, resolveRoots, } from "../../setup/buildPlan.js";
|
|
29
|
-
import { lspEditorNames, lspSkipReason, mcpGroupState, mcpWriteState, skillsSkipReason, skillsSkipRemedy, } from "../../setup/operations/index.js";
|
|
29
|
+
import { blockedMcpGroups, describeEditorSource, firstLspBlock, firstMcpBlock, installableEditors, LSP_SKIP_REMEDY, lspBlockReason, lspEditorNames, lspSkipReason, mcpBlockReason, mcpGroupState, mcpWriteState, skillsSkipReason, skillsSkipRemedy, } from "../../setup/operations/index.js";
|
|
30
30
|
import { shortenPath, TARGET_IDS } from "../../setup/plan.js";
|
|
31
31
|
import { MCP_NO_LOCATION } from "../../setup/targets.js";
|
|
32
32
|
import { checkShellCompletions } from "./checkShellCompletions.js";
|
|
@@ -42,15 +42,78 @@ const configHealth = (d, roots) => {
|
|
|
42
42
|
}
|
|
43
43
|
return { status: "pass", detail: `${path} — valid` };
|
|
44
44
|
};
|
|
45
|
-
/**
|
|
46
|
-
|
|
45
|
+
/**
|
|
46
|
+
* The `lsp` row: one sub-item per editor, saying HOW it was found and where
|
|
47
|
+
* pragma stands in it.
|
|
48
|
+
*
|
|
49
|
+
* Provenance per editor is the point. A colleague whose macOS `setup lsp`
|
|
50
|
+
* reported nothing had VS Code installed the whole time, and a one-line row
|
|
51
|
+
* ("not installed in …", or a bare skip) could not tell them whether pragma had
|
|
52
|
+
* missed the editor or found it and could not act. Per the owner, 2026-09-16,
|
|
53
|
+
* this report says per editor how it was found and why a step was skipped.
|
|
54
|
+
*
|
|
55
|
+
* The row's own status keeps the report's invariant that every `available` row
|
|
56
|
+
* has a remedy: any editor that CAN be installed into makes the row
|
|
57
|
+
* `available`, whose derived fix is `pragma setup lsp`. A row where NOTHING is
|
|
58
|
+
* installed and nothing is installable is a `skip` carrying the first block's
|
|
59
|
+
* own remedy — a Nix declaration, a `chmod`, or the palette command — never
|
|
60
|
+
* the derived command, which would only reproduce the skip.
|
|
61
|
+
*
|
|
62
|
+
* An INSTALLED editor is a `pass` even when its extensions folder is blocked.
|
|
63
|
+
* The copy is there and works; the block only says this command cannot CHANGE
|
|
64
|
+
* it. Reporting a skip instead told the owner of a site-managed folder that
|
|
65
|
+
* already held the extension to chmod it and install again, and made a machine
|
|
66
|
+
* that is installed everywhere it can be a permanent `○ lsp`.
|
|
67
|
+
*/
|
|
68
|
+
const lspHealth = (d, roots) => {
|
|
47
69
|
if (d.state === "unknown") {
|
|
48
|
-
return {
|
|
70
|
+
return {
|
|
71
|
+
status: "skip",
|
|
72
|
+
detail: lspSkipReason(d),
|
|
73
|
+
remedy: LSP_SKIP_REMEDY,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
const items = d.editors.map((e) => {
|
|
77
|
+
const reason = e.installed ? undefined : lspBlockReason(e);
|
|
78
|
+
const state = reason ?? (e.installed ? "installed" : "not installed");
|
|
79
|
+
return {
|
|
80
|
+
label: e.editor.name,
|
|
81
|
+
status: e.installed
|
|
82
|
+
? "pass"
|
|
83
|
+
: reason !== undefined
|
|
84
|
+
? "skip"
|
|
85
|
+
: "available",
|
|
86
|
+
detail: `${describeEditorSource(e, roots)} · ${state}`,
|
|
87
|
+
};
|
|
88
|
+
});
|
|
89
|
+
const installable = installableEditors(d);
|
|
90
|
+
if (installable.length > 0) {
|
|
91
|
+
return {
|
|
92
|
+
status: "available",
|
|
93
|
+
detail: `not installed in ${installable.map((e) => e.editor.name).join(", ")}`,
|
|
94
|
+
items,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
// Nothing installable. The row is the block's only when nothing is installed
|
|
98
|
+
// either — otherwise the honest headline is what IS in place.
|
|
99
|
+
const block = d.editors.some((e) => e.installed)
|
|
100
|
+
? undefined
|
|
101
|
+
: firstLspBlock(d);
|
|
102
|
+
if (block !== undefined) {
|
|
103
|
+
return {
|
|
104
|
+
status: "skip",
|
|
105
|
+
// The headline names the editor; the item's own detail does not, because
|
|
106
|
+
// its label already has.
|
|
107
|
+
detail: block.headline,
|
|
108
|
+
items,
|
|
109
|
+
remedy: block.remedy,
|
|
110
|
+
};
|
|
49
111
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
112
|
+
return {
|
|
113
|
+
status: "pass",
|
|
114
|
+
detail: `installed in ${lspEditorNames(d).join(", ")}`,
|
|
115
|
+
items,
|
|
116
|
+
};
|
|
54
117
|
};
|
|
55
118
|
/**
|
|
56
119
|
* The `mcp` row: one sub-item per file, each saying whether the entry is
|
|
@@ -66,6 +129,12 @@ async function mcpHealth(d, scope, cwd, roots) {
|
|
|
66
129
|
const items = d.groups.map((group) => {
|
|
67
130
|
const state = mcpGroupState(d, group.path);
|
|
68
131
|
const label = shortenPath(group.path, roots);
|
|
132
|
+
// A file pragma must not write is reported as a skip, not as an
|
|
133
|
+
// `available` whose `fix:` would fail the moment it ran.
|
|
134
|
+
const blocked = mcpBlockReason(d, group, roots);
|
|
135
|
+
if (blocked !== undefined) {
|
|
136
|
+
return { label, status: "skip", detail: blocked };
|
|
137
|
+
}
|
|
69
138
|
if (state === "absent") {
|
|
70
139
|
return { label, status: "available", detail: "not registered" };
|
|
71
140
|
}
|
|
@@ -80,6 +149,21 @@ async function mcpHealth(d, scope, cwd, roots) {
|
|
|
80
149
|
: `registered, but \`${MCP_SERVER_NAME}\` is not on PATH`,
|
|
81
150
|
};
|
|
82
151
|
});
|
|
152
|
+
// Every location blocked means the row's whole answer is the block: it
|
|
153
|
+
// carries the first one's remedy — the entry to declare by hand — rather than
|
|
154
|
+
// the derived `pragma setup mcp`, which would only reproduce the skip.
|
|
155
|
+
const blockedGroups = blockedMcpGroups(d);
|
|
156
|
+
const block = blockedGroups.length === d.groups.length
|
|
157
|
+
? firstMcpBlock(d, roots)
|
|
158
|
+
: undefined;
|
|
159
|
+
if (block !== undefined) {
|
|
160
|
+
return {
|
|
161
|
+
status: "skip",
|
|
162
|
+
detail: block.reason,
|
|
163
|
+
items,
|
|
164
|
+
remedy: block.remedy,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
83
167
|
const configured = items.filter((item) => item.status === "pass").length;
|
|
84
168
|
const failing = items.filter((item) => item.status === "fail").length;
|
|
85
169
|
if (failing > 0) {
|
|
@@ -89,6 +173,7 @@ async function mcpHealth(d, scope, cwd, roots) {
|
|
|
89
173
|
items,
|
|
90
174
|
};
|
|
91
175
|
}
|
|
176
|
+
const writable = items.length - blockedGroups.length;
|
|
92
177
|
if (configured === 0) {
|
|
93
178
|
// Absence in the LOCAL PROJECT is not a failure: registering there is
|
|
94
179
|
// opt-in, so a repository with no checked-in MCP config is healthy. The
|
|
@@ -100,13 +185,13 @@ async function mcpHealth(d, scope, cwd, roots) {
|
|
|
100
185
|
}
|
|
101
186
|
: {
|
|
102
187
|
status: "available",
|
|
103
|
-
detail: `not registered in any of ${
|
|
188
|
+
detail: `not registered in any of ${writable} config files`,
|
|
104
189
|
items,
|
|
105
190
|
};
|
|
106
191
|
}
|
|
107
192
|
return {
|
|
108
|
-
status: configured ===
|
|
109
|
-
detail: `registered in ${configured} of ${
|
|
193
|
+
status: configured === writable ? "pass" : "available",
|
|
194
|
+
detail: `registered in ${configured} of ${writable} config files`,
|
|
110
195
|
items,
|
|
111
196
|
};
|
|
112
197
|
}
|
|
@@ -198,7 +283,7 @@ async function healthOf(row, rt, roots) {
|
|
|
198
283
|
};
|
|
199
284
|
}
|
|
200
285
|
case "lsp":
|
|
201
|
-
return lspHealth(row.detection);
|
|
286
|
+
return lspHealth(row.detection, roots);
|
|
202
287
|
case "mcp":
|
|
203
288
|
return mcpHealth(row.detection, row.scope, rt.cwd, roots);
|
|
204
289
|
default:
|
|
@@ -316,12 +401,17 @@ export const fixCommandFor = (id, scope, bin) => `${bin} setup ${id}${scope ===
|
|
|
316
401
|
*
|
|
317
402
|
* @param rt - The per-invocation runtime.
|
|
318
403
|
* @param bin - The binary name the `fix:` lines are derived from.
|
|
404
|
+
* @param probe - The writability filesystem seam, threaded to every row's
|
|
405
|
+
* detection. Defaults to the real one; a test injects a fixture to reach the
|
|
406
|
+
* blocked arms — a `/nix/store` path, a directory that refuses `W_OK` —
|
|
407
|
+
* through THIS entry point, rather than opening the row bodies up as exports
|
|
408
|
+
* nothing in production would call.
|
|
319
409
|
* @returns One {@link CheckResult} per (target, scope), plus one per scope.
|
|
320
410
|
* @note Impure — every target's detection reads the real filesystem.
|
|
321
411
|
*/
|
|
322
|
-
export async function scopedChecks(rt, bin) {
|
|
412
|
+
export async function scopedChecks(rt, bin, probe) {
|
|
323
413
|
const roots = await resolveRoots(rt);
|
|
324
|
-
const detected = await detectTargets(rt, [...TARGET_IDS], "both");
|
|
414
|
+
const detected = await detectTargets(rt, [...TARGET_IDS], "both", probe);
|
|
325
415
|
const [targetRows, inventoryRows] = await Promise.all([
|
|
326
416
|
Promise.all(detected.map(async (row) => {
|
|
327
417
|
const health = await healthOf(row, rt, roots);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"targetHealth.js","sourceRoot":"","sources":["../../../../../src/capabilities/doctor/checks/targetHealth.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"targetHealth.js","sourceRoot":"","sources":["../../../../../src/capabilities/doctor/checks/targetHealth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Formatters for `graph connect` — the same answer in two registers.
|
|
3
|
+
*
|
|
4
|
+
* A person gets one ROW PER STEP grouped by path, with each node's human name
|
|
5
|
+
* from the pack index, because what a reader wants from "how do these two
|
|
6
|
+
* connect" is the chain, read left to right, with the direction of every edge
|
|
7
|
+
* visible.
|
|
8
|
+
*
|
|
9
|
+
* An agent gets ONE OBJECT. Not Markdown: the answer is structured data — two
|
|
10
|
+
* endpoints, a verdict, the paths, and the policy the walk ran under — and
|
|
11
|
+
* flattening it into prose would make a caller parse back out what it already
|
|
12
|
+
* had (Constitution XI). This is also why neither format ever explains WHY two
|
|
13
|
+
* things relate: the predicates on the path are the explanation, and a sentence
|
|
14
|
+
* synthesised from them would be pragma asserting a meaning the graph does not
|
|
15
|
+
* carry.
|
|
16
|
+
*
|
|
17
|
+
* Terms arrive already compacted and named by the relation index, against the
|
|
18
|
+
* store's own merged prefix map — so these formatters carry no prefix map and
|
|
19
|
+
* re-derive nothing.
|
|
20
|
+
*/
|
|
21
|
+
/** The short form of a term: prefixed when there is one, else the raw value. */
|
|
22
|
+
const short = (term) => term.prefixed ?? term.value;
|
|
23
|
+
/** A term as a reader should see it — short form, with its name when known. */
|
|
24
|
+
const named = (term) => term.title ? `${short(term)} (${term.title})` : short(term);
|
|
25
|
+
/** A blank node has no address, and saying so beats printing a dead handle. */
|
|
26
|
+
const node = (term) => term.addressable === false ? `[record ${term.value}]` : named(term);
|
|
27
|
+
/** `1 hop` / `2 hops` — a count a reader does not have to forgive. */
|
|
28
|
+
const count = (n, noun) => `${n} ${noun}${n === 1 ? "" : "s"}`;
|
|
29
|
+
/** The sentence for each way of being unconnected — one per case, never shared. */
|
|
30
|
+
const REFUSALS = {
|
|
31
|
+
"endpoint-carries-no-relation": "Not connectable: one endpoint carries no relation the model uses — it is only classified.",
|
|
32
|
+
"shares-only-rosters": "Not connected in the model. The two share membership, which is not a relation.",
|
|
33
|
+
"no-path-within-hop-limit": "Not connected: no relation path between them within the hop limit.",
|
|
34
|
+
};
|
|
35
|
+
/** One roster group, as a line a reader can act on. */
|
|
36
|
+
function rosterLine(roster) {
|
|
37
|
+
const shape = roster.side === "subjects"
|
|
38
|
+
? `${short(roster.predicate)} -> ${node(roster.node)}`
|
|
39
|
+
: `${node(roster.node)} -> ${short(roster.predicate)}`;
|
|
40
|
+
return ` ${shape} (${roster.members} members)`;
|
|
41
|
+
}
|
|
42
|
+
/** One path, as a header plus one row per step. */
|
|
43
|
+
function pathLines(path, ordinal) {
|
|
44
|
+
const lines = [` Path ${ordinal} (${count(path.steps.length, "hop")})`];
|
|
45
|
+
for (const step of path.steps) {
|
|
46
|
+
const arrow = step.direction === "forward"
|
|
47
|
+
? `--${short(step.predicate)}->`
|
|
48
|
+
: `<-${short(step.predicate)}--`;
|
|
49
|
+
lines.push(` ${node(step.from)} ${arrow} ${node(step.to)}`);
|
|
50
|
+
}
|
|
51
|
+
return lines;
|
|
52
|
+
}
|
|
53
|
+
/** The policy block every answer carries, positive or negative. */
|
|
54
|
+
function policyLines(data) {
|
|
55
|
+
return [
|
|
56
|
+
"",
|
|
57
|
+
` Hop limit ${data.hopLimit}; edges whose fan-in exceeds ${data.rosterThreshold} are rosters, not relations.`,
|
|
58
|
+
` Packs searched: ${data.packs.length > 0 ? data.packs.join(", ") : "none recorded"}`,
|
|
59
|
+
];
|
|
60
|
+
}
|
|
61
|
+
export const connectFormatters = {
|
|
62
|
+
plain(data) {
|
|
63
|
+
const title = `${node(data.a.term)} <-> ${node(data.b.term)}`;
|
|
64
|
+
const lines = [title, "=".repeat(Math.min(Math.max(title.length, 24), 96))];
|
|
65
|
+
if (data.connected) {
|
|
66
|
+
lines.push(` Connected in ${count(data.hops ?? 0, "relation hop")}, by ${count(data.pathCount, "shortest path")}.`, "");
|
|
67
|
+
for (const [index, path] of data.paths.entries()) {
|
|
68
|
+
lines.push(...pathLines(path, index + 1));
|
|
69
|
+
lines.push("");
|
|
70
|
+
}
|
|
71
|
+
if (data.truncated) {
|
|
72
|
+
lines.push(` Showing ${data.paths.length} of ${data.pathCount} shortest paths — raise --paths for the rest.`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
lines.push(` ${REFUSALS[data.unconnectedBecause ?? "no-path-within-hop-limit"]}`);
|
|
77
|
+
for (const endpoint of [data.a, data.b]) {
|
|
78
|
+
if (endpoint.relatable)
|
|
79
|
+
continue;
|
|
80
|
+
lines.push("", ` ${node(endpoint.term)} carries no relation. It is classified by:`, ...(endpoint.classifiedBy ?? []).map(rosterLine));
|
|
81
|
+
}
|
|
82
|
+
if (data.sharedRosters.length > 0) {
|
|
83
|
+
lines.push("", " Rosters they both belong to:");
|
|
84
|
+
lines.push(...data.sharedRosters.map(rosterLine));
|
|
85
|
+
lines.push("", " A roster is answered by the noun's own list verb, not by a path.");
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
lines.push(...policyLines(data));
|
|
89
|
+
return lines.join("\n").trimEnd();
|
|
90
|
+
},
|
|
91
|
+
/**
|
|
92
|
+
* The agent-facing format IS the object — one JSON value on one line.
|
|
93
|
+
*
|
|
94
|
+
* `json` pretty-prints the same payload for a human reading a pipe; the two
|
|
95
|
+
* are the same data by construction, so an agent and a reader never see
|
|
96
|
+
* different answers to the same question.
|
|
97
|
+
*/
|
|
98
|
+
llm: (data) => JSON.stringify(data),
|
|
99
|
+
json: (data) => JSON.stringify(data, null, 2),
|
|
100
|
+
};
|
|
101
|
+
//# sourceMappingURL=connect.render.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect.render.js","sourceRoot":"","sources":["../../../../src/capabilities/graph/connect.render.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The shape of a `graph connect` answer — the ONE contract its run body writes
|
|
3
|
+
* and its three formatters read.
|
|
4
|
+
*
|
|
5
|
+
* Type-only, and deliberately its own module: the formatters hang off the verb
|
|
6
|
+
* spec, so they are on the static import graph the lazy-dispatch probe walks
|
|
7
|
+
* (`capabilities/lazy.test.ts`), while the walk itself must stay behind a
|
|
8
|
+
* dynamic import. A shared type module lets both sides name the same answer
|
|
9
|
+
* without dragging the traversal onto the storeless fast path.
|
|
10
|
+
*
|
|
11
|
+
* Every answer carries the POLICY it was produced under — the hop limit, the
|
|
12
|
+
* roster threshold, and the packs searched. That is Constitution VI applied to
|
|
13
|
+
* the answer rather than only to the source: the commonest answer this verb
|
|
14
|
+
* gives is "these two are not connected", and that sentence means nothing
|
|
15
|
+
* without knowing how far it looked, what it was willing to walk, and what it
|
|
16
|
+
* was looking in. A missing pack is what makes an honest "no path" and a
|
|
17
|
+
* dishonest one byte-identical, so `packs` is present whether the answer is
|
|
18
|
+
* positive or negative.
|
|
19
|
+
*/
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=connect.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect.types.js","sourceRoot":"","sources":["../../../../src/capabilities/graph/connect.types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `graph connect <a> <b>` — what connects two entities, and what "unlinked"
|
|
3
|
+
* means when nothing does.
|
|
4
|
+
*
|
|
5
|
+
* The third verb on the `graph` noun, beside `inspect` (one entity's
|
|
6
|
+
* neighbourhood) and `query` (the raw SPARQL escape hatch). It belongs here for
|
|
7
|
+
* the same reason those two do: it reads ACROSS the whole store rather than
|
|
8
|
+
* within one population, so it hangs off the noun for a store-wide read and
|
|
9
|
+
* adds no noun of its own.
|
|
10
|
+
*
|
|
11
|
+
* It is hand-written rather than a declared pack story because the pack grammar
|
|
12
|
+
* cannot express it. A list story's parameters are exactly its declared filters
|
|
13
|
+
* plus its declared search, every filter is projected as an OPTIONAL NAMED
|
|
14
|
+
* flag, and the only positional-and-required parameter the compiler ever mints
|
|
15
|
+
* is a lookup's single name — so there is nowhere in the grammar to put two
|
|
16
|
+
* required entity arguments. And a filter is a row predicate over an author's
|
|
17
|
+
* query, so a declared form would have to enumerate the walk space and let a
|
|
18
|
+
* filter pick one pair out of it: at four hops that space is 71 million walks,
|
|
19
|
+
* against the largest declared story's 1,698 rows.
|
|
20
|
+
*
|
|
21
|
+
* Both arguments accept exactly what `graph inspect` accepts — a prefixed name
|
|
22
|
+
* or an absolute IRI — and complete from the pack index through the same
|
|
23
|
+
* `names`/`index` source a compiled lookup's `<name>` uses, so the two
|
|
24
|
+
* positionals behave like every other entity argument in the CLI.
|
|
25
|
+
*
|
|
26
|
+
* Store-backed and read-only, like both its siblings. The traversal lives in a
|
|
27
|
+
* dynamically-imported run body: the relation index it needs is built by one
|
|
28
|
+
* scan of the store, and a process that never asks a connect question must
|
|
29
|
+
* never pay for it — which is the same guarantee `needsStore` and the lazy
|
|
30
|
+
* store already give every other read.
|
|
31
|
+
*/
|
|
32
|
+
import { BIN_NAME } from "../../constants.js";
|
|
33
|
+
import { PragmaError } from "../../kernel/error/index.js";
|
|
34
|
+
import { asVerb } from "../../kernel/spec/asVerb.js";
|
|
35
|
+
import { connectFormatters } from "./connect.render.js";
|
|
36
|
+
/**
|
|
37
|
+
* The hop limit in force unless `--hops` says otherwise.
|
|
38
|
+
*
|
|
39
|
+
* Four, from the measured connectivity ladder on the shipped pack: it is the
|
|
40
|
+
* smallest limit that spans the longest genuine bridge in this store — the walk
|
|
41
|
+
* from a platform variable through its declaration and its references to the
|
|
42
|
+
* symbol behind it — and the largest that keeps the answer set honest. At three
|
|
43
|
+
* that walk is refused; at six the connected fraction jumps and the paths stop
|
|
44
|
+
* being something a person can hold in mind.
|
|
45
|
+
*/
|
|
46
|
+
export const DEFAULT_HOPS = 4;
|
|
47
|
+
/** The ceiling `--hops` may be raised to; above it the verb refuses. */
|
|
48
|
+
export const MAX_HOPS = 6;
|
|
49
|
+
/** How many shortest paths are shown unless `--paths` says otherwise. */
|
|
50
|
+
export const DEFAULT_PATHS = 10;
|
|
51
|
+
/**
|
|
52
|
+
* Hold a numeric param to a whole number within its stated range.
|
|
53
|
+
*
|
|
54
|
+
* REFUSES rather than clamps. A clamped `--hops 40` would answer a question
|
|
55
|
+
* nobody asked and report a limit the caller did not set, which is precisely
|
|
56
|
+
* the hidden policy every answer's policy block exists to rule out.
|
|
57
|
+
*
|
|
58
|
+
* The kernel already coerces a `number` param and rejects what is not a number
|
|
59
|
+
* at all (`project/cli/dispatch.ts#coerceParam`, and `z.number()` over MCP), so
|
|
60
|
+
* what is left to check is RANGE and wholeness — `--hops 2.5` is a number, and
|
|
61
|
+
* it is not a hop count.
|
|
62
|
+
*
|
|
63
|
+
* @param value - The coerced param value.
|
|
64
|
+
* @param name - The flag's name, for the diagnostic.
|
|
65
|
+
* @param fallback - The value when the flag was not given.
|
|
66
|
+
* @param min - The smallest accepted value.
|
|
67
|
+
* @param max - The largest accepted value, if there is one.
|
|
68
|
+
* @returns The validated integer.
|
|
69
|
+
* @throws PragmaError INVALID_INPUT when the value is not an integer in range.
|
|
70
|
+
*/
|
|
71
|
+
function bounded(value, name, fallback, min, max) {
|
|
72
|
+
if (value === undefined || value === null)
|
|
73
|
+
return fallback;
|
|
74
|
+
const parsed = typeof value === "number" ? value : Number(value);
|
|
75
|
+
const ceiling = max === undefined ? "" : ` and at most ${max}`;
|
|
76
|
+
if (!Number.isInteger(parsed) ||
|
|
77
|
+
parsed < min ||
|
|
78
|
+
(max !== undefined && parsed > max)) {
|
|
79
|
+
throw PragmaError.invalidInput(name, String(value), {
|
|
80
|
+
recovery: {
|
|
81
|
+
message: `--${name} must be a whole number of at least ${min}${ceiling}.`,
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
return parsed;
|
|
86
|
+
}
|
|
87
|
+
const connectVerb = {
|
|
88
|
+
path: ["graph", "connect"],
|
|
89
|
+
summary: "Show the shortest relation paths between two entities.",
|
|
90
|
+
doc: "Finds every shortest path of RELATION edges between two entities, and says which kind of nothing it found when there is no path. An edge counts as a relation only where it does not fan out into a roster — membership of a class, a tier or a family is answered by that noun's list verb, not by a path — so most pairs are correctly reported as unconnected. Address each endpoint by prefixed name (ds:global.component.button) or absolute IRI. Every answer states the hop limit, the fan-in threshold, and the packs searched.",
|
|
91
|
+
params: [
|
|
92
|
+
{
|
|
93
|
+
kind: "string",
|
|
94
|
+
name: "a",
|
|
95
|
+
doc: "The first endpoint — a prefixed name or absolute IRI.",
|
|
96
|
+
positional: true,
|
|
97
|
+
required: true,
|
|
98
|
+
complete: { kind: "names", source: { from: "index", type: "" } },
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
kind: "string",
|
|
102
|
+
name: "b",
|
|
103
|
+
doc: "The second endpoint — a prefixed name or absolute IRI.",
|
|
104
|
+
positional: true,
|
|
105
|
+
required: true,
|
|
106
|
+
complete: { kind: "names", source: { from: "index", type: "" } },
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
kind: "number",
|
|
110
|
+
name: "hops",
|
|
111
|
+
doc: `Largest path length to return (default ${DEFAULT_HOPS}, ceiling ${MAX_HOPS}).`,
|
|
112
|
+
default: DEFAULT_HOPS,
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
kind: "number",
|
|
116
|
+
name: "paths",
|
|
117
|
+
doc: `Most shortest paths to show (default ${DEFAULT_PATHS}); the answer always reports the true total.`,
|
|
118
|
+
default: DEFAULT_PATHS,
|
|
119
|
+
},
|
|
120
|
+
],
|
|
121
|
+
output: { formatters: connectFormatters },
|
|
122
|
+
examples: [
|
|
123
|
+
{
|
|
124
|
+
cmd: `${BIN_NAME} graph connect ds:global.component.button dt:color.text`,
|
|
125
|
+
note: "a block and a token symbol",
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
cmd: `${BIN_NAME} graph connect ds:global.component.button ds:apps.pattern.datatable --format json`,
|
|
129
|
+
note: "an honest unlinked answer, with the policy it was found under",
|
|
130
|
+
},
|
|
131
|
+
],
|
|
132
|
+
capability: {
|
|
133
|
+
needsStore: true,
|
|
134
|
+
mutates: false,
|
|
135
|
+
mcp: {
|
|
136
|
+
expose: true,
|
|
137
|
+
annotations: { readOnlyHint: true, openWorldHint: false },
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
run: (params, rt) => import("./runConnect.js").then((m) => m.runConnect(rt, String(params.a), String(params.b), {
|
|
141
|
+
hops: bounded(params.hops, "hops", DEFAULT_HOPS, 1, MAX_HOPS),
|
|
142
|
+
paths: bounded(params.paths, "paths", DEFAULT_PATHS, 1),
|
|
143
|
+
})),
|
|
144
|
+
};
|
|
145
|
+
/** The `graph connect` verb. */
|
|
146
|
+
export const graphConnectVerb = asVerb(connectVerb);
|
|
147
|
+
//# sourceMappingURL=connect.verb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect.verb.js","sourceRoot":"","sources":["../../../../src/capabilities/graph/connect.verb.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The `graph` capability module — `inspect` (single-entity read)
|
|
3
|
-
*
|
|
2
|
+
* The `graph` capability module — `inspect` (single-entity read), `query` (the
|
|
3
|
+
* raw SPARQL escape hatch, PR6) and `connect` (relation paths between two
|
|
4
|
+
* entities). The covenant blesses all three.
|
|
4
5
|
*/
|
|
5
6
|
import { resourceProvider } from "../resources/index.js";
|
|
7
|
+
import { graphConnectVerb } from "./connect.verb.js";
|
|
6
8
|
import { graphInspectVerb } from "./inspect.verb.js";
|
|
7
9
|
import { graphQueryVerb } from "./query.verb.js";
|
|
8
10
|
/**
|
|
@@ -13,7 +15,7 @@ import { graphQueryVerb } from "./query.verb.js";
|
|
|
13
15
|
*/
|
|
14
16
|
export const graphModule = {
|
|
15
17
|
name: "graph",
|
|
16
|
-
verbs: [graphInspectVerb, graphQueryVerb],
|
|
18
|
+
verbs: [graphConnectVerb, graphInspectVerb, graphQueryVerb],
|
|
17
19
|
mcpResources: resourceProvider,
|
|
18
20
|
};
|
|
19
21
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/capabilities/graph/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/capabilities/graph/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAqB;IAC3C,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,CAAC;IAC3D,YAAY,EAAE,gBAAgB;CAC/B,CAAC"}
|