@canonical/pragma-cli 0.35.0 → 0.37.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 (295) hide show
  1. package/README.md +2 -2
  2. package/bundled-skills/add-standard/SKILL.md +338 -0
  3. package/bundled-skills/adoption-a1-styles/SKILL.md +269 -0
  4. package/bundled-skills/adoption-a2-components/SKILL.md +291 -0
  5. package/bundled-skills/adoption-a3-forms/SKILL.md +260 -0
  6. package/bundled-skills/anatomy-author/ANATOMY_DSL_SPEC.md +406 -0
  7. package/bundled-skills/anatomy-author/SKILL.md +1226 -0
  8. package/bundled-skills/design-auditor/SKILL.md +455 -0
  9. package/bundled-skills/implement-component/SKILL.md +333 -0
  10. package/bundled-skills/specify-component/SKILL.md +331 -0
  11. package/bundled-skills/specify-pattern/SKILL.md +292 -0
  12. package/dist/package.json +24 -20
  13. package/dist/pragma.conf.js +266 -34
  14. package/dist/pragma.conf.js.map +1 -1
  15. package/dist/src/bin.js +1 -1
  16. package/dist/src/bin.js.map +1 -1
  17. package/dist/src/capabilities/capabilities/hints.js +1 -1
  18. package/dist/src/capabilities/capabilities/hints.js.map +1 -1
  19. package/dist/src/capabilities/colophon/colophon.render.js +1 -1
  20. package/dist/src/capabilities/colophon/colophon.render.js.map +1 -1
  21. package/dist/src/capabilities/create/create.verb.js +2 -1
  22. package/dist/src/capabilities/create/create.verb.js.map +1 -1
  23. package/dist/src/capabilities/create/createSurface.generated.js +23 -1
  24. package/dist/src/capabilities/create/createSurface.generated.js.map +1 -1
  25. package/dist/src/capabilities/create/mount.js +4 -3
  26. package/dist/src/capabilities/create/mount.js.map +1 -1
  27. package/dist/src/capabilities/doctor/checks/checkNodeVersion.js +11 -6
  28. package/dist/src/capabilities/doctor/checks/checkNodeVersion.js.map +1 -1
  29. package/dist/src/capabilities/doctor/checks/checkPackageRefs.js +60 -4
  30. package/dist/src/capabilities/doctor/checks/checkPackageRefs.js.map +1 -1
  31. package/dist/src/capabilities/doctor/checks/checkShellCompletions.js +8 -8
  32. package/dist/src/capabilities/doctor/checks/checkShellCompletions.js.map +1 -1
  33. package/dist/src/capabilities/doctor/checks/harnessInventory.js +195 -0
  34. package/dist/src/capabilities/doctor/checks/harnessInventory.js.map +1 -0
  35. package/dist/src/capabilities/doctor/checks/index.js +6 -6
  36. package/dist/src/capabilities/doctor/checks/isSupportedNodeVersion.js +38 -0
  37. package/dist/src/capabilities/doctor/checks/isSupportedNodeVersion.js.map +1 -0
  38. package/dist/src/capabilities/doctor/checks/targetHealth.js +194 -50
  39. package/dist/src/capabilities/doctor/checks/targetHealth.js.map +1 -1
  40. package/dist/src/capabilities/doctor/doctor.render.js +43 -64
  41. package/dist/src/capabilities/doctor/doctor.render.js.map +1 -1
  42. package/dist/src/capabilities/doctor/doctor.verb.js +6 -2
  43. package/dist/src/capabilities/doctor/doctor.verb.js.map +1 -1
  44. package/dist/src/capabilities/doctor/runChecks.js +14 -11
  45. package/dist/src/capabilities/doctor/runChecks.js.map +1 -1
  46. package/dist/src/capabilities/graph/query.render.js +2 -2
  47. package/dist/src/capabilities/graph/query.render.js.map +1 -1
  48. package/dist/src/capabilities/info/collectInfo.js +8 -2
  49. package/dist/src/capabilities/info/collectInfo.js.map +1 -1
  50. package/dist/src/capabilities/info/info.render.js +6 -2
  51. package/dist/src/capabilities/info/info.render.js.map +1 -1
  52. package/dist/src/capabilities/prompt/prompt.render.js +2 -2
  53. package/dist/src/capabilities/prompt/prompt.render.js.map +1 -1
  54. package/dist/src/capabilities/setup/buildPlan.js +43 -39
  55. package/dist/src/capabilities/setup/buildPlan.js.map +1 -1
  56. package/dist/src/capabilities/setup/mode.js +2 -2
  57. package/dist/src/capabilities/setup/operations/index.js +4 -4
  58. package/dist/src/capabilities/setup/operations/index.js.map +1 -1
  59. package/dist/src/capabilities/setup/operations/setupCompletions.js +6 -2
  60. package/dist/src/capabilities/setup/operations/setupCompletions.js.map +1 -1
  61. package/dist/src/capabilities/setup/operations/setupConfig.js +4 -2
  62. package/dist/src/capabilities/setup/operations/setupConfig.js.map +1 -1
  63. package/dist/src/capabilities/setup/operations/setupGenerator.js +156 -58
  64. package/dist/src/capabilities/setup/operations/setupGenerator.js.map +1 -1
  65. package/dist/src/capabilities/setup/operations/setupLsp.js +136 -38
  66. package/dist/src/capabilities/setup/operations/setupLsp.js.map +1 -1
  67. package/dist/src/capabilities/setup/operations/setupMcp.js +101 -52
  68. package/dist/src/capabilities/setup/operations/setupMcp.js.map +1 -1
  69. package/dist/src/capabilities/setup/operations/setupSkills.js +329 -49
  70. package/dist/src/capabilities/setup/operations/setupSkills.js.map +1 -1
  71. package/dist/src/capabilities/setup/plan.js.map +1 -1
  72. package/dist/src/capabilities/setup/plan.render.js +144 -66
  73. package/dist/src/capabilities/setup/plan.render.js.map +1 -1
  74. package/dist/src/capabilities/setup/setup.render.js +1 -1
  75. package/dist/src/capabilities/setup/setup.verb.js +165 -63
  76. package/dist/src/capabilities/setup/setup.verb.js.map +1 -1
  77. package/dist/src/capabilities/setup/targets.js +122 -51
  78. package/dist/src/capabilities/setup/targets.js.map +1 -1
  79. package/dist/src/capabilities/shared/index.js +7 -6
  80. package/dist/src/capabilities/shared/index.js.map +1 -1
  81. package/dist/src/capabilities/shared/packageManager.js +300 -54
  82. package/dist/src/capabilities/shared/packageManager.js.map +1 -1
  83. package/dist/src/capabilities/skill/discover.js +97 -11
  84. package/dist/src/capabilities/skill/discover.js.map +1 -1
  85. package/dist/src/capabilities/skill/render.js +2 -2
  86. package/dist/src/capabilities/skill/render.js.map +1 -1
  87. package/dist/src/capabilities/sources/installSkills.js +145 -3
  88. package/dist/src/capabilities/sources/installSkills.js.map +1 -1
  89. package/dist/src/capabilities/sources/runUpdate.js +68 -2
  90. package/dist/src/capabilities/sources/runUpdate.js.map +1 -1
  91. package/dist/src/capabilities/sources/update.verb.js +3 -3
  92. package/dist/src/capabilities/sources/update.verb.js.map +1 -1
  93. package/dist/src/capabilities/upgrade/runUpgrade.js +43 -7
  94. package/dist/src/capabilities/upgrade/runUpgrade.js.map +1 -1
  95. package/dist/src/capabilities/upgrade/upgrade.render.js +10 -2
  96. package/dist/src/capabilities/upgrade/upgrade.render.js.map +1 -1
  97. package/dist/src/constants.js +13 -2
  98. package/dist/src/constants.js.map +1 -1
  99. package/dist/src/kernel/index.js +11 -2
  100. package/dist/src/kernel/index.js.map +1 -1
  101. package/dist/src/kernel/interactivity.js +68 -0
  102. package/dist/src/kernel/interactivity.js.map +1 -0
  103. package/dist/src/kernel/packs/renderPack.js +3 -3
  104. package/dist/src/kernel/packs/renderPack.js.map +1 -1
  105. package/dist/src/kernel/packs/resolveEntity.js +63 -12
  106. package/dist/src/kernel/packs/resolveEntity.js.map +1 -1
  107. package/dist/src/kernel/packs/runBodies.js +57 -4
  108. package/dist/src/kernel/packs/runBodies.js.map +1 -1
  109. package/dist/src/kernel/packs/schema.js +54 -2
  110. package/dist/src/kernel/packs/schema.js.map +1 -1
  111. package/dist/src/kernel/packs/sparql/applyFilters.js +104 -5
  112. package/dist/src/kernel/packs/sparql/applyFilters.js.map +1 -1
  113. package/dist/src/kernel/packs/sparql/buildLookupQuery.js +310 -43
  114. package/dist/src/kernel/packs/sparql/buildLookupQuery.js.map +1 -1
  115. package/dist/src/kernel/packs/types.js.map +1 -1
  116. package/dist/src/kernel/project/cli/buildProgram.js +1 -1
  117. package/dist/src/kernel/project/cli/buildProgram.js.map +1 -1
  118. package/dist/src/kernel/project/cli/dispatch.js +46 -24
  119. package/dist/src/kernel/project/cli/dispatch.js.map +1 -1
  120. package/dist/src/kernel/project/cli/globalFlags.js +4 -1
  121. package/dist/src/kernel/project/cli/globalFlags.js.map +1 -1
  122. package/dist/src/kernel/project/cli/helpFormat.js +1 -2
  123. package/dist/src/kernel/project/cli/helpFormat.js.map +1 -1
  124. package/dist/src/kernel/project/cli/rootHelp.js +42 -9
  125. package/dist/src/kernel/project/cli/rootHelp.js.map +1 -1
  126. package/dist/src/kernel/project/mcp/registerVerb.js +16 -1
  127. package/dist/src/kernel/project/mcp/registerVerb.js.map +1 -1
  128. package/dist/src/kernel/render/renderers.js +1 -1
  129. package/dist/src/kernel/render/style.js +29 -9
  130. package/dist/src/kernel/render/style.js.map +1 -1
  131. package/dist/src/kernel/render/vocabulary.js +174 -0
  132. package/dist/src/kernel/render/vocabulary.js.map +1 -0
  133. package/dist/src/kernel/runtime/graphpack/embedded/pack.generated.js +2 -3
  134. package/dist/src/kernel/runtime/graphpack/embedded/pack.generated.js.map +1 -1
  135. package/dist/src/kernel/runtime/graphpack/embedded/pack.index.generated.js +1 -1
  136. package/dist/src/kernel/runtime/graphpack/embedded/pack.index.generated.js.map +1 -1
  137. package/dist/src/kernel/runtime/graphpack/embedded/pack.manifest.generated.js +4 -0
  138. package/dist/src/kernel/runtime/graphpack/embedded/pack.manifest.generated.js.map +1 -0
  139. package/dist/src/kernel/runtime/graphpack/embedded.js +13 -6
  140. package/dist/src/kernel/runtime/graphpack/embedded.js.map +1 -1
  141. package/dist/src/kernel/runtime/graphpack/read.js +14 -9
  142. package/dist/src/kernel/runtime/graphpack/read.js.map +1 -1
  143. package/dist/src/kernel/runtime/loadSession.js +3 -1
  144. package/dist/src/kernel/runtime/loadSession.js.map +1 -1
  145. package/dist/src/kernel/runtime/probe.js +1 -1
  146. package/dist/src/kernel/runtime/probe.js.map +1 -1
  147. package/dist/src/kernel/runtime/refs/parseRef.js +17 -1
  148. package/dist/src/kernel/runtime/refs/parseRef.js.map +1 -1
  149. package/dist/src/kernel/runtime/refs/resolve.js +9 -3
  150. package/dist/src/kernel/runtime/refs/resolve.js.map +1 -1
  151. package/dist/src/kernel/spec/emitReference.js +1 -1
  152. package/dist/src/kernel/spec/emitReference.js.map +1 -1
  153. package/package.json +24 -20
  154. package/pragma.conf.ts +272 -34
  155. package/src/bin.ts +8 -1
  156. package/src/capabilities/block.parity.test.ts +25 -11
  157. package/src/capabilities/block.shipped.exec.test.ts +282 -0
  158. package/src/capabilities/block.tierRank.exec.test.ts +300 -0
  159. package/src/capabilities/capabilities/hints.ts +1 -1
  160. package/src/capabilities/colophon/colophon.render.ts +1 -2
  161. package/src/capabilities/colophon/colophon.test.ts +2 -2
  162. package/src/capabilities/config/collectConfigShow.test.ts +1 -0
  163. package/src/capabilities/create/byteEquality.test.ts +28 -1
  164. package/src/capabilities/create/create.test.ts +1 -0
  165. package/src/capabilities/create/create.verb.ts +2 -1
  166. package/src/capabilities/create/createGrammar.test.ts +5 -2
  167. package/src/capabilities/create/createSurface.generated.ts +23 -1
  168. package/src/capabilities/create/crossCli.subprocess.test.ts +10 -3
  169. package/src/capabilities/create/mount.ts +3 -3
  170. package/src/capabilities/distribution.parity.test.ts +4 -0
  171. package/src/capabilities/doctor/checks/checkNodeVersion.test.ts +49 -0
  172. package/src/capabilities/doctor/checks/checkNodeVersion.ts +11 -7
  173. package/src/capabilities/doctor/checks/checkPackageRefs.ts +69 -4
  174. package/src/capabilities/doctor/checks/checkShellCompletions.test.ts +6 -4
  175. package/src/capabilities/doctor/checks/checkShellCompletions.ts +8 -8
  176. package/src/capabilities/doctor/checks/harnessInventory.test.ts +219 -0
  177. package/src/capabilities/doctor/checks/harnessInventory.ts +298 -0
  178. package/src/capabilities/doctor/checks/index.ts +6 -6
  179. package/src/capabilities/doctor/checks/isSupportedNodeVersion.test.ts +111 -0
  180. package/src/capabilities/doctor/checks/isSupportedNodeVersion.ts +34 -0
  181. package/src/capabilities/doctor/checks/mcpCommand.test.ts +7 -1
  182. package/src/capabilities/doctor/checks/targetHealth.ts +229 -59
  183. package/src/capabilities/doctor/doctor.render.test.ts +108 -32
  184. package/src/capabilities/doctor/doctor.render.ts +56 -80
  185. package/src/capabilities/doctor/doctor.test.ts +247 -35
  186. package/src/capabilities/doctor/doctor.verb.ts +7 -2
  187. package/src/capabilities/doctor/runChecks.ts +14 -11
  188. package/src/capabilities/doctor/types.ts +15 -24
  189. package/src/capabilities/emptyRecovery.test.ts +10 -2
  190. package/src/capabilities/graph/query.render.ts +2 -2
  191. package/src/capabilities/info/collectInfo.ts +8 -1
  192. package/src/capabilities/info/info.render.ts +6 -2
  193. package/src/capabilities/info/info.test.ts +37 -1
  194. package/src/capabilities/info/types.ts +10 -2
  195. package/src/capabilities/lazy.test.ts +26 -2
  196. package/src/capabilities/listLookup.shipped.exec.test.ts +340 -0
  197. package/src/capabilities/prompt/prompt.render.ts +2 -2
  198. package/src/capabilities/renderVocabularySync.test.ts +82 -0
  199. package/src/capabilities/resources/resources.test.ts +38 -2
  200. package/src/capabilities/scopeTypeSync.test.ts +29 -15
  201. package/src/capabilities/setup/buildPlan.ts +45 -41
  202. package/src/capabilities/setup/index.ts +1 -1
  203. package/src/capabilities/setup/mode.ts +2 -2
  204. package/src/capabilities/setup/operations/index.ts +6 -1
  205. package/src/capabilities/setup/operations/setupCompletions.ts +9 -2
  206. package/src/capabilities/setup/operations/setupConfig.ts +7 -2
  207. package/src/capabilities/setup/operations/setupGenerator.ts +227 -84
  208. package/src/capabilities/setup/operations/setupLsp.ts +203 -38
  209. package/src/capabilities/setup/operations/setupMcp.ts +139 -62
  210. package/src/capabilities/setup/operations/setupSkills.ts +399 -60
  211. package/src/capabilities/setup/plan.render.ts +171 -76
  212. package/src/capabilities/setup/plan.ts +17 -12
  213. package/src/capabilities/setup/setup.mcp.correctness.test.ts +9 -9
  214. package/src/capabilities/setup/setup.render.test.ts +50 -36
  215. package/src/capabilities/setup/setup.render.ts +1 -1
  216. package/src/capabilities/setup/setup.test.ts +1126 -50
  217. package/src/capabilities/setup/setup.verb.ts +174 -68
  218. package/src/capabilities/setup/targets.ts +138 -60
  219. package/src/capabilities/setup/types.ts +10 -18
  220. package/src/capabilities/shared/index.ts +18 -6
  221. package/src/capabilities/shared/packageManager.test.ts +421 -6
  222. package/src/capabilities/shared/packageManager.ts +394 -59
  223. package/src/capabilities/skill/bundledSkills.test.ts +347 -0
  224. package/src/capabilities/skill/discover.ts +100 -11
  225. package/src/capabilities/skill/render.ts +2 -2
  226. package/src/capabilities/skill/skill.test.ts +17 -4
  227. package/src/capabilities/sources/installSkills.ts +181 -3
  228. package/src/capabilities/sources/runUpdate.ts +78 -2
  229. package/src/capabilities/sources/sources.test.ts +228 -0
  230. package/src/capabilities/sources/update.verb.ts +3 -3
  231. package/src/capabilities/surface.test.ts +14 -6
  232. package/src/capabilities/upgrade/runUpgrade.ts +45 -6
  233. package/src/capabilities/upgrade/types.ts +10 -2
  234. package/src/capabilities/upgrade/upgrade.render.ts +9 -2
  235. package/src/capabilities/upgrade/upgrade.test.ts +72 -0
  236. package/src/constants.ts +14 -1
  237. package/src/identity.test.ts +18 -5
  238. package/src/kernel/completion/entitySource.test.ts +15 -2
  239. package/src/kernel/completion/safety.test.ts +16 -9
  240. package/src/kernel/config/defaults.test.ts +19 -3
  241. package/src/kernel/config/readConfig.test.ts +1 -1
  242. package/src/kernel/index.ts +11 -2
  243. package/src/kernel/interactivity.test.ts +76 -0
  244. package/src/kernel/interactivity.ts +69 -0
  245. package/src/kernel/packs/compile.test.ts +92 -0
  246. package/src/kernel/packs/renderPack.ts +3 -3
  247. package/src/kernel/packs/resolveEntity.test.ts +75 -14
  248. package/src/kernel/packs/resolveEntity.ts +88 -24
  249. package/src/kernel/packs/runBodies.ts +84 -19
  250. package/src/kernel/packs/schema.ts +60 -4
  251. package/src/kernel/packs/sparql/applyFilters.ts +125 -4
  252. package/src/kernel/packs/sparql/buildLookupQuery.test.ts +290 -0
  253. package/src/kernel/packs/sparql/buildLookupQuery.ts +327 -45
  254. package/src/kernel/packs/toolDescription.test.ts +35 -1
  255. package/src/kernel/packs/types.ts +125 -2
  256. package/src/kernel/project/cli/buildProgram.test.ts +73 -2
  257. package/src/kernel/project/cli/buildProgram.ts +8 -1
  258. package/src/kernel/project/cli/dispatch.test.ts +5 -4
  259. package/src/kernel/project/cli/dispatch.ts +48 -25
  260. package/src/kernel/project/cli/globalFlags.ts +4 -1
  261. package/src/kernel/project/cli/helpFormat.ts +1 -2
  262. package/src/kernel/project/cli/rootHelp.ts +44 -8
  263. package/src/kernel/project/mcp/registerVerb.ts +20 -1
  264. package/src/kernel/render/prefixes.test.ts +2 -0
  265. package/src/kernel/render/renderers.ts +1 -1
  266. package/src/kernel/render/style.ts +32 -9
  267. package/src/kernel/render/vocabulary.ts +276 -0
  268. package/src/kernel/runtime/graphpack/embedded/pack.generated.ts +2 -3
  269. package/src/kernel/runtime/graphpack/embedded/pack.index.generated.ts +1 -1
  270. package/src/kernel/runtime/graphpack/embedded/pack.manifest.generated.ts +3 -0
  271. package/src/kernel/runtime/graphpack/embedded.ts +14 -6
  272. package/src/kernel/runtime/graphpack/graphpack.test.ts +31 -5
  273. package/src/kernel/runtime/graphpack/read.ts +14 -12
  274. package/src/kernel/runtime/loadSession.ts +3 -1
  275. package/src/kernel/runtime/probe.ts +1 -1
  276. package/src/kernel/runtime/refs/parseRef.test.ts +49 -1
  277. package/src/kernel/runtime/refs/parseRef.ts +25 -1
  278. package/src/kernel/runtime/refs/resolve.ts +9 -3
  279. package/src/kernel/runtime/types.ts +17 -0
  280. package/src/kernel/spec/emitReference.ts +1 -1
  281. package/src/kernel/spec/types.ts +35 -6
  282. package/src/testing/PARITY_GAPS.ts +9 -3
  283. package/src/testing/behavioral/docExamples.test.ts +4 -2
  284. package/src/testing/behavioral/errorMatrix.mcp.test.ts +110 -7
  285. package/src/testing/behavioral/journeys.firstInstall.test.ts +7 -2
  286. package/src/testing/behavioral/journeys.packageStories.test.ts +6 -3
  287. package/src/testing/eval/__snapshots__/eval.test.ts.snap +26 -1
  288. package/src/testing/eval/cases/readNouns.ts +245 -9
  289. package/src/testing/fixtures/blockGraph.ts +28 -13
  290. package/src/testing/fixtures/graph/canonical.ts +95 -12
  291. package/src/testing/helpers/runCli.test.ts +44 -0
  292. package/src/testing/helpers/runCli.ts +27 -3
  293. package/dist/src/capabilities/shared/bands.js +0 -16
  294. package/dist/src/capabilities/shared/bands.js.map +0 -1
  295. package/src/capabilities/shared/bands.ts +0 -16
@@ -25,8 +25,13 @@
25
25
  * Decisions run against REAL fs here so the update's `--dry-run` plan is
26
26
  * accurate; the composed Task performs only the symlink/delete effects.
27
27
  */
28
- import { existsSync, lstatSync, readdirSync, readlinkSync } from "node:fs";
28
+ import { existsSync, lstatSync, readdirSync, readlinkSync, statSync, } from "node:fs";
29
29
  import { basename, join, resolve } from "node:path";
30
+ // The ownership test, imported rather than reimplemented: `setup skills` and
31
+ // this module must not be able to disagree about which links belong to pragma.
32
+ // `setupSkills.ts` reaches `@canonical/harnesses` only through a DYNAMIC
33
+ // import, so this edge adds no static one (`capabilities/lazy.test.ts`).
34
+ import { withinAnyRoot } from "../setup/operations/setupSkills.js";
30
35
  import { installedSkillsDir } from "../skill/discover.js";
31
36
  /** Classify a link path: absent, our-or-another symlink, or a real entry. */
32
37
  function linkState(linkPath) {
@@ -61,7 +66,11 @@ function packageSkillDirs(root) {
61
66
  for (const name of names) {
62
67
  const dir = join(skillsDir, name);
63
68
  try {
64
- if (lstatSync(dir).isDirectory() && existsSync(join(dir, "SKILL.md"))) {
69
+ // `stat`, not `lstat`: a package that ships `skills/<name>` as a SYMLINK
70
+ // — the ordinary pnpm / monorepo / `file:` layout — contributed nothing
71
+ // at all, silently, because `lstat` reports the link and not the
72
+ // directory behind it. Discovery uses `stat`; so does this now.
73
+ if (statSync(dir).isDirectory() && existsSync(join(dir, "SKILL.md"))) {
65
74
  out.push(dir);
66
75
  }
67
76
  }
@@ -142,9 +151,15 @@ export function planSkillInstall(resolved) {
142
151
  seen.add(folderName);
143
152
  const linkPath = resolve(dest, folderName);
144
153
  const state = linkState(linkPath);
154
+ // Already correct means the link RESOLVES to the skill dir, not that its
155
+ // raw `readlink` string equals an absolute path. A relative link was
156
+ // therefore never "already correct": it was torn down and rebuilt on
157
+ // every single update, and the sibling planner reported it as drift.
158
+ const resolvesToSkill = state.kind === "symlink" &&
159
+ resolve(dest, state.target) === resolve(skillDir);
145
160
  const action = state.kind === "absent"
146
161
  ? "created"
147
- : state.kind === "symlink" && state.target === skillDir
162
+ : resolvesToSkill
148
163
  ? "skipped"
149
164
  : state.kind === "symlink"
150
165
  ? "replaced"
@@ -164,4 +179,131 @@ export function planSkillInstall(resolved) {
164
179
  actions.push(...planStaleLinkPrunes(dest, seen));
165
180
  return actions;
166
181
  }
182
+ /**
183
+ * Plan the CONVERGE-ONLY refresh of the global scope's harness skill links.
184
+ *
185
+ * The reported bug lives here. `sources update` installed and pruned layer 1
186
+ * and stopped, so a new pack skill reached no harness directory until the user
187
+ * separately ran `setup skills`, and a dropped one left its layer-2 link
188
+ * dangling with nothing that would ever clear it. This closes the loop, under
189
+ * two rules that are the entire safety argument:
190
+ *
191
+ * 1. CONVERGE-ONLY. `dirs` are directories that already exist — this function
192
+ * never creates one, and the caller composes no `mkdir`. A `sources update`
193
+ * that materialised `~/.claude/skills` would be litter, and would silently
194
+ * opt the user into linking they never asked for.
195
+ * 2. OWNERSHIP, by the SAME test `setup skills` uses. A path is this command's
196
+ * to touch only when it holds a symlink resolving INSIDE one of the global
197
+ * scope's roots (`withinAnyRoot`, a pure path-SEGMENT test that reads nothing
198
+ * — so it still answers correctly after the layer-1 target is gone, which is
199
+ * exactly the stale case). A real directory is a hand-installed skill; a
200
+ * symlink pointing anywhere else is the user's own; a `<root>-backup/foo`
201
+ * sibling is not "inside" despite sharing a string prefix. None is removed.
202
+ *
203
+ * THE SET, NOT JUST THE INSTALLED ROOT, and that is what keeps precedence
204
+ * true one layer up. A harness link left pointing at the BUNDLED snapshot
205
+ * for a skill this update has just installed for real is owned, so it is
206
+ * `replaced` onto the installed copy. Tested against the installed root
207
+ * alone it read as "someone else's link" and was skipped — and the user who
208
+ * deliberately ran `sources update` would have kept running the shipped copy.
209
+ *
210
+ * The plan is derived from the layer-1 plan rather than from a filesystem
211
+ * re-read, because at planning time the layer-1 writes have not happened yet:
212
+ * `surviving` is the post-update truth, and reading the disk would see the
213
+ * pre-update state. That is also why a surviving name always targets
214
+ * `roots[0]`: layer 1 is about to hold it, whether or not it does now.
215
+ *
216
+ * A RETIRED NAME IS NOT AUTOMATICALLY DEBRIS any more. The fallback roots
217
+ * (today: the bundled snapshot) are NOT written by this update, so their
218
+ * contents ARE readable at plan time — and a skill the packages dropped that
219
+ * the shipped snapshot still carries is still discoverable, still listed by
220
+ * `skill list`, and so still belongs in the harness directory. Such a link is
221
+ * RETARGETED onto the surviving root rather than pruned; only a name no root
222
+ * provides at all is deleted.
223
+ *
224
+ * @param dirs - The EXISTING global link directories.
225
+ * @param roots - The global scope's source roots in PRECEDENCE order.
226
+ * `roots[0]` is the installed root (layer 1) every surviving name targets;
227
+ * the rest are fallbacks a retired name may still resolve in. The whole set
228
+ * is the ownership set.
229
+ * @param surviving - Folder names layer 1 will hold after this update.
230
+ * @param retired - Folder names layer 1 is pruning in this update.
231
+ * @returns The layer-2 actions, for the plan and its effects.
232
+ * @note Impure — lstats each candidate link path, and stats the fallback roots
233
+ * for each retired name.
234
+ */
235
+ export function planHarnessSkillLinks(dirs, roots, surviving, retired) {
236
+ const dest = resolve(roots[0]);
237
+ /** The first FALLBACK root that still holds `folderName`, if any. */
238
+ const fallback = (folderName) => roots
239
+ .slice(1)
240
+ .map((root) => resolve(root, folderName))
241
+ .find((candidate) => existsSync(candidate));
242
+ const out = [];
243
+ for (const { dir, name } of dirs) {
244
+ for (const folderName of surviving) {
245
+ const linkPath = resolve(dir, folderName);
246
+ const target = resolve(dest, folderName);
247
+ const state = linkState(linkPath);
248
+ if (state.kind === "other")
249
+ continue; // A hand-placed entry — never ours.
250
+ if (state.kind === "absent") {
251
+ out.push({
252
+ target,
253
+ linkPath,
254
+ action: "created",
255
+ folderName,
256
+ dirName: name,
257
+ });
258
+ continue;
259
+ }
260
+ if (resolve(dir, state.target) === target)
261
+ continue; // Already correct.
262
+ // A symlink pointing outside every scope root is the user's own link into
263
+ // their own checkout. Unplanned does not make it ours to replace.
264
+ if (!withinAnyRoot(roots, linkPath, state.target))
265
+ continue;
266
+ out.push({
267
+ target,
268
+ linkPath,
269
+ action: "replaced",
270
+ folderName,
271
+ dirName: name,
272
+ previousTarget: state.target,
273
+ });
274
+ }
275
+ for (const folderName of retired) {
276
+ const linkPath = resolve(dir, folderName);
277
+ const state = linkState(linkPath);
278
+ if (state.kind !== "symlink")
279
+ continue;
280
+ if (!withinAnyRoot(roots, linkPath, state.target))
281
+ continue;
282
+ const surviving = fallback(folderName);
283
+ if (surviving !== undefined) {
284
+ // Dropped upstream, still shipped: retarget rather than delete. Already
285
+ // correct is nothing to do.
286
+ if (resolve(dir, state.target) === surviving)
287
+ continue;
288
+ out.push({
289
+ target: surviving,
290
+ linkPath,
291
+ action: "replaced",
292
+ folderName,
293
+ dirName: name,
294
+ previousTarget: state.target,
295
+ });
296
+ continue;
297
+ }
298
+ out.push({
299
+ target: resolve(dir, state.target),
300
+ linkPath,
301
+ action: "pruned",
302
+ folderName,
303
+ dirName: name,
304
+ });
305
+ }
306
+ }
307
+ return out;
308
+ }
167
309
  //# sourceMappingURL=installSkills.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"installSkills.js","sourceRoot":"","sources":["../../../../src/capabilities/sources/installSkills.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"installSkills.js","sourceRoot":"","sources":["../../../../src/capabilities/sources/installSkills.ts"],"names":[],"mappings":"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"}
@@ -30,8 +30,12 @@ import { cliRecovery, PragmaError } from "../../kernel/error/index.js";
30
30
  import { buildPack } from "../../kernel/runtime/graphpack/build.js";
31
31
  import { activePackPath, readActivePack } from "../../kernel/runtime/paths.js";
32
32
  import { detectPrefixClashes, harvestPrefixes, parsePackDeclaration, redactUrl, resolvePackage, } from "../../kernel/runtime/refs/index.js";
33
- import { installedSkillsDir } from "../skill/discover.js";
34
- import { planSkillInstall } from "./installSkills.js";
33
+ // The global scope's EXISTING link directories, from the module that owns the
34
+ // scope covenant — so `sources update` cannot drift away from what
35
+ // `setup skills --global` links, or widen the scope on its own.
36
+ import { existingGlobalSkillDirs } from "../setup/operations/setupSkills.js";
37
+ import { globalSkillRoots, installedSkillsDir } from "../skill/discover.js";
38
+ import { planHarnessSkillLinks, planSkillInstall } from "./installSkills.js";
35
39
  /** Generic-core prefixes; config `prefixes` merge over them (config wins). */
36
40
  const CORE_PREFIXES = {
37
41
  rdf: "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
@@ -263,6 +267,37 @@ export async function buildUpdateTask(runtime, skipInvalid = false) {
263
267
  report?.(`Installing ${skillLinks.length} skill(s)`);
264
268
  if (staleLinks.length > 0)
265
269
  report?.(`Removing ${staleLinks.length} skill link(s) no longer provided by any package`);
270
+ // Converge the GLOBAL scope (layer 2). Layer 1 above is the installed root;
271
+ // the harness directories link AT it, and until now nothing here touched
272
+ // them — a new pack skill reached no harness directory until the user
273
+ // separately ran `setup skills`, and a dropped one left a dangling link that
274
+ // nothing would ever clear. That two-step was the reported bug.
275
+ //
276
+ // CONVERGE-ONLY, and this is a policy line, not an optimisation:
277
+ // `existingGlobalSkillDirs` returns only directories that ALREADY EXIST, and
278
+ // nothing below composes a `mkdir`. `sources update` is `mcp: {expose:true}`
279
+ // with `mutates: true` and `needsNetwork: true`, so creating directories here
280
+ // would mean an agent, over MCP, after a network fetch, conjuring
281
+ // `~/.claude/skills` into being and opting the user into linking they never
282
+ // asked for. Refresh what is there; never bring a directory into existence.
283
+ //
284
+ // Ownership is the SAME `withinAnyRoot` test `setup skills` applies, over the
285
+ // SAME root set (`globalSkillRoots`), so a real directory, a still-resolving
286
+ // link into the user's own checkout, and a `<root>-backup/foo` sibling are all
287
+ // left exactly as found — while a link still pointing at the BUNDLED snapshot
288
+ // for a skill this update just installed is ours, and is moved onto it.
289
+ const harnessPlan = planHarnessSkillLinks(await existingGlobalSkillDirs(runtime.cwd), globalSkillRoots(), skillPlan
290
+ .filter((link) => link.action !== "pruned")
291
+ .map((link) => link.folderName), staleLinks.map((link) => link.folderName));
292
+ const harnessLinks = harnessPlan.filter((link) => link.action !== "pruned");
293
+ const harnessStale = harnessPlan.filter((link) => link.action === "pruned");
294
+ if (harnessLinks.length > 0)
295
+ report?.(`Linking ${harnessLinks.length} skill(s) into your harness folders`);
296
+ if (harnessStale.length > 0)
297
+ report?.(`Removing ${harnessStale.length} stale harness skill link(s)`);
298
+ if (verbose)
299
+ for (const link of harnessPlan)
300
+ report?.(` ${link.action} ${link.folderName} in ${link.dirName}`);
266
301
  report?.(`Pointing ${runtime.cwd} at pack ${built.contentHash.slice(0, 12)}`);
267
302
  return gen(function* () {
268
303
  yield* $(writeFile(path, built.contentHash, { undo }));
@@ -293,6 +328,37 @@ export async function buildUpdateTask(runtime, skipInvalid = false) {
293
328
  }),
294
329
  }));
295
330
  }
331
+ // Layer 2, in the same Task and so under the same `--undo`. Still no
332
+ // `mkdir`: every directory here was proven to exist at plan time, and
333
+ // creating one is the thing converge-only exists to forbid.
334
+ for (const link of harnessLinks) {
335
+ // A `created` link undoes by deletion — absent IS the state it replaced.
336
+ // A `replaced` one does not: the path held a link, and the delete above
337
+ // carries no undo of its own, so deleting what the symlink created would
338
+ // leave the path ABSENT rather than pointing where it pointed before.
339
+ // Its undo is therefore the same delete-then-relink shape the prunes
340
+ // below use, against the target detection recorded — and it clears the
341
+ // path first because undo collection MOCKS forward effects, so the link
342
+ // may still be there and `fs.symlink` refuses an existing path.
343
+ const previous = link.previousTarget;
344
+ const undoLink = link.action === "replaced" && previous !== undefined
345
+ ? gen(function* () {
346
+ yield* $(deleteFile(link.linkPath));
347
+ yield* $(symlink(previous, link.linkPath));
348
+ })
349
+ : deleteFile(link.linkPath);
350
+ if (link.action === "replaced")
351
+ yield* $(deleteFile(link.linkPath));
352
+ yield* $(symlink(link.target, link.linkPath, { undo: undoLink }));
353
+ }
354
+ for (const stale of harnessStale) {
355
+ yield* $(deleteFile(stale.linkPath, {
356
+ undo: gen(function* () {
357
+ yield* $(deleteFile(stale.linkPath));
358
+ yield* $(symlink(stale.target, stale.linkPath));
359
+ }),
360
+ }));
361
+ }
296
362
  return data;
297
363
  });
298
364
  }
@@ -1 +1 @@
1
- {"version":3,"file":"runUpdate.js","sourceRoot":"","sources":["../../../../src/capabilities/sources/runUpdate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runUpdate.js","sourceRoot":"","sources":["../../../../src/capabilities/sources/runUpdate.ts"],"names":[],"mappings":"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"}
@@ -17,12 +17,12 @@ import { updateFormatters } from "./update.render.js";
17
17
  export const updateVerb = {
18
18
  path: ["sources", "update"],
19
19
  summary: "Resolve configured packs and build the local store from them.",
20
- doc: "Resolves each configured pack (git/file/npm) and builds one content-addressed pack, which every later boot reads with no network access. Pin a revision by putting a commit SHA in the pack's source ref.",
20
+ doc: "Resolves each configured pack (git, file, or npm) and builds one local pack from them, which every later run reads without touching the network. Put a commit SHA in a pack source ref to pin it to that revision.",
21
21
  params: [
22
22
  {
23
23
  kind: "boolean",
24
24
  name: "skipInvalid",
25
- doc: "Skip sources that fail to parse (warning about each) and build from the rest, instead of failing the whole update.",
25
+ doc: "Build from the sources that parse, warning about each one that does not, instead of failing the whole update.",
26
26
  },
27
27
  ],
28
28
  output: { formatters: updateFormatters },
@@ -30,7 +30,7 @@ export const updateVerb = {
30
30
  { cmd: `${BIN_NAME} sources update`, note: "resolve and build" },
31
31
  {
32
32
  cmd: `${BIN_NAME} sources update --skip-invalid`,
33
- note: "build from the parseable sources, warning about any dropped",
33
+ note: "build from the sources that parse, and name the ones dropped",
34
34
  },
35
35
  ],
36
36
  capability: {
@@ -1 +1 @@
1
- {"version":3,"file":"update.verb.js","sourceRoot":"","sources":["../../../../src/capabilities/sources/update.verb.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,sCAAsC;AACtC,MAAM,CAAC,MAAM,UAAU,GAGnB;IACF,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;IAC3B,OAAO,EAAE,+DAA+D;IACxE,GAAG,EAAE,2MAA2M;IAChN,MAAM,EAAE;QACN;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,aAAa;YACnB,GAAG,EAAE,oHAAoH;SAC1H;KACF;IACD,MAAM,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE;IACxC,QAAQ,EAAE;QACR,EAAE,GAAG,EAAE,GAAG,QAAQ,iBAAiB,EAAE,IAAI,EAAE,mBAAmB,EAAE;QAChE;YACE,GAAG,EAAE,GAAG,QAAQ,gCAAgC;YAChD,IAAI,EAAE,6DAA6D;SACpE;KACF;IACD,UAAU,EAAE;QACV,UAAU,EAAE,KAAK;QACjB,OAAO,EAAE,IAAI;QACb,YAAY,EAAE,IAAI;QAClB,GAAG,EAAE;YACH,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE;SAC1D;KACF;IACD,2EAA2E;IAC3E,wEAAwE;IACxE,uEAAuE;IACvE,2EAA2E;IAC3E,4EAA4E;IAC5E,+EAA+E;IAC/E,6EAA6E;IAC7E,6CAA6C;IAC7C,GAAG,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CACvB,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CACvC,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC,CACvB;CAC1C,CAAC"}
1
+ {"version":3,"file":"update.verb.js","sourceRoot":"","sources":["../../../../src/capabilities/sources/update.verb.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,sCAAsC;AACtC,MAAM,CAAC,MAAM,UAAU,GAGnB;IACF,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;IAC3B,OAAO,EAAE,+DAA+D;IACxE,GAAG,EAAE,oNAAoN;IACzN,MAAM,EAAE;QACN;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,aAAa;YACnB,GAAG,EAAE,+GAA+G;SACrH;KACF;IACD,MAAM,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE;IACxC,QAAQ,EAAE;QACR,EAAE,GAAG,EAAE,GAAG,QAAQ,iBAAiB,EAAE,IAAI,EAAE,mBAAmB,EAAE;QAChE;YACE,GAAG,EAAE,GAAG,QAAQ,gCAAgC;YAChD,IAAI,EAAE,8DAA8D;SACrE;KACF;IACD,UAAU,EAAE;QACV,UAAU,EAAE,KAAK;QACjB,OAAO,EAAE,IAAI;QACb,YAAY,EAAE,IAAI;QAClB,GAAG,EAAE;YACH,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE;SAC1D;KACF;IACD,2EAA2E;IAC3E,wEAAwE;IACxE,uEAAuE;IACvE,2EAA2E;IAC3E,4EAA4E;IAC5E,+EAA+E;IAC/E,6EAA6E;IAC7E,6CAA6C;IAC7C,GAAG,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CACvB,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CACvC,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC,CACvB;CAC1C,CAAC"}
@@ -13,6 +13,11 @@
13
13
  * by `assertExecOk` as an actionable UNSUPPORTED (exit 1) — the interpreter
14
14
  * RESOLVES on a nonzero exit, so the check is the consumer's job.
15
15
  * - offline / already-latest carry NO exec — a real run just returns the status.
16
+ * - a non-global install (linked / ephemeral / workspace / unknown) also
17
+ * carries NO exec even when an update exists: there is no command pragma may
18
+ * run for it, so the task reports the delta plus the state's guidance and
19
+ * mutates nothing. `pmUpdateCommand` only accepts the global arm, so this is
20
+ * enforced by the types, not by convention.
16
21
  *
17
22
  * The whole registry read is preview-safe, so no `mutation.preview` gating is
18
23
  * needed here (unlike `sources update`, whose heavy resolve must be gated).
@@ -20,7 +25,7 @@
20
25
  * honest cast at the verb (the `update.verb.ts` precedent).
21
26
  */
22
27
  import { $, exec, gen, info, warn } from "@canonical/task";
23
- import { assertExecOk, checkRegistryVersion, detectInstallSource, guardMissingBinary, PRAGMA_PACKAGE, pmUpdateCommand, } from "../shared/index.js";
28
+ import { assertExecOk, checkRegistryVersion, detectInstallSource, guardMissingBinary, PRAGMA_PACKAGE, pmUpdateCommand, updateGuidance, } from "../shared/index.js";
24
29
  /**
25
30
  * Resolve the upgrade state and compose the corresponding Task.
26
31
  *
@@ -33,16 +38,23 @@ import { assertExecOk, checkRegistryVersion, detectInstallSource, guardMissingBi
33
38
  export async function runUpgrade(rt) {
34
39
  const { channel } = (await rt.loadConfig()).config;
35
40
  const install = detectInstallSource();
36
- const command = pmUpdateCommand(install.pm, PRAGMA_PACKAGE);
41
+ // Only a GLOBAL install has a sanctioned update command — the type of
42
+ // `pmUpdateCommand` enforces the narrowing. A linked checkout in particular
43
+ // must never be handed `npm i -g`: it would overwrite the development link.
44
+ const command = install.kind === "global"
45
+ ? pmUpdateCommand(install, PRAGMA_PACKAGE)
46
+ : undefined;
37
47
  const pm = install.label;
48
+ const kind = install.kind;
38
49
  const current = rt.version;
39
50
  const registry = await checkRegistryVersion(PRAGMA_PACKAGE, channel);
40
51
  if (registry === undefined) {
41
52
  const data = {
42
53
  pm,
54
+ kind,
43
55
  current,
44
56
  latest: undefined,
45
- command,
57
+ ...(command !== undefined ? { command } : {}),
46
58
  offline: true,
47
59
  alreadyLatest: false,
48
60
  executed: false,
@@ -55,9 +67,10 @@ export async function runUpgrade(rt) {
55
67
  if (registry.latest === current) {
56
68
  const data = {
57
69
  pm,
70
+ kind,
58
71
  current,
59
72
  latest: registry.latest,
60
- command,
73
+ ...(command !== undefined ? { command } : {}),
61
74
  offline: false,
62
75
  alreadyLatest: true,
63
76
  executed: false,
@@ -67,16 +80,39 @@ export async function runUpgrade(rt) {
67
80
  return data;
68
81
  });
69
82
  }
83
+ if (install.kind !== "global") {
84
+ // An update exists, but this install has no command pragma may run for
85
+ // it — say so honestly and run NOTHING. (The discriminant narrowing is
86
+ // what lets `updateGuidance` accept `install` here.)
87
+ const guidance = updateGuidance(install);
88
+ const data = {
89
+ pm,
90
+ kind,
91
+ current,
92
+ latest: registry.latest,
93
+ guidance,
94
+ offline: false,
95
+ alreadyLatest: false,
96
+ executed: false,
97
+ };
98
+ return gen(function* () {
99
+ yield* $(info(`${current} → ${registry.latest}`));
100
+ yield* $(warn(`No automatic upgrade for this install: ${guidance}`));
101
+ return data;
102
+ });
103
+ }
104
+ const updateCommand = pmUpdateCommand(install, PRAGMA_PACKAGE);
70
105
  const data = {
71
106
  pm,
107
+ kind,
72
108
  current,
73
109
  latest: registry.latest,
74
- command,
110
+ command: updateCommand,
75
111
  offline: false,
76
112
  alreadyLatest: false,
77
113
  executed: true,
78
114
  };
79
- const parts = command.split(" ");
115
+ const parts = updateCommand.split(" ");
80
116
  const bin = parts[0] ?? "npm";
81
117
  const args = parts.slice(1);
82
118
  // Guard the spawn: an absent package manager (`bin` not on PATH) REJECTS the
@@ -92,7 +128,7 @@ export async function runUpgrade(rt) {
92
128
  // so inspect the result: a failed install (e.g. EACCES on a global
93
129
  // `npm i -g`) must fail loudly, not report a silent success.
94
130
  const result = yield* $(exec(bin, args, rt.cwd));
95
- assertExecOk(command, result);
131
+ assertExecOk(updateCommand, result);
96
132
  return data;
97
133
  }));
98
134
  }
@@ -1 +1 @@
1
- {"version":3,"file":"runUpgrade.js","sourceRoot":"","sources":["../../../../src/capabilities/upgrade/runUpgrade.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runUpgrade.js","sourceRoot":"","sources":["../../../../src/capabilities/upgrade/runUpgrade.ts"],"names":[],"mappings":"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"}
@@ -22,9 +22,14 @@ export const upgradeFormatters = {
22
22
  if (data.executed) {
23
23
  lines.push(`Ran: ${chalk.cyan(data.command)}`, "", `Updated to ${data.latest}.`);
24
24
  }
25
- else {
25
+ else if (data.command) {
26
26
  lines.push(`Run: ${chalk.cyan(data.command)}`);
27
27
  }
28
+ else {
29
+ // No sanctioned command for this install (linked / ephemeral /
30
+ // workspace / unknown) — the guidance sentence is the whole story.
31
+ lines.push(`No automatic upgrade for this install: ${data.guidance}`);
32
+ }
28
33
  return lines.join("\n");
29
34
  },
30
35
  llm(data) {
@@ -35,7 +40,10 @@ export const upgradeFormatters = {
35
40
  }
36
41
  if (data.executed)
37
42
  return `Upgraded: ${data.current} → ${data.latest}`;
38
- return `Update available: ${data.current} → ${data.latest} (\`${data.command}\`)`;
43
+ if (data.command) {
44
+ return `Update available: ${data.current} → ${data.latest} (\`${data.command}\`)`;
45
+ }
46
+ return `Update available: ${data.current} → ${data.latest} — ${data.guidance}`;
39
47
  },
40
48
  json(data) {
41
49
  return JSON.stringify(data);
@@ -1 +1 @@
1
- {"version":3,"file":"upgrade.render.js","sourceRoot":"","sources":["../../../../src/capabilities/upgrade/upgrade.render.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,MAAM,CAAC,MAAM,iBAAiB,GAA4B;IACxD,KAAK,CAAC,IAAI;QACR,MAAM,KAAK,GAAG,CAAC,kBAAkB,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5C,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;YAC3D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,kCAAkC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;YAC/D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,KAAK,CAAC,IAAI,CACR,EAAE,EACF,GAAG,cAAc,KAAK,IAAI,CAAC,OAAO,MAAM,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,EAC1E,EAAE,CACH,CAAC;QACF,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,KAAK,CAAC,IAAI,CACR,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAClC,EAAE,EACF,cAAc,IAAI,CAAC,MAAM,GAAG,CAC7B,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,GAAG,CAAC,IAAI;QACN,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,kDAAkD,CAAC;QAC5E,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,OAAO,kCAAkC,IAAI,CAAC,OAAO,IAAI,CAAC;QAC5D,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO,aAAa,IAAI,CAAC,OAAO,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACvE,OAAO,qBAAqB,IAAI,CAAC,OAAO,MAAM,IAAI,CAAC,MAAM,OAAO,IAAI,CAAC,OAAO,KAAK,CAAC;IACpF,CAAC;IAED,IAAI,CAAC,IAAI;QACP,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"upgrade.render.js","sourceRoot":"","sources":["../../../../src/capabilities/upgrade/upgrade.render.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,MAAM,CAAC,MAAM,iBAAiB,GAA4B;IACxD,KAAK,CAAC,IAAI;QACR,MAAM,KAAK,GAAG,CAAC,kBAAkB,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5C,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;YAC3D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,kCAAkC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;YAC/D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,KAAK,CAAC,IAAI,CACR,EAAE,EACF,GAAG,cAAc,KAAK,IAAI,CAAC,OAAO,MAAM,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,EAC1E,EAAE,CACH,CAAC;QACF,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,KAAK,CAAC,IAAI,CACR,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAClC,EAAE,EACF,cAAc,IAAI,CAAC,MAAM,GAAG,CAC7B,CAAC;QACJ,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,+DAA+D;YAC/D,mEAAmE;YACnE,KAAK,CAAC,IAAI,CAAC,0CAA0C,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,GAAG,CAAC,IAAI;QACN,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,kDAAkD,CAAC;QAC5E,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,OAAO,kCAAkC,IAAI,CAAC,OAAO,IAAI,CAAC;QAC5D,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO,aAAa,IAAI,CAAC,OAAO,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACvE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,qBAAqB,IAAI,CAAC,OAAO,MAAM,IAAI,CAAC,MAAM,OAAO,IAAI,CAAC,OAAO,KAAK,CAAC;QACpF,CAAC;QACD,OAAO,qBAAqB,IAAI,CAAC,OAAO,MAAM,IAAI,CAAC,MAAM,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACjF,CAAC;IAED,IAAI,CAAC,IAAI;QACP,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;CACF,CAAC"}
@@ -33,6 +33,12 @@ const PROGRAM_DESCRIPTION = identity.help;
33
33
  const ISSUES_URL = identity.issuesUrl;
34
34
  /** Semver version string read from package.json. */
35
35
  const VERSION = pkg.version;
36
+ /**
37
+ * The Node.js range this distribution supports, read from `engines.node` in
38
+ * package.json so the manifest stays the single statement of the floor. The
39
+ * doctor check quotes it, and `isSupportedNodeVersion` is pinned to it by test.
40
+ */
41
+ const SUPPORTED_NODE_RANGE = pkg.engines.node;
36
42
  /**
37
43
  * The project config filename the walker looks for and every surface that
38
44
  * quotes it — diagnostics, the onboarding note, the generated reference, the
@@ -57,7 +63,12 @@ const OUTPUT_FORMATS = ["plain", "llm", "json"];
57
63
  /** Default detail level when neither flag, config, nor spec pins one. */
58
64
  const DEFAULT_DETAIL_LEVEL = "standard";
59
65
  /**
60
- * The wordmark `--help` opens with, as raw ASCII-art lines.
66
+ * The wordmark `--help` opens with FOR A HUMAN READER, as raw ASCII-art lines.
67
+ *
68
+ * Whether it prints is decided at the one emit site (`rootHelp.ts`) from the
69
+ * invocation's global flags: a captured run (`--format llm`/`json`, including
70
+ * the `llm` a non-interactive stdout infers) gets the bare header instead. This
71
+ * constant is the ART, not the policy.
61
72
  *
62
73
  * PROJECTED from the distribution config, exactly like {@link BIN_NAME} and
63
74
  * {@link PROGRAM_DESCRIPTION} — a wordmark spells a name, so it is identity, and
@@ -78,5 +89,5 @@ const DEFAULT_DETAIL_LEVEL = "standard";
78
89
  // reading `identity` directly, so their literal types are untouched.
79
90
  const declared = identity;
80
91
  const PROGRAM_LOGO = declared.logo ?? [];
81
- export { BIN_NAME, DEFAULT_DETAIL_LEVEL, DETAIL_LEVELS, ISSUES_URL, MCP_SERVER_NAME, OUTPUT_FORMATS, PROGRAM_DESCRIPTION, PROGRAM_LOGO, PROJECT_CONFIG_FILENAME, RECOVERY_CLI_PREFIX, VERSION, };
92
+ export { BIN_NAME, DEFAULT_DETAIL_LEVEL, DETAIL_LEVELS, ISSUES_URL, MCP_SERVER_NAME, OUTPUT_FORMATS, PROGRAM_DESCRIPTION, PROGRAM_LOGO, PROJECT_CONFIG_FILENAME, RECOVERY_CLI_PREFIX, SUPPORTED_NODE_RANGE, VERSION, };
82
93
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACxD,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAoB,MAAM,0BAA0B,CAAC;AAE3E,mDAAmD;AACnD,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;AAE/B;;;;;;GAMG;AACH,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC;AAEtC,iEAAiE;AACjE,MAAM,mBAAmB,GAAG,QAAQ,CAAC,IAAI,CAAC;AAE1C,qEAAqE;AACrE,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC;AAEtC,oDAAoD;AACpD,MAAM,OAAO,GAAW,GAAG,CAAC,OAAO,CAAC;AAEpC;;;;;;;GAOG;AACH,MAAM,uBAAuB,GAAG,GAAG,QAAQ,CAAC,IAAI,YAAY,CAAC;AAE7D;;;;;;;;GAQG;AACH,MAAM,mBAAmB,GAAG,GAAG,QAAQ,CAAC,IAAI,GAAG,CAAC;AAEhD,oFAAoF;AACpF,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAU,CAAC;AASzD,yEAAyE;AACzE,MAAM,oBAAoB,GAAgB,UAAU,CAAC;AAErD;;;;;;;;;;;;GAYG;AACH,sEAAsE;AACtE,6EAA6E;AAC7E,+EAA+E;AAC/E,4EAA4E;AAC5E,8EAA8E;AAC9E,4EAA4E;AAC5E,qEAAqE;AACrE,MAAM,QAAQ,GAAc,QAAQ,CAAC;AAErC,MAAM,YAAY,GAAsB,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;AAG5D,OAAO,EACL,QAAQ,EACR,oBAAoB,EACpB,aAAa,EACb,UAAU,EACV,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,YAAY,EACZ,uBAAuB,EACvB,mBAAmB,EACnB,OAAO,GACR,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACxD,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAoB,MAAM,0BAA0B,CAAC;AAE3E,mDAAmD;AACnD,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;AAE/B;;;;;;GAMG;AACH,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC;AAEtC,iEAAiE;AACjE,MAAM,mBAAmB,GAAG,QAAQ,CAAC,IAAI,CAAC;AAE1C,qEAAqE;AACrE,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC;AAEtC,oDAAoD;AACpD,MAAM,OAAO,GAAW,GAAG,CAAC,OAAO,CAAC;AAEpC;;;;GAIG;AACH,MAAM,oBAAoB,GAAW,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;AAEtD;;;;;;;GAOG;AACH,MAAM,uBAAuB,GAAG,GAAG,QAAQ,CAAC,IAAI,YAAY,CAAC;AAE7D;;;;;;;;GAQG;AACH,MAAM,mBAAmB,GAAG,GAAG,QAAQ,CAAC,IAAI,GAAG,CAAC;AAEhD,oFAAoF;AACpF,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAU,CAAC;AASzD,yEAAyE;AACzE,MAAM,oBAAoB,GAAgB,UAAU,CAAC;AAErD;;;;;;;;;;;;;;;;;GAiBG;AACH,sEAAsE;AACtE,6EAA6E;AAC7E,+EAA+E;AAC/E,4EAA4E;AAC5E,8EAA8E;AAC9E,4EAA4E;AAC5E,qEAAqE;AACrE,MAAM,QAAQ,GAAc,QAAQ,CAAC;AAErC,MAAM,YAAY,GAAsB,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;AAG5D,OAAO,EACL,QAAQ,EACR,oBAAoB,EACpB,aAAa,EACb,UAAU,EACV,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,YAAY,EACZ,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,OAAO,GACR,CAAC"}
@@ -10,8 +10,16 @@
10
10
  * is high: it must be a declaration the kernel makes about itself rather than
11
11
  * a step in any one pipeline.
12
12
  *
13
- * Today that is the declared vocabulary — the distribution's mapping from the
14
- * roles the CLI knows (a prompt, a resource) onto the RDF terms that actually
13
+ * Today that is the declared vocabulary and the interactivity vocabulary. The
14
+ * latter (`interactivity.ts`) names the questions about attended streams — is
15
+ * stdout captured, may we prompt, may we color (that third one lives with the
16
+ * styler, for the dependency reason its docblock records) — which render,
17
+ * dispatch and flag parsing each used to answer with their own inline probe.
18
+ * They are different questions over different streams, and the names are what
19
+ * keeps them from being flattened into one flag.
20
+ *
21
+ * The declared vocabulary is the distribution's mapping from the roles the
22
+ * CLI knows (a prompt, a resource) onto the RDF terms that actually
15
23
  * carry them in the active graph. It is parsed once at module load and read
16
24
  * from the prompt capability, the MCP prompt source, and the pack index
17
25
  * builder, none of which owns it and any of which would otherwise hardcode
@@ -21,5 +29,6 @@
21
29
  * is reviewed data consumed by its own test and by nothing else at runtime;
22
30
  * exporting it here would advertise a runtime API the gate does not have.
23
31
  */
32
+ export { canPrompt, stdoutIsCaptured } from "./interactivity.js";
24
33
  export { VOCABULARY } from "./vocabulary.js";
25
34
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/kernel/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/kernel/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}