@agentxm/client-core 0.2.0 → 0.3.2

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 (362) 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/site-content/__generated__/schemas/axm-lock.schema.json +727 -1124
  303. package/site-content/__generated__/schemas/axm-package-meta.schema.json +3 -16
  304. package/site-content/__generated__/schemas/command.schema.json +29 -130
  305. package/site-content/__generated__/schemas/extension-pack.schema.json +36 -154
  306. package/site-content/__generated__/schemas/mcp-server.schema.json +21 -134
  307. package/site-content/__generated__/schemas/settings.schema.json +111 -291
  308. package/site-content/__generated__/schemas/skill.schema.json +23 -143
  309. package/dist/src/unstable/workspace/apply-plan.d.ts.map +0 -1
  310. package/dist/src/unstable/workspace/apply-plan.js.map +0 -1
  311. package/dist/src/unstable/workspace/doctor/check-def.d.ts +0 -29
  312. package/dist/src/unstable/workspace/doctor/check-def.d.ts.map +0 -1
  313. package/dist/src/unstable/workspace/doctor/check-def.js +0 -17
  314. package/dist/src/unstable/workspace/doctor/check-def.js.map +0 -1
  315. package/dist/src/unstable/workspace/doctor/checks/agents-configured.d.ts +0 -5
  316. package/dist/src/unstable/workspace/doctor/checks/agents-configured.d.ts.map +0 -1
  317. package/dist/src/unstable/workspace/doctor/checks/agents-configured.js +0 -170
  318. package/dist/src/unstable/workspace/doctor/checks/agents-configured.js.map +0 -1
  319. package/dist/src/unstable/workspace/doctor/checks/extensions-active.d.ts +0 -4
  320. package/dist/src/unstable/workspace/doctor/checks/extensions-active.d.ts.map +0 -1
  321. package/dist/src/unstable/workspace/doctor/checks/extensions-active.js +0 -238
  322. package/dist/src/unstable/workspace/doctor/checks/extensions-active.js.map +0 -1
  323. package/dist/src/unstable/workspace/doctor/checks/extensions-current.d.ts +0 -18
  324. package/dist/src/unstable/workspace/doctor/checks/extensions-current.d.ts.map +0 -1
  325. package/dist/src/unstable/workspace/doctor/checks/extensions-current.js +0 -92
  326. package/dist/src/unstable/workspace/doctor/checks/extensions-current.js.map +0 -1
  327. package/dist/src/unstable/workspace/doctor/checks/extensions-installed.d.ts +0 -5
  328. package/dist/src/unstable/workspace/doctor/checks/extensions-installed.d.ts.map +0 -1
  329. package/dist/src/unstable/workspace/doctor/checks/extensions-installed.js +0 -472
  330. package/dist/src/unstable/workspace/doctor/checks/extensions-installed.js.map +0 -1
  331. package/dist/src/unstable/workspace/doctor/checks/workspace-ready.d.ts +0 -5
  332. package/dist/src/unstable/workspace/doctor/checks/workspace-ready.d.ts.map +0 -1
  333. package/dist/src/unstable/workspace/doctor/checks/workspace-ready.js +0 -201
  334. package/dist/src/unstable/workspace/doctor/checks/workspace-ready.js.map +0 -1
  335. package/dist/src/unstable/workspace/doctor/diagnose.d.ts +0 -49
  336. package/dist/src/unstable/workspace/doctor/diagnose.d.ts.map +0 -1
  337. package/dist/src/unstable/workspace/doctor/diagnose.js +0 -78
  338. package/dist/src/unstable/workspace/doctor/diagnose.js.map +0 -1
  339. package/dist/src/unstable/workspace/doctor/index.d.ts +0 -8
  340. package/dist/src/unstable/workspace/doctor/index.d.ts.map +0 -1
  341. package/dist/src/unstable/workspace/doctor/index.js +0 -6
  342. package/dist/src/unstable/workspace/doctor/index.js.map +0 -1
  343. package/dist/src/unstable/workspace/doctor/rollup.d.ts +0 -4
  344. package/dist/src/unstable/workspace/doctor/rollup.d.ts.map +0 -1
  345. package/dist/src/unstable/workspace/doctor/rollup.js +0 -28
  346. package/dist/src/unstable/workspace/doctor/rollup.js.map +0 -1
  347. package/dist/src/unstable/workspace/doctor/runner.d.ts +0 -6
  348. package/dist/src/unstable/workspace/doctor/runner.d.ts.map +0 -1
  349. package/dist/src/unstable/workspace/doctor/runner.js +0 -179
  350. package/dist/src/unstable/workspace/doctor/runner.js.map +0 -1
  351. package/dist/src/unstable/workspace/doctor/types.d.ts +0 -127
  352. package/dist/src/unstable/workspace/doctor/types.d.ts.map +0 -1
  353. package/dist/src/unstable/workspace/doctor/types.js +0 -60
  354. package/dist/src/unstable/workspace/doctor/types.js.map +0 -1
  355. package/dist/src/unstable/workspace/plan.d.ts.map +0 -1
  356. package/dist/src/unstable/workspace/plan.js.map +0 -1
  357. package/dist/src/unstable/workspace/resolve-plan.d.ts.map +0 -1
  358. package/dist/src/unstable/workspace/resolve-plan.js.map +0 -1
  359. package/dist/src/unstable/workspace/sync.d.ts +0 -17
  360. package/dist/src/unstable/workspace/sync.d.ts.map +0 -1
  361. package/dist/src/unstable/workspace/sync.js +0 -142
  362. package/dist/src/unstable/workspace/sync.js.map +0 -1
@@ -0,0 +1,151 @@
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 * as Effect from "effect/Effect";
29
+ import YAML from "yaml";
30
+ const RULE_ID = "skill/frontmatter-parseable";
31
+ const SKILL_MD = "SKILL.md";
32
+ const DELIMITER = "---";
33
+ // U+FEFF — UTF-8 BOM as a single code point. Escape form so the editor /
34
+ // formatter can't silently strip the literal.
35
+ const UTF8_BOM = "\uFEFF";
36
+ // `ignoreBOM: true` here means "pass the BOM through to the decoded string,
37
+ // don't strip it" — cascade arm 1 must see the BOM to flag it.
38
+ const decoder = new TextDecoder("utf-8", { fatal: false, ignoreBOM: true });
39
+ export const frontmatterParseableRule = {
40
+ id: RULE_ID,
41
+ description: "SKILL.md frontmatter parses as a YAML mapping.",
42
+ kind: "advisory",
43
+ severity: "error",
44
+ check: (context) => Effect.gen(function* () {
45
+ const exists = yield* context.files.exists(SKILL_MD);
46
+ if (!exists) {
47
+ // Presence is covered by `skill/skill-md-present`.
48
+ return [];
49
+ }
50
+ const bytesResult = yield* context.files.readBytes(SKILL_MD).pipe(Effect.map((bytes) => ({ kind: "ok", bytes })),
51
+ // Treat read errors the same as absence — presence rule already owns
52
+ // that path. If `exists` said true but read fails, the cascade can't
53
+ // run anyway; silence here keeps the finding count at one.
54
+ Effect.catch(() => Effect.succeed({ kind: "none" })));
55
+ if (bytesResult.kind === "none") {
56
+ return [];
57
+ }
58
+ const content = decoder.decode(bytesResult.bytes);
59
+ return evaluateCascade(content);
60
+ }),
61
+ };
62
+ // -----------------------------------------------------------------------------
63
+ // Cascade
64
+ // -----------------------------------------------------------------------------
65
+ const evaluateCascade = (content) => {
66
+ const leading = detectLeadingBytes(content);
67
+ if (leading !== undefined) {
68
+ return [leading];
69
+ }
70
+ const parsed = parseFrontmatterYaml(content);
71
+ if (parsed === undefined) {
72
+ // No frontmatter block. Treat as bad (cascade arm 1 "begins with ---"
73
+ // already handled the "literally no ---" case; reaching here means the
74
+ // delimiter was found but the closing delimiter is missing).
75
+ return [
76
+ finding("SKILL.md frontmatter is malformed: opening `---` found but closing `---` is missing.", ["Add a closing `---` after the frontmatter YAML block."]),
77
+ ];
78
+ }
79
+ if (parsed.kind === "parse-error") {
80
+ return [
81
+ finding(`SKILL.md frontmatter YAML is invalid: ${parsed.message}`, [
82
+ "Fix YAML syntax at the referenced location.",
83
+ ]),
84
+ ];
85
+ }
86
+ if (!isMapping(parsed.value)) {
87
+ return [
88
+ finding("SKILL.md frontmatter must be a YAML mapping (key: value pairs), not a list or scalar.", ["Rewrite the frontmatter block as `key: value` pairs."]),
89
+ ];
90
+ }
91
+ return [];
92
+ };
93
+ // -----------------------------------------------------------------------------
94
+ // Arm 1: leading bytes before `---`
95
+ // -----------------------------------------------------------------------------
96
+ const detectLeadingBytes = (content) => {
97
+ if (content.startsWith(UTF8_BOM)) {
98
+ return finding("SKILL.md begins with a UTF-8 BOM; frontmatter `---` must appear at byte 0.", ["Strip the UTF-8 BOM from the start of SKILL.md."], { line: 1 });
99
+ }
100
+ if (content.startsWith(DELIMITER)) {
101
+ return undefined;
102
+ }
103
+ // Any non-`---` leading content is a cascade-arm-1 violation. Detect the
104
+ // common HTML-comment case explicitly so the finding message is clear.
105
+ if (/^\s*<!--/.test(content)) {
106
+ return finding("SKILL.md begins with an HTML comment before the frontmatter `---`; the delimiter must appear at byte 0.", ["Strip leading bytes before the first `---`."], { line: 1 });
107
+ }
108
+ return finding("SKILL.md frontmatter `---` must appear at byte 0; leading whitespace or other content is not allowed.", ["Strip leading bytes before the first `---`."], { line: 1 });
109
+ };
110
+ const parseFrontmatterYaml = (content) => {
111
+ // content starts with `---` (arm 1 guaranteed). Find closing delimiter on a
112
+ // new line.
113
+ const afterOpening = content.indexOf("\n");
114
+ if (afterOpening === -1) {
115
+ return undefined;
116
+ }
117
+ const closingIndex = content.indexOf(`\n${DELIMITER}`, afterOpening);
118
+ if (closingIndex === -1) {
119
+ return undefined;
120
+ }
121
+ const yamlContent = content.slice(afterOpening + 1, closingIndex);
122
+ try {
123
+ // YAML.parse returns `null | undefined` for empty input; we care about
124
+ // shape, not emptiness at this arm.
125
+ const value = YAML.parse(yamlContent);
126
+ return { kind: "parsed", value };
127
+ }
128
+ catch (error) {
129
+ return {
130
+ kind: "parse-error",
131
+ message: error instanceof Error ? error.message : String(error),
132
+ };
133
+ }
134
+ };
135
+ const isMapping = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
136
+ // -----------------------------------------------------------------------------
137
+ // Finding helpers
138
+ // -----------------------------------------------------------------------------
139
+ const finding = (message, suggestions, position) => ({
140
+ kind: "advisory",
141
+ ruleId: RULE_ID,
142
+ severity: "error",
143
+ message,
144
+ suggestions,
145
+ location: {
146
+ file: SKILL_MD,
147
+ ...(position?.line !== undefined ? { line: position.line } : {}),
148
+ ...(position?.column !== undefined ? { column: position.column } : {}),
149
+ },
150
+ });
151
+ //# sourceMappingURL=frontmatter-parseable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontmatter-parseable.js","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/skill/frontmatter-parseable.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * `skill/manifest-keys-recognized` — `skill.json` contains only keys
3
+ * declared by `SkillManifestSchema`.
4
+ *
5
+ * The paired `-schema-valid` rule ignores excess properties by construction
6
+ * (`onExcessProperty: "ignore"`); this rule surfaces them at warning severity
7
+ * so newer-schema manifests can roll out ahead of registry deploys.
8
+ *
9
+ * Allowed-keys set is derived from `SkillManifestSchema.fields` — no
10
+ * copy-paste of field names. A schema gain (or rename) automatically updates
11
+ * the allowlist.
12
+ *
13
+ * Early-return arms (no findings):
14
+ *
15
+ * - `subject.isNative === false` — non-native skills have no manifest to
16
+ * check.
17
+ * - `subject.skillJson === undefined` / non-object — nothing to enumerate;
18
+ * `skill/manifest-present` owns the absence case.
19
+ *
20
+ * @experimental This API is unstable and may change without notice.
21
+ * @packageDocumentation
22
+ */
23
+ import type { SkillRuleContext } from "../../context.js";
24
+ import type { AdvisoryRule } from "../../rule.js";
25
+ export declare const manifestKeysRecognizedRule: AdvisoryRule<SkillRuleContext>;
26
+ //# sourceMappingURL=manifest-keys-recognized.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-keys-recognized.d.ts","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/skill/manifest-keys-recognized.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AASlD,eAAO,MAAM,0BAA0B,EAAE,YAAY,CAAC,gBAAgB,CAmBrE,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * `skill/manifest-keys-recognized` — `skill.json` contains only keys
3
+ * declared by `SkillManifestSchema`.
4
+ *
5
+ * The paired `-schema-valid` rule ignores excess properties by construction
6
+ * (`onExcessProperty: "ignore"`); this rule surfaces them at warning severity
7
+ * so newer-schema manifests can roll out ahead of registry deploys.
8
+ *
9
+ * Allowed-keys set is derived from `SkillManifestSchema.fields` — no
10
+ * copy-paste of field names. A schema gain (or rename) automatically updates
11
+ * the allowlist.
12
+ *
13
+ * Early-return arms (no findings):
14
+ *
15
+ * - `subject.isNative === false` — non-native skills have no manifest to
16
+ * check.
17
+ * - `subject.skillJson === undefined` / non-object — nothing to enumerate;
18
+ * `skill/manifest-present` owns the absence case.
19
+ *
20
+ * @experimental This API is unstable and may change without notice.
21
+ * @packageDocumentation
22
+ */
23
+ import * as Effect from "effect/Effect";
24
+ import { SkillManifestSchema } from "../../../skills/manifest-schema.js";
25
+ import { enumerateUnknownTopLevelKeys, structFieldKeys } from "../shared/schema-rule.js";
26
+ const RULE_ID = "skill/manifest-keys-recognized";
27
+ const SKILL_JSON = "skill.json";
28
+ const allowedKeys = structFieldKeys(SkillManifestSchema);
29
+ export const manifestKeysRecognizedRule = {
30
+ id: RULE_ID,
31
+ description: "skill.json contains only keys recognized by SkillManifestSchema.",
32
+ kind: "advisory",
33
+ severity: "warning",
34
+ check: (context) => {
35
+ if (!context.subject.isNative) {
36
+ return Effect.succeed([]);
37
+ }
38
+ return Effect.succeed(enumerateUnknownTopLevelKeys(RULE_ID, "warning", SKILL_JSON, allowedKeys, context.subject.skillJson));
39
+ },
40
+ };
41
+ //# sourceMappingURL=manifest-keys-recognized.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-keys-recognized.js","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/skill/manifest-keys-recognized.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,4BAA4B,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEzF,MAAM,OAAO,GAAG,gCAAgC,CAAC;AACjD,MAAM,UAAU,GAAG,YAAY,CAAC;AAEhC,MAAM,WAAW,GAAG,eAAe,CAAC,mBAAmB,CAAC,CAAC;AAEzD,MAAM,CAAC,MAAM,0BAA0B,GAAmC;IACxE,EAAE,EAAE,OAAO;IACX,WAAW,EAAE,kEAAkE;IAC/E,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE;QACjB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC9B,OAAO,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,MAAM,CAAC,OAAO,CACnB,4BAA4B,CAC1B,OAAO,EACP,SAAS,EACT,UAAU,EACV,WAAW,EACX,OAAO,CAAC,OAAO,CAAC,SAAS,CAC1B,CACF,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * `skill/manifest-present` — native skills must have a `skill.json` at the
3
+ * skill root.
4
+ *
5
+ * Native-only via `check` early-return: when `subject.isNative === false`
6
+ * (managed-external skills without a declared manifest), the rule produces
7
+ * no findings. No separate `applies` predicate per
8
+ * `docs/design/lint-engine.md §3`.
9
+ *
10
+ * Advisory-only — scaffolding a manifest is a user-authored action.
11
+ *
12
+ * @experimental This API is unstable and may change without notice.
13
+ * @packageDocumentation
14
+ */
15
+ import type { SkillRuleContext } from "../../context.js";
16
+ import type { AdvisoryRule } from "../../rule.js";
17
+ export declare const manifestPresentRule: AdvisoryRule<SkillRuleContext>;
18
+ //# sourceMappingURL=manifest-present.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-present.d.ts","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/skill/manifest-present.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAmB,YAAY,EAAE,MAAM,eAAe,CAAC;AAKnE,eAAO,MAAM,mBAAmB,EAAE,YAAY,CAAC,gBAAgB,CA+B9D,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * `skill/manifest-present` — native skills must have a `skill.json` at the
3
+ * skill root.
4
+ *
5
+ * Native-only via `check` early-return: when `subject.isNative === false`
6
+ * (managed-external skills without a declared manifest), the rule produces
7
+ * no findings. No separate `applies` predicate per
8
+ * `docs/design/lint-engine.md §3`.
9
+ *
10
+ * Advisory-only — scaffolding a manifest is a user-authored action.
11
+ *
12
+ * @experimental This API is unstable and may change without notice.
13
+ * @packageDocumentation
14
+ */
15
+ import * as Effect from "effect/Effect";
16
+ const RULE_ID = "skill/manifest-present";
17
+ const SKILL_JSON = "skill.json";
18
+ export const manifestPresentRule = {
19
+ id: RULE_ID,
20
+ description: "Native skill has a skill.json manifest at its root.",
21
+ kind: "advisory",
22
+ severity: "error",
23
+ check: (context) => {
24
+ if (!context.subject.isNative) {
25
+ return Effect.succeed([]);
26
+ }
27
+ return Effect.map(context.files.exists(SKILL_JSON), (present) => {
28
+ if (present) {
29
+ return [];
30
+ }
31
+ return [
32
+ {
33
+ kind: "advisory",
34
+ ruleId: RULE_ID,
35
+ severity: "error",
36
+ message: "skill.json is missing; native skills must expose a manifest at the skill root.",
37
+ suggestions: [
38
+ `Create ${SKILL_JSON} with the required manifest fields (owner, type, name, version).`,
39
+ ],
40
+ location: { file: SKILL_JSON },
41
+ },
42
+ ];
43
+ });
44
+ },
45
+ };
46
+ //# sourceMappingURL=manifest-present.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-present.js","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/skill/manifest-present.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAIxC,MAAM,OAAO,GAAG,wBAAwB,CAAC;AACzC,MAAM,UAAU,GAAG,YAAY,CAAC;AAEhC,MAAM,CAAC,MAAM,mBAAmB,GAAmC;IACjE,EAAE,EAAE,OAAO;IACX,WAAW,EAAE,qDAAqD;IAClE,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,OAAO;IACjB,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE;QACjB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC9B,OAAO,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,MAAM,CAAC,GAAG,CACf,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,EAChC,CAAC,OAAO,EAAkC,EAAE;YAC1C,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,OAAO;gBACL;oBACE,IAAI,EAAE,UAAU;oBAChB,MAAM,EAAE,OAAO;oBACf,QAAQ,EAAE,OAAO;oBACjB,OAAO,EACL,gFAAgF;oBAClF,WAAW,EAAE;wBACX,UAAU,UAAU,kEAAkE;qBACvF;oBACD,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;iBAC/B;aACF,CAAC;QACJ,CAAC,CACF,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * `skill/manifest-schema-valid` — `skill.json` conforms to
3
+ * `SkillManifestSchema`.
4
+ *
5
+ * Delegates to Effect Schema per `docs/design/lint-engine.md §4`
6
+ * ("Schema-valid rules delegate to Effect Schema"). Issues map 1:1 to
7
+ * findings via `issuesToFindings`.
8
+ *
9
+ * Early-return arms (no findings):
10
+ *
11
+ * - `subject.isNative === false` — non-native skills have no manifest to
12
+ * check (complement of `skill/manifest-present`).
13
+ * - `subject.skillJson === undefined` — manifest is absent (covered by
14
+ * `skill/manifest-present`).
15
+ *
16
+ * @experimental This API is unstable and may change without notice.
17
+ * @packageDocumentation
18
+ */
19
+ import type { SkillRuleContext } from "../../context.js";
20
+ import type { AdvisoryRule } from "../../rule.js";
21
+ export declare const manifestSchemaValidRule: AdvisoryRule<SkillRuleContext>;
22
+ //# sourceMappingURL=manifest-schema-valid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-schema-valid.d.ts","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/skill/manifest-schema-valid.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAOlD,eAAO,MAAM,uBAAuB,EAAE,YAAY,CAAC,gBAAgB,CAmBlE,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * `skill/manifest-schema-valid` — `skill.json` conforms to
3
+ * `SkillManifestSchema`.
4
+ *
5
+ * Delegates to Effect Schema per `docs/design/lint-engine.md §4`
6
+ * ("Schema-valid rules delegate to Effect Schema"). Issues map 1:1 to
7
+ * findings via `issuesToFindings`.
8
+ *
9
+ * Early-return arms (no findings):
10
+ *
11
+ * - `subject.isNative === false` — non-native skills have no manifest to
12
+ * check (complement of `skill/manifest-present`).
13
+ * - `subject.skillJson === undefined` — manifest is absent (covered by
14
+ * `skill/manifest-present`).
15
+ *
16
+ * @experimental This API is unstable and may change without notice.
17
+ * @packageDocumentation
18
+ */
19
+ import { SkillManifestSchema } from "../../../skills/manifest-schema.js";
20
+ import { schemaDecodeFindings } from "../shared/schema-rule.js";
21
+ const RULE_ID = "skill/manifest-schema-valid";
22
+ const SKILL_JSON = "skill.json";
23
+ export const manifestSchemaValidRule = {
24
+ id: RULE_ID,
25
+ description: "skill.json conforms to SkillManifestSchema.",
26
+ kind: "advisory",
27
+ severity: "error",
28
+ check: (context) => {
29
+ if (!context.subject.isNative) {
30
+ // Non-native skills have no skill.json to schema-validate. The
31
+ // presence rule (manifest-present) does not fire for non-native either.
32
+ return schemaDecodeFindings(RULE_ID, "error", SKILL_JSON, SkillManifestSchema, undefined);
33
+ }
34
+ return schemaDecodeFindings(RULE_ID, "error", SKILL_JSON, SkillManifestSchema, context.subject.skillJson);
35
+ },
36
+ };
37
+ //# sourceMappingURL=manifest-schema-valid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-schema-valid.js","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/skill/manifest-schema-valid.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,MAAM,OAAO,GAAG,6BAA6B,CAAC;AAC9C,MAAM,UAAU,GAAG,YAAY,CAAC;AAEhC,MAAM,CAAC,MAAM,uBAAuB,GAAmC;IACrE,EAAE,EAAE,OAAO;IACX,WAAW,EAAE,6CAA6C;IAC1D,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,OAAO;IACjB,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE;QACjB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC9B,+DAA+D;YAC/D,wEAAwE;YACxE,OAAO,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,SAAS,CAAC,CAAC;QAC5F,CAAC;QACD,OAAO,oBAAoB,CACzB,OAAO,EACP,OAAO,EACP,UAAU,EACV,mBAAmB,EACnB,OAAO,CAAC,OAAO,CAAC,SAAS,CAC1B,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * `skill/skill-md-present` — every skill must have a `SKILL.md` at its root.
3
+ *
4
+ * Applies to every skill context (native and non-native). Upstream-required
5
+ * by the agentskills specification; also the precondition for the
6
+ * `skill/frontmatter-parseable` cascade.
7
+ *
8
+ * Advisory-only (no autofix). Scaffolding `SKILL.md` is a user-authored action
9
+ * per `docs/design/lint-engine.md §6`.
10
+ *
11
+ * @experimental This API is unstable and may change without notice.
12
+ * @packageDocumentation
13
+ */
14
+ import type { SkillRuleContext } from "../../context.js";
15
+ import type { AdvisoryRule } from "../../rule.js";
16
+ export declare const skillMdPresentRule: AdvisoryRule<SkillRuleContext>;
17
+ //# sourceMappingURL=skill-md-present.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-md-present.d.ts","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/skill/skill-md-present.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAmB,YAAY,EAAE,MAAM,eAAe,CAAC;AAKnE,eAAO,MAAM,kBAAkB,EAAE,YAAY,CAAC,gBAAgB,CAqB7D,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * `skill/skill-md-present` — every skill must have a `SKILL.md` at its root.
3
+ *
4
+ * Applies to every skill context (native and non-native). Upstream-required
5
+ * by the agentskills specification; also the precondition for the
6
+ * `skill/frontmatter-parseable` cascade.
7
+ *
8
+ * Advisory-only (no autofix). Scaffolding `SKILL.md` is a user-authored action
9
+ * per `docs/design/lint-engine.md §6`.
10
+ *
11
+ * @experimental This API is unstable and may change without notice.
12
+ * @packageDocumentation
13
+ */
14
+ import * as Effect from "effect/Effect";
15
+ const RULE_ID = "skill/skill-md-present";
16
+ const SKILL_MD = "SKILL.md";
17
+ export const skillMdPresentRule = {
18
+ id: RULE_ID,
19
+ description: "Skill has a SKILL.md at its root.",
20
+ kind: "advisory",
21
+ severity: "error",
22
+ check: (context) => Effect.map(context.files.exists(SKILL_MD), (present) => {
23
+ if (present) {
24
+ return [];
25
+ }
26
+ return [
27
+ {
28
+ kind: "advisory",
29
+ ruleId: RULE_ID,
30
+ severity: "error",
31
+ message: "SKILL.md is missing; every skill must expose a SKILL.md at its root.",
32
+ suggestions: [`Create ${SKILL_MD} with required frontmatter (name, description).`],
33
+ location: { file: SKILL_MD },
34
+ },
35
+ ];
36
+ }),
37
+ };
38
+ //# sourceMappingURL=skill-md-present.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-md-present.js","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/skill/skill-md-present.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAIxC,MAAM,OAAO,GAAG,wBAAwB,CAAC;AACzC,MAAM,QAAQ,GAAG,UAAU,CAAC;AAE5B,MAAM,CAAC,MAAM,kBAAkB,GAAmC;IAChE,EAAE,EAAE,OAAO;IACX,WAAW,EAAE,mCAAmC;IAChD,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,OAAO;IACjB,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CACjB,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAkC,EAAE;QACrF,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO;YACL;gBACE,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,OAAO;gBACf,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,sEAAsE;gBAC/E,WAAW,EAAE,CAAC,UAAU,QAAQ,iDAAiD,CAAC;gBAClF,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aAC7B;SACF,CAAC;IACJ,CAAC,CAAC;CACL,CAAC"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * `buildSkillRuleContexts` — build `SkillRuleContext[]` from a
3
+ * `WorkspaceIndex`-shaped input.
4
+ *
5
+ * Phase 3c owns `WorkspaceIndex`; Phase 3a pins the minimal shape
6
+ * `buildSkillRuleContexts` consumes so Phase 3c can satisfy it without
7
+ * renegotiation. The minimal shape is **exactly** the set of fields the
8
+ * function reads per installed skill:
9
+ *
10
+ * - `isNative` — whether the skill is expected to expose `skill.json`
11
+ * (registry-installed natives: `true`; managed external: `false`).
12
+ * - `skillJson` — pre-decoded `skill.json` when present (caller decodes
13
+ * once per skill, so rules don't re-read + re-parse).
14
+ * - `displayRoot` — posix-relative root used by the renderer; the caller
15
+ * picks per provenance (see the table below).
16
+ * - `files` — the pre-bound `SkillFileAccessor`. The caller chooses VFT or
17
+ * platform-backed.
18
+ *
19
+ * Provenance → `displayRoot` table:
20
+ *
21
+ * | Surface | `displayRoot` |
22
+ * | ----------------------------------------- | --------------------------------------------- |
23
+ * | Publish (Phase 4) | `""` |
24
+ * | Registry-installed native skill | `.axm/extensions/<@owner>/skills/<name>/src` |
25
+ * | External skill | `.axm/extensions/external/skills/<name>` |
26
+ *
27
+ * @experimental This API is unstable and may change without notice.
28
+ * @packageDocumentation
29
+ */
30
+ import type { SkillFileAccessor, SkillRuleContext } from "../../context.js";
31
+ /**
32
+ * Minimal structural shape `buildSkillRuleContexts` needs per installed
33
+ * skill. Phase 3c's `WorkspaceIndex` satisfies this by construction — its
34
+ * `installedSkills` field is `ReadonlyArray<InstalledSkillInfo>`.
35
+ *
36
+ * @experimental This API is unstable and may change without notice.
37
+ */
38
+ export interface InstalledSkillInfo {
39
+ readonly isNative: boolean;
40
+ readonly skillJson: unknown;
41
+ readonly displayRoot: string;
42
+ readonly files: SkillFileAccessor;
43
+ }
44
+ /**
45
+ * Minimal structural shape of the WorkspaceIndex subset `buildSkillRuleContexts`
46
+ * consumes. Keeping the function input narrow keeps Phase 3a and Phase 3c
47
+ * decoupled: the index implementation (Phase 3c) can add more methods
48
+ * without affecting this call site.
49
+ *
50
+ * @experimental This API is unstable and may change without notice.
51
+ */
52
+ export interface SkillIndexView {
53
+ readonly installedSkills: ReadonlyArray<InstalledSkillInfo>;
54
+ }
55
+ /**
56
+ * Project an index's `installedSkills` into `SkillRuleContext`s with their
57
+ * `displayRoot` and `subject` fields pre-populated.
58
+ *
59
+ * Publish callers bypass this helper and construct a single context directly
60
+ * — they have exactly one skill in play and no workspace.
61
+ *
62
+ * @experimental This API is unstable and may change without notice.
63
+ */
64
+ export declare const buildSkillRuleContexts: (index: SkillIndexView) => ReadonlyArray<SkillRuleContext>;
65
+ //# sourceMappingURL=contexts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contexts.d.ts","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/skill-accessor/contexts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAM5E;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;CACnC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;CAC7D;AAMD;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,GAAI,OAAO,cAAc,KAAG,aAAa,CAAC,gBAAgB,CAU1F,CAAC"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * `buildSkillRuleContexts` — build `SkillRuleContext[]` from a
3
+ * `WorkspaceIndex`-shaped input.
4
+ *
5
+ * Phase 3c owns `WorkspaceIndex`; Phase 3a pins the minimal shape
6
+ * `buildSkillRuleContexts` consumes so Phase 3c can satisfy it without
7
+ * renegotiation. The minimal shape is **exactly** the set of fields the
8
+ * function reads per installed skill:
9
+ *
10
+ * - `isNative` — whether the skill is expected to expose `skill.json`
11
+ * (registry-installed natives: `true`; managed external: `false`).
12
+ * - `skillJson` — pre-decoded `skill.json` when present (caller decodes
13
+ * once per skill, so rules don't re-read + re-parse).
14
+ * - `displayRoot` — posix-relative root used by the renderer; the caller
15
+ * picks per provenance (see the table below).
16
+ * - `files` — the pre-bound `SkillFileAccessor`. The caller chooses VFT or
17
+ * platform-backed.
18
+ *
19
+ * Provenance → `displayRoot` table:
20
+ *
21
+ * | Surface | `displayRoot` |
22
+ * | ----------------------------------------- | --------------------------------------------- |
23
+ * | Publish (Phase 4) | `""` |
24
+ * | Registry-installed native skill | `.axm/extensions/<@owner>/skills/<name>/src` |
25
+ * | External skill | `.axm/extensions/external/skills/<name>` |
26
+ *
27
+ * @experimental This API is unstable and may change without notice.
28
+ * @packageDocumentation
29
+ */
30
+ // -----------------------------------------------------------------------------
31
+ // buildSkillRuleContexts
32
+ // -----------------------------------------------------------------------------
33
+ /**
34
+ * Project an index's `installedSkills` into `SkillRuleContext`s with their
35
+ * `displayRoot` and `subject` fields pre-populated.
36
+ *
37
+ * Publish callers bypass this helper and construct a single context directly
38
+ * — they have exactly one skill in play and no workspace.
39
+ *
40
+ * @experimental This API is unstable and may change without notice.
41
+ */
42
+ export const buildSkillRuleContexts = (index) => index.installedSkills.map((info) => ({
43
+ subject: {
44
+ isNative: info.isNative,
45
+ skillJson: info.skillJson,
46
+ },
47
+ files: info.files,
48
+ displayRoot: info.displayRoot,
49
+ }));
50
+ //# sourceMappingURL=contexts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contexts.js","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/skill-accessor/contexts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAkCH,gFAAgF;AAChF,yBAAyB;AACzB,gFAAgF;AAEhF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,KAAqB,EAAmC,EAAE,CAC/F,KAAK,CAAC,eAAe,CAAC,GAAG,CACvB,CAAC,IAAI,EAAoB,EAAE,CAAC,CAAC;IAC3B,OAAO,EAAE;QACP,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B;IACD,KAAK,EAAE,IAAI,CAAC,KAAK;IACjB,WAAW,EAAE,IAAI,CAAC,WAAW;CAC9B,CAAC,CACH,CAAC"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Platform-backed `SkillFileAccessor` for `axm lint`.
3
+ *
4
+ * Maps accessor-relative posix paths to on-disk absolute paths rooted at
5
+ * the caller-supplied skill-root directory. Layout conventions per
6
+ * `docs/design/lint-engine.md §3` "Skill accessor root":
7
+ *
8
+ * - **Native (registry-installed):**
9
+ * `<workspaceRoot>/.axm/extensions/<@owner>/skills/<sanitized-name>/src/`
10
+ * - **Non-native (managed external):**
11
+ * `<workspaceRoot>/.axm/extensions/external/skills/<sanitized-name>/`
12
+ *
13
+ * The accessor is provenance-agnostic — rules see one uniform contract and
14
+ * never branch on native-vs-non-native. The caller (`buildSkillRuleContexts`
15
+ * or the CLI entry point) picks the root.
16
+ *
17
+ * Bounds enforcement:
18
+ *
19
+ * - No `..` segments in accessor-relative paths.
20
+ * - No absolute paths (posix or Windows drive letters).
21
+ * - Resolved absolute paths are verified to stay under the accessor root.
22
+ *
23
+ * The accessor is built via a factory that captures a pre-resolved
24
+ * `FileSystem.FileSystem` + `Path.Path` services and an absolute root, so
25
+ * `SkillFileAccessor` stays Layer-free at rule-evaluation time (per
26
+ * `lint-engine` spec "Rule contexts expose narrow caller-bound accessors").
27
+ *
28
+ * @experimental This API is unstable and may change without notice.
29
+ * @packageDocumentation
30
+ */
31
+ import type * as FileSystem from "effect/FileSystem";
32
+ import type * as Path from "effect/Path";
33
+ import type { SkillFileAccessor } from "../../context.js";
34
+ /**
35
+ * Platform services needed by the platform-backed skill accessor.
36
+ */
37
+ export interface SkillAccessorPlatform {
38
+ readonly fs: FileSystem.FileSystem;
39
+ readonly path: Path.Path;
40
+ }
41
+ /**
42
+ * Build a platform-backed `SkillFileAccessor` rooted at `absoluteRoot`.
43
+ *
44
+ * `absoluteRoot` SHOULD be the absolute path to the skill root directory
45
+ * (either `.../src/` for native, or `.../external/skills/<name>/` for
46
+ * non-native). The caller typically sources it from `computeSkillPaths` in
47
+ * `../../../skills/paths.ts`.
48
+ *
49
+ * @experimental This API is unstable and may change without notice.
50
+ */
51
+ export declare const makePlatformSkillFileAccessor: (platform: SkillAccessorPlatform, absoluteRoot: string) => SkillFileAccessor;
52
+ //# sourceMappingURL=platform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/skill-accessor/platform.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAGH,OAAO,KAAK,KAAK,UAAU,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,KAAK,IAAI,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAmB,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAM3E;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC,UAAU,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;CAC1B;AAMD;;;;;;;;;GASG;AACH,eAAO,MAAM,6BAA6B,GACxC,UAAU,qBAAqB,EAC/B,cAAc,MAAM,KACnB,iBA2DF,CAAC"}