@canonical/pragma-cli 0.31.0 → 0.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1064) hide show
  1. package/dist/pragma +0 -0
  2. package/package.json +27 -42
  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 -70
  157. package/src/index.ts +27 -122
  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 +13 -12
  359. package/src/types.ts +42 -0
  360. package/README.md +0 -458
  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 -25
  367. package/src/completions/handleQuery.test.ts +0 -125
  368. package/src/completions/handleQuery.ts +0 -49
  369. package/src/completions/index.ts +0 -14
  370. package/src/completions/queryCompletions.test.ts +0 -105
  371. package/src/completions/queryCompletions.ts +0 -75
  372. package/src/completions/querySocket.test.ts +0 -101
  373. package/src/completions/querySocket.ts +0 -71
  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 -217
  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 -109
  391. package/src/config/readConfigLayers.ts +0 -118
  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 -128
  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 -56
  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 -44
  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 -260
  434. package/src/domains/block/types.ts +0 -30
  435. package/src/domains/config/commands/channel.test.ts +0 -128
  436. package/src/domains/config/commands/channel.ts +0 -99
  437. package/src/domains/config/commands/configScope.ts +0 -46
  438. package/src/domains/config/commands/framework.test.ts +0 -119
  439. package/src/domains/config/commands/framework.ts +0 -103
  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 -102
  444. package/src/domains/config/commands/tier.ts +0 -97
  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 -65
  467. package/src/domains/config/operations/validateTier.ts +0 -43
  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/generatorPack/bundled.ts +0 -49
  476. package/src/domains/create/generatorPack/compileGeneratorPack.test.ts +0 -159
  477. package/src/domains/create/generatorPack/compileGeneratorPack.ts +0 -312
  478. package/src/domains/create/index.ts +0 -21
  479. package/src/domains/create/mcp/index.ts +0 -2
  480. package/src/domains/create/mcp/specs.ts +0 -13
  481. package/src/domains/create/renderGeneratorUi.test.ts +0 -103
  482. package/src/domains/create/renderGeneratorUi.ts +0 -65
  483. package/src/domains/doctor/commands/doctor.test.ts +0 -75
  484. package/src/domains/doctor/commands/doctor.ts +0 -43
  485. package/src/domains/doctor/commands/index.ts +0 -2
  486. package/src/domains/doctor/formatters/doctor.test.ts +0 -165
  487. package/src/domains/doctor/formatters/doctor.ts +0 -136
  488. package/src/domains/doctor/formatters/index.ts +0 -2
  489. package/src/domains/doctor/index.ts +0 -9
  490. package/src/domains/doctor/mcp/index.ts +0 -2
  491. package/src/domains/doctor/mcp/specs.ts +0 -41
  492. package/src/domains/doctor/operations/checks/checkConfigFile.ts +0 -42
  493. package/src/domains/doctor/operations/checks/checkKeStore.ts +0 -38
  494. package/src/domains/doctor/operations/checks/checkMcpCommands.ts +0 -133
  495. package/src/domains/doctor/operations/checks/checkMcpConfigured.ts +0 -65
  496. package/src/domains/doctor/operations/checks/checkNodeVersion.ts +0 -25
  497. package/src/domains/doctor/operations/checks/checkPackageRefs.ts +0 -76
  498. package/src/domains/doctor/operations/checks/checkPragmaVersion.ts +0 -20
  499. package/src/domains/doctor/operations/checks/checkShellCompletions.ts +0 -42
  500. package/src/domains/doctor/operations/checks/checkSkillsSymlinked.ts +0 -64
  501. package/src/domains/doctor/operations/checks/index.ts +0 -10
  502. package/src/domains/doctor/operations/checks.test.ts +0 -307
  503. package/src/domains/doctor/operations/index.ts +0 -3
  504. package/src/domains/doctor/operations/runChecks.test.ts +0 -176
  505. package/src/domains/doctor/operations/runChecks.ts +0 -78
  506. package/src/domains/doctor/operations/types.ts +0 -42
  507. package/src/domains/graph/commands/index.ts +0 -4
  508. package/src/domains/graph/commands/inspect.test.ts +0 -94
  509. package/src/domains/graph/commands/inspect.ts +0 -63
  510. package/src/domains/graph/commands/query.test.ts +0 -94
  511. package/src/domains/graph/commands/query.ts +0 -60
  512. package/src/domains/graph/formatters/index.ts +0 -4
  513. package/src/domains/graph/formatters/inspect.ts +0 -50
  514. package/src/domains/graph/formatters/query.test.ts +0 -87
  515. package/src/domains/graph/formatters/query.ts +0 -74
  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 -46
  533. package/src/domains/graphql/commands/serve.ts +0 -141
  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 -65
  543. package/src/domains/graphql/helpers/resolveSourceFiles.ts +0 -66
  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/ensureSchemaArtifact.test.ts +0 -167
  552. package/src/domains/graphql/operations/ensureSchemaArtifact.ts +0 -178
  553. package/src/domains/graphql/operations/index.ts +0 -17
  554. package/src/domains/graphql/types.ts +0 -29
  555. package/src/domains/info/commands/index.ts +0 -4
  556. package/src/domains/info/commands/info.test.ts +0 -88
  557. package/src/domains/info/commands/info.ts +0 -47
  558. package/src/domains/info/commands/upgrade.test.ts +0 -183
  559. package/src/domains/info/commands/upgrade.ts +0 -153
  560. package/src/domains/info/constants.test.ts +0 -22
  561. package/src/domains/info/constants.ts +0 -15
  562. package/src/domains/info/formatters/index.ts +0 -8
  563. package/src/domains/info/formatters/info.test.ts +0 -207
  564. package/src/domains/info/formatters/info.ts +0 -131
  565. package/src/domains/info/formatters/upgrade.test.ts +0 -136
  566. package/src/domains/info/formatters/upgrade.ts +0 -70
  567. package/src/domains/info/index.ts +0 -9
  568. package/src/domains/info/mcp/index.ts +0 -2
  569. package/src/domains/info/mcp/specs.ts +0 -65
  570. package/src/domains/info/operations/checkRegistryVersion.test.ts +0 -124
  571. package/src/domains/info/operations/checkRegistryVersion.ts +0 -45
  572. package/src/domains/info/operations/collectEntityCounts.test.ts +0 -156
  573. package/src/domains/info/operations/collectEntityCounts.ts +0 -123
  574. package/src/domains/info/operations/collectInfo.test.ts +0 -122
  575. package/src/domains/info/operations/collectInfo.ts +0 -94
  576. package/src/domains/info/operations/collectStoreSummary.test.ts +0 -61
  577. package/src/domains/info/operations/collectStoreSummary.ts +0 -42
  578. package/src/domains/info/operations/index.ts +0 -6
  579. package/src/domains/info/types.test-d.ts +0 -35
  580. package/src/domains/info/types.ts +0 -67
  581. package/src/domains/llm/capabilities.test.ts +0 -111
  582. package/src/domains/llm/commands/capabilities.ts +0 -37
  583. package/src/domains/llm/commands/index.ts +0 -4
  584. package/src/domains/llm/commands/llm.ts +0 -41
  585. package/src/domains/llm/data/commandReference.ts +0 -106
  586. package/src/domains/llm/data/decisionTrees.ts +0 -55
  587. package/src/domains/llm/data/index.ts +0 -6
  588. package/src/domains/llm/data/toolCatalog.ts +0 -221
  589. package/src/domains/llm/formatters/capabilities.ts +0 -50
  590. package/src/domains/llm/formatters/index.ts +0 -4
  591. package/src/domains/llm/formatters/orientation.ts +0 -57
  592. package/src/domains/llm/index.ts +0 -9
  593. package/src/domains/llm/llmCommand.test.ts +0 -101
  594. package/src/domains/llm/mcp/index.ts +0 -2
  595. package/src/domains/llm/mcp/specs.ts +0 -93
  596. package/src/domains/llm/operations/collectContext.test.ts +0 -64
  597. package/src/domains/llm/operations/collectContext.ts +0 -37
  598. package/src/domains/llm/operations/index.ts +0 -3
  599. package/src/domains/llm/types.ts +0 -72
  600. package/src/domains/modifier/commands/index.ts +0 -5
  601. package/src/domains/modifier/commands/list.test.ts +0 -57
  602. package/src/domains/modifier/commands/list.ts +0 -9
  603. package/src/domains/modifier/commands/lookup.test.ts +0 -91
  604. package/src/domains/modifier/commands/lookup.ts +0 -14
  605. package/src/domains/modifier/commands/sample.ts +0 -54
  606. package/src/domains/modifier/formatters/index.ts +0 -8
  607. package/src/domains/modifier/formatters/list.test.ts +0 -38
  608. package/src/domains/modifier/formatters/list.ts +0 -22
  609. package/src/domains/modifier/formatters/lookup.test.ts +0 -33
  610. package/src/domains/modifier/formatters/lookup.ts +0 -50
  611. package/src/domains/modifier/formatters/sample.ts +0 -15
  612. package/src/domains/modifier/index.ts +0 -27
  613. package/src/domains/modifier/mcp/index.ts +0 -2
  614. package/src/domains/modifier/mcp/specs.ts +0 -65
  615. package/src/domains/modifier/modifierConfig.ts +0 -36
  616. package/src/domains/modifier/operations/index.ts +0 -5
  617. package/src/domains/modifier/operations/list.test.ts +0 -39
  618. package/src/domains/modifier/operations/list.ts +0 -41
  619. package/src/domains/modifier/operations/lookup.test.ts +0 -37
  620. package/src/domains/modifier/operations/lookup.ts +0 -69
  621. package/src/domains/modifier/operations/sample.ts +0 -32
  622. package/src/domains/modifier/orchestration/index.ts +0 -3
  623. package/src/domains/modifier/orchestration/modifierEmptyError.test.ts +0 -26
  624. package/src/domains/modifier/orchestration/modifierEmptyError.ts +0 -15
  625. package/src/domains/modifier/orchestration/resolveModifierList.ts +0 -16
  626. package/src/domains/modifier/orchestration/resolveModifierLookup.ts +0 -33
  627. package/src/domains/modifier/stories.test.ts +0 -20
  628. package/src/domains/modifier/stories.ts +0 -86
  629. package/src/domains/modifier/types.ts +0 -5
  630. package/src/domains/ontology/commands/index.ts +0 -4
  631. package/src/domains/ontology/commands/list.test.ts +0 -84
  632. package/src/domains/ontology/commands/list.ts +0 -11
  633. package/src/domains/ontology/commands/show.test.ts +0 -179
  634. package/src/domains/ontology/commands/show.ts +0 -14
  635. package/src/domains/ontology/formatters/index.ts +0 -5
  636. package/src/domains/ontology/formatters/list.ts +0 -64
  637. package/src/domains/ontology/formatters/show.ts +0 -396
  638. package/src/domains/ontology/helpers/buildClassTree.ts +0 -89
  639. package/src/domains/ontology/helpers/completeClassNames.ts +0 -43
  640. package/src/domains/ontology/helpers/expandOntologyIris.ts +0 -79
  641. package/src/domains/ontology/helpers/findNamespace.ts +0 -23
  642. package/src/domains/ontology/helpers/index.ts +0 -21
  643. package/src/domains/ontology/helpers/queryClasses.ts +0 -66
  644. package/src/domains/ontology/helpers/queryProperties.ts +0 -90
  645. package/src/domains/ontology/helpers/queryTboxFacts.ts +0 -160
  646. package/src/domains/ontology/helpers/resolvePrefix.ts +0 -45
  647. package/src/domains/ontology/index.ts +0 -26
  648. package/src/domains/ontology/mcp/index.ts +0 -2
  649. package/src/domains/ontology/mcp/specs.ts +0 -16
  650. package/src/domains/ontology/operations/index.ts +0 -5
  651. package/src/domains/ontology/operations/listOntologies.test.ts +0 -122
  652. package/src/domains/ontology/operations/listOntologies.ts +0 -197
  653. package/src/domains/ontology/operations/showOntology.test.ts +0 -184
  654. package/src/domains/ontology/operations/showOntology.ts +0 -323
  655. package/src/domains/ontology/operations/showOntologyRaw.test.ts +0 -41
  656. package/src/domains/ontology/operations/showOntologyRaw.ts +0 -50
  657. package/src/domains/ontology/stories.test.ts +0 -36
  658. package/src/domains/ontology/stories.ts +0 -153
  659. package/src/domains/refs/commands/updateRefs.ts +0 -52
  660. package/src/domains/refs/formatters/updateRefs.ts +0 -27
  661. package/src/domains/refs/index.ts +0 -27
  662. package/src/domains/refs/operations/gitOps.test.ts +0 -155
  663. package/src/domains/refs/operations/gitOps.ts +0 -92
  664. package/src/domains/refs/operations/index.ts +0 -10
  665. package/src/domains/refs/operations/parseRef.test.ts +0 -157
  666. package/src/domains/refs/operations/parseRef.ts +0 -114
  667. package/src/domains/refs/operations/paths.test.ts +0 -98
  668. package/src/domains/refs/operations/paths.ts +0 -91
  669. package/src/domains/refs/operations/readGlobalRefs.test.ts +0 -63
  670. package/src/domains/refs/operations/readGlobalRefs.ts +0 -37
  671. package/src/domains/refs/operations/updateRefs.test.ts +0 -167
  672. package/src/domains/refs/operations/updateRefs.ts +0 -180
  673. package/src/domains/setup/commands/all.ts +0 -58
  674. package/src/domains/setup/commands/completions.ts +0 -85
  675. package/src/domains/setup/commands/entrypoints.test.ts +0 -170
  676. package/src/domains/setup/commands/index.ts +0 -7
  677. package/src/domains/setup/commands/lsp.ts +0 -49
  678. package/src/domains/setup/commands/mcp.ts +0 -119
  679. package/src/domains/setup/commands/setup.ts +0 -70
  680. package/src/domains/setup/commands/skills.test.ts +0 -68
  681. package/src/domains/setup/commands/skills.ts +0 -110
  682. package/src/domains/setup/formatters/index.ts +0 -2
  683. package/src/domains/setup/formatters/skills.test.ts +0 -103
  684. package/src/domains/setup/formatters/skills.ts +0 -112
  685. package/src/domains/setup/formatters/types.ts +0 -7
  686. package/src/domains/setup/helpers/completionScripts.test.ts +0 -58
  687. package/src/domains/setup/helpers/completionScripts.ts +0 -92
  688. package/src/domains/setup/helpers/constants.ts +0 -2
  689. package/src/domains/setup/helpers/detectShell.test.ts +0 -48
  690. package/src/domains/setup/helpers/detectShell.ts +0 -20
  691. package/src/domains/setup/helpers/index.ts +0 -12
  692. package/src/domains/setup/helpers/runSetupTask.test.ts +0 -277
  693. package/src/domains/setup/helpers/runSetupTask.ts +0 -221
  694. package/src/domains/setup/index.ts +0 -37
  695. package/src/domains/setup/operations/index.ts +0 -6
  696. package/src/domains/setup/operations/setupAll.test.ts +0 -48
  697. package/src/domains/setup/operations/setupAll.ts +0 -41
  698. package/src/domains/setup/operations/setupCompletions.test.ts +0 -94
  699. package/src/domains/setup/operations/setupCompletions.ts +0 -54
  700. package/src/domains/setup/operations/setupLsp.test.ts +0 -30
  701. package/src/domains/setup/operations/setupLsp.ts +0 -22
  702. package/src/domains/setup/operations/setupMcp.test.ts +0 -120
  703. package/src/domains/setup/operations/setupMcp.ts +0 -108
  704. package/src/domains/setup/operations/setupSkills.test.ts +0 -191
  705. package/src/domains/setup/operations/setupSkills.ts +0 -160
  706. package/src/domains/setup/types.ts +0 -18
  707. package/src/domains/shared/ToolSpec.ts +0 -49
  708. package/src/domains/shared/bootStore.bareCore.test.ts +0 -63
  709. package/src/domains/shared/bootStore.test.ts +0 -82
  710. package/src/domains/shared/bootStore.ts +0 -171
  711. package/src/domains/shared/buildQuery.ts +0 -18
  712. package/src/domains/shared/compactUri.test.ts +0 -32
  713. package/src/domains/shared/compactUri.ts +0 -21
  714. package/src/domains/shared/context.ts +0 -16
  715. package/src/domains/shared/contracts.ts +0 -164
  716. package/src/domains/shared/createInteractivePromptSession.test.ts +0 -439
  717. package/src/domains/shared/createInteractivePromptSession.ts +0 -236
  718. package/src/domains/shared/emptyErrorRecovery.test.ts +0 -106
  719. package/src/domains/shared/extractLocalName.test.ts +0 -21
  720. package/src/domains/shared/extractLocalName.ts +0 -14
  721. package/src/domains/shared/filters/buildChannelFilter.test.ts +0 -52
  722. package/src/domains/shared/filters/buildChannelFilter.ts +0 -41
  723. package/src/domains/shared/filters/buildFilterConfig.ts +0 -15
  724. package/src/domains/shared/filters/buildFilters.test.ts +0 -33
  725. package/src/domains/shared/filters/buildFilters.ts +0 -30
  726. package/src/domains/shared/filters/buildTierFilter.test.ts +0 -78
  727. package/src/domains/shared/filters/buildTierFilter.ts +0 -69
  728. package/src/domains/shared/filters/describeFilters.ts +0 -14
  729. package/src/domains/shared/filters/index.ts +0 -10
  730. package/src/domains/shared/formatters.ts +0 -103
  731. package/src/domains/shared/listTiers.ts +0 -40
  732. package/src/domains/shared/loaders/bundledLoader.test.ts +0 -248
  733. package/src/domains/shared/loaders/bundledLoader.ts +0 -254
  734. package/src/domains/shared/loaders/gitLoader.ts +0 -30
  735. package/src/domains/shared/loaders/index.ts +0 -9
  736. package/src/domains/shared/loaders/localLoader.ts +0 -71
  737. package/src/domains/shared/loaders/readPackageDir.test.ts +0 -58
  738. package/src/domains/shared/loaders/readPackageDir.ts +0 -185
  739. package/src/domains/shared/loaders/storyAssetsPlugin.test.ts +0 -84
  740. package/src/domains/shared/loaders/storyAssetsPlugin.ts +0 -46
  741. package/src/domains/shared/lookupMany.test.ts +0 -135
  742. package/src/domains/shared/lookupMany.ts +0 -101
  743. package/src/domains/shared/mergeAndParseRefs.test.ts +0 -89
  744. package/src/domains/shared/mergeAndParseRefs.ts +0 -44
  745. package/src/domains/shared/namespaces.ts +0 -26
  746. package/src/domains/shared/packages.ts +0 -20
  747. package/src/domains/shared/parseSampleCount.test.ts +0 -47
  748. package/src/domains/shared/parseSampleCount.ts +0 -45
  749. package/src/domains/shared/pickRandom.ts +0 -22
  750. package/src/domains/shared/prefixes.test.ts +0 -211
  751. package/src/domains/shared/prefixes.ts +0 -204
  752. package/src/domains/shared/renderers.ts +0 -410
  753. package/src/domains/shared/resolveConfiguredGraphs.test.ts +0 -27
  754. package/src/domains/shared/resolveConfiguredGraphs.ts +0 -41
  755. package/src/domains/shared/resolveLookupExitCode.test.ts +0 -48
  756. package/src/domains/shared/resolveLookupExitCode.ts +0 -42
  757. package/src/domains/shared/runtime.ts +0 -61
  758. package/src/domains/shared/sampleFormatters.ts +0 -47
  759. package/src/domains/shared/semanticPackage.test.ts +0 -89
  760. package/src/domains/shared/semanticPackage.ts +0 -127
  761. package/src/domains/shared/stories/compileLookupCommand.test.ts +0 -145
  762. package/src/domains/shared/stories/compileLookupCommand.ts +0 -102
  763. package/src/domains/shared/stories/compileLookupTool.test.ts +0 -105
  764. package/src/domains/shared/stories/compileLookupTool.ts +0 -96
  765. package/src/domains/shared/stories/compileReadCommand.test.ts +0 -121
  766. package/src/domains/shared/stories/compileReadCommand.ts +0 -48
  767. package/src/domains/shared/stories/compileReadTool.test.ts +0 -64
  768. package/src/domains/shared/stories/compileReadTool.ts +0 -38
  769. package/src/domains/shared/stories/condense.test.ts +0 -18
  770. package/src/domains/shared/stories/condense.ts +0 -15
  771. package/src/domains/shared/stories/index.ts +0 -20
  772. package/src/domains/shared/stories/normalizeNames.test.ts +0 -20
  773. package/src/domains/shared/stories/normalizeNames.ts +0 -22
  774. package/src/domains/shared/stories/pack/applyPackFilters.test.ts +0 -151
  775. package/src/domains/shared/stories/pack/applyPackFilters.ts +0 -111
  776. package/src/domains/shared/stories/pack/applyPackSearch.test.ts +0 -57
  777. package/src/domains/shared/stories/pack/applyPackSearch.ts +0 -41
  778. package/src/domains/shared/stories/pack/buildLookupQuery.test.ts +0 -81
  779. package/src/domains/shared/stories/pack/buildLookupQuery.ts +0 -154
  780. package/src/domains/shared/stories/pack/bundled/index.ts +0 -23
  781. package/src/domains/shared/stories/pack/bundled/standardPack.ts +0 -164
  782. package/src/domains/shared/stories/pack/bundled/tierPack.ts +0 -50
  783. package/src/domains/shared/stories/pack/collectPackStories.test.ts +0 -406
  784. package/src/domains/shared/stories/pack/collectPackStories.ts +0 -158
  785. package/src/domains/shared/stories/pack/compilePackCommands.ts +0 -50
  786. package/src/domains/shared/stories/pack/compilePackStories.test.ts +0 -751
  787. package/src/domains/shared/stories/pack/compilePackStories.ts +0 -724
  788. package/src/domains/shared/stories/pack/compilePackToolSpecs.ts +0 -55
  789. package/src/domains/shared/stories/pack/index.ts +0 -42
  790. package/src/domains/shared/stories/pack/reservedVerbs.test.ts +0 -213
  791. package/src/domains/shared/stories/pack/reservedVerbs.ts +0 -170
  792. package/src/domains/shared/stories/pack/runSelectQuery.ts +0 -31
  793. package/src/domains/shared/stories/pack/standardParity.test.ts +0 -381
  794. package/src/domains/shared/stories/pack/types.ts +0 -224
  795. package/src/domains/shared/stories/pack/validateStoryPackDefinition.test.ts +0 -742
  796. package/src/domains/shared/stories/pack/validateStoryPackDefinition.ts +0 -859
  797. package/src/domains/shared/stories/projectCliParameters.test.ts +0 -59
  798. package/src/domains/shared/stories/projectCliParameters.ts +0 -57
  799. package/src/domains/shared/stories/projectToolParams.test.ts +0 -50
  800. package/src/domains/shared/stories/projectToolParams.ts +0 -32
  801. package/src/domains/shared/stories/requirePragmaContext.test.ts +0 -23
  802. package/src/domains/shared/stories/requirePragmaContext.ts +0 -23
  803. package/src/domains/shared/stories/resolveLookupDetailed.test.ts +0 -57
  804. package/src/domains/shared/stories/resolveLookupDetailed.ts +0 -27
  805. package/src/domains/shared/stories/types.ts +0 -179
  806. package/src/domains/shared/suggestions/detectCrossDomain.test.ts +0 -43
  807. package/src/domains/shared/suggestions/detectCrossDomain.ts +0 -116
  808. package/src/domains/shared/suggestions/expandGlob.test.ts +0 -92
  809. package/src/domains/shared/suggestions/expandGlob.ts +0 -52
  810. package/src/domains/shared/suggestions/expandLookupQueries.ts +0 -57
  811. package/src/domains/shared/suggestions/index.ts +0 -7
  812. package/src/domains/shared/suggestions/listDomainNames.ts +0 -61
  813. package/src/domains/shared/suggestions/suggestNames.test.ts +0 -70
  814. package/src/domains/shared/suggestions/suggestNames.ts +0 -130
  815. package/src/domains/shared/types/block.ts +0 -107
  816. package/src/domains/shared/types/common.ts +0 -33
  817. package/src/domains/shared/types/graph.ts +0 -17
  818. package/src/domains/shared/types/index.ts +0 -46
  819. package/src/domains/shared/types/modifier.ts +0 -22
  820. package/src/domains/shared/types/ontology.ts +0 -145
  821. package/src/domains/shared/types/runtime.ts +0 -24
  822. package/src/domains/shared/types/sample.ts +0 -17
  823. package/src/domains/shared/types/standard.ts +0 -21
  824. package/src/domains/shared/types/tier.ts +0 -15
  825. package/src/domains/shared/types/token.ts +0 -30
  826. package/src/domains/skill/commands/index.ts +0 -4
  827. package/src/domains/skill/commands/list.test.ts +0 -115
  828. package/src/domains/skill/commands/list.ts +0 -11
  829. package/src/domains/skill/commands/lookup.test.ts +0 -118
  830. package/src/domains/skill/commands/lookup.ts +0 -14
  831. package/src/domains/skill/formatters/index.ts +0 -3
  832. package/src/domains/skill/formatters/list.test.ts +0 -140
  833. package/src/domains/skill/formatters/list.ts +0 -119
  834. package/src/domains/skill/formatters/lookup.test.ts +0 -46
  835. package/src/domains/skill/formatters/lookup.ts +0 -57
  836. package/src/domains/skill/formatters/types.ts +0 -8
  837. package/src/domains/skill/helpers/index.ts +0 -6
  838. package/src/domains/skill/helpers/parseFrontmatter.test.ts +0 -122
  839. package/src/domains/skill/helpers/parseFrontmatter.ts +0 -112
  840. package/src/domains/skill/helpers/resolveSkillSources.ts +0 -70
  841. package/src/domains/skill/index.ts +0 -23
  842. package/src/domains/skill/mcp/index.ts +0 -2
  843. package/src/domains/skill/mcp/specs.ts +0 -19
  844. package/src/domains/skill/operations/discover.test.ts +0 -176
  845. package/src/domains/skill/operations/discover.ts +0 -59
  846. package/src/domains/skill/operations/index.ts +0 -5
  847. package/src/domains/skill/operations/list.test.ts +0 -76
  848. package/src/domains/skill/operations/list.ts +0 -47
  849. package/src/domains/skill/operations/lookup.test.ts +0 -91
  850. package/src/domains/skill/operations/lookup.ts +0 -70
  851. package/src/domains/skill/stories.test.ts +0 -43
  852. package/src/domains/skill/stories.ts +0 -103
  853. package/src/domains/skill/types.ts +0 -33
  854. package/src/domains/token/commands/add-config.test.ts +0 -68
  855. package/src/domains/token/commands/add-config.ts +0 -62
  856. package/src/domains/token/commands/index.ts +0 -6
  857. package/src/domains/token/commands/list.test.ts +0 -82
  858. package/src/domains/token/commands/list.ts +0 -54
  859. package/src/domains/token/commands/lookup.test.ts +0 -133
  860. package/src/domains/token/commands/lookup.ts +0 -107
  861. package/src/domains/token/commands/sample.ts +0 -54
  862. package/src/domains/token/featureFlag.ts +0 -17
  863. package/src/domains/token/formatters/index.ts +0 -8
  864. package/src/domains/token/formatters/list.test.ts +0 -37
  865. package/src/domains/token/formatters/list.ts +0 -24
  866. package/src/domains/token/formatters/lookup.test.ts +0 -61
  867. package/src/domains/token/formatters/lookup.ts +0 -107
  868. package/src/domains/token/formatters/sample.ts +0 -16
  869. package/src/domains/token/index.ts +0 -45
  870. package/src/domains/token/mcp/index.ts +0 -2
  871. package/src/domains/token/mcp/specs.ts +0 -207
  872. package/src/domains/token/operations/add-config.test.ts +0 -68
  873. package/src/domains/token/operations/add-config.ts +0 -61
  874. package/src/domains/token/operations/index.ts +0 -8
  875. package/src/domains/token/operations/list.test.ts +0 -50
  876. package/src/domains/token/operations/list.ts +0 -52
  877. package/src/domains/token/operations/lookup.test.ts +0 -42
  878. package/src/domains/token/operations/lookup.ts +0 -75
  879. package/src/domains/token/operations/sample.ts +0 -32
  880. package/src/domains/token/orchestration/index.ts +0 -3
  881. package/src/domains/token/orchestration/resolveTokenList.ts +0 -17
  882. package/src/domains/token/orchestration/resolveTokenLookup.ts +0 -33
  883. package/src/domains/token/orchestration/tokenEmptyError.test.ts +0 -33
  884. package/src/domains/token/orchestration/tokenEmptyError.ts +0 -20
  885. package/src/domains/token/tokenConfig.ts +0 -38
  886. package/src/domains/token/types.ts +0 -6
  887. package/src/domains/trace/commands/clear.ts +0 -71
  888. package/src/domains/trace/commands/index.ts +0 -5
  889. package/src/domains/trace/commands/resolveTraceLimit.test.ts +0 -31
  890. package/src/domains/trace/commands/sessions.ts +0 -32
  891. package/src/domains/trace/commands/show.ts +0 -171
  892. package/src/domains/trace/formatters/index.ts +0 -9
  893. package/src/domains/trace/formatters/sessions.ts +0 -80
  894. package/src/domains/trace/formatters/show.ts +0 -122
  895. package/src/domains/trace/index.ts +0 -17
  896. package/src/domains/trace/operations/index.ts +0 -8
  897. package/src/domains/trace/operations/listSessions.test.ts +0 -55
  898. package/src/domains/trace/operations/listSessions.ts +0 -52
  899. package/src/domains/trace/operations/readTraceLog.test.ts +0 -100
  900. package/src/domains/trace/operations/readTraceLog.ts +0 -104
  901. package/src/domains/trace/tracePlugin.test.ts +0 -171
  902. package/src/domains/trace/tracePlugin.ts +0 -159
  903. package/src/domains/trace/types.ts +0 -65
  904. package/src/embedWasm.ts +0 -42
  905. package/src/error/PragmaError.test.ts +0 -121
  906. package/src/error/PragmaError.ts +0 -177
  907. package/src/error/constants.ts +0 -12
  908. package/src/error/index.ts +0 -4
  909. package/src/error/types.ts +0 -55
  910. package/src/mcp/createMcpServer.test.ts +0 -41
  911. package/src/mcp/createMcpServer.ts +0 -53
  912. package/src/mcp/error/buildRecovery.test.ts +0 -37
  913. package/src/mcp/error/buildRecovery.ts +0 -17
  914. package/src/mcp/error/index.ts +0 -12
  915. package/src/mcp/error/serializeError.test.ts +0 -121
  916. package/src/mcp/error/serializeError.ts +0 -31
  917. package/src/mcp/error/serializeErrorPayload.test.ts +0 -38
  918. package/src/mcp/error/serializeErrorPayload.ts +0 -34
  919. package/src/mcp/error/types.ts +0 -59
  920. package/src/mcp/index.ts +0 -15
  921. package/src/mcp/registerResources.test.ts +0 -566
  922. package/src/mcp/registerResources.ts +0 -9
  923. package/src/mcp/resources/buildGraphIndex.ts +0 -167
  924. package/src/mcp/resources/buildResourceList.test.ts +0 -97
  925. package/src/mcp/resources/buildResourceList.ts +0 -176
  926. package/src/mcp/resources/classifyEntity.test.ts +0 -40
  927. package/src/mcp/resources/classifyEntity.ts +0 -27
  928. package/src/mcp/resources/constants.ts +0 -105
  929. package/src/mcp/resources/displayPredicates.ts +0 -62
  930. package/src/mcp/resources/pickFirstValue.test.ts +0 -29
  931. package/src/mcp/resources/pickFirstValue.ts +0 -26
  932. package/src/mcp/resources/pickPrimaryType.test.ts +0 -41
  933. package/src/mcp/resources/pickPrimaryType.ts +0 -26
  934. package/src/mcp/resources/rankUriCompletions.test.ts +0 -52
  935. package/src/mcp/resources/rankUriCompletions.ts +0 -64
  936. package/src/mcp/resources/readEntity.ts +0 -169
  937. package/src/mcp/resources/registerResources.ts +0 -126
  938. package/src/mcp/resources/types.ts +0 -128
  939. package/src/mcp/runMcpServer.test.ts +0 -66
  940. package/src/mcp/runMcpServer.ts +0 -24
  941. package/src/mcp/tools/index.ts +0 -74
  942. package/src/mcp/tools/registerFromSpec.ts +0 -97
  943. package/src/mcp/tools/registerTools.test.ts +0 -1277
  944. package/src/mcp/types.ts +0 -66
  945. package/src/mcp/utils/estimateTokens.test.ts +0 -14
  946. package/src/mcp/utils/estimateTokens.ts +0 -9
  947. package/src/mcp/utils/index.ts +0 -11
  948. package/src/mcp/utils/wrapTool.test.ts +0 -109
  949. package/src/mcp/utils/wrapTool.ts +0 -81
  950. package/src/package-manager/constants.ts +0 -29
  951. package/src/package-manager/detectInstallSource.test.ts +0 -23
  952. package/src/package-manager/detectInstallSource.ts +0 -111
  953. package/src/package-manager/detectLocalInstall.test.ts +0 -16
  954. package/src/package-manager/detectLocalInstall.ts +0 -43
  955. package/src/package-manager/detectPackageManager.test.ts +0 -81
  956. package/src/package-manager/detectPackageManager.ts +0 -30
  957. package/src/package-manager/index.ts +0 -6
  958. package/src/package-manager/types.ts +0 -10
  959. package/src/pipeline/collectCommands.test.ts +0 -187
  960. package/src/pipeline/collectCommands.ts +0 -75
  961. package/src/pipeline/constants.ts +0 -14
  962. package/src/pipeline/createProgram.test.ts +0 -116
  963. package/src/pipeline/createProgram.ts +0 -89
  964. package/src/pipeline/firstRun.test.ts +0 -80
  965. package/src/pipeline/firstRun.ts +0 -99
  966. package/src/pipeline/formatTerminal.test.ts +0 -43
  967. package/src/pipeline/formatTerminal.ts +0 -53
  968. package/src/pipeline/index.ts +0 -22
  969. package/src/pipeline/mapExitCode.test.ts +0 -41
  970. package/src/pipeline/mapExitCode.ts +0 -12
  971. package/src/pipeline/parseGlobalFlags.test.ts +0 -193
  972. package/src/pipeline/parseGlobalFlags.ts +0 -135
  973. package/src/pipeline/renderError.test.ts +0 -151
  974. package/src/pipeline/renderError.ts +0 -129
  975. package/src/pipeline/resolveCommandKind.test.ts +0 -80
  976. package/src/pipeline/resolveCommandKind.ts +0 -82
  977. package/src/pipeline/rootHelp.test.ts +0 -87
  978. package/src/pipeline/rootHelp.ts +0 -265
  979. package/src/pipeline/runCli.orchestration.test.ts +0 -435
  980. package/src/pipeline/runCli.test.ts +0 -83
  981. package/src/pipeline/runCli.ts +0 -411
  982. package/src/pipeline/types.ts +0 -17
  983. package/src/testing/cli.ts +0 -71
  984. package/src/testing/createTestMcpClient.ts +0 -68
  985. package/src/testing/dsFixtures.ts +0 -523
  986. package/src/testing/fixtures/canonical-config.json +0 -4
  987. package/src/testing/fixtures/canonical.ttl +0 -437
  988. package/src/testing/fixtures/filtered-config.json +0 -4
  989. package/src/testing/fixtures.ts +0 -34
  990. package/src/testing/graphqlFixtures.ts +0 -72
  991. package/src/testing/helpers/assertParity.ts +0 -28
  992. package/src/testing/helpers/createTestMcpClient.ts +0 -40
  993. package/src/testing/helpers/createTestRuntime.ts +0 -67
  994. package/src/testing/index.ts +0 -22
  995. package/src/testing/integration/__snapshots__/executor-golden.test.ts.snap +0 -1207
  996. package/src/testing/integration/agent-session.test.ts +0 -148
  997. package/src/testing/integration/boot.test.ts +0 -105
  998. package/src/testing/integration/cli-user-stories.test.ts +0 -261
  999. package/src/testing/integration/cross-binary-byte-equality.test.ts +0 -129
  1000. package/src/testing/integration/edge-cases.test.ts +0 -275
  1001. package/src/testing/integration/executor-execution.test.ts +0 -103
  1002. package/src/testing/integration/executor-golden.test.ts +0 -145
  1003. package/src/testing/integration/mcp-surface.test.ts +0 -605
  1004. package/src/testing/integration/parity.test.ts +0 -596
  1005. package/src/testing/regression/0001-skill-discovery-granularity.test.ts +0 -71
  1006. package/src/testing/standardParityFixtures.ts +0 -35
  1007. package/src/testing/store.ts +0 -39
  1008. package/src/testing/storyFixtures.ts +0 -63
  1009. package/src/testing/types.ts +0 -20
  1010. package/src/tui/components/BulletList/BulletList.tsx +0 -46
  1011. package/src/tui/components/BulletList/index.ts +0 -2
  1012. package/src/tui/components/BulletList/types.ts +0 -6
  1013. package/src/tui/components/Card/Card.tsx +0 -73
  1014. package/src/tui/components/Card/index.ts +0 -1
  1015. package/src/tui/components/Card/types.ts +0 -12
  1016. package/src/tui/components/CodeBlock/CodeBlock.tsx +0 -37
  1017. package/src/tui/components/CodeBlock/index.ts +0 -2
  1018. package/src/tui/components/CodeBlock/types.ts +0 -6
  1019. package/src/tui/components/DataRow/DataRow.tsx +0 -80
  1020. package/src/tui/components/DataRow/index.ts +0 -2
  1021. package/src/tui/components/DataRow/types.ts +0 -14
  1022. package/src/tui/components/FieldRow/FieldRow.tsx +0 -24
  1023. package/src/tui/components/FieldRow/index.ts +0 -2
  1024. package/src/tui/components/FieldRow/types.ts +0 -10
  1025. package/src/tui/components/HeaderRow/HeaderRow.tsx +0 -32
  1026. package/src/tui/components/HeaderRow/index.ts +0 -2
  1027. package/src/tui/components/HeaderRow/types.ts +0 -8
  1028. package/src/tui/components/MarkdownText/MarkdownText.tsx +0 -19
  1029. package/src/tui/components/MarkdownText/index.ts +0 -2
  1030. package/src/tui/components/MarkdownText/types.ts +0 -4
  1031. package/src/tui/components/MiniTable/MiniTable.tsx +0 -82
  1032. package/src/tui/components/MiniTable/index.ts +0 -2
  1033. package/src/tui/components/MiniTable/types.ts +0 -6
  1034. package/src/tui/components/SectionRenderer/SectionRenderer.tsx +0 -91
  1035. package/src/tui/components/SectionRenderer/index.ts +0 -2
  1036. package/src/tui/components/SectionRenderer/types.ts +0 -15
  1037. package/src/tui/components/TreeView/TreeView.tsx +0 -84
  1038. package/src/tui/components/TreeView/index.ts +0 -2
  1039. package/src/tui/components/TreeView/types.ts +0 -6
  1040. package/src/tui/components/index.ts +0 -19
  1041. package/src/tui/constants.ts +0 -39
  1042. package/src/tui/createListView.ts +0 -23
  1043. package/src/tui/createLookupView.ts +0 -26
  1044. package/src/tui/helpers/computeWidths.ts +0 -53
  1045. package/src/tui/helpers/fitColumns.ts +0 -33
  1046. package/src/tui/helpers/formatMarkdown.ts +0 -19
  1047. package/src/tui/helpers/getTerminalSize.ts +0 -16
  1048. package/src/tui/helpers/index.ts +0 -6
  1049. package/src/tui/helpers/syntaxColor.ts +0 -67
  1050. package/src/tui/helpers/truncateText.ts +0 -12
  1051. package/src/tui/hooks/index.ts +0 -3
  1052. package/src/tui/hooks/types.ts +0 -7
  1053. package/src/tui/hooks/useAutoExit.ts +0 -17
  1054. package/src/tui/hooks/useTerminalSize.ts +0 -19
  1055. package/src/tui/index.ts +0 -15
  1056. package/src/tui/renderInk.tsx +0 -18
  1057. package/src/tui/types.ts +0 -12
  1058. package/src/tui/views/ListView/ListView.tsx +0 -104
  1059. package/src/tui/views/ListView/index.ts +0 -2
  1060. package/src/tui/views/ListView/types.ts +0 -14
  1061. package/src/tui/views/LookupView/LookupView.tsx +0 -244
  1062. package/src/tui/views/LookupView/index.ts +0 -2
  1063. package/src/tui/views/LookupView/types.ts +0 -16
  1064. package/src/tui/views/index.ts +0 -4
@@ -1,406 +0,0 @@
1
- import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
2
- import type { PragmaConfig } from "#config";
3
- import { PragmaError } from "#error";
4
- import { RECIPE_STORY } from "#testing";
5
- import type { SemanticPackage } from "../../semanticPackage.js";
6
- import { BUNDLED_PACKS } from "./bundled/index.js";
7
- import realCollectPackStories from "./collectPackStories.js";
8
- import {
9
- buildReservedVerbs,
10
- deriveReservedVerbs,
11
- isReserved,
12
- type ReservedVerbs,
13
- } from "./reservedVerbs.js";
14
-
15
- /**
16
- * Test wrapper that isolates the always-present bundled packs: unit tests
17
- * asserting exact entries pass `[]` so the default bundled `tier` pack does not
18
- * pollute their expectations. Bundled behavior is covered separately below.
19
- */
20
- function collectPackStories(
21
- config: PragmaConfig,
22
- packages: readonly SemanticPackage[],
23
- reserved: ReservedVerbs,
24
- ): ReturnType<typeof realCollectPackStories> {
25
- return realCollectPackStories(config, packages, reserved, []);
26
- }
27
-
28
- function makePackage(stories: SemanticPackage["stories"]): SemanticPackage {
29
- return {
30
- name: "@canonical/example",
31
- version: "1.0.0",
32
- source: "local",
33
- graphs: [],
34
- skills: [],
35
- stories,
36
- };
37
- }
38
-
39
- const CONFIG = { tier: undefined, channel: "normal" as const };
40
-
41
- // A representative slice of the real built-in surface: leaf read nouns that
42
- // own `list`/`lookup`, plus operational nouns (graph, config, create, graphql,
43
- // setup, tokens) that own neither and so must be reserved wholesale.
44
- const BUILTIN_PAIRS: readonly (readonly [string, string | undefined])[] = [
45
- ["standard", "list"],
46
- ["standard", "lookup"],
47
- ["standard", "categories"],
48
- ["standard", "sample"],
49
- ["block", "list"],
50
- ["block", "lookup"],
51
- ["token", "list"],
52
- ["token", "lookup"],
53
- ["tier", "list"],
54
- ["config", "show"],
55
- ["config", "tier"],
56
- ["config", "channel"],
57
- ["graph", "query"],
58
- ["graph", "inspect"],
59
- ["create", "component"],
60
- ["create", "package"],
61
- ["graphql", "build"],
62
- ["graphql", "check"],
63
- ["graphql", "serve"],
64
- ["setup", "all"],
65
- ["setup", "lsp"],
66
- ["tokens", "add-config"],
67
- ["info", undefined],
68
- ];
69
-
70
- /** Run a thunk and return the error it throws (or `undefined`). */
71
- function caught(run: () => unknown): unknown {
72
- try {
73
- run();
74
- } catch (error) {
75
- return error;
76
- }
77
- return undefined;
78
- }
79
-
80
- describe("collectPackStories", () => {
81
- let warn: ReturnType<typeof vi.spyOn>;
82
-
83
- beforeEach(() => {
84
- warn = vi.spyOn(process.stderr, "write").mockImplementation(() => true);
85
- });
86
-
87
- afterEach(() => {
88
- warn.mockRestore();
89
- });
90
-
91
- it("collects config stories and validated package stories", () => {
92
- const entries = collectPackStories(
93
- { ...CONFIG, stories: [RECIPE_STORY] },
94
- [
95
- makePackage([
96
- {
97
- path: "/pkg/stories/other.json",
98
- definition: { ...RECIPE_STORY, noun: "other" },
99
- },
100
- ]),
101
- ],
102
- buildReservedVerbs([["block", undefined]]),
103
- );
104
- expect(entries.map((entry) => entry.definition.noun)).toEqual([
105
- "recipe",
106
- "other",
107
- ]);
108
- expect(entries.at(0)?.source).toBe("config");
109
- expect(entries.at(1)?.source).toBe("/pkg/stories/other.json");
110
- });
111
-
112
- it("lets config stories win noun collisions against packages", () => {
113
- const entries = collectPackStories(
114
- { ...CONFIG, stories: [RECIPE_STORY] },
115
- [
116
- makePackage([
117
- { path: "/pkg/stories/recipe.json", definition: RECIPE_STORY },
118
- ]),
119
- ],
120
- buildReservedVerbs([]),
121
- );
122
- expect(entries).toHaveLength(1);
123
- expect(entries.at(0)?.source).toBe("config");
124
- expect(warn).toHaveBeenCalledWith(
125
- expect.stringContaining("already provided"),
126
- );
127
- });
128
-
129
- it("skips invalid package stories with a warning", () => {
130
- const entries = collectPackStories(
131
- CONFIG,
132
- [
133
- makePackage([
134
- { path: "/pkg/stories/broken.json", definition: { nope: true } },
135
- ]),
136
- ],
137
- buildReservedVerbs([]),
138
- );
139
- expect(entries).toHaveLength(0);
140
- expect(warn).toHaveBeenCalledWith(
141
- expect.stringContaining("skipping story"),
142
- );
143
- });
144
-
145
- it("throws when a config story shadows a built-in noun", () => {
146
- expect(() =>
147
- collectPackStories(
148
- { ...CONFIG, stories: [{ ...RECIPE_STORY, noun: "block" }] },
149
- [],
150
- buildReservedVerbs([["block", undefined]]),
151
- ),
152
- ).toThrow(PragmaError);
153
- });
154
-
155
- it("skips package stories that shadow built-in nouns", () => {
156
- const entries = collectPackStories(
157
- CONFIG,
158
- [
159
- makePackage([
160
- {
161
- path: "/pkg/stories/block.json",
162
- definition: { ...RECIPE_STORY, noun: "block" },
163
- },
164
- ]),
165
- ],
166
- buildReservedVerbs([["block", undefined]]),
167
- );
168
- expect(entries).toHaveLength(0);
169
- });
170
-
171
- it("admits a pack once its noun's verbs leave the reserved map", () => {
172
- // Post-migration simulation: `standard`'s list/lookup wrappers are gone,
173
- // so only categories/sample remain reserved — a `standard` pack (which
174
- // emits list + lookup) is now admissible. `info` is a bare (whole-noun)
175
- // built-in, so an `info` pack stays blocked. This is the keystone: the
176
- // per-verb guard makes the leaf cutover incremental.
177
- const reserved = buildReservedVerbs([
178
- ["standard", "categories"],
179
- ["standard", "sample"],
180
- ["info", undefined],
181
- ]);
182
-
183
- const entries = collectPackStories(
184
- CONFIG,
185
- [
186
- makePackage([
187
- {
188
- path: "/pkg/stories/standard.json",
189
- definition: { ...RECIPE_STORY, noun: "standard" },
190
- },
191
- {
192
- path: "/pkg/stories/info.json",
193
- definition: { ...RECIPE_STORY, noun: "info" },
194
- },
195
- ]),
196
- ],
197
- reserved,
198
- );
199
-
200
- expect(entries.map((entry) => entry.definition.noun)).toEqual(["standard"]);
201
- expect(warn).toHaveBeenCalledWith(
202
- expect.stringContaining("shadows built-in command"),
203
- );
204
- });
205
-
206
- // Regression restoration (FIX 1): operational nouns own no list/lookup, so
207
- // deriveReservedVerbs promotes them to a whole-noun reservation. Since a
208
- // pack always emits `list`, a pack targeting an operational namespace must
209
- // stay BLOCKED — this is the load-bearing proof that the per-verb flip did
210
- // not silently open pragma's core operational namespaces to packs.
211
- describe("operational nouns stay reserved wholesale", () => {
212
- const reserved = deriveReservedVerbs(BUILTIN_PAIRS);
213
-
214
- it("promotes every operational noun to a whole-noun reservation", () => {
215
- for (const noun of ["config", "graph", "create", "graphql", "setup"]) {
216
- expect(isReserved(reserved, noun, "list")).toBe(true);
217
- }
218
- // `tokens` (the plural add-config noun) owns only `add-config`.
219
- expect(isReserved(reserved, "tokens", "list")).toBe(true);
220
- });
221
-
222
- it("throws a config error when a config story shadows an operational noun", () => {
223
- const error = caught(() =>
224
- collectPackStories(
225
- { ...CONFIG, stories: [{ ...RECIPE_STORY, noun: "graph" }] },
226
- [],
227
- reserved,
228
- ),
229
- );
230
- expect(error).toBeInstanceOf(PragmaError);
231
- expect((error as PragmaError).code).toBe("CONFIG_ERROR");
232
- });
233
-
234
- it("skips a package story that shadows an operational noun", () => {
235
- const entries = collectPackStories(
236
- CONFIG,
237
- [
238
- makePackage([
239
- {
240
- path: "/pkg/stories/graph.json",
241
- definition: { ...RECIPE_STORY, noun: "graph" },
242
- },
243
- ]),
244
- ],
245
- reserved,
246
- );
247
- expect(entries).toHaveLength(0);
248
- expect(warn).toHaveBeenCalledWith(
249
- expect.stringContaining("shadows built-in command"),
250
- );
251
- });
252
- });
253
-
254
- // Keystone incremental window (FIX 3): `standard`'s `list` wrapper is
255
- // deleted but `lookup` is still built-in (alongside categories/sample).
256
- describe("incremental leaf cutover window", () => {
257
- const reserved = deriveReservedVerbs([
258
- ["standard", "lookup"],
259
- ["standard", "categories"],
260
- ["standard", "sample"],
261
- ["info", undefined],
262
- ]);
263
-
264
- it("keeps `standard` per-verb because it still owns lookup (not promoted)", () => {
265
- // Disjointness check: the noun retains a read verb, so it must NOT be
266
- // wholesale-promoted — otherwise `list` could never be freed.
267
- expect(isReserved(reserved, "standard", "list")).toBe(false);
268
- expect(isReserved(reserved, "standard", "lookup")).toBe(true);
269
- });
270
-
271
- it("admits a standard pack that declares only list", () => {
272
- const listOnly = { ...RECIPE_STORY, noun: "standard", lookup: undefined };
273
- const entries = collectPackStories(
274
- CONFIG,
275
- [
276
- makePackage([
277
- { path: "/pkg/stories/standard.json", definition: listOnly },
278
- ]),
279
- ],
280
- reserved,
281
- );
282
- expect(entries.map((entry) => entry.definition.noun)).toEqual([
283
- "standard",
284
- ]);
285
- });
286
-
287
- it("rejects a standard pack that also declares lookup (config throws)", () => {
288
- const error = caught(() =>
289
- collectPackStories(
290
- { ...CONFIG, stories: [{ ...RECIPE_STORY, noun: "standard" }] },
291
- [],
292
- reserved,
293
- ),
294
- );
295
- expect(error).toBeInstanceOf(PragmaError);
296
- expect((error as PragmaError).code).toBe("CONFIG_ERROR");
297
- });
298
-
299
- it("rejects a standard pack that also declares lookup (package skips)", () => {
300
- const entries = collectPackStories(
301
- CONFIG,
302
- [
303
- makePackage([
304
- {
305
- path: "/pkg/stories/standard.json",
306
- definition: { ...RECIPE_STORY, noun: "standard" },
307
- },
308
- ]),
309
- ],
310
- reserved,
311
- );
312
- expect(entries).toHaveLength(0);
313
- expect(warn).toHaveBeenCalledWith(
314
- expect.stringContaining("shadows built-in command"),
315
- );
316
- });
317
-
318
- it("rejects a list-only standard pack whose extra verb is still built-in", () => {
319
- // Pack v1 emissions beyond list/lookup are guarded too: `categories`
320
- // here collides with the still-registered built-in wrapper.
321
- const withCategories = {
322
- ...RECIPE_STORY,
323
- noun: "standard",
324
- lookup: undefined,
325
- verbs: [
326
- {
327
- verb: "categories",
328
- query: RECIPE_STORY.list.query,
329
- columns: RECIPE_STORY.list.columns,
330
- },
331
- ],
332
- };
333
- const error = caught(() =>
334
- collectPackStories(
335
- { ...CONFIG, stories: [withCategories] },
336
- [],
337
- reserved,
338
- ),
339
- );
340
- expect(error).toBeInstanceOf(PragmaError);
341
- expect((error as PragmaError).message).toContain("standard categories");
342
- });
343
-
344
- it("rejects a pack whose sample capability is still built-in", () => {
345
- const withSample = {
346
- ...RECIPE_STORY,
347
- noun: "standard",
348
- lookup: {
349
- // biome-ignore lint/style/noNonNullAssertion: fixture always declares lookup
350
- ...RECIPE_STORY.lookup!,
351
- sample: true as const,
352
- },
353
- };
354
- const error = caught(() =>
355
- collectPackStories({ ...CONFIG, stories: [withSample] }, [], reserved),
356
- );
357
- expect(error).toBeInstanceOf(PragmaError);
358
- expect((error as PragmaError).message).toContain("standard sample");
359
- });
360
- });
361
-
362
- // Bundled transitional packs use the REAL collect (not the isolating wrapper).
363
- describe("bundled packs", () => {
364
- it("includes bundled packs by default, lowest precedence", () => {
365
- const entries = realCollectPackStories(
366
- CONFIG,
367
- [],
368
- buildReservedVerbs([]),
369
- );
370
- const nouns = entries.map((entry) => entry.definition.noun);
371
- // Every bundled pack is present, tagged with a `bundled:` source.
372
- for (const pack of BUNDLED_PACKS) {
373
- expect(nouns).toContain(pack.noun);
374
- const entry = entries.find((e) => e.definition.noun === pack.noun);
375
- expect(entry?.source).toBe(`bundled:${pack.noun}`);
376
- }
377
- });
378
-
379
- it("lets a config story override a bundled noun (config wins)", () => {
380
- const bundledNoun = BUNDLED_PACKS[0]?.noun ?? "tier";
381
- const entries = realCollectPackStories(
382
- { ...CONFIG, stories: [{ ...RECIPE_STORY, noun: bundledNoun }] },
383
- [],
384
- buildReservedVerbs([]),
385
- );
386
- const entry = entries.find((e) => e.definition.noun === bundledNoun);
387
- // The config-declared story wins; the bundled one yields silently.
388
- expect(entry?.source).toBe("config");
389
- expect(
390
- entries.filter((e) => e.definition.noun === bundledNoun),
391
- ).toHaveLength(1);
392
- });
393
-
394
- it("yields a bundled noun to a still-reserved built-in", () => {
395
- // If a bundled noun is still a built-in (not yet cut over), the bundled
396
- // pack must not shadow it.
397
- const bundledNoun = BUNDLED_PACKS[0]?.noun ?? "tier";
398
- const entries = realCollectPackStories(
399
- CONFIG,
400
- [],
401
- buildReservedVerbs([[bundledNoun, undefined]]),
402
- );
403
- expect(entries.map((e) => e.definition.noun)).not.toContain(bundledNoun);
404
- });
405
- });
406
- });
@@ -1,158 +0,0 @@
1
- import type { PragmaConfig } from "#config";
2
- import { PragmaError } from "#error";
3
- import type { SemanticPackage } from "../../semanticPackage.js";
4
- import { BUNDLED_PACKS } from "./bundled/index.js";
5
- import { isReserved, type ReservedVerbs } from "./reservedVerbs.js";
6
- import type { StoryPackDefinition } from "./types.js";
7
- import validateStoryPackDefinition from "./validateStoryPackDefinition.js";
8
-
9
- /** A validated story definition paired with where it was declared. */
10
- export interface PackStoryEntry {
11
- readonly definition: StoryPackDefinition;
12
- readonly source: string;
13
- }
14
-
15
- /**
16
- * The verbs a pack definition compiles to — mirrors `compilePackStories`,
17
- * which always emits `list`, adds any declared extra verbs, and adds
18
- * `lookup`/`sample` only when declared. The reserved-verb guard sees the
19
- * FULL emission so a pack cannot shadow any built-in verb.
20
- */
21
- function emittedVerbs(definition: StoryPackDefinition): string[] {
22
- return [
23
- "list",
24
- ...(definition.verbs ?? []).map((verb) => verb.verb),
25
- ...(definition.lookup ? ["lookup"] : []),
26
- ...(definition.lookup?.sample ? ["sample"] : []),
27
- ];
28
- }
29
-
30
- /**
31
- * Name the built-in `(noun, verb)` command(s) a pack collides with, for
32
- * actionable diagnostics — e.g. `built-in command "standard lookup"`.
33
- * Since the guard is per-verb, reporting the noun alone is misleading.
34
- */
35
- function describeShadow(noun: string, verbs: readonly string[]): string {
36
- const pairs = verbs.map((verb) => `"${noun} ${verb}"`).join(", ");
37
- return `built-in command${verbs.length > 1 ? "s" : ""} ${pairs}`;
38
- }
39
-
40
- /**
41
- * Gather the story-pack definitions active for a runtime.
42
- *
43
- * Config-declared stories come first (already validated by the config
44
- * parser) and win noun collisions against package-shipped ones — the
45
- * config is the user's override layer. Package story files are validated
46
- * here; an invalid or colliding package story is skipped with a warning
47
- * so one bad file cannot break boot. A config story colliding with a
48
- * reserved (built-in) noun is a hard config error. Bundled transitional
49
- * packs come last (lowest precedence), so config or a package can override
50
- * a bundled noun.
51
- *
52
- * @param config - The effective merged configuration.
53
- * @param packages - Resolved semantic packages (may ship `stories/*.json`).
54
- * @param reserved - Built-in `(noun, verb)` reservations packs must not
55
- * shadow; a pack collides only when it emits a reserved verb.
56
- * @param bundled - Transitional packs pragma ships by default (lowest
57
- * precedence). Defaults to {@link BUNDLED_PACKS}; tests pass `[]` to isolate.
58
- * @returns Validated, collision-free story entries.
59
- * @throws PragmaError with code `CONFIG_ERROR` when a config story shadows
60
- * a reserved built-in verb.
61
- * @note Impure — warns on stderr for skipped package stories.
62
- */
63
- export default function collectPackStories(
64
- config: PragmaConfig,
65
- packages: readonly SemanticPackage[],
66
- reserved: ReservedVerbs,
67
- bundled: readonly StoryPackDefinition[] = BUNDLED_PACKS,
68
- ): PackStoryEntry[] {
69
- const entries: PackStoryEntry[] = [];
70
- const taken = new Set<string>();
71
-
72
- for (const definition of config.stories ?? []) {
73
- const shadowed = emittedVerbs(definition).filter((verb) =>
74
- isReserved(reserved, definition.noun, verb),
75
- );
76
- if (shadowed.length > 0) {
77
- throw PragmaError.configError(
78
- `Story noun "${definition.noun}" shadows ${describeShadow(
79
- definition.noun,
80
- shadowed,
81
- )}.`,
82
- );
83
- }
84
- if (taken.has(definition.noun)) {
85
- throw PragmaError.configError(
86
- `Duplicate story noun "${definition.noun}" in config.`,
87
- );
88
- }
89
- taken.add(definition.noun);
90
- entries.push({ definition, source: "config" });
91
- }
92
-
93
- for (const pkg of packages) {
94
- for (const file of pkg.stories) {
95
- let definition: StoryPackDefinition;
96
- try {
97
- definition = validateStoryPackDefinition(file.definition, file.path);
98
- } catch (error) {
99
- const reason = error instanceof Error ? error.message : String(error);
100
- process.stderr.write(`Warning: skipping story — ${reason}\n`);
101
- continue;
102
- }
103
- const shadowed = emittedVerbs(definition).filter((verb) =>
104
- isReserved(reserved, definition.noun, verb),
105
- );
106
- if (shadowed.length > 0) {
107
- process.stderr.write(
108
- `Warning: skipping story "${definition.noun}" from ${file.path} — it shadows ${describeShadow(
109
- definition.noun,
110
- shadowed,
111
- )}.\n`,
112
- );
113
- continue;
114
- }
115
- if (taken.has(definition.noun)) {
116
- process.stderr.write(
117
- `Warning: skipping story "${definition.noun}" from ${file.path} — the noun is already provided by a higher-precedence source.\n`,
118
- );
119
- continue;
120
- }
121
- taken.add(definition.noun);
122
- entries.push({ definition, source: file.path });
123
- }
124
- }
125
-
126
- // Bundled transitional packs — lowest precedence, so a config- or
127
- // package-declared story for the same noun overrides them (the P4 handoff).
128
- // Authored in-repo but still validated: only a validation failure (an
129
- // authoring slip) is skipped with a warning (consistent with package
130
- // stories — one bad pack cannot break boot), and the pack's own parity tests
131
- // catch a bundled pack that fails to load. When a still-reserved built-in or
132
- // a higher-precedence source already owns the noun, the bundled pack yields
133
- // silently (no warning) — the shadow/duplicate check below, matching the
134
- // precedence order rather than flagging an error.
135
- for (const raw of bundled) {
136
- const source = `bundled:${raw.noun}`;
137
- let definition: StoryPackDefinition;
138
- try {
139
- definition = validateStoryPackDefinition(raw, source);
140
- } catch (error) {
141
- const reason = error instanceof Error ? error.message : String(error);
142
- process.stderr.write(`Warning: skipping bundled story — ${reason}\n`);
143
- continue;
144
- }
145
- const shadowed = emittedVerbs(definition).filter((verb) =>
146
- isReserved(reserved, definition.noun, verb),
147
- );
148
- if (shadowed.length > 0 || taken.has(definition.noun)) {
149
- // A still-registered built-in (not yet cut over) or a higher-precedence
150
- // source already owns this noun — the bundled pack yields to it silently.
151
- continue;
152
- }
153
- taken.add(definition.noun);
154
- entries.push({ definition, source });
155
- }
156
-
157
- return entries;
158
- }
@@ -1,50 +0,0 @@
1
- import type { CommandDefinition } from "@canonical/cli-core";
2
- import type { PragmaContext } from "../../context.js";
3
- import { resolvePrefixes } from "../../prefixes.js";
4
- import compileLookupCommand from "../compileLookupCommand.js";
5
- import compileReadCommand from "../compileReadCommand.js";
6
- import collectPackStories from "./collectPackStories.js";
7
- import compilePackStories from "./compilePackStories.js";
8
- import type { ReservedVerbs } from "./reservedVerbs.js";
9
-
10
- /**
11
- * Compile every active story pack into CLI command definitions.
12
- *
13
- * Story packs come from the merged config (`stories`) and from resolved
14
- * semantic packages (`stories/*.json`); each yields `<noun> list` and,
15
- * when declared, `<noun> lookup`, extra list verbs, and `<noun> sample` —
16
- * projected through the same kernel as the built-in read stories, so
17
- * completions and help come for free.
18
- *
19
- * @param ctx - Pragma context carrying config, packages, and the store.
20
- * @param reserved - Built-in `(noun, verb)` reservations packs must not shadow.
21
- * @returns Command definitions for every pack story.
22
- */
23
- export default function compilePackCommands(
24
- ctx: PragmaContext,
25
- reserved: ReservedVerbs,
26
- ): CommandDefinition[] {
27
- const prefixes = resolvePrefixes(ctx.packages ?? [], ctx.config.prefixes);
28
- const entries = collectPackStories(ctx.config, ctx.packages ?? [], reserved);
29
-
30
- return entries.flatMap((entry) => {
31
- const compiled = compilePackStories(
32
- entry.definition,
33
- entry.source,
34
- prefixes,
35
- );
36
- // Surface order mirrors the built-in leaf domains: list, lookup,
37
- // extra verbs, sample.
38
- const commands = [compileReadCommand(ctx, compiled.list)];
39
- if (compiled.lookup) {
40
- commands.push(compileLookupCommand(ctx, compiled.lookup));
41
- }
42
- for (const verb of compiled.verbs) {
43
- commands.push(compileReadCommand(ctx, verb));
44
- }
45
- if (compiled.sample) {
46
- commands.push(compileReadCommand(ctx, compiled.sample));
47
- }
48
- return commands;
49
- });
50
- }