raptor-aios 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (719) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/LICENSE +21 -0
  3. package/README.md +315 -0
  4. package/bin/raptor.js +5 -0
  5. package/dist/_core/dist/agents/adapters/antigravity.d.ts +9 -0
  6. package/dist/_core/dist/agents/adapters/antigravity.d.ts.map +1 -0
  7. package/dist/_core/dist/agents/adapters/antigravity.js +72 -0
  8. package/dist/_core/dist/agents/adapters/antigravity.js.map +1 -0
  9. package/dist/_core/dist/agents/adapters/claude-code.d.ts +9 -0
  10. package/dist/_core/dist/agents/adapters/claude-code.d.ts.map +1 -0
  11. package/dist/_core/dist/agents/adapters/claude-code.js +71 -0
  12. package/dist/_core/dist/agents/adapters/claude-code.js.map +1 -0
  13. package/dist/_core/dist/agents/adapters/codex.d.ts +12 -0
  14. package/dist/_core/dist/agents/adapters/codex.d.ts.map +1 -0
  15. package/dist/_core/dist/agents/adapters/codex.js +69 -0
  16. package/dist/_core/dist/agents/adapters/codex.js.map +1 -0
  17. package/dist/_core/dist/agents/adapters/copilot.d.ts +12 -0
  18. package/dist/_core/dist/agents/adapters/copilot.d.ts.map +1 -0
  19. package/dist/_core/dist/agents/adapters/copilot.js +71 -0
  20. package/dist/_core/dist/agents/adapters/copilot.js.map +1 -0
  21. package/dist/_core/dist/agents/adapters/cursor.d.ts +9 -0
  22. package/dist/_core/dist/agents/adapters/cursor.d.ts.map +1 -0
  23. package/dist/_core/dist/agents/adapters/cursor.js +62 -0
  24. package/dist/_core/dist/agents/adapters/cursor.js.map +1 -0
  25. package/dist/_core/dist/agents/adapters/gemini.d.ts +11 -0
  26. package/dist/_core/dist/agents/adapters/gemini.d.ts.map +1 -0
  27. package/dist/_core/dist/agents/adapters/gemini.js +68 -0
  28. package/dist/_core/dist/agents/adapters/gemini.js.map +1 -0
  29. package/dist/_core/dist/agents/adapters/human.d.ts +10 -0
  30. package/dist/_core/dist/agents/adapters/human.d.ts.map +1 -0
  31. package/dist/_core/dist/agents/adapters/human.js +48 -0
  32. package/dist/_core/dist/agents/adapters/human.js.map +1 -0
  33. package/dist/_core/dist/agents/artifact-watcher.d.ts +86 -0
  34. package/dist/_core/dist/agents/artifact-watcher.d.ts.map +1 -0
  35. package/dist/_core/dist/agents/artifact-watcher.js +214 -0
  36. package/dist/_core/dist/agents/artifact-watcher.js.map +1 -0
  37. package/dist/_core/dist/agents/backup.d.ts +69 -0
  38. package/dist/_core/dist/agents/backup.d.ts.map +1 -0
  39. package/dist/_core/dist/agents/backup.js +107 -0
  40. package/dist/_core/dist/agents/backup.js.map +1 -0
  41. package/dist/_core/dist/agents/config.d.ts +36 -0
  42. package/dist/_core/dist/agents/config.d.ts.map +1 -0
  43. package/dist/_core/dist/agents/config.js +270 -0
  44. package/dist/_core/dist/agents/config.js.map +1 -0
  45. package/dist/_core/dist/agents/context-file.d.ts +35 -0
  46. package/dist/_core/dist/agents/context-file.d.ts.map +1 -0
  47. package/dist/_core/dist/agents/context-file.js +106 -0
  48. package/dist/_core/dist/agents/context-file.js.map +1 -0
  49. package/dist/_core/dist/agents/handoff.d.ts +57 -0
  50. package/dist/_core/dist/agents/handoff.d.ts.map +1 -0
  51. package/dist/_core/dist/agents/handoff.js +71 -0
  52. package/dist/_core/dist/agents/handoff.js.map +1 -0
  53. package/dist/_core/dist/agents/index.d.ts +32 -0
  54. package/dist/_core/dist/agents/index.d.ts.map +1 -0
  55. package/dist/_core/dist/agents/index.js +37 -0
  56. package/dist/_core/dist/agents/index.js.map +1 -0
  57. package/dist/_core/dist/agents/keys.d.ts +50 -0
  58. package/dist/_core/dist/agents/keys.d.ts.map +1 -0
  59. package/dist/_core/dist/agents/keys.js +91 -0
  60. package/dist/_core/dist/agents/keys.js.map +1 -0
  61. package/dist/_core/dist/agents/materialize.d.ts +37 -0
  62. package/dist/_core/dist/agents/materialize.d.ts.map +1 -0
  63. package/dist/_core/dist/agents/materialize.js +157 -0
  64. package/dist/_core/dist/agents/materialize.js.map +1 -0
  65. package/dist/_core/dist/agents/prompt-builder.d.ts +35 -0
  66. package/dist/_core/dist/agents/prompt-builder.d.ts.map +1 -0
  67. package/dist/_core/dist/agents/prompt-builder.js +261 -0
  68. package/dist/_core/dist/agents/prompt-builder.js.map +1 -0
  69. package/dist/_core/dist/agents/prompt-markers.d.ts +69 -0
  70. package/dist/_core/dist/agents/prompt-markers.d.ts.map +1 -0
  71. package/dist/_core/dist/agents/prompt-markers.js +111 -0
  72. package/dist/_core/dist/agents/prompt-markers.js.map +1 -0
  73. package/dist/_core/dist/agents/registry.d.ts +35 -0
  74. package/dist/_core/dist/agents/registry.d.ts.map +1 -0
  75. package/dist/_core/dist/agents/registry.js +102 -0
  76. package/dist/_core/dist/agents/registry.js.map +1 -0
  77. package/dist/_core/dist/agents/selector.d.ts +33 -0
  78. package/dist/_core/dist/agents/selector.d.ts.map +1 -0
  79. package/dist/_core/dist/agents/selector.js +120 -0
  80. package/dist/_core/dist/agents/selector.js.map +1 -0
  81. package/dist/_core/dist/agents/slash-materializer.d.ts +63 -0
  82. package/dist/_core/dist/agents/slash-materializer.d.ts.map +1 -0
  83. package/dist/_core/dist/agents/slash-materializer.js +131 -0
  84. package/dist/_core/dist/agents/slash-materializer.js.map +1 -0
  85. package/dist/_core/dist/agents/types.d.ts +121 -0
  86. package/dist/_core/dist/agents/types.d.ts.map +1 -0
  87. package/dist/_core/dist/agents/types.js +10 -0
  88. package/dist/_core/dist/agents/types.js.map +1 -0
  89. package/dist/_core/dist/audit/hash.d.ts +4 -0
  90. package/dist/_core/dist/audit/hash.d.ts.map +1 -0
  91. package/dist/_core/dist/audit/hash.js +12 -0
  92. package/dist/_core/dist/audit/hash.js.map +1 -0
  93. package/dist/_core/dist/audit/index.d.ts +6 -0
  94. package/dist/_core/dist/audit/index.d.ts.map +1 -0
  95. package/dist/_core/dist/audit/index.js +6 -0
  96. package/dist/_core/dist/audit/index.js.map +1 -0
  97. package/dist/_core/dist/audit/logger.d.ts +77 -0
  98. package/dist/_core/dist/audit/logger.d.ts.map +1 -0
  99. package/dist/_core/dist/audit/logger.js +93 -0
  100. package/dist/_core/dist/audit/logger.js.map +1 -0
  101. package/dist/_core/dist/audit/query.d.ts +13 -0
  102. package/dist/_core/dist/audit/query.d.ts.map +1 -0
  103. package/dist/_core/dist/audit/query.js +57 -0
  104. package/dist/_core/dist/audit/query.js.map +1 -0
  105. package/dist/_core/dist/audit/schema.d.ts +455 -0
  106. package/dist/_core/dist/audit/schema.d.ts.map +1 -0
  107. package/dist/_core/dist/audit/schema.js +341 -0
  108. package/dist/_core/dist/audit/schema.js.map +1 -0
  109. package/dist/_core/dist/audit/validate.d.ts +21 -0
  110. package/dist/_core/dist/audit/validate.d.ts.map +1 -0
  111. package/dist/_core/dist/audit/validate.js +139 -0
  112. package/dist/_core/dist/audit/validate.js.map +1 -0
  113. package/dist/_core/dist/constitution/core.d.ts +22 -0
  114. package/dist/_core/dist/constitution/core.d.ts.map +1 -0
  115. package/dist/_core/dist/constitution/core.js +102 -0
  116. package/dist/_core/dist/constitution/core.js.map +1 -0
  117. package/dist/_core/dist/constitution/index.d.ts +2 -0
  118. package/dist/_core/dist/constitution/index.d.ts.map +1 -0
  119. package/dist/_core/dist/constitution/index.js +2 -0
  120. package/dist/_core/dist/constitution/index.js.map +1 -0
  121. package/dist/_core/dist/extensions/index.d.ts +12 -0
  122. package/dist/_core/dist/extensions/index.d.ts.map +1 -0
  123. package/dist/_core/dist/extensions/index.js +12 -0
  124. package/dist/_core/dist/extensions/index.js.map +1 -0
  125. package/dist/_core/dist/extensions/integrate.d.ts +69 -0
  126. package/dist/_core/dist/extensions/integrate.d.ts.map +1 -0
  127. package/dist/_core/dist/extensions/integrate.js +181 -0
  128. package/dist/_core/dist/extensions/integrate.js.map +1 -0
  129. package/dist/_core/dist/extensions/loader.d.ts +24 -0
  130. package/dist/_core/dist/extensions/loader.d.ts.map +1 -0
  131. package/dist/_core/dist/extensions/loader.js +73 -0
  132. package/dist/_core/dist/extensions/loader.js.map +1 -0
  133. package/dist/_core/dist/extensions/manifest.d.ts +23 -0
  134. package/dist/_core/dist/extensions/manifest.d.ts.map +1 -0
  135. package/dist/_core/dist/extensions/manifest.js +176 -0
  136. package/dist/_core/dist/extensions/manifest.js.map +1 -0
  137. package/dist/_core/dist/extensions/registry.d.ts +32 -0
  138. package/dist/_core/dist/extensions/registry.d.ts.map +1 -0
  139. package/dist/_core/dist/extensions/registry.js +57 -0
  140. package/dist/_core/dist/extensions/registry.js.map +1 -0
  141. package/dist/_core/dist/extensions/resolver.d.ts +55 -0
  142. package/dist/_core/dist/extensions/resolver.d.ts.map +1 -0
  143. package/dist/_core/dist/extensions/resolver.js +143 -0
  144. package/dist/_core/dist/extensions/resolver.js.map +1 -0
  145. package/dist/_core/dist/extensions/types.d.ts +173 -0
  146. package/dist/_core/dist/extensions/types.d.ts.map +1 -0
  147. package/dist/_core/dist/extensions/types.js +83 -0
  148. package/dist/_core/dist/extensions/types.js.map +1 -0
  149. package/dist/_core/dist/frontmatter/index.d.ts +10 -0
  150. package/dist/_core/dist/frontmatter/index.d.ts.map +1 -0
  151. package/dist/_core/dist/frontmatter/index.js +24 -0
  152. package/dist/_core/dist/frontmatter/index.js.map +1 -0
  153. package/dist/_core/dist/gates/agent-gates.d.ts +16 -0
  154. package/dist/_core/dist/gates/agent-gates.d.ts.map +1 -0
  155. package/dist/_core/dist/gates/agent-gates.js +205 -0
  156. package/dist/_core/dist/gates/agent-gates.js.map +1 -0
  157. package/dist/_core/dist/gates/builtin.d.ts +18 -0
  158. package/dist/_core/dist/gates/builtin.d.ts.map +1 -0
  159. package/dist/_core/dist/gates/builtin.js +860 -0
  160. package/dist/_core/dist/gates/builtin.js.map +1 -0
  161. package/dist/_core/dist/gates/index.d.ts +7 -0
  162. package/dist/_core/dist/gates/index.d.ts.map +1 -0
  163. package/dist/_core/dist/gates/index.js +7 -0
  164. package/dist/_core/dist/gates/index.js.map +1 -0
  165. package/dist/_core/dist/gates/m7-gates.d.ts +17 -0
  166. package/dist/_core/dist/gates/m7-gates.d.ts.map +1 -0
  167. package/dist/_core/dist/gates/m7-gates.js +309 -0
  168. package/dist/_core/dist/gates/m7-gates.js.map +1 -0
  169. package/dist/_core/dist/gates/phase-gates.d.ts +18 -0
  170. package/dist/_core/dist/gates/phase-gates.d.ts.map +1 -0
  171. package/dist/_core/dist/gates/phase-gates.js +275 -0
  172. package/dist/_core/dist/gates/phase-gates.js.map +1 -0
  173. package/dist/_core/dist/gates/runner.d.ts +4 -0
  174. package/dist/_core/dist/gates/runner.d.ts.map +1 -0
  175. package/dist/_core/dist/gates/runner.js +64 -0
  176. package/dist/_core/dist/gates/runner.js.map +1 -0
  177. package/dist/_core/dist/gates/types.d.ts +36 -0
  178. package/dist/_core/dist/gates/types.d.ts.map +1 -0
  179. package/dist/_core/dist/gates/types.js +2 -0
  180. package/dist/_core/dist/gates/types.js.map +1 -0
  181. package/dist/_core/dist/hooks/index.d.ts +4 -0
  182. package/dist/_core/dist/hooks/index.d.ts.map +1 -0
  183. package/dist/_core/dist/hooks/index.js +4 -0
  184. package/dist/_core/dist/hooks/index.js.map +1 -0
  185. package/dist/_core/dist/hooks/runner.d.ts +28 -0
  186. package/dist/_core/dist/hooks/runner.d.ts.map +1 -0
  187. package/dist/_core/dist/hooks/runner.js +294 -0
  188. package/dist/_core/dist/hooks/runner.js.map +1 -0
  189. package/dist/_core/dist/hooks/runtime.d.ts +65 -0
  190. package/dist/_core/dist/hooks/runtime.d.ts.map +1 -0
  191. package/dist/_core/dist/hooks/runtime.js +212 -0
  192. package/dist/_core/dist/hooks/runtime.js.map +1 -0
  193. package/dist/_core/dist/hooks/types.d.ts +36 -0
  194. package/dist/_core/dist/hooks/types.d.ts.map +1 -0
  195. package/dist/_core/dist/hooks/types.js +23 -0
  196. package/dist/_core/dist/hooks/types.js.map +1 -0
  197. package/dist/_core/dist/index.d.ts +21 -0
  198. package/dist/_core/dist/index.d.ts.map +1 -0
  199. package/dist/_core/dist/index.js +20 -0
  200. package/dist/_core/dist/index.js.map +1 -0
  201. package/dist/_core/dist/manifest/index.d.ts +119 -0
  202. package/dist/_core/dist/manifest/index.d.ts.map +1 -0
  203. package/dist/_core/dist/manifest/index.js +125 -0
  204. package/dist/_core/dist/manifest/index.js.map +1 -0
  205. package/dist/_core/dist/markers/index.d.ts +47 -0
  206. package/dist/_core/dist/markers/index.d.ts.map +1 -0
  207. package/dist/_core/dist/markers/index.js +97 -0
  208. package/dist/_core/dist/markers/index.js.map +1 -0
  209. package/dist/_core/dist/mcp/config.d.ts +19 -0
  210. package/dist/_core/dist/mcp/config.d.ts.map +1 -0
  211. package/dist/_core/dist/mcp/config.js +114 -0
  212. package/dist/_core/dist/mcp/config.js.map +1 -0
  213. package/dist/_core/dist/mcp/index.d.ts +9 -0
  214. package/dist/_core/dist/mcp/index.d.ts.map +1 -0
  215. package/dist/_core/dist/mcp/index.js +8 -0
  216. package/dist/_core/dist/mcp/index.js.map +1 -0
  217. package/dist/_core/dist/mcp/materializer.d.ts +40 -0
  218. package/dist/_core/dist/mcp/materializer.d.ts.map +1 -0
  219. package/dist/_core/dist/mcp/materializer.js +161 -0
  220. package/dist/_core/dist/mcp/materializer.js.map +1 -0
  221. package/dist/_core/dist/mcp/targets.d.ts +37 -0
  222. package/dist/_core/dist/mcp/targets.d.ts.map +1 -0
  223. package/dist/_core/dist/mcp/targets.js +56 -0
  224. package/dist/_core/dist/mcp/targets.js.map +1 -0
  225. package/dist/_core/dist/mcp/types.d.ts +34 -0
  226. package/dist/_core/dist/mcp/types.d.ts.map +1 -0
  227. package/dist/_core/dist/mcp/types.js +8 -0
  228. package/dist/_core/dist/mcp/types.js.map +1 -0
  229. package/dist/_core/dist/models/analyze.d.ts +131 -0
  230. package/dist/_core/dist/models/analyze.d.ts.map +1 -0
  231. package/dist/_core/dist/models/analyze.js +301 -0
  232. package/dist/_core/dist/models/analyze.js.map +1 -0
  233. package/dist/_core/dist/models/checklist.d.ts +113 -0
  234. package/dist/_core/dist/models/checklist.d.ts.map +1 -0
  235. package/dist/_core/dist/models/checklist.js +159 -0
  236. package/dist/_core/dist/models/checklist.js.map +1 -0
  237. package/dist/_core/dist/models/clarify.d.ts +116 -0
  238. package/dist/_core/dist/models/clarify.d.ts.map +1 -0
  239. package/dist/_core/dist/models/clarify.js +166 -0
  240. package/dist/_core/dist/models/clarify.js.map +1 -0
  241. package/dist/_core/dist/models/impl-log.d.ts +64 -0
  242. package/dist/_core/dist/models/impl-log.d.ts.map +1 -0
  243. package/dist/_core/dist/models/impl-log.js +137 -0
  244. package/dist/_core/dist/models/impl-log.js.map +1 -0
  245. package/dist/_core/dist/models/index.d.ts +8 -0
  246. package/dist/_core/dist/models/index.d.ts.map +1 -0
  247. package/dist/_core/dist/models/index.js +8 -0
  248. package/dist/_core/dist/models/index.js.map +1 -0
  249. package/dist/_core/dist/models/plan.d.ts +24 -0
  250. package/dist/_core/dist/models/plan.d.ts.map +1 -0
  251. package/dist/_core/dist/models/plan.js +15 -0
  252. package/dist/_core/dist/models/plan.js.map +1 -0
  253. package/dist/_core/dist/models/spec.d.ts +23 -0
  254. package/dist/_core/dist/models/spec.d.ts.map +1 -0
  255. package/dist/_core/dist/models/spec.js +22 -0
  256. package/dist/_core/dist/models/spec.js.map +1 -0
  257. package/dist/_core/dist/models/tasks.d.ts +33 -0
  258. package/dist/_core/dist/models/tasks.d.ts.map +1 -0
  259. package/dist/_core/dist/models/tasks.js +78 -0
  260. package/dist/_core/dist/models/tasks.js.map +1 -0
  261. package/dist/_core/dist/presets/gates.d.ts +9 -0
  262. package/dist/_core/dist/presets/gates.d.ts.map +1 -0
  263. package/dist/_core/dist/presets/gates.js +173 -0
  264. package/dist/_core/dist/presets/gates.js.map +1 -0
  265. package/dist/_core/dist/presets/index.d.ts +10 -0
  266. package/dist/_core/dist/presets/index.d.ts.map +1 -0
  267. package/dist/_core/dist/presets/index.js +7 -0
  268. package/dist/_core/dist/presets/index.js.map +1 -0
  269. package/dist/_core/dist/presets/loader.d.ts +56 -0
  270. package/dist/_core/dist/presets/loader.d.ts.map +1 -0
  271. package/dist/_core/dist/presets/loader.js +216 -0
  272. package/dist/_core/dist/presets/loader.js.map +1 -0
  273. package/dist/_core/dist/presets/mobile-opinionated.d.ts +3 -0
  274. package/dist/_core/dist/presets/mobile-opinionated.d.ts.map +1 -0
  275. package/dist/_core/dist/presets/mobile-opinionated.js +78 -0
  276. package/dist/_core/dist/presets/mobile-opinionated.js.map +1 -0
  277. package/dist/_core/dist/presets/registry.d.ts +5 -0
  278. package/dist/_core/dist/presets/registry.d.ts.map +1 -0
  279. package/dist/_core/dist/presets/registry.js +14 -0
  280. package/dist/_core/dist/presets/registry.js.map +1 -0
  281. package/dist/_core/dist/presets/renderer.d.ts +5 -0
  282. package/dist/_core/dist/presets/renderer.d.ts.map +1 -0
  283. package/dist/_core/dist/presets/renderer.js +37 -0
  284. package/dist/_core/dist/presets/renderer.js.map +1 -0
  285. package/dist/_core/dist/presets/stacking.d.ts +29 -0
  286. package/dist/_core/dist/presets/stacking.d.ts.map +1 -0
  287. package/dist/_core/dist/presets/stacking.js +91 -0
  288. package/dist/_core/dist/presets/stacking.js.map +1 -0
  289. package/dist/_core/dist/presets/types.d.ts +22 -0
  290. package/dist/_core/dist/presets/types.d.ts.map +1 -0
  291. package/dist/_core/dist/presets/types.js +2 -0
  292. package/dist/_core/dist/presets/types.js.map +1 -0
  293. package/dist/_core/dist/prompts/audit-log.d.ts +73 -0
  294. package/dist/_core/dist/prompts/audit-log.d.ts.map +1 -0
  295. package/dist/_core/dist/prompts/audit-log.js +73 -0
  296. package/dist/_core/dist/prompts/audit-log.js.map +1 -0
  297. package/dist/_core/dist/prompts/index.d.ts +9 -0
  298. package/dist/_core/dist/prompts/index.d.ts.map +1 -0
  299. package/dist/_core/dist/prompts/index.js +7 -0
  300. package/dist/_core/dist/prompts/index.js.map +1 -0
  301. package/dist/_core/dist/prompts/renderer.d.ts +73 -0
  302. package/dist/_core/dist/prompts/renderer.d.ts.map +1 -0
  303. package/dist/_core/dist/prompts/renderer.js +179 -0
  304. package/dist/_core/dist/prompts/renderer.js.map +1 -0
  305. package/dist/_core/dist/prompts/resumption.d.ts +59 -0
  306. package/dist/_core/dist/prompts/resumption.d.ts.map +1 -0
  307. package/dist/_core/dist/prompts/resumption.js +149 -0
  308. package/dist/_core/dist/prompts/resumption.js.map +1 -0
  309. package/dist/_core/dist/skills/config.d.ts +27 -0
  310. package/dist/_core/dist/skills/config.d.ts.map +1 -0
  311. package/dist/_core/dist/skills/config.js +102 -0
  312. package/dist/_core/dist/skills/config.js.map +1 -0
  313. package/dist/_core/dist/skills/index.d.ts +9 -0
  314. package/dist/_core/dist/skills/index.d.ts.map +1 -0
  315. package/dist/_core/dist/skills/index.js +8 -0
  316. package/dist/_core/dist/skills/index.js.map +1 -0
  317. package/dist/_core/dist/skills/materializer.d.ts +45 -0
  318. package/dist/_core/dist/skills/materializer.d.ts.map +1 -0
  319. package/dist/_core/dist/skills/materializer.js +97 -0
  320. package/dist/_core/dist/skills/materializer.js.map +1 -0
  321. package/dist/_core/dist/skills/registry.d.ts +18 -0
  322. package/dist/_core/dist/skills/registry.d.ts.map +1 -0
  323. package/dist/_core/dist/skills/registry.js +36 -0
  324. package/dist/_core/dist/skills/registry.js.map +1 -0
  325. package/dist/_core/dist/skills/types.d.ts +39 -0
  326. package/dist/_core/dist/skills/types.d.ts.map +1 -0
  327. package/dist/_core/dist/skills/types.js +13 -0
  328. package/dist/_core/dist/skills/types.js.map +1 -0
  329. package/dist/_core/dist/state/feature.d.ts +58 -0
  330. package/dist/_core/dist/state/feature.d.ts.map +1 -0
  331. package/dist/_core/dist/state/feature.js +81 -0
  332. package/dist/_core/dist/state/feature.js.map +1 -0
  333. package/dist/_core/dist/state/index.d.ts +8 -0
  334. package/dist/_core/dist/state/index.d.ts.map +1 -0
  335. package/dist/_core/dist/state/index.js +6 -0
  336. package/dist/_core/dist/state/index.js.map +1 -0
  337. package/dist/_core/dist/state/init-options.d.ts +60 -0
  338. package/dist/_core/dist/state/init-options.d.ts.map +1 -0
  339. package/dist/_core/dist/state/init-options.js +74 -0
  340. package/dist/_core/dist/state/init-options.js.map +1 -0
  341. package/dist/_core/dist/template/engine.d.ts +7 -0
  342. package/dist/_core/dist/template/engine.d.ts.map +1 -0
  343. package/dist/_core/dist/template/engine.js +86 -0
  344. package/dist/_core/dist/template/engine.js.map +1 -0
  345. package/dist/_core/dist/template/helpers.d.ts +5 -0
  346. package/dist/_core/dist/template/helpers.d.ts.map +1 -0
  347. package/dist/_core/dist/template/helpers.js +59 -0
  348. package/dist/_core/dist/template/helpers.js.map +1 -0
  349. package/dist/_core/dist/template/index.d.ts +6 -0
  350. package/dist/_core/dist/template/index.d.ts.map +1 -0
  351. package/dist/_core/dist/template/index.js +6 -0
  352. package/dist/_core/dist/template/index.js.map +1 -0
  353. package/dist/_core/dist/template/loader.d.ts +36 -0
  354. package/dist/_core/dist/template/loader.d.ts.map +1 -0
  355. package/dist/_core/dist/template/loader.js +62 -0
  356. package/dist/_core/dist/template/loader.js.map +1 -0
  357. package/dist/_core/dist/template/parser.d.ts +3 -0
  358. package/dist/_core/dist/template/parser.d.ts.map +1 -0
  359. package/dist/_core/dist/template/parser.js +234 -0
  360. package/dist/_core/dist/template/parser.js.map +1 -0
  361. package/dist/_core/dist/template/types.d.ts +40 -0
  362. package/dist/_core/dist/template/types.d.ts.map +1 -0
  363. package/dist/_core/dist/template/types.js +14 -0
  364. package/dist/_core/dist/template/types.js.map +1 -0
  365. package/dist/_core/dist/verify/a11y.d.ts +36 -0
  366. package/dist/_core/dist/verify/a11y.d.ts.map +1 -0
  367. package/dist/_core/dist/verify/a11y.js +153 -0
  368. package/dist/_core/dist/verify/a11y.js.map +1 -0
  369. package/dist/_core/dist/verify/architecture.d.ts +37 -0
  370. package/dist/_core/dist/verify/architecture.d.ts.map +1 -0
  371. package/dist/_core/dist/verify/architecture.js +113 -0
  372. package/dist/_core/dist/verify/architecture.js.map +1 -0
  373. package/dist/_core/dist/verify/index.d.ts +10 -0
  374. package/dist/_core/dist/verify/index.d.ts.map +1 -0
  375. package/dist/_core/dist/verify/index.js +10 -0
  376. package/dist/_core/dist/verify/index.js.map +1 -0
  377. package/dist/_core/dist/verify/os-matrix.d.ts +35 -0
  378. package/dist/_core/dist/verify/os-matrix.d.ts.map +1 -0
  379. package/dist/_core/dist/verify/os-matrix.js +104 -0
  380. package/dist/_core/dist/verify/os-matrix.js.map +1 -0
  381. package/dist/_core/dist/verify/perf.d.ts +43 -0
  382. package/dist/_core/dist/verify/perf.d.ts.map +1 -0
  383. package/dist/_core/dist/verify/perf.js +69 -0
  384. package/dist/_core/dist/verify/perf.js.map +1 -0
  385. package/dist/_core/dist/verify/stores.d.ts +38 -0
  386. package/dist/_core/dist/verify/stores.d.ts.map +1 -0
  387. package/dist/_core/dist/verify/stores.js +57 -0
  388. package/dist/_core/dist/verify/stores.js.map +1 -0
  389. package/dist/_core/dist/version.d.ts +8 -0
  390. package/dist/_core/dist/version.d.ts.map +1 -0
  391. package/dist/_core/dist/version.js +11 -0
  392. package/dist/_core/dist/version.js.map +1 -0
  393. package/dist/_core/dist/workflows/bundled.d.ts +32 -0
  394. package/dist/_core/dist/workflows/bundled.d.ts.map +1 -0
  395. package/dist/_core/dist/workflows/bundled.js +254 -0
  396. package/dist/_core/dist/workflows/bundled.js.map +1 -0
  397. package/dist/_core/dist/workflows/engine.d.ts +74 -0
  398. package/dist/_core/dist/workflows/engine.d.ts.map +1 -0
  399. package/dist/_core/dist/workflows/engine.js +574 -0
  400. package/dist/_core/dist/workflows/engine.js.map +1 -0
  401. package/dist/_core/dist/workflows/expressions.d.ts +48 -0
  402. package/dist/_core/dist/workflows/expressions.d.ts.map +1 -0
  403. package/dist/_core/dist/workflows/expressions.js +336 -0
  404. package/dist/_core/dist/workflows/expressions.js.map +1 -0
  405. package/dist/_core/dist/workflows/index.d.ts +16 -0
  406. package/dist/_core/dist/workflows/index.d.ts.map +1 -0
  407. package/dist/_core/dist/workflows/index.js +15 -0
  408. package/dist/_core/dist/workflows/index.js.map +1 -0
  409. package/dist/_core/dist/workflows/parser.d.ts +38 -0
  410. package/dist/_core/dist/workflows/parser.d.ts.map +1 -0
  411. package/dist/_core/dist/workflows/parser.js +386 -0
  412. package/dist/_core/dist/workflows/parser.js.map +1 -0
  413. package/dist/_core/dist/workflows/sdd-flow.d.ts +85 -0
  414. package/dist/_core/dist/workflows/sdd-flow.d.ts.map +1 -0
  415. package/dist/_core/dist/workflows/sdd-flow.js +269 -0
  416. package/dist/_core/dist/workflows/sdd-flow.js.map +1 -0
  417. package/dist/_core/dist/workflows/types.d.ts +285 -0
  418. package/dist/_core/dist/workflows/types.d.ts.map +1 -0
  419. package/dist/_core/dist/workflows/types.js +13 -0
  420. package/dist/_core/dist/workflows/types.js.map +1 -0
  421. package/dist/_core/package.json +6 -0
  422. package/dist/_core/templates/constitution.md.hbs +46 -0
  423. package/dist/_core/templates/ghaWorkflow.yml.hbs +58 -0
  424. package/dist/_core/templates/hotfix.md.hbs +39 -0
  425. package/dist/_core/templates/plan.md.hbs +212 -0
  426. package/dist/_core/templates/preCommitHook.sh.hbs +30 -0
  427. package/dist/_core/templates/prePushHook.sh.hbs +45 -0
  428. package/dist/_core/templates/raptor.yml.hbs +24 -0
  429. package/dist/_core/templates/spec.md.hbs +127 -0
  430. package/dist/_core/templates/tasks.md.hbs +71 -0
  431. package/dist/commands/add-agent.d.ts +22 -0
  432. package/dist/commands/add-agent.d.ts.map +1 -0
  433. package/dist/commands/add-agent.js +121 -0
  434. package/dist/commands/add-agent.js.map +1 -0
  435. package/dist/commands/add-extension.d.ts +18 -0
  436. package/dist/commands/add-extension.d.ts.map +1 -0
  437. package/dist/commands/add-extension.js +83 -0
  438. package/dist/commands/add-extension.js.map +1 -0
  439. package/dist/commands/analyze.d.ts +18 -0
  440. package/dist/commands/analyze.d.ts.map +1 -0
  441. package/dist/commands/analyze.js +323 -0
  442. package/dist/commands/analyze.js.map +1 -0
  443. package/dist/commands/approve.d.ts +14 -0
  444. package/dist/commands/approve.d.ts.map +1 -0
  445. package/dist/commands/approve.js +116 -0
  446. package/dist/commands/approve.js.map +1 -0
  447. package/dist/commands/audit/query.d.ts +23 -0
  448. package/dist/commands/audit/query.d.ts.map +1 -0
  449. package/dist/commands/audit/query.js +118 -0
  450. package/dist/commands/audit/query.js.map +1 -0
  451. package/dist/commands/audit/show.d.ts +17 -0
  452. package/dist/commands/audit/show.d.ts.map +1 -0
  453. package/dist/commands/audit/show.js +53 -0
  454. package/dist/commands/audit/show.js.map +1 -0
  455. package/dist/commands/checklist.d.ts +17 -0
  456. package/dist/commands/checklist.d.ts.map +1 -0
  457. package/dist/commands/checklist.js +255 -0
  458. package/dist/commands/checklist.js.map +1 -0
  459. package/dist/commands/clarify.d.ts +17 -0
  460. package/dist/commands/clarify.d.ts.map +1 -0
  461. package/dist/commands/clarify.js +254 -0
  462. package/dist/commands/clarify.js.map +1 -0
  463. package/dist/commands/doctor.d.ts +8 -0
  464. package/dist/commands/doctor.d.ts.map +1 -0
  465. package/dist/commands/doctor.js +435 -0
  466. package/dist/commands/doctor.js.map +1 -0
  467. package/dist/commands/extension/add.d.ts +15 -0
  468. package/dist/commands/extension/add.d.ts.map +1 -0
  469. package/dist/commands/extension/add.js +93 -0
  470. package/dist/commands/extension/add.js.map +1 -0
  471. package/dist/commands/extension/info.d.ts +13 -0
  472. package/dist/commands/extension/info.d.ts.map +1 -0
  473. package/dist/commands/extension/info.js +75 -0
  474. package/dist/commands/extension/info.js.map +1 -0
  475. package/dist/commands/extension/list.d.ts +10 -0
  476. package/dist/commands/extension/list.d.ts.map +1 -0
  477. package/dist/commands/extension/list.js +71 -0
  478. package/dist/commands/extension/list.js.map +1 -0
  479. package/dist/commands/extension/remove.d.ts +14 -0
  480. package/dist/commands/extension/remove.d.ts.map +1 -0
  481. package/dist/commands/extension/remove.js +49 -0
  482. package/dist/commands/extension/remove.js.map +1 -0
  483. package/dist/commands/gate/approve.d.ts +15 -0
  484. package/dist/commands/gate/approve.d.ts.map +1 -0
  485. package/dist/commands/gate/approve.js +106 -0
  486. package/dist/commands/gate/approve.js.map +1 -0
  487. package/dist/commands/gate/list.d.ts +6 -0
  488. package/dist/commands/gate/list.d.ts.map +1 -0
  489. package/dist/commands/gate/list.js +38 -0
  490. package/dist/commands/gate/list.js.map +1 -0
  491. package/dist/commands/gate/skip.d.ts +14 -0
  492. package/dist/commands/gate/skip.d.ts.map +1 -0
  493. package/dist/commands/gate/skip.js +95 -0
  494. package/dist/commands/gate/skip.js.map +1 -0
  495. package/dist/commands/hook/list.d.ts +11 -0
  496. package/dist/commands/hook/list.d.ts.map +1 -0
  497. package/dist/commands/hook/list.js +152 -0
  498. package/dist/commands/hook/list.js.map +1 -0
  499. package/dist/commands/hook/run.d.ts +16 -0
  500. package/dist/commands/hook/run.d.ts.map +1 -0
  501. package/dist/commands/hook/run.js +74 -0
  502. package/dist/commands/hook/run.js.map +1 -0
  503. package/dist/commands/hotfix.d.ts +21 -0
  504. package/dist/commands/hotfix.d.ts.map +1 -0
  505. package/dist/commands/hotfix.js +216 -0
  506. package/dist/commands/hotfix.js.map +1 -0
  507. package/dist/commands/implement.d.ts +19 -0
  508. package/dist/commands/implement.d.ts.map +1 -0
  509. package/dist/commands/implement.js +282 -0
  510. package/dist/commands/implement.js.map +1 -0
  511. package/dist/commands/init.d.ts +43 -0
  512. package/dist/commands/init.d.ts.map +1 -0
  513. package/dist/commands/init.js +465 -0
  514. package/dist/commands/init.js.map +1 -0
  515. package/dist/commands/list-agents.d.ts +12 -0
  516. package/dist/commands/list-agents.d.ts.map +1 -0
  517. package/dist/commands/list-agents.js +55 -0
  518. package/dist/commands/list-agents.js.map +1 -0
  519. package/dist/commands/mcp/add.d.ts +21 -0
  520. package/dist/commands/mcp/add.d.ts.map +1 -0
  521. package/dist/commands/mcp/add.js +119 -0
  522. package/dist/commands/mcp/add.js.map +1 -0
  523. package/dist/commands/mcp/list.d.ts +10 -0
  524. package/dist/commands/mcp/list.d.ts.map +1 -0
  525. package/dist/commands/mcp/list.js +54 -0
  526. package/dist/commands/mcp/list.js.map +1 -0
  527. package/dist/commands/mcp/remove.d.ts +10 -0
  528. package/dist/commands/mcp/remove.d.ts.map +1 -0
  529. package/dist/commands/mcp/remove.js +53 -0
  530. package/dist/commands/mcp/remove.js.map +1 -0
  531. package/dist/commands/mcp/sync.d.ts +7 -0
  532. package/dist/commands/mcp/sync.d.ts.map +1 -0
  533. package/dist/commands/mcp/sync.js +31 -0
  534. package/dist/commands/mcp/sync.js.map +1 -0
  535. package/dist/commands/new.d.ts +19 -0
  536. package/dist/commands/new.d.ts.map +1 -0
  537. package/dist/commands/new.js +306 -0
  538. package/dist/commands/new.js.map +1 -0
  539. package/dist/commands/plan.d.ts +17 -0
  540. package/dist/commands/plan.d.ts.map +1 -0
  541. package/dist/commands/plan.js +200 -0
  542. package/dist/commands/plan.js.map +1 -0
  543. package/dist/commands/preset/add.d.ts +13 -0
  544. package/dist/commands/preset/add.d.ts.map +1 -0
  545. package/dist/commands/preset/add.js +66 -0
  546. package/dist/commands/preset/add.js.map +1 -0
  547. package/dist/commands/preset/info.d.ts +13 -0
  548. package/dist/commands/preset/info.d.ts.map +1 -0
  549. package/dist/commands/preset/info.js +80 -0
  550. package/dist/commands/preset/info.js.map +1 -0
  551. package/dist/commands/preset/list.d.ts +10 -0
  552. package/dist/commands/preset/list.d.ts.map +1 -0
  553. package/dist/commands/preset/list.js +63 -0
  554. package/dist/commands/preset/list.js.map +1 -0
  555. package/dist/commands/preset/remove.d.ts +14 -0
  556. package/dist/commands/preset/remove.d.ts.map +1 -0
  557. package/dist/commands/preset/remove.js +60 -0
  558. package/dist/commands/preset/remove.js.map +1 -0
  559. package/dist/commands/repair/constitution.d.ts +11 -0
  560. package/dist/commands/repair/constitution.d.ts.map +1 -0
  561. package/dist/commands/repair/constitution.js +117 -0
  562. package/dist/commands/repair/constitution.js.map +1 -0
  563. package/dist/commands/resync.d.ts +22 -0
  564. package/dist/commands/resync.d.ts.map +1 -0
  565. package/dist/commands/resync.js +103 -0
  566. package/dist/commands/resync.js.map +1 -0
  567. package/dist/commands/skill/add.d.ts +19 -0
  568. package/dist/commands/skill/add.d.ts.map +1 -0
  569. package/dist/commands/skill/add.js +107 -0
  570. package/dist/commands/skill/add.js.map +1 -0
  571. package/dist/commands/skill/list.d.ts +10 -0
  572. package/dist/commands/skill/list.d.ts.map +1 -0
  573. package/dist/commands/skill/list.js +56 -0
  574. package/dist/commands/skill/list.js.map +1 -0
  575. package/dist/commands/skill/remove.d.ts +10 -0
  576. package/dist/commands/skill/remove.d.ts.map +1 -0
  577. package/dist/commands/skill/remove.js +47 -0
  578. package/dist/commands/skill/remove.js.map +1 -0
  579. package/dist/commands/skill/sync.d.ts +7 -0
  580. package/dist/commands/skill/sync.d.ts.map +1 -0
  581. package/dist/commands/skill/sync.js +30 -0
  582. package/dist/commands/skill/sync.js.map +1 -0
  583. package/dist/commands/status.d.ts +17 -0
  584. package/dist/commands/status.d.ts.map +1 -0
  585. package/dist/commands/status.js +265 -0
  586. package/dist/commands/status.js.map +1 -0
  587. package/dist/commands/tasks.d.ts +16 -0
  588. package/dist/commands/tasks.d.ts.map +1 -0
  589. package/dist/commands/tasks.js +176 -0
  590. package/dist/commands/tasks.js.map +1 -0
  591. package/dist/commands/trace.d.ts +16 -0
  592. package/dist/commands/trace.d.ts.map +1 -0
  593. package/dist/commands/trace.js +113 -0
  594. package/dist/commands/trace.js.map +1 -0
  595. package/dist/commands/upgrade.d.ts +20 -0
  596. package/dist/commands/upgrade.d.ts.map +1 -0
  597. package/dist/commands/upgrade.js +178 -0
  598. package/dist/commands/upgrade.js.map +1 -0
  599. package/dist/commands/verify/a11y.d.ts +15 -0
  600. package/dist/commands/verify/a11y.d.ts.map +1 -0
  601. package/dist/commands/verify/a11y.js +121 -0
  602. package/dist/commands/verify/a11y.js.map +1 -0
  603. package/dist/commands/verify/architecture.d.ts +11 -0
  604. package/dist/commands/verify/architecture.d.ts.map +1 -0
  605. package/dist/commands/verify/architecture.js +71 -0
  606. package/dist/commands/verify/architecture.js.map +1 -0
  607. package/dist/commands/verify/audit.d.ts +18 -0
  608. package/dist/commands/verify/audit.d.ts.map +1 -0
  609. package/dist/commands/verify/audit.js +108 -0
  610. package/dist/commands/verify/audit.js.map +1 -0
  611. package/dist/commands/verify/constitution.d.ts +10 -0
  612. package/dist/commands/verify/constitution.d.ts.map +1 -0
  613. package/dist/commands/verify/constitution.js +91 -0
  614. package/dist/commands/verify/constitution.js.map +1 -0
  615. package/dist/commands/verify/os-matrix.d.ts +14 -0
  616. package/dist/commands/verify/os-matrix.d.ts.map +1 -0
  617. package/dist/commands/verify/os-matrix.js +108 -0
  618. package/dist/commands/verify/os-matrix.js.map +1 -0
  619. package/dist/commands/verify/perf.d.ts +17 -0
  620. package/dist/commands/verify/perf.d.ts.map +1 -0
  621. package/dist/commands/verify/perf.js +106 -0
  622. package/dist/commands/verify/perf.js.map +1 -0
  623. package/dist/commands/verify/stores.d.ts +14 -0
  624. package/dist/commands/verify/stores.d.ts.map +1 -0
  625. package/dist/commands/verify/stores.js +98 -0
  626. package/dist/commands/verify/stores.js.map +1 -0
  627. package/dist/commands/verify.d.ts +14 -0
  628. package/dist/commands/verify.d.ts.map +1 -0
  629. package/dist/commands/verify.js +97 -0
  630. package/dist/commands/verify.js.map +1 -0
  631. package/dist/commands/workflow/catalog.d.ts +11 -0
  632. package/dist/commands/workflow/catalog.d.ts.map +1 -0
  633. package/dist/commands/workflow/catalog.js +164 -0
  634. package/dist/commands/workflow/catalog.js.map +1 -0
  635. package/dist/commands/workflow/list.d.ts +7 -0
  636. package/dist/commands/workflow/list.d.ts.map +1 -0
  637. package/dist/commands/workflow/list.js +50 -0
  638. package/dist/commands/workflow/list.js.map +1 -0
  639. package/dist/commands/workflow/resume.d.ts +13 -0
  640. package/dist/commands/workflow/resume.d.ts.map +1 -0
  641. package/dist/commands/workflow/resume.js +126 -0
  642. package/dist/commands/workflow/resume.js.map +1 -0
  643. package/dist/commands/workflow/run.d.ts +14 -0
  644. package/dist/commands/workflow/run.d.ts.map +1 -0
  645. package/dist/commands/workflow/run.js +139 -0
  646. package/dist/commands/workflow/run.js.map +1 -0
  647. package/dist/commands/workflow/status.d.ts +10 -0
  648. package/dist/commands/workflow/status.d.ts.map +1 -0
  649. package/dist/commands/workflow/status.js +86 -0
  650. package/dist/commands/workflow/status.js.map +1 -0
  651. package/dist/index.d.ts +2 -0
  652. package/dist/index.d.ts.map +1 -0
  653. package/dist/index.js +2 -0
  654. package/dist/index.js.map +1 -0
  655. package/dist/shared/agents.d.ts +12 -0
  656. package/dist/shared/agents.d.ts.map +1 -0
  657. package/dist/shared/agents.js +31 -0
  658. package/dist/shared/agents.js.map +1 -0
  659. package/dist/shared/artifact-io.d.ts +54 -0
  660. package/dist/shared/artifact-io.d.ts.map +1 -0
  661. package/dist/shared/artifact-io.js +71 -0
  662. package/dist/shared/artifact-io.js.map +1 -0
  663. package/dist/shared/feature-prompt.d.ts +18 -0
  664. package/dist/shared/feature-prompt.d.ts.map +1 -0
  665. package/dist/shared/feature-prompt.js +21 -0
  666. package/dist/shared/feature-prompt.js.map +1 -0
  667. package/dist/shared/hooks.d.ts +7 -0
  668. package/dist/shared/hooks.d.ts.map +1 -0
  669. package/dist/shared/hooks.js +52 -0
  670. package/dist/shared/hooks.js.map +1 -0
  671. package/dist/shared/mcp.d.ts +9 -0
  672. package/dist/shared/mcp.d.ts.map +1 -0
  673. package/dist/shared/mcp.js +15 -0
  674. package/dist/shared/mcp.js.map +1 -0
  675. package/dist/shared/project.d.ts +42 -0
  676. package/dist/shared/project.d.ts.map +1 -0
  677. package/dist/shared/project.js +98 -0
  678. package/dist/shared/project.js.map +1 -0
  679. package/dist/shared/workflow-resolver.d.ts +19 -0
  680. package/dist/shared/workflow-resolver.d.ts.map +1 -0
  681. package/dist/shared/workflow-resolver.js +71 -0
  682. package/dist/shared/workflow-resolver.js.map +1 -0
  683. package/dist/workflow/args-builder.d.ts +31 -0
  684. package/dist/workflow/args-builder.d.ts.map +1 -0
  685. package/dist/workflow/args-builder.js +110 -0
  686. package/dist/workflow/args-builder.js.map +1 -0
  687. package/dist/workflow/executor.d.ts +18 -0
  688. package/dist/workflow/executor.d.ts.map +1 -0
  689. package/dist/workflow/executor.js +112 -0
  690. package/dist/workflow/executor.js.map +1 -0
  691. package/extensions/git/commands/rpt.git.feature.md +85 -0
  692. package/extensions/git/extension.yml +47 -0
  693. package/package.json +58 -0
  694. package/scripts/bash/check-prerequisites.sh +149 -0
  695. package/scripts/bash/common.sh +389 -0
  696. package/scripts/bash/create-new-feature.sh +164 -0
  697. package/scripts/bash/setup-plan.sh +113 -0
  698. package/scripts/check-naming.sh +138 -0
  699. package/scripts/check-prompts.sh +165 -0
  700. package/scripts/check-tasks.sh +166 -0
  701. package/scripts/powershell/check-prerequisites.ps1 +117 -0
  702. package/scripts/powershell/common.ps1 +328 -0
  703. package/scripts/powershell/create-new-feature.ps1 +138 -0
  704. package/scripts/powershell/setup-plan.ps1 +96 -0
  705. package/scripts/prepare-npm.mjs +157 -0
  706. package/templates/checklist-template.md +103 -0
  707. package/templates/commands/analyze.md +103 -0
  708. package/templates/commands/checklist.md +87 -0
  709. package/templates/commands/clarify.md +85 -0
  710. package/templates/commands/constitution.md +126 -0
  711. package/templates/commands/implement.md +117 -0
  712. package/templates/commands/plan.md +125 -0
  713. package/templates/commands/specify.md +127 -0
  714. package/templates/commands/tasks.md +98 -0
  715. package/templates/commands/taskstoissues.md +81 -0
  716. package/templates/constitution-template.md +48 -0
  717. package/templates/plan-template.md +150 -0
  718. package/templates/spec-template.md +116 -0
  719. package/templates/tasks-template.md +77 -0
@@ -0,0 +1,176 @@
1
+ /**
2
+ * Extension Manifest — parser and validator for `extension.yml`.
3
+ *
4
+ * A manifest describes what the extension provides. We parse it, validate
5
+ * the schema discriminator, normalize optional fields, and verify that
6
+ * every declared file actually exists on disk (otherwise the resolver
7
+ * would fail later with confusing errors).
8
+ *
9
+ * Blueprint ref: 03 §4 — "extension.yml".
10
+ */
11
+ import { existsSync, readFileSync, statSync } from "node:fs";
12
+ import { dirname, isAbsolute, join, resolve } from "node:path";
13
+ import { parse as parseYaml } from "yaml";
14
+ import { hashFile } from "../audit/hash.js";
15
+ import { EXTENSION_SCHEMA_V1, ExtensionManifestError, } from "./types.js";
16
+ const PROVIDES_KEYS = [
17
+ "gates",
18
+ "templates",
19
+ "hooks",
20
+ "workflows",
21
+ "presets",
22
+ ];
23
+ const ID_RE = /^[a-z][a-z0-9._-]{1,63}$/;
24
+ const VERSION_RE = /^\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?$/;
25
+ /**
26
+ * Parse raw YAML text into a validated ExtensionManifest. Does NOT
27
+ * touch the filesystem beyond what the caller passes as source text.
28
+ */
29
+ export function parseManifest(raw, manifestPath) {
30
+ let parsed;
31
+ try {
32
+ parsed = parseYaml(raw);
33
+ }
34
+ catch (err) {
35
+ throw new ExtensionManifestError(`failed to parse extension.yml${manifestPath ? ` at ${manifestPath}` : ""}: ${err.message}`);
36
+ }
37
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
38
+ throw new ExtensionManifestError(`extension.yml${manifestPath ? ` at ${manifestPath}` : ""} must be a YAML mapping`);
39
+ }
40
+ const obj = parsed;
41
+ if (obj.schema !== EXTENSION_SCHEMA_V1) {
42
+ throw new ExtensionManifestError(`unsupported schema "${String(obj.schema)}" — expected "${EXTENSION_SCHEMA_V1}"`);
43
+ }
44
+ const id = requireString(obj, "id");
45
+ if (!ID_RE.test(id)) {
46
+ throw new ExtensionManifestError(`invalid extension id "${id}" — must match ${ID_RE}`);
47
+ }
48
+ const name = requireString(obj, "name");
49
+ const version = requireString(obj, "version");
50
+ if (!VERSION_RE.test(version)) {
51
+ throw new ExtensionManifestError(`invalid version "${version}" — must be semver`);
52
+ }
53
+ const description = optionalString(obj, "description");
54
+ const author = optionalString(obj, "author");
55
+ const requires = parseRequires(obj.requires);
56
+ const provides = parseProvides(obj.provides);
57
+ const manifest = {
58
+ schema: EXTENSION_SCHEMA_V1,
59
+ id,
60
+ name,
61
+ version,
62
+ };
63
+ if (description !== undefined)
64
+ manifest.description = description;
65
+ if (author !== undefined)
66
+ manifest.author = author;
67
+ if (requires)
68
+ manifest.requires = requires;
69
+ if (provides)
70
+ manifest.provides = provides;
71
+ return manifest;
72
+ }
73
+ /**
74
+ * Load an `extension.yml` from disk, validate, and compute file hashes
75
+ * for every file declared under `provides.*`. Returns a LoadedExtension
76
+ * ready to be registered.
77
+ */
78
+ export function loadManifestFromDir(rootDir) {
79
+ const abs = isAbsolute(rootDir) ? rootDir : resolve(rootDir);
80
+ const manifestPath = join(abs, "extension.yml");
81
+ if (!existsSync(manifestPath)) {
82
+ throw new ExtensionManifestError(`extension.yml not found in ${abs}`);
83
+ }
84
+ const raw = readFileSync(manifestPath, "utf8");
85
+ const manifest = parseManifest(raw, manifestPath);
86
+ const fileHashes = {};
87
+ const provides = manifest.provides;
88
+ if (provides) {
89
+ for (const kind of PROVIDES_KEYS) {
90
+ const list = provides[kind];
91
+ if (!list)
92
+ continue;
93
+ for (const relPath of list) {
94
+ const full = join(abs, relPath);
95
+ if (!existsSync(full) || !statSync(full).isFile()) {
96
+ throw new ExtensionManifestError(`extension "${manifest.id}" declares ${kind}/${relPath} but file does not exist at ${full}`);
97
+ }
98
+ fileHashes[relPath] = hashFile(full);
99
+ }
100
+ }
101
+ }
102
+ return {
103
+ manifest,
104
+ rootDir: abs,
105
+ manifestPath,
106
+ fileHashes,
107
+ };
108
+ }
109
+ // ---------------------------------------------------------------------------
110
+ // internals
111
+ // ---------------------------------------------------------------------------
112
+ function requireString(obj, key) {
113
+ const v = obj[key];
114
+ if (typeof v !== "string" || v.trim().length === 0) {
115
+ throw new ExtensionManifestError(`missing or invalid "${key}" — must be a non-empty string`);
116
+ }
117
+ return v;
118
+ }
119
+ function optionalString(obj, key) {
120
+ const v = obj[key];
121
+ if (v === undefined || v === null)
122
+ return undefined;
123
+ if (typeof v !== "string") {
124
+ throw new ExtensionManifestError(`"${key}" must be a string if present`);
125
+ }
126
+ return v;
127
+ }
128
+ function parseRequires(value) {
129
+ if (value === undefined || value === null)
130
+ return undefined;
131
+ if (typeof value !== "object" || Array.isArray(value)) {
132
+ throw new ExtensionManifestError(`"requires" must be a mapping`);
133
+ }
134
+ const r = value;
135
+ const out = {};
136
+ if (r.raptor_version !== undefined) {
137
+ if (typeof r.raptor_version !== "string") {
138
+ throw new ExtensionManifestError(`"requires.raptor_version" must be a string`);
139
+ }
140
+ out.raptor_version = r.raptor_version;
141
+ }
142
+ return out;
143
+ }
144
+ function parseProvides(value) {
145
+ if (value === undefined || value === null)
146
+ return undefined;
147
+ if (typeof value !== "object" || Array.isArray(value)) {
148
+ throw new ExtensionManifestError(`"provides" must be a mapping`);
149
+ }
150
+ const p = value;
151
+ const out = {};
152
+ for (const kind of PROVIDES_KEYS) {
153
+ const v = p[kind];
154
+ if (v === undefined || v === null)
155
+ continue;
156
+ if (!Array.isArray(v)) {
157
+ throw new ExtensionManifestError(`"provides.${kind}" must be a list of file paths`);
158
+ }
159
+ const arr = [];
160
+ for (const entry of v) {
161
+ if (typeof entry !== "string" || entry.trim().length === 0) {
162
+ throw new ExtensionManifestError(`"provides.${kind}" contains non-string or empty entry`);
163
+ }
164
+ if (entry.includes("..") || isAbsolute(entry)) {
165
+ throw new ExtensionManifestError(`"provides.${kind}" entry "${entry}" must be a relative path without ".." segments`);
166
+ }
167
+ arr.push(entry);
168
+ }
169
+ out[kind] = arr;
170
+ }
171
+ return out;
172
+ }
173
+ // dirname is imported for potential future use in relative-path math; keep
174
+ // the reference to avoid tree-shake oddities with bundled tests.
175
+ void dirname;
176
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/extensions/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EACL,mBAAmB,EACnB,sBAAsB,GAMvB,MAAM,YAAY,CAAC;AAEpB,MAAM,aAAa,GAAmB;IACpC,OAAO;IACP,WAAW;IACX,OAAO;IACP,WAAW;IACX,SAAS;CACV,CAAC;AAEF,MAAM,KAAK,GAAG,0BAA0B,CAAC;AACzC,MAAM,UAAU,GAAG,wCAAwC,CAAC;AAE5D;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,YAAqB;IAC9D,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,sBAAsB,CAC9B,gCAAgC,YAAY,CAAC,CAAC,CAAC,OAAO,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,KAAM,GAAa,CAAC,OAAO,EAAE,CACvG,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,sBAAsB,CAC9B,gBAAgB,YAAY,CAAC,CAAC,CAAC,OAAO,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,yBAAyB,CACnF,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,MAAiC,CAAC;IAE9C,IAAI,GAAG,CAAC,MAAM,KAAK,mBAAmB,EAAE,CAAC;QACvC,MAAM,IAAI,sBAAsB,CAC9B,uBAAuB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,mBAAmB,GAAG,CACjF,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,sBAAsB,CAC9B,yBAAyB,EAAE,kBAAkB,KAAK,EAAE,CACrD,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC9C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,sBAAsB,CAC9B,oBAAoB,OAAO,oBAAoB,CAChD,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAE7C,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE7C,MAAM,QAAQ,GAAsB;QAClC,MAAM,EAAE,mBAAmB;QAC3B,EAAE;QACF,IAAI;QACJ,OAAO;KACR,CAAC;IACF,IAAI,WAAW,KAAK,SAAS;QAAE,QAAQ,CAAC,WAAW,GAAG,WAAW,CAAC;IAClE,IAAI,MAAM,KAAK,SAAS;QAAE,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;IACnD,IAAI,QAAQ;QAAE,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3C,IAAI,QAAQ;QAAE,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3C,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IAChD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,sBAAsB,CAC9B,8BAA8B,GAAG,EAAE,CACpC,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAElD,MAAM,UAAU,GAA2B,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;IACnC,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;gBAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBAChC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;oBAClD,MAAM,IAAI,sBAAsB,CAC9B,cAAc,QAAQ,CAAC,EAAE,cAAc,IAAI,IAAI,OAAO,+BAA+B,IAAI,EAAE,CAC5F,CAAC;gBACJ,CAAC;gBACD,UAAU,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,QAAQ;QACR,OAAO,EAAE,GAAG;QACZ,YAAY;QACZ,UAAU;KACX,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,SAAS,aAAa,CAAC,GAA4B,EAAE,GAAW;IAC9D,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,sBAAsB,CAC9B,uBAAuB,GAAG,gCAAgC,CAC3D,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,cAAc,CAAC,GAA4B,EAAE,GAAW;IAC/D,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACpD,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,IAAI,sBAAsB,CAAC,IAAI,GAAG,+BAA+B,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,sBAAsB,CAAC,8BAA8B,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,MAAM,GAAG,GAAsB,EAAE,CAAC;IAClC,IAAI,CAAC,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACnC,IAAI,OAAO,CAAC,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;YACzC,MAAM,IAAI,sBAAsB,CAAC,4CAA4C,CAAC,CAAC;QACjF,CAAC;QACD,GAAG,CAAC,cAAc,GAAG,CAAC,CAAC,cAAc,CAAC;IACxC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,sBAAsB,CAAC,8BAA8B,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,MAAM,GAAG,GAAsB,EAAE,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI;YAAE,SAAS;QAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,sBAAsB,CAAC,aAAa,IAAI,gCAAgC,CAAC,CAAC;QACtF,CAAC;QACD,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,KAAK,MAAM,KAAK,IAAI,CAAC,EAAE,CAAC;YACtB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3D,MAAM,IAAI,sBAAsB,CAC9B,aAAa,IAAI,sCAAsC,CACxD,CAAC;YACJ,CAAC;YACD,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9C,MAAM,IAAI,sBAAsB,CAC9B,aAAa,IAAI,YAAY,KAAK,iDAAiD,CACpF,CAAC;YACJ,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;IAClB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,2EAA2E;AAC3E,iEAAiE;AACjE,KAAK,OAAO,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Extension Registry — in-memory store of loaded extensions for the
3
+ * duration of a single CLI or workflow run. Process-local by design:
4
+ * spawning a new Raptor invocation re-loads from disk so we never
5
+ * operate on stale state.
6
+ *
7
+ * Blueprint ref: 03 §5.
8
+ */
9
+ import type { LoadedExtension, ProvidedKind } from "./types.js";
10
+ export interface ExtensionRegistrySnapshot {
11
+ extensions: LoadedExtension[];
12
+ }
13
+ export declare class ExtensionRegistry {
14
+ private readonly byId;
15
+ private order;
16
+ register(ext: LoadedExtension): void;
17
+ has(id: string): boolean;
18
+ get(id: string): LoadedExtension | undefined;
19
+ list(): LoadedExtension[];
20
+ /** Enumerate all extensions that provide a given kind, in registration order. */
21
+ listByKind(kind: ProvidedKind): LoadedExtension[];
22
+ clear(): void;
23
+ snapshot(): ExtensionRegistrySnapshot;
24
+ }
25
+ /**
26
+ * Return the process-wide singleton registry, lazily instantiated.
27
+ * Tests that need isolation should prefer `new ExtensionRegistry()`
28
+ * directly instead of touching the singleton.
29
+ */
30
+ export declare function getExtensionRegistry(): ExtensionRegistry;
31
+ export declare function resetExtensionRegistry(): void;
32
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/extensions/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEhE,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,eAAe,EAAE,CAAC;CAC/B;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsC;IAC3D,OAAO,CAAC,KAAK,CAAgB;IAE7B,QAAQ,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;IAUpC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxB,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAI5C,IAAI,IAAI,eAAe,EAAE;IAIzB,iFAAiF;IACjF,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,eAAe,EAAE;IAOjD,KAAK,IAAI,IAAI;IAKb,QAAQ,IAAI,yBAAyB;CAGtC;AAID;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,iBAAiB,CAGxD;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Extension Registry — in-memory store of loaded extensions for the
3
+ * duration of a single CLI or workflow run. Process-local by design:
4
+ * spawning a new Raptor invocation re-loads from disk so we never
5
+ * operate on stale state.
6
+ *
7
+ * Blueprint ref: 03 §5.
8
+ */
9
+ export class ExtensionRegistry {
10
+ byId = new Map();
11
+ order = [];
12
+ register(ext) {
13
+ if (this.byId.has(ext.manifest.id)) {
14
+ throw new Error(`extension "${ext.manifest.id}" is already registered (from ${this.byId.get(ext.manifest.id).rootDir})`);
15
+ }
16
+ this.byId.set(ext.manifest.id, ext);
17
+ this.order.push(ext.manifest.id);
18
+ }
19
+ has(id) {
20
+ return this.byId.has(id);
21
+ }
22
+ get(id) {
23
+ return this.byId.get(id);
24
+ }
25
+ list() {
26
+ return this.order.map((id) => this.byId.get(id)).filter(Boolean);
27
+ }
28
+ /** Enumerate all extensions that provide a given kind, in registration order. */
29
+ listByKind(kind) {
30
+ return this.list().filter((e) => {
31
+ const provided = e.manifest.provides?.[kind];
32
+ return Array.isArray(provided) && provided.length > 0;
33
+ });
34
+ }
35
+ clear() {
36
+ this.byId.clear();
37
+ this.order = [];
38
+ }
39
+ snapshot() {
40
+ return { extensions: this.list() };
41
+ }
42
+ }
43
+ let globalRegistry = null;
44
+ /**
45
+ * Return the process-wide singleton registry, lazily instantiated.
46
+ * Tests that need isolation should prefer `new ExtensionRegistry()`
47
+ * directly instead of touching the singleton.
48
+ */
49
+ export function getExtensionRegistry() {
50
+ if (!globalRegistry)
51
+ globalRegistry = new ExtensionRegistry();
52
+ return globalRegistry;
53
+ }
54
+ export function resetExtensionRegistry() {
55
+ globalRegistry = null;
56
+ }
57
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/extensions/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,MAAM,OAAO,iBAAiB;IACX,IAAI,GAAG,IAAI,GAAG,EAA2B,CAAC;IACnD,KAAK,GAAa,EAAE,CAAC;IAE7B,QAAQ,CAAC,GAAoB;QAC3B,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,cAAc,GAAG,CAAC,QAAQ,CAAC,EAAE,iCAAiC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAE,CAAC,OAAO,GAAG,CACzG,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAED,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACpE,CAAC;IAED,iFAAiF;IACjF,UAAU,CAAC,IAAkB;QAC3B,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YAC9B,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC;YAC7C,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC;IAED,QAAQ;QACN,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;IACrC,CAAC;CACF;AAED,IAAI,cAAc,GAA6B,IAAI,CAAC;AAEpD;;;;GAIG;AACH,MAAM,UAAU,oBAAoB;IAClC,IAAI,CAAC,cAAc;QAAE,cAAc,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAC9D,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,cAAc,GAAG,IAAI,CAAC;AACxB,CAAC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Extension Resolver — answers "where does this template/gate/hook live?"
3
+ * by walking a layered set of sources.
4
+ *
5
+ * Resolution order (first hit wins):
6
+ * 1. `.raptor/overrides/<kind>/<name>` (project-local overrides)
7
+ * 2. `.raptor/presets/<preset-id>/<kind>/<name>`
8
+ * 3. `<ext-root>/<relative-from-manifest>` (extensions via registry)
9
+ * 4. bundled defaults (provided by caller)
10
+ *
11
+ * The resolver does NOT read file contents. It only returns the first
12
+ * matching absolute path so each subsystem can decide how to consume it
13
+ * (read raw, compile template, import JS, …).
14
+ *
15
+ * Blueprint ref: 03 §5, 04 §6.
16
+ */
17
+ import type { ExtensionRegistry } from "./registry.js";
18
+ import type { ProvidedKind, ResolveHit, ResolveRequest } from "./types.js";
19
+ export interface ResolverOptions {
20
+ projectRoot: string;
21
+ registry: ExtensionRegistry;
22
+ /**
23
+ * Optional map of bundled defaults per kind. Key is the resource name
24
+ * (e.g. "plan.md.hbs"), value is an absolute path. When present this
25
+ * is the lowest-priority layer.
26
+ */
27
+ bundled?: Partial<Record<ProvidedKind, Record<string, string>>>;
28
+ /** Subdirs (mostly for tests). */
29
+ overridesSubdir?: string;
30
+ presetsSubdir?: string;
31
+ /**
32
+ * Ordered list of active preset ids. Presets earlier in the list win
33
+ * over later ones (matches F4 stacking semantics).
34
+ */
35
+ activePresets?: string[];
36
+ }
37
+ export declare const DEFAULT_OVERRIDES_SUBDIR = ".raptor/overrides";
38
+ export declare const DEFAULT_PRESETS_SUBDIR = ".raptor/presets";
39
+ export declare class Resolver {
40
+ private readonly opts;
41
+ constructor(opts: ResolverOptions);
42
+ resolve(req: ResolveRequest): ResolveHit | null;
43
+ /**
44
+ * Return every source that matches a request, ordered by priority.
45
+ * Useful for diagnostics / `raptor doctor --sources`.
46
+ */
47
+ resolveAll(req: ResolveRequest): ResolveHit[];
48
+ private checkOverrides;
49
+ private checkPresets;
50
+ private checkAllPresets;
51
+ private checkExtensions;
52
+ private checkAllExtensions;
53
+ private checkBundled;
54
+ }
55
+ //# sourceMappingURL=resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/extensions/resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE3E,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAChE,kCAAkC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,eAAO,MAAM,wBAAwB,sBAAsB,CAAC;AAC5D,eAAO,MAAM,sBAAsB,oBAAoB,CAAC;AAExD,qBAAa,QAAQ;IACP,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,eAAe;IAMlD,OAAO,CAAC,GAAG,EAAE,cAAc,GAAG,UAAU,GAAG,IAAI;IAa/C;;;OAGG;IACH,UAAU,CAAC,GAAG,EAAE,cAAc,GAAG,UAAU,EAAE;IAW7C,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,eAAe;IAkBvB,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,YAAY;CAQrB"}
@@ -0,0 +1,143 @@
1
+ /**
2
+ * Extension Resolver — answers "where does this template/gate/hook live?"
3
+ * by walking a layered set of sources.
4
+ *
5
+ * Resolution order (first hit wins):
6
+ * 1. `.raptor/overrides/<kind>/<name>` (project-local overrides)
7
+ * 2. `.raptor/presets/<preset-id>/<kind>/<name>`
8
+ * 3. `<ext-root>/<relative-from-manifest>` (extensions via registry)
9
+ * 4. bundled defaults (provided by caller)
10
+ *
11
+ * The resolver does NOT read file contents. It only returns the first
12
+ * matching absolute path so each subsystem can decide how to consume it
13
+ * (read raw, compile template, import JS, …).
14
+ *
15
+ * Blueprint ref: 03 §5, 04 §6.
16
+ */
17
+ import { existsSync, statSync } from "node:fs";
18
+ import { isAbsolute, join } from "node:path";
19
+ export const DEFAULT_OVERRIDES_SUBDIR = ".raptor/overrides";
20
+ export const DEFAULT_PRESETS_SUBDIR = ".raptor/presets";
21
+ export class Resolver {
22
+ opts;
23
+ constructor(opts) {
24
+ this.opts = opts;
25
+ if (!isAbsolute(opts.projectRoot)) {
26
+ throw new Error(`projectRoot must be absolute, got "${opts.projectRoot}"`);
27
+ }
28
+ }
29
+ resolve(req) {
30
+ const overridesHit = this.checkOverrides(req);
31
+ if (overridesHit)
32
+ return overridesHit;
33
+ const presetHit = this.checkPresets(req);
34
+ if (presetHit)
35
+ return presetHit;
36
+ const extensionHit = this.checkExtensions(req);
37
+ if (extensionHit)
38
+ return extensionHit;
39
+ return this.checkBundled(req);
40
+ }
41
+ /**
42
+ * Return every source that matches a request, ordered by priority.
43
+ * Useful for diagnostics / `raptor doctor --sources`.
44
+ */
45
+ resolveAll(req) {
46
+ const hits = [];
47
+ const overridesHit = this.checkOverrides(req);
48
+ if (overridesHit)
49
+ hits.push(overridesHit);
50
+ hits.push(...this.checkAllPresets(req));
51
+ hits.push(...this.checkAllExtensions(req));
52
+ const bundledHit = this.checkBundled(req);
53
+ if (bundledHit)
54
+ hits.push(bundledHit);
55
+ return hits;
56
+ }
57
+ checkOverrides(req) {
58
+ const subdir = this.opts.overridesSubdir ?? DEFAULT_OVERRIDES_SUBDIR;
59
+ const candidate = join(this.opts.projectRoot, subdir, req.kind, req.name);
60
+ if (fileExists(candidate)) {
61
+ return { path: candidate, layer: "overrides" };
62
+ }
63
+ return null;
64
+ }
65
+ checkPresets(req) {
66
+ const subdir = this.opts.presetsSubdir ?? DEFAULT_PRESETS_SUBDIR;
67
+ for (const presetId of this.opts.activePresets ?? []) {
68
+ const candidate = join(this.opts.projectRoot, subdir, presetId, req.kind, req.name);
69
+ if (fileExists(candidate)) {
70
+ return { path: candidate, layer: "preset" };
71
+ }
72
+ }
73
+ return null;
74
+ }
75
+ checkAllPresets(req) {
76
+ const subdir = this.opts.presetsSubdir ?? DEFAULT_PRESETS_SUBDIR;
77
+ const hits = [];
78
+ for (const presetId of this.opts.activePresets ?? []) {
79
+ const candidate = join(this.opts.projectRoot, subdir, presetId, req.kind, req.name);
80
+ if (fileExists(candidate)) {
81
+ hits.push({ path: candidate, layer: "preset" });
82
+ }
83
+ }
84
+ return hits;
85
+ }
86
+ checkExtensions(req) {
87
+ for (const ext of this.opts.registry.list()) {
88
+ const list = ext.manifest.provides?.[req.kind];
89
+ if (!list)
90
+ continue;
91
+ if (!list.includes(req.name))
92
+ continue;
93
+ const candidate = join(ext.rootDir, req.name);
94
+ if (fileExists(candidate)) {
95
+ return {
96
+ path: candidate,
97
+ layer: "extension",
98
+ extensionId: ext.manifest.id,
99
+ };
100
+ }
101
+ }
102
+ return null;
103
+ }
104
+ checkAllExtensions(req) {
105
+ const hits = [];
106
+ for (const ext of this.opts.registry.list()) {
107
+ const list = ext.manifest.provides?.[req.kind];
108
+ if (!list)
109
+ continue;
110
+ if (!list.includes(req.name))
111
+ continue;
112
+ const candidate = join(ext.rootDir, req.name);
113
+ if (fileExists(candidate)) {
114
+ hits.push({
115
+ path: candidate,
116
+ layer: "extension",
117
+ extensionId: ext.manifest.id,
118
+ });
119
+ }
120
+ }
121
+ return hits;
122
+ }
123
+ checkBundled(req) {
124
+ const byName = this.opts.bundled?.[req.kind];
125
+ if (!byName)
126
+ return null;
127
+ const absolute = byName[req.name];
128
+ if (!absolute)
129
+ return null;
130
+ if (!fileExists(absolute))
131
+ return null;
132
+ return { path: absolute, layer: "bundled" };
133
+ }
134
+ }
135
+ function fileExists(p) {
136
+ try {
137
+ return existsSync(p) && statSync(p).isFile();
138
+ }
139
+ catch {
140
+ return false;
141
+ }
142
+ }
143
+ //# sourceMappingURL=resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/extensions/resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,173 @@
1
+ /**
2
+ * Extension System — core types.
3
+ *
4
+ * Extensions are self-contained bundles that register new templates,
5
+ * gates, hooks, and workflows into a Raptor project. They live under
6
+ * `.raptor/extensions/<id>/` and declare their contents via an
7
+ * `extension.yml` manifest.
8
+ *
9
+ * Resolution order (highest → lowest priority):
10
+ * 1. `.raptor/overrides/` (user project overrides)
11
+ * 2. `.raptor/presets/` (stacked presets, see F4)
12
+ * 3. `.raptor/extensions/<id>/` (this system)
13
+ * 4. bundled / core defaults
14
+ *
15
+ * Blueprint ref: 03 (integrations), 17 (multi-agent orchestration).
16
+ */
17
+ export declare const EXTENSION_SCHEMA_V1: "raptor.extension/v1";
18
+ export type ExtensionSchema = typeof EXTENSION_SCHEMA_V1;
19
+ /**
20
+ * Formal JSON Schema (Draft-07) for `extension.yml` payloads. The runtime
21
+ * parser in `manifest.ts` is hand-rolled (because YAML can contain
22
+ * structures Ajv won't enforce cleanly), but this constant is the
23
+ * authoritative spec for the file format and is suitable for IDE schema
24
+ * validation, documentation, and contract tests.
25
+ *
26
+ * Spec Kit ref: E08 — "extension.yml com schema versionado e validador".
27
+ */
28
+ export declare const EXTENSION_JSON_SCHEMA: {
29
+ readonly $schema: "http://json-schema.org/draft-07/schema#";
30
+ readonly $id: "raptor.extension/v1";
31
+ readonly title: "Raptor Extension Manifest";
32
+ readonly description: "Self-contained bundle of templates/gates/hooks/workflows/presets.";
33
+ readonly type: "object";
34
+ readonly required: readonly ["schema", "id", "name", "version"];
35
+ readonly properties: {
36
+ readonly schema: {
37
+ readonly type: "string";
38
+ readonly const: "raptor.extension/v1";
39
+ };
40
+ readonly id: {
41
+ readonly type: "string";
42
+ readonly pattern: "^[a-z][a-z0-9._-]{1,63}$";
43
+ };
44
+ readonly name: {
45
+ readonly type: "string";
46
+ readonly minLength: 1;
47
+ };
48
+ readonly version: {
49
+ readonly type: "string";
50
+ readonly pattern: "^\\d+\\.\\d+\\.\\d+(?:[-+][0-9A-Za-z.-]+)?$";
51
+ };
52
+ readonly description: {
53
+ readonly type: "string";
54
+ };
55
+ readonly author: {
56
+ readonly type: "string";
57
+ };
58
+ readonly requires: {
59
+ readonly type: "object";
60
+ readonly properties: {
61
+ readonly raptor_version: {
62
+ readonly type: "string";
63
+ };
64
+ };
65
+ readonly additionalProperties: false;
66
+ };
67
+ readonly provides: {
68
+ readonly type: "object";
69
+ readonly properties: {
70
+ readonly gates: {
71
+ readonly type: "array";
72
+ readonly items: {
73
+ readonly type: "string";
74
+ };
75
+ };
76
+ readonly templates: {
77
+ readonly type: "array";
78
+ readonly items: {
79
+ readonly type: "string";
80
+ };
81
+ };
82
+ readonly hooks: {
83
+ readonly type: "array";
84
+ readonly items: {
85
+ readonly type: "string";
86
+ };
87
+ };
88
+ readonly workflows: {
89
+ readonly type: "array";
90
+ readonly items: {
91
+ readonly type: "string";
92
+ };
93
+ };
94
+ readonly presets: {
95
+ readonly type: "array";
96
+ readonly items: {
97
+ readonly type: "string";
98
+ };
99
+ };
100
+ };
101
+ readonly additionalProperties: false;
102
+ };
103
+ };
104
+ readonly additionalProperties: true;
105
+ };
106
+ /**
107
+ * Declared artifacts an extension provides. Paths are relative to the
108
+ * extension root directory. All arrays are optional; an extension may
109
+ * provide a subset.
110
+ */
111
+ export interface ExtensionProvides {
112
+ gates?: string[];
113
+ templates?: string[];
114
+ hooks?: string[];
115
+ workflows?: string[];
116
+ presets?: string[];
117
+ }
118
+ export interface ExtensionRequires {
119
+ /** Semver range the host Raptor must satisfy (e.g. ">=0.1.0"). */
120
+ raptor_version?: string;
121
+ }
122
+ export interface ExtensionManifest {
123
+ schema: ExtensionSchema;
124
+ id: string;
125
+ name: string;
126
+ version: string;
127
+ description?: string;
128
+ author?: string;
129
+ requires?: ExtensionRequires;
130
+ provides?: ExtensionProvides;
131
+ }
132
+ /**
133
+ * A loaded extension: the manifest plus enough on-disk metadata for
134
+ * the resolver to find individual files.
135
+ */
136
+ export interface LoadedExtension {
137
+ manifest: ExtensionManifest;
138
+ /** Absolute path of the extension root directory. */
139
+ rootDir: string;
140
+ /** Absolute path of the manifest file (`extension.yml`). */
141
+ manifestPath: string;
142
+ /**
143
+ * Map of relative file → SHA-256 hash. Computed at load time so
144
+ * corrupted or tampered files can be detected (future feature).
145
+ */
146
+ fileHashes: Record<string, string>;
147
+ }
148
+ export type ProvidedKind = keyof ExtensionProvides;
149
+ /**
150
+ * A resolution request from a subsystem (e.g. template loader, gate
151
+ * runner). The resolver walks the layered sources and returns the
152
+ * first absolute file path that matches.
153
+ */
154
+ export interface ResolveRequest {
155
+ kind: ProvidedKind;
156
+ /** Relative file name as declared by the caller. For templates this is e.g. `plan.md.hbs`. */
157
+ name: string;
158
+ }
159
+ export interface ResolveHit {
160
+ /** Absolute path of the resolved file. */
161
+ path: string;
162
+ /** Which layer answered. */
163
+ layer: "overrides" | "preset" | "extension" | "bundled";
164
+ /** Extension id when `layer === "extension"`, otherwise undefined. */
165
+ extensionId?: string;
166
+ }
167
+ export declare class ExtensionManifestError extends Error {
168
+ constructor(message: string);
169
+ }
170
+ export declare class ExtensionLoadError extends Error {
171
+ constructor(message: string);
172
+ }
173
+ //# sourceMappingURL=types.d.ts.map