@canonical/pragma-cli 0.31.0 → 0.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1091) hide show
  1. package/README.md +35 -421
  2. package/dist/pragma +0 -0
  3. package/package.json +28 -42
  4. package/src/bin.ts +292 -11
  5. package/src/capabilities/block/blockList.test.ts +79 -0
  6. package/src/capabilities/block/blockList.verb.ts +163 -0
  7. package/src/capabilities/block/index.ts +25 -0
  8. package/src/capabilities/block/pack.ts +166 -0
  9. package/src/capabilities/block/parity.test.ts +187 -0
  10. package/src/capabilities/block/tierChain.ts +78 -0
  11. package/src/capabilities/capabilities/capabilities.render.ts +89 -0
  12. package/src/capabilities/capabilities/capabilities.test.ts +140 -0
  13. package/src/capabilities/capabilities/capabilities.verb.ts +48 -0
  14. package/src/capabilities/capabilities/catalog.ts +148 -0
  15. package/src/capabilities/capabilities/hints.ts +212 -0
  16. package/src/capabilities/capabilities/index.ts +13 -0
  17. package/src/capabilities/capabilities/types.ts +60 -0
  18. package/src/capabilities/colophon/collectColophon.ts +68 -0
  19. package/src/capabilities/colophon/colophon.render.test.ts +114 -0
  20. package/src/capabilities/colophon/colophon.render.ts +47 -0
  21. package/src/capabilities/colophon/colophon.test.ts +241 -0
  22. package/src/capabilities/colophon/colophon.verb.ts +44 -0
  23. package/src/capabilities/colophon/index.ts +6 -0
  24. package/src/capabilities/colophon/markdownTerminal.test.ts +50 -0
  25. package/src/capabilities/colophon/markdownTerminal.ts +104 -0
  26. package/src/capabilities/colophon/pragmaColophon.ts +66 -0
  27. package/src/capabilities/colophon/types.ts +29 -0
  28. package/src/capabilities/config/collectConfigShow.ts +32 -0
  29. package/src/capabilities/config/field.render.ts +28 -0
  30. package/src/capabilities/config/fields.ts +81 -0
  31. package/src/capabilities/config/index.ts +6 -0
  32. package/src/capabilities/config/runField.ts +59 -0
  33. package/src/capabilities/config/runSet.ts +38 -0
  34. package/src/capabilities/config/set.test.ts +207 -0
  35. package/src/capabilities/config/set.verb.ts +70 -0
  36. package/src/capabilities/config/show.render.test.ts +65 -0
  37. package/src/capabilities/config/show.render.ts +107 -0
  38. package/src/capabilities/config/show.verb.ts +45 -0
  39. package/src/capabilities/config/types.ts +27 -0
  40. package/src/capabilities/create/byteEquality.subprocess.test.ts +88 -0
  41. package/src/capabilities/create/byteEquality.test.ts +225 -0
  42. package/src/capabilities/create/compiledCreate.subprocess.test.ts +152 -0
  43. package/src/capabilities/create/create.mcp.test.ts +139 -0
  44. package/src/capabilities/create/create.render.ts +50 -0
  45. package/src/capabilities/create/create.test.ts +432 -0
  46. package/src/capabilities/create/create.verb.ts +493 -0
  47. package/src/capabilities/create/cwdJail.test.ts +129 -0
  48. package/src/capabilities/create/generatorToVerbSpec.ts +111 -0
  49. package/src/capabilities/create/index.ts +25 -0
  50. package/src/capabilities/create/pathJail.ts +73 -0
  51. package/src/capabilities/create/pickGenerator.ts +63 -0
  52. package/src/capabilities/create/templates.embedded.generated.ts +53 -0
  53. package/src/capabilities/create/types.ts +8 -0
  54. package/src/capabilities/doctor/checks/checkConfigFile.ts +41 -0
  55. package/src/capabilities/doctor/checks/checkKeStore.ts +39 -0
  56. package/src/capabilities/doctor/checks/checkMcpCommands.ts +114 -0
  57. package/src/capabilities/doctor/checks/checkMcpConfigured.ts +67 -0
  58. package/src/capabilities/doctor/checks/checkNodeVersion.ts +25 -0
  59. package/src/capabilities/doctor/checks/checkPackageRefs.ts +73 -0
  60. package/src/capabilities/doctor/checks/checkPragmaVersion.ts +22 -0
  61. package/src/capabilities/doctor/checks/checkShellCompletions.test.ts +111 -0
  62. package/src/capabilities/doctor/checks/checkShellCompletions.ts +131 -0
  63. package/src/capabilities/doctor/checks/checkSkillsSymlinked.ts +60 -0
  64. package/src/capabilities/doctor/checks/deriveBand.test.ts +42 -0
  65. package/src/capabilities/doctor/checks/deriveBand.ts +28 -0
  66. package/src/capabilities/doctor/doctor.render.test.ts +170 -0
  67. package/src/capabilities/doctor/doctor.render.ts +198 -0
  68. package/src/capabilities/doctor/doctor.test.ts +209 -0
  69. package/src/capabilities/doctor/doctor.verb.ts +46 -0
  70. package/src/capabilities/doctor/index.ts +6 -0
  71. package/src/capabilities/doctor/runChecks.ts +100 -0
  72. package/src/capabilities/doctor/types.ts +56 -0
  73. package/src/capabilities/emptyRecovery.test.ts +112 -0
  74. package/src/capabilities/graph/index.ts +21 -0
  75. package/src/capabilities/graph/inspect.render.ts +38 -0
  76. package/src/capabilities/graph/inspect.test.ts +80 -0
  77. package/src/capabilities/graph/inspect.verb.ts +51 -0
  78. package/src/capabilities/graph/query.render.ts +77 -0
  79. package/src/capabilities/graph/query.test.ts +156 -0
  80. package/src/capabilities/graph/query.verb.ts +58 -0
  81. package/src/capabilities/graph/runQuery.ts +49 -0
  82. package/src/capabilities/index.ts +54 -0
  83. package/src/capabilities/info/collectInfo.ts +76 -0
  84. package/src/capabilities/info/index.ts +6 -0
  85. package/src/capabilities/info/info.render.ts +72 -0
  86. package/src/capabilities/info/info.test.ts +127 -0
  87. package/src/capabilities/info/info.verb.ts +46 -0
  88. package/src/capabilities/info/types.ts +42 -0
  89. package/src/capabilities/lazy.test.ts +89 -0
  90. package/src/capabilities/meta/complete.verb.ts +52 -0
  91. package/src/capabilities/meta/index.ts +15 -0
  92. package/src/capabilities/meta/mcp.verb.ts +35 -0
  93. package/src/capabilities/modifier/index.ts +15 -0
  94. package/src/capabilities/modifier/pack.ts +64 -0
  95. package/src/capabilities/ontology/index.ts +19 -0
  96. package/src/capabilities/ontology/ontology.test.ts +246 -0
  97. package/src/capabilities/ontology/queries.ts +197 -0
  98. package/src/capabilities/ontology/render.ts +87 -0
  99. package/src/capabilities/ontology/verbs.ts +269 -0
  100. package/src/capabilities/prompt/index.ts +18 -0
  101. package/src/capabilities/prompt/prompt.render.test.ts +94 -0
  102. package/src/capabilities/prompt/prompt.render.ts +87 -0
  103. package/src/capabilities/prompt/prompt.test.ts +180 -0
  104. package/src/capabilities/prompt/types.ts +30 -0
  105. package/src/capabilities/prompt/verbs.ts +93 -0
  106. package/src/capabilities/reference.test.ts +32 -0
  107. package/src/capabilities/resources/index.ts +15 -0
  108. package/src/capabilities/resources/provider.ts +245 -0
  109. package/src/capabilities/resources/resources.test.ts +213 -0
  110. package/src/capabilities/roundtrip.test.ts +107 -0
  111. package/src/capabilities/scopeTypeSync.test.ts +37 -0
  112. package/src/capabilities/setup/index.ts +12 -0
  113. package/src/capabilities/setup/operations/setupCompletions.ts +141 -0
  114. package/src/capabilities/setup/operations/setupGenerator.ts +403 -0
  115. package/src/capabilities/setup/operations/setupLsp.ts +105 -0
  116. package/src/capabilities/setup/operations/setupMcp.ts +262 -0
  117. package/src/capabilities/setup/operations/setupSkills.ts +205 -0
  118. package/src/capabilities/setup/setup.render.test.ts +109 -0
  119. package/src/capabilities/setup/setup.render.ts +96 -0
  120. package/src/capabilities/setup/setup.test.ts +702 -0
  121. package/src/capabilities/setup/setup.verb.ts +261 -0
  122. package/src/capabilities/setup/shell.ts +85 -0
  123. package/src/capabilities/setup/types.ts +99 -0
  124. package/src/capabilities/shared/assertExecOk.ts +106 -0
  125. package/src/capabilities/shared/bands.ts +16 -0
  126. package/src/capabilities/shared/packageManager.ts +62 -0
  127. package/src/capabilities/shared/registry.ts +70 -0
  128. package/src/capabilities/skill/discover.ts +178 -0
  129. package/src/capabilities/skill/index.ts +12 -0
  130. package/src/capabilities/skill/render.ts +60 -0
  131. package/src/capabilities/skill/skill.test.ts +142 -0
  132. package/src/capabilities/skill/verbs.ts +100 -0
  133. package/src/capabilities/sources/collectStatus.ts +102 -0
  134. package/src/capabilities/sources/index.ts +15 -0
  135. package/src/capabilities/sources/installSkills.ts +124 -0
  136. package/src/capabilities/sources/runUpdate.ts +464 -0
  137. package/src/capabilities/sources/sources.test.ts +828 -0
  138. package/src/capabilities/sources/status.render.test.ts +65 -0
  139. package/src/capabilities/sources/status.render.ts +83 -0
  140. package/src/capabilities/sources/status.verb.ts +42 -0
  141. package/src/capabilities/sources/types.ts +51 -0
  142. package/src/capabilities/sources/update.render.ts +35 -0
  143. package/src/capabilities/sources/update.verb.ts +76 -0
  144. package/src/capabilities/standard/index.ts +18 -0
  145. package/src/capabilities/standard/pack.ts +128 -0
  146. package/src/capabilities/standard/parity.test.ts +208 -0
  147. package/src/capabilities/surface.test.ts +233 -0
  148. package/src/capabilities/tier/index.ts +19 -0
  149. package/src/capabilities/tier/lookup.render.test.ts +72 -0
  150. package/src/capabilities/tier/lookup.render.ts +59 -0
  151. package/src/capabilities/tier/lookup.test.ts +83 -0
  152. package/src/capabilities/tier/lookup.verb.ts +44 -0
  153. package/src/capabilities/tier/pack.ts +28 -0
  154. package/src/capabilities/tier/runLookup.ts +87 -0
  155. package/src/capabilities/token/addConfig.render.ts +27 -0
  156. package/src/capabilities/token/addConfig.test.ts +62 -0
  157. package/src/capabilities/token/addConfig.verb.ts +40 -0
  158. package/src/capabilities/token/index.ts +19 -0
  159. package/src/capabilities/token/pack.ts +58 -0
  160. package/src/capabilities/token/runAddConfig.ts +95 -0
  161. package/src/capabilities/upgrade/index.ts +6 -0
  162. package/src/capabilities/upgrade/runUpgrade.ts +119 -0
  163. package/src/capabilities/upgrade/types.ts +21 -0
  164. package/src/capabilities/upgrade/upgrade.render.ts +55 -0
  165. package/src/capabilities/upgrade/upgrade.test.ts +372 -0
  166. package/src/capabilities/upgrade/upgrade.verb.ts +56 -0
  167. package/src/constants.test.ts +33 -0
  168. package/src/constants.ts +38 -70
  169. package/src/index.ts +27 -122
  170. package/src/kernel/completion/__snapshots__/emitScripts.test.ts.snap +339 -0
  171. package/src/kernel/completion/bashDrive.test.ts +73 -0
  172. package/src/kernel/completion/complete.test.ts +99 -0
  173. package/src/kernel/completion/complete.ts +77 -0
  174. package/src/kernel/completion/emitScripts.test.ts +173 -0
  175. package/src/kernel/completion/emitScripts.ts +122 -0
  176. package/src/kernel/completion/entitySource.test.ts +198 -0
  177. package/src/kernel/completion/entitySource.ts +277 -0
  178. package/src/kernel/completion/index.ts +42 -0
  179. package/src/kernel/completion/model.test.ts +405 -0
  180. package/src/kernel/completion/model.ts +258 -0
  181. package/src/kernel/completion/parse.test.ts +336 -0
  182. package/src/kernel/completion/parse.ts +294 -0
  183. package/src/kernel/completion/rank.test.ts +100 -0
  184. package/src/kernel/completion/rank.ts +118 -0
  185. package/src/kernel/completion/resolve.test.ts +204 -0
  186. package/src/kernel/completion/resolve.ts +133 -0
  187. package/src/kernel/completion/safety.test.ts +374 -0
  188. package/src/kernel/completion/templates/bash.ts +249 -0
  189. package/src/kernel/completion/templates/fish.ts +245 -0
  190. package/src/kernel/completion/templates/shared.ts +134 -0
  191. package/src/kernel/completion/templates/zsh.ts +246 -0
  192. package/src/kernel/completion/types.ts +153 -0
  193. package/src/kernel/config/__snapshots__/firstRun.test.ts.snap +11 -0
  194. package/src/kernel/config/defaults.ts +28 -0
  195. package/src/kernel/config/evaluateProjectConfig.ts +119 -0
  196. package/src/kernel/config/findProjectConfig.ts +45 -0
  197. package/src/kernel/config/firstRun.test.ts +60 -0
  198. package/src/kernel/config/firstRun.ts +91 -0
  199. package/src/kernel/config/globalConfig.ts +94 -0
  200. package/src/kernel/config/index.ts +35 -0
  201. package/src/kernel/config/paths.ts +39 -0
  202. package/src/kernel/config/readConfig.test.ts +245 -0
  203. package/src/kernel/config/readConfig.ts +94 -0
  204. package/src/kernel/config/schema.ts +56 -0
  205. package/src/kernel/config/types.ts +106 -0
  206. package/src/kernel/config/writeConfigField.ts +82 -0
  207. package/src/kernel/error/PragmaError.test.ts +119 -0
  208. package/src/kernel/error/PragmaError.ts +182 -0
  209. package/src/kernel/error/constants.ts +38 -0
  210. package/src/kernel/error/fromTaskError.test.ts +83 -0
  211. package/src/kernel/error/fromTaskError.ts +80 -0
  212. package/src/kernel/error/index.ts +23 -0
  213. package/src/kernel/error/recovery.test.ts +60 -0
  214. package/src/kernel/error/recovery.ts +49 -0
  215. package/src/kernel/error/renderError.ts +101 -0
  216. package/src/kernel/error/serialize.ts +28 -0
  217. package/src/kernel/error/types.ts +62 -0
  218. package/src/kernel/packs/collect.test.ts +138 -0
  219. package/src/kernel/packs/collect.ts +108 -0
  220. package/src/kernel/packs/compile.test.ts +229 -0
  221. package/src/kernel/packs/compile.ts +315 -0
  222. package/src/kernel/packs/disclosure.test.ts +200 -0
  223. package/src/kernel/packs/disclosure.ts +98 -0
  224. package/src/kernel/packs/glob.ts +39 -0
  225. package/src/kernel/packs/graphql/buildLookupDocument.ts +397 -0
  226. package/src/kernel/packs/graphql/fetchGraphqlLookup.ts +217 -0
  227. package/src/kernel/packs/graphql/nameMap.ts +67 -0
  228. package/src/kernel/packs/graphqlSource.test.ts +383 -0
  229. package/src/kernel/packs/iri.ts +78 -0
  230. package/src/kernel/packs/renderPack.ts +196 -0
  231. package/src/kernel/packs/resolveEntity.ts +232 -0
  232. package/src/kernel/packs/runBodies.ts +157 -0
  233. package/src/kernel/packs/sample.ts +60 -0
  234. package/src/kernel/packs/schema.ts +328 -0
  235. package/src/kernel/packs/sparql/applyFilters.ts +83 -0
  236. package/src/kernel/packs/sparql/applySearch.ts +33 -0
  237. package/src/kernel/packs/sparql/buildLookupQuery.ts +180 -0
  238. package/src/kernel/packs/sparql/escape.ts +22 -0
  239. package/src/kernel/packs/sparql/runSelect.test.ts +80 -0
  240. package/src/kernel/packs/sparql/runSelect.ts +84 -0
  241. package/src/kernel/packs/toolDescription.test.ts +81 -0
  242. package/src/kernel/packs/types.ts +337 -0
  243. package/src/kernel/packs/uniqueness.ts +35 -0
  244. package/src/kernel/project/cli/buildProgram.test.ts +431 -0
  245. package/src/kernel/project/cli/buildProgram.ts +291 -0
  246. package/src/kernel/project/cli/dispatch.test.ts +288 -0
  247. package/src/kernel/project/cli/dispatch.ts +334 -0
  248. package/src/kernel/project/cli/exitCodes.test.ts +59 -0
  249. package/src/kernel/project/cli/exitCodes.ts +68 -0
  250. package/src/kernel/project/cli/globalFlags.test.ts +107 -0
  251. package/src/kernel/project/cli/globalFlags.ts +149 -0
  252. package/src/kernel/project/cli/helpFormat.ts +58 -0
  253. package/src/kernel/project/cli/index.ts +21 -0
  254. package/src/kernel/project/cli/interactionSeam.test.ts +99 -0
  255. package/src/kernel/project/cli/rootHelp.ts +220 -0
  256. package/src/kernel/project/cli/suggest.test.ts +54 -0
  257. package/src/kernel/project/cli/suggest.ts +67 -0
  258. package/src/kernel/project/cli/suggestNames.ts +122 -0
  259. package/src/kernel/project/cli/verbHelp.test.ts +138 -0
  260. package/src/kernel/project/cli/verbHelp.ts +144 -0
  261. package/src/kernel/project/mcp/buildServer.ts +70 -0
  262. package/src/kernel/project/mcp/envelope.ts +44 -0
  263. package/src/kernel/project/mcp/index.ts +8 -0
  264. package/src/kernel/project/mcp/instructions.ts +48 -0
  265. package/src/kernel/project/mcp/mcpError.ts +52 -0
  266. package/src/kernel/project/mcp/parity.test.ts +72 -0
  267. package/src/kernel/project/mcp/prompts/prompts.test.ts +104 -0
  268. package/src/kernel/project/mcp/prompts/provider.ts +104 -0
  269. package/src/kernel/project/mcp/prompts/source.ts +194 -0
  270. package/src/kernel/project/mcp/registerVerb.test.ts +238 -0
  271. package/src/kernel/project/mcp/registerVerb.ts +296 -0
  272. package/src/kernel/project/mcp/serve.ts +34 -0
  273. package/src/kernel/project/mcp/toolDescriptions.test.ts +80 -0
  274. package/src/kernel/render/__snapshots__/renderers.test.ts.snap +127 -0
  275. package/src/kernel/render/compactUri.ts +25 -0
  276. package/src/kernel/render/contracts.ts +72 -0
  277. package/src/kernel/render/disclosure.ts +44 -0
  278. package/src/kernel/render/envelope.ts +50 -0
  279. package/src/kernel/render/formatters.ts +31 -0
  280. package/src/kernel/render/index.ts +30 -0
  281. package/src/kernel/render/prefixes.ts +21 -0
  282. package/src/kernel/render/renderers.test.ts +205 -0
  283. package/src/kernel/render/renderers.ts +447 -0
  284. package/src/kernel/render/style.test.ts +31 -0
  285. package/src/kernel/render/style.ts +74 -0
  286. package/src/kernel/render/writeStdout.test.ts +43 -0
  287. package/src/kernel/render/writeStdout.ts +49 -0
  288. package/src/kernel/runtime/boot.test.ts +69 -0
  289. package/src/kernel/runtime/boot.ts +59 -0
  290. package/src/kernel/runtime/facade.test.ts +125 -0
  291. package/src/kernel/runtime/facade.ts +47 -0
  292. package/src/kernel/runtime/graphpack/build.ts +176 -0
  293. package/src/kernel/runtime/graphpack/buildIndex.test.ts +103 -0
  294. package/src/kernel/runtime/graphpack/buildIndex.ts +317 -0
  295. package/src/kernel/runtime/graphpack/embedded/pack.generated.ts +5 -0
  296. package/src/kernel/runtime/graphpack/embedded/pack.index.generated.ts +3 -0
  297. package/src/kernel/runtime/graphpack/embedded/sample.ttl +39 -0
  298. package/src/kernel/runtime/graphpack/embedded.ts +70 -0
  299. package/src/kernel/runtime/graphpack/graphpack.test.ts +221 -0
  300. package/src/kernel/runtime/graphpack/hash.ts +46 -0
  301. package/src/kernel/runtime/graphpack/index.ts +21 -0
  302. package/src/kernel/runtime/graphpack/manifest.ts +55 -0
  303. package/src/kernel/runtime/graphpack/read.ts +117 -0
  304. package/src/kernel/runtime/graphpack/types.ts +125 -0
  305. package/src/kernel/runtime/index.ts +15 -0
  306. package/src/kernel/runtime/loadSession.ts +48 -0
  307. package/src/kernel/runtime/lock.ts +90 -0
  308. package/src/kernel/runtime/paths.ts +37 -0
  309. package/src/kernel/runtime/probe.test.ts +16 -0
  310. package/src/kernel/runtime/probe.ts +39 -0
  311. package/src/kernel/runtime/readEntity.ts +83 -0
  312. package/src/kernel/runtime/refs/gitOps.ts +88 -0
  313. package/src/kernel/runtime/refs/parseRef.test.ts +34 -0
  314. package/src/kernel/runtime/refs/parseRef.ts +103 -0
  315. package/src/kernel/runtime/refs/resolve.ts +380 -0
  316. package/src/kernel/runtime/resolveSources.test.ts +154 -0
  317. package/src/kernel/runtime/resolveSources.ts +66 -0
  318. package/src/kernel/runtime/store.test.ts +94 -0
  319. package/src/kernel/runtime/store.ts +90 -0
  320. package/src/kernel/runtime/storeReadiness.ts +61 -0
  321. package/src/kernel/runtime/storeless.test.ts +86 -0
  322. package/src/kernel/runtime/types.ts +210 -0
  323. package/src/kernel/runtime/wasmEmbed.test.ts +144 -0
  324. package/src/kernel/spec/asVerb.ts +23 -0
  325. package/src/kernel/spec/emitReference.test.ts +196 -0
  326. package/src/kernel/spec/emitReference.ts +491 -0
  327. package/src/kernel/spec/emitSurface.test.ts +65 -0
  328. package/src/kernel/spec/emitSurface.ts +225 -0
  329. package/src/kernel/spec/index.ts +36 -0
  330. package/src/kernel/spec/surfaceConformance.test.ts +94 -0
  331. package/src/kernel/spec/surfaceConformance.ts +135 -0
  332. package/src/kernel/spec/types.ts +233 -0
  333. package/src/kernel/spec/validate.test.ts +81 -0
  334. package/src/kernel/spec/validate.ts +125 -0
  335. package/src/testing/PARITY_GAPS.test.ts +32 -0
  336. package/src/testing/PARITY_GAPS.ts +179 -0
  337. package/src/testing/behavioral/README.md +164 -0
  338. package/src/testing/behavioral/agentSession.mcp.test.ts +160 -0
  339. package/src/testing/behavioral/autoLlm.e2e.test.ts +54 -0
  340. package/src/testing/behavioral/completion.test.ts +132 -0
  341. package/src/testing/behavioral/disclosure.test.ts +115 -0
  342. package/src/testing/behavioral/docExamples.test.ts +283 -0
  343. package/src/testing/behavioral/errorMatrix.mcp.test.ts +120 -0
  344. package/src/testing/behavioral/errorMatrix.storeless.test.ts +124 -0
  345. package/src/testing/behavioral/exitCodes.e2e.test.ts +53 -0
  346. package/src/testing/behavioral/firstRun.e2e.test.ts +40 -0
  347. package/src/testing/behavioral/harness.foundation.test.ts +136 -0
  348. package/src/testing/behavioral/journeys.cli.test.ts +131 -0
  349. package/src/testing/behavioral/journeys.defaultPack.test.ts +571 -0
  350. package/src/testing/behavioral/journeys.interactiveTty.e2e.test.ts +66 -0
  351. package/src/testing/behavioral/journeys.livePack.e2e.test.ts +129 -0
  352. package/src/testing/behavioral/journeys.mcpLifecycle.mcp.test.ts +176 -0
  353. package/src/testing/behavioral/liveReadSurface.ts +80 -0
  354. package/src/testing/behavioral/mcpServe.e2e.test.ts +21 -0
  355. package/src/testing/behavioral/mcpSurface.test.ts +139 -0
  356. package/src/testing/behavioral/parity.test.ts +224 -0
  357. package/src/testing/behavioral/rootCli.e2e.test.ts +62 -0
  358. package/src/testing/behavioral/staleCommands.test.ts +76 -0
  359. package/src/testing/eval/__snapshots__/eval.test.ts.snap +201 -0
  360. package/src/testing/eval/cases/assembly.ts +195 -0
  361. package/src/testing/eval/cases/effectful.ts +248 -0
  362. package/src/testing/eval/cases/readNouns.ts +235 -0
  363. package/src/testing/eval/cases/stable.ts +163 -0
  364. package/src/testing/eval/eval.test.ts +74 -0
  365. package/src/testing/eval/harness.ts +91 -0
  366. package/src/testing/eval/report.ts +58 -0
  367. package/src/testing/fixtures/blockGraph.ts +112 -0
  368. package/src/testing/fixtures/completionFixture.ts +239 -0
  369. package/src/testing/fixtures/fixtureCapability.ts +331 -0
  370. package/src/testing/fixtures/graph/canonical.ts +184 -0
  371. package/src/testing/fixtures/graph/defaultPack.ts +178 -0
  372. package/src/testing/fixtures/graph/owlExport.ts +95 -0
  373. package/src/testing/fixtures/packs/recipe.ts +78 -0
  374. package/src/testing/helpers/extractSnippets.ts +29 -0
  375. package/src/testing/helpers/fixtureGraph.ts +148 -0
  376. package/src/testing/helpers/golden.ts +45 -0
  377. package/src/testing/helpers/packRuntime.ts +118 -0
  378. package/src/testing/helpers/parity.ts +86 -0
  379. package/src/testing/helpers/projectCli.ts +35 -0
  380. package/src/testing/helpers/projectMcp.ts +145 -0
  381. package/src/testing/helpers/runCli.ts +128 -0
  382. package/src/testing/perf/budgets.test.ts +164 -0
  383. package/src/testing/perf/budgets.ts +37 -0
  384. package/src/testing/perf/globalSetup.ts +30 -0
  385. package/src/testing/perf/measure.ts +97 -0
  386. package/src/testing/setupXdgIsolation.ts +13 -12
  387. package/src/types.ts +42 -0
  388. package/src/bin.test.ts +0 -54
  389. package/src/compile-validation.runner.ts +0 -137
  390. package/src/compile-validation.ts +0 -191
  391. package/src/completions/computeSocketPath.test.ts +0 -26
  392. package/src/completions/computeSocketPath.ts +0 -16
  393. package/src/completions/constants.ts +0 -25
  394. package/src/completions/handleQuery.test.ts +0 -125
  395. package/src/completions/handleQuery.ts +0 -49
  396. package/src/completions/index.ts +0 -14
  397. package/src/completions/queryCompletions.test.ts +0 -105
  398. package/src/completions/queryCompletions.ts +0 -75
  399. package/src/completions/querySocket.test.ts +0 -101
  400. package/src/completions/querySocket.ts +0 -71
  401. package/src/completions/startCompletionsServer.test.ts +0 -74
  402. package/src/completions/startCompletionsServer.ts +0 -75
  403. package/src/completions/startCompletionsServer.unit.test.ts +0 -131
  404. package/src/completions/waitForSocket.test.ts +0 -27
  405. package/src/completions/waitForSocket.ts +0 -27
  406. package/src/config/configExists.ts +0 -14
  407. package/src/config/defaultConfig.test.ts +0 -33
  408. package/src/config/defaultConfig.ts +0 -59
  409. package/src/config/defaults.json +0 -17
  410. package/src/config/findProjectConfigPath.test.ts +0 -53
  411. package/src/config/findProjectConfigPath.ts +0 -36
  412. package/src/config/index.ts +0 -21
  413. package/src/config/mergeConfigFileUpdate.ts +0 -58
  414. package/src/config/parseConfigValues.ts +0 -217
  415. package/src/config/readConfig.test.ts +0 -395
  416. package/src/config/readConfig.ts +0 -21
  417. package/src/config/readConfigLayers.test.ts +0 -109
  418. package/src/config/readConfigLayers.ts +0 -118
  419. package/src/config/resolveConfigPath.test.ts +0 -20
  420. package/src/config/resolveConfigPath.ts +0 -11
  421. package/src/config/resolveGlobalConfigPath.ts +0 -13
  422. package/src/config/resolveWriteConfigPath.test.ts +0 -53
  423. package/src/config/resolveWriteConfigPath.ts +0 -31
  424. package/src/config/types.ts +0 -128
  425. package/src/config/writeConfig.ts +0 -37
  426. package/src/domains/block/blockConfig.ts +0 -97
  427. package/src/domains/block/commands/index.ts +0 -5
  428. package/src/domains/block/commands/list.test.ts +0 -111
  429. package/src/domains/block/commands/list.ts +0 -11
  430. package/src/domains/block/commands/lookup.test.ts +0 -187
  431. package/src/domains/block/commands/lookup.ts +0 -14
  432. package/src/domains/block/commands/sample.ts +0 -56
  433. package/src/domains/block/formatters/index.ts +0 -5
  434. package/src/domains/block/formatters/list.test.ts +0 -107
  435. package/src/domains/block/formatters/list.ts +0 -50
  436. package/src/domains/block/formatters/lookup.test.ts +0 -318
  437. package/src/domains/block/formatters/lookup.ts +0 -149
  438. package/src/domains/block/formatters/sample.ts +0 -21
  439. package/src/domains/block/formatters/types.ts +0 -16
  440. package/src/domains/block/helpers/index.ts +0 -4
  441. package/src/domains/block/helpers/resolveAspects.test.ts +0 -64
  442. package/src/domains/block/helpers/resolveAspects.ts +0 -35
  443. package/src/domains/block/index.ts +0 -25
  444. package/src/domains/block/mcp/index.ts +0 -2
  445. package/src/domains/block/mcp/specs.ts +0 -67
  446. package/src/domains/block/operations/index.ts +0 -5
  447. package/src/domains/block/operations/list.test.ts +0 -80
  448. package/src/domains/block/operations/list.ts +0 -72
  449. package/src/domains/block/operations/lookup.test.ts +0 -129
  450. package/src/domains/block/operations/lookup.ts +0 -446
  451. package/src/domains/block/operations/sample.ts +0 -41
  452. package/src/domains/block/orchestration/blockEmptyError.test.ts +0 -26
  453. package/src/domains/block/orchestration/blockEmptyError.ts +0 -19
  454. package/src/domains/block/orchestration/buildBlockFilters.ts +0 -12
  455. package/src/domains/block/orchestration/enrichBlocks.ts +0 -44
  456. package/src/domains/block/orchestration/index.ts +0 -5
  457. package/src/domains/block/orchestration/resolveBlockList.ts +0 -39
  458. package/src/domains/block/orchestration/resolveBlockLookup.ts +0 -35
  459. package/src/domains/block/stories.test.ts +0 -28
  460. package/src/domains/block/stories.ts +0 -260
  461. package/src/domains/block/types.ts +0 -30
  462. package/src/domains/config/commands/channel.test.ts +0 -128
  463. package/src/domains/config/commands/channel.ts +0 -99
  464. package/src/domains/config/commands/configScope.ts +0 -46
  465. package/src/domains/config/commands/framework.test.ts +0 -119
  466. package/src/domains/config/commands/framework.ts +0 -103
  467. package/src/domains/config/commands/index.ts +0 -6
  468. package/src/domains/config/commands/show.test.ts +0 -61
  469. package/src/domains/config/commands/show.ts +0 -11
  470. package/src/domains/config/commands/tier.test.ts +0 -102
  471. package/src/domains/config/commands/tier.ts +0 -97
  472. package/src/domains/config/commands/trace.test.ts +0 -165
  473. package/src/domains/config/commands/trace.ts +0 -83
  474. package/src/domains/config/formatters/channel.test.ts +0 -70
  475. package/src/domains/config/formatters/channel.ts +0 -37
  476. package/src/domains/config/formatters/framework.ts +0 -37
  477. package/src/domains/config/formatters/index.ts +0 -6
  478. package/src/domains/config/formatters/show.test.ts +0 -153
  479. package/src/domains/config/formatters/show.ts +0 -89
  480. package/src/domains/config/formatters/tier.test.ts +0 -86
  481. package/src/domains/config/formatters/tier.ts +0 -48
  482. package/src/domains/config/formatters/trace.ts +0 -28
  483. package/src/domains/config/index.ts +0 -36
  484. package/src/domains/config/mcp/index.ts +0 -2
  485. package/src/domains/config/mcp/specs.ts +0 -100
  486. package/src/domains/config/operations/index.ts +0 -6
  487. package/src/domains/config/operations/show.test.ts +0 -78
  488. package/src/domains/config/operations/show.ts +0 -48
  489. package/src/domains/config/operations/types.ts +0 -20
  490. package/src/domains/config/operations/validateChannel.test.ts +0 -36
  491. package/src/domains/config/operations/validateChannel.ts +0 -24
  492. package/src/domains/config/operations/validateFramework.ts +0 -24
  493. package/src/domains/config/operations/validateTier.test.ts +0 -65
  494. package/src/domains/config/operations/validateTier.ts +0 -43
  495. package/src/domains/config/stories.ts +0 -42
  496. package/src/domains/config/tasks/index.ts +0 -6
  497. package/src/domains/config/tasks/setChannel.ts +0 -21
  498. package/src/domains/config/tasks/setFramework.ts +0 -21
  499. package/src/domains/config/tasks/setTier.ts +0 -20
  500. package/src/domains/config/tasks/setTrace.ts +0 -20
  501. package/src/domains/config/tasks/writeConfigField.ts +0 -41
  502. package/src/domains/create/generatorPack/bundled.ts +0 -49
  503. package/src/domains/create/generatorPack/compileGeneratorPack.test.ts +0 -159
  504. package/src/domains/create/generatorPack/compileGeneratorPack.ts +0 -312
  505. package/src/domains/create/index.ts +0 -21
  506. package/src/domains/create/mcp/index.ts +0 -2
  507. package/src/domains/create/mcp/specs.ts +0 -13
  508. package/src/domains/create/renderGeneratorUi.test.ts +0 -103
  509. package/src/domains/create/renderGeneratorUi.ts +0 -65
  510. package/src/domains/doctor/commands/doctor.test.ts +0 -75
  511. package/src/domains/doctor/commands/doctor.ts +0 -43
  512. package/src/domains/doctor/commands/index.ts +0 -2
  513. package/src/domains/doctor/formatters/doctor.test.ts +0 -165
  514. package/src/domains/doctor/formatters/doctor.ts +0 -136
  515. package/src/domains/doctor/formatters/index.ts +0 -2
  516. package/src/domains/doctor/index.ts +0 -9
  517. package/src/domains/doctor/mcp/index.ts +0 -2
  518. package/src/domains/doctor/mcp/specs.ts +0 -41
  519. package/src/domains/doctor/operations/checks/checkConfigFile.ts +0 -42
  520. package/src/domains/doctor/operations/checks/checkKeStore.ts +0 -38
  521. package/src/domains/doctor/operations/checks/checkMcpCommands.ts +0 -133
  522. package/src/domains/doctor/operations/checks/checkMcpConfigured.ts +0 -65
  523. package/src/domains/doctor/operations/checks/checkNodeVersion.ts +0 -25
  524. package/src/domains/doctor/operations/checks/checkPackageRefs.ts +0 -76
  525. package/src/domains/doctor/operations/checks/checkPragmaVersion.ts +0 -20
  526. package/src/domains/doctor/operations/checks/checkShellCompletions.ts +0 -42
  527. package/src/domains/doctor/operations/checks/checkSkillsSymlinked.ts +0 -64
  528. package/src/domains/doctor/operations/checks/index.ts +0 -10
  529. package/src/domains/doctor/operations/checks.test.ts +0 -307
  530. package/src/domains/doctor/operations/index.ts +0 -3
  531. package/src/domains/doctor/operations/runChecks.test.ts +0 -176
  532. package/src/domains/doctor/operations/runChecks.ts +0 -78
  533. package/src/domains/doctor/operations/types.ts +0 -42
  534. package/src/domains/graph/commands/index.ts +0 -4
  535. package/src/domains/graph/commands/inspect.test.ts +0 -94
  536. package/src/domains/graph/commands/inspect.ts +0 -63
  537. package/src/domains/graph/commands/query.test.ts +0 -94
  538. package/src/domains/graph/commands/query.ts +0 -60
  539. package/src/domains/graph/formatters/index.ts +0 -4
  540. package/src/domains/graph/formatters/inspect.ts +0 -50
  541. package/src/domains/graph/formatters/query.test.ts +0 -87
  542. package/src/domains/graph/formatters/query.ts +0 -74
  543. package/src/domains/graph/helpers/index.ts +0 -3
  544. package/src/domains/graph/helpers/resolveUri.test.ts +0 -50
  545. package/src/domains/graph/helpers/resolveUri.ts +0 -77
  546. package/src/domains/graph/index.ts +0 -22
  547. package/src/domains/graph/mcp/index.ts +0 -2
  548. package/src/domains/graph/mcp/specs.ts +0 -82
  549. package/src/domains/graph/operations/executeQuery.test.ts +0 -68
  550. package/src/domains/graph/operations/executeQuery.ts +0 -32
  551. package/src/domains/graph/operations/index.ts +0 -4
  552. package/src/domains/graph/operations/inspectUri.test.ts +0 -101
  553. package/src/domains/graph/operations/inspectUri.ts +0 -64
  554. package/src/domains/graphql/commands/build.test.ts +0 -196
  555. package/src/domains/graphql/commands/build.ts +0 -117
  556. package/src/domains/graphql/commands/check.test.ts +0 -141
  557. package/src/domains/graphql/commands/check.ts +0 -81
  558. package/src/domains/graphql/commands/index.ts +0 -5
  559. package/src/domains/graphql/commands/serve.test.ts +0 -46
  560. package/src/domains/graphql/commands/serve.ts +0 -141
  561. package/src/domains/graphql/constants.ts +0 -10
  562. package/src/domains/graphql/formatters/index.ts +0 -3
  563. package/src/domains/graphql/formatters/report.ts +0 -78
  564. package/src/domains/graphql/helpers/gatherSources.test.ts +0 -92
  565. package/src/domains/graphql/helpers/gatherSources.ts +0 -58
  566. package/src/domains/graphql/helpers/index.ts +0 -6
  567. package/src/domains/graphql/helpers/parsePrefixes.test.ts +0 -44
  568. package/src/domains/graphql/helpers/parsePrefixes.ts +0 -38
  569. package/src/domains/graphql/helpers/resolveSourceFiles.test.ts +0 -65
  570. package/src/domains/graphql/helpers/resolveSourceFiles.ts +0 -66
  571. package/src/domains/graphql/helpers/routeGraphql.test.ts +0 -43
  572. package/src/domains/graphql/helpers/routeGraphql.ts +0 -28
  573. package/src/domains/graphql/index.ts +0 -24
  574. package/src/domains/graphql/operations/compileSchema.test.ts +0 -95
  575. package/src/domains/graphql/operations/compileSchema.ts +0 -107
  576. package/src/domains/graphql/operations/createSchemaServer.test.ts +0 -50
  577. package/src/domains/graphql/operations/createSchemaServer.ts +0 -75
  578. package/src/domains/graphql/operations/ensureSchemaArtifact.test.ts +0 -167
  579. package/src/domains/graphql/operations/ensureSchemaArtifact.ts +0 -178
  580. package/src/domains/graphql/operations/index.ts +0 -17
  581. package/src/domains/graphql/types.ts +0 -29
  582. package/src/domains/info/commands/index.ts +0 -4
  583. package/src/domains/info/commands/info.test.ts +0 -88
  584. package/src/domains/info/commands/info.ts +0 -47
  585. package/src/domains/info/commands/upgrade.test.ts +0 -183
  586. package/src/domains/info/commands/upgrade.ts +0 -153
  587. package/src/domains/info/constants.test.ts +0 -22
  588. package/src/domains/info/constants.ts +0 -15
  589. package/src/domains/info/formatters/index.ts +0 -8
  590. package/src/domains/info/formatters/info.test.ts +0 -207
  591. package/src/domains/info/formatters/info.ts +0 -131
  592. package/src/domains/info/formatters/upgrade.test.ts +0 -136
  593. package/src/domains/info/formatters/upgrade.ts +0 -70
  594. package/src/domains/info/index.ts +0 -9
  595. package/src/domains/info/mcp/index.ts +0 -2
  596. package/src/domains/info/mcp/specs.ts +0 -65
  597. package/src/domains/info/operations/checkRegistryVersion.test.ts +0 -124
  598. package/src/domains/info/operations/checkRegistryVersion.ts +0 -45
  599. package/src/domains/info/operations/collectEntityCounts.test.ts +0 -156
  600. package/src/domains/info/operations/collectEntityCounts.ts +0 -123
  601. package/src/domains/info/operations/collectInfo.test.ts +0 -122
  602. package/src/domains/info/operations/collectInfo.ts +0 -94
  603. package/src/domains/info/operations/collectStoreSummary.test.ts +0 -61
  604. package/src/domains/info/operations/collectStoreSummary.ts +0 -42
  605. package/src/domains/info/operations/index.ts +0 -6
  606. package/src/domains/info/types.test-d.ts +0 -35
  607. package/src/domains/info/types.ts +0 -67
  608. package/src/domains/llm/capabilities.test.ts +0 -111
  609. package/src/domains/llm/commands/capabilities.ts +0 -37
  610. package/src/domains/llm/commands/index.ts +0 -4
  611. package/src/domains/llm/commands/llm.ts +0 -41
  612. package/src/domains/llm/data/commandReference.ts +0 -106
  613. package/src/domains/llm/data/decisionTrees.ts +0 -55
  614. package/src/domains/llm/data/index.ts +0 -6
  615. package/src/domains/llm/data/toolCatalog.ts +0 -221
  616. package/src/domains/llm/formatters/capabilities.ts +0 -50
  617. package/src/domains/llm/formatters/index.ts +0 -4
  618. package/src/domains/llm/formatters/orientation.ts +0 -57
  619. package/src/domains/llm/index.ts +0 -9
  620. package/src/domains/llm/llmCommand.test.ts +0 -101
  621. package/src/domains/llm/mcp/index.ts +0 -2
  622. package/src/domains/llm/mcp/specs.ts +0 -93
  623. package/src/domains/llm/operations/collectContext.test.ts +0 -64
  624. package/src/domains/llm/operations/collectContext.ts +0 -37
  625. package/src/domains/llm/operations/index.ts +0 -3
  626. package/src/domains/llm/types.ts +0 -72
  627. package/src/domains/modifier/commands/index.ts +0 -5
  628. package/src/domains/modifier/commands/list.test.ts +0 -57
  629. package/src/domains/modifier/commands/list.ts +0 -9
  630. package/src/domains/modifier/commands/lookup.test.ts +0 -91
  631. package/src/domains/modifier/commands/lookup.ts +0 -14
  632. package/src/domains/modifier/commands/sample.ts +0 -54
  633. package/src/domains/modifier/formatters/index.ts +0 -8
  634. package/src/domains/modifier/formatters/list.test.ts +0 -38
  635. package/src/domains/modifier/formatters/list.ts +0 -22
  636. package/src/domains/modifier/formatters/lookup.test.ts +0 -33
  637. package/src/domains/modifier/formatters/lookup.ts +0 -50
  638. package/src/domains/modifier/formatters/sample.ts +0 -15
  639. package/src/domains/modifier/index.ts +0 -27
  640. package/src/domains/modifier/mcp/index.ts +0 -2
  641. package/src/domains/modifier/mcp/specs.ts +0 -65
  642. package/src/domains/modifier/modifierConfig.ts +0 -36
  643. package/src/domains/modifier/operations/index.ts +0 -5
  644. package/src/domains/modifier/operations/list.test.ts +0 -39
  645. package/src/domains/modifier/operations/list.ts +0 -41
  646. package/src/domains/modifier/operations/lookup.test.ts +0 -37
  647. package/src/domains/modifier/operations/lookup.ts +0 -69
  648. package/src/domains/modifier/operations/sample.ts +0 -32
  649. package/src/domains/modifier/orchestration/index.ts +0 -3
  650. package/src/domains/modifier/orchestration/modifierEmptyError.test.ts +0 -26
  651. package/src/domains/modifier/orchestration/modifierEmptyError.ts +0 -15
  652. package/src/domains/modifier/orchestration/resolveModifierList.ts +0 -16
  653. package/src/domains/modifier/orchestration/resolveModifierLookup.ts +0 -33
  654. package/src/domains/modifier/stories.test.ts +0 -20
  655. package/src/domains/modifier/stories.ts +0 -86
  656. package/src/domains/modifier/types.ts +0 -5
  657. package/src/domains/ontology/commands/index.ts +0 -4
  658. package/src/domains/ontology/commands/list.test.ts +0 -84
  659. package/src/domains/ontology/commands/list.ts +0 -11
  660. package/src/domains/ontology/commands/show.test.ts +0 -179
  661. package/src/domains/ontology/commands/show.ts +0 -14
  662. package/src/domains/ontology/formatters/index.ts +0 -5
  663. package/src/domains/ontology/formatters/list.ts +0 -64
  664. package/src/domains/ontology/formatters/show.ts +0 -396
  665. package/src/domains/ontology/helpers/buildClassTree.ts +0 -89
  666. package/src/domains/ontology/helpers/completeClassNames.ts +0 -43
  667. package/src/domains/ontology/helpers/expandOntologyIris.ts +0 -79
  668. package/src/domains/ontology/helpers/findNamespace.ts +0 -23
  669. package/src/domains/ontology/helpers/index.ts +0 -21
  670. package/src/domains/ontology/helpers/queryClasses.ts +0 -66
  671. package/src/domains/ontology/helpers/queryProperties.ts +0 -90
  672. package/src/domains/ontology/helpers/queryTboxFacts.ts +0 -160
  673. package/src/domains/ontology/helpers/resolvePrefix.ts +0 -45
  674. package/src/domains/ontology/index.ts +0 -26
  675. package/src/domains/ontology/mcp/index.ts +0 -2
  676. package/src/domains/ontology/mcp/specs.ts +0 -16
  677. package/src/domains/ontology/operations/index.ts +0 -5
  678. package/src/domains/ontology/operations/listOntologies.test.ts +0 -122
  679. package/src/domains/ontology/operations/listOntologies.ts +0 -197
  680. package/src/domains/ontology/operations/showOntology.test.ts +0 -184
  681. package/src/domains/ontology/operations/showOntology.ts +0 -323
  682. package/src/domains/ontology/operations/showOntologyRaw.test.ts +0 -41
  683. package/src/domains/ontology/operations/showOntologyRaw.ts +0 -50
  684. package/src/domains/ontology/stories.test.ts +0 -36
  685. package/src/domains/ontology/stories.ts +0 -153
  686. package/src/domains/refs/commands/updateRefs.ts +0 -52
  687. package/src/domains/refs/formatters/updateRefs.ts +0 -27
  688. package/src/domains/refs/index.ts +0 -27
  689. package/src/domains/refs/operations/gitOps.test.ts +0 -155
  690. package/src/domains/refs/operations/gitOps.ts +0 -92
  691. package/src/domains/refs/operations/index.ts +0 -10
  692. package/src/domains/refs/operations/parseRef.test.ts +0 -157
  693. package/src/domains/refs/operations/parseRef.ts +0 -114
  694. package/src/domains/refs/operations/paths.test.ts +0 -98
  695. package/src/domains/refs/operations/paths.ts +0 -91
  696. package/src/domains/refs/operations/readGlobalRefs.test.ts +0 -63
  697. package/src/domains/refs/operations/readGlobalRefs.ts +0 -37
  698. package/src/domains/refs/operations/updateRefs.test.ts +0 -167
  699. package/src/domains/refs/operations/updateRefs.ts +0 -180
  700. package/src/domains/setup/commands/all.ts +0 -58
  701. package/src/domains/setup/commands/completions.ts +0 -85
  702. package/src/domains/setup/commands/entrypoints.test.ts +0 -170
  703. package/src/domains/setup/commands/index.ts +0 -7
  704. package/src/domains/setup/commands/lsp.ts +0 -49
  705. package/src/domains/setup/commands/mcp.ts +0 -119
  706. package/src/domains/setup/commands/setup.ts +0 -70
  707. package/src/domains/setup/commands/skills.test.ts +0 -68
  708. package/src/domains/setup/commands/skills.ts +0 -110
  709. package/src/domains/setup/formatters/index.ts +0 -2
  710. package/src/domains/setup/formatters/skills.test.ts +0 -103
  711. package/src/domains/setup/formatters/skills.ts +0 -112
  712. package/src/domains/setup/formatters/types.ts +0 -7
  713. package/src/domains/setup/helpers/completionScripts.test.ts +0 -58
  714. package/src/domains/setup/helpers/completionScripts.ts +0 -92
  715. package/src/domains/setup/helpers/constants.ts +0 -2
  716. package/src/domains/setup/helpers/detectShell.test.ts +0 -48
  717. package/src/domains/setup/helpers/detectShell.ts +0 -20
  718. package/src/domains/setup/helpers/index.ts +0 -12
  719. package/src/domains/setup/helpers/runSetupTask.test.ts +0 -277
  720. package/src/domains/setup/helpers/runSetupTask.ts +0 -221
  721. package/src/domains/setup/index.ts +0 -37
  722. package/src/domains/setup/operations/index.ts +0 -6
  723. package/src/domains/setup/operations/setupAll.test.ts +0 -48
  724. package/src/domains/setup/operations/setupAll.ts +0 -41
  725. package/src/domains/setup/operations/setupCompletions.test.ts +0 -94
  726. package/src/domains/setup/operations/setupCompletions.ts +0 -54
  727. package/src/domains/setup/operations/setupLsp.test.ts +0 -30
  728. package/src/domains/setup/operations/setupLsp.ts +0 -22
  729. package/src/domains/setup/operations/setupMcp.test.ts +0 -120
  730. package/src/domains/setup/operations/setupMcp.ts +0 -108
  731. package/src/domains/setup/operations/setupSkills.test.ts +0 -191
  732. package/src/domains/setup/operations/setupSkills.ts +0 -160
  733. package/src/domains/setup/types.ts +0 -18
  734. package/src/domains/shared/ToolSpec.ts +0 -49
  735. package/src/domains/shared/bootStore.bareCore.test.ts +0 -63
  736. package/src/domains/shared/bootStore.test.ts +0 -82
  737. package/src/domains/shared/bootStore.ts +0 -171
  738. package/src/domains/shared/buildQuery.ts +0 -18
  739. package/src/domains/shared/compactUri.test.ts +0 -32
  740. package/src/domains/shared/compactUri.ts +0 -21
  741. package/src/domains/shared/context.ts +0 -16
  742. package/src/domains/shared/contracts.ts +0 -164
  743. package/src/domains/shared/createInteractivePromptSession.test.ts +0 -439
  744. package/src/domains/shared/createInteractivePromptSession.ts +0 -236
  745. package/src/domains/shared/emptyErrorRecovery.test.ts +0 -106
  746. package/src/domains/shared/extractLocalName.test.ts +0 -21
  747. package/src/domains/shared/extractLocalName.ts +0 -14
  748. package/src/domains/shared/filters/buildChannelFilter.test.ts +0 -52
  749. package/src/domains/shared/filters/buildChannelFilter.ts +0 -41
  750. package/src/domains/shared/filters/buildFilterConfig.ts +0 -15
  751. package/src/domains/shared/filters/buildFilters.test.ts +0 -33
  752. package/src/domains/shared/filters/buildFilters.ts +0 -30
  753. package/src/domains/shared/filters/buildTierFilter.test.ts +0 -78
  754. package/src/domains/shared/filters/buildTierFilter.ts +0 -69
  755. package/src/domains/shared/filters/describeFilters.ts +0 -14
  756. package/src/domains/shared/filters/index.ts +0 -10
  757. package/src/domains/shared/formatters.ts +0 -103
  758. package/src/domains/shared/listTiers.ts +0 -40
  759. package/src/domains/shared/loaders/bundledLoader.test.ts +0 -248
  760. package/src/domains/shared/loaders/bundledLoader.ts +0 -254
  761. package/src/domains/shared/loaders/gitLoader.ts +0 -30
  762. package/src/domains/shared/loaders/index.ts +0 -9
  763. package/src/domains/shared/loaders/localLoader.ts +0 -71
  764. package/src/domains/shared/loaders/readPackageDir.test.ts +0 -58
  765. package/src/domains/shared/loaders/readPackageDir.ts +0 -185
  766. package/src/domains/shared/loaders/storyAssetsPlugin.test.ts +0 -84
  767. package/src/domains/shared/loaders/storyAssetsPlugin.ts +0 -46
  768. package/src/domains/shared/lookupMany.test.ts +0 -135
  769. package/src/domains/shared/lookupMany.ts +0 -101
  770. package/src/domains/shared/mergeAndParseRefs.test.ts +0 -89
  771. package/src/domains/shared/mergeAndParseRefs.ts +0 -44
  772. package/src/domains/shared/namespaces.ts +0 -26
  773. package/src/domains/shared/packages.ts +0 -20
  774. package/src/domains/shared/parseSampleCount.test.ts +0 -47
  775. package/src/domains/shared/parseSampleCount.ts +0 -45
  776. package/src/domains/shared/pickRandom.ts +0 -22
  777. package/src/domains/shared/prefixes.test.ts +0 -211
  778. package/src/domains/shared/prefixes.ts +0 -204
  779. package/src/domains/shared/renderers.ts +0 -410
  780. package/src/domains/shared/resolveConfiguredGraphs.test.ts +0 -27
  781. package/src/domains/shared/resolveConfiguredGraphs.ts +0 -41
  782. package/src/domains/shared/resolveLookupExitCode.test.ts +0 -48
  783. package/src/domains/shared/resolveLookupExitCode.ts +0 -42
  784. package/src/domains/shared/runtime.ts +0 -61
  785. package/src/domains/shared/sampleFormatters.ts +0 -47
  786. package/src/domains/shared/semanticPackage.test.ts +0 -89
  787. package/src/domains/shared/semanticPackage.ts +0 -127
  788. package/src/domains/shared/stories/compileLookupCommand.test.ts +0 -145
  789. package/src/domains/shared/stories/compileLookupCommand.ts +0 -102
  790. package/src/domains/shared/stories/compileLookupTool.test.ts +0 -105
  791. package/src/domains/shared/stories/compileLookupTool.ts +0 -96
  792. package/src/domains/shared/stories/compileReadCommand.test.ts +0 -121
  793. package/src/domains/shared/stories/compileReadCommand.ts +0 -48
  794. package/src/domains/shared/stories/compileReadTool.test.ts +0 -64
  795. package/src/domains/shared/stories/compileReadTool.ts +0 -38
  796. package/src/domains/shared/stories/condense.test.ts +0 -18
  797. package/src/domains/shared/stories/condense.ts +0 -15
  798. package/src/domains/shared/stories/index.ts +0 -20
  799. package/src/domains/shared/stories/normalizeNames.test.ts +0 -20
  800. package/src/domains/shared/stories/normalizeNames.ts +0 -22
  801. package/src/domains/shared/stories/pack/applyPackFilters.test.ts +0 -151
  802. package/src/domains/shared/stories/pack/applyPackFilters.ts +0 -111
  803. package/src/domains/shared/stories/pack/applyPackSearch.test.ts +0 -57
  804. package/src/domains/shared/stories/pack/applyPackSearch.ts +0 -41
  805. package/src/domains/shared/stories/pack/buildLookupQuery.test.ts +0 -81
  806. package/src/domains/shared/stories/pack/buildLookupQuery.ts +0 -154
  807. package/src/domains/shared/stories/pack/bundled/index.ts +0 -23
  808. package/src/domains/shared/stories/pack/bundled/standardPack.ts +0 -164
  809. package/src/domains/shared/stories/pack/bundled/tierPack.ts +0 -50
  810. package/src/domains/shared/stories/pack/collectPackStories.test.ts +0 -406
  811. package/src/domains/shared/stories/pack/collectPackStories.ts +0 -158
  812. package/src/domains/shared/stories/pack/compilePackCommands.ts +0 -50
  813. package/src/domains/shared/stories/pack/compilePackStories.test.ts +0 -751
  814. package/src/domains/shared/stories/pack/compilePackStories.ts +0 -724
  815. package/src/domains/shared/stories/pack/compilePackToolSpecs.ts +0 -55
  816. package/src/domains/shared/stories/pack/index.ts +0 -42
  817. package/src/domains/shared/stories/pack/reservedVerbs.test.ts +0 -213
  818. package/src/domains/shared/stories/pack/reservedVerbs.ts +0 -170
  819. package/src/domains/shared/stories/pack/runSelectQuery.ts +0 -31
  820. package/src/domains/shared/stories/pack/standardParity.test.ts +0 -381
  821. package/src/domains/shared/stories/pack/types.ts +0 -224
  822. package/src/domains/shared/stories/pack/validateStoryPackDefinition.test.ts +0 -742
  823. package/src/domains/shared/stories/pack/validateStoryPackDefinition.ts +0 -859
  824. package/src/domains/shared/stories/projectCliParameters.test.ts +0 -59
  825. package/src/domains/shared/stories/projectCliParameters.ts +0 -57
  826. package/src/domains/shared/stories/projectToolParams.test.ts +0 -50
  827. package/src/domains/shared/stories/projectToolParams.ts +0 -32
  828. package/src/domains/shared/stories/requirePragmaContext.test.ts +0 -23
  829. package/src/domains/shared/stories/requirePragmaContext.ts +0 -23
  830. package/src/domains/shared/stories/resolveLookupDetailed.test.ts +0 -57
  831. package/src/domains/shared/stories/resolveLookupDetailed.ts +0 -27
  832. package/src/domains/shared/stories/types.ts +0 -179
  833. package/src/domains/shared/suggestions/detectCrossDomain.test.ts +0 -43
  834. package/src/domains/shared/suggestions/detectCrossDomain.ts +0 -116
  835. package/src/domains/shared/suggestions/expandGlob.test.ts +0 -92
  836. package/src/domains/shared/suggestions/expandGlob.ts +0 -52
  837. package/src/domains/shared/suggestions/expandLookupQueries.ts +0 -57
  838. package/src/domains/shared/suggestions/index.ts +0 -7
  839. package/src/domains/shared/suggestions/listDomainNames.ts +0 -61
  840. package/src/domains/shared/suggestions/suggestNames.test.ts +0 -70
  841. package/src/domains/shared/suggestions/suggestNames.ts +0 -130
  842. package/src/domains/shared/types/block.ts +0 -107
  843. package/src/domains/shared/types/common.ts +0 -33
  844. package/src/domains/shared/types/graph.ts +0 -17
  845. package/src/domains/shared/types/index.ts +0 -46
  846. package/src/domains/shared/types/modifier.ts +0 -22
  847. package/src/domains/shared/types/ontology.ts +0 -145
  848. package/src/domains/shared/types/runtime.ts +0 -24
  849. package/src/domains/shared/types/sample.ts +0 -17
  850. package/src/domains/shared/types/standard.ts +0 -21
  851. package/src/domains/shared/types/tier.ts +0 -15
  852. package/src/domains/shared/types/token.ts +0 -30
  853. package/src/domains/skill/commands/index.ts +0 -4
  854. package/src/domains/skill/commands/list.test.ts +0 -115
  855. package/src/domains/skill/commands/list.ts +0 -11
  856. package/src/domains/skill/commands/lookup.test.ts +0 -118
  857. package/src/domains/skill/commands/lookup.ts +0 -14
  858. package/src/domains/skill/formatters/index.ts +0 -3
  859. package/src/domains/skill/formatters/list.test.ts +0 -140
  860. package/src/domains/skill/formatters/list.ts +0 -119
  861. package/src/domains/skill/formatters/lookup.test.ts +0 -46
  862. package/src/domains/skill/formatters/lookup.ts +0 -57
  863. package/src/domains/skill/formatters/types.ts +0 -8
  864. package/src/domains/skill/helpers/index.ts +0 -6
  865. package/src/domains/skill/helpers/parseFrontmatter.test.ts +0 -122
  866. package/src/domains/skill/helpers/parseFrontmatter.ts +0 -112
  867. package/src/domains/skill/helpers/resolveSkillSources.ts +0 -70
  868. package/src/domains/skill/index.ts +0 -23
  869. package/src/domains/skill/mcp/index.ts +0 -2
  870. package/src/domains/skill/mcp/specs.ts +0 -19
  871. package/src/domains/skill/operations/discover.test.ts +0 -176
  872. package/src/domains/skill/operations/discover.ts +0 -59
  873. package/src/domains/skill/operations/index.ts +0 -5
  874. package/src/domains/skill/operations/list.test.ts +0 -76
  875. package/src/domains/skill/operations/list.ts +0 -47
  876. package/src/domains/skill/operations/lookup.test.ts +0 -91
  877. package/src/domains/skill/operations/lookup.ts +0 -70
  878. package/src/domains/skill/stories.test.ts +0 -43
  879. package/src/domains/skill/stories.ts +0 -103
  880. package/src/domains/skill/types.ts +0 -33
  881. package/src/domains/token/commands/add-config.test.ts +0 -68
  882. package/src/domains/token/commands/add-config.ts +0 -62
  883. package/src/domains/token/commands/index.ts +0 -6
  884. package/src/domains/token/commands/list.test.ts +0 -82
  885. package/src/domains/token/commands/list.ts +0 -54
  886. package/src/domains/token/commands/lookup.test.ts +0 -133
  887. package/src/domains/token/commands/lookup.ts +0 -107
  888. package/src/domains/token/commands/sample.ts +0 -54
  889. package/src/domains/token/featureFlag.ts +0 -17
  890. package/src/domains/token/formatters/index.ts +0 -8
  891. package/src/domains/token/formatters/list.test.ts +0 -37
  892. package/src/domains/token/formatters/list.ts +0 -24
  893. package/src/domains/token/formatters/lookup.test.ts +0 -61
  894. package/src/domains/token/formatters/lookup.ts +0 -107
  895. package/src/domains/token/formatters/sample.ts +0 -16
  896. package/src/domains/token/index.ts +0 -45
  897. package/src/domains/token/mcp/index.ts +0 -2
  898. package/src/domains/token/mcp/specs.ts +0 -207
  899. package/src/domains/token/operations/add-config.test.ts +0 -68
  900. package/src/domains/token/operations/add-config.ts +0 -61
  901. package/src/domains/token/operations/index.ts +0 -8
  902. package/src/domains/token/operations/list.test.ts +0 -50
  903. package/src/domains/token/operations/list.ts +0 -52
  904. package/src/domains/token/operations/lookup.test.ts +0 -42
  905. package/src/domains/token/operations/lookup.ts +0 -75
  906. package/src/domains/token/operations/sample.ts +0 -32
  907. package/src/domains/token/orchestration/index.ts +0 -3
  908. package/src/domains/token/orchestration/resolveTokenList.ts +0 -17
  909. package/src/domains/token/orchestration/resolveTokenLookup.ts +0 -33
  910. package/src/domains/token/orchestration/tokenEmptyError.test.ts +0 -33
  911. package/src/domains/token/orchestration/tokenEmptyError.ts +0 -20
  912. package/src/domains/token/tokenConfig.ts +0 -38
  913. package/src/domains/token/types.ts +0 -6
  914. package/src/domains/trace/commands/clear.ts +0 -71
  915. package/src/domains/trace/commands/index.ts +0 -5
  916. package/src/domains/trace/commands/resolveTraceLimit.test.ts +0 -31
  917. package/src/domains/trace/commands/sessions.ts +0 -32
  918. package/src/domains/trace/commands/show.ts +0 -171
  919. package/src/domains/trace/formatters/index.ts +0 -9
  920. package/src/domains/trace/formatters/sessions.ts +0 -80
  921. package/src/domains/trace/formatters/show.ts +0 -122
  922. package/src/domains/trace/index.ts +0 -17
  923. package/src/domains/trace/operations/index.ts +0 -8
  924. package/src/domains/trace/operations/listSessions.test.ts +0 -55
  925. package/src/domains/trace/operations/listSessions.ts +0 -52
  926. package/src/domains/trace/operations/readTraceLog.test.ts +0 -100
  927. package/src/domains/trace/operations/readTraceLog.ts +0 -104
  928. package/src/domains/trace/tracePlugin.test.ts +0 -171
  929. package/src/domains/trace/tracePlugin.ts +0 -159
  930. package/src/domains/trace/types.ts +0 -65
  931. package/src/embedWasm.ts +0 -42
  932. package/src/error/PragmaError.test.ts +0 -121
  933. package/src/error/PragmaError.ts +0 -177
  934. package/src/error/constants.ts +0 -12
  935. package/src/error/index.ts +0 -4
  936. package/src/error/types.ts +0 -55
  937. package/src/mcp/createMcpServer.test.ts +0 -41
  938. package/src/mcp/createMcpServer.ts +0 -53
  939. package/src/mcp/error/buildRecovery.test.ts +0 -37
  940. package/src/mcp/error/buildRecovery.ts +0 -17
  941. package/src/mcp/error/index.ts +0 -12
  942. package/src/mcp/error/serializeError.test.ts +0 -121
  943. package/src/mcp/error/serializeError.ts +0 -31
  944. package/src/mcp/error/serializeErrorPayload.test.ts +0 -38
  945. package/src/mcp/error/serializeErrorPayload.ts +0 -34
  946. package/src/mcp/error/types.ts +0 -59
  947. package/src/mcp/index.ts +0 -15
  948. package/src/mcp/registerResources.test.ts +0 -566
  949. package/src/mcp/registerResources.ts +0 -9
  950. package/src/mcp/resources/buildGraphIndex.ts +0 -167
  951. package/src/mcp/resources/buildResourceList.test.ts +0 -97
  952. package/src/mcp/resources/buildResourceList.ts +0 -176
  953. package/src/mcp/resources/classifyEntity.test.ts +0 -40
  954. package/src/mcp/resources/classifyEntity.ts +0 -27
  955. package/src/mcp/resources/constants.ts +0 -105
  956. package/src/mcp/resources/displayPredicates.ts +0 -62
  957. package/src/mcp/resources/pickFirstValue.test.ts +0 -29
  958. package/src/mcp/resources/pickFirstValue.ts +0 -26
  959. package/src/mcp/resources/pickPrimaryType.test.ts +0 -41
  960. package/src/mcp/resources/pickPrimaryType.ts +0 -26
  961. package/src/mcp/resources/rankUriCompletions.test.ts +0 -52
  962. package/src/mcp/resources/rankUriCompletions.ts +0 -64
  963. package/src/mcp/resources/readEntity.ts +0 -169
  964. package/src/mcp/resources/registerResources.ts +0 -126
  965. package/src/mcp/resources/types.ts +0 -128
  966. package/src/mcp/runMcpServer.test.ts +0 -66
  967. package/src/mcp/runMcpServer.ts +0 -24
  968. package/src/mcp/tools/index.ts +0 -74
  969. package/src/mcp/tools/registerFromSpec.ts +0 -97
  970. package/src/mcp/tools/registerTools.test.ts +0 -1277
  971. package/src/mcp/types.ts +0 -66
  972. package/src/mcp/utils/estimateTokens.test.ts +0 -14
  973. package/src/mcp/utils/estimateTokens.ts +0 -9
  974. package/src/mcp/utils/index.ts +0 -11
  975. package/src/mcp/utils/wrapTool.test.ts +0 -109
  976. package/src/mcp/utils/wrapTool.ts +0 -81
  977. package/src/package-manager/constants.ts +0 -29
  978. package/src/package-manager/detectInstallSource.test.ts +0 -23
  979. package/src/package-manager/detectInstallSource.ts +0 -111
  980. package/src/package-manager/detectLocalInstall.test.ts +0 -16
  981. package/src/package-manager/detectLocalInstall.ts +0 -43
  982. package/src/package-manager/detectPackageManager.test.ts +0 -81
  983. package/src/package-manager/detectPackageManager.ts +0 -30
  984. package/src/package-manager/index.ts +0 -6
  985. package/src/package-manager/types.ts +0 -10
  986. package/src/pipeline/collectCommands.test.ts +0 -187
  987. package/src/pipeline/collectCommands.ts +0 -75
  988. package/src/pipeline/constants.ts +0 -14
  989. package/src/pipeline/createProgram.test.ts +0 -116
  990. package/src/pipeline/createProgram.ts +0 -89
  991. package/src/pipeline/firstRun.test.ts +0 -80
  992. package/src/pipeline/firstRun.ts +0 -99
  993. package/src/pipeline/formatTerminal.test.ts +0 -43
  994. package/src/pipeline/formatTerminal.ts +0 -53
  995. package/src/pipeline/index.ts +0 -22
  996. package/src/pipeline/mapExitCode.test.ts +0 -41
  997. package/src/pipeline/mapExitCode.ts +0 -12
  998. package/src/pipeline/parseGlobalFlags.test.ts +0 -193
  999. package/src/pipeline/parseGlobalFlags.ts +0 -135
  1000. package/src/pipeline/renderError.test.ts +0 -151
  1001. package/src/pipeline/renderError.ts +0 -129
  1002. package/src/pipeline/resolveCommandKind.test.ts +0 -80
  1003. package/src/pipeline/resolveCommandKind.ts +0 -82
  1004. package/src/pipeline/rootHelp.test.ts +0 -87
  1005. package/src/pipeline/rootHelp.ts +0 -265
  1006. package/src/pipeline/runCli.orchestration.test.ts +0 -435
  1007. package/src/pipeline/runCli.test.ts +0 -83
  1008. package/src/pipeline/runCli.ts +0 -411
  1009. package/src/pipeline/types.ts +0 -17
  1010. package/src/testing/cli.ts +0 -71
  1011. package/src/testing/createTestMcpClient.ts +0 -68
  1012. package/src/testing/dsFixtures.ts +0 -523
  1013. package/src/testing/fixtures/canonical-config.json +0 -4
  1014. package/src/testing/fixtures/canonical.ttl +0 -437
  1015. package/src/testing/fixtures/filtered-config.json +0 -4
  1016. package/src/testing/fixtures.ts +0 -34
  1017. package/src/testing/graphqlFixtures.ts +0 -72
  1018. package/src/testing/helpers/assertParity.ts +0 -28
  1019. package/src/testing/helpers/createTestMcpClient.ts +0 -40
  1020. package/src/testing/helpers/createTestRuntime.ts +0 -67
  1021. package/src/testing/index.ts +0 -22
  1022. package/src/testing/integration/__snapshots__/executor-golden.test.ts.snap +0 -1207
  1023. package/src/testing/integration/agent-session.test.ts +0 -148
  1024. package/src/testing/integration/boot.test.ts +0 -105
  1025. package/src/testing/integration/cli-user-stories.test.ts +0 -261
  1026. package/src/testing/integration/cross-binary-byte-equality.test.ts +0 -129
  1027. package/src/testing/integration/edge-cases.test.ts +0 -275
  1028. package/src/testing/integration/executor-execution.test.ts +0 -103
  1029. package/src/testing/integration/executor-golden.test.ts +0 -145
  1030. package/src/testing/integration/mcp-surface.test.ts +0 -605
  1031. package/src/testing/integration/parity.test.ts +0 -596
  1032. package/src/testing/regression/0001-skill-discovery-granularity.test.ts +0 -71
  1033. package/src/testing/standardParityFixtures.ts +0 -35
  1034. package/src/testing/store.ts +0 -39
  1035. package/src/testing/storyFixtures.ts +0 -63
  1036. package/src/testing/types.ts +0 -20
  1037. package/src/tui/components/BulletList/BulletList.tsx +0 -46
  1038. package/src/tui/components/BulletList/index.ts +0 -2
  1039. package/src/tui/components/BulletList/types.ts +0 -6
  1040. package/src/tui/components/Card/Card.tsx +0 -73
  1041. package/src/tui/components/Card/index.ts +0 -1
  1042. package/src/tui/components/Card/types.ts +0 -12
  1043. package/src/tui/components/CodeBlock/CodeBlock.tsx +0 -37
  1044. package/src/tui/components/CodeBlock/index.ts +0 -2
  1045. package/src/tui/components/CodeBlock/types.ts +0 -6
  1046. package/src/tui/components/DataRow/DataRow.tsx +0 -80
  1047. package/src/tui/components/DataRow/index.ts +0 -2
  1048. package/src/tui/components/DataRow/types.ts +0 -14
  1049. package/src/tui/components/FieldRow/FieldRow.tsx +0 -24
  1050. package/src/tui/components/FieldRow/index.ts +0 -2
  1051. package/src/tui/components/FieldRow/types.ts +0 -10
  1052. package/src/tui/components/HeaderRow/HeaderRow.tsx +0 -32
  1053. package/src/tui/components/HeaderRow/index.ts +0 -2
  1054. package/src/tui/components/HeaderRow/types.ts +0 -8
  1055. package/src/tui/components/MarkdownText/MarkdownText.tsx +0 -19
  1056. package/src/tui/components/MarkdownText/index.ts +0 -2
  1057. package/src/tui/components/MarkdownText/types.ts +0 -4
  1058. package/src/tui/components/MiniTable/MiniTable.tsx +0 -82
  1059. package/src/tui/components/MiniTable/index.ts +0 -2
  1060. package/src/tui/components/MiniTable/types.ts +0 -6
  1061. package/src/tui/components/SectionRenderer/SectionRenderer.tsx +0 -91
  1062. package/src/tui/components/SectionRenderer/index.ts +0 -2
  1063. package/src/tui/components/SectionRenderer/types.ts +0 -15
  1064. package/src/tui/components/TreeView/TreeView.tsx +0 -84
  1065. package/src/tui/components/TreeView/index.ts +0 -2
  1066. package/src/tui/components/TreeView/types.ts +0 -6
  1067. package/src/tui/components/index.ts +0 -19
  1068. package/src/tui/constants.ts +0 -39
  1069. package/src/tui/createListView.ts +0 -23
  1070. package/src/tui/createLookupView.ts +0 -26
  1071. package/src/tui/helpers/computeWidths.ts +0 -53
  1072. package/src/tui/helpers/fitColumns.ts +0 -33
  1073. package/src/tui/helpers/formatMarkdown.ts +0 -19
  1074. package/src/tui/helpers/getTerminalSize.ts +0 -16
  1075. package/src/tui/helpers/index.ts +0 -6
  1076. package/src/tui/helpers/syntaxColor.ts +0 -67
  1077. package/src/tui/helpers/truncateText.ts +0 -12
  1078. package/src/tui/hooks/index.ts +0 -3
  1079. package/src/tui/hooks/types.ts +0 -7
  1080. package/src/tui/hooks/useAutoExit.ts +0 -17
  1081. package/src/tui/hooks/useTerminalSize.ts +0 -19
  1082. package/src/tui/index.ts +0 -15
  1083. package/src/tui/renderInk.tsx +0 -18
  1084. package/src/tui/types.ts +0 -12
  1085. package/src/tui/views/ListView/ListView.tsx +0 -104
  1086. package/src/tui/views/ListView/index.ts +0 -2
  1087. package/src/tui/views/ListView/types.ts +0 -14
  1088. package/src/tui/views/LookupView/LookupView.tsx +0 -244
  1089. package/src/tui/views/LookupView/index.ts +0 -2
  1090. package/src/tui/views/LookupView/types.ts +0 -16
  1091. package/src/tui/views/index.ts +0 -4
@@ -0,0 +1,48 @@
1
+ /**
2
+ * The `capabilities` orientation verb (noun `capabilities`, self-verb).
3
+ *
4
+ * Storeless read: it returns the grammar-derived tool catalog + conventions +
5
+ * discovery sequence an agent reads at session start. It replaces the retired
6
+ * old-shell `llm` tool — the live-context half of that tool (tier/channel/entity
7
+ * counts) is deliberately DROPPED here (it would require a store boot at
8
+ * orientation) and lives in `info` / `config show` / `sources status` instead.
9
+ *
10
+ * `run` is a lazy thunk that dynamic-imports the catalog + the capability
11
+ * registry barrel, so building the command tree never pulls the derivation onto
12
+ * the `--help`/`__complete` fast path, and the tool never boots the store
13
+ * (`store.booted` stays false — the storeless-spy invariant).
14
+ */
15
+
16
+ import { asVerb } from "../../kernel/spec/asVerb.js";
17
+ import type { VerbSpec } from "../../kernel/spec/types.js";
18
+ import { capabilitiesFormatters } from "./capabilities.render.js";
19
+ import type { CapabilitiesData } from "./types.js";
20
+
21
+ const capabilitiesVerb: VerbSpec<Record<string, unknown>, CapabilitiesData> = {
22
+ path: ["capabilities"],
23
+ summary:
24
+ "Discover pragma conventions, the annotated tool catalog, and the discovery sequence.",
25
+ doc: "Storeless orientation for agents. Returns the conventions (KG / tier-channel / SPARQL model), a four-stage discovery sequence, and every live tool with a behavioural use_when hint and category — all derived from the live grammar, so it never drifts. Call it first at session start.",
26
+ params: [],
27
+ output: { formatters: capabilitiesFormatters },
28
+ examples: [
29
+ { cmd: "pragma capabilities", note: "the annotated tool catalog" },
30
+ { cmd: "pragma capabilities --format json", note: "the structured map" },
31
+ ],
32
+ capability: {
33
+ needsStore: false,
34
+ mutates: false,
35
+ mcp: {
36
+ expose: true,
37
+ annotations: { readOnlyHint: true, openWorldHint: false },
38
+ },
39
+ },
40
+ run: (_params, _runtime) =>
41
+ Promise.all([import("./catalog.js"), import("../index.js")]).then(
42
+ ([catalog, registry]) =>
43
+ catalog.buildCapabilitiesData(registry.capabilities),
44
+ ),
45
+ };
46
+
47
+ /** The `capabilities` verb, widened for registry composition. */
48
+ export const capabilitiesSelfVerb = asVerb(capabilitiesVerb);
@@ -0,0 +1,148 @@
1
+ /**
2
+ * The SELF-UPDATING capabilities catalog.
3
+ *
4
+ * `buildCapabilitiesData(modules)` projects the LIVE grammar: it emits the
5
+ * surface, walks `mcpSurface.tools` (the sorted, covenant-conformant set), and
6
+ * annotates each tool from the authored `TOOL_HINTS` table. The tool set, the
7
+ * category counts, and the discovery-sample list are all DERIVED — never pinned
8
+ * — so the catalog tracks the surface automatically (the fix for the old shell's
9
+ * hand-maintained list, which drifted to name retired tools).
10
+ *
11
+ * Pure + zod-free: it reads only `emitSurface` (itself fast-path-safe), so the
12
+ * verb's storeless guarantee holds. The conventions + discovery strings are
13
+ * exported so `kernel/project/mcp/instructions.ts` derives the handshake
14
+ * orientation from the SAME source and the two can never diverge.
15
+ */
16
+
17
+ import { VERSION } from "../../constants.js";
18
+ import { emitSurface } from "../../kernel/spec/emitSurface.js";
19
+ import type { CapabilityModule } from "../../kernel/spec/types.js";
20
+ import { TOOL_HINTS } from "./hints.js";
21
+ import type {
22
+ CapabilitiesData,
23
+ CatalogTool,
24
+ DiscoveryStage,
25
+ ToolCounts,
26
+ } from "./types.js";
27
+
28
+ /**
29
+ * The four orientation conventions. The first three (system/model/querying) are
30
+ * verbatim from the old shell — they describe the KG / tier-channel / SPARQL
31
+ * model and are still accurate for v2; `mutations` is new in v2, surfacing the
32
+ * plan-first/confirm gate.
33
+ */
34
+ export const CONVENTIONS = {
35
+ system:
36
+ "Pragma is a CLI and MCP server for querying a design system knowledge graph — blocks, tokens, modifiers, standards, and ontologies.",
37
+ model:
38
+ "Data is scoped by tier (hierarchical, e.g. global > apps > apps/lxd) and channel (normal, experimental, prerelease). Set these via config_set (e.g. config_set tier apps/lxd, config_set channel experimental).",
39
+ querying:
40
+ "All queries run against an RDF triple store. Prefixed IRIs (e.g. ds:global.component.button) identify entities. Use ontology_list to discover namespaces.",
41
+ mutations:
42
+ "Mutating tools are plan-first: call once WITHOUT confirm to get a plan (meta.planOnly, no writes), then repeat the call with confirm: true to execute.",
43
+ } as const;
44
+
45
+ /** The output modes v2 renders (dropped "text" → "plain"; condensed retired). */
46
+ const OUTPUT_MODES = ["plain", "json", "llm"] as const;
47
+
48
+ /** The set of tool names that mutate, read from the emitted surface. */
49
+ function mutatingTools(modules: readonly CapabilityModule[]): Set<string> {
50
+ const mutating = new Set<string>();
51
+ for (const { verbs } of Object.values(emitSurface(modules).nouns)) {
52
+ for (const verb of verbs) {
53
+ if (verb.mutates && typeof verb.mcp === "string") mutating.add(verb.mcp);
54
+ }
55
+ }
56
+ return mutating;
57
+ }
58
+
59
+ /** The live sorted tool names the covenant blesses, from the emitted surface. */
60
+ export function liveTools(modules: readonly CapabilityModule[]): string[] {
61
+ return emitSurface(modules).mcpSurface.tools;
62
+ }
63
+
64
+ /**
65
+ * Build the discovery sequence, deriving the sample list from the tools that
66
+ * ACTUALLY exist (v2 ships block/standard/modifier/token samples). Wording is
67
+ * ported from the old `buildCapabilitiesData`, plus a store-state pre-check so a
68
+ * cold agent is never sent into `*_sample` (or any store read) blind — every
69
+ * store read fails STORE_UNAVAILABLE until `sources_update` has built the store.
70
+ */
71
+ export function buildDiscoverySequence(
72
+ tools: readonly string[],
73
+ ): DiscoveryStage[] {
74
+ const samples = tools.filter((tool) => tool.endsWith("_sample"));
75
+ const sampleList = samples.length > 0 ? samples.join(", ") : "the *_sample";
76
+ return [
77
+ {
78
+ stage: 1,
79
+ tool: "capabilities",
80
+ purpose: "Understand conventions, available tools, and how to navigate",
81
+ },
82
+ {
83
+ stage: 2,
84
+ tool: "sources_status",
85
+ purpose:
86
+ "Confirm the store is built before any query. If it reports unavailable, call sources_update (confirm: true) first — otherwise the sample and domain reads below fail with STORE_UNAVAILABLE.",
87
+ },
88
+ {
89
+ stage: 3,
90
+ tool: "*_sample",
91
+ purpose: `Call ${sampleList} tools to see real data shapes before querying. Prevents guessing at property names.`,
92
+ },
93
+ {
94
+ stage: 4,
95
+ tool: "domain tools",
96
+ purpose:
97
+ "Query specific entities — block_list, standard_lookup, etc. Use the use_when hints above to pick the right tool.",
98
+ },
99
+ ];
100
+ }
101
+
102
+ /** Tally the catalog tools by category (all counts DERIVED, never pinned). */
103
+ function countByCategory(tools: readonly CatalogTool[]): ToolCounts {
104
+ const of = (category: CatalogTool["category"]) =>
105
+ tools.filter((tool) => tool.category === category).length;
106
+ return {
107
+ total: tools.length,
108
+ read: of("read"),
109
+ write: of("write"),
110
+ orientation: of("orientation"),
111
+ diagnostic: of("diagnostic"),
112
+ };
113
+ }
114
+
115
+ /**
116
+ * Build the capabilities payload from a set of capability modules.
117
+ *
118
+ * @param modules - The live capability modules (passed in to avoid a static
119
+ * self-cycle; the verb's `run` dynamic-imports the registry barrel).
120
+ * @returns The structured, self-consistent capabilities map.
121
+ */
122
+ export function buildCapabilitiesData(
123
+ modules: readonly CapabilityModule[],
124
+ ): CapabilitiesData {
125
+ const tools = liveTools(modules);
126
+ const catalogTools: CatalogTool[] = tools.map((name) => {
127
+ const hint = TOOL_HINTS[name];
128
+ // A missing hint is a drift bug caught by `capabilities.test.ts`; degrade
129
+ // to a truthful placeholder rather than throwing inside a tool call.
130
+ return {
131
+ name,
132
+ category: hint?.category ?? "read",
133
+ use_when:
134
+ hint?.use_when ?? "(no hint authored — see capabilities/hints.ts)",
135
+ };
136
+ });
137
+
138
+ return {
139
+ version: VERSION,
140
+ conventions: CONVENTIONS,
141
+ discovery_sequence: buildDiscoverySequence(tools),
142
+ tools: catalogTools,
143
+ counts: countByCategory(catalogTools),
144
+ limits: { output_modes: OUTPUT_MODES, condensed_available: false },
145
+ };
146
+ }
147
+
148
+ export { mutatingTools };
@@ -0,0 +1,212 @@
1
+ /**
2
+ * The one authored input to the `capabilities` catalog: a `use_when` behavioural
3
+ * hint + category per tool. Everything else (the tool SET, counts, discovery
4
+ * samples) is DERIVED from the live grammar at build time, so this table is the
5
+ * only thing to keep in sync — and the drift-guard test (`capabilities.test.ts`)
6
+ * fails CI if a live tool has no hint, a hint names a tool that no longer
7
+ * exists, or a hint's category disagrees with the tool's real `mutates` flag.
8
+ *
9
+ * `use_when` strings for the surviving tools are ported verbatim from the old
10
+ * shell's `domains/llm/data/toolCatalog.ts`; the net-new v2 tools (config_set,
11
+ * graph_query, setup, upgrade, doctor, capabilities, prompt_*, token_add-config,
12
+ * sources_*, tier_lookup, create_*) are authored here.
13
+ */
14
+
15
+ import type { ToolHint } from "./types.js";
16
+
17
+ /**
18
+ * Behavioural hints keyed by the LIVE tool name (`emitSurface` naming rule:
19
+ * `noun` or `noun_verb`). Categories: `write` ⟺ the verb mutates; `orientation`
20
+ * = the session-start map; `diagnostic` = environment/version reporting; else
21
+ * `read`. The drift guard enforces every one of those invariants.
22
+ */
23
+ export const TOOL_HINTS: Record<string, ToolHint> = {
24
+ // — Orientation ————————————————————————————————————————————————————————————
25
+ capabilities: {
26
+ category: "orientation",
27
+ use_when:
28
+ "Starting a session — understand conventions, available tools, and the discovery flow",
29
+ },
30
+
31
+ // — Diagnostic ————————————————————————————————————————————————————————————
32
+ doctor: {
33
+ category: "diagnostic",
34
+ use_when:
35
+ "Diagnosing environment issues — config, store, completions, MCP health",
36
+ },
37
+ info: {
38
+ category: "diagnostic",
39
+ use_when: "Checking pragma version, configuration summary, and store state",
40
+ },
41
+
42
+ // — Read ——————————————————————————————————————————————————————————————————
43
+ block_list: {
44
+ category: "read",
45
+ use_when:
46
+ "Browsing available components, patterns, layouts under current tier/channel",
47
+ },
48
+ block_lookup: {
49
+ category: "read",
50
+ use_when:
51
+ "Need full anatomy, modifiers, tokens, and standards for specific blocks by name or IRI",
52
+ },
53
+ block_sample: {
54
+ category: "read",
55
+ use_when:
56
+ "See actual block data shapes before querying — returns random instances each call, prevents guessing at property names",
57
+ },
58
+ colophon: {
59
+ category: "read",
60
+ use_when:
61
+ "Understanding how pragma and the active domain are built — the toolchain + design-system colophon, for onboarding or a demo",
62
+ },
63
+ config_show: {
64
+ category: "read",
65
+ use_when: "Checking active tier and channel before querying",
66
+ },
67
+ graph_inspect: {
68
+ category: "read",
69
+ use_when:
70
+ "Examining all triples for a specific URI — predicates, objects, and types",
71
+ },
72
+ graph_query: {
73
+ category: "read",
74
+ use_when:
75
+ "Complex SPARQL joins or aggregations that other tools cannot express",
76
+ },
77
+ modifier_list: {
78
+ category: "read",
79
+ use_when: "Listing all modifier families and their allowed values",
80
+ },
81
+ modifier_lookup: {
82
+ category: "read",
83
+ use_when:
84
+ "Need values and usage details for specific modifier families by name",
85
+ },
86
+ modifier_sample: {
87
+ category: "read",
88
+ use_when:
89
+ "See actual modifier data shapes (with value lists) before querying — returns random instances each call",
90
+ },
91
+ ontology_list: {
92
+ category: "read",
93
+ use_when:
94
+ "Discovering loaded namespaces, prefixes, and class/property counts",
95
+ },
96
+ ontology_lookup: {
97
+ category: "read",
98
+ use_when:
99
+ "Exploring the full schema of a namespace by name — classes, properties, and hierarchy",
100
+ },
101
+ ontology_show: {
102
+ category: "read",
103
+ use_when:
104
+ "Deprecated alias of ontology_lookup — exploring a namespace's schema (prefer ontology_lookup)",
105
+ },
106
+ prompt_list: {
107
+ category: "read",
108
+ use_when:
109
+ "Browsing the workflow prompt templates the design-system graph offers",
110
+ },
111
+ prompt_lookup: {
112
+ category: "read",
113
+ use_when:
114
+ "Fetching a specific workflow prompt template's body and arguments by name",
115
+ },
116
+ skill_list: {
117
+ category: "read",
118
+ use_when: "Discovering agent skills provided by installed packages",
119
+ },
120
+ skill_lookup: {
121
+ category: "read",
122
+ use_when:
123
+ "Loading full SKILL.md instructions for a specific agent skill by name",
124
+ },
125
+ sources_status: {
126
+ category: "read",
127
+ use_when:
128
+ "Checking whether the local knowledge-graph pack is built and current",
129
+ },
130
+ standard_list: {
131
+ category: "read",
132
+ use_when:
133
+ "Browsing code standards, optionally filtered by category or search term",
134
+ },
135
+ standard_lookup: {
136
+ category: "read",
137
+ use_when:
138
+ "Need do/don't code examples for specific coding standards by name or IRI",
139
+ },
140
+ standard_categories: {
141
+ category: "read",
142
+ use_when: "Discovering which standard categories exist before filtering",
143
+ },
144
+ standard_sample: {
145
+ category: "read",
146
+ use_when:
147
+ "See actual standard data shapes (with dos/donts) before querying — returns random instances each call",
148
+ },
149
+ tier_list: {
150
+ category: "read",
151
+ use_when: "Understanding the tier hierarchy before setting a tier filter",
152
+ },
153
+ tier_lookup: {
154
+ category: "read",
155
+ use_when: "Need the blocks scoped to a specific tier by name",
156
+ },
157
+ token_list: {
158
+ category: "read",
159
+ use_when:
160
+ "Browsing design tokens, optionally filtered by category (color, spacing, etc.)",
161
+ },
162
+ token_lookup: {
163
+ category: "read",
164
+ use_when:
165
+ "Need theme values and resolution details for specific tokens by name or IRI",
166
+ },
167
+ token_sample: {
168
+ category: "read",
169
+ use_when:
170
+ "See actual token data shapes (with theme values) before querying — returns random instances each call",
171
+ },
172
+
173
+ // — Write ——————————————————————————————————————————————————————————————————
174
+ config_set: {
175
+ category: "write",
176
+ use_when:
177
+ "Setting any config field by name — tier, channel, or detail (e.g. `config set tier apps/lxd`)",
178
+ },
179
+ create_component: {
180
+ category: "write",
181
+ use_when:
182
+ "Scaffolding a new design-system component (React, Svelte, or Lit)",
183
+ },
184
+ create_package: {
185
+ category: "write",
186
+ use_when:
187
+ "Scaffolding a new npm package with proper monorepo configuration",
188
+ },
189
+ create_application: {
190
+ category: "write",
191
+ use_when:
192
+ "Scaffolding a new React application with SSR, routing, and optional Relay",
193
+ },
194
+ setup: {
195
+ category: "write",
196
+ use_when:
197
+ "Installing pragma's shell completions, MCP config, skills, and LSP into the environment",
198
+ },
199
+ sources_update: {
200
+ category: "write",
201
+ use_when:
202
+ "Building or refreshing the knowledge-graph pack from the configured packages",
203
+ },
204
+ "token_add-config": {
205
+ category: "write",
206
+ use_when: "Generating a tokens.config.mjs for the terrazzo token pipeline",
207
+ },
208
+ upgrade: {
209
+ category: "write",
210
+ use_when: "Upgrading the pragma CLI itself to the latest release",
211
+ },
212
+ };
@@ -0,0 +1,13 @@
1
+ /**
2
+ * The `capabilities` capability module — the grammar-derived orientation tool
3
+ * that replaces the retired `llm` tool.
4
+ */
5
+
6
+ import type { CapabilityModule } from "../../kernel/spec/types.js";
7
+ import { capabilitiesSelfVerb } from "./capabilities.verb.js";
8
+
9
+ /** The `capabilities` capability module (a single storeless self-verb). */
10
+ export const capabilitiesModule: CapabilityModule = {
11
+ name: "capabilities",
12
+ verbs: [capabilitiesSelfVerb],
13
+ };
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Types for the `capabilities` orientation tool.
3
+ *
4
+ * The catalog is DERIVED from the live grammar (`emitSurface`) plus an authored
5
+ * hint table — never a hand-maintained tool list — so it cannot drift from the
6
+ * real surface (the exact failure mode of the old shell's `TOOL_CATALOG`, which
7
+ * still named retired tools). See {@link ToolHint} + `hints.ts` for the one
8
+ * authored input, and `catalog.ts` for the derivation.
9
+ */
10
+
11
+ /** A tool's behavioural category, used for grouping + counts. */
12
+ export type ToolCategory = "read" | "write" | "orientation" | "diagnostic";
13
+
14
+ /** The one authored fact per tool: its category + a one-line "use when" hint. */
15
+ export interface ToolHint {
16
+ readonly category: ToolCategory;
17
+ readonly use_when: string;
18
+ }
19
+
20
+ /** One tool as it appears in the catalog — its live name plus its hint. */
21
+ export interface CatalogTool {
22
+ readonly name: string;
23
+ readonly category: ToolCategory;
24
+ readonly use_when: string;
25
+ }
26
+
27
+ /** A single stage in the discovery flow an agent follows at session start. */
28
+ export interface DiscoveryStage {
29
+ readonly stage: number;
30
+ readonly tool: string;
31
+ readonly purpose: string;
32
+ }
33
+
34
+ /** Tool counts by category (all DERIVED from the live catalog, never pinned). */
35
+ export interface ToolCounts {
36
+ readonly total: number;
37
+ readonly read: number;
38
+ readonly write: number;
39
+ readonly orientation: number;
40
+ readonly diagnostic: number;
41
+ }
42
+
43
+ /** The structured system map returned by the `capabilities` tool. */
44
+ export interface CapabilitiesData {
45
+ readonly version: string;
46
+ readonly conventions: {
47
+ readonly system: string;
48
+ readonly model: string;
49
+ readonly querying: string;
50
+ /** The plan-first/confirm gate every mutating tool follows (D2). */
51
+ readonly mutations: string;
52
+ };
53
+ readonly discovery_sequence: readonly DiscoveryStage[];
54
+ readonly tools: readonly CatalogTool[];
55
+ readonly counts: ToolCounts;
56
+ readonly limits: {
57
+ readonly output_modes: readonly string[];
58
+ readonly condensed_available: boolean;
59
+ };
60
+ }
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Collect the `colophon` payload — the verb's run body (lazily imported).
3
+ *
4
+ * STORELESS: it reads the layered config (memoized) and resolves the EFFECTIVE
5
+ * capability modules exactly as a real command would, so a config story that
6
+ * overrides a bundled pack is reflected here — "active domain" is expressed the
7
+ * way the rest of the CLI expresses it. It never boots the triple store, so the
8
+ * storeless-guarantee spy still sees `store.booted === false`.
9
+ *
10
+ * The registry is reached through a RUNTIME dynamic `import("../index.js")`
11
+ * inside this async body — never a static import — so the static
12
+ * `index → colophonModule → index` cycle can never form. Do NOT "clean it up"
13
+ * into a static import.
14
+ */
15
+
16
+ import type { PragmaRuntime } from "../../kernel/runtime/types.js";
17
+ import type { CapabilityModule } from "../../kernel/spec/types.js";
18
+ import { PRAGMA_COLOPHON, PRAGMA_COLOPHON_SUMMARY } from "./pragmaColophon.js";
19
+ import type { ColophonData, ColophonSection } from "./types.js";
20
+
21
+ /**
22
+ * Assemble the colophon data for the current runtime.
23
+ *
24
+ * @param runtime - The per-invocation runtime.
25
+ * @returns The storeless colophon payload: pragma's section, then each active
26
+ * pack/domain that declares a `colophon`.
27
+ * @note Impure — reads the config layers (never boots the store).
28
+ */
29
+ export async function collectColophon(
30
+ runtime: PragmaRuntime,
31
+ ): Promise<ColophonData> {
32
+ const sections: ColophonSection[] = [
33
+ {
34
+ kind: "pragma",
35
+ title: "pragma",
36
+ markdown: PRAGMA_COLOPHON,
37
+ summary: PRAGMA_COLOPHON_SUMMARY,
38
+ source: "built-in",
39
+ },
40
+ ];
41
+
42
+ const { assembleEffectiveModules } = await import(
43
+ "../../kernel/packs/collect.js"
44
+ );
45
+ const { capabilities } = await import("../index.js");
46
+
47
+ let modules: readonly CapabilityModule[] = capabilities;
48
+ try {
49
+ const layers = await runtime.loadConfig();
50
+ modules = assembleEffectiveModules(capabilities, layers);
51
+ } catch {
52
+ // A bad config story is surfaced by the real commands; the colophon degrades
53
+ // to the static (bundled) modules rather than failing the narrative.
54
+ }
55
+
56
+ for (const module of modules) {
57
+ if (module.colophon) {
58
+ sections.push({
59
+ kind: "pack",
60
+ title: module.name,
61
+ markdown: module.colophon,
62
+ source: `pack:${module.name}`,
63
+ });
64
+ }
65
+ }
66
+
67
+ return { sections };
68
+ }
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Render golden for `pragma colophon`.
3
+ *
4
+ * Forces `chalk.level = 0` for a deterministic, color-free proof of the plain
5
+ * Markdown→terminal styling (headings, bullets, inline `**bold**`/`` `code` ``
6
+ * consumed) and the llm condensed passthrough (`summary ?? markdown`, no color),
7
+ * plus one assertion that color-ON emits an ANSI escape. This is the
8
+ * "human-styled / condensed-for-llm" render model in one file.
9
+ */
10
+
11
+ import chalk from "chalk";
12
+ import { afterAll, beforeAll, describe, expect, it } from "vitest";
13
+ import { colophonFormatters } from "./colophon.render.js";
14
+ import type { ColophonData } from "./types.js";
15
+
16
+ /** A tiny, fixed two-section fixture (double-quoted so backticks stay literal). */
17
+ const FIXTURE: ColophonData = {
18
+ sections: [
19
+ {
20
+ kind: "pragma",
21
+ title: "pragma",
22
+ markdown: "How it is **made**.\n\n## Effects\n- describe\n- interpret",
23
+ summary: "condensed",
24
+ source: "built-in",
25
+ },
26
+ {
27
+ kind: "pack",
28
+ title: "block",
29
+ markdown: "The `ds:` domain.",
30
+ source: "pack:block",
31
+ },
32
+ ],
33
+ };
34
+
35
+ let prevLevel: number;
36
+ beforeAll(() => {
37
+ prevLevel = chalk.level;
38
+ });
39
+ afterAll(() => {
40
+ chalk.level = prevLevel;
41
+ });
42
+
43
+ describe("colophon render golden — color-free (chalk.level = 0)", () => {
44
+ it("plain styles the title/heading/bullets and consumes inline markers", () => {
45
+ chalk.level = 0;
46
+ const expected = [
47
+ "pragma",
48
+ "",
49
+ "How it is made.",
50
+ "",
51
+ "Effects",
52
+ " • describe",
53
+ " • interpret",
54
+ "",
55
+ "block",
56
+ "",
57
+ "The ds: domain.",
58
+ ].join("\n");
59
+ expect(colophonFormatters.plain(FIXTURE)).toBe(expected);
60
+ });
61
+
62
+ it("llm emits condensed Markdown (summary preferred, no color)", () => {
63
+ chalk.level = 0;
64
+ const expected = [
65
+ "## pragma",
66
+ "",
67
+ "condensed",
68
+ "",
69
+ "## block",
70
+ "",
71
+ "The `ds:` domain.",
72
+ ].join("\n");
73
+ expect(colophonFormatters.llm(FIXTURE)).toBe(expected);
74
+ });
75
+
76
+ it("json is the exact ColophonData round-trip", () => {
77
+ expect(JSON.parse(colophonFormatters.json(FIXTURE))).toEqual(FIXTURE);
78
+ });
79
+ });
80
+
81
+ /** Run `body` with stdout's `isTTY` forced to `value`, then restore it. */
82
+ function withStdoutTty(value: boolean | undefined, body: () => void): void {
83
+ const stream = process.stdout as { isTTY?: boolean };
84
+ const saved = stream.isTTY;
85
+ stream.isTTY = value;
86
+ try {
87
+ body();
88
+ } finally {
89
+ stream.isTTY = saved;
90
+ }
91
+ }
92
+
93
+ describe("colophon render — color ON (attended TTY)", () => {
94
+ it("plain emits ANSI escapes on a color-capable TTY", () => {
95
+ chalk.level = 1;
96
+ withStdoutTty(true, () => {
97
+ // biome-ignore lint/suspicious/noControlCharactersInRegex: asserting the literal ESC byte is the point
98
+ expect(colophonFormatters.plain(FIXTURE)).toMatch(/\x1b\[/);
99
+ });
100
+ });
101
+ });
102
+
103
+ describe("colophon render — piped output is ANSI-free (F1)", () => {
104
+ it("plain emits ZERO ANSI off a TTY even when chalk reports color (CI/FORCE_COLOR)", () => {
105
+ // The CI leak: `supports-color` sets a non-zero level off a TTY under
106
+ // GITHUB_ACTIONS / FORCE_COLOR, so gating on `chalk.level` alone bled ANSI
107
+ // into `colophon --format plain | tee`. The isTTY gate closes it.
108
+ chalk.level = 3;
109
+ withStdoutTty(undefined, () => {
110
+ // biome-ignore lint/suspicious/noControlCharactersInRegex: asserting NO ESC byte survives
111
+ expect(colophonFormatters.plain(FIXTURE)).not.toMatch(/\x1b\[/);
112
+ });
113
+ });
114
+ });