@agentxm/client-core 0.2.0 → 0.3.1

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 (355) hide show
  1. package/dist/src/unstable/commands/operations/disable.d.ts +2 -2
  2. package/dist/src/unstable/commands/operations/disable.d.ts.map +1 -1
  3. package/dist/src/unstable/commands/operations/enable.d.ts +2 -2
  4. package/dist/src/unstable/commands/operations/enable.d.ts.map +1 -1
  5. package/dist/src/unstable/commands/operations/install.d.ts +1 -1
  6. package/dist/src/unstable/commands/operations/install.d.ts.map +1 -1
  7. package/dist/src/unstable/commands/operations/new-command.d.ts +2 -2
  8. package/dist/src/unstable/commands/operations/new-command.d.ts.map +1 -1
  9. package/dist/src/unstable/commands/operations/publish.d.ts +1 -1
  10. package/dist/src/unstable/commands/operations/publish.d.ts.map +1 -1
  11. package/dist/src/unstable/commands/operations/uninstall.d.ts +1 -1
  12. package/dist/src/unstable/commands/operations/uninstall.d.ts.map +1 -1
  13. package/dist/src/unstable/extensions/operations.d.ts +1 -1
  14. package/dist/src/unstable/extensions/operations.d.ts.map +1 -1
  15. package/dist/src/unstable/lint/catalog/index.d.ts +39 -0
  16. package/dist/src/unstable/lint/catalog/index.d.ts.map +1 -0
  17. package/dist/src/unstable/lint/catalog/index.js +49 -0
  18. package/dist/src/unstable/lint/catalog/index.js.map +1 -0
  19. package/dist/src/unstable/lint/catalog/pack/manifest-keys-recognized.d.ts +31 -0
  20. package/dist/src/unstable/lint/catalog/pack/manifest-keys-recognized.d.ts.map +1 -0
  21. package/dist/src/unstable/lint/catalog/pack/manifest-keys-recognized.js +41 -0
  22. package/dist/src/unstable/lint/catalog/pack/manifest-keys-recognized.js.map +1 -0
  23. package/dist/src/unstable/lint/catalog/pack/manifest-present.d.ts +18 -0
  24. package/dist/src/unstable/lint/catalog/pack/manifest-present.d.ts.map +1 -0
  25. package/dist/src/unstable/lint/catalog/pack/manifest-present.js +41 -0
  26. package/dist/src/unstable/lint/catalog/pack/manifest-present.js.map +1 -0
  27. package/dist/src/unstable/lint/catalog/pack/manifest-schema-valid.d.ts +26 -0
  28. package/dist/src/unstable/lint/catalog/pack/manifest-schema-valid.d.ts.map +1 -0
  29. package/dist/src/unstable/lint/catalog/pack/manifest-schema-valid.js +34 -0
  30. package/dist/src/unstable/lint/catalog/pack/manifest-schema-valid.js.map +1 -0
  31. package/dist/src/unstable/lint/catalog/pack-accessor/contexts.d.ts +61 -0
  32. package/dist/src/unstable/lint/catalog/pack-accessor/contexts.d.ts.map +1 -0
  33. package/dist/src/unstable/lint/catalog/pack-accessor/contexts.js +46 -0
  34. package/dist/src/unstable/lint/catalog/pack-accessor/contexts.js.map +1 -0
  35. package/dist/src/unstable/lint/catalog/pack-accessor/platform.d.ts +53 -0
  36. package/dist/src/unstable/lint/catalog/pack-accessor/platform.d.ts.map +1 -0
  37. package/dist/src/unstable/lint/catalog/pack-accessor/platform.js +90 -0
  38. package/dist/src/unstable/lint/catalog/pack-accessor/platform.js.map +1 -0
  39. package/dist/src/unstable/lint/catalog/pack-accessor/vft.d.ts +60 -0
  40. package/dist/src/unstable/lint/catalog/pack-accessor/vft.d.ts.map +1 -0
  41. package/dist/src/unstable/lint/catalog/pack-accessor/vft.js +85 -0
  42. package/dist/src/unstable/lint/catalog/pack-accessor/vft.js.map +1 -0
  43. package/dist/src/unstable/lint/catalog/pack.d.ts +37 -0
  44. package/dist/src/unstable/lint/catalog/pack.d.ts.map +1 -0
  45. package/dist/src/unstable/lint/catalog/pack.js +47 -0
  46. package/dist/src/unstable/lint/catalog/pack.js.map +1 -0
  47. package/dist/src/unstable/lint/catalog/shared/schema-rule.d.ts +59 -0
  48. package/dist/src/unstable/lint/catalog/shared/schema-rule.d.ts.map +1 -0
  49. package/dist/src/unstable/lint/catalog/shared/schema-rule.js +99 -0
  50. package/dist/src/unstable/lint/catalog/shared/schema-rule.js.map +1 -0
  51. package/dist/src/unstable/lint/catalog/skill/frontmatter-parseable.d.ts +31 -0
  52. package/dist/src/unstable/lint/catalog/skill/frontmatter-parseable.d.ts.map +1 -0
  53. package/dist/src/unstable/lint/catalog/skill/frontmatter-parseable.js +151 -0
  54. package/dist/src/unstable/lint/catalog/skill/frontmatter-parseable.js.map +1 -0
  55. package/dist/src/unstable/lint/catalog/skill/manifest-keys-recognized.d.ts +26 -0
  56. package/dist/src/unstable/lint/catalog/skill/manifest-keys-recognized.d.ts.map +1 -0
  57. package/dist/src/unstable/lint/catalog/skill/manifest-keys-recognized.js +41 -0
  58. package/dist/src/unstable/lint/catalog/skill/manifest-keys-recognized.js.map +1 -0
  59. package/dist/src/unstable/lint/catalog/skill/manifest-present.d.ts +18 -0
  60. package/dist/src/unstable/lint/catalog/skill/manifest-present.d.ts.map +1 -0
  61. package/dist/src/unstable/lint/catalog/skill/manifest-present.js +46 -0
  62. package/dist/src/unstable/lint/catalog/skill/manifest-present.js.map +1 -0
  63. package/dist/src/unstable/lint/catalog/skill/manifest-schema-valid.d.ts +22 -0
  64. package/dist/src/unstable/lint/catalog/skill/manifest-schema-valid.d.ts.map +1 -0
  65. package/dist/src/unstable/lint/catalog/skill/manifest-schema-valid.js +37 -0
  66. package/dist/src/unstable/lint/catalog/skill/manifest-schema-valid.js.map +1 -0
  67. package/dist/src/unstable/lint/catalog/skill/skill-md-present.d.ts +17 -0
  68. package/dist/src/unstable/lint/catalog/skill/skill-md-present.d.ts.map +1 -0
  69. package/dist/src/unstable/lint/catalog/skill/skill-md-present.js +38 -0
  70. package/dist/src/unstable/lint/catalog/skill/skill-md-present.js.map +1 -0
  71. package/dist/src/unstable/lint/catalog/skill-accessor/contexts.d.ts +65 -0
  72. package/dist/src/unstable/lint/catalog/skill-accessor/contexts.d.ts.map +1 -0
  73. package/dist/src/unstable/lint/catalog/skill-accessor/contexts.js +50 -0
  74. package/dist/src/unstable/lint/catalog/skill-accessor/contexts.js.map +1 -0
  75. package/dist/src/unstable/lint/catalog/skill-accessor/platform.d.ts +52 -0
  76. package/dist/src/unstable/lint/catalog/skill-accessor/platform.d.ts.map +1 -0
  77. package/dist/src/unstable/lint/catalog/skill-accessor/platform.js +89 -0
  78. package/dist/src/unstable/lint/catalog/skill-accessor/platform.js.map +1 -0
  79. package/dist/src/unstable/lint/catalog/skill-accessor/vft.d.ts +58 -0
  80. package/dist/src/unstable/lint/catalog/skill-accessor/vft.d.ts.map +1 -0
  81. package/dist/src/unstable/lint/catalog/skill-accessor/vft.js +83 -0
  82. package/dist/src/unstable/lint/catalog/skill-accessor/vft.js.map +1 -0
  83. package/dist/src/unstable/lint/catalog/skill.d.ts +38 -0
  84. package/dist/src/unstable/lint/catalog/skill.d.ts.map +1 -0
  85. package/dist/src/unstable/lint/catalog/skill.js +52 -0
  86. package/dist/src/unstable/lint/catalog/skill.js.map +1 -0
  87. package/dist/src/unstable/lint/catalog/workspace/agents-detected-declared.d.ts +23 -0
  88. package/dist/src/unstable/lint/catalog/workspace/agents-detected-declared.d.ts.map +1 -0
  89. package/dist/src/unstable/lint/catalog/workspace/agents-detected-declared.js +75 -0
  90. package/dist/src/unstable/lint/catalog/workspace/agents-detected-declared.js.map +1 -0
  91. package/dist/src/unstable/lint/catalog/workspace/agents-recognized.d.ts +23 -0
  92. package/dist/src/unstable/lint/catalog/workspace/agents-recognized.d.ts.map +1 -0
  93. package/dist/src/unstable/lint/catalog/workspace/agents-recognized.js +76 -0
  94. package/dist/src/unstable/lint/catalog/workspace/agents-recognized.js.map +1 -0
  95. package/dist/src/unstable/lint/catalog/workspace/helpers/empty.d.ts +18 -0
  96. package/dist/src/unstable/lint/catalog/workspace/helpers/empty.d.ts.map +1 -0
  97. package/dist/src/unstable/lint/catalog/workspace/helpers/empty.js +16 -0
  98. package/dist/src/unstable/lint/catalog/workspace/helpers/empty.js.map +1 -0
  99. package/dist/src/unstable/lint/catalog/workspace/helpers/install-ops.d.ts +133 -0
  100. package/dist/src/unstable/lint/catalog/workspace/helpers/install-ops.d.ts.map +1 -0
  101. package/dist/src/unstable/lint/catalog/workspace/helpers/install-ops.js +149 -0
  102. package/dist/src/unstable/lint/catalog/workspace/helpers/install-ops.js.map +1 -0
  103. package/dist/src/unstable/lint/catalog/workspace/helpers/registry-source.d.ts +25 -0
  104. package/dist/src/unstable/lint/catalog/workspace/helpers/registry-source.d.ts.map +1 -0
  105. package/dist/src/unstable/lint/catalog/workspace/helpers/registry-source.js +30 -0
  106. package/dist/src/unstable/lint/catalog/workspace/helpers/registry-source.js.map +1 -0
  107. package/dist/src/unstable/lint/catalog/workspace/initialized.d.ts +22 -0
  108. package/dist/src/unstable/lint/catalog/workspace/initialized.d.ts.map +1 -0
  109. package/dist/src/unstable/lint/catalog/workspace/initialized.js +55 -0
  110. package/dist/src/unstable/lint/catalog/workspace/initialized.js.map +1 -0
  111. package/dist/src/unstable/lint/catalog/workspace/lockfile-valid.d.ts +33 -0
  112. package/dist/src/unstable/lint/catalog/workspace/lockfile-valid.d.ts.map +1 -0
  113. package/dist/src/unstable/lint/catalog/workspace/lockfile-valid.js +125 -0
  114. package/dist/src/unstable/lint/catalog/workspace/lockfile-valid.js.map +1 -0
  115. package/dist/src/unstable/lint/catalog/workspace/packs-declarations-valid.d.ts +19 -0
  116. package/dist/src/unstable/lint/catalog/workspace/packs-declarations-valid.d.ts.map +1 -0
  117. package/dist/src/unstable/lint/catalog/workspace/packs-declarations-valid.js +145 -0
  118. package/dist/src/unstable/lint/catalog/workspace/packs-declarations-valid.js.map +1 -0
  119. package/dist/src/unstable/lint/catalog/workspace/packs-dependencies-resolved.d.ts +17 -0
  120. package/dist/src/unstable/lint/catalog/workspace/packs-dependencies-resolved.d.ts.map +1 -0
  121. package/dist/src/unstable/lint/catalog/workspace/packs-dependencies-resolved.js +107 -0
  122. package/dist/src/unstable/lint/catalog/workspace/packs-dependencies-resolved.js.map +1 -0
  123. package/dist/src/unstable/lint/catalog/workspace/packs-members-retained.d.ts +22 -0
  124. package/dist/src/unstable/lint/catalog/workspace/packs-members-retained.d.ts.map +1 -0
  125. package/dist/src/unstable/lint/catalog/workspace/packs-members-retained.js +163 -0
  126. package/dist/src/unstable/lint/catalog/workspace/packs-members-retained.js.map +1 -0
  127. package/dist/src/unstable/lint/catalog/workspace/settings-schema-valid.d.ts +28 -0
  128. package/dist/src/unstable/lint/catalog/workspace/settings-schema-valid.d.ts.map +1 -0
  129. package/dist/src/unstable/lint/catalog/workspace/settings-schema-valid.js +67 -0
  130. package/dist/src/unstable/lint/catalog/workspace/settings-schema-valid.js.map +1 -0
  131. package/dist/src/unstable/lint/catalog/workspace/skills-artifacts-clean.d.ts +30 -0
  132. package/dist/src/unstable/lint/catalog/workspace/skills-artifacts-clean.d.ts.map +1 -0
  133. package/dist/src/unstable/lint/catalog/workspace/skills-artifacts-clean.js +232 -0
  134. package/dist/src/unstable/lint/catalog/workspace/skills-artifacts-clean.js.map +1 -0
  135. package/dist/src/unstable/lint/catalog/workspace/skills-artifacts-correct.d.ts +26 -0
  136. package/dist/src/unstable/lint/catalog/workspace/skills-artifacts-correct.d.ts.map +1 -0
  137. package/dist/src/unstable/lint/catalog/workspace/skills-artifacts-correct.js +129 -0
  138. package/dist/src/unstable/lint/catalog/workspace/skills-artifacts-correct.js.map +1 -0
  139. package/dist/src/unstable/lint/catalog/workspace/skills-declarations-valid.d.ts +26 -0
  140. package/dist/src/unstable/lint/catalog/workspace/skills-declarations-valid.d.ts.map +1 -0
  141. package/dist/src/unstable/lint/catalog/workspace/skills-declarations-valid.js +151 -0
  142. package/dist/src/unstable/lint/catalog/workspace/skills-declarations-valid.js.map +1 -0
  143. package/dist/src/unstable/lint/catalog/workspace/skills-integrity-valid.d.ts +29 -0
  144. package/dist/src/unstable/lint/catalog/workspace/skills-integrity-valid.d.ts.map +1 -0
  145. package/dist/src/unstable/lint/catalog/workspace/skills-integrity-valid.js +149 -0
  146. package/dist/src/unstable/lint/catalog/workspace/skills-integrity-valid.js.map +1 -0
  147. package/dist/src/unstable/lint/catalog/workspace/skills-lockfile-aligned.d.ts +29 -0
  148. package/dist/src/unstable/lint/catalog/workspace/skills-lockfile-aligned.d.ts.map +1 -0
  149. package/dist/src/unstable/lint/catalog/workspace/skills-lockfile-aligned.js +242 -0
  150. package/dist/src/unstable/lint/catalog/workspace/skills-lockfile-aligned.js.map +1 -0
  151. package/dist/src/unstable/lint/catalog/workspace-accessor/contexts.d.ts +141 -0
  152. package/dist/src/unstable/lint/catalog/workspace-accessor/contexts.d.ts.map +1 -0
  153. package/dist/src/unstable/lint/catalog/workspace-accessor/contexts.js +123 -0
  154. package/dist/src/unstable/lint/catalog/workspace-accessor/contexts.js.map +1 -0
  155. package/dist/src/unstable/lint/catalog/workspace-accessor/interpret-ops.d.ts +38 -0
  156. package/dist/src/unstable/lint/catalog/workspace-accessor/interpret-ops.d.ts.map +1 -0
  157. package/dist/src/unstable/lint/catalog/workspace-accessor/interpret-ops.js +311 -0
  158. package/dist/src/unstable/lint/catalog/workspace-accessor/interpret-ops.js.map +1 -0
  159. package/dist/src/unstable/lint/catalog/workspace-accessor/platform.d.ts +60 -0
  160. package/dist/src/unstable/lint/catalog/workspace-accessor/platform.d.ts.map +1 -0
  161. package/dist/src/unstable/lint/catalog/workspace-accessor/platform.js +201 -0
  162. package/dist/src/unstable/lint/catalog/workspace-accessor/platform.js.map +1 -0
  163. package/dist/src/unstable/lint/catalog/workspace-accessor/test-state.d.ts +65 -0
  164. package/dist/src/unstable/lint/catalog/workspace-accessor/test-state.d.ts.map +1 -0
  165. package/dist/src/unstable/lint/catalog/workspace-accessor/test-state.js +95 -0
  166. package/dist/src/unstable/lint/catalog/workspace-accessor/test-state.js.map +1 -0
  167. package/dist/src/unstable/lint/catalog/workspace.d.ts +47 -0
  168. package/dist/src/unstable/lint/catalog/workspace.d.ts.map +1 -0
  169. package/dist/src/unstable/lint/catalog/workspace.js +80 -0
  170. package/dist/src/unstable/lint/catalog/workspace.js.map +1 -0
  171. package/dist/src/unstable/lint/cli.d.ts +297 -0
  172. package/dist/src/unstable/lint/cli.d.ts.map +1 -0
  173. package/dist/src/unstable/lint/cli.js +388 -0
  174. package/dist/src/unstable/lint/cli.js.map +1 -0
  175. package/dist/src/unstable/lint/compose-path.d.ts +27 -0
  176. package/dist/src/unstable/lint/compose-path.d.ts.map +1 -0
  177. package/dist/src/unstable/lint/compose-path.js +61 -0
  178. package/dist/src/unstable/lint/compose-path.js.map +1 -0
  179. package/dist/src/unstable/lint/config.d.ts +103 -0
  180. package/dist/src/unstable/lint/config.d.ts.map +1 -0
  181. package/dist/src/unstable/lint/config.js +137 -0
  182. package/dist/src/unstable/lint/config.js.map +1 -0
  183. package/dist/src/unstable/lint/context.d.ts +265 -0
  184. package/dist/src/unstable/lint/context.d.ts.map +1 -0
  185. package/dist/src/unstable/lint/context.js +21 -0
  186. package/dist/src/unstable/lint/context.js.map +1 -0
  187. package/dist/src/unstable/lint/evaluate.d.ts +68 -0
  188. package/dist/src/unstable/lint/evaluate.d.ts.map +1 -0
  189. package/dist/src/unstable/lint/evaluate.js +147 -0
  190. package/dist/src/unstable/lint/evaluate.js.map +1 -0
  191. package/dist/src/unstable/lint/index.d.ts +28 -0
  192. package/dist/src/unstable/lint/index.d.ts.map +1 -0
  193. package/dist/src/unstable/lint/index.js +35 -0
  194. package/dist/src/unstable/lint/index.js.map +1 -0
  195. package/dist/src/unstable/lint/issues-to-findings.d.ts +35 -0
  196. package/dist/src/unstable/lint/issues-to-findings.d.ts.map +1 -0
  197. package/dist/src/unstable/lint/issues-to-findings.js +97 -0
  198. package/dist/src/unstable/lint/issues-to-findings.js.map +1 -0
  199. package/dist/src/unstable/lint/rule.d.ts +139 -0
  200. package/dist/src/unstable/lint/rule.d.ts.map +1 -0
  201. package/dist/src/unstable/lint/rule.js +25 -0
  202. package/dist/src/unstable/lint/rule.js.map +1 -0
  203. package/dist/src/unstable/mcp-servers/operations/install.d.ts +1 -1
  204. package/dist/src/unstable/mcp-servers/operations/install.d.ts.map +1 -1
  205. package/dist/src/unstable/mcp-servers/operations/publish.d.ts +1 -1
  206. package/dist/src/unstable/mcp-servers/operations/publish.d.ts.map +1 -1
  207. package/dist/src/unstable/mcp-servers/operations/uninstall.d.ts +1 -1
  208. package/dist/src/unstable/mcp-servers/operations/uninstall.d.ts.map +1 -1
  209. package/dist/src/unstable/packs/operations/add-to-pack.d.ts +2 -2
  210. package/dist/src/unstable/packs/operations/add-to-pack.d.ts.map +1 -1
  211. package/dist/src/unstable/packs/operations/install.d.ts +2 -2
  212. package/dist/src/unstable/packs/operations/install.d.ts.map +1 -1
  213. package/dist/src/unstable/packs/operations/new-pack.d.ts +2 -2
  214. package/dist/src/unstable/packs/operations/new-pack.d.ts.map +1 -1
  215. package/dist/src/unstable/packs/operations/publish.d.ts +2 -2
  216. package/dist/src/unstable/packs/operations/publish.d.ts.map +1 -1
  217. package/dist/src/unstable/packs/operations/remove-from-pack.d.ts +2 -2
  218. package/dist/src/unstable/packs/operations/remove-from-pack.d.ts.map +1 -1
  219. package/dist/src/unstable/packs/operations/uninstall.d.ts +2 -2
  220. package/dist/src/unstable/packs/operations/uninstall.d.ts.map +1 -1
  221. package/dist/src/unstable/packs/operations/unpack.d.ts +2 -2
  222. package/dist/src/unstable/packs/operations/unpack.d.ts.map +1 -1
  223. package/dist/src/unstable/{workspace → plan}/apply-plan.d.ts +9 -0
  224. package/dist/src/unstable/plan/apply-plan.d.ts.map +1 -0
  225. package/dist/src/unstable/{workspace → plan}/apply-plan.js +10 -1
  226. package/dist/src/unstable/plan/apply-plan.js.map +1 -0
  227. package/dist/src/unstable/plan/index.d.ts +24 -0
  228. package/dist/src/unstable/plan/index.d.ts.map +1 -0
  229. package/dist/src/unstable/plan/index.js +28 -0
  230. package/dist/src/unstable/plan/index.js.map +1 -0
  231. package/dist/src/unstable/{workspace → plan}/plan.d.ts +6 -0
  232. package/dist/src/unstable/plan/plan.d.ts.map +1 -0
  233. package/dist/src/unstable/{workspace → plan}/plan.js +6 -0
  234. package/dist/src/unstable/plan/plan.js.map +1 -0
  235. package/dist/src/unstable/{workspace → plan}/resolve-plan.d.ts +30 -2
  236. package/dist/src/unstable/plan/resolve-plan.d.ts.map +1 -0
  237. package/dist/src/unstable/{workspace → plan}/resolve-plan.js +37 -6
  238. package/dist/src/unstable/plan/resolve-plan.js.map +1 -0
  239. package/dist/src/unstable/publish/manifest-policy.d.ts +8 -8
  240. package/dist/src/unstable/settings/index.d.ts +2 -0
  241. package/dist/src/unstable/settings/index.d.ts.map +1 -1
  242. package/dist/src/unstable/settings/index.js +1 -0
  243. package/dist/src/unstable/settings/index.js.map +1 -1
  244. package/dist/src/unstable/settings/schema.d.ts +3 -0
  245. package/dist/src/unstable/settings/schema.d.ts.map +1 -1
  246. package/dist/src/unstable/settings/schema.js +3 -0
  247. package/dist/src/unstable/settings/schema.js.map +1 -1
  248. package/dist/src/unstable/settings/settings.d.ts +10 -0
  249. package/dist/src/unstable/settings/settings.d.ts.map +1 -1
  250. package/dist/src/unstable/skills/operations/copy.d.ts +2 -2
  251. package/dist/src/unstable/skills/operations/copy.d.ts.map +1 -1
  252. package/dist/src/unstable/skills/operations/disable.d.ts +2 -2
  253. package/dist/src/unstable/skills/operations/disable.d.ts.map +1 -1
  254. package/dist/src/unstable/skills/operations/enable.d.ts +2 -2
  255. package/dist/src/unstable/skills/operations/enable.d.ts.map +1 -1
  256. package/dist/src/unstable/skills/operations/install.d.ts +2 -2
  257. package/dist/src/unstable/skills/operations/install.d.ts.map +1 -1
  258. package/dist/src/unstable/skills/operations/new-skill.d.ts +2 -2
  259. package/dist/src/unstable/skills/operations/new-skill.d.ts.map +1 -1
  260. package/dist/src/unstable/skills/operations/publish.d.ts +2 -2
  261. package/dist/src/unstable/skills/operations/publish.d.ts.map +1 -1
  262. package/dist/src/unstable/skills/operations/rename.d.ts +2 -2
  263. package/dist/src/unstable/skills/operations/rename.d.ts.map +1 -1
  264. package/dist/src/unstable/skills/operations/uninstall.d.ts +2 -2
  265. package/dist/src/unstable/skills/operations/uninstall.d.ts.map +1 -1
  266. package/dist/src/unstable/subagents/operations/disable.d.ts +2 -2
  267. package/dist/src/unstable/subagents/operations/disable.d.ts.map +1 -1
  268. package/dist/src/unstable/subagents/operations/enable.d.ts +2 -2
  269. package/dist/src/unstable/subagents/operations/enable.d.ts.map +1 -1
  270. package/dist/src/unstable/subagents/operations/publish.d.ts +2 -2
  271. package/dist/src/unstable/subagents/operations/publish.d.ts.map +1 -1
  272. package/dist/src/unstable/workflows/install-command/workflow.d.ts +1 -1
  273. package/dist/src/unstable/workflows/install-command/workflow.d.ts.map +1 -1
  274. package/dist/src/unstable/workflows/install-command/workflow.js +1 -1
  275. package/dist/src/unstable/workflows/install-command/workflow.js.map +1 -1
  276. package/dist/src/unstable/workflows/uninstall-command/workflow.d.ts +1 -1
  277. package/dist/src/unstable/workflows/uninstall-command/workflow.d.ts.map +1 -1
  278. package/dist/src/unstable/workflows/uninstall-command/workflow.js +1 -1
  279. package/dist/src/unstable/workflows/uninstall-command/workflow.js.map +1 -1
  280. package/dist/src/unstable/workspace/augment-plan.d.ts +1 -1
  281. package/dist/src/unstable/workspace/augment-plan.d.ts.map +1 -1
  282. package/dist/src/unstable/workspace/display-plan.d.ts +1 -1
  283. package/dist/src/unstable/workspace/display-plan.d.ts.map +1 -1
  284. package/dist/src/unstable/workspace/display-plan.js.map +1 -1
  285. package/dist/src/unstable/workspace/index.d.ts +0 -5
  286. package/dist/src/unstable/workspace/index.d.ts.map +1 -1
  287. package/dist/src/unstable/workspace/index.js +3 -7
  288. package/dist/src/unstable/workspace/index.js.map +1 -1
  289. package/dist/src/unstable/workspace/initialization.d.ts +15 -0
  290. package/dist/src/unstable/workspace/initialization.d.ts.map +1 -1
  291. package/dist/src/unstable/workspace/paths.d.ts +0 -18
  292. package/dist/src/unstable/workspace/paths.d.ts.map +1 -1
  293. package/dist/src/unstable/workspace/paths.js +12 -2
  294. package/dist/src/unstable/workspace/paths.js.map +1 -1
  295. package/dist/src/unstable/workspace/reconciliation.d.ts +1 -1
  296. package/dist/src/unstable/workspace/reconciliation.d.ts.map +1 -1
  297. package/dist/src/unstable/workspace/scan-plan-readiness.d.ts +1 -1
  298. package/dist/src/unstable/workspace/scan-plan-readiness.d.ts.map +1 -1
  299. package/dist/src/unstable/workspace/settings-validation/types.d.ts +11 -1
  300. package/dist/src/unstable/workspace/settings-validation/types.d.ts.map +1 -1
  301. package/package.json +10 -2
  302. package/dist/src/unstable/workspace/apply-plan.d.ts.map +0 -1
  303. package/dist/src/unstable/workspace/apply-plan.js.map +0 -1
  304. package/dist/src/unstable/workspace/doctor/check-def.d.ts +0 -29
  305. package/dist/src/unstable/workspace/doctor/check-def.d.ts.map +0 -1
  306. package/dist/src/unstable/workspace/doctor/check-def.js +0 -17
  307. package/dist/src/unstable/workspace/doctor/check-def.js.map +0 -1
  308. package/dist/src/unstable/workspace/doctor/checks/agents-configured.d.ts +0 -5
  309. package/dist/src/unstable/workspace/doctor/checks/agents-configured.d.ts.map +0 -1
  310. package/dist/src/unstable/workspace/doctor/checks/agents-configured.js +0 -170
  311. package/dist/src/unstable/workspace/doctor/checks/agents-configured.js.map +0 -1
  312. package/dist/src/unstable/workspace/doctor/checks/extensions-active.d.ts +0 -4
  313. package/dist/src/unstable/workspace/doctor/checks/extensions-active.d.ts.map +0 -1
  314. package/dist/src/unstable/workspace/doctor/checks/extensions-active.js +0 -238
  315. package/dist/src/unstable/workspace/doctor/checks/extensions-active.js.map +0 -1
  316. package/dist/src/unstable/workspace/doctor/checks/extensions-current.d.ts +0 -18
  317. package/dist/src/unstable/workspace/doctor/checks/extensions-current.d.ts.map +0 -1
  318. package/dist/src/unstable/workspace/doctor/checks/extensions-current.js +0 -92
  319. package/dist/src/unstable/workspace/doctor/checks/extensions-current.js.map +0 -1
  320. package/dist/src/unstable/workspace/doctor/checks/extensions-installed.d.ts +0 -5
  321. package/dist/src/unstable/workspace/doctor/checks/extensions-installed.d.ts.map +0 -1
  322. package/dist/src/unstable/workspace/doctor/checks/extensions-installed.js +0 -472
  323. package/dist/src/unstable/workspace/doctor/checks/extensions-installed.js.map +0 -1
  324. package/dist/src/unstable/workspace/doctor/checks/workspace-ready.d.ts +0 -5
  325. package/dist/src/unstable/workspace/doctor/checks/workspace-ready.d.ts.map +0 -1
  326. package/dist/src/unstable/workspace/doctor/checks/workspace-ready.js +0 -201
  327. package/dist/src/unstable/workspace/doctor/checks/workspace-ready.js.map +0 -1
  328. package/dist/src/unstable/workspace/doctor/diagnose.d.ts +0 -49
  329. package/dist/src/unstable/workspace/doctor/diagnose.d.ts.map +0 -1
  330. package/dist/src/unstable/workspace/doctor/diagnose.js +0 -78
  331. package/dist/src/unstable/workspace/doctor/diagnose.js.map +0 -1
  332. package/dist/src/unstable/workspace/doctor/index.d.ts +0 -8
  333. package/dist/src/unstable/workspace/doctor/index.d.ts.map +0 -1
  334. package/dist/src/unstable/workspace/doctor/index.js +0 -6
  335. package/dist/src/unstable/workspace/doctor/index.js.map +0 -1
  336. package/dist/src/unstable/workspace/doctor/rollup.d.ts +0 -4
  337. package/dist/src/unstable/workspace/doctor/rollup.d.ts.map +0 -1
  338. package/dist/src/unstable/workspace/doctor/rollup.js +0 -28
  339. package/dist/src/unstable/workspace/doctor/rollup.js.map +0 -1
  340. package/dist/src/unstable/workspace/doctor/runner.d.ts +0 -6
  341. package/dist/src/unstable/workspace/doctor/runner.d.ts.map +0 -1
  342. package/dist/src/unstable/workspace/doctor/runner.js +0 -179
  343. package/dist/src/unstable/workspace/doctor/runner.js.map +0 -1
  344. package/dist/src/unstable/workspace/doctor/types.d.ts +0 -127
  345. package/dist/src/unstable/workspace/doctor/types.d.ts.map +0 -1
  346. package/dist/src/unstable/workspace/doctor/types.js +0 -60
  347. package/dist/src/unstable/workspace/doctor/types.js.map +0 -1
  348. package/dist/src/unstable/workspace/plan.d.ts.map +0 -1
  349. package/dist/src/unstable/workspace/plan.js.map +0 -1
  350. package/dist/src/unstable/workspace/resolve-plan.d.ts.map +0 -1
  351. package/dist/src/unstable/workspace/resolve-plan.js.map +0 -1
  352. package/dist/src/unstable/workspace/sync.d.ts +0 -17
  353. package/dist/src/unstable/workspace/sync.d.ts.map +0 -1
  354. package/dist/src/unstable/workspace/sync.js +0 -142
  355. package/dist/src/unstable/workspace/sync.js.map +0 -1
@@ -0,0 +1,149 @@
1
+ /**
2
+ * `workspace/skills-integrity-valid` — each installed skill's `src/` content
3
+ * matches its lockfile `sourceHash`.
4
+ *
5
+ * For each skill lock entry with a `sourceHash`, verify the canonical
6
+ * installed directory (`.axm/extensions/<owner>/skills/<name>/src/` for
7
+ * registry sources; `.axm/extensions/external/skills/<name>/` for
8
+ * non-registry) exists and its hash matches. Integrity-mismatch entries
9
+ * each emit one `AutofixableFinding`; autofix: `install-skill` with
10
+ * `force: true`.
11
+ *
12
+ * The integrity check MUST walk the workspace filesystem — `context.workspace`
13
+ * exposes `exists` only; the accessor layer surfaces the pre-computed
14
+ * `installedSkills` array with the skill's `files` accessor already rooted
15
+ * at the right path per provenance. A skill whose install directory is
16
+ * missing entirely is also a mismatch.
17
+ *
18
+ * V1 keeps this rule simple: a skill whose `sourceHash` is undefined in the
19
+ * lockfile (e.g., git-hosted sources without pinned hash) is not checked.
20
+ *
21
+ * One finding per affected entity.
22
+ *
23
+ * @experimental This API is unstable and may change without notice.
24
+ * @packageDocumentation
25
+ */
26
+ import * as Effect from "effect/Effect";
27
+ import * as Option from "effect/Option";
28
+ import * as Result from "effect/Result";
29
+ import * as Schema from "effect/Schema";
30
+ import { LockfileSchema } from "../../../lockfile/schema.js";
31
+ import { SettingsSchema } from "../../../settings/schema.js";
32
+ import { installSkillOp } from "./helpers/install-ops.js";
33
+ import { EMPTY_LINT_FINDINGS, EMPTY_OPERATIONS } from "./helpers/empty.js";
34
+ const RULE_ID = "workspace/skills-integrity-valid";
35
+ const LOCKFILE_REL = ".axm/axm-lock.yaml";
36
+ const SUG_INTEGRITY_PREFIX = "Reinstall skill ";
37
+ const decodeSettings = (input) => {
38
+ const result = Schema.decodeUnknownResult(SettingsSchema)(input, {
39
+ onExcessProperty: "ignore",
40
+ errors: "all",
41
+ });
42
+ return Result.isSuccess(result) ? Option.some(result.success) : Option.none();
43
+ };
44
+ const decodeLockfile = (input) => {
45
+ const result = Schema.decodeUnknownResult(LockfileSchema)(input, {
46
+ onExcessProperty: "ignore",
47
+ errors: "all",
48
+ });
49
+ return Result.isSuccess(result) ? Option.some(result.success) : Option.none();
50
+ };
51
+ const integrityFinding = (name, reason) => ({
52
+ kind: "autofixable",
53
+ ruleId: RULE_ID,
54
+ severity: "error",
55
+ message: `Skill '${name}' has an integrity mismatch: ${reason}.`,
56
+ suggestions: [`${SUG_INTEGRITY_PREFIX}'${name}' to re-hash from source.`],
57
+ location: { file: LOCKFILE_REL },
58
+ });
59
+ const NAME_FROM_SUGGESTION_RE = /'([^']+)'/;
60
+ const extractSkillName = (suggestion) => NAME_FROM_SUGGESTION_RE.exec(suggestion)?.[1];
61
+ /**
62
+ * Compute a stable integrity marker for the skill's installed `src/` tree.
63
+ *
64
+ * The lint layer does not re-hash bytes — the workspace accessor is narrow
65
+ * and does not expose bulk-read; integrity in v1 is delegated to an
66
+ * accessor-computed signal carried on the `InstalledSkillInfo` record.
67
+ * Since that extension requires expanding the accessor surface beyond the
68
+ * v1 documented methods (a task 3c.2 constraint), this rule treats a
69
+ * `sourceHash`-bearing lock entry whose canonical `src/` directory does
70
+ * NOT exist as an integrity mismatch. A deeper byte-by-byte hash check
71
+ * defers to the CLI-layer adapter that owns filesystem walks.
72
+ */
73
+ const checkIntegrity = (name, lockEntry, probeExists) => {
74
+ if (lockEntry.sourceHash === undefined) {
75
+ return Option.none();
76
+ }
77
+ if (!probeExists) {
78
+ return Option.some(integrityFinding(name, "canonical install directory is missing"));
79
+ }
80
+ return Option.none();
81
+ };
82
+ const skillSrcProbe = (name, entry) => {
83
+ if (entry.type === "registry") {
84
+ return `.axm/extensions/${entry.owner}/skills/${name}/src/SKILL.md`;
85
+ }
86
+ return `.axm/extensions/external/skills/${name}/SKILL.md`;
87
+ };
88
+ export const skillsIntegrityValidRule = {
89
+ id: RULE_ID,
90
+ description: "Each skill's canonical src/ content matches its lockfile sourceHash.",
91
+ kind: "autofixing",
92
+ severity: "error",
93
+ check: (context) => Effect.gen(function* () {
94
+ const settingsResult = yield* Effect.result(context.workspace.settings);
95
+ const lockfileResult = yield* Effect.result(context.workspace.lockfile);
96
+ if (Result.isFailure(settingsResult) || Result.isFailure(lockfileResult)) {
97
+ return EMPTY_LINT_FINDINGS;
98
+ }
99
+ const settings = decodeSettings(settingsResult.success);
100
+ if (Option.isNone(settings)) {
101
+ return EMPTY_LINT_FINDINGS;
102
+ }
103
+ const lockOption = lockfileResult.success;
104
+ if (Option.isNone(lockOption)) {
105
+ return EMPTY_LINT_FINDINGS;
106
+ }
107
+ const lockfile = decodeLockfile(lockOption.value);
108
+ if (Option.isNone(lockfile)) {
109
+ return EMPTY_LINT_FINDINGS;
110
+ }
111
+ const lockSkills = lockfile.value.skills;
112
+ const declaredSkills = settings.value.skills ?? {};
113
+ const findings = [];
114
+ for (const [name, entry] of Object.entries(lockSkills)) {
115
+ // Carve out: integrity only applies to declared skills. Orphan
116
+ // lock entries are owned by workspace/skills-lockfile-aligned
117
+ // (orphan arm); running integrity alongside it would produce
118
+ // contradictory autofix Operations (install + uninstall).
119
+ if (!(name in declaredSkills)) {
120
+ continue;
121
+ }
122
+ const probe = skillSrcProbe(name, entry);
123
+ const exists = yield* context.workspace.exists(probe);
124
+ const finding = checkIntegrity(name, entry, exists);
125
+ if (Option.isSome(finding)) {
126
+ findings.push(finding.value);
127
+ }
128
+ }
129
+ return findings;
130
+ }),
131
+ fix: (context, finding) => Effect.gen(function* () {
132
+ const name = extractSkillName(finding.suggestions[0]);
133
+ if (name === undefined) {
134
+ return EMPTY_OPERATIONS;
135
+ }
136
+ const settingsResult = yield* Effect.result(context.workspace.settings);
137
+ if (Result.isFailure(settingsResult)) {
138
+ return EMPTY_OPERATIONS;
139
+ }
140
+ const settings = decodeSettings(settingsResult.success);
141
+ if (Option.isNone(settings)) {
142
+ return EMPTY_OPERATIONS;
143
+ }
144
+ const entry = settings.value.skills?.[name];
145
+ const source = entry?.source ?? name;
146
+ return [installSkillOp({ name, source, force: true })];
147
+ }),
148
+ };
149
+ //# sourceMappingURL=skills-integrity-valid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills-integrity-valid.js","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/workspace/skills-integrity-valid.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * `workspace/skills-lockfile-aligned` — skill lock entries correspond 1:1 to
3
+ * declared skills at satisfying versions.
4
+ *
5
+ * Cascade per `docs/design/lint-engine.md §10.workspace.Skills` (first
6
+ * failing arm per affected entity):
7
+ *
8
+ * 1. **Missing** — every declared skill has a matching lock entry.
9
+ * Autofix: `install-skill` with `force: false` per missing declaration.
10
+ * 2. **Orphan** — every skill lock entry has a matching declaration **or**
11
+ * is `retainedByPack: true` AND a matching installed declared pack
12
+ * declares it. Autofix: `uninstall-skill` per orphan lock entry.
13
+ * Retention carve-out: `retainedByPack: true` entries whose FQN appears
14
+ * in the resolved-map of at least one installed declared pack are NOT
15
+ * orphans.
16
+ * 3. **Version skew** — each lock entry's `resolvedVersion` satisfies the
17
+ * declared version constraint (for registry sources). Autofix:
18
+ * `install-skill` with `force: true`.
19
+ *
20
+ * One finding per affected entity. Autofixing — each arm emits exactly one
21
+ * Operation per affected entity.
22
+ *
23
+ * @experimental This API is unstable and may change without notice.
24
+ * @packageDocumentation
25
+ */
26
+ import type { WorkspaceRuleContext } from "../../context.js";
27
+ import type { AutofixingRule } from "../../rule.js";
28
+ export declare const skillsLockfileAlignedRule: AutofixingRule<WorkspaceRuleContext>;
29
+ //# sourceMappingURL=skills-lockfile-aligned.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills-lockfile-aligned.d.ts","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/workspace/skills-lockfile-aligned.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAMH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAsB,cAAc,EAAe,MAAM,eAAe,CAAC;AAgGrF,eAAO,MAAM,yBAAyB,EAAE,cAAc,CAAC,oBAAoB,CAuI1E,CAAC"}
@@ -0,0 +1,242 @@
1
+ /**
2
+ * `workspace/skills-lockfile-aligned` — skill lock entries correspond 1:1 to
3
+ * declared skills at satisfying versions.
4
+ *
5
+ * Cascade per `docs/design/lint-engine.md §10.workspace.Skills` (first
6
+ * failing arm per affected entity):
7
+ *
8
+ * 1. **Missing** — every declared skill has a matching lock entry.
9
+ * Autofix: `install-skill` with `force: false` per missing declaration.
10
+ * 2. **Orphan** — every skill lock entry has a matching declaration **or**
11
+ * is `retainedByPack: true` AND a matching installed declared pack
12
+ * declares it. Autofix: `uninstall-skill` per orphan lock entry.
13
+ * Retention carve-out: `retainedByPack: true` entries whose FQN appears
14
+ * in the resolved-map of at least one installed declared pack are NOT
15
+ * orphans.
16
+ * 3. **Version skew** — each lock entry's `resolvedVersion` satisfies the
17
+ * declared version constraint (for registry sources). Autofix:
18
+ * `install-skill` with `force: true`.
19
+ *
20
+ * One finding per affected entity. Autofixing — each arm emits exactly one
21
+ * Operation per affected entity.
22
+ *
23
+ * @experimental This API is unstable and may change without notice.
24
+ * @packageDocumentation
25
+ */
26
+ import * as Effect from "effect/Effect";
27
+ import * as Option from "effect/Option";
28
+ import * as Result from "effect/Result";
29
+ import * as Schema from "effect/Schema";
30
+ import { LockfileSchema } from "../../../lockfile/schema.js";
31
+ import { SettingsSchema } from "../../../settings/schema.js";
32
+ import { installSkillOp, uninstallSkillOp } from "./helpers/install-ops.js";
33
+ import { parseRegistrySource } from "./helpers/registry-source.js";
34
+ import { EMPTY_LINT_FINDINGS, EMPTY_OPERATIONS } from "./helpers/empty.js";
35
+ const RULE_ID = "workspace/skills-lockfile-aligned";
36
+ const LOCKFILE_REL = ".axm/axm-lock.yaml";
37
+ const SUG_MISSING_PREFIX = "Install skill ";
38
+ const SUG_ORPHAN_PREFIX = "Uninstall orphan skill ";
39
+ const SUG_VERSION_PREFIX = "Reinstall skill ";
40
+ const decodeSettings = (input) => {
41
+ const result = Schema.decodeUnknownResult(SettingsSchema)(input, {
42
+ onExcessProperty: "ignore",
43
+ errors: "all",
44
+ });
45
+ return Result.isSuccess(result) ? Option.some(result.success) : Option.none();
46
+ };
47
+ const decodeLockfile = (input) => {
48
+ const result = Schema.decodeUnknownResult(LockfileSchema)(input, {
49
+ onExcessProperty: "ignore",
50
+ errors: "all",
51
+ });
52
+ return Result.isSuccess(result) ? Option.some(result.success) : Option.none();
53
+ };
54
+ const missingFinding = (name, source) => ({
55
+ kind: "autofixable",
56
+ ruleId: RULE_ID,
57
+ severity: "error",
58
+ message: `Skill '${name}' is declared in settings but missing from the lockfile.`,
59
+ suggestions: [`${SUG_MISSING_PREFIX}'${name}' from ${source}.`],
60
+ location: { file: LOCKFILE_REL },
61
+ });
62
+ const orphanFinding = (name) => ({
63
+ kind: "autofixable",
64
+ ruleId: RULE_ID,
65
+ severity: "error",
66
+ message: `Skill '${name}' is present in the lockfile but not declared in settings.`,
67
+ suggestions: [`${SUG_ORPHAN_PREFIX}'${name}' to remove it from the workspace.`],
68
+ location: { file: LOCKFILE_REL },
69
+ });
70
+ const versionFinding = (name, details) => ({
71
+ kind: "autofixable",
72
+ ruleId: RULE_ID,
73
+ severity: "error",
74
+ message: `Skill '${name}' lock version does not satisfy the declared constraint: ${details}.`,
75
+ suggestions: [`${SUG_VERSION_PREFIX}'${name}' at the declared version.`],
76
+ location: { file: LOCKFILE_REL },
77
+ });
78
+ // -----------------------------------------------------------------------------
79
+ // Retention helpers
80
+ // -----------------------------------------------------------------------------
81
+ const isRegistryEntry = (entry) => entry.type === "registry";
82
+ const lockEntryFqn = (entry, name) => {
83
+ if (isRegistryEntry(entry)) {
84
+ return `${entry.owner}/skills/${entry.name}`;
85
+ }
86
+ return `skills/${name}`;
87
+ };
88
+ /**
89
+ * Build the set of FQNs retained by at least one installed declared pack.
90
+ * An entry is retained only when:
91
+ *
92
+ * - its lockfile entry has `retainedByPack: true`, AND
93
+ * - at least one pack lock entry's `resolvedSkills` map has a key matching
94
+ * the entry's FQN, AND
95
+ * - that pack name appears in `settings.packs`.
96
+ */
97
+ const buildRetainedSkillFqns = (settings, lockfile) => {
98
+ const declaredPackNames = new Set(Object.keys(settings.packs ?? {}));
99
+ const retained = new Set();
100
+ const packLock = lockfile.packs ?? {};
101
+ for (const [packName, packEntry] of Object.entries(packLock)) {
102
+ if (!declaredPackNames.has(packName)) {
103
+ continue;
104
+ }
105
+ for (const fqn of Object.keys(packEntry.resolvedSkills)) {
106
+ retained.add(fqn);
107
+ }
108
+ }
109
+ return retained;
110
+ };
111
+ export const skillsLockfileAlignedRule = {
112
+ id: RULE_ID,
113
+ description: "Skill lock entries correspond 1:1 to declared skills at satisfying versions.",
114
+ kind: "autofixing",
115
+ severity: "error",
116
+ check: (context) => Effect.gen(function* () {
117
+ const settingsResult = yield* Effect.result(context.workspace.settings);
118
+ const lockfileResult = yield* Effect.result(context.workspace.lockfile);
119
+ if (Result.isFailure(settingsResult) || Result.isFailure(lockfileResult)) {
120
+ return EMPTY_LINT_FINDINGS;
121
+ }
122
+ const settings = decodeSettings(settingsResult.success);
123
+ if (Option.isNone(settings)) {
124
+ return EMPTY_LINT_FINDINGS;
125
+ }
126
+ const lockOption = lockfileResult.success;
127
+ if (Option.isNone(lockOption)) {
128
+ // workspace/lockfile-valid owns the missing arm.
129
+ return EMPTY_LINT_FINDINGS;
130
+ }
131
+ const lockfile = decodeLockfile(lockOption.value);
132
+ if (Option.isNone(lockfile)) {
133
+ // workspace/lockfile-valid owns the schema arm.
134
+ return EMPTY_LINT_FINDINGS;
135
+ }
136
+ const declaredSkills = settings.value.skills ?? {};
137
+ const lockSkills = lockfile.value.skills;
138
+ const retainedFqns = buildRetainedSkillFqns(settings.value, lockfile.value);
139
+ const findings = [];
140
+ const affected = new Set();
141
+ // Arm 1: missing — declared but no lock entry.
142
+ for (const [name, entry] of Object.entries(declaredSkills)) {
143
+ if (!(name in lockSkills)) {
144
+ findings.push(missingFinding(name, entry.source));
145
+ affected.add(`declared:${name}`);
146
+ }
147
+ }
148
+ // Arm 2: orphan — lock entry but no declaration, and not retained by
149
+ // an installed declared pack.
150
+ for (const [name, entry] of Object.entries(lockSkills)) {
151
+ if (name in declaredSkills) {
152
+ continue;
153
+ }
154
+ if (entry.retainedByPack === true && retainedFqns.has(lockEntryFqn(entry, name))) {
155
+ continue;
156
+ }
157
+ findings.push(orphanFinding(name));
158
+ affected.add(`lock:${name}`);
159
+ }
160
+ // Arm 3: version skew — declared AND in lock, but registry-shaped
161
+ // source constraint not satisfied by resolvedVersion.
162
+ for (const [name, entry] of Object.entries(declaredSkills)) {
163
+ if (affected.has(`declared:${name}`)) {
164
+ continue;
165
+ }
166
+ const lockEntry = lockSkills[name];
167
+ if (lockEntry === undefined || !isRegistryEntry(lockEntry)) {
168
+ continue;
169
+ }
170
+ const parsed = parseRegistrySource(entry.source);
171
+ if (parsed === undefined) {
172
+ continue;
173
+ }
174
+ const constraint = parsed.versionConstraint;
175
+ if (constraint === undefined) {
176
+ continue;
177
+ }
178
+ // Simple exact-match semver check: the only non-heuristic arm we
179
+ // can enforce without pulling in the semver lib here. Range checks
180
+ // defer to the CLI adapter (Phase 5).
181
+ if (constraint !== lockEntry.resolvedVersion) {
182
+ findings.push(versionFinding(name, `declared ${constraint}, locked ${lockEntry.resolvedVersion}`));
183
+ }
184
+ }
185
+ return findings;
186
+ }),
187
+ fix: (context, finding) => Effect.gen(function* () {
188
+ const s0 = finding.suggestions[0];
189
+ if (s0.startsWith(SUG_MISSING_PREFIX)) {
190
+ const name = extractSkillName(s0);
191
+ if (name === undefined) {
192
+ return EMPTY_OPERATIONS;
193
+ }
194
+ const settingsResult = yield* Effect.result(context.workspace.settings);
195
+ if (Result.isFailure(settingsResult)) {
196
+ return EMPTY_OPERATIONS;
197
+ }
198
+ const settings = decodeSettings(settingsResult.success);
199
+ if (Option.isNone(settings)) {
200
+ return EMPTY_OPERATIONS;
201
+ }
202
+ const entry = settings.value.skills?.[name];
203
+ if (entry === undefined) {
204
+ return EMPTY_OPERATIONS;
205
+ }
206
+ return [installSkillOp({ name, source: entry.source, force: false })];
207
+ }
208
+ if (s0.startsWith(SUG_ORPHAN_PREFIX)) {
209
+ const name = extractSkillName(s0);
210
+ if (name === undefined) {
211
+ return EMPTY_OPERATIONS;
212
+ }
213
+ return [uninstallSkillOp({ name })];
214
+ }
215
+ if (s0.startsWith(SUG_VERSION_PREFIX)) {
216
+ const name = extractSkillName(s0);
217
+ if (name === undefined) {
218
+ return EMPTY_OPERATIONS;
219
+ }
220
+ const settingsResult = yield* Effect.result(context.workspace.settings);
221
+ if (Result.isFailure(settingsResult)) {
222
+ return EMPTY_OPERATIONS;
223
+ }
224
+ const settings = decodeSettings(settingsResult.success);
225
+ if (Option.isNone(settings)) {
226
+ return EMPTY_OPERATIONS;
227
+ }
228
+ const entry = settings.value.skills?.[name];
229
+ if (entry === undefined) {
230
+ return EMPTY_OPERATIONS;
231
+ }
232
+ return [installSkillOp({ name, source: entry.source, force: true })];
233
+ }
234
+ return EMPTY_OPERATIONS;
235
+ }),
236
+ };
237
+ const NAME_FROM_SUGGESTION_RE = /'([^']+)'/;
238
+ const extractSkillName = (suggestion) => {
239
+ const match = NAME_FROM_SUGGESTION_RE.exec(suggestion);
240
+ return match?.[1];
241
+ };
242
+ //# sourceMappingURL=skills-lockfile-aligned.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills-lockfile-aligned.js","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/workspace/skills-lockfile-aligned.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * `WorkspaceIndex` and `buildWorkspaceRuleContext`.
3
+ *
4
+ * The `WorkspaceIndex` satisfies both Phase 3a's `SkillIndexView` and Phase
5
+ * 3b's `PackIndexView` — it exposes `installedSkills: InstalledSkillInfo[]`
6
+ * and `installedPacks: InstalledPackInfo[]` with per-provenance
7
+ * `displayRoot`s:
8
+ *
9
+ * Registry-installed native skill: `.axm/extensions/<@owner>/skills/<name>/src/`
10
+ * External skill: `.axm/extensions/external/skills/<name>/`
11
+ * Registry pack: `.axm/extensions/<@owner>/packs/<name>/`
12
+ * (NO `src/` — matches the on-disk layout
13
+ * per Phase 3b finding.)
14
+ *
15
+ * The `buildWorkspaceRuleContext` helper constructs a `WorkspaceRuleContext`
16
+ * from a resolved `WorkspaceLintAccessor` and a requested scope. User-scope
17
+ * root resolution for v1 is `$AXM_USER_HOME/.axm/` when set, otherwise
18
+ * `$HOME/.axm/`; a follow-up owns the broader XDG story.
19
+ *
20
+ * @experimental This API is unstable and may change without notice.
21
+ * @packageDocumentation
22
+ */
23
+ import type * as FileSystem from "effect/FileSystem";
24
+ import type * as Path from "effect/Path";
25
+ import type { WorkspaceRuleContext } from "../../context.js";
26
+ import { type InstalledSkillInfo, type SkillIndexView } from "../skill-accessor/contexts.js";
27
+ import { type InstalledPackInfo, type PackIndexView } from "../pack-accessor/contexts.js";
28
+ import type { WorkspaceAccessorPlatform } from "./platform.js";
29
+ /**
30
+ * The `WorkspaceIndex` shape — satisfies `SkillIndexView` and `PackIndexView`
31
+ * simultaneously, so it can be passed to `buildSkillRuleContexts` and
32
+ * `buildPackRuleContexts` without adaptation. The implementation yields
33
+ * `SkillRuleContext[]` / `PackRuleContext[]` via the respective builders.
34
+ *
35
+ * @experimental This API is unstable and may change without notice.
36
+ */
37
+ export interface WorkspaceIndex extends SkillIndexView, PackIndexView {
38
+ readonly installedSkills: ReadonlyArray<InstalledSkillInfo>;
39
+ readonly installedPacks: ReadonlyArray<InstalledPackInfo>;
40
+ }
41
+ /**
42
+ * Argument shape for `buildWorkspaceRuleContext`.
43
+ */
44
+ export interface BuildWorkspaceRuleContextArgs {
45
+ readonly platform: WorkspaceAccessorPlatform;
46
+ readonly workspaceRoot: string;
47
+ readonly index: WorkspaceIndex;
48
+ readonly scope: "project" | "user";
49
+ /**
50
+ * Optional `displayRoot` override. Defaults to `""` (accessor-relative
51
+ * paths render under the workspace root).
52
+ */
53
+ readonly displayRoot?: string;
54
+ }
55
+ /**
56
+ * Construct a `WorkspaceRuleContext` scoped to project or user.
57
+ *
58
+ * @experimental This API is unstable and may change without notice.
59
+ */
60
+ export declare const buildWorkspaceRuleContext: (args: BuildWorkspaceRuleContextArgs) => WorkspaceRuleContext;
61
+ /**
62
+ * Compute the `displayRoot` for a registry-installed native skill.
63
+ *
64
+ * @experimental This API is unstable and may change without notice.
65
+ */
66
+ export declare const registryNativeSkillDisplayRoot: (owner: string, name: string) => string;
67
+ /**
68
+ * Compute the `displayRoot` for an external (non-native) skill.
69
+ *
70
+ * @experimental This API is unstable and may change without notice.
71
+ */
72
+ export declare const externalSkillDisplayRoot: (name: string) => string;
73
+ /**
74
+ * Compute the `displayRoot` for a registry-installed pack.
75
+ *
76
+ * **No `src/` segment** — matches the on-disk layout at
77
+ * `axm/packages/core/src/unstable/packs/paths.ts#computeExtensionPackPaths`
78
+ * (Phase 3b finding).
79
+ *
80
+ * @experimental This API is unstable and may change without notice.
81
+ */
82
+ export declare const registryPackDisplayRoot: (owner: string, name: string) => string;
83
+ /**
84
+ * Options for building an `InstalledSkillInfo` for a registry-installed
85
+ * native skill. `owner` and `name` pin the on-disk layout.
86
+ */
87
+ export interface BuildInstalledSkillInfoNativeArgs {
88
+ readonly platform: {
89
+ readonly fs: FileSystem.FileSystem;
90
+ readonly path: Path.Path;
91
+ };
92
+ readonly workspaceRoot: string;
93
+ readonly owner: string;
94
+ readonly name: string;
95
+ readonly skillJson: unknown;
96
+ }
97
+ /**
98
+ * Build an `InstalledSkillInfo` rooted at `.axm/extensions/<owner>/skills/<name>/src/`.
99
+ *
100
+ * @experimental This API is unstable and may change without notice.
101
+ */
102
+ export declare const buildNativeInstalledSkillInfo: (args: BuildInstalledSkillInfoNativeArgs) => InstalledSkillInfo;
103
+ /**
104
+ * Options for building an `InstalledSkillInfo` for an external (non-native) skill.
105
+ */
106
+ export interface BuildInstalledSkillInfoExternalArgs {
107
+ readonly platform: {
108
+ readonly fs: FileSystem.FileSystem;
109
+ readonly path: Path.Path;
110
+ };
111
+ readonly workspaceRoot: string;
112
+ readonly name: string;
113
+ }
114
+ /**
115
+ * Build an `InstalledSkillInfo` rooted at `.axm/extensions/external/skills/<name>/`.
116
+ *
117
+ * @experimental This API is unstable and may change without notice.
118
+ */
119
+ export declare const buildExternalInstalledSkillInfo: (args: BuildInstalledSkillInfoExternalArgs) => InstalledSkillInfo;
120
+ /**
121
+ * Options for building an `InstalledPackInfo` for a registry-installed pack.
122
+ */
123
+ export interface BuildInstalledPackInfoArgs {
124
+ readonly platform: {
125
+ readonly fs: FileSystem.FileSystem;
126
+ readonly path: Path.Path;
127
+ };
128
+ readonly workspaceRoot: string;
129
+ readonly owner: string;
130
+ readonly name: string;
131
+ readonly packJson: unknown;
132
+ }
133
+ /**
134
+ * Build an `InstalledPackInfo` rooted at `.axm/extensions/<owner>/packs/<name>/`.
135
+ *
136
+ * **No `src/` segment** — matches the on-disk pack layout.
137
+ *
138
+ * @experimental This API is unstable and may change without notice.
139
+ */
140
+ export declare const buildInstalledPackInfo: (args: BuildInstalledPackInfoArgs) => InstalledPackInfo;
141
+ //# sourceMappingURL=contexts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contexts.d.ts","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/workspace-accessor/contexts.ts"],"names":[],"mappings":"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"}