agents-inc 0.149.2 → 0.151.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 (572) hide show
  1. package/CHANGELOG.md +2287 -0
  2. package/LICENSE +21 -0
  3. package/README.md +136 -19
  4. package/assets/demo.gif +0 -0
  5. package/assets/demo.tape +266 -0
  6. package/assets/logo.svg +75 -0
  7. package/dist/chunk-2RSNKBXC.js +84 -0
  8. package/dist/chunk-2RSNKBXC.js.map +1 -0
  9. package/dist/chunk-3LIU2ZEF.js +1355 -0
  10. package/dist/chunk-3LIU2ZEF.js.map +1 -0
  11. package/dist/chunk-3XFUQ6OL.js +68 -0
  12. package/dist/chunk-3XFUQ6OL.js.map +1 -0
  13. package/dist/chunk-3YGUHWLR.js +258 -0
  14. package/dist/chunk-3YGUHWLR.js.map +1 -0
  15. package/dist/chunk-44LLPS2N.js +1135 -0
  16. package/dist/chunk-44LLPS2N.js.map +1 -0
  17. package/dist/chunk-4R6PGHQQ.js +300 -0
  18. package/dist/chunk-4R6PGHQQ.js.map +1 -0
  19. package/dist/chunk-5V2O6C3T.js +112 -0
  20. package/dist/chunk-5V2O6C3T.js.map +1 -0
  21. package/dist/chunk-6RBQBOBS.js +287 -0
  22. package/dist/chunk-6RBQBOBS.js.map +1 -0
  23. package/dist/chunk-7QIHKQL5.js +181 -0
  24. package/dist/chunk-7QIHKQL5.js.map +1 -0
  25. package/dist/chunk-BNE4HHIH.js +28 -0
  26. package/dist/chunk-BNE4HHIH.js.map +1 -0
  27. package/dist/chunk-C55DN7GE.js +35 -0
  28. package/dist/chunk-C55DN7GE.js.map +1 -0
  29. package/dist/chunk-DAG2ULNF.js +125 -0
  30. package/dist/chunk-DAG2ULNF.js.map +1 -0
  31. package/dist/chunk-DG2NGZ7S.js +10929 -0
  32. package/dist/chunk-DG2NGZ7S.js.map +1 -0
  33. package/dist/chunk-DIBCRIMR.js +36 -0
  34. package/dist/chunk-DIBCRIMR.js.map +1 -0
  35. package/dist/chunk-DUVWGO6E.js +54 -0
  36. package/dist/chunk-DUVWGO6E.js.map +1 -0
  37. package/dist/chunk-EKWAUOQB.js +96 -0
  38. package/dist/chunk-EKWAUOQB.js.map +1 -0
  39. package/dist/chunk-ES3NJZON.js +31 -0
  40. package/dist/chunk-ES3NJZON.js.map +1 -0
  41. package/dist/chunk-EVXG3X6G.js +179 -0
  42. package/dist/chunk-EVXG3X6G.js.map +1 -0
  43. package/dist/chunk-EZ7STXUV.js +349 -0
  44. package/dist/chunk-EZ7STXUV.js.map +1 -0
  45. package/dist/chunk-FYPUUYSG.js +31 -0
  46. package/dist/chunk-FYPUUYSG.js.map +1 -0
  47. package/dist/chunk-GYG5SE2D.js +81 -0
  48. package/dist/chunk-GYG5SE2D.js.map +1 -0
  49. package/dist/chunk-I3XKEGHM.js +16383 -0
  50. package/dist/chunk-I3XKEGHM.js.map +1 -0
  51. package/dist/chunk-IHO75PMZ.js +40 -0
  52. package/dist/chunk-IHO75PMZ.js.map +1 -0
  53. package/dist/chunk-IOJR5TOY.js +47 -0
  54. package/dist/chunk-IOJR5TOY.js.map +1 -0
  55. package/dist/chunk-K3OU6TGX.js +77 -0
  56. package/dist/chunk-K3OU6TGX.js.map +1 -0
  57. package/dist/chunk-KIR7VYQD.js +63 -0
  58. package/dist/chunk-KIR7VYQD.js.map +1 -0
  59. package/dist/chunk-KOPEM3Q7.js +27 -0
  60. package/dist/chunk-KOPEM3Q7.js.map +1 -0
  61. package/dist/chunk-KSZ6PCY4.js +43 -0
  62. package/dist/chunk-KSZ6PCY4.js.map +1 -0
  63. package/dist/chunk-LAXAQ3PZ.js +235 -0
  64. package/dist/chunk-LAXAQ3PZ.js.map +1 -0
  65. package/dist/chunk-LYYXX2W5.js +87 -0
  66. package/dist/chunk-LYYXX2W5.js.map +1 -0
  67. package/dist/chunk-NGLQ5W7U.js +339 -0
  68. package/dist/chunk-NGLQ5W7U.js.map +1 -0
  69. package/dist/chunk-NHCGC6DG.js +111 -0
  70. package/dist/chunk-NHCGC6DG.js.map +1 -0
  71. package/dist/chunk-NIKUMXE7.js +24 -0
  72. package/dist/chunk-NIKUMXE7.js.map +1 -0
  73. package/dist/chunk-NM3EDGB5.js +300 -0
  74. package/dist/chunk-NM3EDGB5.js.map +1 -0
  75. package/dist/chunk-O5ASLZ2K.js +270 -0
  76. package/dist/chunk-O5ASLZ2K.js.map +1 -0
  77. package/dist/chunk-OJIESW5B.js +174 -0
  78. package/dist/chunk-OJIESW5B.js.map +1 -0
  79. package/dist/chunk-OZZGXBCN.js +15 -0
  80. package/dist/chunk-OZZGXBCN.js.map +1 -0
  81. package/dist/chunk-P3PN5SVI.js +27 -0
  82. package/dist/chunk-P3PN5SVI.js.map +1 -0
  83. package/dist/chunk-P56WJ5FA.js +50 -0
  84. package/dist/chunk-P56WJ5FA.js.map +1 -0
  85. package/dist/chunk-PG4G4IIK.js +24 -0
  86. package/dist/chunk-PG4G4IIK.js.map +1 -0
  87. package/dist/chunk-PV2HNW4I.js +382 -0
  88. package/dist/chunk-PV2HNW4I.js.map +1 -0
  89. package/dist/chunk-QQLRX4KI.js +41 -0
  90. package/dist/chunk-QQLRX4KI.js.map +1 -0
  91. package/dist/chunk-QTFQEYDA.js +789 -0
  92. package/dist/chunk-QTFQEYDA.js.map +1 -0
  93. package/dist/chunk-RBHYLCUB.js +31 -0
  94. package/dist/chunk-RBHYLCUB.js.map +1 -0
  95. package/dist/chunk-SHHOMVWC.js +62 -0
  96. package/dist/chunk-SHHOMVWC.js.map +1 -0
  97. package/dist/chunk-SI5FOARI.js +42 -0
  98. package/dist/chunk-SI5FOARI.js.map +1 -0
  99. package/dist/chunk-SYUOXSPU.js +510 -0
  100. package/dist/chunk-SYUOXSPU.js.map +1 -0
  101. package/dist/chunk-THKIOI32.js +939 -0
  102. package/dist/chunk-THKIOI32.js.map +1 -0
  103. package/dist/chunk-TVHRMRD3.js +6014 -0
  104. package/dist/chunk-TVHRMRD3.js.map +1 -0
  105. package/dist/chunk-TYJLR32W.js +128 -0
  106. package/dist/chunk-TYJLR32W.js.map +1 -0
  107. package/dist/chunk-UFURYGD3.js +20 -0
  108. package/dist/chunk-UFURYGD3.js.map +1 -0
  109. package/dist/chunk-UTFN6UJS.js +253 -0
  110. package/dist/chunk-UTFN6UJS.js.map +1 -0
  111. package/dist/chunk-V7QOSGQA.js +298 -0
  112. package/dist/chunk-V7QOSGQA.js.map +1 -0
  113. package/dist/chunk-VEP23B5W.js +27 -0
  114. package/dist/chunk-VEP23B5W.js.map +1 -0
  115. package/dist/chunk-VG2TVBFN.js +52 -0
  116. package/dist/chunk-VG2TVBFN.js.map +1 -0
  117. package/dist/chunk-WFWCZEMS.js +92 -0
  118. package/dist/chunk-WFWCZEMS.js.map +1 -0
  119. package/dist/chunk-WK4J2CHH.js +430 -0
  120. package/dist/chunk-WK4J2CHH.js.map +1 -0
  121. package/dist/chunk-XA57SX4T.js +115 -0
  122. package/dist/chunk-XA57SX4T.js.map +1 -0
  123. package/dist/chunk-Y4CXDA3I.js +181 -0
  124. package/dist/chunk-Y4CXDA3I.js.map +1 -0
  125. package/dist/chunk-YA4QQKKE.js +51 -0
  126. package/dist/chunk-YA4QQKKE.js.map +1 -0
  127. package/dist/chunk-YBVA7GPW.js +27 -0
  128. package/dist/chunk-YBVA7GPW.js.map +1 -0
  129. package/dist/chunk-YU2VGX5R.js +4205 -0
  130. package/dist/chunk-YU2VGX5R.js.map +1 -0
  131. package/dist/commands/build/marketplace.js +250 -0
  132. package/dist/commands/build/marketplace.js.map +1 -0
  133. package/dist/commands/build/plugins.js +176 -0
  134. package/dist/commands/build/plugins.js.map +1 -0
  135. package/dist/commands/compile.js +331 -0
  136. package/dist/commands/compile.js.map +1 -0
  137. package/dist/commands/doctor.js +475 -0
  138. package/dist/commands/doctor.js.map +1 -0
  139. package/dist/commands/edit.js +765 -0
  140. package/dist/commands/edit.js.map +1 -0
  141. package/dist/commands/eject.js +393 -0
  142. package/dist/commands/eject.js.map +1 -0
  143. package/dist/commands/import/skill.js +349 -0
  144. package/dist/commands/import/skill.js.map +1 -0
  145. package/dist/commands/init.js +66 -0
  146. package/dist/commands/init.js.map +1 -0
  147. package/dist/commands/list.js +115 -0
  148. package/dist/commands/list.js.map +1 -0
  149. package/dist/commands/new/agent.js +304 -0
  150. package/dist/commands/new/agent.js.map +1 -0
  151. package/dist/commands/new/marketplace.js +315 -0
  152. package/dist/commands/new/marketplace.js.map +1 -0
  153. package/dist/commands/new/skill.js +28 -0
  154. package/dist/commands/new/skill.js.map +1 -0
  155. package/dist/commands/search.js +176 -0
  156. package/dist/commands/search.js.map +1 -0
  157. package/dist/commands/uninstall.js +570 -0
  158. package/dist/commands/uninstall.js.map +1 -0
  159. package/dist/commands/update.js +368 -0
  160. package/dist/commands/update.js.map +1 -0
  161. package/dist/commands/validate.js +581 -0
  162. package/dist/commands/validate.js.map +1 -0
  163. package/dist/components/common/confirm.js +9 -0
  164. package/dist/components/common/confirm.js.map +1 -0
  165. package/dist/components/common/confirm.test.js +203 -0
  166. package/dist/components/common/confirm.test.js.map +1 -0
  167. package/dist/components/common/prompt-confirm.js +11 -0
  168. package/dist/components/common/prompt-confirm.js.map +1 -0
  169. package/dist/components/common/select-list.js +11 -0
  170. package/dist/components/common/select-list.js.map +1 -0
  171. package/dist/components/common/spinner.js +9 -0
  172. package/dist/components/common/spinner.js.map +1 -0
  173. package/dist/components/wizard/category-grid.js +16 -0
  174. package/dist/components/wizard/category-grid.js.map +1 -0
  175. package/dist/components/wizard/category-grid.test.js +1253 -0
  176. package/dist/components/wizard/category-grid.test.js.map +1 -0
  177. package/dist/components/wizard/checkbox-grid.js +14 -0
  178. package/dist/components/wizard/checkbox-grid.js.map +1 -0
  179. package/dist/components/wizard/checkbox-grid.test.js +264 -0
  180. package/dist/components/wizard/checkbox-grid.test.js.map +1 -0
  181. package/dist/components/wizard/domain-selection.js +22 -0
  182. package/dist/components/wizard/domain-selection.js.map +1 -0
  183. package/dist/components/wizard/run-wizard-session.js +47 -0
  184. package/dist/components/wizard/run-wizard-session.js.map +1 -0
  185. package/dist/components/wizard/scroll-affordance.js +10 -0
  186. package/dist/components/wizard/scroll-affordance.js.map +1 -0
  187. package/dist/components/wizard/search-modal.js +14 -0
  188. package/dist/components/wizard/search-modal.js.map +1 -0
  189. package/dist/components/wizard/search-modal.test.js +212 -0
  190. package/dist/components/wizard/search-modal.test.js.map +1 -0
  191. package/dist/components/wizard/selection-card.js +10 -0
  192. package/dist/components/wizard/selection-card.js.map +1 -0
  193. package/dist/components/wizard/skill-agent-summary.js +16 -0
  194. package/dist/components/wizard/skill-agent-summary.js.map +1 -0
  195. package/dist/components/wizard/source-grid.js +23 -0
  196. package/dist/components/wizard/source-grid.js.map +1 -0
  197. package/dist/components/wizard/source-grid.test.js +1094 -0
  198. package/dist/components/wizard/source-grid.test.js.map +1 -0
  199. package/dist/components/wizard/stack-selection.js +20 -0
  200. package/dist/components/wizard/stack-selection.js.map +1 -0
  201. package/dist/components/wizard/step-agents.js +22 -0
  202. package/dist/components/wizard/step-agents.js.map +1 -0
  203. package/dist/components/wizard/step-agents.test.js +204 -0
  204. package/dist/components/wizard/step-agents.test.js.map +1 -0
  205. package/dist/components/wizard/step-build.js +22 -0
  206. package/dist/components/wizard/step-build.js.map +1 -0
  207. package/dist/components/wizard/step-build.test.js +552 -0
  208. package/dist/components/wizard/step-build.test.js.map +1 -0
  209. package/dist/components/wizard/step-confirm.js +21 -0
  210. package/dist/components/wizard/step-confirm.js.map +1 -0
  211. package/dist/components/wizard/step-confirm.test.js +744 -0
  212. package/dist/components/wizard/step-confirm.test.js.map +1 -0
  213. package/dist/components/wizard/step-settings.js +19 -0
  214. package/dist/components/wizard/step-settings.js.map +1 -0
  215. package/dist/components/wizard/step-settings.test.js +244 -0
  216. package/dist/components/wizard/step-settings.test.js.map +1 -0
  217. package/dist/components/wizard/step-sources.js +28 -0
  218. package/dist/components/wizard/step-sources.js.map +1 -0
  219. package/dist/components/wizard/step-sources.test.js +155 -0
  220. package/dist/components/wizard/step-sources.test.js.map +1 -0
  221. package/dist/components/wizard/step-stack.js +21 -0
  222. package/dist/components/wizard/step-stack.js.map +1 -0
  223. package/dist/components/wizard/step-stack.test.js +262 -0
  224. package/dist/components/wizard/step-stack.test.js.map +1 -0
  225. package/dist/components/wizard/summary-panel.js +20 -0
  226. package/dist/components/wizard/summary-panel.js.map +1 -0
  227. package/dist/components/wizard/summary-panel.test.js +317 -0
  228. package/dist/components/wizard/summary-panel.test.js.map +1 -0
  229. package/dist/components/wizard/toast.js +10 -0
  230. package/dist/components/wizard/toast.js.map +1 -0
  231. package/dist/components/wizard/wizard-layout.js +26 -0
  232. package/dist/components/wizard/wizard-layout.js.map +1 -0
  233. package/dist/components/wizard/wizard-layout.test.js +200 -0
  234. package/dist/components/wizard/wizard-layout.test.js.map +1 -0
  235. package/dist/components/wizard/wizard-tabs.js +20 -0
  236. package/dist/components/wizard/wizard-tabs.js.map +1 -0
  237. package/dist/components/wizard/wizard-tabs.test.js +290 -0
  238. package/dist/components/wizard/wizard-tabs.test.js.map +1 -0
  239. package/dist/components/wizard/wizard.js +48 -0
  240. package/dist/components/wizard/wizard.js.map +1 -0
  241. package/dist/config-exports.js +20 -0
  242. package/dist/config-exports.js.map +1 -0
  243. package/dist/copy-local-skills-UPA2GUZV.js +15 -0
  244. package/dist/copy-local-skills-UPA2GUZV.js.map +1 -0
  245. package/dist/dist-VNJNNJK7.js +550 -0
  246. package/dist/dist-VNJNNJK7.js.map +1 -0
  247. package/dist/hooks/init.js +90 -0
  248. package/dist/hooks/init.js.map +1 -0
  249. package/dist/index.js +10 -0
  250. package/dist/index.js.map +1 -0
  251. package/dist/load-agent-defs-SB4XAOVB.js +16 -0
  252. package/dist/load-agent-defs-SB4XAOVB.js.map +1 -0
  253. package/dist/loader-E2ERJYVA.js +23 -0
  254. package/dist/loader-E2ERJYVA.js.map +1 -0
  255. package/dist/magic-string.es-5TV73NJD.js +1316 -0
  256. package/dist/magic-string.es-5TV73NJD.js.map +1 -0
  257. package/dist/recompile-project-agents-U4ZY2GDX.js +20 -0
  258. package/dist/recompile-project-agents-U4ZY2GDX.js.map +1 -0
  259. package/dist/source-loader-5UNRU7EZ.js +20 -0
  260. package/dist/source-loader-5UNRU7EZ.js.map +1 -0
  261. package/dist/source-manager-3O54SIIB.js +18 -0
  262. package/dist/source-manager-3O54SIIB.js.map +1 -0
  263. package/dist/src/agents/_templates/agent.liquid +161 -0
  264. package/dist/src/agents/_templates/methodologies/anti-over-engineering.liquid +121 -0
  265. package/dist/src/agents/_templates/methodologies/context-management.liquid +162 -0
  266. package/dist/src/agents/_templates/methodologies/improvement-protocol.liquid +150 -0
  267. package/dist/src/agents/_templates/methodologies/investigation-requirements.liquid +49 -0
  268. package/dist/src/agents/_templates/methodologies/success-criteria.liquid +111 -0
  269. package/dist/src/agents/_templates/methodologies/write-verification.liquid +43 -0
  270. package/dist/src/agents/developer/ai-developer/critical-reminders.md +54 -0
  271. package/dist/src/agents/developer/ai-developer/critical-requirements.md +59 -0
  272. package/dist/src/agents/developer/ai-developer/identity.md +51 -0
  273. package/dist/src/agents/developer/ai-developer/metadata.yaml +12 -0
  274. package/dist/src/agents/developer/ai-developer/output.md +366 -0
  275. package/dist/src/agents/developer/ai-developer/playbook.md +335 -0
  276. package/dist/src/agents/developer/api-developer/critical-reminders.md +46 -0
  277. package/dist/src/agents/developer/api-developer/critical-requirements.md +44 -0
  278. package/dist/src/agents/developer/api-developer/identity.md +49 -0
  279. package/dist/src/agents/developer/api-developer/metadata.yaml +12 -0
  280. package/dist/src/agents/developer/api-developer/output.md +432 -0
  281. package/dist/src/agents/developer/api-developer/playbook.md +352 -0
  282. package/dist/src/agents/developer/cli-developer/critical-reminders.md +51 -0
  283. package/dist/src/agents/developer/cli-developer/critical-requirements.md +51 -0
  284. package/dist/src/agents/developer/cli-developer/identity.md +51 -0
  285. package/dist/src/agents/developer/cli-developer/metadata.yaml +12 -0
  286. package/dist/src/agents/developer/cli-developer/output.md +285 -0
  287. package/dist/src/agents/developer/cli-developer/playbook.md +386 -0
  288. package/dist/src/agents/developer/web-architecture/critical-reminders.md +48 -0
  289. package/dist/src/agents/developer/web-architecture/critical-requirements.md +65 -0
  290. package/dist/src/agents/developer/web-architecture/identity.md +64 -0
  291. package/dist/src/agents/developer/web-architecture/metadata.yaml +12 -0
  292. package/dist/src/agents/developer/web-architecture/output.md +449 -0
  293. package/dist/src/agents/developer/web-architecture/playbook.md +481 -0
  294. package/dist/src/agents/developer/web-developer/critical-reminders.md +40 -0
  295. package/dist/src/agents/developer/web-developer/critical-requirements.md +39 -0
  296. package/dist/src/agents/developer/web-developer/identity.md +32 -0
  297. package/dist/src/agents/developer/web-developer/metadata.yaml +12 -0
  298. package/dist/src/agents/developer/web-developer/output.md +323 -0
  299. package/dist/src/agents/developer/web-developer/playbook.md +349 -0
  300. package/dist/src/agents/meta/agent-summoner/critical-reminders.md +45 -0
  301. package/dist/src/agents/meta/agent-summoner/critical-requirements.md +52 -0
  302. package/dist/src/agents/meta/agent-summoner/identity.md +34 -0
  303. package/dist/src/agents/meta/agent-summoner/metadata.yaml +12 -0
  304. package/dist/src/agents/meta/agent-summoner/output.md +296 -0
  305. package/dist/src/agents/meta/agent-summoner/playbook.md +1469 -0
  306. package/dist/src/agents/meta/codex-keeper/critical-reminders.md +39 -0
  307. package/dist/src/agents/meta/codex-keeper/critical-requirements.md +29 -0
  308. package/dist/src/agents/meta/codex-keeper/identity.md +45 -0
  309. package/dist/src/agents/meta/codex-keeper/metadata.yaml +12 -0
  310. package/dist/src/agents/meta/codex-keeper/output.md +384 -0
  311. package/dist/src/agents/meta/codex-keeper/playbook.md +1183 -0
  312. package/dist/src/agents/meta/convention-keeper/critical-reminders.md +32 -0
  313. package/dist/src/agents/meta/convention-keeper/critical-requirements.md +32 -0
  314. package/dist/src/agents/meta/convention-keeper/identity.md +33 -0
  315. package/dist/src/agents/meta/convention-keeper/metadata.yaml +12 -0
  316. package/dist/src/agents/meta/convention-keeper/output.md +206 -0
  317. package/dist/src/agents/meta/convention-keeper/playbook.md +180 -0
  318. package/dist/src/agents/meta/skill-summoner/critical-reminders.md +112 -0
  319. package/dist/src/agents/meta/skill-summoner/critical-requirements.md +62 -0
  320. package/dist/src/agents/meta/skill-summoner/identity.md +31 -0
  321. package/dist/src/agents/meta/skill-summoner/metadata.yaml +13 -0
  322. package/dist/src/agents/meta/skill-summoner/output.md +390 -0
  323. package/dist/src/agents/meta/skill-summoner/playbook.md +1457 -0
  324. package/dist/src/agents/pattern/pattern-scout/critical-reminders.md +71 -0
  325. package/dist/src/agents/pattern/pattern-scout/critical-requirements.md +31 -0
  326. package/dist/src/agents/pattern/pattern-scout/identity.md +25 -0
  327. package/dist/src/agents/pattern/pattern-scout/metadata.yaml +10 -0
  328. package/dist/src/agents/pattern/pattern-scout/output.md +290 -0
  329. package/dist/src/agents/pattern/pattern-scout/playbook.md +1806 -0
  330. package/dist/src/agents/pattern/web-pattern-critique/critical-reminders.md +30 -0
  331. package/dist/src/agents/pattern/web-pattern-critique/critical-requirements.md +28 -0
  332. package/dist/src/agents/pattern/web-pattern-critique/identity.md +41 -0
  333. package/dist/src/agents/pattern/web-pattern-critique/metadata.yaml +12 -0
  334. package/dist/src/agents/pattern/web-pattern-critique/output.md +314 -0
  335. package/dist/src/agents/pattern/web-pattern-critique/playbook.md +572 -0
  336. package/dist/src/agents/planning/api-pm/critical-reminders.md +48 -0
  337. package/dist/src/agents/planning/api-pm/critical-requirements.md +41 -0
  338. package/dist/src/agents/planning/api-pm/identity.md +39 -0
  339. package/dist/src/agents/planning/api-pm/metadata.yaml +12 -0
  340. package/dist/src/agents/planning/api-pm/output.md +475 -0
  341. package/dist/src/agents/planning/api-pm/playbook.md +129 -0
  342. package/dist/src/agents/planning/web-pm/critical-reminders.md +36 -0
  343. package/dist/src/agents/planning/web-pm/critical-requirements.md +32 -0
  344. package/dist/src/agents/planning/web-pm/identity.md +26 -0
  345. package/dist/src/agents/planning/web-pm/metadata.yaml +12 -0
  346. package/dist/src/agents/planning/web-pm/output.md +314 -0
  347. package/dist/src/agents/planning/web-pm/playbook.md +318 -0
  348. package/dist/src/agents/researcher/api-researcher/critical-reminders.md +27 -0
  349. package/dist/src/agents/researcher/api-researcher/critical-requirements.md +28 -0
  350. package/dist/src/agents/researcher/api-researcher/identity.md +71 -0
  351. package/dist/src/agents/researcher/api-researcher/metadata.yaml +10 -0
  352. package/dist/src/agents/researcher/api-researcher/output.md +254 -0
  353. package/dist/src/agents/researcher/api-researcher/playbook.md +201 -0
  354. package/dist/src/agents/researcher/web-researcher/critical-reminders.md +39 -0
  355. package/dist/src/agents/researcher/web-researcher/critical-requirements.md +26 -0
  356. package/dist/src/agents/researcher/web-researcher/identity.md +69 -0
  357. package/dist/src/agents/researcher/web-researcher/metadata.yaml +10 -0
  358. package/dist/src/agents/researcher/web-researcher/output.md +241 -0
  359. package/dist/src/agents/researcher/web-researcher/playbook.md +217 -0
  360. package/dist/src/agents/reviewer/ai-reviewer/critical-reminders.md +40 -0
  361. package/dist/src/agents/reviewer/ai-reviewer/critical-requirements.md +37 -0
  362. package/dist/src/agents/reviewer/ai-reviewer/identity.md +51 -0
  363. package/dist/src/agents/reviewer/ai-reviewer/metadata.yaml +10 -0
  364. package/dist/src/agents/reviewer/ai-reviewer/output.md +395 -0
  365. package/dist/src/agents/reviewer/ai-reviewer/playbook.md +90 -0
  366. package/dist/src/agents/reviewer/api-reviewer/critical-reminders.md +31 -0
  367. package/dist/src/agents/reviewer/api-reviewer/critical-requirements.md +27 -0
  368. package/dist/src/agents/reviewer/api-reviewer/identity.md +51 -0
  369. package/dist/src/agents/reviewer/api-reviewer/metadata.yaml +12 -0
  370. package/dist/src/agents/reviewer/api-reviewer/output.md +343 -0
  371. package/dist/src/agents/reviewer/api-reviewer/playbook.md +288 -0
  372. package/dist/src/agents/reviewer/cli-reviewer/critical-reminders.md +33 -0
  373. package/dist/src/agents/reviewer/cli-reviewer/critical-requirements.md +30 -0
  374. package/dist/src/agents/reviewer/cli-reviewer/identity.md +44 -0
  375. package/dist/src/agents/reviewer/cli-reviewer/metadata.yaml +12 -0
  376. package/dist/src/agents/reviewer/cli-reviewer/output.md +414 -0
  377. package/dist/src/agents/reviewer/cli-reviewer/playbook.md +218 -0
  378. package/dist/src/agents/reviewer/infra-reviewer/critical-reminders.md +38 -0
  379. package/dist/src/agents/reviewer/infra-reviewer/critical-requirements.md +38 -0
  380. package/dist/src/agents/reviewer/infra-reviewer/identity.md +53 -0
  381. package/dist/src/agents/reviewer/infra-reviewer/metadata.yaml +10 -0
  382. package/dist/src/agents/reviewer/infra-reviewer/output.md +364 -0
  383. package/dist/src/agents/reviewer/infra-reviewer/playbook.md +161 -0
  384. package/dist/src/agents/reviewer/web-reviewer/critical-reminders.md +31 -0
  385. package/dist/src/agents/reviewer/web-reviewer/critical-requirements.md +26 -0
  386. package/dist/src/agents/reviewer/web-reviewer/identity.md +40 -0
  387. package/dist/src/agents/reviewer/web-reviewer/metadata.yaml +12 -0
  388. package/dist/src/agents/reviewer/web-reviewer/output.md +333 -0
  389. package/dist/src/agents/reviewer/web-reviewer/playbook.md +156 -0
  390. package/dist/src/agents/tester/api-tester/critical-reminders.md +41 -0
  391. package/dist/src/agents/tester/api-tester/critical-requirements.md +41 -0
  392. package/dist/src/agents/tester/api-tester/identity.md +47 -0
  393. package/dist/src/agents/tester/api-tester/metadata.yaml +12 -0
  394. package/dist/src/agents/tester/api-tester/output.md +284 -0
  395. package/dist/src/agents/tester/api-tester/playbook.md +275 -0
  396. package/dist/src/agents/tester/cli-tester/critical-reminders.md +36 -0
  397. package/dist/src/agents/tester/cli-tester/critical-requirements.md +36 -0
  398. package/dist/src/agents/tester/cli-tester/identity.md +43 -0
  399. package/dist/src/agents/tester/cli-tester/metadata.yaml +12 -0
  400. package/dist/src/agents/tester/cli-tester/output.md +313 -0
  401. package/dist/src/agents/tester/cli-tester/playbook.md +221 -0
  402. package/dist/src/agents/tester/web-tester/critical-reminders.md +31 -0
  403. package/dist/src/agents/tester/web-tester/critical-requirements.md +28 -0
  404. package/dist/src/agents/tester/web-tester/identity.md +41 -0
  405. package/dist/src/agents/tester/web-tester/metadata.yaml +12 -0
  406. package/dist/src/agents/tester/web-tester/output.md +321 -0
  407. package/dist/src/agents/tester/web-tester/playbook.md +428 -0
  408. package/dist/stores/d227-same-scope-tombstone-duplicate.test.js +118 -0
  409. package/dist/stores/d227-same-scope-tombstone-duplicate.test.js.map +1 -0
  410. package/dist/stores/wizard-store.js +21 -0
  411. package/dist/stores/wizard-store.js.map +1 -0
  412. package/dist/stores/wizard-store.test.js +3053 -0
  413. package/dist/stores/wizard-store.test.js.map +1 -0
  414. package/package.json +130 -12
  415. package/src/agents/_templates/agent.liquid +161 -0
  416. package/src/agents/_templates/methodologies/anti-over-engineering.liquid +121 -0
  417. package/src/agents/_templates/methodologies/context-management.liquid +162 -0
  418. package/src/agents/_templates/methodologies/improvement-protocol.liquid +150 -0
  419. package/src/agents/_templates/methodologies/investigation-requirements.liquid +49 -0
  420. package/src/agents/_templates/methodologies/success-criteria.liquid +111 -0
  421. package/src/agents/_templates/methodologies/write-verification.liquid +43 -0
  422. package/src/agents/developer/ai-developer/critical-reminders.md +54 -0
  423. package/src/agents/developer/ai-developer/critical-requirements.md +59 -0
  424. package/src/agents/developer/ai-developer/identity.md +51 -0
  425. package/src/agents/developer/ai-developer/metadata.yaml +12 -0
  426. package/src/agents/developer/ai-developer/output.md +366 -0
  427. package/src/agents/developer/ai-developer/playbook.md +335 -0
  428. package/src/agents/developer/api-developer/critical-reminders.md +46 -0
  429. package/src/agents/developer/api-developer/critical-requirements.md +44 -0
  430. package/src/agents/developer/api-developer/identity.md +49 -0
  431. package/src/agents/developer/api-developer/metadata.yaml +12 -0
  432. package/src/agents/developer/api-developer/output.md +432 -0
  433. package/src/agents/developer/api-developer/playbook.md +352 -0
  434. package/src/agents/developer/cli-developer/critical-reminders.md +51 -0
  435. package/src/agents/developer/cli-developer/critical-requirements.md +51 -0
  436. package/src/agents/developer/cli-developer/identity.md +51 -0
  437. package/src/agents/developer/cli-developer/metadata.yaml +12 -0
  438. package/src/agents/developer/cli-developer/output.md +285 -0
  439. package/src/agents/developer/cli-developer/playbook.md +386 -0
  440. package/src/agents/developer/web-architecture/critical-reminders.md +48 -0
  441. package/src/agents/developer/web-architecture/critical-requirements.md +65 -0
  442. package/src/agents/developer/web-architecture/identity.md +64 -0
  443. package/src/agents/developer/web-architecture/metadata.yaml +12 -0
  444. package/src/agents/developer/web-architecture/output.md +449 -0
  445. package/src/agents/developer/web-architecture/playbook.md +481 -0
  446. package/src/agents/developer/web-developer/critical-reminders.md +40 -0
  447. package/src/agents/developer/web-developer/critical-requirements.md +39 -0
  448. package/src/agents/developer/web-developer/identity.md +32 -0
  449. package/src/agents/developer/web-developer/metadata.yaml +12 -0
  450. package/src/agents/developer/web-developer/output.md +323 -0
  451. package/src/agents/developer/web-developer/playbook.md +349 -0
  452. package/src/agents/meta/agent-summoner/critical-reminders.md +45 -0
  453. package/src/agents/meta/agent-summoner/critical-requirements.md +52 -0
  454. package/src/agents/meta/agent-summoner/identity.md +34 -0
  455. package/src/agents/meta/agent-summoner/metadata.yaml +12 -0
  456. package/src/agents/meta/agent-summoner/output.md +296 -0
  457. package/src/agents/meta/agent-summoner/playbook.md +1469 -0
  458. package/src/agents/meta/codex-keeper/critical-reminders.md +39 -0
  459. package/src/agents/meta/codex-keeper/critical-requirements.md +29 -0
  460. package/src/agents/meta/codex-keeper/identity.md +45 -0
  461. package/src/agents/meta/codex-keeper/metadata.yaml +12 -0
  462. package/src/agents/meta/codex-keeper/output.md +384 -0
  463. package/src/agents/meta/codex-keeper/playbook.md +1183 -0
  464. package/src/agents/meta/convention-keeper/critical-reminders.md +32 -0
  465. package/src/agents/meta/convention-keeper/critical-requirements.md +32 -0
  466. package/src/agents/meta/convention-keeper/identity.md +33 -0
  467. package/src/agents/meta/convention-keeper/metadata.yaml +12 -0
  468. package/src/agents/meta/convention-keeper/output.md +206 -0
  469. package/src/agents/meta/convention-keeper/playbook.md +180 -0
  470. package/src/agents/meta/skill-summoner/critical-reminders.md +112 -0
  471. package/src/agents/meta/skill-summoner/critical-requirements.md +62 -0
  472. package/src/agents/meta/skill-summoner/identity.md +31 -0
  473. package/src/agents/meta/skill-summoner/metadata.yaml +13 -0
  474. package/src/agents/meta/skill-summoner/output.md +390 -0
  475. package/src/agents/meta/skill-summoner/playbook.md +1457 -0
  476. package/src/agents/pattern/pattern-scout/critical-reminders.md +71 -0
  477. package/src/agents/pattern/pattern-scout/critical-requirements.md +31 -0
  478. package/src/agents/pattern/pattern-scout/identity.md +25 -0
  479. package/src/agents/pattern/pattern-scout/metadata.yaml +10 -0
  480. package/src/agents/pattern/pattern-scout/output.md +290 -0
  481. package/src/agents/pattern/pattern-scout/playbook.md +1806 -0
  482. package/src/agents/pattern/web-pattern-critique/critical-reminders.md +30 -0
  483. package/src/agents/pattern/web-pattern-critique/critical-requirements.md +28 -0
  484. package/src/agents/pattern/web-pattern-critique/identity.md +41 -0
  485. package/src/agents/pattern/web-pattern-critique/metadata.yaml +12 -0
  486. package/src/agents/pattern/web-pattern-critique/output.md +314 -0
  487. package/src/agents/pattern/web-pattern-critique/playbook.md +572 -0
  488. package/src/agents/planning/api-pm/critical-reminders.md +48 -0
  489. package/src/agents/planning/api-pm/critical-requirements.md +41 -0
  490. package/src/agents/planning/api-pm/identity.md +39 -0
  491. package/src/agents/planning/api-pm/metadata.yaml +12 -0
  492. package/src/agents/planning/api-pm/output.md +475 -0
  493. package/src/agents/planning/api-pm/playbook.md +129 -0
  494. package/src/agents/planning/web-pm/critical-reminders.md +36 -0
  495. package/src/agents/planning/web-pm/critical-requirements.md +32 -0
  496. package/src/agents/planning/web-pm/identity.md +26 -0
  497. package/src/agents/planning/web-pm/metadata.yaml +12 -0
  498. package/src/agents/planning/web-pm/output.md +314 -0
  499. package/src/agents/planning/web-pm/playbook.md +318 -0
  500. package/src/agents/researcher/api-researcher/critical-reminders.md +27 -0
  501. package/src/agents/researcher/api-researcher/critical-requirements.md +28 -0
  502. package/src/agents/researcher/api-researcher/identity.md +71 -0
  503. package/src/agents/researcher/api-researcher/metadata.yaml +10 -0
  504. package/src/agents/researcher/api-researcher/output.md +254 -0
  505. package/src/agents/researcher/api-researcher/playbook.md +201 -0
  506. package/src/agents/researcher/web-researcher/critical-reminders.md +39 -0
  507. package/src/agents/researcher/web-researcher/critical-requirements.md +26 -0
  508. package/src/agents/researcher/web-researcher/identity.md +69 -0
  509. package/src/agents/researcher/web-researcher/metadata.yaml +10 -0
  510. package/src/agents/researcher/web-researcher/output.md +241 -0
  511. package/src/agents/researcher/web-researcher/playbook.md +217 -0
  512. package/src/agents/reviewer/ai-reviewer/critical-reminders.md +40 -0
  513. package/src/agents/reviewer/ai-reviewer/critical-requirements.md +37 -0
  514. package/src/agents/reviewer/ai-reviewer/identity.md +51 -0
  515. package/src/agents/reviewer/ai-reviewer/metadata.yaml +10 -0
  516. package/src/agents/reviewer/ai-reviewer/output.md +395 -0
  517. package/src/agents/reviewer/ai-reviewer/playbook.md +90 -0
  518. package/src/agents/reviewer/api-reviewer/critical-reminders.md +31 -0
  519. package/src/agents/reviewer/api-reviewer/critical-requirements.md +27 -0
  520. package/src/agents/reviewer/api-reviewer/identity.md +51 -0
  521. package/src/agents/reviewer/api-reviewer/metadata.yaml +12 -0
  522. package/src/agents/reviewer/api-reviewer/output.md +343 -0
  523. package/src/agents/reviewer/api-reviewer/playbook.md +288 -0
  524. package/src/agents/reviewer/cli-reviewer/critical-reminders.md +33 -0
  525. package/src/agents/reviewer/cli-reviewer/critical-requirements.md +30 -0
  526. package/src/agents/reviewer/cli-reviewer/identity.md +44 -0
  527. package/src/agents/reviewer/cli-reviewer/metadata.yaml +12 -0
  528. package/src/agents/reviewer/cli-reviewer/output.md +414 -0
  529. package/src/agents/reviewer/cli-reviewer/playbook.md +218 -0
  530. package/src/agents/reviewer/infra-reviewer/critical-reminders.md +38 -0
  531. package/src/agents/reviewer/infra-reviewer/critical-requirements.md +38 -0
  532. package/src/agents/reviewer/infra-reviewer/identity.md +53 -0
  533. package/src/agents/reviewer/infra-reviewer/metadata.yaml +10 -0
  534. package/src/agents/reviewer/infra-reviewer/output.md +364 -0
  535. package/src/agents/reviewer/infra-reviewer/playbook.md +161 -0
  536. package/src/agents/reviewer/web-reviewer/critical-reminders.md +31 -0
  537. package/src/agents/reviewer/web-reviewer/critical-requirements.md +26 -0
  538. package/src/agents/reviewer/web-reviewer/identity.md +40 -0
  539. package/src/agents/reviewer/web-reviewer/metadata.yaml +12 -0
  540. package/src/agents/reviewer/web-reviewer/output.md +333 -0
  541. package/src/agents/reviewer/web-reviewer/playbook.md +156 -0
  542. package/src/agents/tester/api-tester/critical-reminders.md +41 -0
  543. package/src/agents/tester/api-tester/critical-requirements.md +41 -0
  544. package/src/agents/tester/api-tester/identity.md +47 -0
  545. package/src/agents/tester/api-tester/metadata.yaml +12 -0
  546. package/src/agents/tester/api-tester/output.md +284 -0
  547. package/src/agents/tester/api-tester/playbook.md +275 -0
  548. package/src/agents/tester/cli-tester/critical-reminders.md +36 -0
  549. package/src/agents/tester/cli-tester/critical-requirements.md +36 -0
  550. package/src/agents/tester/cli-tester/identity.md +43 -0
  551. package/src/agents/tester/cli-tester/metadata.yaml +12 -0
  552. package/src/agents/tester/cli-tester/output.md +313 -0
  553. package/src/agents/tester/cli-tester/playbook.md +221 -0
  554. package/src/agents/tester/web-tester/critical-reminders.md +31 -0
  555. package/src/agents/tester/web-tester/critical-requirements.md +28 -0
  556. package/src/agents/tester/web-tester/identity.md +41 -0
  557. package/src/agents/tester/web-tester/metadata.yaml +12 -0
  558. package/src/agents/tester/web-tester/output.md +321 -0
  559. package/src/agents/tester/web-tester/playbook.md +428 -0
  560. package/src/schemas/agent-frontmatter.schema.json +88 -0
  561. package/src/schemas/agent.schema.json +103 -0
  562. package/src/schemas/custom-metadata.schema.json +74 -0
  563. package/src/schemas/hooks.schema.json +47 -0
  564. package/src/schemas/marketplace.schema.json +119 -0
  565. package/src/schemas/metadata.schema.json +387 -0
  566. package/src/schemas/plugin.schema.json +127 -0
  567. package/src/schemas/project-config.schema.json +189 -0
  568. package/src/schemas/project-source-config.schema.json +96 -0
  569. package/src/schemas/skill-frontmatter.schema.json +42 -0
  570. package/src/schemas/stack.schema.json +191 -0
  571. package/src/schemas/stacks.schema.json +107 -0
  572. package/bin/run.js +0 -3
@@ -0,0 +1,744 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ ARROW_DOWN,
4
+ ENTER,
5
+ ESCAPE,
6
+ RENDER_DELAY_MS,
7
+ delay
8
+ } from "../../chunk-KSZ6PCY4.js";
9
+ import {
10
+ render
11
+ } from "../../chunk-EKWAUOQB.js";
12
+ import {
13
+ buildAgentConfigs,
14
+ buildSkillConfigs
15
+ } from "../../chunk-DIBCRIMR.js";
16
+ import {
17
+ WEB_PAIR_MATRIX,
18
+ WEB_TRIO_MATRIX
19
+ } from "../../chunk-THKIOI32.js";
20
+ import "../../chunk-K3OU6TGX.js";
21
+ import "../../chunk-V7QOSGQA.js";
22
+ import {
23
+ afterEach,
24
+ beforeEach,
25
+ describe,
26
+ globalExpect,
27
+ it,
28
+ vi
29
+ } from "../../chunk-I3XKEGHM.js";
30
+ import "../../chunk-EZ7STXUV.js";
31
+ import "../../chunk-UTFN6UJS.js";
32
+ import "../../chunk-EVXG3X6G.js";
33
+ import "../../chunk-OJIESW5B.js";
34
+ import "../../chunk-UFURYGD3.js";
35
+ import "../../chunk-RBHYLCUB.js";
36
+ import "../../chunk-LAXAQ3PZ.js";
37
+ import "../../chunk-NM3EDGB5.js";
38
+ import "../../chunk-NHCGC6DG.js";
39
+ import {
40
+ StepConfirm
41
+ } from "../../chunk-BNE4HHIH.js";
42
+ import "../../chunk-TYJLR32W.js";
43
+ import "../../chunk-IOJR5TOY.js";
44
+ import "../../chunk-3YGUHWLR.js";
45
+ import "../../chunk-QQLRX4KI.js";
46
+ import "../../chunk-WK4J2CHH.js";
47
+ import "../../chunk-NIKUMXE7.js";
48
+ import "../../chunk-KOPEM3Q7.js";
49
+ import "../../chunk-2RSNKBXC.js";
50
+ import "../../chunk-DUVWGO6E.js";
51
+ import "../../chunk-KIR7VYQD.js";
52
+ import "../../chunk-6RBQBOBS.js";
53
+ import "../../chunk-LYYXX2W5.js";
54
+ import "../../chunk-SHHOMVWC.js";
55
+ import "../../chunk-YA4QQKKE.js";
56
+ import "../../chunk-XA57SX4T.js";
57
+ import "../../chunk-FYPUUYSG.js";
58
+ import "../../chunk-DAG2ULNF.js";
59
+ import "../../chunk-VG2TVBFN.js";
60
+ import "../../chunk-IHO75PMZ.js";
61
+ import {
62
+ SkillAgentSummary
63
+ } from "../../chunk-5V2O6C3T.js";
64
+ import {
65
+ useWizardStore
66
+ } from "../../chunk-44LLPS2N.js";
67
+ import "../../chunk-P3PN5SVI.js";
68
+ import "../../chunk-TVHRMRD3.js";
69
+ import "../../chunk-3LIU2ZEF.js";
70
+ import {
71
+ initializeMatrix
72
+ } from "../../chunk-DG2NGZ7S.js";
73
+ import "../../chunk-VEP23B5W.js";
74
+ import {
75
+ DEFAULT_PUBLIC_SOURCE_NAME
76
+ } from "../../chunk-O5ASLZ2K.js";
77
+ import "../../chunk-YU2VGX5R.js";
78
+ import {
79
+ init_esm_shims
80
+ } from "../../chunk-P56WJ5FA.js";
81
+
82
+ // src/cli/components/wizard/step-confirm.test.tsx
83
+ init_esm_shims();
84
+ import { jsx } from "react/jsx-runtime";
85
+ describe("StepConfirm component", () => {
86
+ let cleanup;
87
+ beforeEach(() => {
88
+ initializeMatrix(WEB_PAIR_MATRIX);
89
+ useWizardStore.setState({
90
+ installedSkillConfigs: null,
91
+ installedAgentConfigs: null,
92
+ isInitMode: false
93
+ });
94
+ });
95
+ afterEach(() => {
96
+ cleanup?.();
97
+ cleanup = void 0;
98
+ });
99
+ describe("skills tables", () => {
100
+ it("should show global-scoped skills under Global scope label", () => {
101
+ useWizardStore.setState({
102
+ skillConfigs: buildSkillConfigs(["web-framework-react"], { scope: "global" })
103
+ });
104
+ const { lastFrame, unmount } = render(/* @__PURE__ */ jsx(StepConfirm, { onComplete: vi.fn(), onBack: vi.fn() }));
105
+ cleanup = unmount;
106
+ const output = lastFrame();
107
+ globalExpect(output).toContain("Global");
108
+ globalExpect(output).toContain("React");
109
+ });
110
+ it("should show project-scoped skills under Project scope label", () => {
111
+ useWizardStore.setState({
112
+ skillConfigs: buildSkillConfigs(["web-framework-react"], { scope: "project" })
113
+ });
114
+ const { lastFrame, unmount } = render(/* @__PURE__ */ jsx(StepConfirm, { onComplete: vi.fn(), onBack: vi.fn() }));
115
+ cleanup = unmount;
116
+ const output = lastFrame();
117
+ globalExpect(output).toContain("Project");
118
+ globalExpect(output).toContain("React");
119
+ });
120
+ it("should show both scope labels when both scopes have skills", () => {
121
+ useWizardStore.setState({
122
+ skillConfigs: [
123
+ ...buildSkillConfigs(["web-framework-react"], { scope: "project" }),
124
+ ...buildSkillConfigs(["web-state-zustand"], { scope: "global" })
125
+ ]
126
+ });
127
+ const { lastFrame, unmount } = render(/* @__PURE__ */ jsx(StepConfirm, { onComplete: vi.fn(), onBack: vi.fn() }));
128
+ cleanup = unmount;
129
+ const output = lastFrame();
130
+ globalExpect(output).toContain("Project");
131
+ globalExpect(output).toContain("Global");
132
+ });
133
+ it("should not show Project scope label when no project-scoped skills", () => {
134
+ useWizardStore.setState({
135
+ skillConfigs: buildSkillConfigs(["web-framework-react"], { scope: "global" })
136
+ });
137
+ const { lastFrame, unmount } = render(/* @__PURE__ */ jsx(StepConfirm, { onComplete: vi.fn(), onBack: vi.fn() }));
138
+ cleanup = unmount;
139
+ const output = lastFrame();
140
+ globalExpect(output).not.toContain("Project");
141
+ globalExpect(output).toContain("Global");
142
+ });
143
+ it("should not show Global scope label when no global-scoped skills", () => {
144
+ useWizardStore.setState({
145
+ skillConfigs: buildSkillConfigs(["web-framework-react"], { scope: "project" })
146
+ });
147
+ const { lastFrame, unmount } = render(/* @__PURE__ */ jsx(StepConfirm, { onComplete: vi.fn(), onBack: vi.fn() }));
148
+ cleanup = unmount;
149
+ const output = lastFrame();
150
+ globalExpect(output).toContain("Project");
151
+ globalExpect(output).not.toContain("Global");
152
+ });
153
+ });
154
+ describe("panel header", () => {
155
+ it("should render the marketplace and stack rows above the summary", () => {
156
+ useWizardStore.setState({
157
+ skillConfigs: buildSkillConfigs(["web-framework-react"], {
158
+ source: DEFAULT_PUBLIC_SOURCE_NAME
159
+ })
160
+ });
161
+ const { lastFrame, unmount } = render(/* @__PURE__ */ jsx(StepConfirm, { onComplete: vi.fn(), onBack: vi.fn() }));
162
+ cleanup = unmount;
163
+ const output = lastFrame();
164
+ globalExpect(output).toContain("Marketplace Agents Inc");
165
+ globalExpect(output).toContain("Stack none");
166
+ globalExpect(output).toContain("React");
167
+ });
168
+ });
169
+ describe("eject icon display", () => {
170
+ it("should show eject icon for eject-source skills", () => {
171
+ useWizardStore.setState({
172
+ skillConfigs: buildSkillConfigs(["web-framework-react"], { source: "eject" })
173
+ });
174
+ const { lastFrame, unmount } = render(/* @__PURE__ */ jsx(StepConfirm, { onComplete: vi.fn(), onBack: vi.fn() }));
175
+ cleanup = unmount;
176
+ globalExpect(lastFrame()).toContain("\u23CF");
177
+ });
178
+ it("should not show eject icon for plugin-source skills", () => {
179
+ useWizardStore.setState({
180
+ skillConfigs: buildSkillConfigs(["web-framework-react"], { source: "agents-inc" })
181
+ });
182
+ const { lastFrame, unmount } = render(/* @__PURE__ */ jsx(StepConfirm, { onComplete: vi.fn(), onBack: vi.fn() }));
183
+ cleanup = unmount;
184
+ globalExpect(lastFrame()).not.toContain("\u23CF");
185
+ });
186
+ });
187
+ describe("new item markers - init mode (no prior installation)", () => {
188
+ it("should show + prefix when installedSkillConfigs is absent", () => {
189
+ useWizardStore.setState({
190
+ skillConfigs: buildSkillConfigs(["web-framework-react", "web-state-zustand"])
191
+ });
192
+ const { lastFrame, unmount } = render(/* @__PURE__ */ jsx(StepConfirm, { onComplete: vi.fn(), onBack: vi.fn() }));
193
+ cleanup = unmount;
194
+ const output = lastFrame();
195
+ globalExpect(output).toContain("+ React");
196
+ globalExpect(output).toContain("+ Zustand");
197
+ globalExpect(output).not.toContain("\u2022 React");
198
+ globalExpect(output).not.toContain("\u2022 Zustand");
199
+ });
200
+ it("should show + prefix for agents when installedAgentConfigs is absent", () => {
201
+ useWizardStore.setState({ agentConfigs: buildAgentConfigs(["web-developer"]) });
202
+ const { lastFrame, unmount } = render(/* @__PURE__ */ jsx(StepConfirm, { onComplete: vi.fn(), onBack: vi.fn() }));
203
+ cleanup = unmount;
204
+ const output = lastFrame();
205
+ globalExpect(output).toContain("+ web-developer");
206
+ globalExpect(output).not.toContain("\u2022 web-developer");
207
+ });
208
+ });
209
+ describe("new item markers - edit mode", () => {
210
+ it("should show + for a skill not in installedSkillConfigs", () => {
211
+ useWizardStore.setState({
212
+ installedSkillConfigs: [],
213
+ skillConfigs: buildSkillConfigs(["web-framework-react"])
214
+ });
215
+ const { lastFrame, unmount } = render(/* @__PURE__ */ jsx(StepConfirm, { onComplete: vi.fn(), onBack: vi.fn() }));
216
+ cleanup = unmount;
217
+ globalExpect(lastFrame()).toContain("+ React");
218
+ });
219
+ it("should show bullet for a skill that IS in installedSkillConfigs", () => {
220
+ const configs = buildSkillConfigs(["web-framework-react"]);
221
+ useWizardStore.setState({ installedSkillConfigs: configs, skillConfigs: configs });
222
+ const { lastFrame, unmount } = render(/* @__PURE__ */ jsx(StepConfirm, { onComplete: vi.fn(), onBack: vi.fn() }));
223
+ cleanup = unmount;
224
+ const output = lastFrame();
225
+ globalExpect(output).toContain("\u2022 React");
226
+ globalExpect(output).not.toContain("+ React");
227
+ });
228
+ it("should show mix of + and bullet in same scope", () => {
229
+ const existingConfigs = buildSkillConfigs(["web-framework-react"]);
230
+ useWizardStore.setState({
231
+ installedSkillConfigs: existingConfigs,
232
+ skillConfigs: [...existingConfigs, ...buildSkillConfigs(["web-state-zustand"])]
233
+ });
234
+ const { lastFrame, unmount } = render(/* @__PURE__ */ jsx(StepConfirm, { onComplete: vi.fn(), onBack: vi.fn() }));
235
+ cleanup = unmount;
236
+ const output = lastFrame();
237
+ globalExpect(output).toContain("+ Zustand");
238
+ globalExpect(output).toContain("\u2022 React");
239
+ globalExpect(output).not.toContain("+ React");
240
+ });
241
+ it("should show + on new agent when installedAgentConfigs is empty", () => {
242
+ useWizardStore.setState({
243
+ installedAgentConfigs: [],
244
+ agentConfigs: buildAgentConfigs(["web-developer"])
245
+ });
246
+ const { lastFrame, unmount } = render(/* @__PURE__ */ jsx(StepConfirm, { onComplete: vi.fn(), onBack: vi.fn() }));
247
+ cleanup = unmount;
248
+ globalExpect(lastFrame()).toContain("+ web-developer");
249
+ });
250
+ it("should show bullet on agent that was already in installedAgentConfigs", () => {
251
+ const agents = buildAgentConfigs(["web-developer"]);
252
+ useWizardStore.setState({ installedAgentConfigs: agents, agentConfigs: agents });
253
+ const { lastFrame, unmount } = render(/* @__PURE__ */ jsx(StepConfirm, { onComplete: vi.fn(), onBack: vi.fn() }));
254
+ cleanup = unmount;
255
+ const output = lastFrame();
256
+ globalExpect(output).toContain("\u2022 web-developer");
257
+ globalExpect(output).not.toContain("+ web-developer");
258
+ });
259
+ });
260
+ describe("removed item markers - edit mode", () => {
261
+ it("should show - for a skill in installedSkillConfigs but not in skillConfigs", () => {
262
+ useWizardStore.setState({
263
+ installedSkillConfigs: buildSkillConfigs(["web-framework-react"])
264
+ });
265
+ const { lastFrame, unmount } = render(/* @__PURE__ */ jsx(StepConfirm, { onComplete: vi.fn(), onBack: vi.fn() }));
266
+ cleanup = unmount;
267
+ globalExpect(lastFrame()).toContain("- React");
268
+ });
269
+ it("should show - for a removed agent", () => {
270
+ useWizardStore.setState({
271
+ installedAgentConfigs: buildAgentConfigs(["web-developer"])
272
+ });
273
+ const { lastFrame, unmount } = render(/* @__PURE__ */ jsx(StepConfirm, { onComplete: vi.fn(), onBack: vi.fn() }));
274
+ cleanup = unmount;
275
+ globalExpect(lastFrame()).toContain("- web-developer");
276
+ });
277
+ it("should show mix of bullet and - items", () => {
278
+ useWizardStore.setState({
279
+ installedSkillConfigs: buildSkillConfigs(["web-framework-react", "web-state-zustand"]),
280
+ skillConfigs: buildSkillConfigs(["web-framework-react"])
281
+ });
282
+ const { lastFrame, unmount } = render(/* @__PURE__ */ jsx(StepConfirm, { onComplete: vi.fn(), onBack: vi.fn() }));
283
+ cleanup = unmount;
284
+ const output = lastFrame();
285
+ globalExpect(output).toContain("\u2022 React");
286
+ globalExpect(output).not.toContain("+ React");
287
+ globalExpect(output).not.toContain("- React");
288
+ globalExpect(output).toContain("- Zustand");
289
+ });
290
+ it("should show scope heading when all skills in scope are removed", () => {
291
+ useWizardStore.setState({
292
+ installedSkillConfigs: buildSkillConfigs(["web-framework-react"], { scope: "global" })
293
+ });
294
+ const { lastFrame, unmount } = render(/* @__PURE__ */ jsx(StepConfirm, { onComplete: vi.fn(), onBack: vi.fn() }));
295
+ cleanup = unmount;
296
+ globalExpect(lastFrame()).toContain("Global");
297
+ });
298
+ });
299
+ describe("init mode \u2014 global pre-selections should not show as removed", () => {
300
+ it("should NOT show - for a deselected global skill during init", () => {
301
+ useWizardStore.setState({
302
+ isInitMode: true,
303
+ installedSkillConfigs: buildSkillConfigs(["web-framework-react"], { scope: "global" })
304
+ });
305
+ const { lastFrame, unmount } = render(/* @__PURE__ */ jsx(StepConfirm, { onComplete: vi.fn(), onBack: vi.fn() }));
306
+ cleanup = unmount;
307
+ globalExpect(lastFrame()).not.toContain("React");
308
+ });
309
+ it("should NOT show - for a deselected global agent during init", () => {
310
+ useWizardStore.setState({
311
+ isInitMode: true,
312
+ installedAgentConfigs: buildAgentConfigs(["web-developer"], { scope: "global" })
313
+ });
314
+ const { lastFrame, unmount } = render(/* @__PURE__ */ jsx(StepConfirm, { onComplete: vi.fn(), onBack: vi.fn() }));
315
+ cleanup = unmount;
316
+ globalExpect(lastFrame()).not.toContain("web-developer");
317
+ });
318
+ it("should still show - for removed project skills during init", () => {
319
+ useWizardStore.setState({
320
+ isInitMode: true,
321
+ installedSkillConfigs: buildSkillConfigs(["web-framework-react"], { scope: "project" })
322
+ });
323
+ const { lastFrame, unmount } = render(/* @__PURE__ */ jsx(StepConfirm, { onComplete: vi.fn(), onBack: vi.fn() }));
324
+ cleanup = unmount;
325
+ globalExpect(lastFrame()).toContain("- React");
326
+ });
327
+ it("should show - for deselected global skill in edit mode (isInitMode=false)", () => {
328
+ useWizardStore.setState({
329
+ isInitMode: false,
330
+ installedSkillConfigs: buildSkillConfigs(["web-framework-react"], { scope: "global" })
331
+ });
332
+ const { lastFrame, unmount } = render(/* @__PURE__ */ jsx(StepConfirm, { onComplete: vi.fn(), onBack: vi.fn() }));
333
+ cleanup = unmount;
334
+ globalExpect(lastFrame()).toContain("- React");
335
+ });
336
+ });
337
+ describe("agents tables", () => {
338
+ it("should show global agents under Global scope label", () => {
339
+ useWizardStore.setState({
340
+ agentConfigs: buildAgentConfigs(["web-developer"], { scope: "global" })
341
+ });
342
+ const { lastFrame, unmount } = render(/* @__PURE__ */ jsx(StepConfirm, { onComplete: vi.fn(), onBack: vi.fn() }));
343
+ cleanup = unmount;
344
+ const output = lastFrame();
345
+ globalExpect(output).toContain("Global");
346
+ globalExpect(output).toContain("web-developer");
347
+ });
348
+ it("should show project agents under Project scope label", () => {
349
+ useWizardStore.setState({
350
+ agentConfigs: buildAgentConfigs(["web-developer"], { scope: "project" })
351
+ });
352
+ const { lastFrame, unmount } = render(/* @__PURE__ */ jsx(StepConfirm, { onComplete: vi.fn(), onBack: vi.fn() }));
353
+ cleanup = unmount;
354
+ const output = lastFrame();
355
+ globalExpect(output).toContain("Project");
356
+ globalExpect(output).toContain("web-developer");
357
+ });
358
+ });
359
+ describe("keyboard navigation", () => {
360
+ it("should call onComplete when Enter is pressed", async () => {
361
+ const onComplete = vi.fn();
362
+ useWizardStore.setState({ skillConfigs: buildSkillConfigs(["web-framework-react"]) });
363
+ const { stdin, unmount } = render(/* @__PURE__ */ jsx(StepConfirm, { onComplete, onBack: vi.fn() }));
364
+ cleanup = unmount;
365
+ await delay(RENDER_DELAY_MS);
366
+ await stdin.write(ENTER);
367
+ await delay(RENDER_DELAY_MS);
368
+ globalExpect(onComplete).toHaveBeenCalled();
369
+ });
370
+ it("should call onBack when Escape is pressed", async () => {
371
+ const onComplete = vi.fn();
372
+ const onBack = vi.fn();
373
+ useWizardStore.setState({ skillConfigs: buildSkillConfigs(["web-framework-react"]) });
374
+ const { stdin, unmount } = render(/* @__PURE__ */ jsx(StepConfirm, { onComplete, onBack }));
375
+ cleanup = unmount;
376
+ await delay(RENDER_DELAY_MS);
377
+ await stdin.write(ESCAPE);
378
+ await delay(RENDER_DELAY_MS);
379
+ globalExpect(onBack).toHaveBeenCalled();
380
+ globalExpect(onComplete).not.toHaveBeenCalled();
381
+ });
382
+ it("should not leave or complete the step when the panel's scroll keys are pressed", async () => {
383
+ const onComplete = vi.fn();
384
+ const onBack = vi.fn();
385
+ useWizardStore.setState({ skillConfigs: buildSkillConfigs(["web-framework-react"]) });
386
+ const { stdin, unmount } = render(/* @__PURE__ */ jsx(StepConfirm, { onComplete, onBack }));
387
+ cleanup = unmount;
388
+ await delay(RENDER_DELAY_MS);
389
+ await stdin.write(ARROW_DOWN);
390
+ await delay(RENDER_DELAY_MS);
391
+ globalExpect(onComplete).not.toHaveBeenCalled();
392
+ globalExpect(onBack).not.toHaveBeenCalled();
393
+ });
394
+ });
395
+ describe("excluded global items", () => {
396
+ it("should show excluded global skill in Global section alongside active skills", () => {
397
+ useWizardStore.setState({
398
+ installedSkillConfigs: buildSkillConfigs(["web-framework-react", "web-state-zustand"], {
399
+ scope: "global"
400
+ }),
401
+ skillConfigs: [
402
+ ...buildSkillConfigs(["web-framework-react"], { scope: "global" }),
403
+ ...buildSkillConfigs(["web-state-zustand"], { scope: "global", excluded: true })
404
+ ]
405
+ });
406
+ const { lastFrame, unmount } = render(/* @__PURE__ */ jsx(StepConfirm, { onComplete: vi.fn(), onBack: vi.fn() }));
407
+ cleanup = unmount;
408
+ const output = lastFrame();
409
+ globalExpect(output).toContain("Global");
410
+ globalExpect(output).toContain("React");
411
+ globalExpect(output).toContain("Zustand");
412
+ });
413
+ it("should not hide excluded global skill from output", () => {
414
+ useWizardStore.setState({
415
+ installedSkillConfigs: buildSkillConfigs(["web-framework-react"], { scope: "global" }),
416
+ skillConfigs: buildSkillConfigs(["web-framework-react"], {
417
+ scope: "global",
418
+ excluded: true
419
+ })
420
+ });
421
+ const { lastFrame, unmount } = render(/* @__PURE__ */ jsx(StepConfirm, { onComplete: vi.fn(), onBack: vi.fn() }));
422
+ cleanup = unmount;
423
+ globalExpect(lastFrame()).toContain("React");
424
+ });
425
+ it("should show excluded global agent in Global section", () => {
426
+ useWizardStore.setState({
427
+ installedAgentConfigs: buildAgentConfigs(["web-developer"], { scope: "global" }),
428
+ agentConfigs: buildAgentConfigs(["web-developer"], { scope: "global", excluded: true })
429
+ });
430
+ const { lastFrame, unmount } = render(/* @__PURE__ */ jsx(StepConfirm, { onComplete: vi.fn(), onBack: vi.fn() }));
431
+ cleanup = unmount;
432
+ const output = lastFrame();
433
+ globalExpect(output).toContain("Global");
434
+ globalExpect(output).toContain("web-developer");
435
+ });
436
+ it("should show Global section when only excluded global skills exist", () => {
437
+ useWizardStore.setState({
438
+ installedSkillConfigs: [],
439
+ skillConfigs: buildSkillConfigs(["web-framework-react"], {
440
+ scope: "global",
441
+ excluded: true
442
+ })
443
+ });
444
+ const { lastFrame, unmount } = render(/* @__PURE__ */ jsx(StepConfirm, { onComplete: vi.fn(), onBack: vi.fn() }));
445
+ cleanup = unmount;
446
+ globalExpect(lastFrame()).toContain("Global");
447
+ });
448
+ it("should not duplicate a re-scoped skill in the Global section", () => {
449
+ useWizardStore.setState({
450
+ installedSkillConfigs: buildSkillConfigs(["web-framework-react"], { scope: "global" }),
451
+ skillConfigs: [
452
+ ...buildSkillConfigs(["web-framework-react"], { scope: "project" }),
453
+ ...buildSkillConfigs(["web-framework-react"], { scope: "global", excluded: true })
454
+ ]
455
+ });
456
+ const { lastFrame, unmount } = render(/* @__PURE__ */ jsx(StepConfirm, { onComplete: vi.fn(), onBack: vi.fn() }));
457
+ cleanup = unmount;
458
+ const output = lastFrame();
459
+ const reactMatches = output.split("React").length - 1;
460
+ globalExpect(reactMatches).toBe(2);
461
+ });
462
+ it("should show correct entries for mixed re-scoped and excluded skills", () => {
463
+ initializeMatrix(WEB_TRIO_MATRIX);
464
+ useWizardStore.setState({
465
+ isInitMode: false,
466
+ installedSkillConfigs: [
467
+ { id: "web-framework-react", scope: "global", source: "agents-inc" },
468
+ { id: "web-testing-vitest", scope: "global", source: "agents-inc" }
469
+ ],
470
+ installedAgentConfigs: null
471
+ });
472
+ const { lastFrame, unmount } = render(
473
+ /* @__PURE__ */ jsx(
474
+ SkillAgentSummary,
475
+ {
476
+ skillConfigs: [
477
+ { id: "web-framework-react", scope: "project", source: "agents-inc" },
478
+ {
479
+ id: "web-framework-react",
480
+ scope: "global",
481
+ source: "agents-inc",
482
+ excluded: true
483
+ },
484
+ {
485
+ id: "web-testing-vitest",
486
+ scope: "global",
487
+ source: "agents-inc",
488
+ excluded: true
489
+ }
490
+ ],
491
+ agentConfigs: []
492
+ }
493
+ )
494
+ );
495
+ cleanup = unmount;
496
+ const output = lastFrame();
497
+ const reactMatches = output.split("React").length - 1;
498
+ globalExpect(reactMatches).toBe(2);
499
+ const vitestMatches = output.split("Vitest").length - 1;
500
+ globalExpect(vitestMatches).toBe(1);
501
+ globalExpect(output).toContain("Project");
502
+ globalExpect(output).toContain("Global");
503
+ });
504
+ });
505
+ describe("empty state", () => {
506
+ it("should render without crash when no skillConfigs or agentConfigs provided", () => {
507
+ const { lastFrame, unmount } = render(/* @__PURE__ */ jsx(StepConfirm, { onComplete: vi.fn(), onBack: vi.fn() }));
508
+ cleanup = unmount;
509
+ globalExpect(lastFrame()).toBeDefined();
510
+ });
511
+ });
512
+ });
513
+ describe("SkillAgentSummary component", () => {
514
+ let cleanup;
515
+ beforeEach(() => {
516
+ initializeMatrix(WEB_PAIR_MATRIX);
517
+ useWizardStore.setState({
518
+ installedSkillConfigs: null,
519
+ installedAgentConfigs: null,
520
+ isInitMode: false
521
+ });
522
+ });
523
+ afterEach(() => {
524
+ cleanup?.();
525
+ cleanup = void 0;
526
+ });
527
+ describe("source mode changes", () => {
528
+ it("should show ~ prefix when skill source changes from plugin to eject", () => {
529
+ useWizardStore.setState({
530
+ isInitMode: false,
531
+ installedSkillConfigs: buildSkillConfigs(["web-framework-react"], { source: "agents-inc" }),
532
+ installedAgentConfigs: null
533
+ });
534
+ const { lastFrame, unmount } = render(
535
+ /* @__PURE__ */ jsx(
536
+ SkillAgentSummary,
537
+ {
538
+ skillConfigs: buildSkillConfigs(["web-framework-react"]),
539
+ agentConfigs: []
540
+ }
541
+ )
542
+ );
543
+ cleanup = unmount;
544
+ const output = lastFrame();
545
+ globalExpect(output).toContain("~");
546
+ globalExpect(output).toContain("React");
547
+ globalExpect(output).not.toContain("\u2192");
548
+ });
549
+ it("should show ~ prefix when skill source changes from eject to plugin", () => {
550
+ useWizardStore.setState({
551
+ isInitMode: false,
552
+ installedSkillConfigs: buildSkillConfigs(["web-framework-react"]),
553
+ installedAgentConfigs: null
554
+ });
555
+ const { lastFrame, unmount } = render(
556
+ /* @__PURE__ */ jsx(
557
+ SkillAgentSummary,
558
+ {
559
+ skillConfigs: buildSkillConfigs(["web-framework-react"], { source: "agents-inc" }),
560
+ agentConfigs: []
561
+ }
562
+ )
563
+ );
564
+ cleanup = unmount;
565
+ const output = lastFrame();
566
+ globalExpect(output).toContain("~");
567
+ globalExpect(output).toContain("React");
568
+ globalExpect(output).not.toContain("\u2192");
569
+ });
570
+ it("should not show ~ when skill source is unchanged", () => {
571
+ useWizardStore.setState({
572
+ isInitMode: false,
573
+ installedSkillConfigs: buildSkillConfigs(["web-framework-react"], { source: "agents-inc" }),
574
+ installedAgentConfigs: null
575
+ });
576
+ const { lastFrame, unmount } = render(
577
+ /* @__PURE__ */ jsx(
578
+ SkillAgentSummary,
579
+ {
580
+ skillConfigs: buildSkillConfigs(["web-framework-react"], { source: "agents-inc" }),
581
+ agentConfigs: []
582
+ }
583
+ )
584
+ );
585
+ cleanup = unmount;
586
+ const output = lastFrame();
587
+ globalExpect(output).not.toContain("~");
588
+ globalExpect(output).toContain("React");
589
+ globalExpect(output).toContain("\u2022");
590
+ });
591
+ it("should show ~ for global-scoped skill source change", () => {
592
+ useWizardStore.setState({
593
+ isInitMode: false,
594
+ installedSkillConfigs: buildSkillConfigs(["web-framework-react"], {
595
+ scope: "global",
596
+ source: "agents-inc"
597
+ }),
598
+ installedAgentConfigs: null
599
+ });
600
+ const { lastFrame, unmount } = render(
601
+ /* @__PURE__ */ jsx(
602
+ SkillAgentSummary,
603
+ {
604
+ skillConfigs: buildSkillConfigs(["web-framework-react"], { scope: "global" }),
605
+ agentConfigs: []
606
+ }
607
+ )
608
+ );
609
+ cleanup = unmount;
610
+ const output = lastFrame();
611
+ globalExpect(output).toContain("~");
612
+ globalExpect(output).toContain("React");
613
+ globalExpect(output).toContain("Global");
614
+ });
615
+ it("should show both source change and new skill markers together", () => {
616
+ initializeMatrix(WEB_TRIO_MATRIX);
617
+ useWizardStore.setState({
618
+ isInitMode: false,
619
+ installedSkillConfigs: buildSkillConfigs(["web-framework-react"], { source: "agents-inc" }),
620
+ installedAgentConfigs: null
621
+ });
622
+ const { lastFrame, unmount } = render(
623
+ /* @__PURE__ */ jsx(
624
+ SkillAgentSummary,
625
+ {
626
+ skillConfigs: [
627
+ ...buildSkillConfigs(["web-framework-react"]),
628
+ ...buildSkillConfigs(["web-testing-vitest"], { source: "agents-inc" })
629
+ ],
630
+ agentConfigs: []
631
+ }
632
+ )
633
+ );
634
+ cleanup = unmount;
635
+ const output = lastFrame();
636
+ globalExpect(output).toContain("~ React");
637
+ globalExpect(output).toContain("+ Vitest");
638
+ });
639
+ });
640
+ describe("dual-scope G\u2192P toggle diff", () => {
641
+ it("in-session G\u2192P toggle should show + at Project and \u2022 at Global (not -)", () => {
642
+ useWizardStore.setState({
643
+ installedSkillConfigs: buildSkillConfigs(["web-framework-react"], { scope: "global" })
644
+ });
645
+ const { lastFrame, unmount } = render(
646
+ /* @__PURE__ */ jsx(
647
+ SkillAgentSummary,
648
+ {
649
+ skillConfigs: [
650
+ ...buildSkillConfigs(["web-framework-react"], { scope: "project" }),
651
+ ...buildSkillConfigs(["web-framework-react"], { scope: "global", excluded: true })
652
+ ],
653
+ agentConfigs: []
654
+ }
655
+ )
656
+ );
657
+ cleanup = unmount;
658
+ const output = lastFrame();
659
+ globalExpect(output).toContain("+ React");
660
+ globalExpect(output).toContain("\u2022 React");
661
+ globalExpect(output).not.toContain("- React");
662
+ globalExpect(output).not.toContain("~ React");
663
+ });
664
+ it("re-open with saved dual-scope state should show \u2022 at Project and \u2022 at Global (not +)", () => {
665
+ const savedDualScope = [
666
+ ...buildSkillConfigs(["web-framework-react"], { scope: "project" }),
667
+ ...buildSkillConfigs(["web-framework-react"], { scope: "global", excluded: true })
668
+ ];
669
+ useWizardStore.setState({ installedSkillConfigs: savedDualScope });
670
+ const { lastFrame, unmount } = render(
671
+ /* @__PURE__ */ jsx(SkillAgentSummary, { skillConfigs: savedDualScope, agentConfigs: [] })
672
+ );
673
+ cleanup = unmount;
674
+ const output = lastFrame();
675
+ globalExpect(output).toContain("\u2022 React");
676
+ globalExpect(output).not.toContain("+ React");
677
+ globalExpect(output).not.toContain("- React");
678
+ globalExpect(output).not.toContain("~ React");
679
+ });
680
+ it("agent symmetry: in-session agent G\u2192P toggle shows + at Project and \u2022 at Global", () => {
681
+ useWizardStore.setState({
682
+ installedAgentConfigs: buildAgentConfigs(["web-developer"], { scope: "global" })
683
+ });
684
+ const { lastFrame, unmount } = render(
685
+ /* @__PURE__ */ jsx(
686
+ SkillAgentSummary,
687
+ {
688
+ agentConfigs: [
689
+ ...buildAgentConfigs(["web-developer"], { scope: "project" }),
690
+ ...buildAgentConfigs(["web-developer"], { scope: "global", excluded: true })
691
+ ],
692
+ skillConfigs: []
693
+ }
694
+ )
695
+ );
696
+ cleanup = unmount;
697
+ const output = lastFrame();
698
+ globalExpect(output).toContain("+ web-developer");
699
+ globalExpect(output).toContain("\u2022 web-developer");
700
+ globalExpect(output).not.toContain("- web-developer");
701
+ globalExpect(output).not.toContain("~ web-developer");
702
+ });
703
+ it("agent symmetry: re-open with saved dual-scope agent shows \u2022 at both scopes", () => {
704
+ const savedDualScope = [
705
+ ...buildAgentConfigs(["web-developer"], { scope: "project" }),
706
+ ...buildAgentConfigs(["web-developer"], { scope: "global", excluded: true })
707
+ ];
708
+ useWizardStore.setState({ installedAgentConfigs: savedDualScope });
709
+ const { lastFrame, unmount } = render(
710
+ /* @__PURE__ */ jsx(SkillAgentSummary, { agentConfigs: savedDualScope, skillConfigs: [] })
711
+ );
712
+ cleanup = unmount;
713
+ const output = lastFrame();
714
+ globalExpect(output).toContain("\u2022 web-developer");
715
+ globalExpect(output).not.toContain("+ web-developer");
716
+ globalExpect(output).not.toContain("- web-developer");
717
+ globalExpect(output).not.toContain("~ web-developer");
718
+ });
719
+ it("P\u2192G restoration should show - at Project and \u2022 at Global (not +)", () => {
720
+ useWizardStore.setState({
721
+ installedSkillConfigs: [
722
+ ...buildSkillConfigs(["web-framework-react"], { scope: "project" }),
723
+ ...buildSkillConfigs(["web-framework-react"], { scope: "global", excluded: true })
724
+ ]
725
+ });
726
+ const { lastFrame, unmount } = render(
727
+ /* @__PURE__ */ jsx(
728
+ SkillAgentSummary,
729
+ {
730
+ skillConfigs: buildSkillConfigs(["web-framework-react"], { scope: "global" }),
731
+ agentConfigs: []
732
+ }
733
+ )
734
+ );
735
+ cleanup = unmount;
736
+ const output = lastFrame();
737
+ globalExpect(output).toContain("- React");
738
+ globalExpect(output).toContain("\u2022 React");
739
+ globalExpect(output).not.toContain("+ React");
740
+ globalExpect(output).not.toContain("~ React");
741
+ });
742
+ });
743
+ });
744
+ //# sourceMappingURL=step-confirm.test.js.map