@rpamis/comet 0.3.9 → 0.4.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (624) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +371 -222
  3. package/assets/manifest.json +33 -12
  4. package/assets/skills/comet/SKILL.md +87 -102
  5. package/assets/skills/comet/reference/auto-transition.md +1 -1
  6. package/assets/skills/comet/reference/comet-yaml-fields.md +11 -4
  7. package/assets/skills/comet/reference/context-recovery.md +12 -2
  8. package/assets/skills/comet/reference/debug-gate.md +17 -1
  9. package/assets/skills/comet/reference/decision-point.md +13 -2
  10. package/assets/skills/comet/reference/intent-frame.md +74 -0
  11. package/assets/skills/comet/reference/scripts.md +69 -0
  12. package/assets/skills/comet/reference/subagent-dispatch.md +79 -23
  13. package/assets/skills/comet/rules/comet-phase-guard.en.md +18 -10
  14. package/assets/skills/comet/rules/comet-phase-guard.md +17 -10
  15. package/assets/skills/comet/runtime/classic/checks.yaml +6 -0
  16. package/assets/skills/comet/runtime/classic/guardrails.yaml +13 -0
  17. package/assets/skills/comet/runtime/classic/skill.yaml +122 -0
  18. package/assets/skills/comet/scripts/comet-archive.mjs +3 -0
  19. package/assets/skills/comet/scripts/comet-env.mjs +15 -0
  20. package/assets/skills/comet/scripts/comet-guard.mjs +3 -0
  21. package/assets/skills/comet/scripts/comet-handoff.mjs +3 -0
  22. package/assets/skills/comet/scripts/comet-hook-guard.mjs +3 -0
  23. package/assets/skills/comet/scripts/comet-intent.mjs +3 -0
  24. package/assets/skills/comet/scripts/comet-runtime.mjs +12857 -0
  25. package/assets/skills/comet/scripts/comet-state.mjs +3 -0
  26. package/assets/skills/comet/scripts/comet-yaml-validate.mjs +3 -0
  27. package/assets/skills/comet-any/SKILL.md +118 -0
  28. package/assets/skills/comet-any/reference/authored-zone-example.md +100 -0
  29. package/assets/skills/comet-any/reference/authoring-protocol.json +91 -0
  30. package/assets/skills/comet-any/reference/authoring-subagents.md +102 -0
  31. package/assets/skills/comet-any/reference/bundle-authoring.md +166 -0
  32. package/assets/skills/comet-any/reference/eval-provider.md +83 -0
  33. package/assets/skills/comet-any/reference/subagents/pause-points-author.md +75 -0
  34. package/assets/skills/comet-any/reference/subagents/reference-author.md +77 -0
  35. package/assets/skills/comet-any/reference/subagents/script-author.md +81 -0
  36. package/assets/skills/comet-any/reference/subagents/skill-core-author.md +129 -0
  37. package/assets/skills/comet-any/reference/subagents/skill-reviewer.md +124 -0
  38. package/assets/skills/comet-any/reference/subagents/workflow-entry-author.md +100 -0
  39. package/assets/skills/comet-archive/SKILL.md +25 -15
  40. package/assets/skills/comet-build/SKILL.md +51 -40
  41. package/assets/skills/comet-design/SKILL.md +14 -18
  42. package/assets/skills/comet-hotfix/SKILL.md +33 -43
  43. package/assets/skills/comet-open/SKILL.md +10 -20
  44. package/assets/skills/comet-tweak/SKILL.md +71 -65
  45. package/assets/skills/comet-verify/SKILL.md +31 -35
  46. package/assets/skills-zh/comet/SKILL.md +87 -101
  47. package/assets/skills-zh/comet/reference/auto-transition.md +3 -3
  48. package/assets/skills-zh/comet/reference/comet-yaml-fields.md +8 -4
  49. package/assets/skills-zh/comet/reference/context-recovery.md +11 -1
  50. package/assets/skills-zh/comet/reference/debug-gate.md +17 -1
  51. package/assets/skills-zh/comet/reference/decision-point.md +13 -2
  52. package/assets/skills-zh/comet/reference/intent-frame.md +74 -0
  53. package/assets/skills-zh/comet/reference/scripts.md +69 -0
  54. package/assets/skills-zh/comet/reference/subagent-dispatch.md +67 -18
  55. package/assets/skills-zh/comet/runtime/classic/checks.yaml +6 -0
  56. package/assets/skills-zh/comet/runtime/classic/guardrails.yaml +13 -0
  57. package/assets/skills-zh/comet/runtime/classic/skill.yaml +122 -0
  58. package/assets/skills-zh/comet-any/SKILL.md +118 -0
  59. package/assets/skills-zh/comet-any/reference/authored-zone-example.md +100 -0
  60. package/assets/skills-zh/comet-any/reference/authoring-protocol.json +91 -0
  61. package/assets/skills-zh/comet-any/reference/authoring-subagents.md +107 -0
  62. package/assets/skills-zh/comet-any/reference/bundle-authoring.md +166 -0
  63. package/assets/skills-zh/comet-any/reference/eval-provider.md +66 -0
  64. package/assets/skills-zh/comet-any/reference/subagents/pause-points-author.md +79 -0
  65. package/assets/skills-zh/comet-any/reference/subagents/reference-author.md +81 -0
  66. package/assets/skills-zh/comet-any/reference/subagents/script-author.md +84 -0
  67. package/assets/skills-zh/comet-any/reference/subagents/skill-core-author.md +129 -0
  68. package/assets/skills-zh/comet-any/reference/subagents/skill-reviewer.md +124 -0
  69. package/assets/skills-zh/comet-any/reference/subagents/workflow-entry-author.md +98 -0
  70. package/assets/skills-zh/comet-archive/SKILL.md +25 -15
  71. package/assets/skills-zh/comet-build/SKILL.md +41 -43
  72. package/assets/skills-zh/comet-design/SKILL.md +14 -18
  73. package/assets/skills-zh/comet-hotfix/SKILL.md +37 -47
  74. package/assets/skills-zh/comet-open/SKILL.md +12 -22
  75. package/assets/skills-zh/comet-tweak/SKILL.md +70 -63
  76. package/assets/skills-zh/comet-verify/SKILL.md +28 -30
  77. package/bin/comet.js +1 -1
  78. package/dist/{cli → app/cli}/index.d.ts.map +1 -1
  79. package/dist/app/cli/index.js +430 -0
  80. package/dist/app/cli/index.js.map +1 -0
  81. package/dist/app/commands/bundle.d.ts +51 -0
  82. package/dist/app/commands/bundle.d.ts.map +1 -0
  83. package/dist/app/commands/bundle.js +387 -0
  84. package/dist/app/commands/bundle.js.map +1 -0
  85. package/dist/app/commands/creator.d.ts +14 -0
  86. package/dist/app/commands/creator.d.ts.map +1 -0
  87. package/dist/app/commands/creator.js +82 -0
  88. package/dist/app/commands/creator.js.map +1 -0
  89. package/dist/app/commands/dashboard.d.ts +16 -0
  90. package/dist/app/commands/dashboard.d.ts.map +1 -0
  91. package/dist/app/commands/dashboard.js +53 -0
  92. package/dist/app/commands/dashboard.js.map +1 -0
  93. package/dist/{commands → app/commands}/doctor.d.ts +1 -1
  94. package/dist/app/commands/doctor.d.ts.map +1 -0
  95. package/dist/{commands → app/commands}/doctor.js +110 -60
  96. package/dist/app/commands/doctor.js.map +1 -0
  97. package/dist/app/commands/eval.d.ts +17 -0
  98. package/dist/app/commands/eval.d.ts.map +1 -0
  99. package/dist/app/commands/eval.js +169 -0
  100. package/dist/app/commands/eval.js.map +1 -0
  101. package/dist/app/commands/i18n.d.ts +4 -0
  102. package/dist/app/commands/i18n.d.ts.map +1 -0
  103. package/dist/{commands → app/commands}/i18n.js +22 -2
  104. package/dist/app/commands/i18n.js.map +1 -0
  105. package/dist/{commands → app/commands}/init.d.ts +3 -1
  106. package/dist/app/commands/init.d.ts.map +1 -0
  107. package/dist/{commands → app/commands}/init.js +81 -31
  108. package/dist/app/commands/init.js.map +1 -0
  109. package/dist/app/commands/platform-select-prompt.d.ts +38 -0
  110. package/dist/app/commands/platform-select-prompt.d.ts.map +1 -0
  111. package/dist/app/commands/platform-select-prompt.js +141 -0
  112. package/dist/app/commands/platform-select-prompt.js.map +1 -0
  113. package/dist/app/commands/publish.d.ts +7 -0
  114. package/dist/app/commands/publish.d.ts.map +1 -0
  115. package/dist/app/commands/publish.js +14 -0
  116. package/dist/app/commands/publish.js.map +1 -0
  117. package/dist/app/commands/skill.d.ts +23 -0
  118. package/dist/app/commands/skill.d.ts.map +1 -0
  119. package/dist/app/commands/skill.js +208 -0
  120. package/dist/app/commands/skill.js.map +1 -0
  121. package/dist/app/commands/status.d.ts.map +1 -0
  122. package/dist/app/commands/status.js +159 -0
  123. package/dist/app/commands/status.js.map +1 -0
  124. package/dist/{commands → app/commands}/uninstall.d.ts +1 -1
  125. package/dist/app/commands/uninstall.d.ts.map +1 -0
  126. package/dist/{commands → app/commands}/uninstall.js +3 -3
  127. package/dist/app/commands/uninstall.js.map +1 -0
  128. package/dist/{commands → app/commands}/update.d.ts +4 -3
  129. package/dist/app/commands/update.d.ts.map +1 -0
  130. package/dist/{commands → app/commands}/update.js +33 -10
  131. package/dist/app/commands/update.js.map +1 -0
  132. package/dist/config/repository-layout.json +98 -0
  133. package/dist/domains/bundle/authoring.d.ts +82 -0
  134. package/dist/domains/bundle/authoring.d.ts.map +1 -0
  135. package/dist/domains/bundle/authoring.js +185 -0
  136. package/dist/domains/bundle/authoring.js.map +1 -0
  137. package/dist/domains/bundle/bundle-platform.d.ts +39 -0
  138. package/dist/domains/bundle/bundle-platform.d.ts.map +1 -0
  139. package/dist/domains/bundle/bundle-platform.js +287 -0
  140. package/dist/domains/bundle/bundle-platform.js.map +1 -0
  141. package/dist/domains/bundle/candidates.d.ts +29 -0
  142. package/dist/domains/bundle/candidates.d.ts.map +1 -0
  143. package/dist/domains/bundle/candidates.js +37 -0
  144. package/dist/domains/bundle/candidates.js.map +1 -0
  145. package/dist/domains/bundle/compatibility-benchmark.d.ts +12 -0
  146. package/dist/domains/bundle/compatibility-benchmark.d.ts.map +1 -0
  147. package/dist/domains/bundle/compatibility-benchmark.js +224 -0
  148. package/dist/domains/bundle/compatibility-benchmark.js.map +1 -0
  149. package/dist/domains/bundle/compiler.d.ts +5 -0
  150. package/dist/domains/bundle/compiler.d.ts.map +1 -0
  151. package/dist/domains/bundle/compiler.js +106 -0
  152. package/dist/domains/bundle/compiler.js.map +1 -0
  153. package/dist/domains/bundle/distribute.d.ts +33 -0
  154. package/dist/domains/bundle/distribute.d.ts.map +1 -0
  155. package/dist/domains/bundle/distribute.js +166 -0
  156. package/dist/domains/bundle/distribute.js.map +1 -0
  157. package/dist/domains/bundle/draft.d.ts +19 -0
  158. package/dist/domains/bundle/draft.d.ts.map +1 -0
  159. package/dist/domains/bundle/draft.js +82 -0
  160. package/dist/domains/bundle/draft.js.map +1 -0
  161. package/dist/domains/bundle/eval.d.ts +36 -0
  162. package/dist/domains/bundle/eval.d.ts.map +1 -0
  163. package/dist/domains/bundle/eval.js +501 -0
  164. package/dist/domains/bundle/eval.js.map +1 -0
  165. package/dist/domains/bundle/factory-compose.d.ts +12 -0
  166. package/dist/domains/bundle/factory-compose.d.ts.map +1 -0
  167. package/dist/domains/bundle/factory-compose.js +309 -0
  168. package/dist/domains/bundle/factory-compose.js.map +1 -0
  169. package/dist/domains/bundle/factory-guide.d.ts +37 -0
  170. package/dist/domains/bundle/factory-guide.d.ts.map +1 -0
  171. package/dist/domains/bundle/factory-guide.js +96 -0
  172. package/dist/domains/bundle/factory-guide.js.map +1 -0
  173. package/dist/domains/bundle/factory-plan.d.ts +48 -0
  174. package/dist/domains/bundle/factory-plan.d.ts.map +1 -0
  175. package/dist/domains/bundle/factory-plan.js +172 -0
  176. package/dist/domains/bundle/factory-plan.js.map +1 -0
  177. package/dist/domains/bundle/factory-proposal.d.ts +31 -0
  178. package/dist/domains/bundle/factory-proposal.d.ts.map +1 -0
  179. package/dist/domains/bundle/factory-proposal.js +225 -0
  180. package/dist/domains/bundle/factory-proposal.js.map +1 -0
  181. package/dist/domains/bundle/factory-resolve.d.ts +11 -0
  182. package/dist/domains/bundle/factory-resolve.d.ts.map +1 -0
  183. package/dist/domains/bundle/factory-resolve.js +121 -0
  184. package/dist/domains/bundle/factory-resolve.js.map +1 -0
  185. package/dist/domains/bundle/factory.d.ts +17 -0
  186. package/dist/domains/bundle/factory.d.ts.map +1 -0
  187. package/dist/domains/bundle/factory.js +511 -0
  188. package/dist/domains/bundle/factory.js.map +1 -0
  189. package/dist/domains/bundle/hash.d.ts +3 -0
  190. package/dist/domains/bundle/hash.d.ts.map +1 -0
  191. package/dist/domains/bundle/hash.js +72 -0
  192. package/dist/domains/bundle/hash.js.map +1 -0
  193. package/dist/domains/bundle/load.d.ts +4 -0
  194. package/dist/domains/bundle/load.d.ts.map +1 -0
  195. package/dist/domains/bundle/load.js +355 -0
  196. package/dist/domains/bundle/load.js.map +1 -0
  197. package/dist/domains/bundle/next-action.d.ts +37 -0
  198. package/dist/domains/bundle/next-action.d.ts.map +1 -0
  199. package/dist/domains/bundle/next-action.js +185 -0
  200. package/dist/domains/bundle/next-action.js.map +1 -0
  201. package/dist/domains/bundle/platform.d.ts +21 -0
  202. package/dist/domains/bundle/platform.d.ts.map +1 -0
  203. package/dist/domains/bundle/platform.js +170 -0
  204. package/dist/domains/bundle/platform.js.map +1 -0
  205. package/dist/domains/bundle/preferences.d.ts +11 -0
  206. package/dist/domains/bundle/preferences.d.ts.map +1 -0
  207. package/dist/domains/bundle/preferences.js +17 -0
  208. package/dist/domains/bundle/preferences.js.map +1 -0
  209. package/dist/domains/bundle/publish.d.ts +14 -0
  210. package/dist/domains/bundle/publish.d.ts.map +1 -0
  211. package/dist/domains/bundle/publish.js +159 -0
  212. package/dist/domains/bundle/publish.js.map +1 -0
  213. package/dist/domains/bundle/readiness-user-summary.d.ts +25 -0
  214. package/dist/domains/bundle/readiness-user-summary.d.ts.map +1 -0
  215. package/dist/domains/bundle/readiness-user-summary.js +186 -0
  216. package/dist/domains/bundle/readiness-user-summary.js.map +1 -0
  217. package/dist/domains/bundle/review-summary.d.ts +36 -0
  218. package/dist/domains/bundle/review-summary.d.ts.map +1 -0
  219. package/dist/domains/bundle/review-summary.js +348 -0
  220. package/dist/domains/bundle/review-summary.js.map +1 -0
  221. package/dist/domains/bundle/state.d.ts +7 -0
  222. package/dist/domains/bundle/state.d.ts.map +1 -0
  223. package/dist/domains/bundle/state.js +132 -0
  224. package/dist/domains/bundle/state.js.map +1 -0
  225. package/dist/domains/bundle/types.d.ts +347 -0
  226. package/dist/domains/bundle/types.d.ts.map +1 -0
  227. package/dist/domains/bundle/types.js.map +1 -0
  228. package/dist/domains/bundle/user-facing.d.ts +48 -0
  229. package/dist/domains/bundle/user-facing.d.ts.map +1 -0
  230. package/dist/domains/bundle/user-facing.js +73 -0
  231. package/dist/domains/bundle/user-facing.js.map +1 -0
  232. package/dist/domains/bundle/validate.d.ts +5 -0
  233. package/dist/domains/bundle/validate.d.ts.map +1 -0
  234. package/dist/domains/bundle/validate.js +292 -0
  235. package/dist/domains/bundle/validate.js.map +1 -0
  236. package/dist/domains/comet-classic/classic-archive-entry.d.ts +2 -0
  237. package/dist/domains/comet-classic/classic-archive-entry.d.ts.map +1 -0
  238. package/dist/domains/comet-classic/classic-archive-entry.js +4 -0
  239. package/dist/domains/comet-classic/classic-archive-entry.js.map +1 -0
  240. package/dist/domains/comet-classic/classic-archive.d.ts +3 -0
  241. package/dist/domains/comet-classic/classic-archive.d.ts.map +1 -0
  242. package/dist/domains/comet-classic/classic-archive.js +392 -0
  243. package/dist/domains/comet-classic/classic-archive.js.map +1 -0
  244. package/dist/domains/comet-classic/classic-cli.d.ts +15 -0
  245. package/dist/domains/comet-classic/classic-cli.d.ts.map +1 -0
  246. package/dist/domains/comet-classic/classic-cli.js +94 -0
  247. package/dist/domains/comet-classic/classic-cli.js.map +1 -0
  248. package/dist/domains/comet-classic/classic-diagnostics.d.ts +16 -0
  249. package/dist/domains/comet-classic/classic-diagnostics.d.ts.map +1 -0
  250. package/dist/domains/comet-classic/classic-diagnostics.js +57 -0
  251. package/dist/domains/comet-classic/classic-diagnostics.js.map +1 -0
  252. package/dist/domains/comet-classic/classic-evidence.d.ts +10 -0
  253. package/dist/domains/comet-classic/classic-evidence.d.ts.map +1 -0
  254. package/dist/domains/comet-classic/classic-evidence.js +114 -0
  255. package/dist/domains/comet-classic/classic-evidence.js.map +1 -0
  256. package/dist/domains/comet-classic/classic-guard-entry.d.ts +2 -0
  257. package/dist/domains/comet-classic/classic-guard-entry.d.ts.map +1 -0
  258. package/dist/domains/comet-classic/classic-guard-entry.js +4 -0
  259. package/dist/domains/comet-classic/classic-guard-entry.js.map +1 -0
  260. package/dist/domains/comet-classic/classic-guard.d.ts +3 -0
  261. package/dist/domains/comet-classic/classic-guard.d.ts.map +1 -0
  262. package/dist/domains/comet-classic/classic-guard.js +833 -0
  263. package/dist/domains/comet-classic/classic-guard.js.map +1 -0
  264. package/dist/domains/comet-classic/classic-handoff-entry.d.ts +2 -0
  265. package/dist/domains/comet-classic/classic-handoff-entry.d.ts.map +1 -0
  266. package/dist/domains/comet-classic/classic-handoff-entry.js +4 -0
  267. package/dist/domains/comet-classic/classic-handoff-entry.js.map +1 -0
  268. package/dist/domains/comet-classic/classic-handoff.d.ts +3 -0
  269. package/dist/domains/comet-classic/classic-handoff.d.ts.map +1 -0
  270. package/dist/domains/comet-classic/classic-handoff.js +478 -0
  271. package/dist/domains/comet-classic/classic-handoff.js.map +1 -0
  272. package/dist/domains/comet-classic/classic-hook-guard-entry.d.ts +2 -0
  273. package/dist/domains/comet-classic/classic-hook-guard-entry.d.ts.map +1 -0
  274. package/dist/domains/comet-classic/classic-hook-guard-entry.js +4 -0
  275. package/dist/domains/comet-classic/classic-hook-guard-entry.js.map +1 -0
  276. package/dist/domains/comet-classic/classic-hook-guard.d.ts +3 -0
  277. package/dist/domains/comet-classic/classic-hook-guard.d.ts.map +1 -0
  278. package/dist/domains/comet-classic/classic-hook-guard.js +302 -0
  279. package/dist/domains/comet-classic/classic-hook-guard.js.map +1 -0
  280. package/dist/domains/comet-classic/classic-intent-command.d.ts +3 -0
  281. package/dist/domains/comet-classic/classic-intent-command.d.ts.map +1 -0
  282. package/dist/domains/comet-classic/classic-intent-command.js +40 -0
  283. package/dist/domains/comet-classic/classic-intent-command.js.map +1 -0
  284. package/dist/domains/comet-classic/classic-intent-entry.d.ts +2 -0
  285. package/dist/domains/comet-classic/classic-intent-entry.d.ts.map +1 -0
  286. package/dist/domains/comet-classic/classic-intent-entry.js +4 -0
  287. package/dist/domains/comet-classic/classic-intent-entry.js.map +1 -0
  288. package/dist/domains/comet-classic/classic-intent.d.ts +79 -0
  289. package/dist/domains/comet-classic/classic-intent.d.ts.map +1 -0
  290. package/dist/domains/comet-classic/classic-intent.js +307 -0
  291. package/dist/domains/comet-classic/classic-intent.js.map +1 -0
  292. package/dist/domains/comet-classic/classic-migrate.d.ts +18 -0
  293. package/dist/domains/comet-classic/classic-migrate.d.ts.map +1 -0
  294. package/dist/domains/comet-classic/classic-migrate.js +184 -0
  295. package/dist/domains/comet-classic/classic-migrate.js.map +1 -0
  296. package/dist/domains/comet-classic/classic-paths.d.ts +8 -0
  297. package/dist/domains/comet-classic/classic-paths.d.ts.map +1 -0
  298. package/dist/domains/comet-classic/classic-paths.js +61 -0
  299. package/dist/domains/comet-classic/classic-paths.js.map +1 -0
  300. package/dist/domains/comet-classic/classic-resolver.d.ts +10 -0
  301. package/dist/domains/comet-classic/classic-resolver.d.ts.map +1 -0
  302. package/dist/domains/comet-classic/classic-resolver.js +89 -0
  303. package/dist/domains/comet-classic/classic-resolver.js.map +1 -0
  304. package/dist/domains/comet-classic/classic-runtime-evals.d.ts +9 -0
  305. package/dist/domains/comet-classic/classic-runtime-evals.d.ts.map +1 -0
  306. package/dist/domains/comet-classic/classic-runtime-evals.js +45 -0
  307. package/dist/domains/comet-classic/classic-runtime-evals.js.map +1 -0
  308. package/dist/domains/comet-classic/classic-runtime-run.d.ts +7 -0
  309. package/dist/domains/comet-classic/classic-runtime-run.d.ts.map +1 -0
  310. package/dist/domains/comet-classic/classic-runtime-run.js +105 -0
  311. package/dist/domains/comet-classic/classic-runtime-run.js.map +1 -0
  312. package/dist/domains/comet-classic/classic-script-entry.d.ts +3 -0
  313. package/dist/domains/comet-classic/classic-script-entry.d.ts.map +1 -0
  314. package/dist/domains/comet-classic/classic-script-entry.js +31 -0
  315. package/dist/domains/comet-classic/classic-script-entry.js.map +1 -0
  316. package/dist/domains/comet-classic/classic-state-command.d.ts +3 -0
  317. package/dist/domains/comet-classic/classic-state-command.d.ts.map +1 -0
  318. package/dist/domains/comet-classic/classic-state-command.js +984 -0
  319. package/dist/domains/comet-classic/classic-state-command.js.map +1 -0
  320. package/dist/domains/comet-classic/classic-state-entry.d.ts +2 -0
  321. package/dist/domains/comet-classic/classic-state-entry.d.ts.map +1 -0
  322. package/dist/domains/comet-classic/classic-state-entry.js +4 -0
  323. package/dist/domains/comet-classic/classic-state-entry.js.map +1 -0
  324. package/dist/domains/comet-classic/classic-state-events.d.ts +18 -0
  325. package/dist/domains/comet-classic/classic-state-events.d.ts.map +1 -0
  326. package/dist/domains/comet-classic/classic-state-events.js +15 -0
  327. package/dist/domains/comet-classic/classic-state-events.js.map +1 -0
  328. package/dist/domains/comet-classic/classic-state.d.ts +69 -0
  329. package/dist/domains/comet-classic/classic-state.d.ts.map +1 -0
  330. package/dist/domains/comet-classic/classic-state.js +238 -0
  331. package/dist/domains/comet-classic/classic-state.js.map +1 -0
  332. package/dist/domains/comet-classic/classic-store.d.ts +7 -0
  333. package/dist/domains/comet-classic/classic-store.d.ts.map +1 -0
  334. package/dist/domains/comet-classic/classic-store.js +127 -0
  335. package/dist/domains/comet-classic/classic-store.js.map +1 -0
  336. package/dist/domains/comet-classic/classic-transitions.d.ts +24 -0
  337. package/dist/domains/comet-classic/classic-transitions.d.ts.map +1 -0
  338. package/dist/domains/comet-classic/classic-transitions.js +124 -0
  339. package/dist/domains/comet-classic/classic-transitions.js.map +1 -0
  340. package/dist/domains/comet-classic/classic-validate-command.d.ts +3 -0
  341. package/dist/domains/comet-classic/classic-validate-command.d.ts.map +1 -0
  342. package/dist/domains/comet-classic/classic-validate-command.js +154 -0
  343. package/dist/domains/comet-classic/classic-validate-command.js.map +1 -0
  344. package/dist/domains/comet-classic/classic-validate-entry.d.ts +2 -0
  345. package/dist/domains/comet-classic/classic-validate-entry.d.ts.map +1 -0
  346. package/dist/domains/comet-classic/classic-validate-entry.js +4 -0
  347. package/dist/domains/comet-classic/classic-validate-entry.js.map +1 -0
  348. package/dist/domains/comet-classic/index.d.ts +20 -0
  349. package/dist/domains/comet-classic/index.d.ts.map +1 -0
  350. package/dist/domains/comet-classic/index.js +20 -0
  351. package/dist/domains/comet-classic/index.js.map +1 -0
  352. package/dist/domains/dashboard/collector.d.ts +12 -0
  353. package/dist/domains/dashboard/collector.d.ts.map +1 -0
  354. package/dist/domains/dashboard/collector.js +475 -0
  355. package/dist/domains/dashboard/collector.js.map +1 -0
  356. package/dist/domains/dashboard/git.d.ts +8 -0
  357. package/dist/domains/dashboard/git.d.ts.map +1 -0
  358. package/dist/domains/dashboard/git.js +69 -0
  359. package/dist/domains/dashboard/git.js.map +1 -0
  360. package/dist/domains/dashboard/next-action.d.ts +17 -0
  361. package/dist/domains/dashboard/next-action.d.ts.map +1 -0
  362. package/dist/domains/dashboard/next-action.js +83 -0
  363. package/dist/domains/dashboard/next-action.js.map +1 -0
  364. package/dist/domains/dashboard/open-browser.d.ts +9 -0
  365. package/dist/domains/dashboard/open-browser.d.ts.map +1 -0
  366. package/dist/domains/dashboard/open-browser.js +40 -0
  367. package/dist/domains/dashboard/open-browser.js.map +1 -0
  368. package/dist/domains/dashboard/risk.d.ts +24 -0
  369. package/dist/domains/dashboard/risk.d.ts.map +1 -0
  370. package/dist/domains/dashboard/risk.js +97 -0
  371. package/dist/domains/dashboard/risk.js.map +1 -0
  372. package/dist/domains/dashboard/server.d.ts +21 -0
  373. package/dist/domains/dashboard/server.d.ts.map +1 -0
  374. package/dist/domains/dashboard/server.js +149 -0
  375. package/dist/domains/dashboard/server.js.map +1 -0
  376. package/dist/domains/dashboard/task-parser.d.ts +13 -0
  377. package/dist/domains/dashboard/task-parser.d.ts.map +1 -0
  378. package/dist/domains/dashboard/task-parser.js +82 -0
  379. package/dist/domains/dashboard/task-parser.js.map +1 -0
  380. package/dist/domains/dashboard/types.d.ts +122 -0
  381. package/dist/domains/dashboard/types.d.ts.map +1 -0
  382. package/dist/domains/dashboard/types.js +10 -0
  383. package/dist/domains/dashboard/types.js.map +1 -0
  384. package/dist/domains/dashboard/verify-parser.d.ts +18 -0
  385. package/dist/domains/dashboard/verify-parser.d.ts.map +1 -0
  386. package/dist/domains/dashboard/verify-parser.js +94 -0
  387. package/dist/domains/dashboard/verify-parser.js.map +1 -0
  388. package/dist/domains/dashboard/web/assets/demo-DQyfozbi.js +1 -0
  389. package/dist/domains/dashboard/web/assets/index-BcO3_QlT.css +1 -0
  390. package/dist/domains/dashboard/web/assets/index-CjU3VXVu.js +22 -0
  391. package/dist/domains/dashboard/web/favicon.png +0 -0
  392. package/dist/domains/dashboard/web/index.html +16 -0
  393. package/dist/domains/dashboard/yaml.d.ts +13 -0
  394. package/dist/domains/dashboard/yaml.d.ts.map +1 -0
  395. package/dist/domains/dashboard/yaml.js +61 -0
  396. package/dist/domains/dashboard/yaml.js.map +1 -0
  397. package/dist/domains/engine/evals.d.ts +4 -0
  398. package/dist/domains/engine/evals.d.ts.map +1 -0
  399. package/dist/domains/engine/evals.js +25 -0
  400. package/dist/domains/engine/evals.js.map +1 -0
  401. package/dist/domains/engine/guardrails.d.ts +10 -0
  402. package/dist/domains/engine/guardrails.d.ts.map +1 -0
  403. package/dist/domains/engine/guardrails.js +25 -0
  404. package/dist/domains/engine/guardrails.js.map +1 -0
  405. package/dist/domains/engine/loop.d.ts +15 -0
  406. package/dist/domains/engine/loop.d.ts.map +1 -0
  407. package/dist/domains/engine/loop.js +126 -0
  408. package/dist/domains/engine/loop.js.map +1 -0
  409. package/dist/domains/engine/manual-run.d.ts +30 -0
  410. package/dist/domains/engine/manual-run.d.ts.map +1 -0
  411. package/dist/domains/engine/manual-run.js +184 -0
  412. package/dist/domains/engine/manual-run.js.map +1 -0
  413. package/dist/domains/engine/resolver.d.ts +20 -0
  414. package/dist/domains/engine/resolver.d.ts.map +1 -0
  415. package/dist/domains/engine/resolver.js +36 -0
  416. package/dist/domains/engine/resolver.js.map +1 -0
  417. package/dist/domains/engine/run-store.d.ts +13 -0
  418. package/dist/domains/engine/run-store.d.ts.map +1 -0
  419. package/dist/domains/engine/run-store.js +100 -0
  420. package/dist/domains/engine/run-store.js.map +1 -0
  421. package/dist/domains/engine/runtime-types.d.ts +11 -0
  422. package/dist/domains/engine/runtime-types.d.ts.map +1 -0
  423. package/dist/domains/engine/runtime-types.js +2 -0
  424. package/dist/domains/engine/runtime-types.js.map +1 -0
  425. package/dist/domains/engine/standalone-run.d.ts +13 -0
  426. package/dist/domains/engine/standalone-run.d.ts.map +1 -0
  427. package/dist/domains/engine/standalone-run.js +27 -0
  428. package/dist/domains/engine/standalone-run.js.map +1 -0
  429. package/dist/domains/engine/state.d.ts +10 -0
  430. package/dist/domains/engine/state.d.ts.map +1 -0
  431. package/dist/domains/engine/state.js +160 -0
  432. package/dist/domains/engine/state.js.map +1 -0
  433. package/dist/domains/engine/types.d.ts +51 -0
  434. package/dist/domains/engine/types.d.ts.map +1 -0
  435. package/dist/domains/engine/types.js +2 -0
  436. package/dist/domains/engine/types.js.map +1 -0
  437. package/dist/domains/eval/index.d.ts +7 -0
  438. package/dist/domains/eval/index.d.ts.map +1 -0
  439. package/dist/domains/eval/index.js +11 -0
  440. package/dist/domains/eval/index.js.map +1 -0
  441. package/dist/domains/eval/repository-benchmarks.d.ts +6 -0
  442. package/dist/domains/eval/repository-benchmarks.d.ts.map +1 -0
  443. package/dist/domains/eval/repository-benchmarks.js +10 -0
  444. package/dist/domains/eval/repository-benchmarks.js.map +1 -0
  445. package/dist/domains/factory/artifacts.d.ts +53 -0
  446. package/dist/domains/factory/artifacts.d.ts.map +1 -0
  447. package/dist/domains/factory/artifacts.js +8 -0
  448. package/dist/domains/factory/artifacts.js.map +1 -0
  449. package/dist/domains/factory/package.d.ts +7 -0
  450. package/dist/domains/factory/package.d.ts.map +1 -0
  451. package/dist/domains/factory/package.js +1511 -0
  452. package/dist/domains/factory/package.js.map +1 -0
  453. package/dist/domains/factory/types.d.ts +127 -0
  454. package/dist/domains/factory/types.d.ts.map +1 -0
  455. package/dist/domains/factory/types.js +2 -0
  456. package/dist/domains/factory/types.js.map +1 -0
  457. package/dist/{core → domains/integrations}/codegraph.d.ts +1 -1
  458. package/dist/domains/integrations/codegraph.d.ts.map +1 -0
  459. package/dist/{core → domains/integrations}/codegraph.js +1 -1
  460. package/dist/domains/integrations/codegraph.js.map +1 -0
  461. package/dist/domains/integrations/openspec.d.ts +18 -0
  462. package/dist/domains/integrations/openspec.d.ts.map +1 -0
  463. package/dist/{core → domains/integrations}/openspec.js +102 -25
  464. package/dist/domains/integrations/openspec.js.map +1 -0
  465. package/dist/{core → domains/integrations}/superpowers.d.ts +10 -2
  466. package/dist/domains/integrations/superpowers.d.ts.map +1 -0
  467. package/dist/{core → domains/integrations}/superpowers.js +59 -13
  468. package/dist/domains/integrations/superpowers.js.map +1 -0
  469. package/dist/domains/skill/discovery.d.ts +17 -0
  470. package/dist/domains/skill/discovery.d.ts.map +1 -0
  471. package/dist/domains/skill/discovery.js +80 -0
  472. package/dist/domains/skill/discovery.js.map +1 -0
  473. package/dist/domains/skill/find.d.ts +41 -0
  474. package/dist/domains/skill/find.d.ts.map +1 -0
  475. package/dist/domains/skill/find.js +251 -0
  476. package/dist/domains/skill/find.js.map +1 -0
  477. package/dist/domains/skill/install.d.ts +11 -0
  478. package/dist/domains/skill/install.d.ts.map +1 -0
  479. package/dist/domains/skill/install.js +82 -0
  480. package/dist/domains/skill/install.js.map +1 -0
  481. package/dist/domains/skill/inventory.d.ts +19 -0
  482. package/dist/domains/skill/inventory.d.ts.map +1 -0
  483. package/dist/domains/skill/inventory.js +64 -0
  484. package/dist/domains/skill/inventory.js.map +1 -0
  485. package/dist/domains/skill/languages.d.ts +19 -0
  486. package/dist/domains/skill/languages.d.ts.map +1 -0
  487. package/dist/domains/skill/languages.js +21 -0
  488. package/dist/domains/skill/languages.js.map +1 -0
  489. package/dist/domains/skill/load.d.ts +5 -0
  490. package/dist/domains/skill/load.d.ts.map +1 -0
  491. package/dist/domains/skill/load.js +313 -0
  492. package/dist/domains/skill/load.js.map +1 -0
  493. package/dist/domains/skill/platform-install.d.ts +87 -0
  494. package/dist/domains/skill/platform-install.d.ts.map +1 -0
  495. package/dist/{core/skills.js → domains/skill/platform-install.js} +243 -51
  496. package/dist/domains/skill/platform-install.js.map +1 -0
  497. package/dist/domains/skill/preferences.d.ts +42 -0
  498. package/dist/domains/skill/preferences.d.ts.map +1 -0
  499. package/dist/domains/skill/preferences.js +118 -0
  500. package/dist/domains/skill/preferences.js.map +1 -0
  501. package/dist/domains/skill/snapshot.d.ts +8 -0
  502. package/dist/domains/skill/snapshot.d.ts.map +1 -0
  503. package/dist/domains/skill/snapshot.js +184 -0
  504. package/dist/domains/skill/snapshot.js.map +1 -0
  505. package/dist/domains/skill/types.d.ts +85 -0
  506. package/dist/domains/skill/types.d.ts.map +1 -0
  507. package/dist/domains/skill/types.js +2 -0
  508. package/dist/{core → domains/skill}/types.js.map +1 -1
  509. package/dist/{core → domains/skill}/uninstall.d.ts +2 -18
  510. package/dist/domains/skill/uninstall.d.ts.map +1 -0
  511. package/dist/{core → domains/skill}/uninstall.js +15 -66
  512. package/dist/domains/skill/uninstall.js.map +1 -0
  513. package/dist/domains/skill/validate.d.ts +3 -0
  514. package/dist/domains/skill/validate.d.ts.map +1 -0
  515. package/dist/domains/skill/validate.js +81 -0
  516. package/dist/domains/skill/validate.js.map +1 -0
  517. package/dist/domains/workflow-contract/builtins.d.ts +8 -0
  518. package/dist/domains/workflow-contract/builtins.d.ts.map +1 -0
  519. package/dist/domains/workflow-contract/builtins.js +229 -0
  520. package/dist/domains/workflow-contract/builtins.js.map +1 -0
  521. package/dist/domains/workflow-contract/hash.d.ts +3 -0
  522. package/dist/domains/workflow-contract/hash.d.ts.map +1 -0
  523. package/dist/domains/workflow-contract/hash.js +16 -0
  524. package/dist/domains/workflow-contract/hash.js.map +1 -0
  525. package/dist/domains/workflow-contract/index.d.ts +6 -0
  526. package/dist/domains/workflow-contract/index.d.ts.map +1 -0
  527. package/dist/domains/workflow-contract/index.js +5 -0
  528. package/dist/domains/workflow-contract/index.js.map +1 -0
  529. package/dist/domains/workflow-contract/normalize.d.ts +3 -0
  530. package/dist/domains/workflow-contract/normalize.d.ts.map +1 -0
  531. package/dist/domains/workflow-contract/normalize.js +146 -0
  532. package/dist/domains/workflow-contract/normalize.js.map +1 -0
  533. package/dist/domains/workflow-contract/types.d.ts +128 -0
  534. package/dist/domains/workflow-contract/types.d.ts.map +1 -0
  535. package/dist/domains/workflow-contract/types.js +2 -0
  536. package/dist/domains/workflow-contract/types.js.map +1 -0
  537. package/dist/domains/workflow-contract/validation.d.ts +3 -0
  538. package/dist/domains/workflow-contract/validation.d.ts.map +1 -0
  539. package/dist/domains/workflow-contract/validation.js +180 -0
  540. package/dist/domains/workflow-contract/validation.js.map +1 -0
  541. package/dist/platform/fs/file-system.d.ts.map +1 -0
  542. package/dist/platform/fs/file-system.js.map +1 -0
  543. package/dist/platform/install/detect.d.ts.map +1 -0
  544. package/dist/{core → platform/install}/detect.js +4 -3
  545. package/dist/platform/install/detect.js.map +1 -0
  546. package/dist/platform/install/platforms.d.ts.map +1 -0
  547. package/dist/{core → platform/install}/platforms.js +41 -0
  548. package/dist/platform/install/platforms.js.map +1 -0
  549. package/dist/platform/install/types.d.ts +3 -0
  550. package/dist/platform/install/types.d.ts.map +1 -0
  551. package/dist/platform/install/types.js +2 -0
  552. package/dist/platform/install/types.js.map +1 -0
  553. package/dist/platform/paths/repository-layout.d.ts +22 -0
  554. package/dist/platform/paths/repository-layout.d.ts.map +1 -0
  555. package/dist/platform/paths/repository-layout.js +11 -0
  556. package/dist/platform/paths/repository-layout.js.map +1 -0
  557. package/dist/platform/process/command-error.d.ts.map +1 -0
  558. package/dist/platform/process/command-error.js.map +1 -0
  559. package/dist/platform/process/shell-quote.d.ts +22 -0
  560. package/dist/platform/process/shell-quote.d.ts.map +1 -0
  561. package/dist/platform/process/shell-quote.js +34 -0
  562. package/dist/platform/process/shell-quote.js.map +1 -0
  563. package/dist/platform/version/version.d.ts.map +1 -0
  564. package/dist/{core → platform/version}/version.js +16 -3
  565. package/dist/platform/version/version.js.map +1 -0
  566. package/package.json +39 -13
  567. package/assets/skills/comet/scripts/comet-archive.sh +0 -311
  568. package/assets/skills/comet/scripts/comet-env.sh +0 -110
  569. package/assets/skills/comet/scripts/comet-guard.sh +0 -778
  570. package/assets/skills/comet/scripts/comet-handoff.sh +0 -390
  571. package/assets/skills/comet/scripts/comet-hook-guard.sh +0 -336
  572. package/assets/skills/comet/scripts/comet-state.sh +0 -1338
  573. package/assets/skills/comet/scripts/comet-yaml-validate.sh +0 -225
  574. package/dist/cli/index.js +0 -84
  575. package/dist/cli/index.js.map +0 -1
  576. package/dist/commands/doctor.d.ts.map +0 -1
  577. package/dist/commands/doctor.js.map +0 -1
  578. package/dist/commands/i18n.d.ts +0 -4
  579. package/dist/commands/i18n.d.ts.map +0 -1
  580. package/dist/commands/i18n.js.map +0 -1
  581. package/dist/commands/init.d.ts.map +0 -1
  582. package/dist/commands/init.js.map +0 -1
  583. package/dist/commands/status.d.ts.map +0 -1
  584. package/dist/commands/status.js +0 -108
  585. package/dist/commands/status.js.map +0 -1
  586. package/dist/commands/uninstall.d.ts.map +0 -1
  587. package/dist/commands/uninstall.js.map +0 -1
  588. package/dist/commands/update.d.ts.map +0 -1
  589. package/dist/commands/update.js.map +0 -1
  590. package/dist/core/codegraph.d.ts.map +0 -1
  591. package/dist/core/codegraph.js.map +0 -1
  592. package/dist/core/command-error.d.ts.map +0 -1
  593. package/dist/core/command-error.js.map +0 -1
  594. package/dist/core/detect.d.ts.map +0 -1
  595. package/dist/core/detect.js.map +0 -1
  596. package/dist/core/openspec.d.ts +0 -11
  597. package/dist/core/openspec.d.ts.map +0 -1
  598. package/dist/core/openspec.js.map +0 -1
  599. package/dist/core/platforms.d.ts.map +0 -1
  600. package/dist/core/platforms.js.map +0 -1
  601. package/dist/core/skills.d.ts +0 -58
  602. package/dist/core/skills.d.ts.map +0 -1
  603. package/dist/core/skills.js.map +0 -1
  604. package/dist/core/superpowers.d.ts.map +0 -1
  605. package/dist/core/superpowers.js.map +0 -1
  606. package/dist/core/types.d.ts +0 -2
  607. package/dist/core/types.d.ts.map +0 -1
  608. package/dist/core/uninstall.d.ts.map +0 -1
  609. package/dist/core/uninstall.js.map +0 -1
  610. package/dist/core/version.d.ts.map +0 -1
  611. package/dist/core/version.js.map +0 -1
  612. package/dist/utils/file-system.d.ts.map +0 -1
  613. package/dist/utils/file-system.js.map +0 -1
  614. /package/dist/{cli → app/cli}/index.d.ts +0 -0
  615. /package/dist/{commands → app/commands}/status.d.ts +0 -0
  616. /package/dist/{core → domains/bundle}/types.js +0 -0
  617. /package/dist/{utils → platform/fs}/file-system.d.ts +0 -0
  618. /package/dist/{utils → platform/fs}/file-system.js +0 -0
  619. /package/dist/{core → platform/install}/detect.d.ts +0 -0
  620. /package/dist/{core → platform/install}/platforms.d.ts +0 -0
  621. /package/dist/{core → platform/process}/command-error.d.ts +0 -0
  622. /package/dist/{core → platform/process}/command-error.js +0 -0
  623. /package/dist/{core → platform/version}/version.d.ts +0 -0
  624. /package/scripts/{postinstall.js → install/postinstall.js} +0 -0
@@ -0,0 +1,172 @@
1
+ import { createHash, randomUUID } from 'crypto';
2
+ import { promises as fs } from 'fs';
3
+ import path from 'path';
4
+ import { normalizeWorkflowDefinition, } from '../workflow-contract/index.js';
5
+ const FACTORY_PLAN_FIELDS = new Set([
6
+ 'goal',
7
+ 'preferredSkills',
8
+ 'skillCreatorIntent',
9
+ 'workflow',
10
+ 'deviations',
11
+ 'engineMode',
12
+ 'runnerMode',
13
+ 'mode',
14
+ 'sourceRoot',
15
+ 'defaultLocale',
16
+ 'locales',
17
+ 'engineEnabled',
18
+ ]);
19
+ function persistedFactoryPlan(plan) {
20
+ return {
21
+ schemaVersion: 1,
22
+ goal: plan.goal,
23
+ skillCreatorIntent: plan.skillCreatorIntent,
24
+ preferredSkills: plan.preferredSkills,
25
+ workflow: plan.workflowDefinition,
26
+ workflowDefinition: plan.workflowDefinition,
27
+ workflowProtocol: plan.workflowProtocol,
28
+ deviations: plan.deviations,
29
+ engineMode: plan.engineMode,
30
+ runnerMode: plan.runnerMode,
31
+ mode: plan.mode,
32
+ ...(plan.sourceRoot ? { sourceRoot: plan.sourceRoot } : {}),
33
+ defaultLocale: plan.defaultLocale,
34
+ locales: plan.locales,
35
+ engineEnabled: plan.engineEnabled,
36
+ };
37
+ }
38
+ export function hashBundleFactoryPlan(plan) {
39
+ return createHash('sha256')
40
+ .update(JSON.stringify(persistedFactoryPlan(plan), null, 2) + '\n')
41
+ .digest('hex');
42
+ }
43
+ function ensureStringArray(value, label) {
44
+ if (!Array.isArray(value) ||
45
+ value.some((item) => typeof item !== 'string' || item.length === 0)) {
46
+ throw new Error(`${label} must be a non-empty string array when provided`);
47
+ }
48
+ return value;
49
+ }
50
+ function dedupe(values) {
51
+ const seen = new Set();
52
+ const result = [];
53
+ for (const value of values) {
54
+ if (seen.has(value))
55
+ continue;
56
+ seen.add(value);
57
+ result.push(value);
58
+ }
59
+ return result;
60
+ }
61
+ function normalizeCallChain(skills, preferredSkills) {
62
+ const preferredIndex = new Map(preferredSkills.map((skill, index) => [skill, index]));
63
+ return skills.map((skill) => ({
64
+ skill,
65
+ preferenceIndex: preferredIndex.get(skill) ?? null,
66
+ }));
67
+ }
68
+ function assertKnownFactoryPlanFields(plan, absolutePath) {
69
+ const unknown = Object.keys(plan).filter((field) => !FACTORY_PLAN_FIELDS.has(field));
70
+ if (unknown.length === 0)
71
+ return;
72
+ throw new Error(`Invalid factory plan: ${absolutePath} unknown fields are not supported (${unknown.join(', ')})`);
73
+ }
74
+ function assertValidDeviations(value, absolutePath) {
75
+ if (value !== undefined &&
76
+ (!Array.isArray(value) ||
77
+ value.some((item) => !item ||
78
+ typeof item !== 'object' ||
79
+ typeof item.skill !== 'string' ||
80
+ typeof item.expectedIndex !== 'number' ||
81
+ typeof item.actualIndex !== 'number' ||
82
+ typeof item.reason !== 'string'))) {
83
+ throw new Error(`Invalid factory plan: ${absolutePath} deviations must be structured objects`);
84
+ }
85
+ }
86
+ export async function readBundleFactoryPlan(filePath) {
87
+ const absolutePath = path.resolve(filePath);
88
+ const value = JSON.parse(await fs.readFile(absolutePath, 'utf8'));
89
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
90
+ throw new Error(`Invalid factory plan: ${absolutePath}`);
91
+ }
92
+ const plan = value;
93
+ assertKnownFactoryPlanFields(plan, absolutePath);
94
+ if (typeof plan.goal !== 'string' || plan.goal.length === 0) {
95
+ throw new Error(`Invalid factory plan: ${absolutePath} must include goal`);
96
+ }
97
+ if (!plan.workflow || typeof plan.workflow !== 'object' || Array.isArray(plan.workflow)) {
98
+ throw new Error(`Invalid factory plan: ${absolutePath} must include workflow`);
99
+ }
100
+ normalizeWorkflowDefinition(plan.workflow);
101
+ if (plan.preferredSkills !== undefined) {
102
+ ensureStringArray(plan.preferredSkills, 'preferredSkills');
103
+ }
104
+ if (plan.locales !== undefined) {
105
+ ensureStringArray(plan.locales, 'locales');
106
+ }
107
+ assertValidDeviations(plan.deviations, absolutePath);
108
+ return plan;
109
+ }
110
+ export function normalizeBundleFactoryPlan(options) {
111
+ const { plan } = options;
112
+ assertKnownFactoryPlanFields(plan, '<inline factory plan>');
113
+ const workflow = normalizeWorkflowDefinition(plan.workflow);
114
+ const preferredSkills = dedupe([
115
+ ...(plan.preferredSkills ?? options.projectPreferredSkills ?? []),
116
+ ...workflow.requiredSkills,
117
+ ]);
118
+ const planMode = plan.mode ?? 'create';
119
+ if (planMode === 'optimize' && !plan.sourceRoot) {
120
+ throw new Error('factory plan sourceRoot is required for optimize mode');
121
+ }
122
+ const skillCreatorIntent = plan.skillCreatorIntent ??
123
+ (workflow.protocol.kind === 'comet-five-phase-overlay'
124
+ ? 'customize-comet'
125
+ : planMode === 'optimize'
126
+ ? 'upgrade-existing'
127
+ : 'new-skill');
128
+ const defaultLocale = plan.defaultLocale ?? 'en';
129
+ const locales = dedupe(plan.locales ?? [defaultLocale]);
130
+ const engineMode = plan.engineMode ?? 'deterministic';
131
+ return {
132
+ goal: plan.goal,
133
+ skillCreatorIntent,
134
+ preferredSkills,
135
+ callChain: normalizeCallChain(workflow.requiredSkills, preferredSkills),
136
+ workflowDefinition: workflow.input,
137
+ workflowProtocol: workflow.protocol,
138
+ deviations: structuredClone(plan.deviations ?? []),
139
+ engineMode,
140
+ runnerMode: plan.runnerMode ?? 'standalone',
141
+ mode: planMode,
142
+ ...(plan.sourceRoot ? { sourceRoot: plan.sourceRoot } : {}),
143
+ defaultLocale,
144
+ locales,
145
+ engineEnabled: plan.engineEnabled ?? engineMode !== 'none',
146
+ };
147
+ }
148
+ function factoryPlanPath(projectRoot, name) {
149
+ if (!/^[A-Za-z0-9][A-Za-z0-9._-]*$/u.test(name)) {
150
+ throw new Error(`Invalid Bundle name: ${name}`);
151
+ }
152
+ return path.resolve(projectRoot, '.comet', 'bundle-factory-plans', name, 'plan.json');
153
+ }
154
+ export async function writeBundleFactoryPlanArtifact(options) {
155
+ const planPath = factoryPlanPath(options.projectRoot, options.name);
156
+ const document = persistedFactoryPlan(options.plan);
157
+ const content = JSON.stringify(document, null, 2) + '\n';
158
+ const temporary = path.join(path.dirname(planPath), `.plan.${randomUUID()}.tmp`);
159
+ await fs.mkdir(path.dirname(planPath), { recursive: true });
160
+ try {
161
+ await fs.writeFile(temporary, content, { encoding: 'utf8', flag: 'wx' });
162
+ await fs.rename(temporary, planPath);
163
+ }
164
+ finally {
165
+ await fs.rm(temporary, { force: true });
166
+ }
167
+ return {
168
+ planPath,
169
+ planHash: hashBundleFactoryPlan(options.plan),
170
+ };
171
+ }
172
+ //# sourceMappingURL=factory-plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory-plan.js","sourceRoot":"","sources":["../../../domains/bundle/factory-plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AAQxB,OAAO,EACL,2BAA2B,GAG5B,MAAM,+BAA+B,CAAC;AAuCvC,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,MAAM;IACN,iBAAiB;IACjB,oBAAoB;IACpB,UAAU;IACV,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,MAAM;IACN,YAAY;IACZ,eAAe;IACf,SAAS;IACT,eAAe;CAChB,CAAC,CAAC;AAEH,SAAS,oBAAoB,CAAC,IAAiC;IAC7D,OAAO;QACL,aAAa,EAAE,CAAC;QAChB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;QAC3C,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,QAAQ,EAAE,IAAI,CAAC,kBAAkB;QACjC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;QAC3C,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,aAAa,EAAE,IAAI,CAAC,aAAa;KAClC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAiC;IACrE,OAAO,UAAU,CAAC,QAAQ,CAAC;SACxB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;SAClE,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc,EAAE,KAAa;IACtD,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,EACnE,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,iDAAiD,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,MAAM,CAAC,MAAgB;IAC9B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,SAAS;QAC9B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,kBAAkB,CACzB,MAAgB,EAChB,eAAyB;IAEzB,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACtF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5B,KAAK;QACL,eAAe,EAAE,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI;KACnD,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,4BAA4B,CAAC,IAA6B,EAAE,YAAoB;IACvF,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACrF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACjC,MAAM,IAAI,KAAK,CACb,yBAAyB,YAAY,sCAAsC,OAAO,CAAC,IAAI,CACrF,IAAI,CACL,GAAG,CACL,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc,EAAE,YAAoB;IACjE,IACE,KAAK,KAAK,SAAS;QACnB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACpB,KAAK,CAAC,IAAI,CACR,CAAC,IAAI,EAAE,EAAE,CACP,CAAC,IAAI;gBACL,OAAO,IAAI,KAAK,QAAQ;gBACxB,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;gBAC9B,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ;gBACtC,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ;gBACpC,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAClC,CAAC,EACJ,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,yBAAyB,YAAY,wCAAwC,CAAC,CAAC;IACjG,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,QAAgB;IAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAY,CAAC;IAC7E,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,yBAAyB,YAAY,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,IAAI,GAAG,KAAiE,CAAC;IAC/E,4BAA4B,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACjD,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,yBAAyB,YAAY,oBAAoB,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxF,MAAM,IAAI,KAAK,CAAC,yBAAyB,YAAY,wBAAwB,CAAC,CAAC;IACjF,CAAC;IACD,2BAA2B,CAAC,IAAI,CAAC,QAAmC,CAAC,CAAC;IACtE,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QACvC,iBAAiB,CAAC,IAAI,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC/B,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC7C,CAAC;IACD,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACrD,OAAO,IAA6B,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,OAG1C;IACC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IACzB,4BAA4B,CAAC,IAA0C,EAAE,uBAAuB,CAAC,CAAC;IAClG,MAAM,QAAQ,GAAG,2BAA2B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5D,MAAM,eAAe,GAAG,MAAM,CAAC;QAC7B,GAAG,CAAC,IAAI,CAAC,eAAe,IAAI,OAAO,CAAC,sBAAsB,IAAI,EAAE,CAAC;QACjE,GAAG,QAAQ,CAAC,cAAc;KAC3B,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC;IACvC,IAAI,QAAQ,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,kBAAkB,GACtB,IAAI,CAAC,kBAAkB;QACvB,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,0BAA0B;YACpD,CAAC,CAAC,iBAAiB;YACnB,CAAC,CAAC,QAAQ,KAAK,UAAU;gBACvB,CAAC,CAAC,kBAAkB;gBACpB,CAAC,CAAC,WAAW,CAAC,CAAC;IACrB,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC;IACjD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IACxD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,eAAe,CAAC;IAEtD,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,kBAAkB;QAClB,eAAe;QACf,SAAS,EAAE,kBAAkB,CAAC,QAAQ,CAAC,cAAc,EAAE,eAAe,CAAC;QACvE,kBAAkB,EAAE,QAAQ,CAAC,KAAK;QAClC,gBAAgB,EAAE,QAAQ,CAAC,QAAQ;QACnC,UAAU,EAAE,eAAe,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;QAClD,UAAU;QACV,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,YAAY;QAC3C,IAAI,EAAE,QAAQ;QACd,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,aAAa;QACb,OAAO;QACP,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,UAAU,KAAK,MAAM;KAC3D,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,WAAmB,EAAE,IAAY;IACxD,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,sBAAsB,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;AACxF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,OAIpD;IACC,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IACzD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,SAAS,UAAU,EAAE,MAAM,CAAC,CAAC;IACjF,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACzE,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO;QACL,QAAQ;QACR,QAAQ,EAAE,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC;KAC9C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { type SkillCreatorPlanSummary } from './user-facing.js';
2
+ import type { BundleFactoryCallChainItem, BundleFactoryComposition, BundleFactoryProposalAction, BundleFactoryProposalSummary, BundleFactoryResolvedSkill } from './types.js';
3
+ import type { WorkflowProtocol } from '../workflow-contract/index.js';
4
+ export interface BundleFactoryProposal {
5
+ schemaVersion: 1;
6
+ name: string;
7
+ goal: string;
8
+ preference: {
9
+ mode: 'advisory' | 'strict';
10
+ source: string | null;
11
+ hash: string | null;
12
+ warnings: unknown[];
13
+ };
14
+ callChain: BundleFactoryCallChainItem[];
15
+ workflowProtocol?: WorkflowProtocol;
16
+ resolvedSkills: BundleFactoryResolvedSkill[];
17
+ composition: BundleFactoryComposition;
18
+ blockers: string[];
19
+ warnings: string[];
20
+ canGenerate: boolean;
21
+ userSummary: BundleFactoryProposalSummary;
22
+ skillCreatorSummary: SkillCreatorPlanSummary;
23
+ actions: BundleFactoryProposalAction[];
24
+ proposalHash: string;
25
+ }
26
+ export declare function buildBundleFactoryProposal(options: {
27
+ projectRoot: string;
28
+ name: string;
29
+ filePath: string;
30
+ }): Promise<BundleFactoryProposal>;
31
+ //# sourceMappingURL=factory-proposal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory-proposal.d.ts","sourceRoot":"","sources":["../../../domains/bundle/factory-proposal.ts"],"names":[],"mappings":"AAOA,OAAO,EAAgC,KAAK,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC9F,OAAO,KAAK,EACV,0BAA0B,EAC1B,wBAAwB,EACxB,2BAA2B,EAC3B,4BAA4B,EAC5B,0BAA0B,EAC3B,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGtE,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,CAAC,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE;QACV,IAAI,EAAE,UAAU,GAAG,QAAQ,CAAC;QAC5B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,QAAQ,EAAE,OAAO,EAAE,CAAC;KACrB,CAAC;IACF,SAAS,EAAE,0BAA0B,EAAE,CAAC;IACxC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,cAAc,EAAE,0BAA0B,EAAE,CAAC;IAC7C,WAAW,EAAE,wBAAwB,CAAC;IACtC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,4BAA4B,CAAC;IAC1C,mBAAmB,EAAE,uBAAuB,CAAC;IAC7C,OAAO,EAAE,2BAA2B,EAAE,CAAC;IACvC,YAAY,EAAE,MAAM,CAAC;CACtB;AA0ED,wBAAsB,0BAA0B,CAAC,OAAO,EAAE;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAoKjC"}
@@ -0,0 +1,225 @@
1
+ import { createHash } from 'crypto';
2
+ import path from 'path';
3
+ import { discoverBundleCandidates } from './candidates.js';
4
+ import { composeBundleFactoryPlan } from './factory-compose.js';
5
+ import { normalizeBundleFactoryPlan, readBundleFactoryPlan } from './factory-plan.js';
6
+ import { readBundleSkillPreferences } from './preferences.js';
7
+ import { buildSkillCreatorPlanSummary } from './user-facing.js';
8
+ import { COMET_FIVE_PHASE_NODES } from '../workflow-contract/builtins.js';
9
+ function proposalHash(value) {
10
+ return createHash('sha256').update(JSON.stringify(value)).digest('hex');
11
+ }
12
+ function generatedControlPlane() {
13
+ return [
14
+ 'SKILL.md',
15
+ 'scripts/',
16
+ 'rules/',
17
+ 'hooks/',
18
+ 'reference/',
19
+ 'comet/skill.yaml',
20
+ 'comet/guardrails.yaml',
21
+ 'comet/checks.yaml',
22
+ 'comet/eval.yaml',
23
+ 'bundle.yaml',
24
+ ];
25
+ }
26
+ function validationPlan() {
27
+ return ['quick smoke eval', 'generated Skill manifest eval', 'publish readiness review'];
28
+ }
29
+ function builtInCandidate(projectRoot, skill, preferenceIndex) {
30
+ const source = {
31
+ name: skill,
32
+ preferenceIndex,
33
+ platform: 'builtin',
34
+ scope: 'builtin',
35
+ origin: 'builtin',
36
+ factory: {
37
+ query: skill,
38
+ },
39
+ root: path.join(projectRoot, '.comet', '__bundle_builtin__', skill),
40
+ description: `Built-in Comet workflow step: ${skill}.`,
41
+ skillMd: `# ${skill}\n`,
42
+ references: [],
43
+ scripts: [],
44
+ hash: `builtin:${skill}`,
45
+ };
46
+ return {
47
+ name: skill,
48
+ preferenceIndex,
49
+ status: 'available',
50
+ sources: [source],
51
+ };
52
+ }
53
+ const WORKFLOW_CONTRACT_BUILTIN_SKILLS = new Set(COMET_FIVE_PHASE_NODES.map((node) => node.implementation.skill));
54
+ function isWorkflowContractBuiltinSkill(skill) {
55
+ return WORKFLOW_CONTRACT_BUILTIN_SKILLS.has(skill);
56
+ }
57
+ function applyBuiltInCandidates(projectRoot, candidates) {
58
+ return candidates.map((candidate) => {
59
+ if (!isWorkflowContractBuiltinSkill(candidate.name) || candidate.status !== 'missing') {
60
+ return candidate;
61
+ }
62
+ return builtInCandidate(projectRoot, candidate.name, candidate.preferenceIndex);
63
+ });
64
+ }
65
+ export async function buildBundleFactoryProposal(options) {
66
+ const projectRoot = path.resolve(options.projectRoot);
67
+ const projectPreferences = await readBundleSkillPreferences(projectRoot);
68
+ const plan = normalizeBundleFactoryPlan({
69
+ plan: await readBundleFactoryPlan(path.resolve(options.filePath)),
70
+ projectPreferredSkills: projectPreferences?.names ?? null,
71
+ });
72
+ const candidates = applyBuiltInCandidates(projectRoot, await discoverBundleCandidates({
73
+ projectRoot,
74
+ preferences: plan.preferredSkills.length > 0 ? plan.preferredSkills : null,
75
+ }));
76
+ const resolvedSkills = candidates.map((candidate) => ({
77
+ query: candidate.name,
78
+ preferenceIndex: candidate.preferenceIndex,
79
+ status: candidate.status,
80
+ sources: candidate.sources,
81
+ }));
82
+ const composed = await composeBundleFactoryPlan({
83
+ entrySkills: plan.callChain.map((item) => item.skill),
84
+ preferredSkills: plan.preferredSkills,
85
+ resolvedSkills,
86
+ });
87
+ const callChain = composed.callChain.length > 0 ? composed.callChain : plan.callChain;
88
+ const blockers = [
89
+ ...resolvedSkills
90
+ .filter((skill) => skill.status === 'missing' || skill.status === 'ambiguous')
91
+ .map((skill) => `[candidate] ${skill.query} (${skill.status})`),
92
+ ...composed.composition.issues.map((issue) => `[composition] ${issue.message}`),
93
+ ];
94
+ const policies = projectPreferences?.preferences.policies;
95
+ if (policies?.scripts === 'deny')
96
+ blockers.push('[policy] preference policy denies scripts');
97
+ if (policies?.hooks === 'deny')
98
+ blockers.push('[policy] preference policy denies hooks');
99
+ const userSummary = {
100
+ title: `Create ${options.name} as a Comet-native Skill`,
101
+ goal: plan.goal,
102
+ reusedSkills: resolvedSkills.map((skill) => ({
103
+ skill: skill.query,
104
+ status: skill.status,
105
+ sourceCount: skill.sources.length,
106
+ preferenceIndex: skill.preferenceIndex,
107
+ fromProjectPreference: skill.preferenceIndex !== null,
108
+ })),
109
+ generatedControlPlane: generatedControlPlane(),
110
+ validationPlan: validationPlan(),
111
+ requiredConfirmations: [
112
+ {
113
+ id: 'generate-scripts',
114
+ label: 'Allow Comet to generate scripts as part of the control plane',
115
+ required: true,
116
+ reason: 'Scripts let the generated Skill perform deterministic checks and recovery steps.',
117
+ },
118
+ {
119
+ id: 'generate-rules',
120
+ label: 'Allow Comet to generate orchestration rules',
121
+ required: true,
122
+ reason: 'Rules keep the Agent aligned with the generated workflow.',
123
+ },
124
+ {
125
+ id: 'generate-hooks',
126
+ label: 'Allow Comet to generate portable hook descriptors',
127
+ required: true,
128
+ reason: 'Hooks guard unsafe progression and are compiled per target platform during distribution.',
129
+ },
130
+ {
131
+ id: 'run-eval',
132
+ label: 'Run benchmark before publish',
133
+ required: true,
134
+ reason: 'Benchmark evidence is required before the candidate can become publishable.',
135
+ },
136
+ ],
137
+ preferenceNotes: [
138
+ ...plan.deviations.map((item) => `${item.skill}: ${item.reason}`),
139
+ ...blockers.filter((item) => item.startsWith('[policy]')),
140
+ ],
141
+ };
142
+ const skillCreatorSummary = buildSkillCreatorPlanSummary({
143
+ intent: plan.skillCreatorIntent,
144
+ skillName: options.name,
145
+ goal: plan.goal,
146
+ workflow: {
147
+ kind: plan.workflowProtocol.kind,
148
+ nodes: plan.workflowProtocol.nodes
149
+ .filter((node) => !node.disabled)
150
+ .map((node) => ({
151
+ id: node.id,
152
+ label: node.label,
153
+ kind: node.kind,
154
+ implementationSkill: node.implementation.skill,
155
+ requiredSkills: node.requiredSkillCalls.map((binding) => binding.skill),
156
+ outputSchemas: node.outputSchemas,
157
+ })),
158
+ outputSchemas: plan.workflowProtocol.outputSchemas.map((schema) => schema.id),
159
+ },
160
+ retained: [],
161
+ additions: plan.workflowProtocol.nodes
162
+ .filter((node) => !node.disabled)
163
+ .map((node) => `${node.id}: ${node.implementation.skill}`),
164
+ replacements: plan.workflowProtocol.nodes
165
+ .filter((node) => node.implementation.operation === 'override')
166
+ .map((node) => `${node.id}: ${node.implementation.skill}`),
167
+ disabled: plan.workflowProtocol.nodes.filter((node) => node.disabled).map((node) => node.id),
168
+ rejected: blockers,
169
+ generated: generatedControlPlane(),
170
+ validation: validationPlan(),
171
+ install: ['Install/enable into the current Agent after validation and preview.'],
172
+ advanced: [
173
+ `Preference mode: ${projectPreferences?.preferences.mode ?? 'advisory'}`,
174
+ 'Skill Creator proposal hash will be recorded after confirmation.',
175
+ ],
176
+ });
177
+ const canGenerate = blockers.length === 0;
178
+ const actions = [
179
+ ...(canGenerate
180
+ ? [
181
+ {
182
+ id: 'confirm-generate',
183
+ label: 'Confirm and initialize generation',
184
+ command: `comet creator init ${options.name} --file ${path.resolve(options.filePath)} --confirmed-proposal`,
185
+ writesState: true,
186
+ },
187
+ ]
188
+ : []),
189
+ {
190
+ id: 'revise-proposal',
191
+ label: 'Revise the plan before generating',
192
+ command: 'Ask /comet-any to revise the goal, preferences, or candidate choices',
193
+ writesState: false,
194
+ },
195
+ {
196
+ id: 'cancel',
197
+ label: 'Cancel without writing Bundle state',
198
+ command: 'No command',
199
+ writesState: false,
200
+ },
201
+ ];
202
+ const proposal = {
203
+ schemaVersion: 1,
204
+ name: options.name,
205
+ goal: plan.goal,
206
+ preference: {
207
+ mode: projectPreferences?.preferences.mode ?? 'advisory',
208
+ source: projectPreferences?.path ?? null,
209
+ hash: projectPreferences?.hash ?? null,
210
+ warnings: projectPreferences?.warnings ?? [],
211
+ },
212
+ callChain,
213
+ ...(plan.workflowProtocol ? { workflowProtocol: plan.workflowProtocol } : {}),
214
+ resolvedSkills,
215
+ composition: composed.composition,
216
+ blockers,
217
+ warnings: plan.deviations.map((item) => `[deviation] ${item.skill}: ${item.reason}`),
218
+ canGenerate,
219
+ userSummary,
220
+ skillCreatorSummary,
221
+ actions,
222
+ };
223
+ return { ...proposal, proposalHash: proposalHash(proposal) };
224
+ }
225
+ //# sourceMappingURL=factory-proposal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory-proposal.js","sourceRoot":"","sources":["../../../domains/bundle/factory-proposal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { BundleAuthoringState } from './types.js';
2
+ export interface ResolveBundleFactoryCandidateOptions {
3
+ projectRoot: string;
4
+ name: string;
5
+ candidate: string;
6
+ source?: string;
7
+ ignoreMissing?: boolean;
8
+ reason?: string;
9
+ }
10
+ export declare function resolveBundleFactoryCandidate(options: ResolveBundleFactoryCandidateOptions): Promise<BundleAuthoringState>;
11
+ //# sourceMappingURL=factory-resolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory-resolve.d.ts","sourceRoot":"","sources":["../../../domains/bundle/factory-resolve.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD,MAAM,WAAW,oCAAoC;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA0DD,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,oCAAoC,GAC5C,OAAO,CAAC,oBAAoB,CAAC,CAoF/B"}
@@ -0,0 +1,121 @@
1
+ import { promises as fs } from 'fs';
2
+ import path from 'path';
3
+ import { reconcileBundleAuthoringState, writeBundleAuthoringState } from './state.js';
4
+ async function canonicalPathForComparison(targetPath) {
5
+ const resolved = path.resolve(targetPath);
6
+ try {
7
+ return await fs.realpath(resolved);
8
+ }
9
+ catch {
10
+ return resolved;
11
+ }
12
+ }
13
+ async function candidateSelector(source, selector, projectRoot) {
14
+ if (source.hash === selector)
15
+ return true;
16
+ const selectedPath = path.resolve(projectRoot, selector);
17
+ const sourceRoot = path.resolve(source.root);
18
+ if (sourceRoot === selectedPath)
19
+ return true;
20
+ return ((await canonicalPathForComparison(sourceRoot)) ===
21
+ (await canonicalPathForComparison(selectedPath)));
22
+ }
23
+ function invalidateGeneratedFactoryState(state) {
24
+ const updated = {
25
+ ...state,
26
+ status: 'draft',
27
+ currentHash: null,
28
+ factory: state.factory
29
+ ? {
30
+ ...state.factory,
31
+ }
32
+ : undefined,
33
+ };
34
+ if (updated.factory) {
35
+ delete updated.factory.generatedSkillPackage;
36
+ delete updated.factory.composition;
37
+ delete updated.factory.proposalConfirmation;
38
+ }
39
+ delete updated.eval;
40
+ delete updated.review;
41
+ delete updated.ready;
42
+ delete updated.conflict;
43
+ return updated;
44
+ }
45
+ function withoutCandidate(sources, candidate) {
46
+ return sources.filter((source) => source.factory?.query !== candidate && source.name !== candidate);
47
+ }
48
+ export async function resolveBundleFactoryCandidate(options) {
49
+ const projectRoot = path.resolve(options.projectRoot);
50
+ if (!options.candidate)
51
+ throw new Error('--candidate is required');
52
+ if (Boolean(options.source) === Boolean(options.ignoreMissing)) {
53
+ throw new Error('Pass exactly one of --source or --ignore-missing');
54
+ }
55
+ const state = await reconcileBundleAuthoringState(projectRoot, options.name);
56
+ if (!state.factory)
57
+ throw new Error(`Bundle ${state.name} does not have Skill Creator metadata`);
58
+ const target = state.factory.resolvedSkills.find((skill) => skill.query === options.candidate);
59
+ if (!target)
60
+ throw new Error(`Skill Creator candidate not found: ${options.candidate}`);
61
+ let updated = invalidateGeneratedFactoryState(state);
62
+ const factory = updated.factory;
63
+ if (options.source) {
64
+ const matches = [];
65
+ for (const source of target.sources) {
66
+ if (await candidateSelector(source, options.source, projectRoot)) {
67
+ matches.push(source);
68
+ }
69
+ }
70
+ if (matches.length === 0) {
71
+ throw new Error(`No source for ${options.candidate} matches ${options.source}`);
72
+ }
73
+ if (matches.length > 1) {
74
+ throw new Error(`Source selector is ambiguous for ${options.candidate}: ${options.source}`);
75
+ }
76
+ const selected = matches[0];
77
+ factory.resolvedSkills = factory.resolvedSkills.map((skill) => skill.query === options.candidate
78
+ ? {
79
+ ...skill,
80
+ status: 'available',
81
+ sources: [selected],
82
+ }
83
+ : skill);
84
+ updated = {
85
+ ...updated,
86
+ candidates: [...withoutCandidate(updated.candidates, options.candidate), selected],
87
+ };
88
+ }
89
+ else {
90
+ if (target.status !== 'missing') {
91
+ throw new Error(`--ignore-missing can only be used for missing candidates: ${options.candidate}`);
92
+ }
93
+ if (!options.reason || options.reason.trim().length === 0) {
94
+ throw new Error('--reason is required when ignoring a missing candidate');
95
+ }
96
+ const remainingCallChain = factory.callChain.filter((item) => item.skill !== options.candidate);
97
+ if (remainingCallChain.length === 0) {
98
+ throw new Error(`Cannot ignore the only call-chain Skill: ${options.candidate}`);
99
+ }
100
+ const expectedIndex = target.preferenceIndex ?? factory.preferredSkills.indexOf(options.candidate);
101
+ factory.preferredSkills = factory.preferredSkills.filter((skill) => skill !== options.candidate);
102
+ factory.resolvedSkills = factory.resolvedSkills.filter((skill) => skill.query !== options.candidate);
103
+ factory.callChain = remainingCallChain;
104
+ factory.deviations = [
105
+ ...factory.deviations.filter((deviation) => !(deviation.skill === options.candidate && deviation.actualIndex === -1)),
106
+ {
107
+ skill: options.candidate,
108
+ expectedIndex,
109
+ actualIndex: -1,
110
+ reason: options.reason.trim(),
111
+ },
112
+ ];
113
+ updated = {
114
+ ...updated,
115
+ candidates: withoutCandidate(updated.candidates, options.candidate),
116
+ };
117
+ }
118
+ await writeBundleAuthoringState(projectRoot, updated);
119
+ return updated;
120
+ }
121
+ //# sourceMappingURL=factory-resolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory-resolve.js","sourceRoot":"","sources":["../../../domains/bundle/factory-resolve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { BundleAuthoringState, BundleFactoryMetadata } from './types.js';
2
+ export declare function composeFactoryMetadata(name: string, factory: BundleFactoryMetadata): Promise<BundleFactoryMetadata>;
3
+ export declare function generateBundleDraftFromFactoryState(options: {
4
+ projectRoot: string;
5
+ state: BundleAuthoringState;
6
+ }): Promise<BundleAuthoringState>;
7
+ export declare function initializeBundleFactoryState(options: {
8
+ projectRoot: string;
9
+ name: string;
10
+ filePath: string;
11
+ confirmedProposal?: boolean;
12
+ }): Promise<BundleAuthoringState>;
13
+ export declare function assertFactoryProposalConfirmed(state: {
14
+ name: string;
15
+ factory?: BundleFactoryMetadata;
16
+ }): void;
17
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../domains/bundle/factory.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAkB,MAAM,YAAY,CAAC;AA8S9F,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,qBAAqB,CAAC,CAiBhC;AAED,wBAAsB,mCAAmC,CAAC,OAAO,EAAE;IACjE,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,oBAAoB,CAAC;CAC7B,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAqGhC;AAED,wBAAsB,4BAA4B,CAAC,OAAO,EAAE;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAiJhC;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,qBAAqB,CAAC;CACjC,GAAG,IAAI,CAMP"}