@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,53 @@
1
+ /**
2
+ * Platform-backed `PackFileAccessor` for `axm lint`.
3
+ *
4
+ * Maps accessor-relative posix paths to on-disk absolute paths rooted at
5
+ * the caller-supplied pack-root directory. Layout conventions per
6
+ * `docs/design/lint-engine.md §3` "Pack accessor root":
7
+ *
8
+ * - **Registry-installed:**
9
+ * `<workspaceRoot>/.axm/extensions/<@owner>/packs/<sanitized-name>/`
10
+ *
11
+ * Packs are registry-only at v1 — there is no non-native variant. The caller
12
+ * (`buildPackRuleContexts` or the CLI entry point) picks the root from
13
+ * `computeExtensionPackPaths` in `../../../packs/paths.ts`.
14
+ *
15
+ * The `extension-pack.json` sits directly under `canonicalPath`; there is no
16
+ * `src/` subdirectory like skills have — see
17
+ * `../../../packs/operations/install.ts` for the authoritative layout.
18
+ *
19
+ * Bounds enforcement:
20
+ *
21
+ * - No `..` segments in accessor-relative paths.
22
+ * - No absolute paths (posix or Windows drive letters).
23
+ * - Resolved absolute paths are verified to stay under the accessor root.
24
+ *
25
+ * The accessor is built via a factory that captures a pre-resolved
26
+ * `FileSystem.FileSystem` + `Path.Path` services and an absolute root, so
27
+ * `PackFileAccessor` stays Layer-free at rule-evaluation time (per
28
+ * `lint-engine` spec "Rule contexts expose narrow caller-bound accessors").
29
+ *
30
+ * @experimental This API is unstable and may change without notice.
31
+ * @packageDocumentation
32
+ */
33
+ import type * as FileSystem from "effect/FileSystem";
34
+ import type * as Path from "effect/Path";
35
+ import type { PackFileAccessor } from "../../context.js";
36
+ /**
37
+ * Platform services needed by the platform-backed pack accessor.
38
+ */
39
+ export interface PackAccessorPlatform {
40
+ readonly fs: FileSystem.FileSystem;
41
+ readonly path: Path.Path;
42
+ }
43
+ /**
44
+ * Build a platform-backed `PackFileAccessor` rooted at `absoluteRoot`.
45
+ *
46
+ * `absoluteRoot` SHOULD be the absolute path to the pack root directory
47
+ * (`canonicalPath` from `computeExtensionPackPaths` in
48
+ * `../../../packs/paths.ts`).
49
+ *
50
+ * @experimental This API is unstable and may change without notice.
51
+ */
52
+ export declare const makePlatformPackFileAccessor: (platform: PackAccessorPlatform, absoluteRoot: string) => PackFileAccessor;
53
+ //# sourceMappingURL=platform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/pack-accessor/platform.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,KAAK,KAAK,UAAU,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,KAAK,IAAI,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAmB,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAM1E;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC,UAAU,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;CAC1B;AAMD;;;;;;;;GAQG;AACH,eAAO,MAAM,4BAA4B,GACvC,UAAU,oBAAoB,EAC9B,cAAc,MAAM,KACnB,gBA2DF,CAAC"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Platform-backed `PackFileAccessor` for `axm lint`.
3
+ *
4
+ * Maps accessor-relative posix paths to on-disk absolute paths rooted at
5
+ * the caller-supplied pack-root directory. Layout conventions per
6
+ * `docs/design/lint-engine.md §3` "Pack accessor root":
7
+ *
8
+ * - **Registry-installed:**
9
+ * `<workspaceRoot>/.axm/extensions/<@owner>/packs/<sanitized-name>/`
10
+ *
11
+ * Packs are registry-only at v1 — there is no non-native variant. The caller
12
+ * (`buildPackRuleContexts` or the CLI entry point) picks the root from
13
+ * `computeExtensionPackPaths` in `../../../packs/paths.ts`.
14
+ *
15
+ * The `extension-pack.json` sits directly under `canonicalPath`; there is no
16
+ * `src/` subdirectory like skills have — see
17
+ * `../../../packs/operations/install.ts` for the authoritative layout.
18
+ *
19
+ * Bounds enforcement:
20
+ *
21
+ * - No `..` segments in accessor-relative paths.
22
+ * - No absolute paths (posix or Windows drive letters).
23
+ * - Resolved absolute paths are verified to stay under the accessor root.
24
+ *
25
+ * The accessor is built via a factory that captures a pre-resolved
26
+ * `FileSystem.FileSystem` + `Path.Path` services and an absolute root, so
27
+ * `PackFileAccessor` stays Layer-free at rule-evaluation time (per
28
+ * `lint-engine` spec "Rule contexts expose narrow caller-bound accessors").
29
+ *
30
+ * @experimental This API is unstable and may change without notice.
31
+ * @packageDocumentation
32
+ */
33
+ import * as Effect from "effect/Effect";
34
+ /**
35
+ * Build a platform-backed `PackFileAccessor` rooted at `absoluteRoot`.
36
+ *
37
+ * `absoluteRoot` SHOULD be the absolute path to the pack root directory
38
+ * (`canonicalPath` from `computeExtensionPackPaths` in
39
+ * `../../../packs/paths.ts`).
40
+ *
41
+ * @experimental This API is unstable and may change without notice.
42
+ */
43
+ export const makePlatformPackFileAccessor = (platform, absoluteRoot) => {
44
+ const { fs, path } = platform;
45
+ const normalizedRoot = path.resolve(absoluteRoot);
46
+ const resolveWithinRoot = (input) => {
47
+ if (input === "" || input === "." || input === "./") {
48
+ return { kind: "ok", absolute: normalizedRoot };
49
+ }
50
+ if (/^[a-z]:[\\/]/i.test(input) || input.startsWith("/") || input.startsWith("\\")) {
51
+ return { kind: "escape" };
52
+ }
53
+ const normalized = input.replace(/\\/g, "/").replace(/^\.\//, "");
54
+ for (const segment of normalized.split("/")) {
55
+ if (segment === "..") {
56
+ return { kind: "escape" };
57
+ }
58
+ }
59
+ const absolute = path.resolve(normalizedRoot, normalized);
60
+ if (absolute !== normalizedRoot && !absolute.startsWith(`${normalizedRoot}${path.sep}`)) {
61
+ return { kind: "escape" };
62
+ }
63
+ return { kind: "ok", absolute };
64
+ };
65
+ const makeAccessError = (p, reason, message) => ({
66
+ _tag: "FileAccessError",
67
+ path: p,
68
+ reason,
69
+ message,
70
+ });
71
+ return {
72
+ exists: (p) => {
73
+ const resolved = resolveWithinRoot(p);
74
+ if (resolved.kind !== "ok") {
75
+ return Effect.succeed(false);
76
+ }
77
+ return fs.exists(resolved.absolute).pipe(Effect.catch(() => Effect.succeed(false)));
78
+ },
79
+ readBytes: (p) => {
80
+ const resolved = resolveWithinRoot(p);
81
+ if (resolved.kind === "escape") {
82
+ return Effect.fail(makeAccessError(p, "path-escape", `path escapes the accessor root: ${p}`));
83
+ }
84
+ return fs
85
+ .readFile(resolved.absolute)
86
+ .pipe(Effect.mapError((cause) => makeAccessError(p, "read-error", `read failed at ${p}: ${String(cause)}`)));
87
+ },
88
+ };
89
+ };
90
+ //# sourceMappingURL=platform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/pack-accessor/platform.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAqBxC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,QAA8B,EAC9B,YAAoB,EACF,EAAE;IACpB,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC;IAC9B,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAElD,MAAM,iBAAiB,GAAG,CAAC,KAAa,EAAiB,EAAE;QACzD,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACpD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;QAClD,CAAC;QACD,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACnF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC5B,CAAC;QACD,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAClE,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5C,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;YAC5B,CAAC;QACH,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QAC1D,IAAI,QAAQ,KAAK,cAAc,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;YACxF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC5B,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAClC,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,CACtB,CAAS,EACT,MAAiC,EACjC,OAAe,EACE,EAAE,CAAC,CAAC;QACrB,IAAI,EAAE,iBAA0B;QAChC,IAAI,EAAE,CAAC;QACP,MAAM;QACN,OAAO;KACR,CAAC,CAAC;IAEH,OAAO;QACL,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;YACZ,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBAC3B,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC;YACD,OAAO,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACtF,CAAC;QACD,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;YACf,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC/B,OAAO,MAAM,CAAC,IAAI,CAChB,eAAe,CAAC,CAAC,EAAE,aAAa,EAAE,mCAAmC,CAAC,EAAE,CAAC,CAC1E,CAAC;YACJ,CAAC;YACD,OAAO,EAAE;iBACN,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;iBAC3B,IAAI,CACH,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CACxB,eAAe,CAAC,CAAC,EAAE,YAAY,EAAE,kBAAkB,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAC1E,CACF,CAAC;QACN,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * VFT-backed `PackFileAccessor` for publish callers.
3
+ *
4
+ * A Virtual File Tree (VFT) is an in-memory representation of an extracted
5
+ * archive — the registry publish pipeline extracts an upload into a VFT, then
6
+ * passes that tree into Phase 4 decode/lint. The VFT's schema and bounds
7
+ * (max size, file count, path depth) are owned by the registry extract phase
8
+ * (Phase 4 concern); this accessor treats the tree as a read-only
9
+ * `path -> Uint8Array` map and enforces its own rooted-read + no-`..`-escape
10
+ * invariants at the rule boundary.
11
+ *
12
+ * Bounds enforcement here:
13
+ *
14
+ * - Paths are normalized to posix, `./` prefixes are stripped.
15
+ * - Empty path resolves to the accessor root itself.
16
+ * - Any path containing a `..` segment raises `FileAccessError {
17
+ * reason: "path-escape" }` from `readBytes` and resolves to `false` from
18
+ * `exists`.
19
+ * - Absolute paths (starting with `/` or a Windows drive letter) are
20
+ * treated as escape attempts.
21
+ *
22
+ * Mirrors the skill VFT accessor (`../skill-accessor/vft.ts`). The VFTNode
23
+ * interface is intentionally the same so a publish caller can extract a
24
+ * single archive once and pass the same tree to either accessor factory.
25
+ *
26
+ * @experimental This API is unstable and may change without notice.
27
+ * @packageDocumentation
28
+ */
29
+ import type { PackFileAccessor } from "../../context.js";
30
+ /**
31
+ * Minimal shape of a Virtual File Tree consumed by the accessor.
32
+ *
33
+ * Shape-compatible with `../skill-accessor/vft.ts#VFTNode`; kept as a local
34
+ * declaration to avoid a cross-subfolder import and to document what this
35
+ * accessor uses.
36
+ *
37
+ * @experimental This API is unstable and may change without notice.
38
+ */
39
+ export interface PackVFTNode {
40
+ /**
41
+ * Whether the given posix path points to a file within the tree.
42
+ */
43
+ readonly hasFile: (posixPath: string) => boolean;
44
+ /**
45
+ * Return the bytes for the given posix path, or `undefined` when the path
46
+ * does not resolve to a file (missing, directory, or outside the tree).
47
+ */
48
+ readonly getFile: (posixPath: string) => Uint8Array | undefined;
49
+ }
50
+ /**
51
+ * Build a VFT-backed `PackFileAccessor` rooted at the tree's root.
52
+ *
53
+ * Callers that root the pack at a sub-path of the archive should pre-strip
54
+ * that sub-path before constructing the tree — the accessor enforces no
55
+ * `..` escape above the root it was given.
56
+ *
57
+ * @experimental This API is unstable and may change without notice.
58
+ */
59
+ export declare const makeVftPackFileAccessor: (tree: PackVFTNode) => PackFileAccessor;
60
+ //# sourceMappingURL=vft.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vft.d.ts","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/pack-accessor/vft.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,KAAK,EAAmB,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAM1E;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IACjD;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,UAAU,GAAG,SAAS,CAAC;CACjE;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,GAAI,MAAM,WAAW,KAAG,gBAqB3D,CAAC"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * VFT-backed `PackFileAccessor` for publish callers.
3
+ *
4
+ * A Virtual File Tree (VFT) is an in-memory representation of an extracted
5
+ * archive — the registry publish pipeline extracts an upload into a VFT, then
6
+ * passes that tree into Phase 4 decode/lint. The VFT's schema and bounds
7
+ * (max size, file count, path depth) are owned by the registry extract phase
8
+ * (Phase 4 concern); this accessor treats the tree as a read-only
9
+ * `path -> Uint8Array` map and enforces its own rooted-read + no-`..`-escape
10
+ * invariants at the rule boundary.
11
+ *
12
+ * Bounds enforcement here:
13
+ *
14
+ * - Paths are normalized to posix, `./` prefixes are stripped.
15
+ * - Empty path resolves to the accessor root itself.
16
+ * - Any path containing a `..` segment raises `FileAccessError {
17
+ * reason: "path-escape" }` from `readBytes` and resolves to `false` from
18
+ * `exists`.
19
+ * - Absolute paths (starting with `/` or a Windows drive letter) are
20
+ * treated as escape attempts.
21
+ *
22
+ * Mirrors the skill VFT accessor (`../skill-accessor/vft.ts`). The VFTNode
23
+ * interface is intentionally the same so a publish caller can extract a
24
+ * single archive once and pass the same tree to either accessor factory.
25
+ *
26
+ * @experimental This API is unstable and may change without notice.
27
+ * @packageDocumentation
28
+ */
29
+ import * as Effect from "effect/Effect";
30
+ /**
31
+ * Build a VFT-backed `PackFileAccessor` rooted at the tree's root.
32
+ *
33
+ * Callers that root the pack at a sub-path of the archive should pre-strip
34
+ * that sub-path before constructing the tree — the accessor enforces no
35
+ * `..` escape above the root it was given.
36
+ *
37
+ * @experimental This API is unstable and may change without notice.
38
+ */
39
+ export const makeVftPackFileAccessor = (tree) => {
40
+ return {
41
+ exists: (path) => {
42
+ const normalized = normalizeAndCheck(path);
43
+ if (normalized.kind !== "ok") {
44
+ return Effect.succeed(false);
45
+ }
46
+ return Effect.succeed(tree.hasFile(normalized.path));
47
+ },
48
+ readBytes: (path) => {
49
+ const normalized = normalizeAndCheck(path);
50
+ if (normalized.kind === "escape") {
51
+ return failFileAccess(path, "path-escape", `path escapes the accessor root: ${path}`);
52
+ }
53
+ const bytes = tree.getFile(normalized.path);
54
+ if (bytes === undefined) {
55
+ return failFileAccess(path, "read-error", `file not found at ${path}`);
56
+ }
57
+ return Effect.succeed(bytes);
58
+ },
59
+ };
60
+ };
61
+ const normalizeAndCheck = (path) => {
62
+ if (path === "" || path === "." || path === "./") {
63
+ return { kind: "ok", path: "" };
64
+ }
65
+ // Windows drive letters (`C:/`) and absolute posix paths both count as
66
+ // escape attempts at a pack-rooted accessor.
67
+ if (/^[a-z]:[\\/]/i.test(path) || path.startsWith("/") || path.startsWith("\\")) {
68
+ return { kind: "escape" };
69
+ }
70
+ const normalized = path.replace(/\\/g, "/").replace(/^\.\//, "");
71
+ const segments = normalized.split("/");
72
+ for (const segment of segments) {
73
+ if (segment === "..") {
74
+ return { kind: "escape" };
75
+ }
76
+ }
77
+ return { kind: "ok", path: normalized };
78
+ };
79
+ const failFileAccess = (path, reason, message) => Effect.fail({
80
+ _tag: "FileAccessError",
81
+ path,
82
+ reason,
83
+ message,
84
+ });
85
+ //# sourceMappingURL=vft.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vft.js","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/pack-accessor/vft.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AA4BxC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,IAAiB,EAAoB,EAAE;IAC7E,OAAO;QACL,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACf,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,UAAU,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBAC7B,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC;YACD,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QACvD,CAAC;QACD,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;YAClB,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,UAAU,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACjC,OAAO,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE,mCAAmC,IAAI,EAAE,CAAC,CAAC;YACxF,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,OAAO,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,qBAAqB,IAAI,EAAE,CAAC,CAAC;YACzE,CAAC;YACD,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAQF,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAmB,EAAE;IAC1D,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QACjD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAClC,CAAC;IACD,uEAAuE;IACvE,6CAA6C;IAC7C,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAChF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC5B,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAC1C,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CACrB,IAAY,EACZ,MAAiC,EACjC,OAAe,EAC6B,EAAE,CAC9C,MAAM,CAAC,IAAI,CAAC;IACV,IAAI,EAAE,iBAA0B;IAChC,IAAI;IACJ,MAAM;IACN,OAAO;CACR,CAAC,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * `pack/*` rule catalog — the v1 three-rule set.
3
+ *
4
+ * Per `docs/design/lint-engine.md §10.pack`, registry publish and `axm lint`
5
+ * run exactly these rules against each pack context:
6
+ *
7
+ * | ID | Severity | Autofix |
8
+ * | ------------------------------- | -------- | ------- |
9
+ * | `pack/manifest-present` | error | — |
10
+ * | `pack/manifest-schema-valid` | error | — |
11
+ * | `pack/manifest-keys-recognized` | warning | — |
12
+ *
13
+ * All three ship `kind: "advisory"`. Packs are registry-only at v1 (no
14
+ * non-native arm), so there is no applicability discriminator — every pack
15
+ * context runs every rule and the `check` body's early-return arms handle
16
+ * manifest-absent cases.
17
+ *
18
+ * Rule ids are **registered with the lint config allowlist at module-load
19
+ * time**, so importing this catalog extends the set of accepted
20
+ * `.axm/settings.json` `lint.rules` keys. Consumers that never import the
21
+ * catalog (the registry Worker bundle for `skill`-only routes, e.g.) don't
22
+ * pay the registration cost.
23
+ *
24
+ * @experimental This API is unstable and may change without notice.
25
+ * @packageDocumentation
26
+ */
27
+ import type { LintRule } from "../rule.js";
28
+ import type { PackRuleContext } from "../context.js";
29
+ /**
30
+ * Ordered v1 `pack/*` rule catalog. Declaration order is the evaluation
31
+ * order within a single `evaluateContexts` call (deterministic ordering is
32
+ * test-observable; see `evaluate.ts`).
33
+ *
34
+ * @experimental This API is unstable and may change without notice.
35
+ */
36
+ export declare const packRules: ReadonlyArray<LintRule<PackRuleContext>>;
37
+ //# sourceMappingURL=pack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pack.d.ts","sourceRoot":"","sources":["../../../../../src/unstable/lint/catalog/pack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAKrD;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,EAAE,aAAa,CAAC,QAAQ,CAAC,eAAe,CAAC,CAI9D,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * `pack/*` rule catalog — the v1 three-rule set.
3
+ *
4
+ * Per `docs/design/lint-engine.md §10.pack`, registry publish and `axm lint`
5
+ * run exactly these rules against each pack context:
6
+ *
7
+ * | ID | Severity | Autofix |
8
+ * | ------------------------------- | -------- | ------- |
9
+ * | `pack/manifest-present` | error | — |
10
+ * | `pack/manifest-schema-valid` | error | — |
11
+ * | `pack/manifest-keys-recognized` | warning | — |
12
+ *
13
+ * All three ship `kind: "advisory"`. Packs are registry-only at v1 (no
14
+ * non-native arm), so there is no applicability discriminator — every pack
15
+ * context runs every rule and the `check` body's early-return arms handle
16
+ * manifest-absent cases.
17
+ *
18
+ * Rule ids are **registered with the lint config allowlist at module-load
19
+ * time**, so importing this catalog extends the set of accepted
20
+ * `.axm/settings.json` `lint.rules` keys. Consumers that never import the
21
+ * catalog (the registry Worker bundle for `skill`-only routes, e.g.) don't
22
+ * pay the registration cost.
23
+ *
24
+ * @experimental This API is unstable and may change without notice.
25
+ * @packageDocumentation
26
+ */
27
+ import { registerLintRuleIds } from "../config.js";
28
+ import { manifestPresentRule } from "./pack/manifest-present.js";
29
+ import { manifestSchemaValidRule } from "./pack/manifest-schema-valid.js";
30
+ import { manifestKeysRecognizedRule } from "./pack/manifest-keys-recognized.js";
31
+ /**
32
+ * Ordered v1 `pack/*` rule catalog. Declaration order is the evaluation
33
+ * order within a single `evaluateContexts` call (deterministic ordering is
34
+ * test-observable; see `evaluate.ts`).
35
+ *
36
+ * @experimental This API is unstable and may change without notice.
37
+ */
38
+ export const packRules = [
39
+ manifestPresentRule,
40
+ manifestSchemaValidRule,
41
+ manifestKeysRecognizedRule,
42
+ ];
43
+ // Register ids into the `LintConfig.rules` allowlist. Module-load side effect:
44
+ // a consumer that imports this catalog (or the `catalog/index` barrel) enables
45
+ // `.axm/settings.json` `lint.rules` to reference any of the above rule ids.
46
+ registerLintRuleIds(packRules.map((r) => r.id));
47
+ //# sourceMappingURL=pack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pack.js","sourceRoot":"","sources":["../../../../../src/unstable/lint/catalog/pack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAEhF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,SAAS,GAA6C;IACjE,mBAAmB;IACnB,uBAAuB;IACvB,0BAA0B;CAC3B,CAAC;AAEF,+EAA+E;AAC/E,+EAA+E;AAC/E,4EAA4E;AAC5E,mBAAmB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Shared schema-delegation plumbing for `-schema-valid` rules.
3
+ *
4
+ * Per `docs/design/lint-engine.md §4` ("Schema-valid rules delegate to Effect
5
+ * Schema"), every rule whose id ends in `-schema-valid` implements `check` by
6
+ * running the canonical schema through `Schema.decodeUnknownResult` with
7
+ * `onExcessProperty: "ignore"` and `errors: "all"`, then mapping the issues
8
+ * through `issuesToFindings`.
9
+ *
10
+ * Phase 3a is the first catalog; landing the helper now keeps the Phase 3b
11
+ * pack catalog from duplicating the composition when it arrives. The helper is
12
+ * intentionally narrow — only the surface the `-schema-valid` rules need.
13
+ *
14
+ * @experimental This API is unstable and may change without notice.
15
+ * @packageDocumentation
16
+ */
17
+ import * as Effect from "effect/Effect";
18
+ import * as Schema from "effect/Schema";
19
+ import type { AdvisoryFinding, Severity } from "../../rule.js";
20
+ /**
21
+ * Decode `input` against `schema` (excess keys ignored, all issues collected)
22
+ * and return one advisory finding per leaf issue. Success produces `[]`.
23
+ *
24
+ * `input` of `undefined` short-circuits to `[]` — the caller is expected to
25
+ * have already guarded on "manifest exists" via the complementary
26
+ * `-present` rule.
27
+ *
28
+ * @param ruleId - `<namespace>/<name>` id of the calling rule.
29
+ * @param severity - Severity to stamp on each emitted finding.
30
+ * @param file - Accessor-relative file path to stamp on `location.file`.
31
+ * @param schema - Canonical Effect schema; `Schema.decodeUnknownResult`
32
+ * runs with `onExcessProperty: "ignore"` and `errors: "all"`.
33
+ * @param input - Raw decoded JSON value to check (typically `subject.*Json`).
34
+ *
35
+ * @experimental This API is unstable and may change without notice.
36
+ */
37
+ export declare const schemaDecodeFindings: <A, I>(ruleId: string, severity: Severity, file: string, schema: Schema.Codec<A, I>, input: unknown) => Effect.Effect<ReadonlyArray<AdvisoryFinding>>;
38
+ /**
39
+ * Read the top-level field names of a `Schema.Struct` value.
40
+ *
41
+ * Callers produce an `allowedKeys` set in one place, driven by the schema
42
+ * itself — no copy-paste of field names into rule bodies. If the schema
43
+ * gains a field the allowed-keys set grows by construction.
44
+ *
45
+ * @experimental This API is unstable and may change without notice.
46
+ */
47
+ export declare const structFieldKeys: (struct: {
48
+ readonly fields: Readonly<Record<string, unknown>>;
49
+ }) => ReadonlySet<string>;
50
+ /**
51
+ * Enumerate top-level keys present on `input` that are not declared by
52
+ * `allowedKeys`. Returns one advisory finding per unknown key.
53
+ *
54
+ * `input` of `undefined` or non-object short-circuits to `[]`.
55
+ *
56
+ * @experimental This API is unstable and may change without notice.
57
+ */
58
+ export declare const enumerateUnknownTopLevelKeys: (ruleId: string, severity: Severity, file: string, allowedKeys: ReadonlySet<string>, input: unknown) => ReadonlyArray<AdvisoryFinding>;
59
+ //# sourceMappingURL=schema-rule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-rule.d.ts","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/shared/schema-rule.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAM/D;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,oBAAoB,GAAI,CAAC,EAAE,CAAC,EACvC,QAAQ,MAAM,EACd,UAAU,QAAQ,EAClB,MAAM,MAAM,EACZ,QAAQ,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,OAAO,OAAO,KACb,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,CAY9C,CAAC;AAMF;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ;IACtC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACpD,KAAG,WAAW,CAAC,MAAM,CAAwC,CAAC;AAE/D;;;;;;;GAOG;AACH,eAAO,MAAM,4BAA4B,GACvC,QAAQ,MAAM,EACd,UAAU,QAAQ,EAClB,MAAM,MAAM,EACZ,aAAa,WAAW,CAAC,MAAM,CAAC,EAChC,OAAO,OAAO,KACb,aAAa,CAAC,eAAe,CAsB/B,CAAC"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Shared schema-delegation plumbing for `-schema-valid` rules.
3
+ *
4
+ * Per `docs/design/lint-engine.md §4` ("Schema-valid rules delegate to Effect
5
+ * Schema"), every rule whose id ends in `-schema-valid` implements `check` by
6
+ * running the canonical schema through `Schema.decodeUnknownResult` with
7
+ * `onExcessProperty: "ignore"` and `errors: "all"`, then mapping the issues
8
+ * through `issuesToFindings`.
9
+ *
10
+ * Phase 3a is the first catalog; landing the helper now keeps the Phase 3b
11
+ * pack catalog from duplicating the composition when it arrives. The helper is
12
+ * intentionally narrow — only the surface the `-schema-valid` rules need.
13
+ *
14
+ * @experimental This API is unstable and may change without notice.
15
+ * @packageDocumentation
16
+ */
17
+ import * as Effect from "effect/Effect";
18
+ import * as Result from "effect/Result";
19
+ import * as Schema from "effect/Schema";
20
+ import { issuesToFindings } from "../../issues-to-findings.js";
21
+ // -----------------------------------------------------------------------------
22
+ // schemaDecodeFindings
23
+ // -----------------------------------------------------------------------------
24
+ /**
25
+ * Decode `input` against `schema` (excess keys ignored, all issues collected)
26
+ * and return one advisory finding per leaf issue. Success produces `[]`.
27
+ *
28
+ * `input` of `undefined` short-circuits to `[]` — the caller is expected to
29
+ * have already guarded on "manifest exists" via the complementary
30
+ * `-present` rule.
31
+ *
32
+ * @param ruleId - `<namespace>/<name>` id of the calling rule.
33
+ * @param severity - Severity to stamp on each emitted finding.
34
+ * @param file - Accessor-relative file path to stamp on `location.file`.
35
+ * @param schema - Canonical Effect schema; `Schema.decodeUnknownResult`
36
+ * runs with `onExcessProperty: "ignore"` and `errors: "all"`.
37
+ * @param input - Raw decoded JSON value to check (typically `subject.*Json`).
38
+ *
39
+ * @experimental This API is unstable and may change without notice.
40
+ */
41
+ export const schemaDecodeFindings = (ruleId, severity, file, schema, input) => {
42
+ if (input === undefined) {
43
+ return Effect.succeed([]);
44
+ }
45
+ const result = Schema.decodeUnknownResult(schema)(input, {
46
+ onExcessProperty: "ignore",
47
+ errors: "all",
48
+ });
49
+ if (Result.isSuccess(result)) {
50
+ return Effect.succeed([]);
51
+ }
52
+ return Effect.succeed(issuesToFindings(ruleId, severity, file, result.failure));
53
+ };
54
+ // -----------------------------------------------------------------------------
55
+ // enumerateUnknownTopLevelKeys
56
+ // -----------------------------------------------------------------------------
57
+ /**
58
+ * Read the top-level field names of a `Schema.Struct` value.
59
+ *
60
+ * Callers produce an `allowedKeys` set in one place, driven by the schema
61
+ * itself — no copy-paste of field names into rule bodies. If the schema
62
+ * gains a field the allowed-keys set grows by construction.
63
+ *
64
+ * @experimental This API is unstable and may change without notice.
65
+ */
66
+ export const structFieldKeys = (struct) => new Set(Object.keys(struct.fields));
67
+ /**
68
+ * Enumerate top-level keys present on `input` that are not declared by
69
+ * `allowedKeys`. Returns one advisory finding per unknown key.
70
+ *
71
+ * `input` of `undefined` or non-object short-circuits to `[]`.
72
+ *
73
+ * @experimental This API is unstable and may change without notice.
74
+ */
75
+ export const enumerateUnknownTopLevelKeys = (ruleId, severity, file, allowedKeys, input) => {
76
+ if (!isPlainRecord(input)) {
77
+ return [];
78
+ }
79
+ const findings = [];
80
+ for (const key of Object.keys(input)) {
81
+ if (allowedKeys.has(key)) {
82
+ continue;
83
+ }
84
+ findings.push({
85
+ kind: "advisory",
86
+ ruleId,
87
+ severity,
88
+ message: `unrecognized top-level key '${key}'; remove it or rename to a canonical field.`,
89
+ suggestions: [
90
+ `Remove the '${key}' key from the manifest.`,
91
+ `Rename '${key}' to the intended canonical field.`,
92
+ ],
93
+ location: { file },
94
+ });
95
+ }
96
+ return findings;
97
+ };
98
+ const isPlainRecord = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
99
+ //# sourceMappingURL=schema-rule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-rule.js","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/shared/schema-rule.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAG/D,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEhF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,MAAc,EACd,QAAkB,EAClB,IAAY,EACZ,MAA0B,EAC1B,KAAc,EACiC,EAAE;IACjD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE;QACvD,gBAAgB,EAAE,QAAQ;QAC1B,MAAM,EAAE,KAAK;KACd,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,OAAO,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AAClF,CAAC,CAAC;AAEF,gFAAgF;AAChF,+BAA+B;AAC/B,gFAAgF;AAEhF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAE/B,EAAuB,EAAE,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AAE/D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,MAAc,EACd,QAAkB,EAClB,IAAY,EACZ,WAAgC,EAChC,KAAc,EACkB,EAAE;IAClC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,SAAS;QACX,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,UAAU;YAChB,MAAM;YACN,QAAQ;YACR,OAAO,EAAE,+BAA+B,GAAG,8CAA8C;YACzF,WAAW,EAAE;gBACX,eAAe,GAAG,0BAA0B;gBAC5C,WAAW,GAAG,oCAAoC;aACnD;YACD,QAAQ,EAAE,EAAE,IAAI,EAAE;SACnB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,KAAc,EAA8C,EAAE,CACnF,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * `skill/frontmatter-parseable` — SKILL.md frontmatter parses as a YAML
3
+ * mapping.
4
+ *
5
+ * Cascade (reports the first failure in the order below; later arms
6
+ * short-circuit):
7
+ *
8
+ * 1. SKILL.md begins with `---` at byte 0 (no BOM, no leading whitespace, no
9
+ * leading HTML comment). This is the arm that caught the
10
+ * `@agentxm/skills/axm` regression — an HTML comment preceded the
11
+ * frontmatter delimiter, so YAML parsers silently treated the content as
12
+ * body.
13
+ * 2. Frontmatter YAML parses without error.
14
+ * 3. Parsed frontmatter is a mapping (not a list, not a scalar).
15
+ *
16
+ * Presence is handled by `skill/skill-md-present`; this rule early-returns
17
+ * `[]` when `SKILL.md` is absent.
18
+ *
19
+ * Advisory-only — the cascade mixes one mechanically-fixable arm
20
+ * (strip-leading-bytes) with arms requiring human judgment (fix YAML
21
+ * syntax). Per `docs/design/lint-engine.md §10.skill (Notes)`, splitting by
22
+ * kind or adding a byte-range mutation Operation is deferred until a second
23
+ * mechanical arm justifies it.
24
+ *
25
+ * @experimental This API is unstable and may change without notice.
26
+ * @packageDocumentation
27
+ */
28
+ import type { SkillRuleContext } from "../../context.js";
29
+ import type { AdvisoryRule } from "../../rule.js";
30
+ export declare const frontmatterParseableRule: AdvisoryRule<SkillRuleContext>;
31
+ //# sourceMappingURL=frontmatter-parseable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontmatter-parseable.d.ts","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/skill/frontmatter-parseable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAmB,YAAY,EAAE,MAAM,eAAe,CAAC;AAanE,eAAO,MAAM,wBAAwB,EAAE,YAAY,CAAC,gBAAgB,CAyBnE,CAAC"}