@canonical/pragma-cli 0.30.0 → 0.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1083) hide show
  1. package/dist/pragma +0 -0
  2. package/package.json +27 -40
  3. package/src/bin.ts +292 -11
  4. package/src/capabilities/block/blockList.verb.ts +150 -0
  5. package/src/capabilities/block/index.ts +25 -0
  6. package/src/capabilities/block/pack.ts +155 -0
  7. package/src/capabilities/block/parity.test.ts +180 -0
  8. package/src/capabilities/block/tierChain.ts +78 -0
  9. package/src/capabilities/capabilities/capabilities.render.ts +89 -0
  10. package/src/capabilities/capabilities/capabilities.test.ts +131 -0
  11. package/src/capabilities/capabilities/capabilities.verb.ts +48 -0
  12. package/src/capabilities/capabilities/catalog.ts +144 -0
  13. package/src/capabilities/capabilities/hints.ts +221 -0
  14. package/src/capabilities/capabilities/index.ts +13 -0
  15. package/src/capabilities/capabilities/types.ts +58 -0
  16. package/src/capabilities/colophon/collectColophon.ts +68 -0
  17. package/src/capabilities/colophon/colophon.render.test.ts +87 -0
  18. package/src/capabilities/colophon/colophon.render.ts +38 -0
  19. package/src/capabilities/colophon/colophon.test.ts +241 -0
  20. package/src/capabilities/colophon/colophon.verb.ts +41 -0
  21. package/src/capabilities/colophon/index.ts +6 -0
  22. package/src/capabilities/colophon/markdownTerminal.test.ts +50 -0
  23. package/src/capabilities/colophon/markdownTerminal.ts +85 -0
  24. package/src/capabilities/colophon/pragmaColophon.ts +66 -0
  25. package/src/capabilities/colophon/types.ts +29 -0
  26. package/src/capabilities/config/collectConfigShow.ts +32 -0
  27. package/src/capabilities/config/field.render.ts +28 -0
  28. package/src/capabilities/config/field.test.ts +188 -0
  29. package/src/capabilities/config/fields.ts +152 -0
  30. package/src/capabilities/config/index.ts +6 -0
  31. package/src/capabilities/config/runField.ts +59 -0
  32. package/src/capabilities/config/runSet.ts +38 -0
  33. package/src/capabilities/config/set.test.ts +207 -0
  34. package/src/capabilities/config/set.verb.ts +70 -0
  35. package/src/capabilities/config/show.render.ts +61 -0
  36. package/src/capabilities/config/show.verb.ts +45 -0
  37. package/src/capabilities/config/types.ts +27 -0
  38. package/src/capabilities/create/byteEquality.subprocess.test.ts +88 -0
  39. package/src/capabilities/create/byteEquality.test.ts +222 -0
  40. package/src/capabilities/create/compiledCreate.subprocess.test.ts +152 -0
  41. package/src/capabilities/create/create.mcp.test.ts +139 -0
  42. package/src/capabilities/create/create.render.ts +50 -0
  43. package/src/capabilities/create/create.test.ts +403 -0
  44. package/src/capabilities/create/create.verb.ts +435 -0
  45. package/src/capabilities/create/cwdJail.test.ts +129 -0
  46. package/src/capabilities/create/generatorToVerbSpec.ts +111 -0
  47. package/src/capabilities/create/index.ts +25 -0
  48. package/src/capabilities/create/pathJail.ts +73 -0
  49. package/src/capabilities/create/pickGenerator.ts +63 -0
  50. package/src/capabilities/create/templates.embedded.generated.ts +53 -0
  51. package/src/capabilities/create/types.ts +8 -0
  52. package/src/capabilities/doctor/checks/checkConfigFile.ts +41 -0
  53. package/src/capabilities/doctor/checks/checkKeStore.ts +39 -0
  54. package/src/capabilities/doctor/checks/checkMcpCommands.ts +108 -0
  55. package/src/capabilities/doctor/checks/checkMcpConfigured.ts +61 -0
  56. package/src/capabilities/doctor/checks/checkNodeVersion.ts +25 -0
  57. package/src/capabilities/doctor/checks/checkPackageRefs.ts +73 -0
  58. package/src/capabilities/doctor/checks/checkPragmaVersion.ts +22 -0
  59. package/src/capabilities/doctor/checks/checkShellCompletions.test.ts +111 -0
  60. package/src/capabilities/doctor/checks/checkShellCompletions.ts +131 -0
  61. package/src/capabilities/doctor/checks/checkSkillsSymlinked.ts +60 -0
  62. package/src/capabilities/doctor/doctor.render.ts +116 -0
  63. package/src/capabilities/doctor/doctor.test.ts +179 -0
  64. package/src/capabilities/doctor/doctor.verb.ts +46 -0
  65. package/src/capabilities/doctor/index.ts +6 -0
  66. package/src/capabilities/doctor/runChecks.ts +76 -0
  67. package/src/capabilities/doctor/types.ts +41 -0
  68. package/src/capabilities/emptyRecovery.test.ts +112 -0
  69. package/src/capabilities/graph/index.ts +21 -0
  70. package/src/capabilities/graph/inspect.render.ts +38 -0
  71. package/src/capabilities/graph/inspect.test.ts +80 -0
  72. package/src/capabilities/graph/inspect.verb.ts +51 -0
  73. package/src/capabilities/graph/query.render.ts +77 -0
  74. package/src/capabilities/graph/query.test.ts +156 -0
  75. package/src/capabilities/graph/query.verb.ts +58 -0
  76. package/src/capabilities/graph/runQuery.ts +49 -0
  77. package/src/capabilities/index.ts +54 -0
  78. package/src/capabilities/info/collectInfo.ts +76 -0
  79. package/src/capabilities/info/index.ts +6 -0
  80. package/src/capabilities/info/info.render.ts +72 -0
  81. package/src/capabilities/info/info.test.ts +127 -0
  82. package/src/capabilities/info/info.verb.ts +46 -0
  83. package/src/capabilities/info/types.ts +42 -0
  84. package/src/capabilities/lazy.test.ts +89 -0
  85. package/src/capabilities/meta/complete.verb.ts +52 -0
  86. package/src/capabilities/meta/index.ts +15 -0
  87. package/src/capabilities/meta/mcp.verb.ts +35 -0
  88. package/src/capabilities/modifier/index.ts +15 -0
  89. package/src/capabilities/modifier/pack.ts +64 -0
  90. package/src/capabilities/ontology/index.ts +12 -0
  91. package/src/capabilities/ontology/ontology.test.ts +94 -0
  92. package/src/capabilities/ontology/queries.ts +197 -0
  93. package/src/capabilities/ontology/render.ts +87 -0
  94. package/src/capabilities/ontology/verbs.ts +170 -0
  95. package/src/capabilities/prompt/index.ts +18 -0
  96. package/src/capabilities/prompt/prompt.render.ts +70 -0
  97. package/src/capabilities/prompt/prompt.test.ts +119 -0
  98. package/src/capabilities/prompt/types.ts +30 -0
  99. package/src/capabilities/prompt/verbs.ts +93 -0
  100. package/src/capabilities/resources/index.ts +15 -0
  101. package/src/capabilities/resources/provider.ts +231 -0
  102. package/src/capabilities/resources/resources.test.ts +114 -0
  103. package/src/capabilities/roundtrip.test.ts +107 -0
  104. package/src/capabilities/setup/index.ts +6 -0
  105. package/src/capabilities/setup/operations/setupCompletions.ts +108 -0
  106. package/src/capabilities/setup/operations/setupGenerator.ts +307 -0
  107. package/src/capabilities/setup/operations/setupLsp.ts +61 -0
  108. package/src/capabilities/setup/operations/setupMcp.ts +85 -0
  109. package/src/capabilities/setup/operations/setupSkills.ts +199 -0
  110. package/src/capabilities/setup/setup.render.ts +49 -0
  111. package/src/capabilities/setup/setup.test.ts +351 -0
  112. package/src/capabilities/setup/setup.verb.ts +209 -0
  113. package/src/capabilities/setup/shell.ts +85 -0
  114. package/src/capabilities/setup/types.ts +42 -0
  115. package/src/capabilities/shared/assertExecOk.ts +106 -0
  116. package/src/capabilities/shared/packageManager.ts +62 -0
  117. package/src/capabilities/shared/registry.ts +70 -0
  118. package/src/capabilities/skill/discover.ts +178 -0
  119. package/src/capabilities/skill/index.ts +12 -0
  120. package/src/capabilities/skill/render.ts +60 -0
  121. package/src/capabilities/skill/skill.test.ts +142 -0
  122. package/src/capabilities/skill/verbs.ts +100 -0
  123. package/src/capabilities/sources/collectStatus.ts +87 -0
  124. package/src/capabilities/sources/index.ts +15 -0
  125. package/src/capabilities/sources/installSkills.ts +124 -0
  126. package/src/capabilities/sources/runUpdate.ts +407 -0
  127. package/src/capabilities/sources/sources.test.ts +642 -0
  128. package/src/capabilities/sources/status.render.ts +56 -0
  129. package/src/capabilities/sources/status.verb.ts +42 -0
  130. package/src/capabilities/sources/types.ts +51 -0
  131. package/src/capabilities/sources/update.render.ts +35 -0
  132. package/src/capabilities/sources/update.verb.ts +76 -0
  133. package/src/capabilities/standard/index.ts +18 -0
  134. package/src/capabilities/standard/pack.ts +128 -0
  135. package/src/capabilities/standard/parity.test.ts +208 -0
  136. package/src/capabilities/surface.test.ts +208 -0
  137. package/src/capabilities/tier/index.ts +19 -0
  138. package/src/capabilities/tier/lookup.render.ts +34 -0
  139. package/src/capabilities/tier/lookup.test.ts +68 -0
  140. package/src/capabilities/tier/lookup.verb.ts +44 -0
  141. package/src/capabilities/tier/pack.ts +28 -0
  142. package/src/capabilities/tier/runLookup.ts +59 -0
  143. package/src/capabilities/token/addConfig.render.ts +27 -0
  144. package/src/capabilities/token/addConfig.test.ts +62 -0
  145. package/src/capabilities/token/addConfig.verb.ts +40 -0
  146. package/src/capabilities/token/index.ts +19 -0
  147. package/src/capabilities/token/pack.ts +58 -0
  148. package/src/capabilities/token/runAddConfig.ts +95 -0
  149. package/src/capabilities/upgrade/index.ts +6 -0
  150. package/src/capabilities/upgrade/runUpgrade.ts +119 -0
  151. package/src/capabilities/upgrade/types.ts +21 -0
  152. package/src/capabilities/upgrade/upgrade.render.ts +55 -0
  153. package/src/capabilities/upgrade/upgrade.test.ts +372 -0
  154. package/src/capabilities/upgrade/upgrade.verb.ts +56 -0
  155. package/src/constants.test.ts +33 -0
  156. package/src/constants.ts +38 -68
  157. package/src/index.ts +27 -134
  158. package/src/kernel/completion/__snapshots__/emitScripts.test.ts.snap +340 -0
  159. package/src/kernel/completion/bashDrive.test.ts +73 -0
  160. package/src/kernel/completion/complete.test.ts +101 -0
  161. package/src/kernel/completion/complete.ts +77 -0
  162. package/src/kernel/completion/emitScripts.test.ts +173 -0
  163. package/src/kernel/completion/emitScripts.ts +122 -0
  164. package/src/kernel/completion/entitySource.test.ts +198 -0
  165. package/src/kernel/completion/entitySource.ts +269 -0
  166. package/src/kernel/completion/index.ts +42 -0
  167. package/src/kernel/completion/model.test.ts +405 -0
  168. package/src/kernel/completion/model.ts +259 -0
  169. package/src/kernel/completion/parse.test.ts +338 -0
  170. package/src/kernel/completion/parse.ts +294 -0
  171. package/src/kernel/completion/rank.test.ts +100 -0
  172. package/src/kernel/completion/rank.ts +118 -0
  173. package/src/kernel/completion/resolve.test.ts +204 -0
  174. package/src/kernel/completion/resolve.ts +133 -0
  175. package/src/kernel/completion/safety.test.ts +374 -0
  176. package/src/kernel/completion/templates/bash.ts +249 -0
  177. package/src/kernel/completion/templates/fish.ts +245 -0
  178. package/src/kernel/completion/templates/shared.ts +134 -0
  179. package/src/kernel/completion/templates/zsh.ts +246 -0
  180. package/src/kernel/completion/types.ts +153 -0
  181. package/src/kernel/config/__snapshots__/firstRun.test.ts.snap +11 -0
  182. package/src/kernel/config/defaults.ts +28 -0
  183. package/src/kernel/config/evaluateProjectConfig.ts +119 -0
  184. package/src/kernel/config/findProjectConfig.ts +45 -0
  185. package/src/kernel/config/firstRun.test.ts +60 -0
  186. package/src/kernel/config/firstRun.ts +91 -0
  187. package/src/kernel/config/globalConfig.ts +94 -0
  188. package/src/kernel/config/index.ts +35 -0
  189. package/src/kernel/config/paths.ts +39 -0
  190. package/src/kernel/config/readConfig.test.ts +245 -0
  191. package/src/kernel/config/readConfig.ts +94 -0
  192. package/src/kernel/config/schema.ts +56 -0
  193. package/src/kernel/config/types.ts +106 -0
  194. package/src/kernel/config/writeConfigField.ts +82 -0
  195. package/src/kernel/error/PragmaError.test.ts +119 -0
  196. package/src/kernel/error/PragmaError.ts +182 -0
  197. package/src/kernel/error/constants.ts +38 -0
  198. package/src/kernel/error/fromTaskError.test.ts +83 -0
  199. package/src/kernel/error/fromTaskError.ts +80 -0
  200. package/src/kernel/error/index.ts +23 -0
  201. package/src/kernel/error/recovery.test.ts +60 -0
  202. package/src/kernel/error/recovery.ts +49 -0
  203. package/src/kernel/error/renderError.ts +101 -0
  204. package/src/kernel/error/serialize.ts +28 -0
  205. package/src/kernel/error/types.ts +62 -0
  206. package/src/kernel/packs/collect.test.ts +138 -0
  207. package/src/kernel/packs/collect.ts +108 -0
  208. package/src/kernel/packs/compile.test.ts +229 -0
  209. package/src/kernel/packs/compile.ts +315 -0
  210. package/src/kernel/packs/disclosure.test.ts +200 -0
  211. package/src/kernel/packs/disclosure.ts +98 -0
  212. package/src/kernel/packs/glob.ts +39 -0
  213. package/src/kernel/packs/graphql/buildLookupDocument.ts +397 -0
  214. package/src/kernel/packs/graphql/fetchGraphqlLookup.ts +217 -0
  215. package/src/kernel/packs/graphql/nameMap.ts +67 -0
  216. package/src/kernel/packs/graphqlSource.test.ts +383 -0
  217. package/src/kernel/packs/iri.ts +78 -0
  218. package/src/kernel/packs/renderPack.ts +196 -0
  219. package/src/kernel/packs/resolveEntity.ts +232 -0
  220. package/src/kernel/packs/runBodies.ts +157 -0
  221. package/src/kernel/packs/sample.ts +60 -0
  222. package/src/kernel/packs/schema.ts +328 -0
  223. package/src/kernel/packs/sparql/applyFilters.ts +83 -0
  224. package/src/kernel/packs/sparql/applySearch.ts +33 -0
  225. package/src/kernel/packs/sparql/buildLookupQuery.ts +180 -0
  226. package/src/kernel/packs/sparql/escape.ts +22 -0
  227. package/src/kernel/packs/sparql/runSelect.test.ts +80 -0
  228. package/src/kernel/packs/sparql/runSelect.ts +84 -0
  229. package/src/kernel/packs/toolDescription.test.ts +81 -0
  230. package/src/kernel/packs/types.ts +337 -0
  231. package/src/kernel/packs/uniqueness.ts +35 -0
  232. package/src/kernel/project/cli/buildProgram.test.ts +387 -0
  233. package/src/kernel/project/cli/buildProgram.ts +280 -0
  234. package/src/kernel/project/cli/dispatch.test.ts +288 -0
  235. package/src/kernel/project/cli/dispatch.ts +334 -0
  236. package/src/kernel/project/cli/exitCodes.test.ts +59 -0
  237. package/src/kernel/project/cli/exitCodes.ts +68 -0
  238. package/src/kernel/project/cli/globalFlags.test.ts +99 -0
  239. package/src/kernel/project/cli/globalFlags.ts +149 -0
  240. package/src/kernel/project/cli/helpFormat.ts +58 -0
  241. package/src/kernel/project/cli/index.ts +21 -0
  242. package/src/kernel/project/cli/interactionSeam.test.ts +99 -0
  243. package/src/kernel/project/cli/rootHelp.ts +218 -0
  244. package/src/kernel/project/cli/suggest.test.ts +54 -0
  245. package/src/kernel/project/cli/suggest.ts +67 -0
  246. package/src/kernel/project/cli/suggestNames.ts +122 -0
  247. package/src/kernel/project/cli/verbHelp.test.ts +138 -0
  248. package/src/kernel/project/cli/verbHelp.ts +144 -0
  249. package/src/kernel/project/mcp/buildServer.ts +70 -0
  250. package/src/kernel/project/mcp/envelope.ts +44 -0
  251. package/src/kernel/project/mcp/index.ts +8 -0
  252. package/src/kernel/project/mcp/instructions.ts +48 -0
  253. package/src/kernel/project/mcp/parity.test.ts +72 -0
  254. package/src/kernel/project/mcp/prompts/prompts.test.ts +96 -0
  255. package/src/kernel/project/mcp/prompts/provider.ts +74 -0
  256. package/src/kernel/project/mcp/prompts/source.ts +194 -0
  257. package/src/kernel/project/mcp/registerVerb.test.ts +238 -0
  258. package/src/kernel/project/mcp/registerVerb.ts +296 -0
  259. package/src/kernel/project/mcp/serve.ts +34 -0
  260. package/src/kernel/project/mcp/toolDescriptions.test.ts +80 -0
  261. package/src/kernel/render/__snapshots__/renderers.test.ts.snap +127 -0
  262. package/src/kernel/render/compactUri.ts +25 -0
  263. package/src/kernel/render/contracts.ts +72 -0
  264. package/src/kernel/render/disclosure.ts +44 -0
  265. package/src/kernel/render/envelope.ts +50 -0
  266. package/src/kernel/render/formatters.ts +30 -0
  267. package/src/kernel/render/index.ts +30 -0
  268. package/src/kernel/render/prefixes.ts +21 -0
  269. package/src/kernel/render/renderers.test.ts +171 -0
  270. package/src/kernel/render/renderers.ts +429 -0
  271. package/src/kernel/render/writeStdout.test.ts +43 -0
  272. package/src/kernel/render/writeStdout.ts +49 -0
  273. package/src/kernel/runtime/boot.test.ts +69 -0
  274. package/src/kernel/runtime/boot.ts +59 -0
  275. package/src/kernel/runtime/facade.test.ts +125 -0
  276. package/src/kernel/runtime/facade.ts +47 -0
  277. package/src/kernel/runtime/graphpack/build.ts +148 -0
  278. package/src/kernel/runtime/graphpack/buildIndex.ts +229 -0
  279. package/src/kernel/runtime/graphpack/embedded/pack.generated.ts +8 -0
  280. package/src/kernel/runtime/graphpack/embedded/pack.index.generated.ts +4 -0
  281. package/src/kernel/runtime/graphpack/embedded/sample.ttl +39 -0
  282. package/src/kernel/runtime/graphpack/embedded.ts +70 -0
  283. package/src/kernel/runtime/graphpack/graphpack.test.ts +153 -0
  284. package/src/kernel/runtime/graphpack/hash.ts +46 -0
  285. package/src/kernel/runtime/graphpack/index.ts +21 -0
  286. package/src/kernel/runtime/graphpack/manifest.ts +55 -0
  287. package/src/kernel/runtime/graphpack/read.ts +102 -0
  288. package/src/kernel/runtime/graphpack/types.ts +111 -0
  289. package/src/kernel/runtime/index.ts +15 -0
  290. package/src/kernel/runtime/loadSession.ts +56 -0
  291. package/src/kernel/runtime/lock.ts +90 -0
  292. package/src/kernel/runtime/paths.ts +37 -0
  293. package/src/kernel/runtime/probe.test.ts +16 -0
  294. package/src/kernel/runtime/probe.ts +39 -0
  295. package/src/kernel/runtime/readEntity.ts +83 -0
  296. package/src/kernel/runtime/refs/gitOps.ts +88 -0
  297. package/src/kernel/runtime/refs/parseRef.test.ts +34 -0
  298. package/src/kernel/runtime/refs/parseRef.ts +103 -0
  299. package/src/kernel/runtime/refs/resolve.ts +320 -0
  300. package/src/kernel/runtime/resolveSources.test.ts +154 -0
  301. package/src/kernel/runtime/resolveSources.ts +66 -0
  302. package/src/kernel/runtime/store.test.ts +94 -0
  303. package/src/kernel/runtime/store.ts +90 -0
  304. package/src/kernel/runtime/storeless.test.ts +86 -0
  305. package/src/kernel/runtime/types.ts +210 -0
  306. package/src/kernel/runtime/wasmEmbed.test.ts +142 -0
  307. package/src/kernel/spec/asVerb.ts +23 -0
  308. package/src/kernel/spec/emitSurface.test.ts +65 -0
  309. package/src/kernel/spec/emitSurface.ts +223 -0
  310. package/src/kernel/spec/index.ts +34 -0
  311. package/src/kernel/spec/surfaceConformance.test.ts +94 -0
  312. package/src/kernel/spec/surfaceConformance.ts +135 -0
  313. package/src/kernel/spec/types.ts +233 -0
  314. package/src/kernel/spec/validate.test.ts +81 -0
  315. package/src/kernel/spec/validate.ts +125 -0
  316. package/src/testing/PARITY_GAPS.test.ts +32 -0
  317. package/src/testing/PARITY_GAPS.ts +179 -0
  318. package/src/testing/behavioral/README.md +164 -0
  319. package/src/testing/behavioral/agentSession.mcp.test.ts +160 -0
  320. package/src/testing/behavioral/autoLlm.e2e.test.ts +44 -0
  321. package/src/testing/behavioral/completion.test.ts +132 -0
  322. package/src/testing/behavioral/disclosure.test.ts +103 -0
  323. package/src/testing/behavioral/errorMatrix.mcp.test.ts +120 -0
  324. package/src/testing/behavioral/errorMatrix.storeless.test.ts +123 -0
  325. package/src/testing/behavioral/exitCodes.e2e.test.ts +53 -0
  326. package/src/testing/behavioral/firstRun.e2e.test.ts +40 -0
  327. package/src/testing/behavioral/harness.foundation.test.ts +136 -0
  328. package/src/testing/behavioral/journeys.cli.test.ts +129 -0
  329. package/src/testing/behavioral/liveReadSurface.ts +80 -0
  330. package/src/testing/behavioral/mcpServe.e2e.test.ts +21 -0
  331. package/src/testing/behavioral/mcpSurface.test.ts +139 -0
  332. package/src/testing/behavioral/parity.test.ts +224 -0
  333. package/src/testing/behavioral/rootCli.e2e.test.ts +62 -0
  334. package/src/testing/eval/__snapshots__/eval.test.ts.snap +201 -0
  335. package/src/testing/eval/cases/assembly.ts +195 -0
  336. package/src/testing/eval/cases/effectful.ts +245 -0
  337. package/src/testing/eval/cases/readNouns.ts +232 -0
  338. package/src/testing/eval/cases/stable.ts +163 -0
  339. package/src/testing/eval/eval.test.ts +74 -0
  340. package/src/testing/eval/harness.ts +91 -0
  341. package/src/testing/eval/report.ts +58 -0
  342. package/src/testing/fixtures/blockGraph.ts +112 -0
  343. package/src/testing/fixtures/completionFixture.ts +239 -0
  344. package/src/testing/fixtures/fixtureCapability.ts +175 -0
  345. package/src/testing/fixtures/graph/canonical.ts +184 -0
  346. package/src/testing/fixtures/packs/recipe.ts +78 -0
  347. package/src/testing/helpers/fixtureGraph.ts +148 -0
  348. package/src/testing/helpers/golden.ts +45 -0
  349. package/src/testing/helpers/packRuntime.ts +118 -0
  350. package/src/testing/helpers/parity.ts +86 -0
  351. package/src/testing/helpers/projectCli.ts +35 -0
  352. package/src/testing/helpers/projectMcp.ts +145 -0
  353. package/src/testing/helpers/runCli.ts +128 -0
  354. package/src/testing/perf/budgets.test.ts +164 -0
  355. package/src/testing/perf/budgets.ts +37 -0
  356. package/src/testing/perf/globalSetup.ts +30 -0
  357. package/src/testing/perf/measure.ts +97 -0
  358. package/src/testing/setupXdgIsolation.ts +17 -5
  359. package/src/types.ts +42 -0
  360. package/README.md +0 -429
  361. package/src/bin.test.ts +0 -54
  362. package/src/compile-validation.runner.ts +0 -137
  363. package/src/compile-validation.ts +0 -191
  364. package/src/completions/computeSocketPath.test.ts +0 -26
  365. package/src/completions/computeSocketPath.ts +0 -16
  366. package/src/completions/constants.ts +0 -18
  367. package/src/completions/handleQuery.test.ts +0 -93
  368. package/src/completions/handleQuery.ts +0 -30
  369. package/src/completions/index.ts +0 -14
  370. package/src/completions/queryCompletions.test.ts +0 -100
  371. package/src/completions/queryCompletions.ts +0 -61
  372. package/src/completions/querySocket.test.ts +0 -70
  373. package/src/completions/querySocket.ts +0 -44
  374. package/src/completions/startCompletionsServer.test.ts +0 -74
  375. package/src/completions/startCompletionsServer.ts +0 -75
  376. package/src/completions/startCompletionsServer.unit.test.ts +0 -131
  377. package/src/completions/waitForSocket.test.ts +0 -27
  378. package/src/completions/waitForSocket.ts +0 -27
  379. package/src/config/configExists.ts +0 -14
  380. package/src/config/defaultConfig.test.ts +0 -33
  381. package/src/config/defaultConfig.ts +0 -59
  382. package/src/config/defaults.json +0 -17
  383. package/src/config/findProjectConfigPath.test.ts +0 -53
  384. package/src/config/findProjectConfigPath.ts +0 -36
  385. package/src/config/index.ts +0 -21
  386. package/src/config/mergeConfigFileUpdate.ts +0 -58
  387. package/src/config/parseConfigValues.ts +0 -215
  388. package/src/config/readConfig.test.ts +0 -395
  389. package/src/config/readConfig.ts +0 -21
  390. package/src/config/readConfigLayers.test.ts +0 -107
  391. package/src/config/readConfigLayers.ts +0 -115
  392. package/src/config/resolveConfigPath.test.ts +0 -20
  393. package/src/config/resolveConfigPath.ts +0 -11
  394. package/src/config/resolveGlobalConfigPath.ts +0 -13
  395. package/src/config/resolveWriteConfigPath.test.ts +0 -53
  396. package/src/config/resolveWriteConfigPath.ts +0 -31
  397. package/src/config/types.ts +0 -121
  398. package/src/config/writeConfig.ts +0 -37
  399. package/src/domains/block/blockConfig.ts +0 -97
  400. package/src/domains/block/commands/index.ts +0 -5
  401. package/src/domains/block/commands/list.test.ts +0 -111
  402. package/src/domains/block/commands/list.ts +0 -11
  403. package/src/domains/block/commands/lookup.test.ts +0 -187
  404. package/src/domains/block/commands/lookup.ts +0 -14
  405. package/src/domains/block/commands/sample.ts +0 -55
  406. package/src/domains/block/formatters/index.ts +0 -5
  407. package/src/domains/block/formatters/list.test.ts +0 -107
  408. package/src/domains/block/formatters/list.ts +0 -50
  409. package/src/domains/block/formatters/lookup.test.ts +0 -318
  410. package/src/domains/block/formatters/lookup.ts +0 -149
  411. package/src/domains/block/formatters/sample.ts +0 -21
  412. package/src/domains/block/formatters/types.ts +0 -16
  413. package/src/domains/block/helpers/index.ts +0 -4
  414. package/src/domains/block/helpers/resolveAspects.test.ts +0 -64
  415. package/src/domains/block/helpers/resolveAspects.ts +0 -35
  416. package/src/domains/block/index.ts +0 -25
  417. package/src/domains/block/mcp/index.ts +0 -2
  418. package/src/domains/block/mcp/specs.ts +0 -67
  419. package/src/domains/block/operations/index.ts +0 -5
  420. package/src/domains/block/operations/list.test.ts +0 -80
  421. package/src/domains/block/operations/list.ts +0 -72
  422. package/src/domains/block/operations/lookup.test.ts +0 -129
  423. package/src/domains/block/operations/lookup.ts +0 -446
  424. package/src/domains/block/operations/sample.ts +0 -41
  425. package/src/domains/block/orchestration/blockEmptyError.test.ts +0 -26
  426. package/src/domains/block/orchestration/blockEmptyError.ts +0 -19
  427. package/src/domains/block/orchestration/buildBlockFilters.ts +0 -12
  428. package/src/domains/block/orchestration/enrichBlocks.ts +0 -41
  429. package/src/domains/block/orchestration/index.ts +0 -5
  430. package/src/domains/block/orchestration/resolveBlockList.ts +0 -39
  431. package/src/domains/block/orchestration/resolveBlockLookup.ts +0 -35
  432. package/src/domains/block/stories.test.ts +0 -28
  433. package/src/domains/block/stories.ts +0 -254
  434. package/src/domains/block/types.ts +0 -30
  435. package/src/domains/config/commands/channel.test.ts +0 -112
  436. package/src/domains/config/commands/channel.ts +0 -86
  437. package/src/domains/config/commands/configScope.ts +0 -46
  438. package/src/domains/config/commands/framework.test.ts +0 -105
  439. package/src/domains/config/commands/framework.ts +0 -91
  440. package/src/domains/config/commands/index.ts +0 -6
  441. package/src/domains/config/commands/show.test.ts +0 -61
  442. package/src/domains/config/commands/show.ts +0 -11
  443. package/src/domains/config/commands/tier.test.ts +0 -95
  444. package/src/domains/config/commands/tier.ts +0 -84
  445. package/src/domains/config/commands/trace.test.ts +0 -165
  446. package/src/domains/config/commands/trace.ts +0 -83
  447. package/src/domains/config/formatters/channel.test.ts +0 -70
  448. package/src/domains/config/formatters/channel.ts +0 -37
  449. package/src/domains/config/formatters/framework.ts +0 -37
  450. package/src/domains/config/formatters/index.ts +0 -6
  451. package/src/domains/config/formatters/show.test.ts +0 -153
  452. package/src/domains/config/formatters/show.ts +0 -89
  453. package/src/domains/config/formatters/tier.test.ts +0 -86
  454. package/src/domains/config/formatters/tier.ts +0 -48
  455. package/src/domains/config/formatters/trace.ts +0 -28
  456. package/src/domains/config/index.ts +0 -36
  457. package/src/domains/config/mcp/index.ts +0 -2
  458. package/src/domains/config/mcp/specs.ts +0 -100
  459. package/src/domains/config/operations/index.ts +0 -6
  460. package/src/domains/config/operations/show.test.ts +0 -78
  461. package/src/domains/config/operations/show.ts +0 -48
  462. package/src/domains/config/operations/types.ts +0 -20
  463. package/src/domains/config/operations/validateChannel.test.ts +0 -36
  464. package/src/domains/config/operations/validateChannel.ts +0 -24
  465. package/src/domains/config/operations/validateFramework.ts +0 -24
  466. package/src/domains/config/operations/validateTier.test.ts +0 -56
  467. package/src/domains/config/operations/validateTier.ts +0 -35
  468. package/src/domains/config/stories.ts +0 -42
  469. package/src/domains/config/tasks/index.ts +0 -6
  470. package/src/domains/config/tasks/setChannel.ts +0 -21
  471. package/src/domains/config/tasks/setFramework.ts +0 -21
  472. package/src/domains/config/tasks/setTier.ts +0 -20
  473. package/src/domains/config/tasks/setTrace.ts +0 -20
  474. package/src/domains/config/tasks/writeConfigField.ts +0 -41
  475. package/src/domains/create/commands/component.test.ts +0 -166
  476. package/src/domains/create/commands/component.ts +0 -123
  477. package/src/domains/create/commands/index.ts +0 -3
  478. package/src/domains/create/commands/package.test.ts +0 -35
  479. package/src/domains/create/commands/package.ts +0 -21
  480. package/src/domains/create/generators.ts +0 -8
  481. package/src/domains/create/index.ts +0 -15
  482. package/src/domains/create/mcp/index.ts +0 -2
  483. package/src/domains/create/mcp/specs.ts +0 -168
  484. package/src/domains/doctor/commands/doctor.test.ts +0 -75
  485. package/src/domains/doctor/commands/doctor.ts +0 -43
  486. package/src/domains/doctor/commands/index.ts +0 -2
  487. package/src/domains/doctor/formatters/doctor.test.ts +0 -117
  488. package/src/domains/doctor/formatters/doctor.ts +0 -84
  489. package/src/domains/doctor/formatters/index.ts +0 -2
  490. package/src/domains/doctor/index.ts +0 -9
  491. package/src/domains/doctor/mcp/index.ts +0 -2
  492. package/src/domains/doctor/mcp/specs.ts +0 -41
  493. package/src/domains/doctor/operations/checks/checkConfigFile.ts +0 -42
  494. package/src/domains/doctor/operations/checks/checkKeStore.ts +0 -38
  495. package/src/domains/doctor/operations/checks/checkMcpCommands.ts +0 -130
  496. package/src/domains/doctor/operations/checks/checkMcpConfigured.ts +0 -65
  497. package/src/domains/doctor/operations/checks/checkNodeVersion.ts +0 -25
  498. package/src/domains/doctor/operations/checks/checkPackageRefs.ts +0 -58
  499. package/src/domains/doctor/operations/checks/checkPragmaVersion.ts +0 -20
  500. package/src/domains/doctor/operations/checks/checkShellCompletions.ts +0 -42
  501. package/src/domains/doctor/operations/checks/checkSkillsSymlinked.ts +0 -64
  502. package/src/domains/doctor/operations/checks/index.ts +0 -10
  503. package/src/domains/doctor/operations/checks.test.ts +0 -305
  504. package/src/domains/doctor/operations/index.ts +0 -3
  505. package/src/domains/doctor/operations/runChecks.test.ts +0 -176
  506. package/src/domains/doctor/operations/runChecks.ts +0 -78
  507. package/src/domains/doctor/operations/types.ts +0 -20
  508. package/src/domains/graph/commands/index.ts +0 -4
  509. package/src/domains/graph/commands/inspect.test.ts +0 -94
  510. package/src/domains/graph/commands/inspect.ts +0 -63
  511. package/src/domains/graph/commands/query.test.ts +0 -92
  512. package/src/domains/graph/commands/query.ts +0 -60
  513. package/src/domains/graph/formatters/index.ts +0 -4
  514. package/src/domains/graph/formatters/inspect.ts +0 -50
  515. package/src/domains/graph/formatters/query.ts +0 -37
  516. package/src/domains/graph/helpers/index.ts +0 -3
  517. package/src/domains/graph/helpers/resolveUri.test.ts +0 -50
  518. package/src/domains/graph/helpers/resolveUri.ts +0 -77
  519. package/src/domains/graph/index.ts +0 -22
  520. package/src/domains/graph/mcp/index.ts +0 -2
  521. package/src/domains/graph/mcp/specs.ts +0 -82
  522. package/src/domains/graph/operations/executeQuery.test.ts +0 -68
  523. package/src/domains/graph/operations/executeQuery.ts +0 -32
  524. package/src/domains/graph/operations/index.ts +0 -4
  525. package/src/domains/graph/operations/inspectUri.test.ts +0 -101
  526. package/src/domains/graph/operations/inspectUri.ts +0 -64
  527. package/src/domains/graphql/commands/build.test.ts +0 -196
  528. package/src/domains/graphql/commands/build.ts +0 -117
  529. package/src/domains/graphql/commands/check.test.ts +0 -141
  530. package/src/domains/graphql/commands/check.ts +0 -81
  531. package/src/domains/graphql/commands/index.ts +0 -5
  532. package/src/domains/graphql/commands/serve.test.ts +0 -40
  533. package/src/domains/graphql/commands/serve.ts +0 -131
  534. package/src/domains/graphql/constants.ts +0 -10
  535. package/src/domains/graphql/formatters/index.ts +0 -3
  536. package/src/domains/graphql/formatters/report.ts +0 -78
  537. package/src/domains/graphql/helpers/gatherSources.test.ts +0 -92
  538. package/src/domains/graphql/helpers/gatherSources.ts +0 -58
  539. package/src/domains/graphql/helpers/index.ts +0 -6
  540. package/src/domains/graphql/helpers/parsePrefixes.test.ts +0 -44
  541. package/src/domains/graphql/helpers/parsePrefixes.ts +0 -38
  542. package/src/domains/graphql/helpers/resolveSourceFiles.test.ts +0 -56
  543. package/src/domains/graphql/helpers/resolveSourceFiles.ts +0 -45
  544. package/src/domains/graphql/helpers/routeGraphql.test.ts +0 -43
  545. package/src/domains/graphql/helpers/routeGraphql.ts +0 -28
  546. package/src/domains/graphql/index.ts +0 -24
  547. package/src/domains/graphql/operations/compileSchema.test.ts +0 -95
  548. package/src/domains/graphql/operations/compileSchema.ts +0 -107
  549. package/src/domains/graphql/operations/createSchemaServer.test.ts +0 -50
  550. package/src/domains/graphql/operations/createSchemaServer.ts +0 -75
  551. package/src/domains/graphql/operations/index.ts +0 -12
  552. package/src/domains/graphql/types.ts +0 -29
  553. package/src/domains/info/commands/index.ts +0 -4
  554. package/src/domains/info/commands/info.test.ts +0 -88
  555. package/src/domains/info/commands/info.ts +0 -47
  556. package/src/domains/info/commands/upgrade.test.ts +0 -183
  557. package/src/domains/info/commands/upgrade.ts +0 -153
  558. package/src/domains/info/constants.test.ts +0 -22
  559. package/src/domains/info/constants.ts +0 -15
  560. package/src/domains/info/formatters/index.ts +0 -8
  561. package/src/domains/info/formatters/info.test.ts +0 -207
  562. package/src/domains/info/formatters/info.ts +0 -131
  563. package/src/domains/info/formatters/upgrade.test.ts +0 -133
  564. package/src/domains/info/formatters/upgrade.ts +0 -68
  565. package/src/domains/info/index.ts +0 -9
  566. package/src/domains/info/mcp/index.ts +0 -2
  567. package/src/domains/info/mcp/specs.ts +0 -65
  568. package/src/domains/info/operations/checkRegistryVersion.test.ts +0 -124
  569. package/src/domains/info/operations/checkRegistryVersion.ts +0 -45
  570. package/src/domains/info/operations/collectInfo.test.ts +0 -122
  571. package/src/domains/info/operations/collectInfo.ts +0 -94
  572. package/src/domains/info/operations/collectStoreSummary.test.ts +0 -61
  573. package/src/domains/info/operations/collectStoreSummary.ts +0 -42
  574. package/src/domains/info/operations/index.ts +0 -5
  575. package/src/domains/info/types.test-d.ts +0 -35
  576. package/src/domains/info/types.ts +0 -54
  577. package/src/domains/llm/capabilities.test.ts +0 -91
  578. package/src/domains/llm/commands/capabilities.ts +0 -28
  579. package/src/domains/llm/commands/index.ts +0 -4
  580. package/src/domains/llm/commands/llm.ts +0 -37
  581. package/src/domains/llm/data/commandReference.ts +0 -97
  582. package/src/domains/llm/data/decisionTrees.ts +0 -50
  583. package/src/domains/llm/data/index.ts +0 -6
  584. package/src/domains/llm/data/toolCatalog.ts +0 -190
  585. package/src/domains/llm/formatters/capabilities.ts +0 -50
  586. package/src/domains/llm/formatters/index.ts +0 -4
  587. package/src/domains/llm/formatters/orientation.ts +0 -53
  588. package/src/domains/llm/index.ts +0 -9
  589. package/src/domains/llm/llmCommand.test.ts +0 -93
  590. package/src/domains/llm/mcp/index.ts +0 -2
  591. package/src/domains/llm/mcp/specs.ts +0 -94
  592. package/src/domains/llm/operations/collectContext.ts +0 -47
  593. package/src/domains/llm/operations/index.ts +0 -3
  594. package/src/domains/llm/types.ts +0 -72
  595. package/src/domains/modifier/commands/index.ts +0 -5
  596. package/src/domains/modifier/commands/list.test.ts +0 -57
  597. package/src/domains/modifier/commands/list.ts +0 -9
  598. package/src/domains/modifier/commands/lookup.test.ts +0 -91
  599. package/src/domains/modifier/commands/lookup.ts +0 -14
  600. package/src/domains/modifier/commands/sample.ts +0 -53
  601. package/src/domains/modifier/formatters/index.ts +0 -8
  602. package/src/domains/modifier/formatters/list.test.ts +0 -38
  603. package/src/domains/modifier/formatters/list.ts +0 -22
  604. package/src/domains/modifier/formatters/lookup.test.ts +0 -33
  605. package/src/domains/modifier/formatters/lookup.ts +0 -50
  606. package/src/domains/modifier/formatters/sample.ts +0 -15
  607. package/src/domains/modifier/index.ts +0 -27
  608. package/src/domains/modifier/mcp/index.ts +0 -2
  609. package/src/domains/modifier/mcp/specs.ts +0 -65
  610. package/src/domains/modifier/modifierConfig.ts +0 -36
  611. package/src/domains/modifier/operations/index.ts +0 -5
  612. package/src/domains/modifier/operations/list.test.ts +0 -39
  613. package/src/domains/modifier/operations/list.ts +0 -41
  614. package/src/domains/modifier/operations/lookup.test.ts +0 -37
  615. package/src/domains/modifier/operations/lookup.ts +0 -67
  616. package/src/domains/modifier/operations/sample.ts +0 -32
  617. package/src/domains/modifier/orchestration/index.ts +0 -3
  618. package/src/domains/modifier/orchestration/modifierEmptyError.test.ts +0 -26
  619. package/src/domains/modifier/orchestration/modifierEmptyError.ts +0 -15
  620. package/src/domains/modifier/orchestration/resolveModifierList.ts +0 -16
  621. package/src/domains/modifier/orchestration/resolveModifierLookup.ts +0 -33
  622. package/src/domains/modifier/stories.test.ts +0 -20
  623. package/src/domains/modifier/stories.ts +0 -77
  624. package/src/domains/modifier/types.ts +0 -5
  625. package/src/domains/ontology/commands/index.ts +0 -4
  626. package/src/domains/ontology/commands/list.test.ts +0 -82
  627. package/src/domains/ontology/commands/list.ts +0 -11
  628. package/src/domains/ontology/commands/show.test.ts +0 -103
  629. package/src/domains/ontology/commands/show.ts +0 -14
  630. package/src/domains/ontology/formatters/index.ts +0 -4
  631. package/src/domains/ontology/formatters/list.ts +0 -39
  632. package/src/domains/ontology/formatters/show.ts +0 -105
  633. package/src/domains/ontology/helpers/findNamespace.ts +0 -23
  634. package/src/domains/ontology/helpers/index.ts +0 -7
  635. package/src/domains/ontology/helpers/queryClasses.ts +0 -50
  636. package/src/domains/ontology/helpers/queryProperties.ts +0 -57
  637. package/src/domains/ontology/helpers/resolvePrefix.ts +0 -45
  638. package/src/domains/ontology/index.ts +0 -26
  639. package/src/domains/ontology/mcp/index.ts +0 -2
  640. package/src/domains/ontology/mcp/specs.ts +0 -16
  641. package/src/domains/ontology/operations/index.ts +0 -5
  642. package/src/domains/ontology/operations/listOntologies.test.ts +0 -45
  643. package/src/domains/ontology/operations/listOntologies.ts +0 -101
  644. package/src/domains/ontology/operations/showOntology.test.ts +0 -65
  645. package/src/domains/ontology/operations/showOntology.ts +0 -41
  646. package/src/domains/ontology/operations/showOntologyRaw.test.ts +0 -39
  647. package/src/domains/ontology/operations/showOntologyRaw.ts +0 -50
  648. package/src/domains/ontology/stories.test.ts +0 -36
  649. package/src/domains/ontology/stories.ts +0 -108
  650. package/src/domains/refs/commands/updateRefs.ts +0 -52
  651. package/src/domains/refs/formatters/updateRefs.ts +0 -27
  652. package/src/domains/refs/index.ts +0 -27
  653. package/src/domains/refs/operations/gitOps.test.ts +0 -155
  654. package/src/domains/refs/operations/gitOps.ts +0 -92
  655. package/src/domains/refs/operations/index.ts +0 -10
  656. package/src/domains/refs/operations/parseRef.test.ts +0 -157
  657. package/src/domains/refs/operations/parseRef.ts +0 -114
  658. package/src/domains/refs/operations/paths.test.ts +0 -98
  659. package/src/domains/refs/operations/paths.ts +0 -91
  660. package/src/domains/refs/operations/readGlobalRefs.test.ts +0 -63
  661. package/src/domains/refs/operations/readGlobalRefs.ts +0 -37
  662. package/src/domains/refs/operations/updateRefs.test.ts +0 -167
  663. package/src/domains/refs/operations/updateRefs.ts +0 -181
  664. package/src/domains/setup/commands/all.ts +0 -58
  665. package/src/domains/setup/commands/completions.ts +0 -85
  666. package/src/domains/setup/commands/entrypoints.test.ts +0 -170
  667. package/src/domains/setup/commands/index.ts +0 -6
  668. package/src/domains/setup/commands/lsp.ts +0 -49
  669. package/src/domains/setup/commands/mcp.ts +0 -119
  670. package/src/domains/setup/commands/skills.test.ts +0 -68
  671. package/src/domains/setup/commands/skills.ts +0 -110
  672. package/src/domains/setup/formatters/index.ts +0 -2
  673. package/src/domains/setup/formatters/skills.test.ts +0 -103
  674. package/src/domains/setup/formatters/skills.ts +0 -112
  675. package/src/domains/setup/formatters/types.ts +0 -7
  676. package/src/domains/setup/helpers/completionScripts.test.ts +0 -58
  677. package/src/domains/setup/helpers/completionScripts.ts +0 -92
  678. package/src/domains/setup/helpers/constants.ts +0 -2
  679. package/src/domains/setup/helpers/detectShell.test.ts +0 -48
  680. package/src/domains/setup/helpers/detectShell.ts +0 -20
  681. package/src/domains/setup/helpers/index.ts +0 -12
  682. package/src/domains/setup/helpers/runSetupTask.test.ts +0 -277
  683. package/src/domains/setup/helpers/runSetupTask.ts +0 -221
  684. package/src/domains/setup/index.ts +0 -33
  685. package/src/domains/setup/operations/index.ts +0 -6
  686. package/src/domains/setup/operations/setupAll.test.ts +0 -48
  687. package/src/domains/setup/operations/setupAll.ts +0 -41
  688. package/src/domains/setup/operations/setupCompletions.test.ts +0 -94
  689. package/src/domains/setup/operations/setupCompletions.ts +0 -54
  690. package/src/domains/setup/operations/setupLsp.test.ts +0 -29
  691. package/src/domains/setup/operations/setupLsp.ts +0 -17
  692. package/src/domains/setup/operations/setupMcp.test.ts +0 -120
  693. package/src/domains/setup/operations/setupMcp.ts +0 -108
  694. package/src/domains/setup/operations/setupSkills.test.ts +0 -191
  695. package/src/domains/setup/operations/setupSkills.ts +0 -160
  696. package/src/domains/setup/types.ts +0 -18
  697. package/src/domains/shared/ToolSpec.ts +0 -49
  698. package/src/domains/shared/bootStore.ts +0 -135
  699. package/src/domains/shared/buildQuery.ts +0 -18
  700. package/src/domains/shared/compactUri.test.ts +0 -32
  701. package/src/domains/shared/compactUri.ts +0 -21
  702. package/src/domains/shared/context.ts +0 -16
  703. package/src/domains/shared/contracts.ts +0 -164
  704. package/src/domains/shared/createInteractivePromptSession.test.ts +0 -439
  705. package/src/domains/shared/createInteractivePromptSession.ts +0 -236
  706. package/src/domains/shared/emptyErrorRecovery.test.ts +0 -109
  707. package/src/domains/shared/extractLocalName.test.ts +0 -21
  708. package/src/domains/shared/extractLocalName.ts +0 -14
  709. package/src/domains/shared/filters/buildChannelFilter.test.ts +0 -52
  710. package/src/domains/shared/filters/buildChannelFilter.ts +0 -41
  711. package/src/domains/shared/filters/buildFilterConfig.ts +0 -15
  712. package/src/domains/shared/filters/buildFilters.test.ts +0 -33
  713. package/src/domains/shared/filters/buildFilters.ts +0 -30
  714. package/src/domains/shared/filters/buildTierFilter.test.ts +0 -78
  715. package/src/domains/shared/filters/buildTierFilter.ts +0 -69
  716. package/src/domains/shared/filters/describeFilters.ts +0 -14
  717. package/src/domains/shared/filters/index.ts +0 -10
  718. package/src/domains/shared/formatters.ts +0 -82
  719. package/src/domains/shared/loaders/bundledLoader.test.ts +0 -248
  720. package/src/domains/shared/loaders/bundledLoader.ts +0 -206
  721. package/src/domains/shared/loaders/gitLoader.ts +0 -31
  722. package/src/domains/shared/loaders/index.ts +0 -9
  723. package/src/domains/shared/loaders/localLoader.ts +0 -87
  724. package/src/domains/shared/loaders/readPackageDir.ts +0 -147
  725. package/src/domains/shared/loaders/storyAssetsPlugin.test.ts +0 -84
  726. package/src/domains/shared/loaders/storyAssetsPlugin.ts +0 -46
  727. package/src/domains/shared/lookupMany.test.ts +0 -120
  728. package/src/domains/shared/lookupMany.ts +0 -85
  729. package/src/domains/shared/mergeAndParseRefs.test.ts +0 -89
  730. package/src/domains/shared/mergeAndParseRefs.ts +0 -44
  731. package/src/domains/shared/namespaces.ts +0 -18
  732. package/src/domains/shared/packages.ts +0 -20
  733. package/src/domains/shared/pickRandom.ts +0 -22
  734. package/src/domains/shared/prefixes.ts +0 -37
  735. package/src/domains/shared/renderers.ts +0 -410
  736. package/src/domains/shared/resolveConfiguredGraphs.test.ts +0 -27
  737. package/src/domains/shared/resolveConfiguredGraphs.ts +0 -41
  738. package/src/domains/shared/runtime.ts +0 -61
  739. package/src/domains/shared/sampleFormatters.ts +0 -47
  740. package/src/domains/shared/semanticPackage.ts +0 -112
  741. package/src/domains/shared/stories/compileLookupCommand.test.ts +0 -145
  742. package/src/domains/shared/stories/compileLookupCommand.ts +0 -100
  743. package/src/domains/shared/stories/compileLookupTool.test.ts +0 -105
  744. package/src/domains/shared/stories/compileLookupTool.ts +0 -96
  745. package/src/domains/shared/stories/compileReadCommand.test.ts +0 -121
  746. package/src/domains/shared/stories/compileReadCommand.ts +0 -48
  747. package/src/domains/shared/stories/compileReadTool.test.ts +0 -64
  748. package/src/domains/shared/stories/compileReadTool.ts +0 -38
  749. package/src/domains/shared/stories/condense.test.ts +0 -18
  750. package/src/domains/shared/stories/condense.ts +0 -15
  751. package/src/domains/shared/stories/index.ts +0 -20
  752. package/src/domains/shared/stories/normalizeNames.test.ts +0 -20
  753. package/src/domains/shared/stories/normalizeNames.ts +0 -22
  754. package/src/domains/shared/stories/pack/applyPackFilters.test.ts +0 -102
  755. package/src/domains/shared/stories/pack/applyPackFilters.ts +0 -76
  756. package/src/domains/shared/stories/pack/buildLookupQuery.test.ts +0 -51
  757. package/src/domains/shared/stories/pack/buildLookupQuery.ts +0 -80
  758. package/src/domains/shared/stories/pack/collectPackStories.test.ts +0 -108
  759. package/src/domains/shared/stories/pack/collectPackStories.ts +0 -76
  760. package/src/domains/shared/stories/pack/compilePackCommands.ts +0 -40
  761. package/src/domains/shared/stories/pack/compilePackStories.test.ts +0 -146
  762. package/src/domains/shared/stories/pack/compilePackStories.ts +0 -253
  763. package/src/domains/shared/stories/pack/compilePackToolSpecs.ts +0 -43
  764. package/src/domains/shared/stories/pack/index.ts +0 -28
  765. package/src/domains/shared/stories/pack/runSelectQuery.ts +0 -31
  766. package/src/domains/shared/stories/pack/standardParity.test.ts +0 -308
  767. package/src/domains/shared/stories/pack/types.ts +0 -104
  768. package/src/domains/shared/stories/pack/validateStoryPackDefinition.test.ts +0 -240
  769. package/src/domains/shared/stories/pack/validateStoryPackDefinition.ts +0 -408
  770. package/src/domains/shared/stories/projectCliParameters.test.ts +0 -59
  771. package/src/domains/shared/stories/projectCliParameters.ts +0 -57
  772. package/src/domains/shared/stories/projectToolParams.test.ts +0 -50
  773. package/src/domains/shared/stories/projectToolParams.ts +0 -32
  774. package/src/domains/shared/stories/requirePragmaContext.test.ts +0 -23
  775. package/src/domains/shared/stories/requirePragmaContext.ts +0 -23
  776. package/src/domains/shared/stories/resolveLookupDetailed.test.ts +0 -57
  777. package/src/domains/shared/stories/resolveLookupDetailed.ts +0 -27
  778. package/src/domains/shared/stories/types.ts +0 -171
  779. package/src/domains/shared/suggestions/detectCrossDomain.test.ts +0 -43
  780. package/src/domains/shared/suggestions/detectCrossDomain.ts +0 -116
  781. package/src/domains/shared/suggestions/expandGlob.test.ts +0 -92
  782. package/src/domains/shared/suggestions/expandGlob.ts +0 -52
  783. package/src/domains/shared/suggestions/expandLookupQueries.ts +0 -57
  784. package/src/domains/shared/suggestions/index.ts +0 -7
  785. package/src/domains/shared/suggestions/listDomainNames.ts +0 -61
  786. package/src/domains/shared/suggestions/suggestNames.test.ts +0 -70
  787. package/src/domains/shared/suggestions/suggestNames.ts +0 -130
  788. package/src/domains/shared/types/block.ts +0 -107
  789. package/src/domains/shared/types/common.ts +0 -33
  790. package/src/domains/shared/types/graph.ts +0 -17
  791. package/src/domains/shared/types/index.ts +0 -50
  792. package/src/domains/shared/types/modifier.ts +0 -22
  793. package/src/domains/shared/types/ontology.ts +0 -50
  794. package/src/domains/shared/types/runtime.ts +0 -24
  795. package/src/domains/shared/types/sample.ts +0 -17
  796. package/src/domains/shared/types/standard.ts +0 -64
  797. package/src/domains/shared/types/tier.ts +0 -15
  798. package/src/domains/shared/types/token.ts +0 -30
  799. package/src/domains/skill/commands/index.ts +0 -4
  800. package/src/domains/skill/commands/list.test.ts +0 -115
  801. package/src/domains/skill/commands/list.ts +0 -11
  802. package/src/domains/skill/commands/lookup.test.ts +0 -118
  803. package/src/domains/skill/commands/lookup.ts +0 -14
  804. package/src/domains/skill/formatters/index.ts +0 -3
  805. package/src/domains/skill/formatters/list.test.ts +0 -140
  806. package/src/domains/skill/formatters/list.ts +0 -119
  807. package/src/domains/skill/formatters/lookup.test.ts +0 -46
  808. package/src/domains/skill/formatters/lookup.ts +0 -57
  809. package/src/domains/skill/formatters/types.ts +0 -8
  810. package/src/domains/skill/helpers/index.ts +0 -6
  811. package/src/domains/skill/helpers/parseFrontmatter.test.ts +0 -122
  812. package/src/domains/skill/helpers/parseFrontmatter.ts +0 -112
  813. package/src/domains/skill/helpers/resolveSkillSources.ts +0 -70
  814. package/src/domains/skill/index.ts +0 -23
  815. package/src/domains/skill/mcp/index.ts +0 -2
  816. package/src/domains/skill/mcp/specs.ts +0 -19
  817. package/src/domains/skill/operations/discover.test.ts +0 -176
  818. package/src/domains/skill/operations/discover.ts +0 -59
  819. package/src/domains/skill/operations/index.ts +0 -5
  820. package/src/domains/skill/operations/list.test.ts +0 -76
  821. package/src/domains/skill/operations/list.ts +0 -47
  822. package/src/domains/skill/operations/lookup.test.ts +0 -91
  823. package/src/domains/skill/operations/lookup.ts +0 -70
  824. package/src/domains/skill/stories.test.ts +0 -43
  825. package/src/domains/skill/stories.ts +0 -103
  826. package/src/domains/skill/types.ts +0 -33
  827. package/src/domains/standard/commands/categories.test.ts +0 -70
  828. package/src/domains/standard/commands/categories.ts +0 -48
  829. package/src/domains/standard/commands/index.ts +0 -6
  830. package/src/domains/standard/commands/list.test.ts +0 -105
  831. package/src/domains/standard/commands/list.ts +0 -11
  832. package/src/domains/standard/commands/lookup.test.ts +0 -135
  833. package/src/domains/standard/commands/lookup.ts +0 -14
  834. package/src/domains/standard/commands/sample.ts +0 -57
  835. package/src/domains/standard/formatters/categories.test.ts +0 -44
  836. package/src/domains/standard/formatters/categories.ts +0 -38
  837. package/src/domains/standard/formatters/index.ts +0 -10
  838. package/src/domains/standard/formatters/list.test.ts +0 -169
  839. package/src/domains/standard/formatters/list.ts +0 -184
  840. package/src/domains/standard/formatters/lookup.test.ts +0 -95
  841. package/src/domains/standard/formatters/lookup.ts +0 -101
  842. package/src/domains/standard/formatters/sample.ts +0 -15
  843. package/src/domains/standard/formatters/types.ts +0 -31
  844. package/src/domains/standard/index.ts +0 -40
  845. package/src/domains/standard/mcp/index.ts +0 -2
  846. package/src/domains/standard/mcp/specs.ts +0 -89
  847. package/src/domains/standard/operations/categories.test.ts +0 -61
  848. package/src/domains/standard/operations/categories.ts +0 -38
  849. package/src/domains/standard/operations/index.ts +0 -6
  850. package/src/domains/standard/operations/list.test.ts +0 -75
  851. package/src/domains/standard/operations/list.ts +0 -64
  852. package/src/domains/standard/operations/lookup.test.ts +0 -58
  853. package/src/domains/standard/operations/lookup.ts +0 -151
  854. package/src/domains/standard/operations/sample.ts +0 -35
  855. package/src/domains/standard/orchestration/buildStandardFilters.ts +0 -11
  856. package/src/domains/standard/orchestration/index.ts +0 -4
  857. package/src/domains/standard/orchestration/resolveStandardList.ts +0 -45
  858. package/src/domains/standard/orchestration/resolveStandardLookup.ts +0 -33
  859. package/src/domains/standard/orchestration/standardEmptyError.test.ts +0 -33
  860. package/src/domains/standard/orchestration/standardEmptyError.ts +0 -29
  861. package/src/domains/standard/standardConfig.ts +0 -42
  862. package/src/domains/standard/stories.test.ts +0 -24
  863. package/src/domains/standard/stories.ts +0 -151
  864. package/src/domains/standard/types.ts +0 -15
  865. package/src/domains/tier/commands/index.ts +0 -3
  866. package/src/domains/tier/commands/list.test.ts +0 -67
  867. package/src/domains/tier/commands/list.ts +0 -9
  868. package/src/domains/tier/formatters/index.ts +0 -3
  869. package/src/domains/tier/formatters/list.test.ts +0 -33
  870. package/src/domains/tier/formatters/list.ts +0 -45
  871. package/src/domains/tier/index.ts +0 -17
  872. package/src/domains/tier/mcp/index.ts +0 -2
  873. package/src/domains/tier/mcp/specs.ts +0 -12
  874. package/src/domains/tier/operations/index.ts +0 -3
  875. package/src/domains/tier/operations/list.test.ts +0 -32
  876. package/src/domains/tier/operations/list.ts +0 -33
  877. package/src/domains/tier/stories.test.ts +0 -22
  878. package/src/domains/tier/stories.ts +0 -52
  879. package/src/domains/token/commands/add-config.test.ts +0 -68
  880. package/src/domains/token/commands/add-config.ts +0 -62
  881. package/src/domains/token/commands/index.ts +0 -6
  882. package/src/domains/token/commands/list.test.ts +0 -82
  883. package/src/domains/token/commands/list.ts +0 -54
  884. package/src/domains/token/commands/lookup.test.ts +0 -125
  885. package/src/domains/token/commands/lookup.ts +0 -95
  886. package/src/domains/token/commands/sample.ts +0 -53
  887. package/src/domains/token/formatters/index.ts +0 -8
  888. package/src/domains/token/formatters/list.test.ts +0 -37
  889. package/src/domains/token/formatters/list.ts +0 -24
  890. package/src/domains/token/formatters/lookup.test.ts +0 -61
  891. package/src/domains/token/formatters/lookup.ts +0 -107
  892. package/src/domains/token/formatters/sample.ts +0 -16
  893. package/src/domains/token/index.ts +0 -40
  894. package/src/domains/token/mcp/index.ts +0 -2
  895. package/src/domains/token/mcp/specs.ts +0 -195
  896. package/src/domains/token/operations/add-config.test.ts +0 -68
  897. package/src/domains/token/operations/add-config.ts +0 -61
  898. package/src/domains/token/operations/index.ts +0 -8
  899. package/src/domains/token/operations/list.test.ts +0 -50
  900. package/src/domains/token/operations/list.ts +0 -52
  901. package/src/domains/token/operations/lookup.test.ts +0 -42
  902. package/src/domains/token/operations/lookup.ts +0 -75
  903. package/src/domains/token/operations/sample.ts +0 -32
  904. package/src/domains/token/orchestration/index.ts +0 -3
  905. package/src/domains/token/orchestration/resolveTokenList.ts +0 -17
  906. package/src/domains/token/orchestration/resolveTokenLookup.ts +0 -33
  907. package/src/domains/token/orchestration/tokenEmptyError.test.ts +0 -33
  908. package/src/domains/token/orchestration/tokenEmptyError.ts +0 -20
  909. package/src/domains/token/tokenConfig.ts +0 -38
  910. package/src/domains/token/types.ts +0 -6
  911. package/src/domains/trace/commands/clear.ts +0 -71
  912. package/src/domains/trace/commands/index.ts +0 -5
  913. package/src/domains/trace/commands/sessions.ts +0 -32
  914. package/src/domains/trace/commands/show.ts +0 -145
  915. package/src/domains/trace/formatters/index.ts +0 -9
  916. package/src/domains/trace/formatters/sessions.ts +0 -80
  917. package/src/domains/trace/formatters/show.ts +0 -122
  918. package/src/domains/trace/index.ts +0 -17
  919. package/src/domains/trace/operations/index.ts +0 -8
  920. package/src/domains/trace/operations/listSessions.test.ts +0 -55
  921. package/src/domains/trace/operations/listSessions.ts +0 -52
  922. package/src/domains/trace/operations/readTraceLog.test.ts +0 -100
  923. package/src/domains/trace/operations/readTraceLog.ts +0 -104
  924. package/src/domains/trace/tracePlugin.test.ts +0 -171
  925. package/src/domains/trace/tracePlugin.ts +0 -159
  926. package/src/domains/trace/types.ts +0 -65
  927. package/src/embedWasm.ts +0 -42
  928. package/src/error/PragmaError.test.ts +0 -121
  929. package/src/error/PragmaError.ts +0 -177
  930. package/src/error/constants.ts +0 -12
  931. package/src/error/index.ts +0 -4
  932. package/src/error/types.ts +0 -55
  933. package/src/mcp/createMcpServer.test.ts +0 -41
  934. package/src/mcp/createMcpServer.ts +0 -53
  935. package/src/mcp/error/buildRecovery.test.ts +0 -37
  936. package/src/mcp/error/buildRecovery.ts +0 -17
  937. package/src/mcp/error/index.ts +0 -12
  938. package/src/mcp/error/serializeError.test.ts +0 -121
  939. package/src/mcp/error/serializeError.ts +0 -31
  940. package/src/mcp/error/serializeErrorPayload.test.ts +0 -38
  941. package/src/mcp/error/serializeErrorPayload.ts +0 -34
  942. package/src/mcp/error/types.ts +0 -59
  943. package/src/mcp/index.ts +0 -15
  944. package/src/mcp/registerResources.test.ts +0 -566
  945. package/src/mcp/registerResources.ts +0 -9
  946. package/src/mcp/resources/buildGraphIndex.ts +0 -167
  947. package/src/mcp/resources/buildResourceList.test.ts +0 -97
  948. package/src/mcp/resources/buildResourceList.ts +0 -176
  949. package/src/mcp/resources/classifyEntity.test.ts +0 -40
  950. package/src/mcp/resources/classifyEntity.ts +0 -27
  951. package/src/mcp/resources/constants.ts +0 -105
  952. package/src/mcp/resources/displayPredicates.ts +0 -62
  953. package/src/mcp/resources/pickFirstValue.test.ts +0 -29
  954. package/src/mcp/resources/pickFirstValue.ts +0 -26
  955. package/src/mcp/resources/pickPrimaryType.test.ts +0 -41
  956. package/src/mcp/resources/pickPrimaryType.ts +0 -26
  957. package/src/mcp/resources/rankUriCompletions.test.ts +0 -52
  958. package/src/mcp/resources/rankUriCompletions.ts +0 -64
  959. package/src/mcp/resources/readEntity.ts +0 -169
  960. package/src/mcp/resources/registerResources.ts +0 -126
  961. package/src/mcp/resources/types.ts +0 -128
  962. package/src/mcp/runMcpServer.test.ts +0 -66
  963. package/src/mcp/runMcpServer.ts +0 -24
  964. package/src/mcp/tools/index.ts +0 -66
  965. package/src/mcp/tools/registerFromSpec.ts +0 -97
  966. package/src/mcp/tools/registerTools.test.ts +0 -1201
  967. package/src/mcp/types.ts +0 -66
  968. package/src/mcp/utils/estimateTokens.test.ts +0 -14
  969. package/src/mcp/utils/estimateTokens.ts +0 -9
  970. package/src/mcp/utils/index.ts +0 -11
  971. package/src/mcp/utils/wrapTool.test.ts +0 -109
  972. package/src/mcp/utils/wrapTool.ts +0 -81
  973. package/src/package-manager/constants.ts +0 -29
  974. package/src/package-manager/detectInstallSource.test.ts +0 -23
  975. package/src/package-manager/detectInstallSource.ts +0 -111
  976. package/src/package-manager/detectLocalInstall.test.ts +0 -16
  977. package/src/package-manager/detectLocalInstall.ts +0 -43
  978. package/src/package-manager/detectPackageManager.test.ts +0 -81
  979. package/src/package-manager/detectPackageManager.ts +0 -30
  980. package/src/package-manager/index.ts +0 -6
  981. package/src/package-manager/types.ts +0 -10
  982. package/src/pipeline/collectCommands.test.ts +0 -37
  983. package/src/pipeline/collectCommands.ts +0 -60
  984. package/src/pipeline/constants.ts +0 -14
  985. package/src/pipeline/createProgram.test.ts +0 -112
  986. package/src/pipeline/createProgram.ts +0 -89
  987. package/src/pipeline/formatTerminal.test.ts +0 -43
  988. package/src/pipeline/formatTerminal.ts +0 -53
  989. package/src/pipeline/index.ts +0 -22
  990. package/src/pipeline/mapExitCode.test.ts +0 -41
  991. package/src/pipeline/mapExitCode.ts +0 -12
  992. package/src/pipeline/parseGlobalFlags.test.ts +0 -92
  993. package/src/pipeline/parseGlobalFlags.ts +0 -46
  994. package/src/pipeline/renderError.test.ts +0 -151
  995. package/src/pipeline/renderError.ts +0 -129
  996. package/src/pipeline/resolveCommandKind.test.ts +0 -68
  997. package/src/pipeline/resolveCommandKind.ts +0 -78
  998. package/src/pipeline/runCli.orchestration.test.ts +0 -419
  999. package/src/pipeline/runCli.test.ts +0 -70
  1000. package/src/pipeline/runCli.ts +0 -268
  1001. package/src/pipeline/types.ts +0 -17
  1002. package/src/testing/cli.ts +0 -43
  1003. package/src/testing/createTestMcpClient.ts +0 -68
  1004. package/src/testing/dsFixtures.ts +0 -506
  1005. package/src/testing/fixtures/canonical-config.json +0 -4
  1006. package/src/testing/fixtures/canonical.ttl +0 -437
  1007. package/src/testing/fixtures/filtered-config.json +0 -4
  1008. package/src/testing/fixtures.ts +0 -34
  1009. package/src/testing/graphqlFixtures.ts +0 -72
  1010. package/src/testing/helpers/assertParity.ts +0 -28
  1011. package/src/testing/helpers/createTestMcpClient.ts +0 -40
  1012. package/src/testing/helpers/createTestRuntime.ts +0 -67
  1013. package/src/testing/index.ts +0 -25
  1014. package/src/testing/integration/__snapshots__/executor-golden.test.ts.snap +0 -1207
  1015. package/src/testing/integration/agent-session.test.ts +0 -148
  1016. package/src/testing/integration/boot.test.ts +0 -105
  1017. package/src/testing/integration/cli-user-stories.test.ts +0 -198
  1018. package/src/testing/integration/cross-binary-byte-equality.test.ts +0 -129
  1019. package/src/testing/integration/edge-cases.test.ts +0 -263
  1020. package/src/testing/integration/executor-execution.test.ts +0 -101
  1021. package/src/testing/integration/executor-golden.test.ts +0 -145
  1022. package/src/testing/integration/mcp-surface.test.ts +0 -580
  1023. package/src/testing/integration/parity.test.ts +0 -547
  1024. package/src/testing/regression/0001-skill-discovery-granularity.test.ts +0 -71
  1025. package/src/testing/standardParityFixtures.ts +0 -92
  1026. package/src/testing/store.ts +0 -39
  1027. package/src/testing/storyFixtures.ts +0 -63
  1028. package/src/testing/types.ts +0 -20
  1029. package/src/tui/components/BulletList/BulletList.tsx +0 -46
  1030. package/src/tui/components/BulletList/index.ts +0 -2
  1031. package/src/tui/components/BulletList/types.ts +0 -6
  1032. package/src/tui/components/Card/Card.tsx +0 -73
  1033. package/src/tui/components/Card/index.ts +0 -1
  1034. package/src/tui/components/Card/types.ts +0 -12
  1035. package/src/tui/components/CodeBlock/CodeBlock.tsx +0 -37
  1036. package/src/tui/components/CodeBlock/index.ts +0 -2
  1037. package/src/tui/components/CodeBlock/types.ts +0 -6
  1038. package/src/tui/components/DataRow/DataRow.tsx +0 -80
  1039. package/src/tui/components/DataRow/index.ts +0 -2
  1040. package/src/tui/components/DataRow/types.ts +0 -14
  1041. package/src/tui/components/FieldRow/FieldRow.tsx +0 -24
  1042. package/src/tui/components/FieldRow/index.ts +0 -2
  1043. package/src/tui/components/FieldRow/types.ts +0 -10
  1044. package/src/tui/components/HeaderRow/HeaderRow.tsx +0 -32
  1045. package/src/tui/components/HeaderRow/index.ts +0 -2
  1046. package/src/tui/components/HeaderRow/types.ts +0 -8
  1047. package/src/tui/components/MarkdownText/MarkdownText.tsx +0 -19
  1048. package/src/tui/components/MarkdownText/index.ts +0 -2
  1049. package/src/tui/components/MarkdownText/types.ts +0 -4
  1050. package/src/tui/components/MiniTable/MiniTable.tsx +0 -82
  1051. package/src/tui/components/MiniTable/index.ts +0 -2
  1052. package/src/tui/components/MiniTable/types.ts +0 -6
  1053. package/src/tui/components/SectionRenderer/SectionRenderer.tsx +0 -91
  1054. package/src/tui/components/SectionRenderer/index.ts +0 -2
  1055. package/src/tui/components/SectionRenderer/types.ts +0 -15
  1056. package/src/tui/components/TreeView/TreeView.tsx +0 -84
  1057. package/src/tui/components/TreeView/index.ts +0 -2
  1058. package/src/tui/components/TreeView/types.ts +0 -6
  1059. package/src/tui/components/index.ts +0 -19
  1060. package/src/tui/constants.ts +0 -39
  1061. package/src/tui/createListView.ts +0 -23
  1062. package/src/tui/createLookupView.ts +0 -26
  1063. package/src/tui/helpers/computeWidths.ts +0 -53
  1064. package/src/tui/helpers/fitColumns.ts +0 -33
  1065. package/src/tui/helpers/formatMarkdown.ts +0 -19
  1066. package/src/tui/helpers/getTerminalSize.ts +0 -16
  1067. package/src/tui/helpers/index.ts +0 -6
  1068. package/src/tui/helpers/syntaxColor.ts +0 -67
  1069. package/src/tui/helpers/truncateText.ts +0 -12
  1070. package/src/tui/hooks/index.ts +0 -3
  1071. package/src/tui/hooks/types.ts +0 -7
  1072. package/src/tui/hooks/useAutoExit.ts +0 -17
  1073. package/src/tui/hooks/useTerminalSize.ts +0 -19
  1074. package/src/tui/index.ts +0 -15
  1075. package/src/tui/renderInk.tsx +0 -18
  1076. package/src/tui/types.ts +0 -12
  1077. package/src/tui/views/ListView/ListView.tsx +0 -104
  1078. package/src/tui/views/ListView/index.ts +0 -2
  1079. package/src/tui/views/ListView/types.ts +0 -14
  1080. package/src/tui/views/LookupView/LookupView.tsx +0 -244
  1081. package/src/tui/views/LookupView/index.ts +0 -2
  1082. package/src/tui/views/LookupView/types.ts +0 -16
  1083. package/src/tui/views/index.ts +0 -4
@@ -0,0 +1,231 @@
1
+ /**
2
+ * The MCP resource browser — a `pragma:{+uri}` template over the pack index.
3
+ *
4
+ * Listing and autocomplete are STORELESS: they read the enriched `index.json`
5
+ * (readPackIndex) off disk, so the resource surface costs nothing until an agent
6
+ * reads one. A read is STORE-BACKED through the SHARED {@link readEntity} — the
7
+ * same reader `graph inspect` uses — so a resource read and a `graph inspect` of
8
+ * the same URI return identical content (the mirror contract).
9
+ *
10
+ * Degradation (Risk4): on a missing or legacy (pre-v2) index the listing returns
11
+ * a single "run `pragma sources update`" hint — never a live re-index of the
12
+ * store on the resource path.
13
+ *
14
+ * The MCP SDK's `ResourceTemplate` is dynamic-imported inside `register` so this
15
+ * module — reachable on the capabilities import graph — never pulls the SDK onto
16
+ * the `--help`/`__complete` fast path.
17
+ */
18
+
19
+ import { readPackIndex } from "../../kernel/completion/entitySource.js";
20
+ import { PragmaError } from "../../kernel/error/PragmaError.js";
21
+ import type { PackIndex } from "../../kernel/runtime/graphpack/types.js";
22
+ import { readEntity } from "../../kernel/runtime/readEntity.js";
23
+ import type { McpResourceProvider } from "../../kernel/spec/types.js";
24
+
25
+ /** Max autocomplete suggestions returned for a partial URI. */
26
+ const COMPLETION_LIMIT = 50;
27
+
28
+ /** MCP annotation priority for a schema (TBox) entry — surfaced above individuals. */
29
+ const CLASS_PRIORITY = 0.9;
30
+ /** MCP annotation priority for an individual (ABox) entry. */
31
+ const INDIVIDUAL_PRIORITY = 0.3;
32
+
33
+ /** The `pragma:` URI scheme + the single reserved-expansion template variable. */
34
+ const URI_TEMPLATE = "pragma:{+uri}";
35
+
36
+ const TEMPLATE_DESCRIPTION =
37
+ "Knowledge-graph entities from the local pack. Read any entry by its prefixed " +
38
+ "URI (e.g. pragma:ds:button); autocomplete matches URI or label substrings. " +
39
+ "Content mirrors `pragma graph inspect <uri>`.";
40
+
41
+ /** Agent-navigability annotations mirrored onto a listed resource. */
42
+ export interface ResourceAnnotations {
43
+ /** MCP audience roles (the SDK's literal union) — always the assistant here. */
44
+ readonly audience: ("user" | "assistant")[];
45
+ readonly priority: number;
46
+ }
47
+
48
+ /** The audience every listed resource carries (assistant-facing). */
49
+ const ASSISTANT_AUDIENCE: ("user" | "assistant")[] = ["assistant"];
50
+
51
+ /** One resource entry in the listing. */
52
+ export interface ListedResource {
53
+ readonly uri: string;
54
+ readonly name: string;
55
+ readonly description?: string;
56
+ readonly mimeType: "application/json";
57
+ /** Audience + priority (schema surfaced above individuals). */
58
+ readonly annotations?: ResourceAnnotations;
59
+ /** Taxonomy metadata: `pragma/box` (tbox|abox) + optional instance count. */
60
+ readonly _meta?: Record<string, unknown>;
61
+ }
62
+
63
+ /**
64
+ * Build the resource listing from the storeless pack index.
65
+ *
66
+ * @param index - The active pack index, or `undefined` when none is reachable.
67
+ * @returns One resource per indexed entity, schema (TBox) first; a single
68
+ * recovery entry when the index is missing or pre-v2 (no enrichment).
69
+ */
70
+ export function buildResourceList(
71
+ index: PackIndex | undefined,
72
+ ): ListedResource[] {
73
+ // readPackIndex returns raw JSON.parse output (no zod), so guard structurally:
74
+ // a malformed index missing `version` must degrade to the recovery hint, not
75
+ // fall through to `[...index.entities]` (a TypeError inside the MCP handler).
76
+ if (!index || index.version !== 2 || !Array.isArray(index.entities)) {
77
+ return [
78
+ {
79
+ uri: "pragma:sources",
80
+ name: "Store not indexed",
81
+ description:
82
+ "No enriched entity index. Run `pragma sources update` to build it.",
83
+ mimeType: "application/json",
84
+ },
85
+ ];
86
+ }
87
+ const ordered = [...index.entities].sort((a, b) => {
88
+ const boxRank = (e: typeof a) => (e.box === "tbox" ? 0 : 1);
89
+ return boxRank(a) - boxRank(b) || a.name.localeCompare(b.name);
90
+ });
91
+ return ordered.map((entity) => {
92
+ const isTbox = entity.box === "tbox";
93
+ // Port of the old shell's `_meta` taxonomy: `pragma/box` + a priority that
94
+ // ranks schema (classes/properties) above individuals, so an agent browsing
95
+ // the resource list sees the schema first. `pragma/instanceCount` is the
96
+ // per-type count carried in the index for a TBox class entry.
97
+ // `instanceCountByType` is keyed by the full type IRI; a TBox class entry's
98
+ // own IRI is that key, so it carries the count of its individuals.
99
+ const instanceCount =
100
+ isTbox && entity.uri ? index.instanceCountByType[entity.uri] : undefined;
101
+ const meta: Record<string, unknown> = {
102
+ "pragma/box": entity.box ?? "abox",
103
+ };
104
+ if (typeof instanceCount === "number") {
105
+ meta["pragma/instanceCount"] = instanceCount;
106
+ }
107
+ return {
108
+ uri: `pragma:${entity.prefixed ?? entity.name}`,
109
+ name: entity.label || entity.name,
110
+ ...(entity.description ? { description: entity.description } : {}),
111
+ mimeType: "application/json" as const,
112
+ annotations: {
113
+ audience: ASSISTANT_AUDIENCE,
114
+ priority: isTbox ? CLASS_PRIORITY : INDIVIDUAL_PRIORITY,
115
+ },
116
+ _meta: meta,
117
+ };
118
+ });
119
+ }
120
+
121
+ /**
122
+ * Rank URI autocomplete candidates against a partial query (case-insensitive over
123
+ * both the prefixed URI and the label; exact > prefix > substring), capped.
124
+ */
125
+ export function rankUriCompletions(
126
+ entities: readonly PackIndex["entities"][number][],
127
+ query: string,
128
+ limit: number,
129
+ ): string[] {
130
+ const needle = query.toLowerCase();
131
+ const score = (field: string): number =>
132
+ field === needle
133
+ ? 3
134
+ : field.startsWith(needle)
135
+ ? 2
136
+ : field.includes(needle)
137
+ ? 1
138
+ : 0;
139
+ const scored: { prefixed: string; score: number }[] = [];
140
+ for (const entity of entities) {
141
+ const prefixed = entity.prefixed ?? entity.name;
142
+ const uriScore = score(prefixed.toLowerCase());
143
+ const labelScore = entity.label ? score(entity.label.toLowerCase()) : 0;
144
+ const best = Math.max(uriScore, labelScore);
145
+ if (best > 0) scored.push({ prefixed, score: best });
146
+ }
147
+ scored.sort((a, b) =>
148
+ b.score !== a.score
149
+ ? b.score - a.score
150
+ : a.prefixed.localeCompare(b.prefixed),
151
+ );
152
+ const seen = new Set<string>();
153
+ const ranked: string[] = [];
154
+ for (const { prefixed } of scored) {
155
+ if (seen.has(prefixed)) continue;
156
+ seen.add(prefixed);
157
+ ranked.push(prefixed);
158
+ if (ranked.length >= limit) break;
159
+ }
160
+ return ranked;
161
+ }
162
+
163
+ /** Read the single `uri` template variable, tolerating array expansion. */
164
+ function readUriVariable(value: string | string[] | undefined): string {
165
+ const uri = Array.isArray(value) ? value.at(0) : value;
166
+ if (uri === undefined) {
167
+ throw PragmaError.invalidInput("uri", String(value), {
168
+ recovery: { message: "Provide a prefixed or full entity URI." },
169
+ });
170
+ }
171
+ return uri;
172
+ }
173
+
174
+ /** The graph-entity resource provider (registered by buildServer). */
175
+ export const resourceProvider: McpResourceProvider = {
176
+ // The single authoring point for the template id — the surface emitter reads
177
+ // this so `mcpSurface.resources` cannot drift from what `register` installs.
178
+ surface: { templates: [URI_TEMPLATE] },
179
+ async register(server, runtime) {
180
+ const { ResourceTemplate } = await import(
181
+ "@modelcontextprotocol/sdk/server/mcp.js"
182
+ );
183
+ const template = new ResourceTemplate(URI_TEMPLATE, {
184
+ list: async () => ({
185
+ resources: buildResourceList(readPackIndex(runtime.cwd)),
186
+ }),
187
+ complete: {
188
+ uri: async (value: string) =>
189
+ rankUriCompletions(
190
+ readPackIndex(runtime.cwd)?.entities ?? [],
191
+ value,
192
+ COMPLETION_LIMIT,
193
+ ),
194
+ },
195
+ });
196
+
197
+ server.registerResource(
198
+ "graph-entity",
199
+ template,
200
+ { description: TEMPLATE_DESCRIPTION, mimeType: "application/json" },
201
+ async (
202
+ url: URL,
203
+ variables: Record<string, string | string[] | undefined>,
204
+ ) => {
205
+ try {
206
+ const uri = readUriVariable(variables.uri);
207
+ const entity = await readEntity(runtime, uri);
208
+ return {
209
+ contents: [
210
+ {
211
+ uri: url.href,
212
+ mimeType: "application/json",
213
+ text: JSON.stringify(entity, null, 2),
214
+ },
215
+ ],
216
+ };
217
+ } catch (error) {
218
+ const message =
219
+ error instanceof PragmaError
220
+ ? JSON.stringify({ code: error.code, message: error.message })
221
+ : String(error);
222
+ return {
223
+ contents: [
224
+ { uri: url.href, mimeType: "text/plain", text: message },
225
+ ],
226
+ };
227
+ }
228
+ },
229
+ );
230
+ },
231
+ };
@@ -0,0 +1,114 @@
1
+ /**
2
+ * The MCP resource browser (PROTECTED).
3
+ *
4
+ * list/autocomplete are storeless over the enriched pack index; a read is
5
+ * store-backed and shares `graph inspect`'s entity reader (the mirror). Resources
6
+ * never enter the emitted tool surface. On a missing/legacy index the listing
7
+ * degrades to a `pragma sources update` hint (never a live re-index).
8
+ */
9
+
10
+ import { afterAll, beforeAll, describe, expect, it } from "vitest";
11
+ import { readPackIndex } from "../../kernel/completion/entitySource.js";
12
+ import { verbKey } from "../../kernel/packs/uniqueness.js";
13
+ import { bootRuntime } from "../../kernel/runtime/boot.js";
14
+ import type { PackIndex } from "../../kernel/runtime/graphpack/types.js";
15
+ import type { InspectResult } from "../../kernel/runtime/readEntity.js";
16
+ import type { VerbSpec } from "../../kernel/spec/types.js";
17
+ import { TEST_FLAGS } from "../../testing/helpers/projectCli.js";
18
+ import { projectMcp } from "../../testing/helpers/projectMcp.js";
19
+ import { graphModule } from "../graph/index.js";
20
+ import { buildResourceList, rankUriCompletions } from "./provider.js";
21
+
22
+ describe("resource listing (storeless, over the pack index)", () => {
23
+ it("degrades to a recovery entry on a missing or legacy index", () => {
24
+ expect(buildResourceList(undefined)).toEqual([
25
+ expect.objectContaining({
26
+ uri: "pragma:sources",
27
+ name: "Store not indexed",
28
+ }),
29
+ ]);
30
+ const legacy = { version: 1, entities: [] } as unknown as PackIndex;
31
+ expect(buildResourceList(legacy)[0]?.uri).toBe("pragma:sources");
32
+ });
33
+
34
+ it("lists the enriched (v2) embedded index, schema entries first", () => {
35
+ const index = readPackIndex(process.cwd());
36
+ expect(index?.version).toBe(2);
37
+ const resources = buildResourceList(index);
38
+ expect(resources.some((r) => r.uri === "pragma:ex:Button")).toBe(true);
39
+ // A class (tbox) sorts before an individual (abox).
40
+ const componentIdx = resources.findIndex(
41
+ (r) => r.uri === "pragma:ex:Component",
42
+ );
43
+ const buttonIdx = resources.findIndex((r) => r.uri === "pragma:ex:Button");
44
+ expect(componentIdx).toBeLessThan(buttonIdx);
45
+ });
46
+
47
+ it("enriches each entry with the _meta taxonomy (pragma/box + priority)", () => {
48
+ const resources = buildResourceList(readPackIndex(process.cwd()));
49
+ const component = resources.find((r) => r.uri === "pragma:ex:Component");
50
+ const button = resources.find((r) => r.uri === "pragma:ex:Button");
51
+ // A schema class: tbox, higher priority, carries its instance count.
52
+ expect(component?._meta?.["pragma/box"]).toBe("tbox");
53
+ expect(component?.annotations?.audience).toEqual(["assistant"]);
54
+ expect(component?.annotations?.priority).toBe(0.9);
55
+ expect(component?._meta?.["pragma/instanceCount"]).toBe(3);
56
+ // An individual: abox, lower priority, no instance count.
57
+ expect(button?._meta?.["pragma/box"]).toBe("abox");
58
+ expect(button?.annotations?.priority).toBe(0.3);
59
+ expect(button?._meta?.["pragma/instanceCount"]).toBeUndefined();
60
+ });
61
+
62
+ it("ranks autocomplete over prefixed URI and label", () => {
63
+ const index = readPackIndex(process.cwd());
64
+ const hits = rankUriCompletions(index?.entities ?? [], "but", 10);
65
+ expect(hits).toContain("ex:Button");
66
+ });
67
+ });
68
+
69
+ describe("resource surface over the server (embedded pack)", () => {
70
+ let harness: Awaited<ReturnType<typeof projectMcp>>;
71
+ beforeAll(async () => {
72
+ harness = await projectMcp([graphModule]);
73
+ });
74
+ afterAll(async () => {
75
+ await harness.cleanup();
76
+ });
77
+
78
+ it("registers the {+uri} template and lists resources (not tools)", async () => {
79
+ const resources = await harness.listResources();
80
+ expect(resources.some((r) => r.uri === "pragma:ex:Button")).toBe(true);
81
+ // Resources are NOT tools — the graph module's tools (inspect + the PR6
82
+ // SPARQL escape hatch) are what appear in the tool surface.
83
+ const tools = await harness.listTools();
84
+ expect(tools.map((t) => t.name).sort()).toEqual([
85
+ "graph_inspect",
86
+ "graph_query",
87
+ ]);
88
+ });
89
+
90
+ it("autocompletes a partial URI through the template", async () => {
91
+ const values = await harness.completeResource("But");
92
+ expect(values).toContain("ex:Button");
93
+ });
94
+
95
+ it("reads an entity, mirroring `graph inspect` content", async () => {
96
+ const read = await harness.readResource("pragma:ex:Button");
97
+ expect(read.mimeType).toBe("application/json");
98
+ const fromResource = JSON.parse(read.text) as InspectResult;
99
+
100
+ // The CLI twin over the same (embedded) pack must return identical content.
101
+ const rt = bootRuntime(TEST_FLAGS);
102
+ const inspect = graphModule.verbs.find(
103
+ (v) => verbKey(v.path) === "graph inspect",
104
+ ) as VerbSpec;
105
+ const fromCli = (await inspect.run(
106
+ { uri: "ex:Button" },
107
+ rt,
108
+ )) as InspectResult;
109
+ (await rt.store.get()).store.dispose();
110
+
111
+ expect(fromResource).toEqual(fromCli);
112
+ expect(fromResource.uri).toBe("https://pragma.canonical.com/sample#Button");
113
+ });
114
+ });
@@ -0,0 +1,107 @@
1
+ import { mkdtempSync } from "node:fs";
2
+ import { tmpdir } from "node:os";
3
+ import { join } from "node:path";
4
+ import { afterEach, describe, expect, it } from "vitest";
5
+ import { VERSION } from "../constants.js";
6
+ import { executeVerb } from "../kernel/project/cli/dispatch.js";
7
+ import { bootRuntime } from "../kernel/runtime/boot.js";
8
+ import type { GlobalFlags } from "../kernel/runtime/types.js";
9
+ import type { VerbSpec } from "../kernel/spec/types.js";
10
+ import { projectMcp } from "../testing/helpers/projectMcp.js";
11
+ import { configModule } from "./config/index.js";
12
+ import { infoModule } from "./info/index.js";
13
+
14
+ const infoVerb = infoModule.verbs[0] as VerbSpec;
15
+ const showVerb = configModule.verbs[0] as VerbSpec;
16
+ const NO_MUT = { dryRun: false, undo: false, yes: false };
17
+
18
+ function flags(format: "plain" | "json", llm = false): GlobalFlags {
19
+ return { llm, autoLlm: false, format, verbose: false };
20
+ }
21
+
22
+ const originalConfigHome = process.env.XDG_CONFIG_HOME;
23
+
24
+ /** A fresh XDG config home + a fresh cwd, so config resolves deterministically. */
25
+ function freshEnv(): string {
26
+ process.env.XDG_CONFIG_HOME = mkdtempSync(join(tmpdir(), "pragma-rt-cfg-"));
27
+ return mkdtempSync(join(tmpdir(), "pragma-rt-cwd-"));
28
+ }
29
+
30
+ afterEach(() => {
31
+ process.env.XDG_CONFIG_HOME = originalConfigHome;
32
+ });
33
+
34
+ describe("info round-trip", () => {
35
+ it("renders plain and llm on the CLI", async () => {
36
+ const cwd = freshEnv();
37
+ const plain = await executeVerb(
38
+ infoVerb,
39
+ {},
40
+ NO_MUT,
41
+ bootRuntime(flags("plain"), cwd),
42
+ );
43
+ expect(plain.stdout).toContain(`pragma v${VERSION}`);
44
+ expect(plain.stdout).toContain("channel: normal");
45
+
46
+ const llm = await executeVerb(
47
+ infoVerb,
48
+ {},
49
+ NO_MUT,
50
+ bootRuntime(flags("plain", true), cwd),
51
+ );
52
+ expect(llm.stdout).toContain(`# pragma v${VERSION}`);
53
+ });
54
+
55
+ it("CLI --format json deep-equals the MCP tool envelope", async () => {
56
+ const cwd = freshEnv();
57
+ const cli = await executeVerb(
58
+ infoVerb,
59
+ {},
60
+ NO_MUT,
61
+ bootRuntime(flags("json"), cwd),
62
+ );
63
+ const cliEnvelope = JSON.parse(cli.stdout as string);
64
+
65
+ const mcp = await projectMcp([infoModule], cwd);
66
+ const mcpEnvelope = await mcp.callTool("info");
67
+ await mcp.cleanup();
68
+
69
+ expect(cliEnvelope).toEqual(mcpEnvelope);
70
+ expect(cliEnvelope.ok).toBe(true);
71
+ expect((cliEnvelope.data as { version: string }).version).toBe(VERSION);
72
+ });
73
+ });
74
+
75
+ describe("config show round-trip", () => {
76
+ it("renders plain with origin markers on the CLI", async () => {
77
+ const cwd = freshEnv();
78
+ const plain = await executeVerb(
79
+ showVerb,
80
+ {},
81
+ NO_MUT,
82
+ bootRuntime(flags("plain"), cwd),
83
+ );
84
+ expect(plain.stdout).toContain("channel: normal");
85
+ expect(plain.stdout).toContain("detail: standard");
86
+ });
87
+
88
+ it("CLI --format json deep-equals the MCP tool envelope", async () => {
89
+ const cwd = freshEnv();
90
+ const cli = await executeVerb(
91
+ showVerb,
92
+ {},
93
+ NO_MUT,
94
+ bootRuntime(flags("json"), cwd),
95
+ );
96
+ const cliEnvelope = JSON.parse(cli.stdout as string);
97
+
98
+ const mcp = await projectMcp([configModule], cwd);
99
+ const mcpEnvelope = await mcp.callTool("config_show");
100
+ await mcp.cleanup();
101
+
102
+ expect(cliEnvelope).toEqual(mcpEnvelope);
103
+ expect(
104
+ (cliEnvelope.data as { config: { channel: string } }).config.channel,
105
+ ).toBe("normal");
106
+ });
107
+ });
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The `setup` capability barrel.
3
+ */
4
+
5
+ export { setupModule } from "./setup.verb.js";
6
+ export type { SetupResult, SetupSkillsResult, SymlinkAction } from "./types.js";
@@ -0,0 +1,108 @@
1
+ /**
2
+ * `setup completions` — install the static shell-completion script.
3
+ *
4
+ * Split into a `detect` phase (a REAL read of the shell, the `completion` config,
5
+ * and the grammar-driven `emitScripts(capabilities)` body — with the config's
6
+ * `minChars` gate and per-family opt-out baked in at emit time — done up front so
7
+ * the wizard's recap/preview and a `--dry-run` are accurate) and a pure `compose`
8
+ * phase (the file write the dry-run interpreter mocks). The script body is the
9
+ * static tier the covenant names ("shell script tier emitted by
10
+ * `setup completions`").
11
+ */
12
+
13
+ import { dirname } from "node:path";
14
+ import {
15
+ deleteFile,
16
+ info,
17
+ mkdir,
18
+ sequence_,
19
+ type Task,
20
+ warn,
21
+ writeFile,
22
+ } from "@canonical/task";
23
+ import {
24
+ activationHint,
25
+ completionScriptPath,
26
+ detectShell,
27
+ type ShellId,
28
+ } from "../shell.js";
29
+
30
+ /**
31
+ * The detected completion install target: the shell, the absolute script path,
32
+ * and the emitted script body — all `null` when no shell could be detected.
33
+ */
34
+ export interface CompletionsDetection {
35
+ readonly shell: ShellId | null;
36
+ readonly path: string | null;
37
+ readonly script: string | null;
38
+ }
39
+
40
+ /**
41
+ * Detect the shell and pre-render its completion script, baking in the
42
+ * `completion` config (read from `cwd`): `minChars` gates the `__complete` exec
43
+ * in the emitted scripts, and a family mapped to `false` drops its name
44
+ * completion. Read here at emit time — never on the storeless `__complete` fast
45
+ * path.
46
+ *
47
+ * @param cwd - Directory the `completion` config layers are resolved from.
48
+ * @returns The install target, or an all-`null` shape when `$SHELL` is unset.
49
+ * @note Impure — reads `$SHELL`, the capability registry, and the config layers.
50
+ */
51
+ export async function detectCompletions(
52
+ cwd: string,
53
+ ): Promise<CompletionsDetection> {
54
+ const shell = detectShell();
55
+ if (!shell) return { shell: null, path: null, script: null };
56
+
57
+ const [{ capabilities }, { emitScripts }, { readConfig }] = await Promise.all(
58
+ [
59
+ import("../../index.js"),
60
+ import("../../../kernel/completion/emitScripts.js"),
61
+ import("../../../kernel/config/readConfig.js"),
62
+ ],
63
+ );
64
+ const { config } = await readConfig(cwd);
65
+ const completion = config.completion;
66
+ const disabledFamilies = completion?.families
67
+ ? Object.entries(completion.families)
68
+ .filter(([, enabled]) => enabled === false)
69
+ .map(([family]) => family)
70
+ : undefined;
71
+ return {
72
+ shell,
73
+ path: completionScriptPath(shell),
74
+ script: emitScripts(capabilities, {
75
+ ...(completion?.minChars !== undefined
76
+ ? { minChars: completion.minChars }
77
+ : {}),
78
+ ...(disabledFamilies && disabledFamilies.length > 0
79
+ ? { disabledFamilies }
80
+ : {}),
81
+ })[shell],
82
+ };
83
+ }
84
+
85
+ /**
86
+ * Compose the completion-script write from a detection.
87
+ *
88
+ * Built from re-runnable combinators (NOT a single-use `gen`): `execute`
89
+ * interprets a generator's task TWICE — once for the confirm-gate preview and
90
+ * once to perform it — so the composed task must survive a second drive.
91
+ *
92
+ * @param d - The detection gathered up front.
93
+ * @returns A Task that writes the script (with an undo), or warns if no shell.
94
+ */
95
+ export function composeCompletions(d: CompletionsDetection): Task<void> {
96
+ if (d.shell === null || d.path === null || d.script === null) {
97
+ return warn(
98
+ "Could not detect your shell — set $SHELL to zsh, bash, or fish.",
99
+ );
100
+ }
101
+ const { path, script, shell } = d;
102
+ return sequence_([
103
+ info(`Installing ${shell} completions to ${path}...`),
104
+ mkdir(dirname(path), true),
105
+ writeFile(path, script, { undo: deleteFile(path) }),
106
+ info(activationHint(shell)),
107
+ ]);
108
+ }