@canonical/pragma-cli 0.38.0 → 0.40.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 (330) hide show
  1. package/README.md +1 -1
  2. package/dist/package.json +14 -14
  3. package/dist/pragma.conf.js +273 -176
  4. package/dist/pragma.conf.js.map +1 -1
  5. package/dist/src/capabilities/capabilities/capabilities.verb.js +2 -0
  6. package/dist/src/capabilities/capabilities/capabilities.verb.js.map +1 -1
  7. package/dist/src/capabilities/capabilities/catalog.js +47 -51
  8. package/dist/src/capabilities/capabilities/catalog.js.map +1 -1
  9. package/dist/src/capabilities/capabilities/index.js +2 -0
  10. package/dist/src/capabilities/capabilities/index.js.map +1 -1
  11. package/dist/src/capabilities/capabilities/types.js +5 -5
  12. package/dist/src/capabilities/colophon/colophon.render.js +7 -4
  13. package/dist/src/capabilities/colophon/colophon.render.js.map +1 -1
  14. package/dist/src/capabilities/colophon/colophon.verb.js +1 -0
  15. package/dist/src/capabilities/colophon/colophon.verb.js.map +1 -1
  16. package/dist/src/capabilities/config/get.verb.js +2 -0
  17. package/dist/src/capabilities/config/get.verb.js.map +1 -1
  18. package/dist/src/capabilities/config/runField.js +2 -2
  19. package/dist/src/capabilities/config/runField.js.map +1 -1
  20. package/dist/src/capabilities/config/set.verb.js +2 -0
  21. package/dist/src/capabilities/config/set.verb.js.map +1 -1
  22. package/dist/src/capabilities/config/show.verb.js +1 -0
  23. package/dist/src/capabilities/config/show.verb.js.map +1 -1
  24. package/dist/src/capabilities/config/unset.verb.js +2 -0
  25. package/dist/src/capabilities/config/unset.verb.js.map +1 -1
  26. package/dist/src/capabilities/create/constants.js +2 -2
  27. package/dist/src/capabilities/create/create.verb.js +14 -4
  28. package/dist/src/capabilities/create/create.verb.js.map +1 -1
  29. package/dist/src/capabilities/distribution.js +3 -1
  30. package/dist/src/capabilities/distribution.js.map +1 -1
  31. package/dist/src/capabilities/doctor/checks/checkPackageRefs.js +10 -2
  32. package/dist/src/capabilities/doctor/checks/checkPackageRefs.js.map +1 -1
  33. package/dist/src/capabilities/doctor/doctor.verb.js +2 -0
  34. package/dist/src/capabilities/doctor/doctor.verb.js.map +1 -1
  35. package/dist/src/capabilities/graph/connect.verb.js +2 -0
  36. package/dist/src/capabilities/graph/connect.verb.js.map +1 -1
  37. package/dist/src/capabilities/graph/inspect.render.js +7 -1
  38. package/dist/src/capabilities/graph/inspect.render.js.map +1 -1
  39. package/dist/src/capabilities/graph/inspect.verb.js +2 -0
  40. package/dist/src/capabilities/graph/inspect.verb.js.map +1 -1
  41. package/dist/src/capabilities/graph/query.render.js +37 -5
  42. package/dist/src/capabilities/graph/query.render.js.map +1 -1
  43. package/dist/src/capabilities/graph/query.verb.js +2 -0
  44. package/dist/src/capabilities/graph/query.verb.js.map +1 -1
  45. package/dist/src/capabilities/graph/queryText.js +28 -0
  46. package/dist/src/capabilities/graph/queryText.js.map +1 -1
  47. package/dist/src/capabilities/graph/runConnect.js +3 -3
  48. package/dist/src/capabilities/graph/runConnect.js.map +1 -1
  49. package/dist/src/capabilities/graph/runQuery.js +8 -6
  50. package/dist/src/capabilities/graph/runQuery.js.map +1 -1
  51. package/dist/src/capabilities/info/info.verb.js +2 -0
  52. package/dist/src/capabilities/info/info.verb.js.map +1 -1
  53. package/dist/src/capabilities/meta/mcp.verb.js +1 -0
  54. package/dist/src/capabilities/meta/mcp.verb.js.map +1 -1
  55. package/dist/src/capabilities/ontology/verbs.js +7 -10
  56. package/dist/src/capabilities/ontology/verbs.js.map +1 -1
  57. package/dist/src/capabilities/prompt/verbs.js +5 -4
  58. package/dist/src/capabilities/prompt/verbs.js.map +1 -1
  59. package/dist/src/capabilities/resources/provider.js +6 -3
  60. package/dist/src/capabilities/resources/provider.js.map +1 -1
  61. package/dist/src/capabilities/setup/setup.verb.js +13 -5
  62. package/dist/src/capabilities/setup/setup.verb.js.map +1 -1
  63. package/dist/src/capabilities/shared/calls.js +16 -0
  64. package/dist/src/capabilities/shared/calls.js.map +1 -0
  65. package/dist/src/capabilities/skill/render.js +7 -5
  66. package/dist/src/capabilities/skill/render.js.map +1 -1
  67. package/dist/src/capabilities/skill/verbs.js +5 -4
  68. package/dist/src/capabilities/skill/verbs.js.map +1 -1
  69. package/dist/src/capabilities/sources/collectStatus.js +6 -1
  70. package/dist/src/capabilities/sources/collectStatus.js.map +1 -1
  71. package/dist/src/capabilities/sources/index.js +4 -3
  72. package/dist/src/capabilities/sources/index.js.map +1 -1
  73. package/dist/src/capabilities/sources/reset.render.js +37 -0
  74. package/dist/src/capabilities/sources/reset.render.js.map +1 -0
  75. package/dist/src/capabilities/sources/reset.verb.js +51 -0
  76. package/dist/src/capabilities/sources/reset.verb.js.map +1 -0
  77. package/dist/src/capabilities/sources/runReset.js +59 -0
  78. package/dist/src/capabilities/sources/runReset.js.map +1 -0
  79. package/dist/src/capabilities/sources/runUpdate.js +7 -6
  80. package/dist/src/capabilities/sources/runUpdate.js.map +1 -1
  81. package/dist/src/capabilities/sources/status.render.js +24 -8
  82. package/dist/src/capabilities/sources/status.render.js.map +1 -1
  83. package/dist/src/capabilities/sources/status.verb.js +1 -0
  84. package/dist/src/capabilities/sources/status.verb.js.map +1 -1
  85. package/dist/src/capabilities/sources/update.verb.js +2 -0
  86. package/dist/src/capabilities/sources/update.verb.js.map +1 -1
  87. package/dist/src/capabilities/upgrade/upgrade.verb.js +1 -0
  88. package/dist/src/capabilities/upgrade/upgrade.verb.js.map +1 -1
  89. package/dist/src/capabilities/version/version.verb.js +1 -0
  90. package/dist/src/capabilities/version/version.verb.js.map +1 -1
  91. package/dist/src/constants.js +4 -3
  92. package/dist/src/constants.js.map +1 -1
  93. package/dist/src/kernel/error/index.js +1 -1
  94. package/dist/src/kernel/error/index.js.map +1 -1
  95. package/dist/src/kernel/error/recovery.js +24 -42
  96. package/dist/src/kernel/error/recovery.js.map +1 -1
  97. package/dist/src/kernel/packs/collect.js +123 -9
  98. package/dist/src/kernel/packs/collect.js.map +1 -1
  99. package/dist/src/kernel/packs/compile.js +74 -15
  100. package/dist/src/kernel/packs/compile.js.map +1 -1
  101. package/dist/src/kernel/packs/graphql/fetchGraphqlLookup.js +3 -3
  102. package/dist/src/kernel/packs/graphql/fetchGraphqlLookup.js.map +1 -1
  103. package/dist/src/kernel/packs/iri.js +2 -4
  104. package/dist/src/kernel/packs/iri.js.map +1 -1
  105. package/dist/src/kernel/packs/renderPack.js +90 -50
  106. package/dist/src/kernel/packs/renderPack.js.map +1 -1
  107. package/dist/src/kernel/packs/resolveEntity.js +202 -90
  108. package/dist/src/kernel/packs/resolveEntity.js.map +1 -1
  109. package/dist/src/kernel/packs/runBodies.js +89 -30
  110. package/dist/src/kernel/packs/runBodies.js.map +1 -1
  111. package/dist/src/kernel/packs/schema.js +66 -12
  112. package/dist/src/kernel/packs/schema.js.map +1 -1
  113. package/dist/src/kernel/packs/sparql/buildListQuery.js +80 -13
  114. package/dist/src/kernel/packs/sparql/buildListQuery.js.map +1 -1
  115. package/dist/src/kernel/packs/sparql/buildLookupQuery.js +41 -13
  116. package/dist/src/kernel/packs/sparql/buildLookupQuery.js.map +1 -1
  117. package/dist/src/kernel/packs/sparql/filterValues.js +32 -23
  118. package/dist/src/kernel/packs/sparql/filterValues.js.map +1 -1
  119. package/dist/src/kernel/packs/sparql/runSelect.js +3 -5
  120. package/dist/src/kernel/packs/sparql/runSelect.js.map +1 -1
  121. package/dist/src/kernel/packs/storyRules.js +31 -4
  122. package/dist/src/kernel/packs/storyRules.js.map +1 -1
  123. package/dist/src/kernel/packs/tierScope.js +3 -3
  124. package/dist/src/kernel/packs/tierScope.js.map +1 -1
  125. package/dist/src/kernel/packs/types.js +4 -0
  126. package/dist/src/kernel/packs/types.js.map +1 -1
  127. package/dist/src/kernel/project/cli/buildProgram.js +4 -0
  128. package/dist/src/kernel/project/cli/buildProgram.js.map +1 -1
  129. package/dist/src/kernel/project/cli/dispatch.js +32 -8
  130. package/dist/src/kernel/project/cli/dispatch.js.map +1 -1
  131. package/dist/src/kernel/project/cli/suggestNames.js +44 -1
  132. package/dist/src/kernel/project/cli/suggestNames.js.map +1 -1
  133. package/dist/src/kernel/project/cli/verbHelp.js +17 -18
  134. package/dist/src/kernel/project/cli/verbHelp.js.map +1 -1
  135. package/dist/src/kernel/project/mcp/buildServer.js +11 -4
  136. package/dist/src/kernel/project/mcp/buildServer.js.map +1 -1
  137. package/dist/src/kernel/project/mcp/envelope.js +3 -2
  138. package/dist/src/kernel/project/mcp/envelope.js.map +1 -1
  139. package/dist/src/kernel/project/mcp/instructions.js +101 -31
  140. package/dist/src/kernel/project/mcp/instructions.js.map +1 -1
  141. package/dist/src/kernel/project/mcp/registerVerb.js +59 -23
  142. package/dist/src/kernel/project/mcp/registerVerb.js.map +1 -1
  143. package/dist/src/kernel/render/renderers.js +3 -3
  144. package/dist/src/kernel/render/turtle.js +21 -4
  145. package/dist/src/kernel/render/turtle.js.map +1 -1
  146. package/dist/src/kernel/runtime/graphpack/build.js +54 -1
  147. package/dist/src/kernel/runtime/graphpack/build.js.map +1 -1
  148. package/dist/src/kernel/runtime/graphpack/manifest.js +14 -0
  149. package/dist/src/kernel/runtime/graphpack/manifest.js.map +1 -1
  150. package/dist/src/kernel/runtime/graphpack/read.js +3 -5
  151. package/dist/src/kernel/runtime/graphpack/read.js.map +1 -1
  152. package/dist/src/kernel/runtime/graphpack/schemas.js +1 -0
  153. package/dist/src/kernel/runtime/graphpack/schemas.js.map +1 -1
  154. package/dist/src/kernel/runtime/loadSession.js +8 -1
  155. package/dist/src/kernel/runtime/loadSession.js.map +1 -1
  156. package/dist/src/kernel/runtime/packVersion.js +75 -0
  157. package/dist/src/kernel/runtime/packVersion.js.map +1 -0
  158. package/dist/src/kernel/runtime/readEntity.js +43 -4
  159. package/dist/src/kernel/runtime/readEntity.js.map +1 -1
  160. package/dist/src/kernel/runtime/resolveSources.js +61 -9
  161. package/dist/src/kernel/runtime/resolveSources.js.map +1 -1
  162. package/dist/src/kernel/runtime/storeReadiness.js +3 -2
  163. package/dist/src/kernel/runtime/storeReadiness.js.map +1 -1
  164. package/dist/src/kernel/spec/call.js +167 -0
  165. package/dist/src/kernel/spec/call.js.map +1 -0
  166. package/dist/src/kernel/spec/emitReference.js +9 -13
  167. package/dist/src/kernel/spec/emitReference.js.map +1 -1
  168. package/dist/src/kernel/spec/emitSurface.js +8 -1
  169. package/dist/src/kernel/spec/emitSurface.js.map +1 -1
  170. package/dist/src/kernel/spec/guidance.js +63 -0
  171. package/dist/src/kernel/spec/guidance.js.map +1 -0
  172. package/dist/src/kernel/spec/wireType.js +36 -0
  173. package/dist/src/kernel/spec/wireType.js.map +1 -0
  174. package/package.json +14 -14
  175. package/pragma.conf.ts +294 -177
  176. package/src/capabilities/block.parity.test.ts +1 -1
  177. package/src/capabilities/callRule.test.ts +147 -0
  178. package/src/capabilities/capabilities/capabilities.test.ts +47 -19
  179. package/src/capabilities/capabilities/capabilities.verb.ts +2 -0
  180. package/src/capabilities/capabilities/catalog.ts +60 -55
  181. package/src/capabilities/capabilities/index.ts +2 -0
  182. package/src/capabilities/capabilities/types.ts +16 -19
  183. package/src/capabilities/colophon/colophon.render.ts +9 -5
  184. package/src/capabilities/colophon/colophon.verb.ts +1 -0
  185. package/src/capabilities/config/get.verb.ts +2 -0
  186. package/src/capabilities/config/runField.ts +3 -3
  187. package/src/capabilities/config/set.verb.ts +3 -0
  188. package/src/capabilities/config/show.verb.ts +2 -0
  189. package/src/capabilities/config/unset.verb.ts +2 -0
  190. package/src/capabilities/create/constants.ts +2 -2
  191. package/src/capabilities/create/create.verb.ts +16 -0
  192. package/src/capabilities/create/createGrammar.test.ts +1 -1
  193. package/src/capabilities/distribution.test.ts +6 -3
  194. package/src/capabilities/distribution.ts +6 -0
  195. package/src/capabilities/doctor/checks/checkPackageRefs.ts +14 -2
  196. package/src/capabilities/doctor/doctor.test.ts +38 -1
  197. package/src/capabilities/doctor/doctor.verb.ts +2 -0
  198. package/src/capabilities/emptyRecovery.test.ts +5 -0
  199. package/src/capabilities/graph/connect.verb.ts +2 -0
  200. package/src/capabilities/graph/inspect.render.ts +9 -1
  201. package/src/capabilities/graph/inspect.test.ts +73 -0
  202. package/src/capabilities/graph/inspect.verb.ts +2 -0
  203. package/src/capabilities/graph/query.render.test.ts +35 -0
  204. package/src/capabilities/graph/query.render.ts +45 -7
  205. package/src/capabilities/graph/query.shipped.exec.test.ts +44 -0
  206. package/src/capabilities/graph/query.verb.ts +2 -0
  207. package/src/capabilities/graph/queryText.test.ts +55 -1
  208. package/src/capabilities/graph/queryText.ts +47 -0
  209. package/src/capabilities/graph/runConnect.ts +4 -5
  210. package/src/capabilities/graph/runQuery.ts +23 -9
  211. package/src/capabilities/info/info.verb.ts +2 -0
  212. package/src/capabilities/links.shipped.exec.test.ts +398 -0
  213. package/src/capabilities/listBudget.shipped.exec.test.ts +2 -2
  214. package/src/capabilities/listLookup.shipped.exec.test.ts +122 -13
  215. package/src/capabilities/listQuery.shipped.exec.test.ts +39 -16
  216. package/src/capabilities/lookupBudget.shipped.exec.test.ts +208 -0
  217. package/src/capabilities/meta/mcp.verb.ts +2 -0
  218. package/src/capabilities/ontology/ontology.test.ts +24 -0
  219. package/src/capabilities/ontology/verbs.ts +16 -12
  220. package/src/capabilities/prompt/verbs.ts +10 -4
  221. package/src/capabilities/resources/provider.ts +7 -3
  222. package/src/capabilities/resources/resources.test.ts +2 -1
  223. package/src/capabilities/setup/setup.verb.ts +16 -0
  224. package/src/capabilities/shared/calls.ts +20 -0
  225. package/src/capabilities/skill/render.ts +9 -6
  226. package/src/capabilities/skill/verbs.ts +8 -4
  227. package/src/capabilities/sources/collectStatus.ts +6 -1
  228. package/src/capabilities/sources/index.ts +4 -3
  229. package/src/capabilities/sources/reset.render.test.ts +33 -0
  230. package/src/capabilities/sources/reset.render.ts +43 -0
  231. package/src/capabilities/sources/reset.verb.ts +59 -0
  232. package/src/capabilities/sources/runReset.ts +65 -0
  233. package/src/capabilities/sources/runUpdate.ts +12 -11
  234. package/src/capabilities/sources/sources.test.ts +158 -3
  235. package/src/capabilities/sources/status.render.test.ts +63 -1
  236. package/src/capabilities/sources/status.render.ts +25 -8
  237. package/src/capabilities/sources/status.verb.ts +2 -0
  238. package/src/capabilities/sources/types.ts +26 -0
  239. package/src/capabilities/sources/update.verb.ts +3 -0
  240. package/src/capabilities/surface.test.ts +2 -2
  241. package/src/capabilities/token.parity.test.ts +3 -2
  242. package/src/capabilities/tokenGraph.shipped.exec.test.ts +14 -2
  243. package/src/capabilities/upgrade/upgrade.verb.ts +1 -0
  244. package/src/capabilities/variable.parity.test.ts +2 -1
  245. package/src/capabilities/version/version.verb.ts +1 -0
  246. package/src/capabilities/wireContract.test.ts +110 -0
  247. package/src/constants.ts +4 -3
  248. package/src/kernel/copy.test.ts +1 -1
  249. package/src/kernel/error/PragmaError.test.ts +7 -3
  250. package/src/kernel/error/index.ts +1 -1
  251. package/src/kernel/error/recovery.test.ts +52 -18
  252. package/src/kernel/error/recovery.ts +25 -46
  253. package/src/kernel/error/types.ts +1 -1
  254. package/src/kernel/packs/collect.test.ts +79 -0
  255. package/src/kernel/packs/collect.ts +151 -11
  256. package/src/kernel/packs/compile.test.ts +107 -10
  257. package/src/kernel/packs/compile.ts +100 -11
  258. package/src/kernel/packs/filteredEmpty.test.ts +22 -5
  259. package/src/kernel/packs/graphql/fetchGraphqlLookup.ts +5 -6
  260. package/src/kernel/packs/graphqlSource.test.ts +42 -0
  261. package/src/kernel/packs/iri.ts +5 -4
  262. package/src/kernel/packs/listNotice.test.ts +1 -1
  263. package/src/kernel/packs/nounLink.test.ts +385 -0
  264. package/src/kernel/packs/renderPack.ts +137 -57
  265. package/src/kernel/packs/resolveEntity.test.ts +170 -1
  266. package/src/kernel/packs/resolveEntity.ts +281 -101
  267. package/src/kernel/packs/runBodies.ts +133 -31
  268. package/src/kernel/packs/schema.ts +77 -12
  269. package/src/kernel/packs/sparql/buildListQuery.test.ts +78 -1
  270. package/src/kernel/packs/sparql/buildListQuery.ts +106 -16
  271. package/src/kernel/packs/sparql/buildLookupQuery.ts +44 -13
  272. package/src/kernel/packs/sparql/filterValues.test.ts +36 -4
  273. package/src/kernel/packs/sparql/filterValues.ts +50 -31
  274. package/src/kernel/packs/sparql/runSelect.ts +4 -6
  275. package/src/kernel/packs/storyRules.ts +37 -4
  276. package/src/kernel/packs/tierScope.test.ts +120 -6
  277. package/src/kernel/packs/tierScope.ts +5 -7
  278. package/src/kernel/packs/toolDescription.test.ts +59 -74
  279. package/src/kernel/packs/types.ts +93 -11
  280. package/src/kernel/project/cli/buildProgram.ts +4 -0
  281. package/src/kernel/project/cli/dispatch.ts +34 -8
  282. package/src/kernel/project/cli/suggest.test.ts +77 -0
  283. package/src/kernel/project/cli/suggestNames.ts +47 -1
  284. package/src/kernel/project/cli/verbHelp.ts +16 -19
  285. package/src/kernel/project/mcp/buildServer.ts +15 -4
  286. package/src/kernel/project/mcp/envelope.ts +3 -2
  287. package/src/kernel/project/mcp/instructions.ts +123 -35
  288. package/src/kernel/project/mcp/prompts/prompts.test.ts +136 -20
  289. package/src/kernel/project/mcp/registerVerb.test.ts +28 -0
  290. package/src/kernel/project/mcp/registerVerb.ts +67 -29
  291. package/src/kernel/render/__snapshots__/renderers.test.ts.snap +1 -1
  292. package/src/kernel/render/renderers.test.ts +2 -2
  293. package/src/kernel/render/renderers.ts +3 -3
  294. package/src/kernel/render/turtle.ts +24 -4
  295. package/src/kernel/runtime/graphpack/build.ts +58 -1
  296. package/src/kernel/runtime/graphpack/graphpack.test.ts +20 -0
  297. package/src/kernel/runtime/graphpack/manifest.ts +15 -0
  298. package/src/kernel/runtime/graphpack/read.ts +4 -6
  299. package/src/kernel/runtime/graphpack/schemas.ts +1 -0
  300. package/src/kernel/runtime/graphpack/types.ts +13 -0
  301. package/src/kernel/runtime/loadSession.ts +8 -1
  302. package/src/kernel/runtime/packVersion.test.ts +61 -0
  303. package/src/kernel/runtime/packVersion.ts +84 -0
  304. package/src/kernel/runtime/readEntity.ts +61 -6
  305. package/src/kernel/runtime/resolveSources.test.ts +90 -7
  306. package/src/kernel/runtime/resolveSources.ts +91 -10
  307. package/src/kernel/runtime/storeReadiness.ts +4 -4
  308. package/src/kernel/runtime/types.ts +12 -0
  309. package/src/kernel/spec/call.test.ts +95 -0
  310. package/src/kernel/spec/call.ts +186 -0
  311. package/src/kernel/spec/emitReference.ts +9 -13
  312. package/src/kernel/spec/emitSurface.ts +9 -1
  313. package/src/kernel/spec/guidance.test.ts +49 -0
  314. package/src/kernel/spec/guidance.ts +68 -0
  315. package/src/kernel/spec/index.ts +4 -0
  316. package/src/kernel/spec/surfaceConformance.test.ts +2 -2
  317. package/src/kernel/spec/types.ts +64 -7
  318. package/src/kernel/spec/wireType.ts +53 -0
  319. package/src/testing/behavioral/errorMatrix.mcp.test.ts +2 -1
  320. package/src/testing/behavioral/journeys.firstInstall.test.ts +72 -2
  321. package/src/testing/behavioral/parity.test.ts +40 -0
  322. package/src/testing/eval/__snapshots__/eval.test.ts.snap +1 -1
  323. package/src/testing/eval/cases/assembly.ts +4 -3
  324. package/src/testing/eval/cases/stable.ts +2 -3
  325. package/src/testing/helpers/callSchema.ts +40 -0
  326. package/src/testing/helpers/parity.ts +35 -2
  327. package/src/testing/setupCallChecking.ts +30 -0
  328. package/dist/src/capabilities/capabilities/hints.js +0 -223
  329. package/dist/src/capabilities/capabilities/hints.js.map +0 -1
  330. package/src/capabilities/capabilities/hints.ts +0 -266
@@ -7,20 +7,11 @@
7
7
  * body — so it stays on the fast `--help` path. Ported from the v1 cli-core
8
8
  * `formatVerbHelp`, retargeted at the grammar.
9
9
  */
10
+ import { renderCall } from "../../spec/call.js";
11
+ import { exampleCall, useWhenSentence } from "../../spec/guidance.js";
10
12
  import { kebabCase } from "../../spec/index.js";
11
13
  import { MUTATION_FLAG_DOCS, negationFlagDoc } from "./constants.js";
12
14
  import { helpColumns, helpDim, helpHeading, helpTerm, helpUsage, } from "./helpFormat.js";
13
- /**
14
- * A verb's `doc` doubles as its MCP tool description, so a pack's authored
15
- * `toolDescription` may end with an MCP tool-call example — `Example:
16
- * token_lookup { names: ["…"] }`. That `noun_verb {…}` syntax is MCP-transport
17
- * shape, meaningless on the CLI, so the CLI projector drops the trailing example
18
- * sentence; the MCP projector keeps the authored text whole. Hand-written docs
19
- * carry no such example and pass through untouched.
20
- */
21
- function stripToolCallExample(doc) {
22
- return doc.replace(/\s*Example:\s+[a-z][a-z0-9_]*\s*\{[^{}]*\}\.?\s*$/, "");
23
- }
24
15
  /** The positional usage token for a param (`<name>` / `[name]`, `...` variadic). */
25
16
  function positionalToken(param) {
26
17
  const variadic = param.kind === "string[]" ? "..." : "";
@@ -57,11 +48,11 @@ export function formatVerbHelp(programName, verb) {
57
48
  "",
58
49
  verb.summary,
59
50
  ];
60
- if (verb.doc) {
61
- const cliDoc = stripToolCallExample(verb.doc);
62
- if (cliDoc)
63
- lines.push("", cliDoc);
64
- }
51
+ if (verb.doc)
52
+ lines.push("", verb.doc);
53
+ const question = useWhenSentence(verb);
54
+ if (question)
55
+ lines.push("", question);
65
56
  // Every flag the command PARSES is rendered, from the same spec facts
66
57
  // registration reads: the declared params, each default-true boolean's
67
58
  // `--no-` negation, and — on a mutating verb — the auto-injected mutation
@@ -82,9 +73,17 @@ export function formatVerbHelp(programName, verb) {
82
73
  if (flagRows.length > 0) {
83
74
  lines.push("", helpHeading("Flags"), ...helpColumns(flagRows));
84
75
  }
85
- if (verb.examples && verb.examples.length > 0) {
76
+ // The verb's declared example leads, spelled as a command by the same
77
+ // renderer that spells it as a tool call in the MCP description.
78
+ const declaredExample = exampleCall(verb);
79
+ const generated = declaredExample && renderCall(declaredExample, "cli");
80
+ const examples = [
81
+ ...(generated ? [{ cmd: generated }] : []),
82
+ ...(verb.examples ?? []).filter((example) => example.cmd !== generated),
83
+ ];
84
+ if (examples.length > 0) {
86
85
  lines.push("", helpHeading("Examples"));
87
- for (const example of verb.examples) {
86
+ for (const example of examples) {
88
87
  lines.push(` ${helpTerm(example.cmd)}`);
89
88
  if (example.note)
90
89
  lines.push(` ${helpDim(example.note)}`);
@@ -1 +1 @@
1
- {"version":3,"file":"verbHelp.js","sourceRoot":"","sources":["../../../../../src/kernel/project/cli/verbHelp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verbHelp.js","sourceRoot":"","sources":["../../../../../src/kernel/project/cli/verbHelp.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEtE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EACL,WAAW,EACX,OAAO,EACP,WAAW,EACX,QAAQ,EACR,SAAS,GACV,MAAM,iBAAiB,CAAC;AAEzB,oFAAoF;AACpF,SAAS,eAAe,CAAC,KAAgB;IACvC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,OAAO,KAAK,CAAC,QAAQ;QACnB,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,GAAG,QAAQ,GAAG;QAC9B,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,GAAG,QAAQ,GAAG,CAAC;AACnC,CAAC;AAED,oFAAoF;AACpF,SAAS,WAAW,CAAC,KAAgB;IACnC,MAAM,IAAI,GAAG,KAAK,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1C,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,GAAG,IAAI,cAAc,CAAC;IAC5D,OAAO,GAAG,IAAI,UAAU,CAAC;AAC3B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,WAAmB,EAAE,IAAc;IAChE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI;SAC1B,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SACtC,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAEvD,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjE,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,MAAM,KAAK,GAAa;QACtB,SAAS,CAAC,GAAG,WAAW,IAAI,WAAW,GAAG,WAAW,UAAU,CAAC;QAChE,EAAE;QACF,IAAI,CAAC,OAAO;KACb,CAAC;IAEF,IAAI,IAAI,CAAC,GAAG;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IAEvC,sEAAsE;IACtE,uEAAuE;IACvE,0EAA0E;IAC1E,2EAA2E;IAC3E,MAAM,QAAQ,GAAkC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACrE,MAAM,IAAI,GAAkC;YAC1C,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAU;SACvC,CAAC;QACF,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YACrD,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,EAAE,EAAE,eAAe,CAAC,KAAK,CAAC,CAAU,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IACH,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC5B,QAAQ,CAAC,IAAI,CACX,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,CAAU,CAAC,CACnE,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,sEAAsE;IACtE,iEAAiE;IACjE,MAAM,eAAe,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,eAAe,IAAI,UAAU,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG;QACf,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC;KACxE,CAAC;IACF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;QACxC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACzC,IAAI,OAAO,CAAC,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;IAElD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,WAAmB,EAAE,IAAc;IACzD,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,OAAO,OAAO,CACZ,SAAS,WAAW,IAAI,IAAI,wBAAwB,IAAI,YAAY,CACrE,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC,SAAS,WAAW,gCAAgC,CAAC,CAAC;AACvE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAC5B,WAAmB,EACnB,IAAY,EACZ,KAA0B;IAE1B,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAC5B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CACpD,CAAC;IACF,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,0BAA0B,IAAI,IAAI,CAAC;IAEtE,MAAM,KAAK,GAAa;QACtB,SAAS,CAAC,GAAG,WAAW,IAAI,IAAI,iBAAiB,CAAC;QAClD,EAAE;QACF,WAAW,CAAC,OAAO,CAAC;QACpB,GAAG,WAAW,CACZ,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAChE;QACD,EAAE;QACF,OAAO,CACL,SAAS,WAAW,IAAI,IAAI,yCAAyC,CACtE;KACF,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -16,7 +16,8 @@
16
16
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
17
17
  import { MCP_SERVER_NAME, VERSION } from "../../../constants.js";
18
18
  import { bootRuntime } from "../../runtime/index.js";
19
- import { buildInstructions } from "./instructions.js";
19
+ import { declareVerbs } from "../../spec/call.js";
20
+ import { buildInstructions, INSTRUCTIONS_MAX_CHARS } from "./instructions.js";
20
21
  import { registerVerb } from "./registerVerb.js";
21
22
  /**
22
23
  * Neutral flags for the MCP runtime. Output shaping is the projector's job
@@ -44,10 +45,16 @@ const MCP_FLAGS = {
44
45
  */
45
46
  export async function buildServer(modules, cwd = process.cwd()) {
46
47
  const server = new McpServer({ name: MCP_SERVER_NAME, version: VERSION },
47
- // Handshake orientation (sent once at initialize), derived from the SAME
48
- // conventions/discovery as the `capabilities` tool so the two never diverge.
49
- { instructions: buildInstructions(modules) });
48
+ // Handshake orientation (sent once at initialize): the distribution's
49
+ // conventions plus a question → tool index generated from the registry. It
50
+ // is FITTED to the length clients keep; when a project's packs push it over,
51
+ // the dropped index lines are noted on stderr (stdout is the JSON-RPC frame).
52
+ {
53
+ instructions: buildInstructions(modules, (dropped) => process.stderr.write(`MCP instructions: ${dropped} index line(s) did not fit ${INSTRUCTIONS_MAX_CHARS} characters and were left to the capabilities catalogue.\n`)),
54
+ });
50
55
  const runtime = bootRuntime(MCP_FLAGS, cwd);
56
+ // Tells the call renderer which verbs exist (see `spec/call.ts`).
57
+ declareVerbs(modules.flatMap((module) => module.verbs));
51
58
  for (const module of modules) {
52
59
  for (const verb of module.verbs) {
53
60
  if (verb.capability.mcp.expose) {
@@ -1 +1 @@
1
- {"version":3,"file":"buildServer.js","sourceRoot":"","sources":["../../../../../src/kernel/project/mcp/buildServer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;;;GAIG;AACH,MAAM,SAAS,GAAgB;IAC7B,GAAG,EAAE,IAAI;IACT,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,KAAK;CACf,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAoC,EACpC,MAAc,OAAO,CAAC,GAAG,EAAE;IAE3B,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE;IAC3C,yEAAyE;IACzE,6EAA6E;IAC7E,EAAE,YAAY,EAAE,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAC7C,CAAC;IACF,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAE5C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;gBAC/B,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QACD,6EAA6E;QAC7E,0EAA0E;QAC1E,uEAAuE;QACvE,kDAAkD;QAClD,MAAM,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9D,wEAAwE;QACxE,MAAM,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"buildServer.js","sourceRoot":"","sources":["../../../../../src/kernel/project/mcp/buildServer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;;;GAIG;AACH,MAAM,SAAS,GAAgB;IAC7B,GAAG,EAAE,IAAI;IACT,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,KAAK;CACf,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAoC,EACpC,MAAc,OAAO,CAAC,GAAG,EAAE;IAE3B,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE;IAC3C,sEAAsE;IACtE,2EAA2E;IAC3E,6EAA6E;IAC7E,8EAA8E;IAC9E;QACE,YAAY,EAAE,iBAAiB,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CACnD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,qBAAqB,OAAO,8BAA8B,sBAAsB,4DAA4D,CAC7I,CACF;KACF,CACF,CAAC;IACF,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAC5C,kEAAkE;IAClE,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAExD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;gBAC/B,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QACD,6EAA6E;QAC7E,0EAA0E;QAC1E,uEAAuE;QACvE,kDAAkD;QAClD,MAAM,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9D,wEAAwE;QACxE,MAAM,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -4,8 +4,9 @@
4
4
  * The MCP projector returns the *same* `{ ok, data, meta }` / `{ ok, error }`
5
5
  * envelope the CLI emits under `--format json` — built by the shared
6
6
  * `successEnvelope` / `errorEnvelope` — serialized into a single text content
7
- * block (D4). Reusing the shared builders is what guarantees CLI-JSON and MCP
8
- * output are byte-identical.
7
+ * block (D4). Reusing the shared builders is what keeps CLI-JSON and MCP output
8
+ * the same envelope — equal in everything but the spelling of a next step
9
+ * inside `meta.notice`, which follows the surface it is printed on.
9
10
  */
10
11
  import { errorEnvelope, successEnvelope } from "../../render/index.js";
11
12
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../../../../src/kernel/project/mcp/envelope.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CACzB,IAAa,EACb,OAAgC,EAAE;IAElC,OAAO;QACL,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE;SACpE;KACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,KAAkB;IAC1C,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACvE,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../../../../src/kernel/project/mcp/envelope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CACzB,IAAa,EACb,OAAgC,EAAE;IAElC,OAAO;QACL,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE;SACpE;KACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,KAAkB;IAC1C,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACvE,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC"}
@@ -2,43 +2,113 @@
2
2
  * The MCP server `instructions` string — orientation sent ONCE in the
3
3
  * initialize handshake (not per tool call), so agents arrive oriented.
4
4
  *
5
- * It carries the same content the retired `llm` tool front-loaded: the
6
- * conventions + the discovery sequence. To guarantee it never diverges from the
7
- * `capabilities` tool, the WHOLE orientation — the opening line included —
8
- * derives from the SAME source: `CONVENTIONS` and
9
- * `buildDiscoverySequence` in `capabilities/capabilities/catalog.ts`. Live
10
- * numbers (tier/channel/entity counts) are deliberately DROPPED (they would need
11
- * a store boot at handshake); agents fetch those via `info`/`config show`/
12
- * `sources status`. Kept short (a hard length ceiling is asserted in the test),
13
- * since it counts against every session's context.
5
+ * A client may defer tools: the agent then sees only tool NAMES and this text
6
+ * until it searches for a tool by name, so a description it never loads cannot
7
+ * steer it. The instructions therefore carry a generated "question → tool"
8
+ * index, built from the SAME `useWhen` each verb declares for its description:
9
+ *
10
+ * - the distribution's conventions, handed over as data (`mcpOrientation` —
11
+ * they name its tiers and nouns, so the kernel writes none of them);
12
+ * - one line per read tool that is not part of a noun's list/lookup/sample
13
+ * trio, `tool — useWhen`;
14
+ * - the trio explained ONCE, with the nouns that have each verb enumerated;
15
+ * - the writes on one shared, plan-first line.
16
+ *
17
+ * Everything listed is derived from the registry: a new verb adds itself. Live
18
+ * numbers (tier/channel/entity counts) are deliberately absent — they would
19
+ * need a store boot at handshake.
20
+ */
21
+ import { emitSurface, toolName } from "../../spec/index.js";
22
+ /**
23
+ * HARD ceiling on the instructions length, unlike the catalogue budget: clients
24
+ * cap server instructions at about 2 KB and cut the rest, so text past this is
25
+ * text no agent reads. Fit by tightening sentences, never by raising it.
14
26
  */
15
- import { buildDiscoverySequence, CONVENTIONS, } from "../../../capabilities/capabilities/catalog.js";
16
- import { emitSurface } from "../../spec/index.js";
17
- /** Hard ceiling on the instructions length (asserted by the protected test). */
18
- export const INSTRUCTIONS_MAX_CHARS = 1500;
27
+ export const INSTRUCTIONS_MAX_CHARS = 2000;
28
+ /** The verbs every read story compiles to; explained once rather than per noun. */
29
+ const TRIO = ["list", "lookup", "sample"];
30
+ /** How most `useWhen` clauses open; the index says it once. */
31
+ const ASKED = /^when asked /;
32
+ /** Which of the trio a verb is, or nothing for a verb that stands alone. */
33
+ function trioVerbOf(verb) {
34
+ return TRIO.find((name) => verb.path[1] === name);
35
+ }
19
36
  /**
20
37
  * Build the handshake orientation string from the live capability modules.
21
38
  *
22
- * @param modules - The capability modules (for the live discovery-sample list).
23
- * @returns A short, single-source orientation string (≤ {@link INSTRUCTIONS_MAX_CHARS}).
39
+ * The registry is not fixed — a project's packs add verbs at runtime — so the
40
+ * text is FITTED, not merely measured: everything that is one line whatever the
41
+ * registry holds comes first, the index comes last, and index lines are dropped
42
+ * from the end until the whole fits, the last line saying how many were dropped
43
+ * and where the full list is. A client would otherwise cut the tail silently.
44
+ *
45
+ * @param modules - The capability modules; the one declaring `mcpOrientation`
46
+ * supplies the conventions, the registry everything else.
47
+ * @param onTruncate - Told how many index lines did not fit, when any did not.
48
+ * @returns The orientation (≤ {@link INSTRUCTIONS_MAX_CHARS}); empty when no
49
+ * module declares one.
24
50
  */
25
- export function buildInstructions(modules) {
26
- // Tools AND resource templates come from the one emitted surface: the
27
- // `<scheme>:{+uri}` template is declared by the module that serves it and
28
- // frozen in the covenant, so quoting it here rather than deriving it would be
29
- // a second copy of a string the kernel does not own.
30
- const { tools, resources } = emitSurface(modules).mcpSurface;
31
- const steps = buildDiscoverySequence(tools)
32
- .map((stage) => `${stage.stage}. ${stage.tool} — ${stage.purpose}`)
33
- .join("\n");
34
- const templates = resources.map((template) => `\`${template}\``).join(", ");
35
- return [
36
- `${CONVENTIONS.system} ${CONVENTIONS.model} ${CONVENTIONS.querying} ${CONVENTIONS.mutations}`,
51
+ export function buildInstructions(modules, onTruncate) {
52
+ const orientation = modules.find((module) => module.mcpOrientation)?.mcpOrientation;
53
+ if (!orientation)
54
+ return "";
55
+ const tools = modules
56
+ .flatMap((module) => module.verbs)
57
+ .filter((verb) => !verb.hidden && verb.capability.mcp.expose);
58
+ const reads = tools.filter((verb) => !verb.capability.mutates);
59
+ // The trio, once: every noun that has any of the three, marked for what it
60
+ // has beyond `list` — a noun is never promised a verb it lacks.
61
+ const has = (noun, name) => reads.some((verb) => verb.path[0] === noun && trioVerbOf(verb) === name);
62
+ const nouns = [
63
+ ...new Set(reads.filter(trioVerbOf).map((verb) => verb.path[0])),
64
+ ].map((noun) => `${noun}${has(noun, "lookup") ? "" : "†"}${has(noun, "sample") ? "*" : ""}`);
65
+ const writes = tools
66
+ .filter((verb) => verb.capability.mutates)
67
+ .map((verb) => toolName(verb.path))
68
+ .join(", ");
69
+ // The resource templates come from the emitted surface: the scheme is
70
+ // declared by the module that serves it and frozen in the covenant.
71
+ const templates = emitSurface(modules)
72
+ .mcpSurface.resources.map((template) => `\`${template}\``)
73
+ .join(", ");
74
+ const fixed = [
75
+ orientation.conventions.join(" "),
37
76
  "",
38
- "Discovery sequence:",
39
- steps,
77
+ `Per noun, <noun>_list finds entries and <noun>_lookup reads them by name († has no lookup); * also has <noun>_sample, which shows real data shapes: ${nouns.join(", ")}.`,
78
+ `Writes are plan-first — the first call returns a plan; repeat it with confirm: true to apply: ${writes}.`,
79
+ `Entity detail: read ${templates} resources.`,
40
80
  "",
41
- `Call the \`capabilities\` tool for the full annotated tool catalog; read ${templates} resources (or \`graph_inspect\`) for entity detail.`,
42
- ].join("\n");
81
+ ];
82
+ // The index. Verbs that read the store come first — they are the ones that
83
+ // answer questions about the data — so what an overflow drops is the
84
+ // administrative tail. A verb declaring no `useWhen` has no line to give.
85
+ const standalone = reads
86
+ .filter((verb) => !trioVerbOf(verb) && verb.useWhen)
87
+ .sort((a, b) => Number(b.capability.needsStore) - Number(a.capability.needsStore));
88
+ // Most clauses open "when asked …"; saying that once, as a heading, is what
89
+ // lets every question fit under the ceiling.
90
+ const lineFor = (verb) => `${toolName(verb.path)} — ${verb.useWhen?.replace(ASKED, "")}`;
91
+ const group = (heading, verbs) => verbs.length > 0 ? [heading, ...verbs.map(lineFor)] : [];
92
+ const index = [
93
+ ...group("When asked:", standalone.filter((verb) => ASKED.test(verb.useWhen ?? ""))),
94
+ ...group("Also:", standalone.filter((verb) => !ASKED.test(verb.useWhen ?? ""))),
95
+ ];
96
+ // Where the full list lives: the distribution's own orientation tool.
97
+ const catalogue = tools.find((verb) => verb.category === "orientation");
98
+ const render = (kept) => {
99
+ const dropped = index.length - kept;
100
+ const more = dropped === 0
101
+ ? []
102
+ : [
103
+ `… and ${dropped} more${catalogue ? `: call ${toolName(catalogue.path)}` : ""}.`,
104
+ ];
105
+ return [...fixed, ...index.slice(0, kept), ...more].join("\n");
106
+ };
107
+ let kept = index.length;
108
+ while (kept > 0 && render(kept).length > INSTRUCTIONS_MAX_CHARS)
109
+ kept--;
110
+ if (kept < index.length)
111
+ onTruncate?.(index.length - kept);
112
+ return render(kept);
43
113
  }
44
114
  //# sourceMappingURL=instructions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../../../../src/kernel/project/mcp/instructions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACL,sBAAsB,EACtB,WAAW,GACZ,MAAM,+CAA+C,CAAC;AAEvD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,gFAAgF;AAChF,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAoC;IAEpC,sEAAsE;IACtE,0EAA0E;IAC1E,8EAA8E;IAC9E,qDAAqD;IACrD,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC;IAC7D,MAAM,KAAK,GAAG,sBAAsB,CAAC,KAAK,CAAC;SACxC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;SAClE,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE5E,OAAO;QACL,GAAG,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC,QAAQ,IAAI,WAAW,CAAC,SAAS,EAAE;QAC7F,EAAE;QACF,qBAAqB;QACrB,KAAK;QACL,EAAE;QACF,4EAA4E,SAAS,sDAAsD;KAC5I,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../../../../src/kernel/project/mcp/instructions.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,9 @@ import { runPreview, runTask } from "@canonical/task/node";
18
18
  import { z } from "zod";
19
19
  import { asPragmaError } from "../../error/fromTaskError.js";
20
20
  import { PragmaError } from "../../error/index.js";
21
+ import { describeTool } from "../../spec/guidance.js";
21
22
  import { toolName } from "../../spec/index.js";
23
+ import { wireType } from "../../spec/wireType.js";
22
24
  import { toolError, toolSuccess } from "./envelope.js";
23
25
  /**
24
26
  * Resolve the effective per-call write root for a mutating tool call.
@@ -52,9 +54,9 @@ function resolveEffectiveCwd(rawCwd, fallback) {
52
54
  }
53
55
  return rawCwd;
54
56
  }
55
- /** The base zod type for a param, before `.describe()`/`.optional()`. */
56
- function zodForParam(param) {
57
- switch (param.kind) {
57
+ /** The zod type of ONE value of a param. */
58
+ function zodForItem(item) {
59
+ switch (item.kind) {
58
60
  case "string":
59
61
  return z.string();
60
62
  case "number":
@@ -62,11 +64,26 @@ function zodForParam(param) {
62
64
  case "boolean":
63
65
  return z.boolean();
64
66
  case "enum":
65
- return z.enum(param.values);
66
- case "string[]":
67
- return z.array(z.string());
67
+ return z.enum(item.values);
68
68
  }
69
69
  }
70
+ /**
71
+ * The base zod type for a param, before `.describe()`/`.optional()`, built
72
+ * from the param's {@link wireType} — the statement the reference prints too.
73
+ *
74
+ * A list is ADVERTISED as a plain array and a bare value is COERCED into one
75
+ * before validation. A preprocess rather than a `string | string[]` union on
76
+ * purpose: the emitted JSON Schema stays `type: "array"`, where a union emits
77
+ * `anyOf`, which the weaker models that most need this read badly. The run
78
+ * bodies already take one value or many, so nothing downstream changes.
79
+ */
80
+ function zodForParam(param) {
81
+ const wire = wireType(param);
82
+ const item = zodForItem(wire.item);
83
+ if (!wire.list)
84
+ return item;
85
+ return z.preprocess((value) => (typeof value === "string" ? [value] : value), z.array(item));
86
+ }
70
87
  /**
71
88
  * Build the zod input shape for a verb's params.
72
89
  *
@@ -139,10 +156,11 @@ function withDetail(verb, runtime, args) {
139
156
  * `{"ok":true,"data":[],"meta":{}}` — and, later, could not tell an unambiguous
140
157
  * lookup hit from one of three blocks sharing a name. Riding in `meta` keeps
141
158
  * `data` its uniform shape while making both of those ≠ silence, and the CLI's
142
- * `--format json` carries the same key so the two surfaces stay byte-equal.
159
+ * `--format json` carries the same key. The sentence is the ONE place the two
160
+ * envelopes may differ: a next step inside it is spelled for its surface.
143
161
  */
144
162
  function noticeMeta(verb, data) {
145
- const notice = verb.output.formatters.notice?.(data);
163
+ const notice = verb.output.formatters.notice?.(data, "mcp");
146
164
  // The seam's machine half, merged here so an agent gets the tier scope as
147
165
  // DATA (`meta.scope`) and not only as the sentence `notice` carries. The CLI
148
166
  // merges the same seam into the same keys (`cli/dispatch.ts#renderData`).
@@ -153,11 +171,20 @@ function noticeMeta(verb, data) {
153
171
  function readHandler(verb, runtime) {
154
172
  return async (args) => {
155
173
  try {
156
- if (verb.capability.needsStore)
157
- await runtime.store.get();
174
+ const session = verb.capability.needsStore
175
+ ? await runtime.store.get()
176
+ : undefined;
158
177
  const params = paramsFromArgs(verb, args);
159
178
  const result = await Promise.resolve(verb.run(params, withDetail(verb, runtime, args)));
160
- return toolSuccess(JSON.parse(verb.output.formatters.json(result)), noticeMeta(verb, result));
179
+ return toolSuccess(JSON.parse(verb.output.formatters.json(result)), {
180
+ // The store fact this read was answered under, from the session that
181
+ // answered it: a pack this project built that the boot passed over
182
+ // because an older CLI built it. The CLI's `--format json` merges the
183
+ // same key from the same place (`cli/dispatch.ts#storeMeta`), so the
184
+ // two machine surfaces carry the same fact under the same key.
185
+ ...(session?.ignoredPack ? { ignoredPack: session.ignoredPack } : {}),
186
+ ...noticeMeta(verb, result),
187
+ });
161
188
  }
162
189
  catch (error) {
163
190
  return toolError(asPragmaError(error));
@@ -269,14 +296,11 @@ function mutateHandler(verb, runtime) {
269
296
  };
270
297
  }
271
298
  /**
272
- * Register one exposed verb as an MCP tool on the server.
273
- *
274
- * @param server - The MCP server to register onto.
275
- * @param verb - The verb to expose (caller ensures `mcp.expose === true`).
276
- * @param runtime - The runtime handed to the verb's `run`.
277
- * @note Impure — mutates the server's tool registry.
299
+ * The whole input shape a verb's tool accepts: its declared params plus the
300
+ * arguments the projector injects. Exported so the call rule validates every
301
+ * example and recovery against the schema an agent's call actually meets.
278
302
  */
279
- export function registerVerb(server, verb, runtime) {
303
+ export function buildToolShape(verb) {
280
304
  const shape = buildZodSchema(verb.params);
281
305
  // A verb with progressive disclosure gains a `detail` enum param derived from
282
306
  // its DisclosureSpec (Risk2 — NO new VerbSpec field). The handler seeds
@@ -301,12 +325,24 @@ export function registerVerb(server, verb, runtime) {
301
325
  .optional()
302
326
  .describe("Absolute project directory to write into; defaults to the server's working directory.");
303
327
  }
328
+ return shape;
329
+ }
330
+ /**
331
+ * Register one exposed verb as an MCP tool on the server.
332
+ *
333
+ * @param server - The MCP server to register onto.
334
+ * @param verb - The verb to expose (caller ensures `mcp.expose === true`).
335
+ * @param runtime - The runtime handed to the verb's `run`.
336
+ * @note Impure — mutates the server's tool registry.
337
+ */
338
+ export function registerVerb(server, verb, runtime) {
339
+ const shape = buildToolShape(verb);
304
340
  const config = {
305
- // The agent-facing tool description is the verb's richer `doc` when present
306
- // (pack `toolDescription`s compile into it; hand-written verbs author it
307
- // directly), falling back to the one-line `summary`. Tool descriptions are
308
- // NOT part of the frozen surface, so this stays covenant-safe.
309
- description: verb.doc ?? verb.summary,
341
+ // Generated, never typed: the question the verb answers, its richer `doc`
342
+ // (pack `toolDescription`s compile into it) or one-line `summary`, and one
343
+ // example call. Tool descriptions are NOT part of the frozen surface, so
344
+ // this stays covenant-safe.
345
+ description: describeTool(verb),
310
346
  annotations: annotationsFor(verb),
311
347
  };
312
348
  if (Object.keys(shape).length > 0)
@@ -1 +1 @@
1
- {"version":3,"file":"registerVerb.js","sourceRoot":"","sources":["../../../../../src/kernel/project/mcp/registerVerb.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registerVerb.js","sourceRoot":"","sources":["../../../../../src/kernel/project/mcp/registerVerb.ts"],"names":[],"mappings":"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"}
@@ -152,9 +152,9 @@ function renderHeaderRow(columns, style) {
152
152
  *
153
153
  * The SCOPE is in the heading for the same reason, and it is the more serious
154
154
  * of the two omissions: a truncated page at least ends where it ends, while a
155
- * scoped read looks exactly like a complete one. `## Block (175, tier scope:
156
- * global, apps, documentation, sites, stores)` says which part of the design
157
- * system the 175 are, in the words `--tier` accepts.
155
+ * scoped read looks exactly like a complete one. `## Block (176, tier scope:
156
+ * global 121, apps 39, …)` says which part of the design system the 176 are,
157
+ * in the words `--tier` accepts. The caller composes that text.
158
158
  *
159
159
  * @param items - The rows on this page.
160
160
  * @param options - Columns and empty-state copy.
@@ -105,6 +105,13 @@ function truncationNote(predicate, term) {
105
105
  const total = term.length.toLocaleString("en-US");
106
106
  return ` # ${predicate} — ${total} chars, showing ${term.value.length}`;
107
107
  }
108
+ /** `# ds:hasTokenBinding — 24 objects, showing 10` — a cut group, stated as one. */
109
+ function cutNote(group) {
110
+ if (!group.truncated || group.count === undefined)
111
+ return undefined;
112
+ const total = group.count.toLocaleString("en-US");
113
+ return ` # ${renderTerm(group.predicate)} — ${total} objects, showing ${group.objects.length}`;
114
+ }
108
115
  /** Render one inlined blank node as a Turtle `[ … ]` record. */
109
116
  function renderNested(record) {
110
117
  const fields = Object.entries(record).map(([field, value]) => {
@@ -162,6 +169,8 @@ export function toTurtle(result, prefixes) {
162
169
  // Blank objects are written as their inlined records instead, so they are
163
170
  // skipped here — emitting both would assert the same edge twice.
164
171
  const objects = group.objects.filter((o) => o.termType !== "BlankNode");
172
+ // A group of blank objects is written further down, as its records — and
173
+ // says there that it was cut.
165
174
  if (objects.length === 0)
166
175
  continue;
167
176
  const keyword = predicate === "rdf:type" ? "a" : predicate;
@@ -169,14 +178,22 @@ export function toTurtle(result, prefixes) {
169
178
  // join appends always lands on the statement line. Pushed as siblings they
170
179
  // would each take a separator of their own — into a comment, which runs to
171
180
  // end of line and eats it.
172
- const notes = objects
173
- .map((o) => truncationNote(keyword, o))
174
- .filter((n) => n !== undefined);
181
+ const notes = [
182
+ cutNote(group),
183
+ ...objects.map((o) => truncationNote(keyword, o)),
184
+ ].filter((n) => n !== undefined);
175
185
  const rendered = objects.map(renderTerm).join(", ");
176
186
  predicates.push([...notes, ` ${keyword} ${rendered}`].join("\n"));
177
187
  }
178
188
  for (const [via, records] of Object.entries(result.nested)) {
179
- predicates.push(` ${via}\n ${records.map(renderNested).join(",\n ")}`);
189
+ const group = result.groups.find((g) => (g.predicate.prefixed ?? g.predicate.value) === via);
190
+ const hasNamed = group?.objects.some((o) => o.termType !== "BlankNode");
191
+ // Said once per predicate: a group with named objects too said it above.
192
+ const note = group && !hasNamed ? cutNote(group) : undefined;
193
+ predicates.push([
194
+ ...(note ? [note] : []),
195
+ ` ${via}\n ${records.map(renderNested).join(",\n ")}`,
196
+ ].join("\n"));
180
197
  }
181
198
  if (predicates.length > 0) {
182
199
  body.push(`${subject}\n${predicates.join(" ;\n")} .`);
@@ -1 +1 @@
1
- {"version":3,"file":"turtle.js","sourceRoot":"","sources":["../../../../src/kernel/render/turtle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"turtle.js","sourceRoot":"","sources":["../../../../src/kernel/render/turtle.ts"],"names":[],"mappings":"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"}