agents-inc 0.152.0 → 0.153.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 (440) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +44 -48
  3. package/dist/{chunk-LDP5ASDM.js → chunk-2HC2SNRP.js} +2 -15
  4. package/dist/chunk-2HC2SNRP.js.map +1 -0
  5. package/dist/{chunk-WKTHWQKM.js → chunk-35VOK7XE.js} +1338 -2573
  6. package/dist/chunk-35VOK7XE.js.map +1 -0
  7. package/dist/{chunk-SX5H6TSC.js → chunk-4VYALFQZ.js} +11 -8
  8. package/dist/chunk-4VYALFQZ.js.map +1 -0
  9. package/dist/{chunk-KXYVJGJP.js → chunk-6CNRMCFM.js} +3 -2
  10. package/dist/{chunk-KXYVJGJP.js.map → chunk-6CNRMCFM.js.map} +1 -1
  11. package/dist/{chunk-LZ52XEPR.js → chunk-ACKC577F.js} +7 -6
  12. package/dist/chunk-ACKC577F.js.map +1 -0
  13. package/dist/{chunk-XHUODHZ4.js → chunk-BMGBA6HJ.js} +22 -49
  14. package/dist/chunk-BMGBA6HJ.js.map +1 -0
  15. package/dist/{chunk-FVDKAVOL.js → chunk-EFU6P3B7.js} +18 -51
  16. package/dist/chunk-EFU6P3B7.js.map +1 -0
  17. package/dist/{chunk-STMHDOZD.js → chunk-F7Z5I6GU.js} +12 -9
  18. package/dist/chunk-F7Z5I6GU.js.map +1 -0
  19. package/dist/{chunk-E5X6RJ4E.js → chunk-FIHTAFST.js} +29 -26
  20. package/dist/chunk-FIHTAFST.js.map +1 -0
  21. package/dist/{chunk-QZZJFYUQ.js → chunk-FRWKCE6R.js} +3 -3
  22. package/dist/chunk-FRWKCE6R.js.map +1 -0
  23. package/dist/{chunk-5UWKOOIS.js → chunk-HEBPKK5L.js} +129 -195
  24. package/dist/chunk-HEBPKK5L.js.map +1 -0
  25. package/dist/{chunk-MJ2KHG24.js → chunk-IO4VEW5U.js} +6 -6
  26. package/dist/{chunk-MJ2KHG24.js.map → chunk-IO4VEW5U.js.map} +1 -1
  27. package/dist/{chunk-TUPYW2IQ.js → chunk-JC7DBPRD.js} +9 -12
  28. package/dist/chunk-JC7DBPRD.js.map +1 -0
  29. package/dist/{chunk-5GUOIJSG.js → chunk-JFAUQDZM.js} +3 -15
  30. package/dist/chunk-JFAUQDZM.js.map +1 -0
  31. package/dist/{chunk-ZL7PFNHN.js → chunk-K3O3YQYG.js} +2 -2
  32. package/dist/{chunk-SKQWRUPX.js → chunk-K7PJDWER.js} +59 -33
  33. package/dist/chunk-K7PJDWER.js.map +1 -0
  34. package/dist/{chunk-MVR3SYMN.js → chunk-KET3EVGX.js} +4 -3
  35. package/dist/{chunk-MVR3SYMN.js.map → chunk-KET3EVGX.js.map} +1 -1
  36. package/dist/{chunk-MWG4VU64.js → chunk-M5HSTNYU.js} +50 -56
  37. package/dist/chunk-M5HSTNYU.js.map +1 -0
  38. package/dist/{chunk-TJJPWUMA.js → chunk-NSJ2S7R5.js} +3 -2
  39. package/dist/{chunk-TJJPWUMA.js.map → chunk-NSJ2S7R5.js.map} +1 -1
  40. package/dist/{chunk-IHUY4M22.js → chunk-NXGMM5YN.js} +4 -4
  41. package/dist/chunk-NXQAY5U7.js +18441 -0
  42. package/dist/chunk-NXQAY5U7.js.map +1 -0
  43. package/dist/{chunk-Q2KG7UV3.js → chunk-OJJLYHM3.js} +2 -1
  44. package/dist/{chunk-Q2KG7UV3.js.map → chunk-OJJLYHM3.js.map} +1 -1
  45. package/dist/{chunk-PZIZNMHK.js → chunk-ORJ5Y222.js} +159 -138
  46. package/dist/chunk-ORJ5Y222.js.map +1 -0
  47. package/dist/{chunk-NR3OZGL4.js → chunk-OZXAJNLA.js} +2 -1
  48. package/dist/{chunk-NR3OZGL4.js.map → chunk-OZXAJNLA.js.map} +1 -1
  49. package/dist/{chunk-MM7CTTAV.js → chunk-Q5FLW4JG.js} +2 -2
  50. package/dist/{chunk-MM7CTTAV.js.map → chunk-Q5FLW4JG.js.map} +1 -1
  51. package/dist/{chunk-GRVKW3CC.js → chunk-R4SEU3DF.js} +3 -2
  52. package/dist/{chunk-GRVKW3CC.js.map → chunk-R4SEU3DF.js.map} +1 -1
  53. package/dist/{chunk-76ADG7LQ.js → chunk-R54KIGN2.js} +8 -22
  54. package/dist/chunk-R54KIGN2.js.map +1 -0
  55. package/dist/{chunk-SBHBBZKF.js → chunk-REKOWTIB.js} +25 -120
  56. package/dist/chunk-REKOWTIB.js.map +1 -0
  57. package/dist/chunk-TY6CAOL7.js +40 -0
  58. package/dist/chunk-TY6CAOL7.js.map +1 -0
  59. package/dist/{chunk-BNSRA6HL.js → chunk-U2DNAHFE.js} +39 -176
  60. package/dist/chunk-U2DNAHFE.js.map +1 -0
  61. package/dist/{chunk-PMM2MYMA.js → chunk-U2YSGBHA.js} +624 -349
  62. package/dist/chunk-U2YSGBHA.js.map +1 -0
  63. package/dist/{chunk-DTSG5XZB.js → chunk-V3ENMW7G.js} +3 -3
  64. package/dist/{chunk-L7SZXUBJ.js → chunk-VECFAKM5.js} +7 -6
  65. package/dist/{chunk-L7SZXUBJ.js.map → chunk-VECFAKM5.js.map} +1 -1
  66. package/dist/chunk-VGEBYCQZ.js +59 -0
  67. package/dist/chunk-VGEBYCQZ.js.map +1 -0
  68. package/dist/chunk-VZRO7RYT.js +3694 -0
  69. package/dist/chunk-VZRO7RYT.js.map +1 -0
  70. package/dist/{chunk-LASI35KT.js → chunk-WDAO3RUY.js} +14 -28
  71. package/dist/chunk-WDAO3RUY.js.map +1 -0
  72. package/dist/{chunk-MQ7FLIYS.js → chunk-WG6V6VJV.js} +3 -2
  73. package/dist/{chunk-MQ7FLIYS.js.map → chunk-WG6V6VJV.js.map} +1 -1
  74. package/dist/chunk-X5XJ6WKO.js +284 -0
  75. package/dist/chunk-X5XJ6WKO.js.map +1 -0
  76. package/dist/{chunk-RNJWAKMO.js → chunk-XGMOXMS4.js} +9 -8
  77. package/dist/chunk-XGMOXMS4.js.map +1 -0
  78. package/dist/{chunk-IUQBOCSU.js → chunk-ZBPEFQ4G.js} +2 -1
  79. package/dist/{chunk-IUQBOCSU.js.map → chunk-ZBPEFQ4G.js.map} +1 -1
  80. package/dist/{chunk-QRDTLVXG.js → chunk-ZNDLUWWD.js} +9 -22
  81. package/dist/chunk-ZNDLUWWD.js.map +1 -0
  82. package/dist/commands/build/marketplace.js +114 -35
  83. package/dist/commands/build/marketplace.js.map +1 -1
  84. package/dist/commands/build/plugins.js +9 -10
  85. package/dist/commands/build/plugins.js.map +1 -1
  86. package/dist/commands/compile.js +97 -70
  87. package/dist/commands/compile.js.map +1 -1
  88. package/dist/commands/doctor.js +793 -64
  89. package/dist/commands/doctor.js.map +1 -1
  90. package/dist/commands/edit.js +169 -208
  91. package/dist/commands/edit.js.map +1 -1
  92. package/dist/commands/eject.js +24 -39
  93. package/dist/commands/eject.js.map +1 -1
  94. package/dist/commands/init.js +41 -46
  95. package/dist/commands/list.js +10 -12
  96. package/dist/commands/list.js.map +1 -1
  97. package/dist/commands/search.js +20 -81
  98. package/dist/commands/search.js.map +1 -1
  99. package/dist/commands/uninstall.js +25 -31
  100. package/dist/commands/uninstall.js.map +1 -1
  101. package/dist/commands/update.js +82 -332
  102. package/dist/commands/update.js.map +1 -1
  103. package/dist/components/common/confirm.js +1 -1
  104. package/dist/components/common/prompt-confirm.js +1 -1
  105. package/dist/components/common/select-list.js +2 -2
  106. package/dist/components/common/spinner.js +1 -1
  107. package/dist/components/wizard/category-grid.js +5 -6
  108. package/dist/components/wizard/checkbox-grid.js +5 -6
  109. package/dist/components/wizard/domain-selection.js +12 -13
  110. package/dist/components/wizard/run-wizard-session.js +30 -36
  111. package/dist/components/wizard/scroll-affordance.js +2 -2
  112. package/dist/components/wizard/skill-agent-summary.js +7 -7
  113. package/dist/components/wizard/source-grid.js +6 -11
  114. package/dist/components/wizard/stack-selection.js +9 -9
  115. package/dist/components/wizard/step-agents.js +12 -12
  116. package/dist/components/wizard/step-build.js +10 -11
  117. package/dist/components/wizard/step-confirm.js +11 -11
  118. package/dist/components/wizard/step-sources.js +11 -17
  119. package/dist/components/wizard/step-stack.js +10 -10
  120. package/dist/components/wizard/summary-panel.js +10 -10
  121. package/dist/components/wizard/toast.js +2 -2
  122. package/dist/components/wizard/wizard-layout.js +15 -16
  123. package/dist/components/wizard/wizard-tabs.js +6 -12
  124. package/dist/components/wizard/wizard.js +29 -35
  125. package/dist/config-exports.js +1 -1
  126. package/dist/copy-local-skills-KF2RAVD3.js +14 -0
  127. package/dist/hooks/init.js +49 -48
  128. package/dist/hooks/init.js.map +1 -1
  129. package/dist/index.js +3 -1
  130. package/dist/index.js.map +1 -1
  131. package/dist/load-agent-defs-DGXGBU3Q.js +15 -0
  132. package/dist/{loader-5JP4S7CJ.js → loader-4U7UCE2Y.js} +7 -5
  133. package/dist/recompile-project-agents-CJVBAWDJ.js +20 -0
  134. package/dist/{source-loader-MZYCPL2S.js → source-loader-ZNSYJJCI.js} +6 -6
  135. package/dist/src/agents/developer/ai-developer/identity.md +4 -4
  136. package/dist/src/agents/developer/ai-developer/playbook.md +1 -1
  137. package/dist/src/agents/developer/api-developer/identity.md +4 -4
  138. package/dist/src/agents/developer/api-developer/metadata.yaml +1 -1
  139. package/dist/src/agents/developer/cli-developer/identity.md +4 -4
  140. package/dist/src/agents/developer/web-developer/identity.md +2 -2
  141. package/dist/src/agents/developer/web-developer/metadata.yaml +1 -1
  142. package/dist/src/agents/meta/agent-summoner/identity.md +4 -5
  143. package/dist/src/agents/meta/agent-summoner/output.md +2 -2
  144. package/dist/src/agents/meta/agent-summoner/playbook.md +15 -16
  145. package/dist/src/agents/meta/codex-keeper/identity.md +4 -4
  146. package/dist/src/agents/meta/codex-keeper/playbook.md +1 -1
  147. package/dist/src/agents/meta/convention-keeper/identity.md +1 -1
  148. package/dist/src/agents/meta/skill-summoner/critical-reminders.md +0 -34
  149. package/dist/src/agents/meta/skill-summoner/critical-requirements.md +27 -3
  150. package/dist/src/agents/meta/skill-summoner/identity.md +2 -2
  151. package/{src/agents/planning/web-pm → dist/src/agents/planning/pm}/critical-reminders.md +10 -7
  152. package/dist/src/agents/planning/{web-pm → pm}/critical-requirements.md +8 -4
  153. package/dist/src/agents/planning/pm/identity.md +47 -0
  154. package/dist/src/agents/planning/pm/metadata.yaml +12 -0
  155. package/dist/src/agents/planning/{web-pm → pm}/output.md +7 -90
  156. package/dist/src/agents/planning/pm/playbook.md +185 -0
  157. package/dist/src/agents/researcher/ai-researcher/critical-reminders.md +58 -0
  158. package/dist/src/agents/researcher/ai-researcher/critical-requirements.md +40 -0
  159. package/dist/src/agents/researcher/ai-researcher/identity.md +86 -0
  160. package/dist/src/agents/researcher/ai-researcher/metadata.yaml +10 -0
  161. package/dist/src/agents/researcher/ai-researcher/output.md +363 -0
  162. package/dist/src/agents/researcher/ai-researcher/playbook.md +545 -0
  163. package/dist/src/agents/researcher/api-researcher/critical-reminders.md +16 -0
  164. package/dist/src/agents/researcher/api-researcher/identity.md +7 -7
  165. package/dist/src/agents/researcher/cli-researcher/critical-reminders.md +50 -0
  166. package/dist/src/agents/researcher/cli-researcher/critical-requirements.md +36 -0
  167. package/dist/src/agents/researcher/cli-researcher/identity.md +87 -0
  168. package/dist/src/agents/researcher/cli-researcher/metadata.yaml +10 -0
  169. package/dist/src/agents/researcher/cli-researcher/output.md +343 -0
  170. package/dist/src/agents/researcher/cli-researcher/playbook.md +370 -0
  171. package/dist/src/agents/researcher/web-researcher/identity.md +5 -6
  172. package/dist/src/agents/reviewer/reviewer/critical-reminders.md +29 -0
  173. package/dist/src/agents/reviewer/reviewer/critical-requirements.md +31 -0
  174. package/dist/src/agents/reviewer/reviewer/identity.md +41 -0
  175. package/dist/src/agents/reviewer/reviewer/metadata.yaml +12 -0
  176. package/dist/src/agents/reviewer/reviewer/output.md +202 -0
  177. package/dist/src/agents/reviewer/reviewer/playbook.md +141 -0
  178. package/dist/src/agents/tester/ai-tester/critical-reminders.md +48 -0
  179. package/dist/src/agents/tester/ai-tester/critical-requirements.md +49 -0
  180. package/dist/src/agents/tester/ai-tester/identity.md +62 -0
  181. package/dist/src/agents/tester/ai-tester/metadata.yaml +12 -0
  182. package/dist/src/agents/tester/ai-tester/output.md +375 -0
  183. package/dist/src/agents/tester/ai-tester/playbook.md +789 -0
  184. package/dist/src/agents/tester/api-tester/identity.md +3 -3
  185. package/dist/src/agents/tester/cli-tester/critical-reminders.md +3 -3
  186. package/dist/src/agents/tester/cli-tester/critical-requirements.md +2 -2
  187. package/dist/src/agents/tester/cli-tester/identity.md +3 -3
  188. package/dist/src/agents/tester/cli-tester/output.md +4 -4
  189. package/dist/src/agents/tester/cli-tester/playbook.md +3 -3
  190. package/dist/src/agents/tester/web-tester/identity.md +3 -3
  191. package/dist/stores/wizard-store.js +8 -6
  192. package/package.json +13 -2
  193. package/src/agents/developer/ai-developer/identity.md +4 -4
  194. package/src/agents/developer/ai-developer/playbook.md +1 -1
  195. package/src/agents/developer/api-developer/identity.md +4 -4
  196. package/src/agents/developer/api-developer/metadata.yaml +1 -1
  197. package/src/agents/developer/cli-developer/identity.md +4 -4
  198. package/src/agents/developer/web-developer/identity.md +2 -2
  199. package/src/agents/developer/web-developer/metadata.yaml +1 -1
  200. package/src/agents/meta/agent-summoner/identity.md +4 -5
  201. package/src/agents/meta/agent-summoner/output.md +2 -2
  202. package/src/agents/meta/agent-summoner/playbook.md +15 -16
  203. package/src/agents/meta/codex-keeper/identity.md +4 -4
  204. package/src/agents/meta/codex-keeper/playbook.md +1 -1
  205. package/src/agents/meta/convention-keeper/identity.md +1 -1
  206. package/src/agents/meta/skill-summoner/critical-reminders.md +0 -34
  207. package/src/agents/meta/skill-summoner/critical-requirements.md +27 -3
  208. package/src/agents/meta/skill-summoner/identity.md +2 -2
  209. package/{dist/src/agents/planning/web-pm → src/agents/planning/pm}/critical-reminders.md +10 -7
  210. package/src/agents/planning/{web-pm → pm}/critical-requirements.md +8 -4
  211. package/src/agents/planning/pm/identity.md +47 -0
  212. package/src/agents/planning/pm/metadata.yaml +12 -0
  213. package/src/agents/planning/{web-pm → pm}/output.md +7 -90
  214. package/src/agents/planning/pm/playbook.md +185 -0
  215. package/src/agents/researcher/ai-researcher/critical-reminders.md +58 -0
  216. package/src/agents/researcher/ai-researcher/critical-requirements.md +40 -0
  217. package/src/agents/researcher/ai-researcher/identity.md +86 -0
  218. package/src/agents/researcher/ai-researcher/metadata.yaml +10 -0
  219. package/src/agents/researcher/ai-researcher/output.md +363 -0
  220. package/src/agents/researcher/ai-researcher/playbook.md +545 -0
  221. package/src/agents/researcher/api-researcher/critical-reminders.md +16 -0
  222. package/src/agents/researcher/api-researcher/identity.md +7 -7
  223. package/src/agents/researcher/cli-researcher/critical-reminders.md +50 -0
  224. package/src/agents/researcher/cli-researcher/critical-requirements.md +36 -0
  225. package/src/agents/researcher/cli-researcher/identity.md +87 -0
  226. package/src/agents/researcher/cli-researcher/metadata.yaml +10 -0
  227. package/src/agents/researcher/cli-researcher/output.md +343 -0
  228. package/src/agents/researcher/cli-researcher/playbook.md +370 -0
  229. package/src/agents/researcher/web-researcher/identity.md +5 -6
  230. package/src/agents/reviewer/reviewer/critical-reminders.md +29 -0
  231. package/src/agents/reviewer/reviewer/critical-requirements.md +31 -0
  232. package/src/agents/reviewer/reviewer/identity.md +41 -0
  233. package/src/agents/reviewer/reviewer/metadata.yaml +12 -0
  234. package/src/agents/reviewer/reviewer/output.md +202 -0
  235. package/src/agents/reviewer/reviewer/playbook.md +141 -0
  236. package/src/agents/tester/ai-tester/critical-reminders.md +48 -0
  237. package/src/agents/tester/ai-tester/critical-requirements.md +49 -0
  238. package/src/agents/tester/ai-tester/identity.md +62 -0
  239. package/src/agents/tester/ai-tester/metadata.yaml +12 -0
  240. package/src/agents/tester/ai-tester/output.md +375 -0
  241. package/src/agents/tester/ai-tester/playbook.md +789 -0
  242. package/src/agents/tester/api-tester/identity.md +3 -3
  243. package/src/agents/tester/cli-tester/critical-reminders.md +3 -3
  244. package/src/agents/tester/cli-tester/critical-requirements.md +2 -2
  245. package/src/agents/tester/cli-tester/identity.md +3 -3
  246. package/src/agents/tester/cli-tester/output.md +4 -4
  247. package/src/agents/tester/cli-tester/playbook.md +3 -3
  248. package/src/agents/tester/web-tester/identity.md +3 -3
  249. package/src/schemas/metadata.schema.json +31 -2
  250. package/src/schemas/project-config.schema.json +61 -15
  251. package/src/schemas/project-source-config.schema.json +0 -47
  252. package/dist/chunk-5GUOIJSG.js.map +0 -1
  253. package/dist/chunk-5UWKOOIS.js.map +0 -1
  254. package/dist/chunk-76ADG7LQ.js.map +0 -1
  255. package/dist/chunk-BNSRA6HL.js.map +0 -1
  256. package/dist/chunk-E5X6RJ4E.js.map +0 -1
  257. package/dist/chunk-EEPELKOM.js +0 -5938
  258. package/dist/chunk-EEPELKOM.js.map +0 -1
  259. package/dist/chunk-F7T5AFFN.js +0 -20
  260. package/dist/chunk-F7T5AFFN.js.map +0 -1
  261. package/dist/chunk-FVDKAVOL.js.map +0 -1
  262. package/dist/chunk-KFB5CRXZ.js +0 -377
  263. package/dist/chunk-KFB5CRXZ.js.map +0 -1
  264. package/dist/chunk-KR65TPKC.js +0 -664
  265. package/dist/chunk-KR65TPKC.js.map +0 -1
  266. package/dist/chunk-LASI35KT.js.map +0 -1
  267. package/dist/chunk-LDP5ASDM.js.map +0 -1
  268. package/dist/chunk-LZ52XEPR.js.map +0 -1
  269. package/dist/chunk-M7HO7NBK.js +0 -88
  270. package/dist/chunk-M7HO7NBK.js.map +0 -1
  271. package/dist/chunk-MWG4VU64.js.map +0 -1
  272. package/dist/chunk-ODNDXQH2.js +0 -77
  273. package/dist/chunk-ODNDXQH2.js.map +0 -1
  274. package/dist/chunk-P44SXVH3.js +0 -80
  275. package/dist/chunk-P44SXVH3.js.map +0 -1
  276. package/dist/chunk-PMM2MYMA.js.map +0 -1
  277. package/dist/chunk-PZIZNMHK.js.map +0 -1
  278. package/dist/chunk-Q45ZU6HD.js +0 -37
  279. package/dist/chunk-Q45ZU6HD.js.map +0 -1
  280. package/dist/chunk-QRDTLVXG.js.map +0 -1
  281. package/dist/chunk-QZZJFYUQ.js.map +0 -1
  282. package/dist/chunk-R5NOI2LP.js +0 -170
  283. package/dist/chunk-R5NOI2LP.js.map +0 -1
  284. package/dist/chunk-RNJWAKMO.js.map +0 -1
  285. package/dist/chunk-SBHBBZKF.js.map +0 -1
  286. package/dist/chunk-SKQWRUPX.js.map +0 -1
  287. package/dist/chunk-STMHDOZD.js.map +0 -1
  288. package/dist/chunk-SX5H6TSC.js.map +0 -1
  289. package/dist/chunk-TUPYW2IQ.js.map +0 -1
  290. package/dist/chunk-UBEDZ4FD.js +0 -4198
  291. package/dist/chunk-UBEDZ4FD.js.map +0 -1
  292. package/dist/chunk-VY6MNOXL.js +0 -20
  293. package/dist/chunk-VY6MNOXL.js.map +0 -1
  294. package/dist/chunk-WBCPLH66.js +0 -42
  295. package/dist/chunk-WBCPLH66.js.map +0 -1
  296. package/dist/chunk-WKTHWQKM.js.map +0 -1
  297. package/dist/chunk-XHUODHZ4.js.map +0 -1
  298. package/dist/chunk-ZPPHXXAP.js +0 -252
  299. package/dist/chunk-ZPPHXXAP.js.map +0 -1
  300. package/dist/commands/import/skill.js +0 -344
  301. package/dist/commands/import/skill.js.map +0 -1
  302. package/dist/commands/new/agent.js +0 -300
  303. package/dist/commands/new/agent.js.map +0 -1
  304. package/dist/commands/new/marketplace.js +0 -310
  305. package/dist/commands/new/marketplace.js.map +0 -1
  306. package/dist/commands/new/skill.js +0 -26
  307. package/dist/commands/validate.js +0 -575
  308. package/dist/commands/validate.js.map +0 -1
  309. package/dist/components/wizard/search-modal.js +0 -13
  310. package/dist/components/wizard/selection-card.js +0 -9
  311. package/dist/components/wizard/step-settings.js +0 -18
  312. package/dist/copy-local-skills-6EMVN7RB.js +0 -14
  313. package/dist/load-agent-defs-BWOUVEAR.js +0 -15
  314. package/dist/load-agent-defs-BWOUVEAR.js.map +0 -1
  315. package/dist/loader-5JP4S7CJ.js.map +0 -1
  316. package/dist/recompile-project-agents-6DL45TDI.js +0 -19
  317. package/dist/recompile-project-agents-6DL45TDI.js.map +0 -1
  318. package/dist/source-loader-MZYCPL2S.js.map +0 -1
  319. package/dist/src/agents/developer/web-architecture/critical-reminders.md +0 -48
  320. package/dist/src/agents/developer/web-architecture/critical-requirements.md +0 -65
  321. package/dist/src/agents/developer/web-architecture/identity.md +0 -64
  322. package/dist/src/agents/developer/web-architecture/metadata.yaml +0 -12
  323. package/dist/src/agents/developer/web-architecture/output.md +0 -449
  324. package/dist/src/agents/developer/web-architecture/playbook.md +0 -481
  325. package/dist/src/agents/pattern/pattern-scout/critical-reminders.md +0 -71
  326. package/dist/src/agents/pattern/pattern-scout/critical-requirements.md +0 -31
  327. package/dist/src/agents/pattern/pattern-scout/identity.md +0 -25
  328. package/dist/src/agents/pattern/pattern-scout/metadata.yaml +0 -10
  329. package/dist/src/agents/pattern/pattern-scout/output.md +0 -290
  330. package/dist/src/agents/pattern/pattern-scout/playbook.md +0 -1806
  331. package/dist/src/agents/pattern/web-pattern-critique/critical-reminders.md +0 -30
  332. package/dist/src/agents/pattern/web-pattern-critique/critical-requirements.md +0 -28
  333. package/dist/src/agents/pattern/web-pattern-critique/identity.md +0 -41
  334. package/dist/src/agents/pattern/web-pattern-critique/metadata.yaml +0 -12
  335. package/dist/src/agents/pattern/web-pattern-critique/output.md +0 -314
  336. package/dist/src/agents/pattern/web-pattern-critique/playbook.md +0 -572
  337. package/dist/src/agents/planning/api-pm/critical-reminders.md +0 -48
  338. package/dist/src/agents/planning/api-pm/critical-requirements.md +0 -41
  339. package/dist/src/agents/planning/api-pm/identity.md +0 -39
  340. package/dist/src/agents/planning/api-pm/metadata.yaml +0 -12
  341. package/dist/src/agents/planning/api-pm/output.md +0 -475
  342. package/dist/src/agents/planning/api-pm/playbook.md +0 -129
  343. package/dist/src/agents/planning/web-pm/identity.md +0 -26
  344. package/dist/src/agents/planning/web-pm/metadata.yaml +0 -12
  345. package/dist/src/agents/planning/web-pm/playbook.md +0 -318
  346. package/dist/src/agents/reviewer/ai-reviewer/critical-reminders.md +0 -40
  347. package/dist/src/agents/reviewer/ai-reviewer/critical-requirements.md +0 -37
  348. package/dist/src/agents/reviewer/ai-reviewer/identity.md +0 -51
  349. package/dist/src/agents/reviewer/ai-reviewer/metadata.yaml +0 -10
  350. package/dist/src/agents/reviewer/ai-reviewer/output.md +0 -395
  351. package/dist/src/agents/reviewer/ai-reviewer/playbook.md +0 -90
  352. package/dist/src/agents/reviewer/api-reviewer/critical-reminders.md +0 -31
  353. package/dist/src/agents/reviewer/api-reviewer/critical-requirements.md +0 -27
  354. package/dist/src/agents/reviewer/api-reviewer/identity.md +0 -51
  355. package/dist/src/agents/reviewer/api-reviewer/metadata.yaml +0 -12
  356. package/dist/src/agents/reviewer/api-reviewer/output.md +0 -343
  357. package/dist/src/agents/reviewer/api-reviewer/playbook.md +0 -288
  358. package/dist/src/agents/reviewer/cli-reviewer/critical-reminders.md +0 -33
  359. package/dist/src/agents/reviewer/cli-reviewer/critical-requirements.md +0 -30
  360. package/dist/src/agents/reviewer/cli-reviewer/identity.md +0 -44
  361. package/dist/src/agents/reviewer/cli-reviewer/metadata.yaml +0 -12
  362. package/dist/src/agents/reviewer/cli-reviewer/output.md +0 -414
  363. package/dist/src/agents/reviewer/cli-reviewer/playbook.md +0 -218
  364. package/dist/src/agents/reviewer/infra-reviewer/critical-reminders.md +0 -38
  365. package/dist/src/agents/reviewer/infra-reviewer/critical-requirements.md +0 -38
  366. package/dist/src/agents/reviewer/infra-reviewer/identity.md +0 -53
  367. package/dist/src/agents/reviewer/infra-reviewer/metadata.yaml +0 -10
  368. package/dist/src/agents/reviewer/infra-reviewer/output.md +0 -364
  369. package/dist/src/agents/reviewer/infra-reviewer/playbook.md +0 -161
  370. package/dist/src/agents/reviewer/web-reviewer/critical-reminders.md +0 -31
  371. package/dist/src/agents/reviewer/web-reviewer/critical-requirements.md +0 -26
  372. package/dist/src/agents/reviewer/web-reviewer/identity.md +0 -40
  373. package/dist/src/agents/reviewer/web-reviewer/metadata.yaml +0 -12
  374. package/dist/src/agents/reviewer/web-reviewer/output.md +0 -333
  375. package/dist/src/agents/reviewer/web-reviewer/playbook.md +0 -156
  376. package/src/agents/developer/web-architecture/critical-reminders.md +0 -48
  377. package/src/agents/developer/web-architecture/critical-requirements.md +0 -65
  378. package/src/agents/developer/web-architecture/identity.md +0 -64
  379. package/src/agents/developer/web-architecture/metadata.yaml +0 -12
  380. package/src/agents/developer/web-architecture/output.md +0 -449
  381. package/src/agents/developer/web-architecture/playbook.md +0 -481
  382. package/src/agents/pattern/pattern-scout/critical-reminders.md +0 -71
  383. package/src/agents/pattern/pattern-scout/critical-requirements.md +0 -31
  384. package/src/agents/pattern/pattern-scout/identity.md +0 -25
  385. package/src/agents/pattern/pattern-scout/metadata.yaml +0 -10
  386. package/src/agents/pattern/pattern-scout/output.md +0 -290
  387. package/src/agents/pattern/pattern-scout/playbook.md +0 -1806
  388. package/src/agents/pattern/web-pattern-critique/critical-reminders.md +0 -30
  389. package/src/agents/pattern/web-pattern-critique/critical-requirements.md +0 -28
  390. package/src/agents/pattern/web-pattern-critique/identity.md +0 -41
  391. package/src/agents/pattern/web-pattern-critique/metadata.yaml +0 -12
  392. package/src/agents/pattern/web-pattern-critique/output.md +0 -314
  393. package/src/agents/pattern/web-pattern-critique/playbook.md +0 -572
  394. package/src/agents/planning/api-pm/critical-reminders.md +0 -48
  395. package/src/agents/planning/api-pm/critical-requirements.md +0 -41
  396. package/src/agents/planning/api-pm/identity.md +0 -39
  397. package/src/agents/planning/api-pm/metadata.yaml +0 -12
  398. package/src/agents/planning/api-pm/output.md +0 -475
  399. package/src/agents/planning/api-pm/playbook.md +0 -129
  400. package/src/agents/planning/web-pm/identity.md +0 -26
  401. package/src/agents/planning/web-pm/metadata.yaml +0 -12
  402. package/src/agents/planning/web-pm/playbook.md +0 -318
  403. package/src/agents/reviewer/ai-reviewer/critical-reminders.md +0 -40
  404. package/src/agents/reviewer/ai-reviewer/critical-requirements.md +0 -37
  405. package/src/agents/reviewer/ai-reviewer/identity.md +0 -51
  406. package/src/agents/reviewer/ai-reviewer/metadata.yaml +0 -10
  407. package/src/agents/reviewer/ai-reviewer/output.md +0 -395
  408. package/src/agents/reviewer/ai-reviewer/playbook.md +0 -90
  409. package/src/agents/reviewer/api-reviewer/critical-reminders.md +0 -31
  410. package/src/agents/reviewer/api-reviewer/critical-requirements.md +0 -27
  411. package/src/agents/reviewer/api-reviewer/identity.md +0 -51
  412. package/src/agents/reviewer/api-reviewer/metadata.yaml +0 -12
  413. package/src/agents/reviewer/api-reviewer/output.md +0 -343
  414. package/src/agents/reviewer/api-reviewer/playbook.md +0 -288
  415. package/src/agents/reviewer/cli-reviewer/critical-reminders.md +0 -33
  416. package/src/agents/reviewer/cli-reviewer/critical-requirements.md +0 -30
  417. package/src/agents/reviewer/cli-reviewer/identity.md +0 -44
  418. package/src/agents/reviewer/cli-reviewer/metadata.yaml +0 -12
  419. package/src/agents/reviewer/cli-reviewer/output.md +0 -414
  420. package/src/agents/reviewer/cli-reviewer/playbook.md +0 -218
  421. package/src/agents/reviewer/infra-reviewer/critical-reminders.md +0 -38
  422. package/src/agents/reviewer/infra-reviewer/critical-requirements.md +0 -38
  423. package/src/agents/reviewer/infra-reviewer/identity.md +0 -53
  424. package/src/agents/reviewer/infra-reviewer/metadata.yaml +0 -10
  425. package/src/agents/reviewer/infra-reviewer/output.md +0 -364
  426. package/src/agents/reviewer/infra-reviewer/playbook.md +0 -161
  427. package/src/agents/reviewer/web-reviewer/critical-reminders.md +0 -31
  428. package/src/agents/reviewer/web-reviewer/critical-requirements.md +0 -26
  429. package/src/agents/reviewer/web-reviewer/identity.md +0 -40
  430. package/src/agents/reviewer/web-reviewer/metadata.yaml +0 -12
  431. package/src/agents/reviewer/web-reviewer/output.md +0 -333
  432. package/src/agents/reviewer/web-reviewer/playbook.md +0 -156
  433. /package/dist/{chunk-ZL7PFNHN.js.map → chunk-K3O3YQYG.js.map} +0 -0
  434. /package/dist/{chunk-IHUY4M22.js.map → chunk-NXGMM5YN.js.map} +0 -0
  435. /package/dist/{chunk-DTSG5XZB.js.map → chunk-V3ENMW7G.js.map} +0 -0
  436. /package/dist/{commands/new/skill.js.map → copy-local-skills-KF2RAVD3.js.map} +0 -0
  437. /package/dist/{components/wizard/search-modal.js.map → load-agent-defs-DGXGBU3Q.js.map} +0 -0
  438. /package/dist/{components/wizard/selection-card.js.map → loader-4U7UCE2Y.js.map} +0 -0
  439. /package/dist/{components/wizard/step-settings.js.map → recompile-project-agents-CJVBAWDJ.js.map} +0 -0
  440. /package/dist/{copy-local-skills-6EMVN7RB.js.map → source-loader-ZNSYJJCI.js.map} +0 -0
@@ -1,21 +1,22 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
+ DOMAIN_ORDER,
3
4
  deriveInstallMode,
4
5
  getAvailableSkills,
6
+ getCellState,
5
7
  getUnmetRequiredBy,
6
8
  isActiveAt,
7
- isCompatibleWithSelections,
8
9
  isGlobalTombstone,
9
10
  isProjectOwned
10
- } from "./chunk-EEPELKOM.js";
11
+ } from "./chunk-NXQAY5U7.js";
11
12
  import {
12
13
  warn
13
- } from "./chunk-PMM2MYMA.js";
14
+ } from "./chunk-U2YSGBHA.js";
14
15
  import {
15
16
  getCategoryDomain,
16
17
  getSkillById,
17
18
  matrix
18
- } from "./chunk-WKTHWQKM.js";
19
+ } from "./chunk-35VOK7XE.js";
19
20
  import {
20
21
  typedEntries,
21
22
  typedFromEntries,
@@ -23,14 +24,14 @@ import {
23
24
  typedValues
24
25
  } from "./chunk-VASLW636.js";
25
26
  import {
26
- BUILT_IN_DOMAIN_ORDER,
27
27
  DEFAULT_PUBLIC_SOURCE_NAME,
28
+ DEFAULT_SCRATCH_DOMAINS,
28
29
  EJECT_SOURCE,
29
- FALLBACK_DOMAIN
30
- } from "./chunk-76ADG7LQ.js";
30
+ FALLBACK_DOMAIN,
31
+ INSTALL_MODES
32
+ } from "./chunk-R54KIGN2.js";
31
33
 
32
34
  // src/cli/stores/wizard-store.ts
33
- import { flatMap } from "remeda";
34
35
  import { create } from "zustand";
35
36
 
36
37
  // src/cli/lib/wizard/build-step-logic.ts
@@ -122,9 +123,9 @@ function classifyDiffRow(skill, prevKeySet, prevSourceMap) {
122
123
  const key = skillSlotKey(skill.id, skill.scope);
123
124
  const isNew = prevKeySet === null || !prevKeySet.has(key);
124
125
  const prevSource = prevSourceMap?.get(key);
125
- const sourceChanged = !isNew && prevSource != null && prevSource !== skill.source;
126
- if (sourceChanged) {
127
- return { id: skill.id, source: skill.source, status: "source-changed" };
126
+ const modeChanged = !isNew && prevSource != null && prevSource !== skill.source;
127
+ if (modeChanged) {
128
+ return { id: skill.id, source: skill.source, status: "mode-changed" };
128
129
  }
129
130
  return { id: skill.id, source: skill.source, status: isNew ? "added" : "unchanged" };
130
131
  }
@@ -140,53 +141,48 @@ function toRemovedAgentRow(agent) {
140
141
  }
141
142
 
142
143
  // src/cli/lib/wizard/build-step-logic.ts
143
- var FRAMEWORK_CATEGORY_ID = "web-framework";
144
- var WEB_DOMAIN_ID = "web";
145
- function getSelectedFrameworks(selections) {
146
- return (selections[FRAMEWORK_CATEGORY_ID] ?? []).map((alias) => getSkillById(alias).id);
147
- }
148
- function isCompatibleWithSelectedFrameworks(skillId, selectedFrameworkIds) {
149
- return isCompatibleWithSelections(getSkillById(skillId), selectedFrameworkIds);
150
- }
151
- function buildCategoriesForDomain(domain, allSelections, selections, installedSkillIds, skillConfigs, filterIncompatible) {
152
- const selectedFrameworkIds = getSelectedFrameworks(selections);
153
- const shouldFilter = filterIncompatible && domain === WEB_DOMAIN_ID && selectedFrameworkIds.length > 0;
144
+ function buildCategoriesForDomain(domain, allSelections, installedSkillIds, skillConfigs) {
154
145
  const categories = sortBy(
155
146
  typedValues(matrix.categories).filter((cat) => cat.domain === domain),
147
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- CategoryDefinition declares this required, but an auto-synthesized category for a custom skill can arrive without it — the type is stricter than the data
156
148
  (cat) => cat.order ?? 0
157
149
  );
158
150
  const categoryRows = categories.map((cat) => {
159
151
  const skillOptions = getAvailableSkills(cat.id, allSelections);
160
- const filteredOptions = shouldFilter && cat.id !== FRAMEWORK_CATEGORY_ID ? skillOptions.filter(
161
- (skill) => isCompatibleWithSelectedFrameworks(skill.id, selectedFrameworkIds)
162
- ) : skillOptions;
163
- const isExclusive = cat.exclusive ?? true;
164
152
  const sortedOptions = sortBy(
165
- filteredOptions,
153
+ skillOptions,
166
154
  (skill) => getSkillById(skill.id).displayName.toLowerCase()
167
155
  );
168
156
  const options = sortedOptions.map((skill) => {
169
157
  const activeConfig = skillConfigs?.find((sc) => sc.id === skill.id && !sc.excluded);
170
158
  const excludedConfig = skillConfigs?.find((sc) => sc.id === skill.id && sc.excluded);
171
159
  const { secondaryScope } = deriveScopeBadges(activeConfig, excludedConfig);
160
+ const local = getSkillById(skill.id).local;
161
+ const requiredBy = skill.selected ? void 0 : getUnmetRequiredBy(skill.id, allSelections);
172
162
  return {
173
163
  id: skill.id,
174
- state: isExclusive && skill.advisoryState.status === "incompatible" ? { status: "normal" } : skill.advisoryState,
164
+ // The cell verdict, not the raw advisory: inside a pick-one category
165
+ // the shared semantics forgive what the swap resolves.
166
+ state: getCellState(skill.id, allSelections),
175
167
  selected: skill.selected,
176
- local: getSkillById(skill.id).local,
168
+ ...local !== void 0 && { local },
177
169
  installed: installedSkillIds?.includes(skill.id) || false,
178
- scope: activeConfig?.scope,
179
- secondaryScope,
180
- source: activeConfig?.source,
170
+ ...activeConfig?.scope !== void 0 && { scope: activeConfig.scope },
171
+ ...secondaryScope !== void 0 && { secondaryScope },
172
+ ...activeConfig?.source !== void 0 && { source: activeConfig.source },
181
173
  hasUnmetRequirements: skill.hasUnmetRequirements,
182
- unmetRequirementsReason: skill.unmetRequirementsReason,
183
- requiredBy: skill.selected ? void 0 : getUnmetRequiredBy(skill.id, allSelections)
174
+ ...skill.unmetRequirementsReason !== void 0 && {
175
+ unmetRequirementsReason: skill.unmetRequirementsReason
176
+ },
177
+ ...requiredBy !== void 0 && { requiredBy }
184
178
  };
185
179
  });
186
180
  return {
187
181
  id: cat.id,
188
182
  displayName: cat.displayName,
183
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- CategoryDefinition declares this required, but an auto-synthesized category for a custom skill can arrive without it — the type is stricter than the data
189
184
  required: cat.required ?? false,
185
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- CategoryDefinition declares this required, but an auto-synthesized category for a custom skill can arrive without it — the type is stricter than the data
190
186
  exclusive: cat.exclusive ?? true,
191
187
  options
192
188
  };
@@ -196,10 +192,10 @@ function buildCategoriesForDomain(domain, allSelections, selections, installedSk
196
192
 
197
193
  // src/cli/lib/wizard/domain-order.ts
198
194
  function orderDomains(domains) {
199
- const builtInSet = new Set(BUILT_IN_DOMAIN_ORDER);
195
+ const builtInSet = new Set(DOMAIN_ORDER);
200
196
  return [
201
197
  ...domains.filter((d) => !builtInSet.has(d)).sort(),
202
- ...BUILT_IN_DOMAIN_ORDER.filter((d) => domains.includes(d))
198
+ ...DOMAIN_ORDER.filter((d) => domains.includes(d))
203
199
  ];
204
200
  }
205
201
 
@@ -221,28 +217,6 @@ function createDefaultSkillConfig(id) {
221
217
  const primarySource = primarySourceName(skill);
222
218
  return { id, scope: "global", source: primarySource ?? DEFAULT_PUBLIC_SOURCE_NAME };
223
219
  }
224
- function findIncompatibleWebSkills(webSelections, skillConfigs) {
225
- const frameworkSelections = webSelections[FRAMEWORK_CATEGORY_ID] ?? [];
226
- if (frameworkSelections.length === 0) return /* @__PURE__ */ new Set();
227
- const excludedIds = new Set(skillConfigs.filter((s) => s.excluded).map((s) => s.id));
228
- const selectedFrameworkIds = frameworkSelections.map((alias) => getSkillById(alias).id);
229
- return new Set(
230
- flatMap(
231
- typedEntries(webSelections),
232
- ([cat, skills]) => cat === FRAMEWORK_CATEGORY_ID || !skills ? [] : skills.filter(
233
- (id) => !excludedIds.has(id) && !isCompatibleWithSelectedFrameworks(id, selectedFrameworkIds)
234
- )
235
- )
236
- );
237
- }
238
- function removeSkillsFromSelections(selections, toRemove) {
239
- return typedFromEntries(
240
- typedEntries(selections).map(([cat, skills]) => [
241
- cat,
242
- skills?.filter((id) => !toRemove.has(id)) ?? []
243
- ])
244
- );
245
- }
246
220
  function hasProjectActive(configs, id) {
247
221
  return configs.some((sc) => sc.id === id && isActiveAt(sc, "project"));
248
222
  }
@@ -259,7 +233,10 @@ function isDualScopePair(configs, id) {
259
233
  return hasProjectActive(configs, id) && hasGlobalTombstone(configs, id);
260
234
  }
261
235
  function isGloballyLockedSkill(installed, liveConfigs, id) {
262
- return hasGlobalActive(installed, id) || hasGlobalTombstone(installed, id) && hasGlobalActive(liveConfigs, id) || isDualScopePair(liveConfigs, id);
236
+ return hasGlobalActive(installed, id) || hasGlobalTombstone(installed, id) && hasGlobalActive(liveConfigs, id);
237
+ }
238
+ function blocksExclusiveSwap(installed, liveConfigs, id) {
239
+ return isGloballyLockedSkill(installed, liveConfigs, id) || isDualScopePair(liveConfigs, id);
263
240
  }
264
241
  function wouldOverwriteGlobalEject(config, liveConfigs, installedSkillConfigs) {
265
242
  if (config.scope !== "project" || config.source !== EJECT_SOURCE) return false;
@@ -308,9 +285,11 @@ function reconcileSkillConfigs(configs, added, removed, installedSkillConfigs, i
308
285
  }
309
286
  const existingExcluded = result.find((sc) => sc.id === id && sc.excluded);
310
287
  if (existingExcluded) {
311
- result = result.map(
312
- (sc) => sc.id === id && sc.excluded ? { ...sc, excluded: void 0 } : sc
313
- );
288
+ result = result.map((sc) => {
289
+ if (sc.id !== id || !sc.excluded) return sc;
290
+ const { excluded: _excluded, ...active } = sc;
291
+ return active;
292
+ });
314
293
  } else if (!result.some((sc) => sc.id === id)) {
315
294
  result = [...result, buildSkillConfigForId(id, installedSkillConfigs)];
316
295
  }
@@ -338,9 +317,11 @@ function applyAgentToggle(configs, agent, isSelected) {
338
317
  }
339
318
  const existingExcluded = configs.find((ac) => ac.name === agent && ac.excluded);
340
319
  if (existingExcluded) {
341
- return configs.map(
342
- (ac) => ac.name === agent && ac.excluded ? { ...ac, excluded: void 0 } : ac
343
- );
320
+ return configs.map((ac) => {
321
+ if (ac.name !== agent || !ac.excluded) return ac;
322
+ const { excluded: _excluded, ...active } = ac;
323
+ return active;
324
+ });
344
325
  }
345
326
  return [...configs, { name: agent, scope: "global" }];
346
327
  }
@@ -387,40 +368,26 @@ function buildAgentConfigForName(name, savedConfigs) {
387
368
  function restoreSkillConfigs(existingConfigs, restoredIds) {
388
369
  const restoredSet = new Set(restoredIds);
389
370
  const existingIds = new Set(existingConfigs.map((sc) => sc.id));
390
- const updated = existingConfigs.map(
391
- (sc) => restoredSet.has(sc.id) && sc.excluded ? { ...sc, excluded: void 0 } : sc
392
- );
371
+ const updated = existingConfigs.map((sc) => {
372
+ if (!restoredSet.has(sc.id) || !sc.excluded) return sc;
373
+ const { excluded: _excluded, ...active } = sc;
374
+ return active;
375
+ });
393
376
  const newConfigs = restoredIds.filter((id) => !existingIds.has(id)).map(createDefaultSkillConfig);
394
377
  return [...updated, ...newConfigs];
395
378
  }
396
379
  var DOMAIN_AGENTS = {
397
- web: [
398
- "web-developer",
399
- "web-reviewer",
400
- "web-researcher",
401
- "web-tester",
402
- "web-pm",
403
- "web-architecture"
404
- ],
405
- api: ["api-developer", "api-reviewer", "api-researcher"],
406
- cli: ["cli-developer", "cli-tester", "cli-reviewer"]
380
+ web: ["web-developer", "web-researcher", "web-tester", "pm", "reviewer"],
381
+ api: ["api-developer", "api-researcher", "api-tester", "pm", "reviewer"],
382
+ cli: ["cli-developer", "cli-tester", "cli-researcher", "pm", "reviewer"],
383
+ ai: ["ai-developer", "ai-researcher", "ai-tester", "pm", "reviewer"]
407
384
  };
408
- var SOURCE_SORT_TIER_LOCAL = 1;
409
- var SOURCE_SORT_TIER_SCOPED = 2;
410
- var SOURCE_SORT_TIER_PUBLIC = 3;
411
- var SOURCE_SORT_TIER_THIRD_PARTY = 4;
412
- function getSourceSortTier(source) {
413
- if (source.type === "local") return SOURCE_SORT_TIER_LOCAL;
414
- if (source.primary) return SOURCE_SORT_TIER_SCOPED;
415
- if (source.type === "public") return SOURCE_SORT_TIER_PUBLIC;
416
- return SOURCE_SORT_TIER_THIRD_PARTY;
417
- }
418
385
  function resolveSkillForPopulation(skillId) {
419
386
  const { skills } = matrix;
420
387
  const skill = skills[skillId];
421
388
  if (!skill?.category) {
422
389
  warn(
423
- `Installed skill '${skillId}' is missing from the marketplace \u2014 it may have been removed or renamed`
390
+ `Installed skill '${skillId}' is not present in the loaded source \u2014 it may have been removed or renamed`
424
391
  );
425
392
  return null;
426
393
  }
@@ -439,33 +406,17 @@ function addToDomainSelections(selections, domain, category, skillId) {
439
406
  skillList.push(skillId);
440
407
  return true;
441
408
  }
442
- function buildBoundSkillOptions(boundSkills, alias, selectedSource) {
443
- return boundSkills.filter((b) => b.boundTo === alias).map((bound) => ({
444
- id: bound.sourceName,
445
- selected: selectedSource === bound.sourceName,
446
- installed: false
447
- }));
409
+ function marketplaceSourceName(skill) {
410
+ return skill.availableSources?.find((source) => source.type !== "local")?.name ?? DEFAULT_PUBLIC_SOURCE_NAME;
448
411
  }
449
- function buildSkillSourceOptions(skill, selectedSource, boundSkills) {
450
- const sortedSources = [...skill.availableSources || []].sort(
451
- (a, b) => getSourceSortTier(a) - getSourceSortTier(b)
452
- );
453
- const baseOptions = sortedSources.length > 0 ? sortedSources.map((source) => ({
454
- id: source.name,
455
- selected: selectedSource === source.name,
456
- installed: source.installed
457
- })) : [
458
- {
459
- id: DEFAULT_PUBLIC_SOURCE_NAME,
460
- selected: selectedSource === DEFAULT_PUBLIC_SOURCE_NAME,
461
- installed: false
462
- }
463
- ];
464
- const withEject = baseOptions.some((o) => o.id === EJECT_SOURCE) ? baseOptions : [
465
- { id: EJECT_SOURCE, selected: selectedSource === EJECT_SOURCE, installed: false },
466
- ...baseOptions
467
- ];
468
- return [...withEject, ...buildBoundSkillOptions(boundSkills, skill.slug, selectedSource)];
412
+ function sourceForInstallMode(skill, mode) {
413
+ return mode === "eject" ? EJECT_SOURCE : marketplaceSourceName(skill);
414
+ }
415
+ function installModeOfSource(source) {
416
+ return source === EJECT_SOURCE ? "eject" : "plugin";
417
+ }
418
+ function buildInstallModeOptions(selectedMode) {
419
+ return INSTALL_MODES.map((mode) => ({ mode, selected: mode === selectedMode }));
469
420
  }
470
421
  function collectRemovedInstalledEntries(installedSkillConfigs, skillConfigs) {
471
422
  if (!installedSkillConfigs) return [];
@@ -483,10 +434,11 @@ function collectInstalledSkillSlots(installedSkillConfigs) {
483
434
  function addedSlotFlag(installedSkillSlots, id, scope) {
484
435
  return installedSkillSlots.has(skillSlotKey(id, scope)) ? {} : { added: true };
485
436
  }
486
- function withSelectedSource(options, sourceId) {
487
- return options.map((option) => ({ ...option, selected: option.id === sourceId }));
437
+ function withSelectedMode(options, source) {
438
+ const mode = installModeOfSource(source);
439
+ return options.map((option) => ({ ...option, selected: option.mode === mode }));
488
440
  }
489
- function resolveSkillRowInputs(id, skillConfigs, boundSkills) {
441
+ function resolveSkillRowInputs(id, skillConfigs) {
490
442
  const skill = getSkillById(id);
491
443
  const configEntry = skillConfigs.find((sc) => sc.id === skill.id);
492
444
  const selectedSource = resolveEffectiveSource(
@@ -497,13 +449,13 @@ function resolveSkillRowInputs(id, skillConfigs, boundSkills) {
497
449
  return {
498
450
  skillId: skill.id,
499
451
  configEntry,
500
- options: buildSkillSourceOptions(skill, selectedSource, boundSkills)
452
+ options: buildInstallModeOptions(installModeOfSource(selectedSource))
501
453
  };
502
454
  }
503
455
  function toPendingRemovalRow(skillId, options, removedInstalledEntry) {
504
456
  return {
505
457
  skillId,
506
- options: withSelectedSource(options, removedInstalledEntry.source),
458
+ options: withSelectedMode(options, removedInstalledEntry.source),
507
459
  scope: removedInstalledEntry.scope,
508
460
  disabled: true
509
461
  };
@@ -515,7 +467,7 @@ function isSlotAlreadyRendered(rows, removedInstalledEntry) {
515
467
  function toLockedGlobalRow(skillId, options, installedSource, installedSkillSlots) {
516
468
  return {
517
469
  skillId,
518
- options: withSelectedSource(options, installedSource),
470
+ options: withSelectedMode(options, installedSource),
519
471
  scope: "global",
520
472
  readOnly: true,
521
473
  ...addedSlotFlag(installedSkillSlots, skillId, "global")
@@ -551,7 +503,7 @@ function classifySkillSourceRows(skillId, options, context) {
551
503
  {
552
504
  skillId,
553
505
  options,
554
- scope: configEntry?.scope,
506
+ ...configEntry?.scope !== void 0 && { scope: configEntry.scope },
555
507
  ...readOnly ? { readOnly: true } : {},
556
508
  ...addedSlotFlag(installedSkillSlots, skillId, configEntry?.scope)
557
509
  }
@@ -570,6 +522,17 @@ var WIZARD_STEP_ORDER = [
570
522
  "agents",
571
523
  "confirm"
572
524
  ];
525
+ function offersStacks() {
526
+ return matrix.suggestedStacks.length > 0;
527
+ }
528
+ function getActiveStepFlow() {
529
+ if (offersStacks()) return [...WIZARD_STEP_ORDER];
530
+ return WIZARD_STEP_ORDER.filter((step) => step !== "stack");
531
+ }
532
+ function stepsBefore(flow, step) {
533
+ const index = flow.indexOf(step);
534
+ return index < 0 ? [] : flow.slice(0, index);
535
+ }
573
536
  var createInitialState = (overrides) => ({
574
537
  step: "stack",
575
538
  approach: null,
@@ -581,17 +544,13 @@ var createInitialState = (overrides) => ({
581
544
  /** Snapshot of domainSelections from populateFromSkillIds, used to restore on domain re-toggle */
582
545
  _stackDomainSelections: null,
583
546
  showLabels: false,
584
- filterIncompatible: false,
585
547
  skillConfigs: [],
586
548
  focusedSkillId: null,
587
549
  unresolvableSkillIds: [],
588
- customizeSources: false,
589
- showSettings: false,
590
550
  showInfo: false,
591
551
  selectedAgents: [],
592
552
  agentConfigs: [],
593
553
  focusedAgentId: null,
594
- boundSkills: [],
595
554
  installedSkillConfigs: null,
596
555
  installedAgentConfigs: null,
597
556
  isInitMode: false,
@@ -620,11 +579,30 @@ var useWizardStore = create((set, get) => ({
620
579
  skillConfigs: [],
621
580
  selectedAgents: [],
622
581
  agentConfigs: [],
623
- boundSkills: [],
624
582
  currentDomainIndex: 0,
625
583
  stackAction: null
626
584
  }),
627
585
  setStackAction: (action) => set({ stackAction: action }),
586
+ startFromScratch: () => {
587
+ get().selectStack(null);
588
+ get().setApproach("scratch");
589
+ const { globalAgentPreselections, globalPreselections } = get();
590
+ if (globalAgentPreselections) {
591
+ set({
592
+ selectedAgents: globalAgentPreselections.agents,
593
+ agentConfigs: globalAgentPreselections.configs
594
+ });
595
+ }
596
+ if (globalPreselections?.length) {
597
+ get().populateFromSkillIds(
598
+ globalPreselections.map((skill) => skill.id),
599
+ globalPreselections
600
+ );
601
+ }
602
+ for (const domain of DEFAULT_SCRATCH_DOMAINS) {
603
+ if (!get().selectedDomains.includes(domain)) get().toggleDomain(domain);
604
+ }
605
+ },
628
606
  populateFromSkillIds: (skillIds, savedConfigs) => set(() => {
629
607
  const domainSelections = {};
630
608
  const resolvedSkillIds = [];
@@ -640,11 +618,6 @@ var useWizardStore = create((set, get) => ({
640
618
  resolvedSkillIds.push(techId);
641
619
  }
642
620
  }
643
- if (unresolvableSkillIds.length > 0) {
644
- warn(
645
- `${unresolvableSkillIds.length} installed skill(s) could not be resolved and were skipped`
646
- );
647
- }
648
621
  const selectedDomains = orderDomains(typedKeys(domainSelections));
649
622
  const skillConfigs = resolvedSkillIds.map(
650
623
  (id) => buildSkillConfigForId(id, savedConfigs)
@@ -701,7 +674,7 @@ var useWizardStore = create((set, get) => ({
701
674
  }
702
675
  if (isSelected) {
703
676
  const categoryDef = matrix.categories[category];
704
- if (categoryDef?.exclusive && categoryDef?.required) {
677
+ if (categoryDef?.exclusive && categoryDef.required) {
705
678
  const categorySkillCount = typedValues(matrix.skills).filter(
706
679
  (s) => s.category === category
707
680
  ).length;
@@ -712,7 +685,7 @@ var useWizardStore = create((set, get) => ({
712
685
  }
713
686
  if (exclusive && !isSelected) {
714
687
  const wouldDropLockedSkill = currentSelections.some(
715
- (selectedId) => isGloballyLockedSkill(installed, state.skillConfigs, selectedId)
688
+ (selectedId) => blocksExclusiveSwap(installed, state.skillConfigs, selectedId)
716
689
  );
717
690
  if (wouldDropLockedSkill && !state.isEditingFromGlobalScope) {
718
691
  return { toastMessage: TOAST_MESSAGES.GLOBAL_SKILLS_LOCKED };
@@ -776,33 +749,6 @@ var useWizardStore = create((set, get) => ({
776
749
  }
777
750
  },
778
751
  toggleShowLabels: () => set((state) => ({ showLabels: !state.showLabels })),
779
- toggleFilterIncompatible: () => set((state) => {
780
- if (state.filterIncompatible) return { filterIncompatible: false };
781
- const webSelections = state.domainSelections.web;
782
- if (!webSelections) return { filterIncompatible: true };
783
- const removed = findIncompatibleWebSkills(webSelections, state.skillConfigs);
784
- if (removed.size === 0) return { filterIncompatible: true };
785
- const installed = state.installedSkillConfigs ?? [];
786
- const removesLockedGlobal = [...removed].some(
787
- (id) => hasGlobalActive(installed, id) || hasGlobalTombstone(installed, id) && hasGlobalActive(state.skillConfigs, id)
788
- );
789
- if (removesLockedGlobal && !state.isEditingFromGlobalScope) {
790
- return { toastMessage: TOAST_MESSAGES.GLOBAL_SKILLS_LOCKED };
791
- }
792
- return {
793
- filterIncompatible: true,
794
- domainSelections: {
795
- ...state.domainSelections,
796
- web: removeSkillsFromSelections(webSelections, removed)
797
- },
798
- // Global-scope edit: clean uninstall, no tombstone (D-233 Scenario C).
799
- skillConfigs: applySkillRemoval(
800
- state.skillConfigs,
801
- removed,
802
- state.isEditingFromGlobalScope ? null : state.installedSkillConfigs
803
- )
804
- };
805
- }),
806
752
  deriveInstallMode: () => {
807
753
  const { skillConfigs } = get();
808
754
  return deriveInstallMode(skillConfigs);
@@ -837,40 +783,23 @@ var useWizardStore = create((set, get) => ({
837
783
  const categories = buildCategoriesForDomain(
838
784
  domain,
839
785
  state.getAllSelectedTechnologies(),
840
- state.domainSelections[domain] ?? {},
841
786
  void 0,
842
- state.skillConfigs,
843
- state.filterIncompatible
787
+ state.skillConfigs
844
788
  );
845
789
  set({ focusedSkillId: categories[0]?.options[0]?.id ?? null });
846
790
  },
847
- setSourceSelection: (skillId, sourceId, scope) => set((state) => {
791
+ setInstallMode: (skillId, mode, scope) => set((state) => {
848
792
  if (!skillId) {
849
- warn("Ignoring setSourceSelection call with empty skillId");
850
- return state;
851
- }
852
- if (!sourceId) {
853
- warn(`Ignoring setSourceSelection call with empty sourceId for skill '${skillId}'`);
793
+ warn("Ignoring setInstallMode call with empty skillId");
854
794
  return state;
855
795
  }
796
+ const source = sourceForInstallMode(getSkillById(skillId), mode);
856
797
  return {
857
- skillConfigs: withActiveEntrySource(state.skillConfigs, skillId, scope, sourceId)
798
+ skillConfigs: withActiveEntrySource(state.skillConfigs, skillId, scope, source)
858
799
  };
859
800
  }),
860
- setCustomizeSources: (customize) => set({ customizeSources: customize }),
861
- toggleSettings: () => set((state) => ({ showSettings: !state.showSettings })),
862
801
  toggleInfo: () => set((state) => ({ showInfo: !state.showInfo })),
863
802
  setToastMessage: (message) => set({ toastMessage: message }),
864
- bindSkill: (skill) => set((state) => {
865
- const exists = state.boundSkills.some(
866
- (b) => b.id === skill.id && b.sourceUrl === skill.sourceUrl
867
- );
868
- if (exists) {
869
- warn(`Skill '${skill.id}' from '${skill.sourceUrl}' is already bound \u2014 skipping duplicate`);
870
- return state;
871
- }
872
- return { boundSkills: [...state.boundSkills, skill] };
873
- }),
874
803
  goBack: () => set((state) => {
875
804
  if (state.history.length === 0) return state;
876
805
  const history = [...state.history];
@@ -923,7 +852,10 @@ var useWizardStore = create((set, get) => ({
923
852
  }),
924
853
  setFocusedAgentId: (id) => set({ focusedAgentId: id }),
925
854
  preselectAgentsFromDomains: () => set((state) => {
926
- const sorted = state.selectedDomains.flatMap((domain) => DOMAIN_AGENTS[domain] ?? []).sort();
855
+ if (state.selectedStackId) return state;
856
+ const sorted = [
857
+ ...new Set(state.selectedDomains.flatMap((domain) => DOMAIN_AGENTS[domain] ?? []))
858
+ ].sort();
927
859
  const roster = new Set(sorted);
928
860
  const merged = sorted.map((name) => buildAgentConfigForName(name, state.agentConfigs));
929
861
  const retained = state.agentConfigs.filter((ac) => survivesRosterRebuild(ac, roster));
@@ -962,7 +894,7 @@ var useWizardStore = create((set, get) => ({
962
894
  const state = get();
963
895
  const isStackDefaults = state.approach === "stack" && !!state.selectedStackId && state.stackAction === "defaults";
964
896
  const skippedSteps = isStackDefaults ? ["build", "sources", "agents"] : [];
965
- const precedingSteps = WIZARD_STEP_ORDER.slice(0, WIZARD_STEP_ORDER.indexOf(state.step));
897
+ const precedingSteps = stepsBefore(getActiveStepFlow(), state.step);
966
898
  const completedSteps = precedingSteps.filter((step) => !skippedSteps.includes(step));
967
899
  return { completedSteps, skippedSteps };
968
900
  },
@@ -988,26 +920,22 @@ var useWizardStore = create((set, get) => ({
988
920
  set((state) => ({
989
921
  // Never touch tombstones (see setAllSourcesEject) — the excluded global tombstone keeps its
990
922
  // marketplace source describing the masked global install (D-265).
991
- skillConfigs: state.skillConfigs.map((sc) => {
992
- if (sc.excluded) return sc;
993
- const marketplaceSource = getSkillById(sc.id).availableSources?.find(
994
- (source) => source.type !== "local"
995
- );
996
- return marketplaceSource ? { ...sc, source: marketplaceSource.name } : sc;
997
- })
923
+ skillConfigs: state.skillConfigs.map(
924
+ (sc) => sc.excluded ? sc : { ...sc, source: marketplaceSourceName(getSkillById(sc.id)) }
925
+ )
998
926
  }));
999
927
  },
1000
928
  buildSourceRows: () => {
1001
929
  const state = get();
1002
930
  const selectedTechnologies = get().getAllSelectedTechnologies();
1003
- const { skillConfigs, boundSkills } = state;
931
+ const { skillConfigs } = state;
1004
932
  const selectedSet = new Set(selectedTechnologies);
1005
933
  const inheritedSkillIds = skillConfigs.filter((sc) => !sc.excluded && !selectedSet.has(sc.id)).map((sc) => sc.id);
1006
934
  const allActiveIds = /* @__PURE__ */ new Set([...inheritedSkillIds, ...selectedTechnologies]);
1007
935
  const excludedGlobalIds = skillConfigs.filter((sc) => isGlobalTombstone(sc) && !allActiveIds.has(sc.id)).map((sc) => sc.id);
1008
936
  const liveSkillIds = [...inheritedSkillIds, ...selectedTechnologies, ...excludedGlobalIds];
1009
937
  const installedSkillSlots = collectInstalledSkillSlots(state.installedSkillConfigs);
1010
- const resolveRowInputs = (id) => resolveSkillRowInputs(id, skillConfigs, boundSkills);
938
+ const resolveRowInputs = (id) => resolveSkillRowInputs(id, skillConfigs);
1011
939
  const liveRows = liveSkillIds.flatMap((id) => {
1012
940
  const { skillId, configEntry, options } = resolveRowInputs(id);
1013
941
  return classifySkillSourceRows(skillId, options, {
@@ -1071,6 +999,7 @@ function hydrateForEdit(initialStep, options) {
1071
999
  });
1072
1000
  useWizardStore.getState().seedFocusedSkillForActiveDomain();
1073
1001
  }
1002
+ var FIRST_STEP_WITHOUT_STACKS = "domains";
1074
1003
  function hydrateForInit(options) {
1075
1004
  const {
1076
1005
  initialDomains,
@@ -1098,6 +1027,10 @@ function hydrateForInit(options) {
1098
1027
  }
1099
1028
  } : {}
1100
1029
  });
1030
+ if (!offersStacks()) {
1031
+ useWizardStore.getState().startFromScratch();
1032
+ useWizardStore.setState({ step: FIRST_STEP_WITHOUT_STACKS, history: [] });
1033
+ }
1101
1034
  useWizardStore.getState().seedFocusedSkillForActiveDomain();
1102
1035
  }
1103
1036
 
@@ -1108,8 +1041,9 @@ export {
1108
1041
  buildCategoriesForDomain,
1109
1042
  orderDomains,
1110
1043
  WIZARD_STEP_ORDER,
1044
+ getActiveStepFlow,
1111
1045
  createInitialState,
1112
1046
  useWizardStore,
1113
1047
  hydrateWizardStore
1114
1048
  };
1115
- //# sourceMappingURL=chunk-5UWKOOIS.js.map
1049
+ //# sourceMappingURL=chunk-HEBPKK5L.js.map