@agentxm/client-core 0.1.6 → 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 (500) hide show
  1. package/dist/src/unstable/agents/coding-agent.d.ts +1 -1
  2. package/dist/src/unstable/agents/coding-agent.d.ts.map +1 -1
  3. package/dist/src/unstable/agents/coding-agent.js +1 -1
  4. package/dist/src/unstable/agents/coding-agent.js.map +1 -1
  5. package/dist/src/unstable/auth/auth-client.d.ts +1 -1
  6. package/dist/src/unstable/auth/auth-client.d.ts.map +1 -1
  7. package/dist/src/unstable/auth/auth-client.js +1 -1
  8. package/dist/src/unstable/auth/auth-client.js.map +1 -1
  9. package/dist/src/unstable/auth/credential-store.d.ts +1 -1
  10. package/dist/src/unstable/auth/credential-store.d.ts.map +1 -1
  11. package/dist/src/unstable/auth/credential-store.js +1 -1
  12. package/dist/src/unstable/auth/credential-store.js.map +1 -1
  13. package/dist/src/unstable/auth/device-login.d.ts +1 -1
  14. package/dist/src/unstable/auth/device-login.d.ts.map +1 -1
  15. package/dist/src/unstable/auth/device-login.js +1 -1
  16. package/dist/src/unstable/auth/device-login.js.map +1 -1
  17. package/dist/src/unstable/auth/guard-interaction.d.ts +1 -1
  18. package/dist/src/unstable/auth/guard-interaction.d.ts.map +1 -1
  19. package/dist/src/unstable/auth/guard-interaction.js +1 -1
  20. package/dist/src/unstable/auth/guard-interaction.js.map +1 -1
  21. package/dist/src/unstable/auth/login-interaction.d.ts +1 -1
  22. package/dist/src/unstable/auth/login-interaction.d.ts.map +1 -1
  23. package/dist/src/unstable/auth/login-interaction.js +1 -1
  24. package/dist/src/unstable/auth/login-interaction.js.map +1 -1
  25. package/dist/src/unstable/auth/registry-url.d.ts +1 -1
  26. package/dist/src/unstable/auth/registry-url.d.ts.map +1 -1
  27. package/dist/src/unstable/auth/registry-url.js +1 -1
  28. package/dist/src/unstable/auth/registry-url.js.map +1 -1
  29. package/dist/src/unstable/auth/schema.d.ts +3 -3
  30. package/dist/src/unstable/cli-flags/verbosity.d.ts +1 -1
  31. package/dist/src/unstable/cli-flags/verbosity.d.ts.map +1 -1
  32. package/dist/src/unstable/cli-flags/verbosity.js +1 -1
  33. package/dist/src/unstable/cli-flags/verbosity.js.map +1 -1
  34. package/dist/src/unstable/cli-renderer/cli-renderer.d.ts +1 -1
  35. package/dist/src/unstable/cli-renderer/cli-renderer.d.ts.map +1 -1
  36. package/dist/src/unstable/cli-renderer/cli-renderer.js +1 -1
  37. package/dist/src/unstable/cli-renderer/cli-renderer.js.map +1 -1
  38. package/dist/src/unstable/cli-runtime/command-argv.d.ts +1 -1
  39. package/dist/src/unstable/cli-runtime/command-argv.d.ts.map +1 -1
  40. package/dist/src/unstable/cli-runtime/command-argv.js +1 -1
  41. package/dist/src/unstable/cli-runtime/command-argv.js.map +1 -1
  42. package/dist/src/unstable/cli-runtime/graceful-shutdown.js +1 -1
  43. package/dist/src/unstable/cli-runtime/graceful-shutdown.js.map +1 -1
  44. package/dist/src/unstable/cli-runtime/telemetry.d.ts +1 -1
  45. package/dist/src/unstable/cli-runtime/telemetry.d.ts.map +1 -1
  46. package/dist/src/unstable/cli-runtime/telemetry.js +1 -1
  47. package/dist/src/unstable/cli-runtime/telemetry.js.map +1 -1
  48. package/dist/src/unstable/commands/manager.d.ts +1 -1
  49. package/dist/src/unstable/commands/manager.d.ts.map +1 -1
  50. package/dist/src/unstable/commands/manager.js +1 -1
  51. package/dist/src/unstable/commands/manager.js.map +1 -1
  52. package/dist/src/unstable/commands/operations/disable.d.ts +2 -2
  53. package/dist/src/unstable/commands/operations/disable.d.ts.map +1 -1
  54. package/dist/src/unstable/commands/operations/enable.d.ts +2 -2
  55. package/dist/src/unstable/commands/operations/enable.d.ts.map +1 -1
  56. package/dist/src/unstable/commands/operations/install.d.ts +1 -1
  57. package/dist/src/unstable/commands/operations/install.d.ts.map +1 -1
  58. package/dist/src/unstable/commands/operations/new-command.d.ts +2 -2
  59. package/dist/src/unstable/commands/operations/new-command.d.ts.map +1 -1
  60. package/dist/src/unstable/commands/operations/publish.d.ts +1 -1
  61. package/dist/src/unstable/commands/operations/publish.d.ts.map +1 -1
  62. package/dist/src/unstable/commands/operations/uninstall.d.ts +1 -1
  63. package/dist/src/unstable/commands/operations/uninstall.d.ts.map +1 -1
  64. package/dist/src/unstable/date-time.d.ts +2 -2
  65. package/dist/src/unstable/date-time.d.ts.map +1 -1
  66. package/dist/src/unstable/extensions/operations.d.ts +1 -1
  67. package/dist/src/unstable/extensions/operations.d.ts.map +1 -1
  68. package/dist/src/unstable/install-meta/install-meta.d.ts +1 -1
  69. package/dist/src/unstable/install-meta/install-meta.d.ts.map +1 -1
  70. package/dist/src/unstable/install-meta/install-meta.js +1 -1
  71. package/dist/src/unstable/install-meta/install-meta.js.map +1 -1
  72. package/dist/src/unstable/install-method/install-method.d.ts +1 -1
  73. package/dist/src/unstable/install-method/install-method.d.ts.map +1 -1
  74. package/dist/src/unstable/install-method/install-method.js +1 -1
  75. package/dist/src/unstable/install-method/install-method.js.map +1 -1
  76. package/dist/src/unstable/lint/catalog/index.d.ts +39 -0
  77. package/dist/src/unstable/lint/catalog/index.d.ts.map +1 -0
  78. package/dist/src/unstable/lint/catalog/index.js +49 -0
  79. package/dist/src/unstable/lint/catalog/index.js.map +1 -0
  80. package/dist/src/unstable/lint/catalog/pack/manifest-keys-recognized.d.ts +31 -0
  81. package/dist/src/unstable/lint/catalog/pack/manifest-keys-recognized.d.ts.map +1 -0
  82. package/dist/src/unstable/lint/catalog/pack/manifest-keys-recognized.js +41 -0
  83. package/dist/src/unstable/lint/catalog/pack/manifest-keys-recognized.js.map +1 -0
  84. package/dist/src/unstable/lint/catalog/pack/manifest-present.d.ts +18 -0
  85. package/dist/src/unstable/lint/catalog/pack/manifest-present.d.ts.map +1 -0
  86. package/dist/src/unstable/lint/catalog/pack/manifest-present.js +41 -0
  87. package/dist/src/unstable/lint/catalog/pack/manifest-present.js.map +1 -0
  88. package/dist/src/unstable/lint/catalog/pack/manifest-schema-valid.d.ts +26 -0
  89. package/dist/src/unstable/lint/catalog/pack/manifest-schema-valid.d.ts.map +1 -0
  90. package/dist/src/unstable/lint/catalog/pack/manifest-schema-valid.js +34 -0
  91. package/dist/src/unstable/lint/catalog/pack/manifest-schema-valid.js.map +1 -0
  92. package/dist/src/unstable/lint/catalog/pack-accessor/contexts.d.ts +61 -0
  93. package/dist/src/unstable/lint/catalog/pack-accessor/contexts.d.ts.map +1 -0
  94. package/dist/src/unstable/lint/catalog/pack-accessor/contexts.js +46 -0
  95. package/dist/src/unstable/lint/catalog/pack-accessor/contexts.js.map +1 -0
  96. package/dist/src/unstable/lint/catalog/pack-accessor/platform.d.ts +53 -0
  97. package/dist/src/unstable/lint/catalog/pack-accessor/platform.d.ts.map +1 -0
  98. package/dist/src/unstable/lint/catalog/pack-accessor/platform.js +90 -0
  99. package/dist/src/unstable/lint/catalog/pack-accessor/platform.js.map +1 -0
  100. package/dist/src/unstable/lint/catalog/pack-accessor/vft.d.ts +60 -0
  101. package/dist/src/unstable/lint/catalog/pack-accessor/vft.d.ts.map +1 -0
  102. package/dist/src/unstable/lint/catalog/pack-accessor/vft.js +85 -0
  103. package/dist/src/unstable/lint/catalog/pack-accessor/vft.js.map +1 -0
  104. package/dist/src/unstable/lint/catalog/pack.d.ts +37 -0
  105. package/dist/src/unstable/lint/catalog/pack.d.ts.map +1 -0
  106. package/dist/src/unstable/lint/catalog/pack.js +47 -0
  107. package/dist/src/unstable/lint/catalog/pack.js.map +1 -0
  108. package/dist/src/unstable/lint/catalog/shared/schema-rule.d.ts +59 -0
  109. package/dist/src/unstable/lint/catalog/shared/schema-rule.d.ts.map +1 -0
  110. package/dist/src/unstable/lint/catalog/shared/schema-rule.js +99 -0
  111. package/dist/src/unstable/lint/catalog/shared/schema-rule.js.map +1 -0
  112. package/dist/src/unstable/lint/catalog/skill/frontmatter-parseable.d.ts +31 -0
  113. package/dist/src/unstable/lint/catalog/skill/frontmatter-parseable.d.ts.map +1 -0
  114. package/dist/src/unstable/lint/catalog/skill/frontmatter-parseable.js +151 -0
  115. package/dist/src/unstable/lint/catalog/skill/frontmatter-parseable.js.map +1 -0
  116. package/dist/src/unstable/lint/catalog/skill/manifest-keys-recognized.d.ts +26 -0
  117. package/dist/src/unstable/lint/catalog/skill/manifest-keys-recognized.d.ts.map +1 -0
  118. package/dist/src/unstable/lint/catalog/skill/manifest-keys-recognized.js +41 -0
  119. package/dist/src/unstable/lint/catalog/skill/manifest-keys-recognized.js.map +1 -0
  120. package/dist/src/unstable/lint/catalog/skill/manifest-present.d.ts +18 -0
  121. package/dist/src/unstable/lint/catalog/skill/manifest-present.d.ts.map +1 -0
  122. package/dist/src/unstable/lint/catalog/skill/manifest-present.js +46 -0
  123. package/dist/src/unstable/lint/catalog/skill/manifest-present.js.map +1 -0
  124. package/dist/src/unstable/lint/catalog/skill/manifest-schema-valid.d.ts +22 -0
  125. package/dist/src/unstable/lint/catalog/skill/manifest-schema-valid.d.ts.map +1 -0
  126. package/dist/src/unstable/lint/catalog/skill/manifest-schema-valid.js +37 -0
  127. package/dist/src/unstable/lint/catalog/skill/manifest-schema-valid.js.map +1 -0
  128. package/dist/src/unstable/lint/catalog/skill/skill-md-present.d.ts +17 -0
  129. package/dist/src/unstable/lint/catalog/skill/skill-md-present.d.ts.map +1 -0
  130. package/dist/src/unstable/lint/catalog/skill/skill-md-present.js +38 -0
  131. package/dist/src/unstable/lint/catalog/skill/skill-md-present.js.map +1 -0
  132. package/dist/src/unstable/lint/catalog/skill-accessor/contexts.d.ts +65 -0
  133. package/dist/src/unstable/lint/catalog/skill-accessor/contexts.d.ts.map +1 -0
  134. package/dist/src/unstable/lint/catalog/skill-accessor/contexts.js +50 -0
  135. package/dist/src/unstable/lint/catalog/skill-accessor/contexts.js.map +1 -0
  136. package/dist/src/unstable/lint/catalog/skill-accessor/platform.d.ts +52 -0
  137. package/dist/src/unstable/lint/catalog/skill-accessor/platform.d.ts.map +1 -0
  138. package/dist/src/unstable/lint/catalog/skill-accessor/platform.js +89 -0
  139. package/dist/src/unstable/lint/catalog/skill-accessor/platform.js.map +1 -0
  140. package/dist/src/unstable/lint/catalog/skill-accessor/vft.d.ts +58 -0
  141. package/dist/src/unstable/lint/catalog/skill-accessor/vft.d.ts.map +1 -0
  142. package/dist/src/unstable/lint/catalog/skill-accessor/vft.js +83 -0
  143. package/dist/src/unstable/lint/catalog/skill-accessor/vft.js.map +1 -0
  144. package/dist/src/unstable/lint/catalog/skill.d.ts +38 -0
  145. package/dist/src/unstable/lint/catalog/skill.d.ts.map +1 -0
  146. package/dist/src/unstable/lint/catalog/skill.js +52 -0
  147. package/dist/src/unstable/lint/catalog/skill.js.map +1 -0
  148. package/dist/src/unstable/lint/catalog/workspace/agents-detected-declared.d.ts +23 -0
  149. package/dist/src/unstable/lint/catalog/workspace/agents-detected-declared.d.ts.map +1 -0
  150. package/dist/src/unstable/lint/catalog/workspace/agents-detected-declared.js +75 -0
  151. package/dist/src/unstable/lint/catalog/workspace/agents-detected-declared.js.map +1 -0
  152. package/dist/src/unstable/lint/catalog/workspace/agents-recognized.d.ts +23 -0
  153. package/dist/src/unstable/lint/catalog/workspace/agents-recognized.d.ts.map +1 -0
  154. package/dist/src/unstable/lint/catalog/workspace/agents-recognized.js +76 -0
  155. package/dist/src/unstable/lint/catalog/workspace/agents-recognized.js.map +1 -0
  156. package/dist/src/unstable/lint/catalog/workspace/helpers/empty.d.ts +18 -0
  157. package/dist/src/unstable/lint/catalog/workspace/helpers/empty.d.ts.map +1 -0
  158. package/dist/src/unstable/lint/catalog/workspace/helpers/empty.js +16 -0
  159. package/dist/src/unstable/lint/catalog/workspace/helpers/empty.js.map +1 -0
  160. package/dist/src/unstable/lint/catalog/workspace/helpers/install-ops.d.ts +133 -0
  161. package/dist/src/unstable/lint/catalog/workspace/helpers/install-ops.d.ts.map +1 -0
  162. package/dist/src/unstable/lint/catalog/workspace/helpers/install-ops.js +149 -0
  163. package/dist/src/unstable/lint/catalog/workspace/helpers/install-ops.js.map +1 -0
  164. package/dist/src/unstable/lint/catalog/workspace/helpers/registry-source.d.ts +25 -0
  165. package/dist/src/unstable/lint/catalog/workspace/helpers/registry-source.d.ts.map +1 -0
  166. package/dist/src/unstable/lint/catalog/workspace/helpers/registry-source.js +30 -0
  167. package/dist/src/unstable/lint/catalog/workspace/helpers/registry-source.js.map +1 -0
  168. package/dist/src/unstable/lint/catalog/workspace/initialized.d.ts +22 -0
  169. package/dist/src/unstable/lint/catalog/workspace/initialized.d.ts.map +1 -0
  170. package/dist/src/unstable/lint/catalog/workspace/initialized.js +55 -0
  171. package/dist/src/unstable/lint/catalog/workspace/initialized.js.map +1 -0
  172. package/dist/src/unstable/lint/catalog/workspace/lockfile-valid.d.ts +33 -0
  173. package/dist/src/unstable/lint/catalog/workspace/lockfile-valid.d.ts.map +1 -0
  174. package/dist/src/unstable/lint/catalog/workspace/lockfile-valid.js +125 -0
  175. package/dist/src/unstable/lint/catalog/workspace/lockfile-valid.js.map +1 -0
  176. package/dist/src/unstable/lint/catalog/workspace/packs-declarations-valid.d.ts +19 -0
  177. package/dist/src/unstable/lint/catalog/workspace/packs-declarations-valid.d.ts.map +1 -0
  178. package/dist/src/unstable/lint/catalog/workspace/packs-declarations-valid.js +145 -0
  179. package/dist/src/unstable/lint/catalog/workspace/packs-declarations-valid.js.map +1 -0
  180. package/dist/src/unstable/lint/catalog/workspace/packs-dependencies-resolved.d.ts +17 -0
  181. package/dist/src/unstable/lint/catalog/workspace/packs-dependencies-resolved.d.ts.map +1 -0
  182. package/dist/src/unstable/lint/catalog/workspace/packs-dependencies-resolved.js +107 -0
  183. package/dist/src/unstable/lint/catalog/workspace/packs-dependencies-resolved.js.map +1 -0
  184. package/dist/src/unstable/lint/catalog/workspace/packs-members-retained.d.ts +22 -0
  185. package/dist/src/unstable/lint/catalog/workspace/packs-members-retained.d.ts.map +1 -0
  186. package/dist/src/unstable/lint/catalog/workspace/packs-members-retained.js +163 -0
  187. package/dist/src/unstable/lint/catalog/workspace/packs-members-retained.js.map +1 -0
  188. package/dist/src/unstable/lint/catalog/workspace/settings-schema-valid.d.ts +28 -0
  189. package/dist/src/unstable/lint/catalog/workspace/settings-schema-valid.d.ts.map +1 -0
  190. package/dist/src/unstable/lint/catalog/workspace/settings-schema-valid.js +67 -0
  191. package/dist/src/unstable/lint/catalog/workspace/settings-schema-valid.js.map +1 -0
  192. package/dist/src/unstable/lint/catalog/workspace/skills-artifacts-clean.d.ts +30 -0
  193. package/dist/src/unstable/lint/catalog/workspace/skills-artifacts-clean.d.ts.map +1 -0
  194. package/dist/src/unstable/lint/catalog/workspace/skills-artifacts-clean.js +232 -0
  195. package/dist/src/unstable/lint/catalog/workspace/skills-artifacts-clean.js.map +1 -0
  196. package/dist/src/unstable/lint/catalog/workspace/skills-artifacts-correct.d.ts +26 -0
  197. package/dist/src/unstable/lint/catalog/workspace/skills-artifacts-correct.d.ts.map +1 -0
  198. package/dist/src/unstable/lint/catalog/workspace/skills-artifacts-correct.js +129 -0
  199. package/dist/src/unstable/lint/catalog/workspace/skills-artifacts-correct.js.map +1 -0
  200. package/dist/src/unstable/lint/catalog/workspace/skills-declarations-valid.d.ts +26 -0
  201. package/dist/src/unstable/lint/catalog/workspace/skills-declarations-valid.d.ts.map +1 -0
  202. package/dist/src/unstable/lint/catalog/workspace/skills-declarations-valid.js +151 -0
  203. package/dist/src/unstable/lint/catalog/workspace/skills-declarations-valid.js.map +1 -0
  204. package/dist/src/unstable/lint/catalog/workspace/skills-integrity-valid.d.ts +29 -0
  205. package/dist/src/unstable/lint/catalog/workspace/skills-integrity-valid.d.ts.map +1 -0
  206. package/dist/src/unstable/lint/catalog/workspace/skills-integrity-valid.js +149 -0
  207. package/dist/src/unstable/lint/catalog/workspace/skills-integrity-valid.js.map +1 -0
  208. package/dist/src/unstable/lint/catalog/workspace/skills-lockfile-aligned.d.ts +29 -0
  209. package/dist/src/unstable/lint/catalog/workspace/skills-lockfile-aligned.d.ts.map +1 -0
  210. package/dist/src/unstable/lint/catalog/workspace/skills-lockfile-aligned.js +242 -0
  211. package/dist/src/unstable/lint/catalog/workspace/skills-lockfile-aligned.js.map +1 -0
  212. package/dist/src/unstable/lint/catalog/workspace-accessor/contexts.d.ts +141 -0
  213. package/dist/src/unstable/lint/catalog/workspace-accessor/contexts.d.ts.map +1 -0
  214. package/dist/src/unstable/lint/catalog/workspace-accessor/contexts.js +123 -0
  215. package/dist/src/unstable/lint/catalog/workspace-accessor/contexts.js.map +1 -0
  216. package/dist/src/unstable/lint/catalog/workspace-accessor/interpret-ops.d.ts +38 -0
  217. package/dist/src/unstable/lint/catalog/workspace-accessor/interpret-ops.d.ts.map +1 -0
  218. package/dist/src/unstable/lint/catalog/workspace-accessor/interpret-ops.js +311 -0
  219. package/dist/src/unstable/lint/catalog/workspace-accessor/interpret-ops.js.map +1 -0
  220. package/dist/src/unstable/lint/catalog/workspace-accessor/platform.d.ts +60 -0
  221. package/dist/src/unstable/lint/catalog/workspace-accessor/platform.d.ts.map +1 -0
  222. package/dist/src/unstable/lint/catalog/workspace-accessor/platform.js +201 -0
  223. package/dist/src/unstable/lint/catalog/workspace-accessor/platform.js.map +1 -0
  224. package/dist/src/unstable/lint/catalog/workspace-accessor/test-state.d.ts +65 -0
  225. package/dist/src/unstable/lint/catalog/workspace-accessor/test-state.d.ts.map +1 -0
  226. package/dist/src/unstable/lint/catalog/workspace-accessor/test-state.js +95 -0
  227. package/dist/src/unstable/lint/catalog/workspace-accessor/test-state.js.map +1 -0
  228. package/dist/src/unstable/lint/catalog/workspace.d.ts +47 -0
  229. package/dist/src/unstable/lint/catalog/workspace.d.ts.map +1 -0
  230. package/dist/src/unstable/lint/catalog/workspace.js +80 -0
  231. package/dist/src/unstable/lint/catalog/workspace.js.map +1 -0
  232. package/dist/src/unstable/lint/cli.d.ts +297 -0
  233. package/dist/src/unstable/lint/cli.d.ts.map +1 -0
  234. package/dist/src/unstable/lint/cli.js +388 -0
  235. package/dist/src/unstable/lint/cli.js.map +1 -0
  236. package/dist/src/unstable/lint/compose-path.d.ts +27 -0
  237. package/dist/src/unstable/lint/compose-path.d.ts.map +1 -0
  238. package/dist/src/unstable/lint/compose-path.js +61 -0
  239. package/dist/src/unstable/lint/compose-path.js.map +1 -0
  240. package/dist/src/unstable/lint/config.d.ts +103 -0
  241. package/dist/src/unstable/lint/config.d.ts.map +1 -0
  242. package/dist/src/unstable/lint/config.js +137 -0
  243. package/dist/src/unstable/lint/config.js.map +1 -0
  244. package/dist/src/unstable/lint/context.d.ts +265 -0
  245. package/dist/src/unstable/lint/context.d.ts.map +1 -0
  246. package/dist/src/unstable/lint/context.js +21 -0
  247. package/dist/src/unstable/lint/context.js.map +1 -0
  248. package/dist/src/unstable/lint/evaluate.d.ts +68 -0
  249. package/dist/src/unstable/lint/evaluate.d.ts.map +1 -0
  250. package/dist/src/unstable/lint/evaluate.js +147 -0
  251. package/dist/src/unstable/lint/evaluate.js.map +1 -0
  252. package/dist/src/unstable/lint/index.d.ts +28 -0
  253. package/dist/src/unstable/lint/index.d.ts.map +1 -0
  254. package/dist/src/unstable/lint/index.js +35 -0
  255. package/dist/src/unstable/lint/index.js.map +1 -0
  256. package/dist/src/unstable/lint/issues-to-findings.d.ts +35 -0
  257. package/dist/src/unstable/lint/issues-to-findings.d.ts.map +1 -0
  258. package/dist/src/unstable/lint/issues-to-findings.js +97 -0
  259. package/dist/src/unstable/lint/issues-to-findings.js.map +1 -0
  260. package/dist/src/unstable/lint/rule.d.ts +139 -0
  261. package/dist/src/unstable/lint/rule.d.ts.map +1 -0
  262. package/dist/src/unstable/lint/rule.js +25 -0
  263. package/dist/src/unstable/lint/rule.js.map +1 -0
  264. package/dist/src/unstable/lockfile/schema.d.ts +404 -404
  265. package/dist/src/unstable/mcp-servers/manager.d.ts +1 -1
  266. package/dist/src/unstable/mcp-servers/manager.d.ts.map +1 -1
  267. package/dist/src/unstable/mcp-servers/manager.js +1 -1
  268. package/dist/src/unstable/mcp-servers/manager.js.map +1 -1
  269. package/dist/src/unstable/mcp-servers/operations/install.d.ts +1 -1
  270. package/dist/src/unstable/mcp-servers/operations/install.d.ts.map +1 -1
  271. package/dist/src/unstable/mcp-servers/operations/publish.d.ts +1 -1
  272. package/dist/src/unstable/mcp-servers/operations/publish.d.ts.map +1 -1
  273. package/dist/src/unstable/mcp-servers/operations/uninstall.d.ts +1 -1
  274. package/dist/src/unstable/mcp-servers/operations/uninstall.d.ts.map +1 -1
  275. package/dist/src/unstable/packs/manager.d.ts +1 -1
  276. package/dist/src/unstable/packs/manager.d.ts.map +1 -1
  277. package/dist/src/unstable/packs/manager.js +1 -1
  278. package/dist/src/unstable/packs/manager.js.map +1 -1
  279. package/dist/src/unstable/packs/operations/add-to-pack.d.ts +2 -2
  280. package/dist/src/unstable/packs/operations/add-to-pack.d.ts.map +1 -1
  281. package/dist/src/unstable/packs/operations/install.d.ts +2 -2
  282. package/dist/src/unstable/packs/operations/install.d.ts.map +1 -1
  283. package/dist/src/unstable/packs/operations/install.js +41 -0
  284. package/dist/src/unstable/packs/operations/install.js.map +1 -1
  285. package/dist/src/unstable/packs/operations/new-pack.d.ts +2 -2
  286. package/dist/src/unstable/packs/operations/new-pack.d.ts.map +1 -1
  287. package/dist/src/unstable/packs/operations/publish.d.ts +2 -2
  288. package/dist/src/unstable/packs/operations/publish.d.ts.map +1 -1
  289. package/dist/src/unstable/packs/operations/publish.js +1 -0
  290. package/dist/src/unstable/packs/operations/publish.js.map +1 -1
  291. package/dist/src/unstable/packs/operations/remove-from-pack.d.ts +2 -2
  292. package/dist/src/unstable/packs/operations/remove-from-pack.d.ts.map +1 -1
  293. package/dist/src/unstable/packs/operations/uninstall.d.ts +2 -2
  294. package/dist/src/unstable/packs/operations/uninstall.d.ts.map +1 -1
  295. package/dist/src/unstable/packs/operations/unpack.d.ts +2 -2
  296. package/dist/src/unstable/packs/operations/unpack.d.ts.map +1 -1
  297. package/dist/src/unstable/{workspace → plan}/apply-plan.d.ts +9 -0
  298. package/dist/src/unstable/plan/apply-plan.d.ts.map +1 -0
  299. package/dist/src/unstable/{workspace → plan}/apply-plan.js +10 -1
  300. package/dist/src/unstable/plan/apply-plan.js.map +1 -0
  301. package/dist/src/unstable/plan/index.d.ts +24 -0
  302. package/dist/src/unstable/plan/index.d.ts.map +1 -0
  303. package/dist/src/unstable/plan/index.js +28 -0
  304. package/dist/src/unstable/plan/index.js.map +1 -0
  305. package/dist/src/unstable/{workspace → plan}/plan.d.ts +6 -0
  306. package/dist/src/unstable/plan/plan.d.ts.map +1 -0
  307. package/dist/src/unstable/{workspace → plan}/plan.js +6 -0
  308. package/dist/src/unstable/plan/plan.js.map +1 -0
  309. package/dist/src/unstable/{workspace → plan}/resolve-plan.d.ts +30 -2
  310. package/dist/src/unstable/plan/resolve-plan.d.ts.map +1 -0
  311. package/dist/src/unstable/{workspace → plan}/resolve-plan.js +37 -6
  312. package/dist/src/unstable/plan/resolve-plan.js.map +1 -0
  313. package/dist/src/unstable/publish/manifest-policy.d.ts +8 -8
  314. package/dist/src/unstable/registry/__generated__/registry-client.d.ts +675 -518
  315. package/dist/src/unstable/registry/__generated__/registry-client.d.ts.map +1 -1
  316. package/dist/src/unstable/registry/__generated__/registry-client.js +546 -396
  317. package/dist/src/unstable/registry/__generated__/registry-client.js.map +1 -1
  318. package/dist/src/unstable/registry/remote-client.d.ts.map +1 -1
  319. package/dist/src/unstable/registry/remote-client.js +123 -18
  320. package/dist/src/unstable/registry/remote-client.js.map +1 -1
  321. package/dist/src/unstable/registry/schema.d.ts +2 -2
  322. package/dist/src/unstable/settings/index.d.ts +2 -0
  323. package/dist/src/unstable/settings/index.d.ts.map +1 -1
  324. package/dist/src/unstable/settings/index.js +1 -0
  325. package/dist/src/unstable/settings/index.js.map +1 -1
  326. package/dist/src/unstable/settings/schema.d.ts +3 -0
  327. package/dist/src/unstable/settings/schema.d.ts.map +1 -1
  328. package/dist/src/unstable/settings/schema.js +3 -0
  329. package/dist/src/unstable/settings/schema.js.map +1 -1
  330. package/dist/src/unstable/settings/settings.d.ts +10 -0
  331. package/dist/src/unstable/settings/settings.d.ts.map +1 -1
  332. package/dist/src/unstable/skills/manager.d.ts +1 -1
  333. package/dist/src/unstable/skills/manager.d.ts.map +1 -1
  334. package/dist/src/unstable/skills/manager.js +2 -2
  335. package/dist/src/unstable/skills/manager.js.map +1 -1
  336. package/dist/src/unstable/skills/materialization.js +1 -1
  337. package/dist/src/unstable/skills/materialization.js.map +1 -1
  338. package/dist/src/unstable/skills/operations/copy.d.ts +2 -2
  339. package/dist/src/unstable/skills/operations/copy.d.ts.map +1 -1
  340. package/dist/src/unstable/skills/operations/disable.d.ts +2 -2
  341. package/dist/src/unstable/skills/operations/disable.d.ts.map +1 -1
  342. package/dist/src/unstable/skills/operations/enable.d.ts +2 -2
  343. package/dist/src/unstable/skills/operations/enable.d.ts.map +1 -1
  344. package/dist/src/unstable/skills/operations/install.d.ts +2 -2
  345. package/dist/src/unstable/skills/operations/install.d.ts.map +1 -1
  346. package/dist/src/unstable/skills/operations/install.js +1 -1
  347. package/dist/src/unstable/skills/operations/install.js.map +1 -1
  348. package/dist/src/unstable/skills/operations/new-skill.d.ts +2 -2
  349. package/dist/src/unstable/skills/operations/new-skill.d.ts.map +1 -1
  350. package/dist/src/unstable/skills/operations/publish.d.ts +2 -2
  351. package/dist/src/unstable/skills/operations/publish.d.ts.map +1 -1
  352. package/dist/src/unstable/skills/operations/rename.d.ts +2 -2
  353. package/dist/src/unstable/skills/operations/rename.d.ts.map +1 -1
  354. package/dist/src/unstable/skills/operations/uninstall.d.ts +2 -2
  355. package/dist/src/unstable/skills/operations/uninstall.d.ts.map +1 -1
  356. package/dist/src/unstable/skills/operations/uninstall.js +1 -1
  357. package/dist/src/unstable/skills/operations/uninstall.js.map +1 -1
  358. package/dist/src/unstable/source-resolution/service.d.ts +1 -1
  359. package/dist/src/unstable/source-resolution/service.d.ts.map +1 -1
  360. package/dist/src/unstable/source-resolution/service.js +1 -1
  361. package/dist/src/unstable/source-resolution/service.js.map +1 -1
  362. package/dist/src/unstable/sources/types.d.ts +29 -29
  363. package/dist/src/unstable/sources/types.d.ts.map +1 -1
  364. package/dist/src/unstable/subagents/manager.d.ts +1 -1
  365. package/dist/src/unstable/subagents/manager.d.ts.map +1 -1
  366. package/dist/src/unstable/subagents/manager.js +4 -4
  367. package/dist/src/unstable/subagents/manager.js.map +1 -1
  368. package/dist/src/unstable/subagents/manifest-schema.js +2 -2
  369. package/dist/src/unstable/subagents/manifest-schema.js.map +1 -1
  370. package/dist/src/unstable/subagents/operations/disable.d.ts +2 -2
  371. package/dist/src/unstable/subagents/operations/disable.d.ts.map +1 -1
  372. package/dist/src/unstable/subagents/operations/enable.d.ts +2 -2
  373. package/dist/src/unstable/subagents/operations/enable.d.ts.map +1 -1
  374. package/dist/src/unstable/subagents/operations/publish.d.ts +2 -2
  375. package/dist/src/unstable/subagents/operations/publish.d.ts.map +1 -1
  376. package/dist/src/unstable/telemetry/__generated__/telemetry-client.d.ts +20 -12
  377. package/dist/src/unstable/telemetry/__generated__/telemetry-client.d.ts.map +1 -1
  378. package/dist/src/unstable/telemetry/__generated__/telemetry-client.js +11 -3
  379. package/dist/src/unstable/telemetry/__generated__/telemetry-client.js.map +1 -1
  380. package/dist/src/unstable/telemetry/client.d.ts +1 -1
  381. package/dist/src/unstable/telemetry/client.d.ts.map +1 -1
  382. package/dist/src/unstable/telemetry/client.js +1 -1
  383. package/dist/src/unstable/telemetry/client.js.map +1 -1
  384. package/dist/src/unstable/update-check/update-check.d.ts +1 -1
  385. package/dist/src/unstable/update-check/update-check.d.ts.map +1 -1
  386. package/dist/src/unstable/update-check/update-check.js +1 -1
  387. package/dist/src/unstable/update-check/update-check.js.map +1 -1
  388. package/dist/src/unstable/utils/fs-helpers.d.ts +7 -6
  389. package/dist/src/unstable/utils/fs-helpers.d.ts.map +1 -1
  390. package/dist/src/unstable/utils/fs-helpers.js +9 -9
  391. package/dist/src/unstable/utils/fs-helpers.js.map +1 -1
  392. package/dist/src/unstable/workflows/install-command/workflow.d.ts +1 -1
  393. package/dist/src/unstable/workflows/install-command/workflow.d.ts.map +1 -1
  394. package/dist/src/unstable/workflows/install-command/workflow.js +1 -1
  395. package/dist/src/unstable/workflows/install-command/workflow.js.map +1 -1
  396. package/dist/src/unstable/workflows/uninstall-command/workflow.d.ts +1 -1
  397. package/dist/src/unstable/workflows/uninstall-command/workflow.d.ts.map +1 -1
  398. package/dist/src/unstable/workflows/uninstall-command/workflow.js +1 -1
  399. package/dist/src/unstable/workflows/uninstall-command/workflow.js.map +1 -1
  400. package/dist/src/unstable/workspace/augment-plan.d.ts +1 -1
  401. package/dist/src/unstable/workspace/augment-plan.d.ts.map +1 -1
  402. package/dist/src/unstable/workspace/display-plan.d.ts +1 -1
  403. package/dist/src/unstable/workspace/display-plan.d.ts.map +1 -1
  404. package/dist/src/unstable/workspace/display-plan.js +1 -1
  405. package/dist/src/unstable/workspace/display-plan.js.map +1 -1
  406. package/dist/src/unstable/workspace/index.d.ts +1 -5
  407. package/dist/src/unstable/workspace/index.d.ts.map +1 -1
  408. package/dist/src/unstable/workspace/index.js +5 -7
  409. package/dist/src/unstable/workspace/index.js.map +1 -1
  410. package/dist/src/unstable/workspace/initialization-interaction.d.ts +1 -1
  411. package/dist/src/unstable/workspace/initialization-interaction.d.ts.map +1 -1
  412. package/dist/src/unstable/workspace/initialization-interaction.js +1 -1
  413. package/dist/src/unstable/workspace/initialization-interaction.js.map +1 -1
  414. package/dist/src/unstable/workspace/initialization.d.ts +15 -0
  415. package/dist/src/unstable/workspace/initialization.d.ts.map +1 -1
  416. package/dist/src/unstable/workspace/initialization.js +2 -2
  417. package/dist/src/unstable/workspace/initialization.js.map +1 -1
  418. package/dist/src/unstable/workspace/paths.d.ts +4 -21
  419. package/dist/src/unstable/workspace/paths.d.ts.map +1 -1
  420. package/dist/src/unstable/workspace/paths.js +19 -8
  421. package/dist/src/unstable/workspace/paths.js.map +1 -1
  422. package/dist/src/unstable/workspace/reconciliation.d.ts +1 -1
  423. package/dist/src/unstable/workspace/reconciliation.d.ts.map +1 -1
  424. package/dist/src/unstable/workspace/resolve-plan-interaction.d.ts +1 -1
  425. package/dist/src/unstable/workspace/resolve-plan-interaction.d.ts.map +1 -1
  426. package/dist/src/unstable/workspace/resolve-plan-interaction.js +1 -1
  427. package/dist/src/unstable/workspace/resolve-plan-interaction.js.map +1 -1
  428. package/dist/src/unstable/workspace/scan-plan-readiness.d.ts +1 -1
  429. package/dist/src/unstable/workspace/scan-plan-readiness.d.ts.map +1 -1
  430. package/dist/src/unstable/workspace/service-interface.d.ts +3 -1
  431. package/dist/src/unstable/workspace/service-interface.d.ts.map +1 -1
  432. package/dist/src/unstable/workspace/service-interface.js +1 -1
  433. package/dist/src/unstable/workspace/service-interface.js.map +1 -1
  434. package/dist/src/unstable/workspace/service.js +1 -1
  435. package/dist/src/unstable/workspace/service.js.map +1 -1
  436. package/dist/src/unstable/workspace/settings-validation/types.d.ts +11 -1
  437. package/dist/src/unstable/workspace/settings-validation/types.d.ts.map +1 -1
  438. package/dist/src/unstable/workspace/version-currency/check-currency.d.ts +41 -0
  439. package/dist/src/unstable/workspace/version-currency/check-currency.d.ts.map +1 -0
  440. package/dist/src/unstable/workspace/version-currency/check-currency.js +50 -0
  441. package/dist/src/unstable/workspace/version-currency/check-currency.js.map +1 -0
  442. package/dist/src/unstable/workspace/version-currency/collectors.d.ts +55 -0
  443. package/dist/src/unstable/workspace/version-currency/collectors.d.ts.map +1 -0
  444. package/dist/src/unstable/workspace/version-currency/collectors.js +127 -0
  445. package/dist/src/unstable/workspace/version-currency/collectors.js.map +1 -0
  446. package/dist/src/unstable/workspace/version-currency/index.d.ts +11 -0
  447. package/dist/src/unstable/workspace/version-currency/index.d.ts.map +1 -0
  448. package/dist/src/unstable/workspace/version-currency/index.js +11 -0
  449. package/dist/src/unstable/workspace/version-currency/index.js.map +1 -0
  450. package/dist/src/unstable/workspace/version-currency/test-stubs.d.ts +5 -0
  451. package/dist/src/unstable/workspace/version-currency/test-stubs.d.ts.map +1 -0
  452. package/dist/src/unstable/workspace/version-currency/test-stubs.js +31 -0
  453. package/dist/src/unstable/workspace/version-currency/test-stubs.js.map +1 -0
  454. package/package.json +14 -6
  455. package/dist/src/unstable/workspace/apply-plan.d.ts.map +0 -1
  456. package/dist/src/unstable/workspace/apply-plan.js.map +0 -1
  457. package/dist/src/unstable/workspace/doctor/check-def.d.ts +0 -29
  458. package/dist/src/unstable/workspace/doctor/check-def.d.ts.map +0 -1
  459. package/dist/src/unstable/workspace/doctor/check-def.js +0 -17
  460. package/dist/src/unstable/workspace/doctor/check-def.js.map +0 -1
  461. package/dist/src/unstable/workspace/doctor/checks/agents-configured.d.ts +0 -5
  462. package/dist/src/unstable/workspace/doctor/checks/agents-configured.d.ts.map +0 -1
  463. package/dist/src/unstable/workspace/doctor/checks/agents-configured.js +0 -170
  464. package/dist/src/unstable/workspace/doctor/checks/agents-configured.js.map +0 -1
  465. package/dist/src/unstable/workspace/doctor/checks/extensions-installed.d.ts +0 -5
  466. package/dist/src/unstable/workspace/doctor/checks/extensions-installed.d.ts.map +0 -1
  467. package/dist/src/unstable/workspace/doctor/checks/extensions-installed.js +0 -472
  468. package/dist/src/unstable/workspace/doctor/checks/extensions-installed.js.map +0 -1
  469. package/dist/src/unstable/workspace/doctor/checks/workspace-ready.d.ts +0 -5
  470. package/dist/src/unstable/workspace/doctor/checks/workspace-ready.d.ts.map +0 -1
  471. package/dist/src/unstable/workspace/doctor/checks/workspace-ready.js +0 -201
  472. package/dist/src/unstable/workspace/doctor/checks/workspace-ready.js.map +0 -1
  473. package/dist/src/unstable/workspace/doctor/diagnose.d.ts +0 -49
  474. package/dist/src/unstable/workspace/doctor/diagnose.d.ts.map +0 -1
  475. package/dist/src/unstable/workspace/doctor/diagnose.js +0 -65
  476. package/dist/src/unstable/workspace/doctor/diagnose.js.map +0 -1
  477. package/dist/src/unstable/workspace/doctor/index.d.ts +0 -8
  478. package/dist/src/unstable/workspace/doctor/index.d.ts.map +0 -1
  479. package/dist/src/unstable/workspace/doctor/index.js +0 -6
  480. package/dist/src/unstable/workspace/doctor/index.js.map +0 -1
  481. package/dist/src/unstable/workspace/doctor/rollup.d.ts +0 -4
  482. package/dist/src/unstable/workspace/doctor/rollup.d.ts.map +0 -1
  483. package/dist/src/unstable/workspace/doctor/rollup.js +0 -28
  484. package/dist/src/unstable/workspace/doctor/rollup.js.map +0 -1
  485. package/dist/src/unstable/workspace/doctor/runner.d.ts +0 -6
  486. package/dist/src/unstable/workspace/doctor/runner.d.ts.map +0 -1
  487. package/dist/src/unstable/workspace/doctor/runner.js +0 -179
  488. package/dist/src/unstable/workspace/doctor/runner.js.map +0 -1
  489. package/dist/src/unstable/workspace/doctor/types.d.ts +0 -125
  490. package/dist/src/unstable/workspace/doctor/types.d.ts.map +0 -1
  491. package/dist/src/unstable/workspace/doctor/types.js +0 -58
  492. package/dist/src/unstable/workspace/doctor/types.js.map +0 -1
  493. package/dist/src/unstable/workspace/plan.d.ts.map +0 -1
  494. package/dist/src/unstable/workspace/plan.js.map +0 -1
  495. package/dist/src/unstable/workspace/resolve-plan.d.ts.map +0 -1
  496. package/dist/src/unstable/workspace/resolve-plan.js.map +0 -1
  497. package/dist/src/unstable/workspace/sync.d.ts +0 -17
  498. package/dist/src/unstable/workspace/sync.d.ts.map +0 -1
  499. package/dist/src/unstable/workspace/sync.js +0 -142
  500. package/dist/src/unstable/workspace/sync.js.map +0 -1
@@ -0,0 +1,163 @@
1
+ /**
2
+ * `workspace/packs-members-retained` — every member lock entry with
3
+ * `retainedByPack: true` is declared by an installed pack.
4
+ *
5
+ * For each member lock entry (skill, command, subagent, mcp-server) where
6
+ * `retainedByPack === true` AND the member is not directly declared in
7
+ * settings, at least one installed pack's lock entry lists the member's
8
+ * FQN in the appropriate resolved map. Entries directly declared in
9
+ * settings are exempt (covered by per-type declarations rules).
10
+ *
11
+ * Rule body walks every member lock entry type — not just skills — so
12
+ * adding non-skill install families in v1.5+ is test-surface-only.
13
+ *
14
+ * One finding per affected entity. Advisory, warning.
15
+ *
16
+ * @experimental This API is unstable and may change without notice.
17
+ * @packageDocumentation
18
+ */
19
+ import * as Effect from "effect/Effect";
20
+ import * as Option from "effect/Option";
21
+ import * as Result from "effect/Result";
22
+ import * as Schema from "effect/Schema";
23
+ import { LockfileSchema, } from "../../../lockfile/schema.js";
24
+ import { SettingsSchema } from "../../../settings/schema.js";
25
+ import { EMPTY_ADVISORY_FINDINGS } from "./helpers/empty.js";
26
+ const RULE_ID = "workspace/packs-members-retained";
27
+ const LOCKFILE_REL = ".axm/axm-lock.yaml";
28
+ const decodeSettings = (input) => {
29
+ const result = Schema.decodeUnknownResult(SettingsSchema)(input, {
30
+ onExcessProperty: "ignore",
31
+ errors: "all",
32
+ });
33
+ return Result.isSuccess(result) ? Option.some(result.success) : Option.none();
34
+ };
35
+ const decodeLockfile = (input) => {
36
+ const result = Schema.decodeUnknownResult(LockfileSchema)(input, {
37
+ onExcessProperty: "ignore",
38
+ errors: "all",
39
+ });
40
+ return Result.isSuccess(result) ? Option.some(result.success) : Option.none();
41
+ };
42
+ const entryFqn = (entry, name, typeSegment) => {
43
+ if (entry.type !== "registry") {
44
+ // Non-registry lock entries don't carry an owner-qualified FQN. We
45
+ // conservatively exclude them: retention applies only to registry-ish
46
+ // pack dependencies.
47
+ return undefined;
48
+ }
49
+ const owner = entry.owner;
50
+ const regName = entry.name;
51
+ return `${owner}/${typeSegment}/${regName}`;
52
+ };
53
+ const buildPackRetainedFqns = (lockfile) => {
54
+ const declared = new Set();
55
+ const packs = lockfile.packs ?? {};
56
+ for (const entry of Object.values(packs)) {
57
+ for (const fqn of Object.keys(entry.resolvedSkills)) {
58
+ declared.add(fqn);
59
+ }
60
+ for (const fqn of Object.keys(entry.resolvedCommands)) {
61
+ declared.add(fqn);
62
+ }
63
+ for (const fqn of Object.keys(entry.resolvedSubagents)) {
64
+ declared.add(fqn);
65
+ }
66
+ for (const fqn of Object.keys(entry.resolvedMcpServers)) {
67
+ declared.add(fqn);
68
+ }
69
+ }
70
+ return declared;
71
+ };
72
+ const droppedFinding = (memberType, name, fqn) => ({
73
+ kind: "advisory",
74
+ ruleId: RULE_ID,
75
+ severity: "warning",
76
+ message: `${memberType} '${name}'${fqn === undefined ? "" : ` (FQN ${fqn})`} is retained by a pack but no installed pack declares it.`,
77
+ suggestions: [
78
+ `Declare '${name}' directly in settings.${memberType === "mcp-server" ? "mcpServers" : `${memberType}s`}.`,
79
+ `Uninstall '${name}' if the owning pack is no longer installed.`,
80
+ ],
81
+ location: { file: LOCKFILE_REL },
82
+ });
83
+ const collectMembers = (lockfile) => {
84
+ const result = [];
85
+ for (const [name, entry] of Object.entries(lockfile.skills)) {
86
+ result.push({ memberType: "skill", name, entry });
87
+ }
88
+ for (const [name, entry] of Object.entries(lockfile.commands ?? {})) {
89
+ result.push({ memberType: "command", name, entry });
90
+ }
91
+ for (const [name, entry] of Object.entries(lockfile.subagents ?? {})) {
92
+ result.push({ memberType: "subagent", name, entry });
93
+ }
94
+ for (const [name, entry] of Object.entries(lockfile.mcpServers ?? {})) {
95
+ result.push({ memberType: "mcp-server", name, entry });
96
+ }
97
+ return result;
98
+ };
99
+ const isDirectlyDeclared = (member, settings) => {
100
+ switch (member.memberType) {
101
+ case "skill":
102
+ return member.name in (settings.skills ?? {});
103
+ case "command":
104
+ return member.name in (settings.commands ?? {});
105
+ case "subagent":
106
+ return member.name in (settings.subagents ?? {});
107
+ case "mcp-server":
108
+ return member.name in (settings.mcpServers ?? {});
109
+ }
110
+ };
111
+ const typeSegment = (memberType) => {
112
+ switch (memberType) {
113
+ case "skill":
114
+ return "skills";
115
+ case "command":
116
+ return "commands";
117
+ case "subagent":
118
+ return "subagents";
119
+ case "mcp-server":
120
+ return "mcp-servers";
121
+ }
122
+ };
123
+ export const packsMembersRetainedRule = {
124
+ id: RULE_ID,
125
+ description: "Every member lock entry with retainedByPack is declared by an installed pack.",
126
+ kind: "advisory",
127
+ severity: "warning",
128
+ check: (context) => Effect.gen(function* () {
129
+ const settingsResult = yield* Effect.result(context.workspace.settings);
130
+ const lockfileResult = yield* Effect.result(context.workspace.lockfile);
131
+ if (Result.isFailure(settingsResult) || Result.isFailure(lockfileResult)) {
132
+ return EMPTY_ADVISORY_FINDINGS;
133
+ }
134
+ const settings = decodeSettings(settingsResult.success);
135
+ if (Option.isNone(settings)) {
136
+ return EMPTY_ADVISORY_FINDINGS;
137
+ }
138
+ const lockOption = lockfileResult.success;
139
+ if (Option.isNone(lockOption)) {
140
+ return EMPTY_ADVISORY_FINDINGS;
141
+ }
142
+ const lockfile = decodeLockfile(lockOption.value);
143
+ if (Option.isNone(lockfile)) {
144
+ return EMPTY_ADVISORY_FINDINGS;
145
+ }
146
+ const retainedByPacks = buildPackRetainedFqns(lockfile.value);
147
+ const findings = [];
148
+ for (const member of collectMembers(lockfile.value)) {
149
+ if (member.entry.retainedByPack !== true) {
150
+ continue;
151
+ }
152
+ if (isDirectlyDeclared(member, settings.value)) {
153
+ continue;
154
+ }
155
+ const fqn = entryFqn(member.entry, member.name, typeSegment(member.memberType));
156
+ if (fqn === undefined || !retainedByPacks.has(fqn)) {
157
+ findings.push(droppedFinding(member.memberType, member.name, fqn));
158
+ }
159
+ }
160
+ return findings;
161
+ }),
162
+ };
163
+ //# sourceMappingURL=packs-members-retained.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packs-members-retained.js","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/workspace/packs-members-retained.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * `workspace/settings-schema-valid` — `.axm/settings.json` conforms to
3
+ * `SettingsSchema`.
4
+ *
5
+ * Cascade per `docs/design/lint-engine.md §10.workspace`:
6
+ *
7
+ * 1. `.axm/settings.json` is present (`workspace/initialized` owns the
8
+ * absence arm; this rule early-returns when the file is missing).
9
+ * 2. The file parses as JSON (the accessor surfaces parse failures via
10
+ * `SettingsReadError`; we emit one finding per read failure).
11
+ * 3. The parsed value is a JSON object (not an array or scalar) — enforced
12
+ * by `Schema.decodeUnknownResult(SettingsSchema)` structurally.
13
+ * 4. `Schema.decodeUnknownResult(SettingsSchema)` with
14
+ * `onExcessProperty: "ignore"` succeeds; `ParseResult` issues map 1:1 to
15
+ * findings via `schemaDecodeFindings`.
16
+ *
17
+ * Reports the read-failure finding when arm 2 fails; otherwise reports the
18
+ * schema issues produced by arm 3/4. The design doc notes the unknown-key
19
+ * companion (`workspace/settings-keys-recognized`) defers to v1.5+ — this
20
+ * rule keeps schema validity as a single error-severity invariant.
21
+ *
22
+ * @experimental This API is unstable and may change without notice.
23
+ * @packageDocumentation
24
+ */
25
+ import type { WorkspaceRuleContext } from "../../context.js";
26
+ import type { AdvisoryRule } from "../../rule.js";
27
+ export declare const settingsSchemaValidRule: AdvisoryRule<WorkspaceRuleContext>;
28
+ //# sourceMappingURL=settings-schema-valid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings-schema-valid.d.ts","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/workspace/settings-schema-valid.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAQlD,eAAO,MAAM,uBAAuB,EAAE,YAAY,CAAC,oBAAoB,CA2CtE,CAAC"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * `workspace/settings-schema-valid` — `.axm/settings.json` conforms to
3
+ * `SettingsSchema`.
4
+ *
5
+ * Cascade per `docs/design/lint-engine.md §10.workspace`:
6
+ *
7
+ * 1. `.axm/settings.json` is present (`workspace/initialized` owns the
8
+ * absence arm; this rule early-returns when the file is missing).
9
+ * 2. The file parses as JSON (the accessor surfaces parse failures via
10
+ * `SettingsReadError`; we emit one finding per read failure).
11
+ * 3. The parsed value is a JSON object (not an array or scalar) — enforced
12
+ * by `Schema.decodeUnknownResult(SettingsSchema)` structurally.
13
+ * 4. `Schema.decodeUnknownResult(SettingsSchema)` with
14
+ * `onExcessProperty: "ignore"` succeeds; `ParseResult` issues map 1:1 to
15
+ * findings via `schemaDecodeFindings`.
16
+ *
17
+ * Reports the read-failure finding when arm 2 fails; otherwise reports the
18
+ * schema issues produced by arm 3/4. The design doc notes the unknown-key
19
+ * companion (`workspace/settings-keys-recognized`) defers to v1.5+ — this
20
+ * rule keeps schema validity as a single error-severity invariant.
21
+ *
22
+ * @experimental This API is unstable and may change without notice.
23
+ * @packageDocumentation
24
+ */
25
+ import * as Effect from "effect/Effect";
26
+ import * as Result from "effect/Result";
27
+ import { SettingsSchema } from "../../../settings/schema.js";
28
+ import { schemaDecodeFindings } from "../shared/schema-rule.js";
29
+ import { EMPTY_ADVISORY_FINDINGS } from "./helpers/empty.js";
30
+ const RULE_ID = "workspace/settings-schema-valid";
31
+ const SETTINGS_REL = ".axm/settings.json";
32
+ export const settingsSchemaValidRule = {
33
+ id: RULE_ID,
34
+ description: ".axm/settings.json parses and conforms to SettingsSchema.",
35
+ kind: "advisory",
36
+ severity: "error",
37
+ check: (context) => Effect.gen(function* () {
38
+ // Early-return when settings.json is absent; workspace/initialized owns
39
+ // that arm so a fresh workspace surfaces exactly one finding.
40
+ const exists = yield* context.workspace.exists(SETTINGS_REL);
41
+ if (!exists) {
42
+ return EMPTY_ADVISORY_FINDINGS;
43
+ }
44
+ const read = yield* Effect.result(context.workspace.settings);
45
+ if (Result.isFailure(read)) {
46
+ const error = read.failure;
47
+ return [
48
+ {
49
+ kind: "advisory",
50
+ ruleId: RULE_ID,
51
+ severity: "error",
52
+ message: `Could not read settings.json: ${error.message}`,
53
+ suggestions: [
54
+ "Fix the JSON syntax error reported at the location above.",
55
+ "Verify .axm/settings.json is valid JSON (quoted keys, no trailing commas).",
56
+ ],
57
+ location: { file: SETTINGS_REL },
58
+ },
59
+ ];
60
+ }
61
+ // The accessor returns the raw parsed JSON value; we run the schema
62
+ // decode here so issues surface 1:1 as findings.
63
+ const decodedFindings = yield* schemaDecodeFindings(RULE_ID, "error", SETTINGS_REL, SettingsSchema, read.success);
64
+ return decodedFindings;
65
+ }),
66
+ };
67
+ //# sourceMappingURL=settings-schema-valid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings-schema-valid.js","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/workspace/settings-schema-valid.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,MAAM,OAAO,GAAG,iCAAiC,CAAC;AAClD,MAAM,YAAY,GAAG,oBAAoB,CAAC;AAE1C,MAAM,CAAC,MAAM,uBAAuB,GAAuC;IACzE,EAAE,EAAE,OAAO;IACX,WAAW,EAAE,2DAA2D;IACxE,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,OAAO;IACjB,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CACjB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,wEAAwE;QACxE,8DAA8D;QAC9D,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,uBAAuB,CAAC;QACjC,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC9D,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;YAC3B,OAAO;gBACL;oBACE,IAAI,EAAE,UAAmB;oBACzB,MAAM,EAAE,OAAO;oBACf,QAAQ,EAAE,OAAgB;oBAC1B,OAAO,EAAE,iCAAiC,KAAK,CAAC,OAAO,EAAE;oBACzD,WAAW,EAAE;wBACX,2DAA2D;wBAC3D,4EAA4E;qBAC7E;oBACD,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;iBACjC;aACF,CAAC;QACJ,CAAC;QAED,oEAAoE;QACpE,iDAAiD;QACjD,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,oBAAoB,CACjD,OAAO,EACP,OAAO,EACP,YAAY,EACZ,cAAc,EACd,IAAI,CAAC,OAAO,CACb,CAAC;QACF,OAAO,eAAe,CAAC;IACzB,CAAC,CAAC;CACL,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * `workspace/skills-artifacts-clean` — skill artifacts on disk are live,
3
+ * declared, and canonically named.
4
+ *
5
+ * Cascade per `docs/design/lint-engine.md §10.workspace.Skills` (first
6
+ * failing arm per affected entity):
7
+ *
8
+ * - **Dangling** (autofixing) — an artifact exists in a declared agent's
9
+ * skills dir but the canonical source under `.axm/extensions/.../src/`
10
+ * is missing. Autofix: `install-skill` with `force: true`.
11
+ * - **Stale** (advisory) — an artifact exists in a declared agent's skills
12
+ * dir whose name doesn't correspond to any declared enabled skill. No
13
+ * pre-sync Operation applies (the artifact isn't axm-owned after the
14
+ * skill is no longer declared); emit an advisory CLI suggestion.
15
+ * - **Name-mismatch** (advisory) — an artifact exists with a name that
16
+ * doesn't match the sanitized declared skill name (legacy casing,
17
+ * pre-sanitization). Emit an advisory CLI suggestion.
18
+ *
19
+ * Listing per-agent skill targets uses `context.workspace.list(...)`.
20
+ *
21
+ * The rule emits at most one finding per artifact — cascade resolves per
22
+ * filesystem entry.
23
+ *
24
+ * @experimental This API is unstable and may change without notice.
25
+ * @packageDocumentation
26
+ */
27
+ import type { WorkspaceRuleContext } from "../../context.js";
28
+ import type { AutofixingRule } from "../../rule.js";
29
+ export declare const skillsArtifactsCleanRule: AutofixingRule<WorkspaceRuleContext>;
30
+ //# sourceMappingURL=skills-artifacts-clean.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills-artifacts-clean.d.ts","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/workspace/skills-artifacts-clean.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAMH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAGV,cAAc,EAEf,MAAM,eAAe,CAAC;AAwHvB,eAAO,MAAM,wBAAwB,EAAE,cAAc,CAAC,oBAAoB,CAoHzE,CAAC"}
@@ -0,0 +1,232 @@
1
+ /**
2
+ * `workspace/skills-artifacts-clean` — skill artifacts on disk are live,
3
+ * declared, and canonically named.
4
+ *
5
+ * Cascade per `docs/design/lint-engine.md §10.workspace.Skills` (first
6
+ * failing arm per affected entity):
7
+ *
8
+ * - **Dangling** (autofixing) — an artifact exists in a declared agent's
9
+ * skills dir but the canonical source under `.axm/extensions/.../src/`
10
+ * is missing. Autofix: `install-skill` with `force: true`.
11
+ * - **Stale** (advisory) — an artifact exists in a declared agent's skills
12
+ * dir whose name doesn't correspond to any declared enabled skill. No
13
+ * pre-sync Operation applies (the artifact isn't axm-owned after the
14
+ * skill is no longer declared); emit an advisory CLI suggestion.
15
+ * - **Name-mismatch** (advisory) — an artifact exists with a name that
16
+ * doesn't match the sanitized declared skill name (legacy casing,
17
+ * pre-sanitization). Emit an advisory CLI suggestion.
18
+ *
19
+ * Listing per-agent skill targets uses `context.workspace.list(...)`.
20
+ *
21
+ * The rule emits at most one finding per artifact — cascade resolves per
22
+ * filesystem entry.
23
+ *
24
+ * @experimental This API is unstable and may change without notice.
25
+ * @packageDocumentation
26
+ */
27
+ import * as Effect from "effect/Effect";
28
+ import * as Option from "effect/Option";
29
+ import * as Result from "effect/Result";
30
+ import * as Schema from "effect/Schema";
31
+ import { LockfileSchema } from "../../../lockfile/schema.js";
32
+ import { SettingsSchema } from "../../../settings/schema.js";
33
+ import { installSkillOp } from "./helpers/install-ops.js";
34
+ import { parseRegistrySource } from "./helpers/registry-source.js";
35
+ import { EMPTY_LINT_FINDINGS, EMPTY_OPERATIONS } from "./helpers/empty.js";
36
+ const RULE_ID = "workspace/skills-artifacts-clean";
37
+ const SUG_REINSTALL_PREFIX = "Reinstall skill ";
38
+ const decodeSettings = (input) => {
39
+ const result = Schema.decodeUnknownResult(SettingsSchema)(input, {
40
+ onExcessProperty: "ignore",
41
+ errors: "all",
42
+ });
43
+ return Result.isSuccess(result) ? Option.some(result.success) : Option.none();
44
+ };
45
+ const decodeLockfile = (input) => {
46
+ const result = Schema.decodeUnknownResult(LockfileSchema)(input, {
47
+ onExcessProperty: "ignore",
48
+ errors: "all",
49
+ });
50
+ return Result.isSuccess(result) ? Option.some(result.success) : Option.none();
51
+ };
52
+ /**
53
+ * Names of skills retained by at least one installed declared pack. These
54
+ * skill artifacts are valid even though the skill isn't in `settings.skills`.
55
+ */
56
+ const buildRetainedSkillNames = (settings, lockfile) => {
57
+ const declaredPackNames = new Set(Object.keys(settings.packs ?? {}));
58
+ const names = new Set();
59
+ const packLock = lockfile.packs ?? {};
60
+ for (const [packName, packEntry] of Object.entries(packLock)) {
61
+ if (!declaredPackNames.has(packName)) {
62
+ continue;
63
+ }
64
+ for (const fqn of Object.keys(packEntry.resolvedSkills)) {
65
+ // FQN is `@owner/skills/<name>`; last segment is the skill name.
66
+ const parts = fqn.split("/");
67
+ const last = parts[parts.length - 1];
68
+ if (last !== undefined) {
69
+ names.add(last);
70
+ }
71
+ }
72
+ }
73
+ // Also add lockfile-level skills with retainedByPack=true so accessor
74
+ // round-trips work even when the pack resolved map misnames them.
75
+ for (const [name, entry] of Object.entries(lockfile.skills)) {
76
+ if (entry.retainedByPack === true) {
77
+ names.add(name);
78
+ }
79
+ }
80
+ return names;
81
+ };
82
+ // Very narrow sanitization: lowercase, replace underscores with hyphens.
83
+ // The authoritative sanitizer lives at axm extensions/utils.ts#sanitizeName;
84
+ // v1 lint checks for exact match and surfaces any divergence as a
85
+ // name-mismatch advisory arm.
86
+ const isCanonicallyNamed = (artifact, declared) => artifact === declared;
87
+ const danglingFinding = (name, agentId) => ({
88
+ kind: "autofixable",
89
+ ruleId: RULE_ID,
90
+ severity: "error",
91
+ message: `Agent '${agentId}' has a dangling artifact for skill '${name}' (canonical source missing).`,
92
+ suggestions: [`${SUG_REINSTALL_PREFIX}'${name}' to re-materialize canonical source.`],
93
+ location: { file: `${agentId}/skills/${name}` },
94
+ });
95
+ const staleFinding = (name, agentId) => ({
96
+ kind: "advisory",
97
+ ruleId: RULE_ID,
98
+ severity: "error",
99
+ message: `Agent '${agentId}' has a stale skill artifact '${name}' not backed by any declaration.`,
100
+ suggestions: [
101
+ `Remove the stale artifact manually if you no longer need skill '${name}'.`,
102
+ `Add '${name}' to settings.skills if it should be declared.`,
103
+ ],
104
+ location: { file: `${agentId}/skills/${name}` },
105
+ });
106
+ const nameMismatchFinding = (agentId, artifact, expected) => ({
107
+ kind: "advisory",
108
+ ruleId: RULE_ID,
109
+ severity: "error",
110
+ message: `Agent '${agentId}' has skill artifact '${artifact}' that doesn't match the sanitized name '${expected}'.`,
111
+ suggestions: [
112
+ `Remove '${artifact}' and reinstall to regenerate under the canonical name '${expected}'.`,
113
+ ],
114
+ location: { file: `${agentId}/skills/${artifact}` },
115
+ });
116
+ const NAME_FROM_SUGGESTION_RE = /'([^']+)'/;
117
+ const extractSkillName = (suggestion) => NAME_FROM_SUGGESTION_RE.exec(suggestion)?.[1];
118
+ /**
119
+ * Build candidate canonical `SKILL.md` probe paths for `name`, trying the
120
+ * settings-declared registry owner first (if any) and the external layout
121
+ * as a fallback. Non-registry sources fall through to the external probe.
122
+ */
123
+ const canonicalSrcProbesForName = (name, settings) => {
124
+ const entry = settings.skills?.[name];
125
+ const parsed = entry === undefined ? undefined : parseRegistrySource(entry.source);
126
+ const probes = [];
127
+ if (parsed !== undefined) {
128
+ probes.push(`.axm/extensions/${parsed.owner}/skills/${name}/src/SKILL.md`);
129
+ }
130
+ probes.push(`.axm/extensions/external/skills/${name}/SKILL.md`);
131
+ return probes;
132
+ };
133
+ export const skillsArtifactsCleanRule = {
134
+ id: RULE_ID,
135
+ description: "Skill artifacts on disk are live, declared, and canonically named.",
136
+ kind: "autofixing",
137
+ severity: "error",
138
+ check: (context) => Effect.gen(function* () {
139
+ const settingsResult = yield* Effect.result(context.workspace.settings);
140
+ if (Result.isFailure(settingsResult)) {
141
+ return EMPTY_LINT_FINDINGS;
142
+ }
143
+ const settings = decodeSettings(settingsResult.success);
144
+ if (Option.isNone(settings)) {
145
+ return EMPTY_LINT_FINDINGS;
146
+ }
147
+ const declaredAgentIds = new Set(settings.value.agents ?? []);
148
+ if (declaredAgentIds.size === 0) {
149
+ return EMPTY_LINT_FINDINGS;
150
+ }
151
+ const knownAgents = yield* context.workspace.knownAgents;
152
+ const declaredAgents = knownAgents.filter((a) => declaredAgentIds.has(a.id));
153
+ const declaredSkills = settings.value.skills ?? {};
154
+ const declaredEnabledNames = new Set(Object.entries(declaredSkills)
155
+ .filter(([, v]) => v.enabled)
156
+ .map(([k]) => k));
157
+ // Pull in pack-retained skill names from the lockfile so retained
158
+ // artifacts aren't mis-classified as stale.
159
+ const lockfileResult = yield* Effect.result(context.workspace.lockfile);
160
+ const retainedNames = Result.isSuccess(lockfileResult)
161
+ ? Option.match(lockfileResult.success, {
162
+ onNone: () => new Set(),
163
+ onSome: (raw) => Option.match(decodeLockfile(raw), {
164
+ onNone: () => new Set(),
165
+ onSome: (lock) => buildRetainedSkillNames(settings.value, lock),
166
+ }),
167
+ })
168
+ : new Set();
169
+ const findings = [];
170
+ for (const agent of declaredAgents) {
171
+ const listResult = yield* Effect.result(context.workspace.list(agent.skills.dir));
172
+ if (Result.isFailure(listResult)) {
173
+ // Directory doesn't exist or isn't readable. Not an artifact-clean
174
+ // issue — the corresponding enabled arm surfaces missing dirs.
175
+ continue;
176
+ }
177
+ const artifacts = listResult.success;
178
+ for (const artifact of artifacts) {
179
+ // Retention carve-out: pack-retained skill artifacts are valid
180
+ // even when not in settings.skills.
181
+ if (retainedNames.has(artifact)) {
182
+ continue;
183
+ }
184
+ // Cascade first-failure per artifact.
185
+ // Arm 1: dangling — artifact links back to a declared skill name
186
+ // but canonical src is missing.
187
+ if (declaredEnabledNames.has(artifact)) {
188
+ const probes = canonicalSrcProbesForName(artifact, settings.value);
189
+ const probeResults = yield* Effect.all(probes.map((probe) => context.workspace.exists(probe)), { concurrency: "unbounded" });
190
+ if (probeResults.every((exists) => !exists)) {
191
+ findings.push(danglingFinding(artifact, agent.id));
192
+ continue;
193
+ }
194
+ continue;
195
+ }
196
+ // Arm 2/3: not a declared enabled name — name-mismatch or stale.
197
+ // Name-mismatch: artifact normalizes to a declared enabled name
198
+ // but differs in casing or similar. v1 check is case-insensitive.
199
+ const caseMatch = Array.from(declaredEnabledNames).find((d) => d.toLowerCase() === artifact.toLowerCase() && !isCanonicallyNamed(artifact, d));
200
+ if (caseMatch !== undefined) {
201
+ findings.push(nameMismatchFinding(agent.id, artifact, caseMatch));
202
+ continue;
203
+ }
204
+ findings.push(staleFinding(artifact, agent.id));
205
+ }
206
+ }
207
+ return findings;
208
+ }),
209
+ fix: (context, finding) => Effect.gen(function* () {
210
+ // Only the dangling arm emits AutofixableFinding; stale / name-mismatch
211
+ // arms ship AdvisoryFinding and never reach `fix`.
212
+ if (!finding.suggestions[0].startsWith(SUG_REINSTALL_PREFIX)) {
213
+ return EMPTY_OPERATIONS;
214
+ }
215
+ const name = extractSkillName(finding.suggestions[0]);
216
+ if (name === undefined) {
217
+ return EMPTY_OPERATIONS;
218
+ }
219
+ const settingsResult = yield* Effect.result(context.workspace.settings);
220
+ if (Result.isFailure(settingsResult)) {
221
+ return EMPTY_OPERATIONS;
222
+ }
223
+ const settings = decodeSettings(settingsResult.success);
224
+ if (Option.isNone(settings)) {
225
+ return EMPTY_OPERATIONS;
226
+ }
227
+ const entry = settings.value.skills?.[name];
228
+ const source = entry?.source ?? name;
229
+ return [installSkillOp({ name, source, force: true })];
230
+ }),
231
+ };
232
+ //# sourceMappingURL=skills-artifacts-clean.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills-artifacts-clean.js","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/workspace/skills-artifacts-clean.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * `workspace/skills-artifacts-correct` — each enabled skill has artifacts in
3
+ * every declared agent's skill target; disabled skills have none.
4
+ *
5
+ * Three symptoms of the same invariant (§10.workspace.Skills note):
6
+ *
7
+ * - **Enabled-but-not-linked** — a skill declared `enabled: true` is missing
8
+ * its per-agent artifact for at least one declared agent. Autofix:
9
+ * `enable-skill` (the handler recreates symlinks across configured agents).
10
+ * - **Disabled-but-still-present** — a skill declared `enabled: false` still
11
+ * has a per-agent artifact for at least one declared agent. Autofix:
12
+ * `disable-skill`.
13
+ * - **Cross-agent-inconsistent** — an enabled skill has artifacts in some
14
+ * declared agents but not others. Autofix: `enable-skill`.
15
+ *
16
+ * One finding per affected skill (per-entity cascade); the first arm that
17
+ * fires for a skill emits its finding and the other arms for the same skill
18
+ * do not.
19
+ *
20
+ * @experimental This API is unstable and may change without notice.
21
+ * @packageDocumentation
22
+ */
23
+ import type { WorkspaceRuleContext } from "../../context.js";
24
+ import type { AutofixingRule } from "../../rule.js";
25
+ export declare const skillsArtifactsCorrectRule: AutofixingRule<WorkspaceRuleContext>;
26
+ //# sourceMappingURL=skills-artifacts-correct.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills-artifacts-correct.d.ts","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/workspace/skills-artifacts-correct.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAMH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAsB,cAAc,EAAe,MAAM,eAAe,CAAC;AAsDrF,eAAO,MAAM,0BAA0B,EAAE,cAAc,CAAC,oBAAoB,CA4E3E,CAAC"}