agents-inc 0.152.1 → 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.
- package/CHANGELOG.md +33 -0
- package/README.md +31 -35
- package/dist/{chunk-LDP5ASDM.js → chunk-2HC2SNRP.js} +2 -15
- package/dist/chunk-2HC2SNRP.js.map +1 -0
- package/dist/{chunk-WKTHWQKM.js → chunk-35VOK7XE.js} +1338 -2573
- package/dist/chunk-35VOK7XE.js.map +1 -0
- package/dist/{chunk-SX5H6TSC.js → chunk-4VYALFQZ.js} +11 -8
- package/dist/chunk-4VYALFQZ.js.map +1 -0
- package/dist/{chunk-KXYVJGJP.js → chunk-6CNRMCFM.js} +3 -2
- package/dist/{chunk-KXYVJGJP.js.map → chunk-6CNRMCFM.js.map} +1 -1
- package/dist/{chunk-LZ52XEPR.js → chunk-ACKC577F.js} +7 -6
- package/dist/chunk-ACKC577F.js.map +1 -0
- package/dist/{chunk-XHUODHZ4.js → chunk-BMGBA6HJ.js} +22 -49
- package/dist/chunk-BMGBA6HJ.js.map +1 -0
- package/dist/{chunk-FVDKAVOL.js → chunk-EFU6P3B7.js} +18 -51
- package/dist/chunk-EFU6P3B7.js.map +1 -0
- package/dist/{chunk-STMHDOZD.js → chunk-F7Z5I6GU.js} +12 -9
- package/dist/chunk-F7Z5I6GU.js.map +1 -0
- package/dist/{chunk-E5X6RJ4E.js → chunk-FIHTAFST.js} +29 -26
- package/dist/chunk-FIHTAFST.js.map +1 -0
- package/dist/{chunk-QZZJFYUQ.js → chunk-FRWKCE6R.js} +3 -3
- package/dist/chunk-FRWKCE6R.js.map +1 -0
- package/dist/{chunk-5UWKOOIS.js → chunk-HEBPKK5L.js} +129 -195
- package/dist/chunk-HEBPKK5L.js.map +1 -0
- package/dist/{chunk-MJ2KHG24.js → chunk-IO4VEW5U.js} +6 -6
- package/dist/{chunk-MJ2KHG24.js.map → chunk-IO4VEW5U.js.map} +1 -1
- package/dist/{chunk-TUPYW2IQ.js → chunk-JC7DBPRD.js} +9 -12
- package/dist/chunk-JC7DBPRD.js.map +1 -0
- package/dist/{chunk-5GUOIJSG.js → chunk-JFAUQDZM.js} +3 -15
- package/dist/chunk-JFAUQDZM.js.map +1 -0
- package/dist/{chunk-ZL7PFNHN.js → chunk-K3O3YQYG.js} +2 -2
- package/dist/{chunk-SKQWRUPX.js → chunk-K7PJDWER.js} +59 -33
- package/dist/chunk-K7PJDWER.js.map +1 -0
- package/dist/{chunk-MVR3SYMN.js → chunk-KET3EVGX.js} +4 -3
- package/dist/{chunk-MVR3SYMN.js.map → chunk-KET3EVGX.js.map} +1 -1
- package/dist/{chunk-MWG4VU64.js → chunk-M5HSTNYU.js} +50 -56
- package/dist/chunk-M5HSTNYU.js.map +1 -0
- package/dist/{chunk-TJJPWUMA.js → chunk-NSJ2S7R5.js} +3 -2
- package/dist/{chunk-TJJPWUMA.js.map → chunk-NSJ2S7R5.js.map} +1 -1
- package/dist/{chunk-IHUY4M22.js → chunk-NXGMM5YN.js} +4 -4
- package/dist/chunk-NXQAY5U7.js +18441 -0
- package/dist/chunk-NXQAY5U7.js.map +1 -0
- package/dist/{chunk-Q2KG7UV3.js → chunk-OJJLYHM3.js} +2 -1
- package/dist/{chunk-Q2KG7UV3.js.map → chunk-OJJLYHM3.js.map} +1 -1
- package/dist/{chunk-PZIZNMHK.js → chunk-ORJ5Y222.js} +159 -138
- package/dist/chunk-ORJ5Y222.js.map +1 -0
- package/dist/{chunk-NR3OZGL4.js → chunk-OZXAJNLA.js} +2 -1
- package/dist/{chunk-NR3OZGL4.js.map → chunk-OZXAJNLA.js.map} +1 -1
- package/dist/{chunk-MM7CTTAV.js → chunk-Q5FLW4JG.js} +2 -2
- package/dist/{chunk-MM7CTTAV.js.map → chunk-Q5FLW4JG.js.map} +1 -1
- package/dist/{chunk-GRVKW3CC.js → chunk-R4SEU3DF.js} +3 -2
- package/dist/{chunk-GRVKW3CC.js.map → chunk-R4SEU3DF.js.map} +1 -1
- package/dist/{chunk-76ADG7LQ.js → chunk-R54KIGN2.js} +8 -22
- package/dist/chunk-R54KIGN2.js.map +1 -0
- package/dist/{chunk-SBHBBZKF.js → chunk-REKOWTIB.js} +25 -120
- package/dist/chunk-REKOWTIB.js.map +1 -0
- package/dist/chunk-TY6CAOL7.js +40 -0
- package/dist/chunk-TY6CAOL7.js.map +1 -0
- package/dist/{chunk-BNSRA6HL.js → chunk-U2DNAHFE.js} +39 -176
- package/dist/chunk-U2DNAHFE.js.map +1 -0
- package/dist/{chunk-PMM2MYMA.js → chunk-U2YSGBHA.js} +624 -349
- package/dist/chunk-U2YSGBHA.js.map +1 -0
- package/dist/{chunk-DTSG5XZB.js → chunk-V3ENMW7G.js} +3 -3
- package/dist/{chunk-L7SZXUBJ.js → chunk-VECFAKM5.js} +7 -6
- package/dist/{chunk-L7SZXUBJ.js.map → chunk-VECFAKM5.js.map} +1 -1
- package/dist/chunk-VGEBYCQZ.js +59 -0
- package/dist/chunk-VGEBYCQZ.js.map +1 -0
- package/dist/chunk-VZRO7RYT.js +3694 -0
- package/dist/chunk-VZRO7RYT.js.map +1 -0
- package/dist/{chunk-LASI35KT.js → chunk-WDAO3RUY.js} +14 -28
- package/dist/chunk-WDAO3RUY.js.map +1 -0
- package/dist/{chunk-MQ7FLIYS.js → chunk-WG6V6VJV.js} +3 -2
- package/dist/{chunk-MQ7FLIYS.js.map → chunk-WG6V6VJV.js.map} +1 -1
- package/dist/chunk-X5XJ6WKO.js +284 -0
- package/dist/chunk-X5XJ6WKO.js.map +1 -0
- package/dist/{chunk-RNJWAKMO.js → chunk-XGMOXMS4.js} +9 -8
- package/dist/chunk-XGMOXMS4.js.map +1 -0
- package/dist/{chunk-IUQBOCSU.js → chunk-ZBPEFQ4G.js} +2 -1
- package/dist/{chunk-IUQBOCSU.js.map → chunk-ZBPEFQ4G.js.map} +1 -1
- package/dist/{chunk-QRDTLVXG.js → chunk-ZNDLUWWD.js} +9 -22
- package/dist/chunk-ZNDLUWWD.js.map +1 -0
- package/dist/commands/build/marketplace.js +114 -35
- package/dist/commands/build/marketplace.js.map +1 -1
- package/dist/commands/build/plugins.js +9 -10
- package/dist/commands/build/plugins.js.map +1 -1
- package/dist/commands/compile.js +97 -70
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/doctor.js +793 -64
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/edit.js +169 -208
- package/dist/commands/edit.js.map +1 -1
- package/dist/commands/eject.js +24 -39
- package/dist/commands/eject.js.map +1 -1
- package/dist/commands/init.js +41 -46
- package/dist/commands/list.js +10 -12
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/search.js +20 -81
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/uninstall.js +25 -31
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/commands/update.js +82 -332
- package/dist/commands/update.js.map +1 -1
- package/dist/components/common/confirm.js +1 -1
- package/dist/components/common/prompt-confirm.js +1 -1
- package/dist/components/common/select-list.js +2 -2
- package/dist/components/common/spinner.js +1 -1
- package/dist/components/wizard/category-grid.js +5 -6
- package/dist/components/wizard/checkbox-grid.js +5 -6
- package/dist/components/wizard/domain-selection.js +12 -13
- package/dist/components/wizard/run-wizard-session.js +30 -36
- package/dist/components/wizard/scroll-affordance.js +2 -2
- package/dist/components/wizard/skill-agent-summary.js +7 -7
- package/dist/components/wizard/source-grid.js +6 -11
- package/dist/components/wizard/stack-selection.js +9 -9
- package/dist/components/wizard/step-agents.js +12 -12
- package/dist/components/wizard/step-build.js +10 -11
- package/dist/components/wizard/step-confirm.js +11 -11
- package/dist/components/wizard/step-sources.js +11 -17
- package/dist/components/wizard/step-stack.js +10 -10
- package/dist/components/wizard/summary-panel.js +10 -10
- package/dist/components/wizard/toast.js +2 -2
- package/dist/components/wizard/wizard-layout.js +15 -16
- package/dist/components/wizard/wizard-tabs.js +6 -12
- package/dist/components/wizard/wizard.js +29 -35
- package/dist/config-exports.js +1 -1
- package/dist/copy-local-skills-KF2RAVD3.js +14 -0
- package/dist/hooks/init.js +49 -48
- package/dist/hooks/init.js.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/load-agent-defs-DGXGBU3Q.js +15 -0
- package/dist/{loader-5JP4S7CJ.js → loader-4U7UCE2Y.js} +7 -5
- package/dist/recompile-project-agents-CJVBAWDJ.js +20 -0
- package/dist/{source-loader-MZYCPL2S.js → source-loader-ZNSYJJCI.js} +6 -6
- package/dist/src/agents/developer/ai-developer/identity.md +4 -4
- package/dist/src/agents/developer/ai-developer/playbook.md +1 -1
- package/dist/src/agents/developer/api-developer/identity.md +4 -4
- package/dist/src/agents/developer/api-developer/metadata.yaml +1 -1
- package/dist/src/agents/developer/cli-developer/identity.md +4 -4
- package/dist/src/agents/developer/web-developer/identity.md +2 -2
- package/dist/src/agents/developer/web-developer/metadata.yaml +1 -1
- package/dist/src/agents/meta/agent-summoner/identity.md +4 -5
- package/dist/src/agents/meta/agent-summoner/output.md +2 -2
- package/dist/src/agents/meta/agent-summoner/playbook.md +15 -16
- package/dist/src/agents/meta/codex-keeper/identity.md +4 -4
- package/dist/src/agents/meta/codex-keeper/playbook.md +1 -1
- package/dist/src/agents/meta/convention-keeper/identity.md +1 -1
- package/dist/src/agents/meta/skill-summoner/critical-reminders.md +0 -34
- package/dist/src/agents/meta/skill-summoner/critical-requirements.md +27 -3
- package/dist/src/agents/meta/skill-summoner/identity.md +2 -2
- package/{src/agents/planning/web-pm → dist/src/agents/planning/pm}/critical-reminders.md +10 -7
- package/dist/src/agents/planning/{web-pm → pm}/critical-requirements.md +8 -4
- package/dist/src/agents/planning/pm/identity.md +47 -0
- package/dist/src/agents/planning/pm/metadata.yaml +12 -0
- package/dist/src/agents/planning/{web-pm → pm}/output.md +7 -90
- package/dist/src/agents/planning/pm/playbook.md +185 -0
- package/dist/src/agents/researcher/ai-researcher/critical-reminders.md +58 -0
- package/dist/src/agents/researcher/ai-researcher/critical-requirements.md +40 -0
- package/dist/src/agents/researcher/ai-researcher/identity.md +86 -0
- package/dist/src/agents/researcher/ai-researcher/metadata.yaml +10 -0
- package/dist/src/agents/researcher/ai-researcher/output.md +363 -0
- package/dist/src/agents/researcher/ai-researcher/playbook.md +545 -0
- package/dist/src/agents/researcher/api-researcher/critical-reminders.md +16 -0
- package/dist/src/agents/researcher/api-researcher/identity.md +7 -7
- package/dist/src/agents/researcher/cli-researcher/critical-reminders.md +50 -0
- package/dist/src/agents/researcher/cli-researcher/critical-requirements.md +36 -0
- package/dist/src/agents/researcher/cli-researcher/identity.md +87 -0
- package/dist/src/agents/researcher/cli-researcher/metadata.yaml +10 -0
- package/dist/src/agents/researcher/cli-researcher/output.md +343 -0
- package/dist/src/agents/researcher/cli-researcher/playbook.md +370 -0
- package/dist/src/agents/researcher/web-researcher/identity.md +5 -6
- package/dist/src/agents/reviewer/reviewer/critical-reminders.md +29 -0
- package/dist/src/agents/reviewer/reviewer/critical-requirements.md +31 -0
- package/dist/src/agents/reviewer/reviewer/identity.md +41 -0
- package/dist/src/agents/reviewer/reviewer/metadata.yaml +12 -0
- package/dist/src/agents/reviewer/reviewer/output.md +202 -0
- package/dist/src/agents/reviewer/reviewer/playbook.md +141 -0
- package/dist/src/agents/tester/ai-tester/critical-reminders.md +48 -0
- package/dist/src/agents/tester/ai-tester/critical-requirements.md +49 -0
- package/dist/src/agents/tester/ai-tester/identity.md +62 -0
- package/dist/src/agents/tester/ai-tester/metadata.yaml +12 -0
- package/dist/src/agents/tester/ai-tester/output.md +375 -0
- package/dist/src/agents/tester/ai-tester/playbook.md +789 -0
- package/dist/src/agents/tester/api-tester/identity.md +3 -3
- package/dist/src/agents/tester/cli-tester/critical-reminders.md +3 -3
- package/dist/src/agents/tester/cli-tester/critical-requirements.md +2 -2
- package/dist/src/agents/tester/cli-tester/identity.md +3 -3
- package/dist/src/agents/tester/cli-tester/output.md +4 -4
- package/dist/src/agents/tester/cli-tester/playbook.md +3 -3
- package/dist/src/agents/tester/web-tester/identity.md +3 -3
- package/dist/stores/wizard-store.js +8 -6
- package/package.json +13 -2
- package/src/agents/developer/ai-developer/identity.md +4 -4
- package/src/agents/developer/ai-developer/playbook.md +1 -1
- package/src/agents/developer/api-developer/identity.md +4 -4
- package/src/agents/developer/api-developer/metadata.yaml +1 -1
- package/src/agents/developer/cli-developer/identity.md +4 -4
- package/src/agents/developer/web-developer/identity.md +2 -2
- package/src/agents/developer/web-developer/metadata.yaml +1 -1
- package/src/agents/meta/agent-summoner/identity.md +4 -5
- package/src/agents/meta/agent-summoner/output.md +2 -2
- package/src/agents/meta/agent-summoner/playbook.md +15 -16
- package/src/agents/meta/codex-keeper/identity.md +4 -4
- package/src/agents/meta/codex-keeper/playbook.md +1 -1
- package/src/agents/meta/convention-keeper/identity.md +1 -1
- package/src/agents/meta/skill-summoner/critical-reminders.md +0 -34
- package/src/agents/meta/skill-summoner/critical-requirements.md +27 -3
- package/src/agents/meta/skill-summoner/identity.md +2 -2
- package/{dist/src/agents/planning/web-pm → src/agents/planning/pm}/critical-reminders.md +10 -7
- package/src/agents/planning/{web-pm → pm}/critical-requirements.md +8 -4
- package/src/agents/planning/pm/identity.md +47 -0
- package/src/agents/planning/pm/metadata.yaml +12 -0
- package/src/agents/planning/{web-pm → pm}/output.md +7 -90
- package/src/agents/planning/pm/playbook.md +185 -0
- package/src/agents/researcher/ai-researcher/critical-reminders.md +58 -0
- package/src/agents/researcher/ai-researcher/critical-requirements.md +40 -0
- package/src/agents/researcher/ai-researcher/identity.md +86 -0
- package/src/agents/researcher/ai-researcher/metadata.yaml +10 -0
- package/src/agents/researcher/ai-researcher/output.md +363 -0
- package/src/agents/researcher/ai-researcher/playbook.md +545 -0
- package/src/agents/researcher/api-researcher/critical-reminders.md +16 -0
- package/src/agents/researcher/api-researcher/identity.md +7 -7
- package/src/agents/researcher/cli-researcher/critical-reminders.md +50 -0
- package/src/agents/researcher/cli-researcher/critical-requirements.md +36 -0
- package/src/agents/researcher/cli-researcher/identity.md +87 -0
- package/src/agents/researcher/cli-researcher/metadata.yaml +10 -0
- package/src/agents/researcher/cli-researcher/output.md +343 -0
- package/src/agents/researcher/cli-researcher/playbook.md +370 -0
- package/src/agents/researcher/web-researcher/identity.md +5 -6
- package/src/agents/reviewer/reviewer/critical-reminders.md +29 -0
- package/src/agents/reviewer/reviewer/critical-requirements.md +31 -0
- package/src/agents/reviewer/reviewer/identity.md +41 -0
- package/src/agents/reviewer/reviewer/metadata.yaml +12 -0
- package/src/agents/reviewer/reviewer/output.md +202 -0
- package/src/agents/reviewer/reviewer/playbook.md +141 -0
- package/src/agents/tester/ai-tester/critical-reminders.md +48 -0
- package/src/agents/tester/ai-tester/critical-requirements.md +49 -0
- package/src/agents/tester/ai-tester/identity.md +62 -0
- package/src/agents/tester/ai-tester/metadata.yaml +12 -0
- package/src/agents/tester/ai-tester/output.md +375 -0
- package/src/agents/tester/ai-tester/playbook.md +789 -0
- package/src/agents/tester/api-tester/identity.md +3 -3
- package/src/agents/tester/cli-tester/critical-reminders.md +3 -3
- package/src/agents/tester/cli-tester/critical-requirements.md +2 -2
- package/src/agents/tester/cli-tester/identity.md +3 -3
- package/src/agents/tester/cli-tester/output.md +4 -4
- package/src/agents/tester/cli-tester/playbook.md +3 -3
- package/src/agents/tester/web-tester/identity.md +3 -3
- package/src/schemas/metadata.schema.json +31 -2
- package/src/schemas/project-config.schema.json +61 -15
- package/src/schemas/project-source-config.schema.json +0 -47
- package/dist/chunk-5GUOIJSG.js.map +0 -1
- package/dist/chunk-5UWKOOIS.js.map +0 -1
- package/dist/chunk-76ADG7LQ.js.map +0 -1
- package/dist/chunk-BNSRA6HL.js.map +0 -1
- package/dist/chunk-E5X6RJ4E.js.map +0 -1
- package/dist/chunk-EEPELKOM.js +0 -5938
- package/dist/chunk-EEPELKOM.js.map +0 -1
- package/dist/chunk-F7T5AFFN.js +0 -20
- package/dist/chunk-F7T5AFFN.js.map +0 -1
- package/dist/chunk-FVDKAVOL.js.map +0 -1
- package/dist/chunk-KFB5CRXZ.js +0 -377
- package/dist/chunk-KFB5CRXZ.js.map +0 -1
- package/dist/chunk-KR65TPKC.js +0 -664
- package/dist/chunk-KR65TPKC.js.map +0 -1
- package/dist/chunk-LASI35KT.js.map +0 -1
- package/dist/chunk-LDP5ASDM.js.map +0 -1
- package/dist/chunk-LZ52XEPR.js.map +0 -1
- package/dist/chunk-M7HO7NBK.js +0 -88
- package/dist/chunk-M7HO7NBK.js.map +0 -1
- package/dist/chunk-MWG4VU64.js.map +0 -1
- package/dist/chunk-ODNDXQH2.js +0 -77
- package/dist/chunk-ODNDXQH2.js.map +0 -1
- package/dist/chunk-P44SXVH3.js +0 -80
- package/dist/chunk-P44SXVH3.js.map +0 -1
- package/dist/chunk-PMM2MYMA.js.map +0 -1
- package/dist/chunk-PZIZNMHK.js.map +0 -1
- package/dist/chunk-Q45ZU6HD.js +0 -37
- package/dist/chunk-Q45ZU6HD.js.map +0 -1
- package/dist/chunk-QRDTLVXG.js.map +0 -1
- package/dist/chunk-QZZJFYUQ.js.map +0 -1
- package/dist/chunk-R5NOI2LP.js +0 -170
- package/dist/chunk-R5NOI2LP.js.map +0 -1
- package/dist/chunk-RNJWAKMO.js.map +0 -1
- package/dist/chunk-SBHBBZKF.js.map +0 -1
- package/dist/chunk-SKQWRUPX.js.map +0 -1
- package/dist/chunk-STMHDOZD.js.map +0 -1
- package/dist/chunk-SX5H6TSC.js.map +0 -1
- package/dist/chunk-TUPYW2IQ.js.map +0 -1
- package/dist/chunk-UBEDZ4FD.js +0 -4198
- package/dist/chunk-UBEDZ4FD.js.map +0 -1
- package/dist/chunk-VY6MNOXL.js +0 -20
- package/dist/chunk-VY6MNOXL.js.map +0 -1
- package/dist/chunk-WBCPLH66.js +0 -42
- package/dist/chunk-WBCPLH66.js.map +0 -1
- package/dist/chunk-WKTHWQKM.js.map +0 -1
- package/dist/chunk-XHUODHZ4.js.map +0 -1
- package/dist/chunk-ZPPHXXAP.js +0 -252
- package/dist/chunk-ZPPHXXAP.js.map +0 -1
- package/dist/commands/import/skill.js +0 -344
- package/dist/commands/import/skill.js.map +0 -1
- package/dist/commands/new/agent.js +0 -300
- package/dist/commands/new/agent.js.map +0 -1
- package/dist/commands/new/marketplace.js +0 -310
- package/dist/commands/new/marketplace.js.map +0 -1
- package/dist/commands/new/skill.js +0 -26
- package/dist/commands/validate.js +0 -575
- package/dist/commands/validate.js.map +0 -1
- package/dist/components/wizard/search-modal.js +0 -13
- package/dist/components/wizard/selection-card.js +0 -9
- package/dist/components/wizard/step-settings.js +0 -18
- package/dist/copy-local-skills-6EMVN7RB.js +0 -14
- package/dist/load-agent-defs-BWOUVEAR.js +0 -15
- package/dist/load-agent-defs-BWOUVEAR.js.map +0 -1
- package/dist/loader-5JP4S7CJ.js.map +0 -1
- package/dist/recompile-project-agents-6DL45TDI.js +0 -19
- package/dist/recompile-project-agents-6DL45TDI.js.map +0 -1
- package/dist/source-loader-MZYCPL2S.js.map +0 -1
- package/dist/src/agents/developer/web-architecture/critical-reminders.md +0 -48
- package/dist/src/agents/developer/web-architecture/critical-requirements.md +0 -65
- package/dist/src/agents/developer/web-architecture/identity.md +0 -64
- package/dist/src/agents/developer/web-architecture/metadata.yaml +0 -12
- package/dist/src/agents/developer/web-architecture/output.md +0 -449
- package/dist/src/agents/developer/web-architecture/playbook.md +0 -481
- package/dist/src/agents/pattern/pattern-scout/critical-reminders.md +0 -71
- package/dist/src/agents/pattern/pattern-scout/critical-requirements.md +0 -31
- package/dist/src/agents/pattern/pattern-scout/identity.md +0 -25
- package/dist/src/agents/pattern/pattern-scout/metadata.yaml +0 -10
- package/dist/src/agents/pattern/pattern-scout/output.md +0 -290
- package/dist/src/agents/pattern/pattern-scout/playbook.md +0 -1806
- package/dist/src/agents/pattern/web-pattern-critique/critical-reminders.md +0 -30
- package/dist/src/agents/pattern/web-pattern-critique/critical-requirements.md +0 -28
- package/dist/src/agents/pattern/web-pattern-critique/identity.md +0 -41
- package/dist/src/agents/pattern/web-pattern-critique/metadata.yaml +0 -12
- package/dist/src/agents/pattern/web-pattern-critique/output.md +0 -314
- package/dist/src/agents/pattern/web-pattern-critique/playbook.md +0 -572
- package/dist/src/agents/planning/api-pm/critical-reminders.md +0 -48
- package/dist/src/agents/planning/api-pm/critical-requirements.md +0 -41
- package/dist/src/agents/planning/api-pm/identity.md +0 -39
- package/dist/src/agents/planning/api-pm/metadata.yaml +0 -12
- package/dist/src/agents/planning/api-pm/output.md +0 -475
- package/dist/src/agents/planning/api-pm/playbook.md +0 -129
- package/dist/src/agents/planning/web-pm/identity.md +0 -26
- package/dist/src/agents/planning/web-pm/metadata.yaml +0 -12
- package/dist/src/agents/planning/web-pm/playbook.md +0 -318
- package/dist/src/agents/reviewer/ai-reviewer/critical-reminders.md +0 -40
- package/dist/src/agents/reviewer/ai-reviewer/critical-requirements.md +0 -37
- package/dist/src/agents/reviewer/ai-reviewer/identity.md +0 -51
- package/dist/src/agents/reviewer/ai-reviewer/metadata.yaml +0 -10
- package/dist/src/agents/reviewer/ai-reviewer/output.md +0 -395
- package/dist/src/agents/reviewer/ai-reviewer/playbook.md +0 -90
- package/dist/src/agents/reviewer/api-reviewer/critical-reminders.md +0 -31
- package/dist/src/agents/reviewer/api-reviewer/critical-requirements.md +0 -27
- package/dist/src/agents/reviewer/api-reviewer/identity.md +0 -51
- package/dist/src/agents/reviewer/api-reviewer/metadata.yaml +0 -12
- package/dist/src/agents/reviewer/api-reviewer/output.md +0 -343
- package/dist/src/agents/reviewer/api-reviewer/playbook.md +0 -288
- package/dist/src/agents/reviewer/cli-reviewer/critical-reminders.md +0 -33
- package/dist/src/agents/reviewer/cli-reviewer/critical-requirements.md +0 -30
- package/dist/src/agents/reviewer/cli-reviewer/identity.md +0 -44
- package/dist/src/agents/reviewer/cli-reviewer/metadata.yaml +0 -12
- package/dist/src/agents/reviewer/cli-reviewer/output.md +0 -414
- package/dist/src/agents/reviewer/cli-reviewer/playbook.md +0 -218
- package/dist/src/agents/reviewer/infra-reviewer/critical-reminders.md +0 -38
- package/dist/src/agents/reviewer/infra-reviewer/critical-requirements.md +0 -38
- package/dist/src/agents/reviewer/infra-reviewer/identity.md +0 -53
- package/dist/src/agents/reviewer/infra-reviewer/metadata.yaml +0 -10
- package/dist/src/agents/reviewer/infra-reviewer/output.md +0 -364
- package/dist/src/agents/reviewer/infra-reviewer/playbook.md +0 -161
- package/dist/src/agents/reviewer/web-reviewer/critical-reminders.md +0 -31
- package/dist/src/agents/reviewer/web-reviewer/critical-requirements.md +0 -26
- package/dist/src/agents/reviewer/web-reviewer/identity.md +0 -40
- package/dist/src/agents/reviewer/web-reviewer/metadata.yaml +0 -12
- package/dist/src/agents/reviewer/web-reviewer/output.md +0 -333
- package/dist/src/agents/reviewer/web-reviewer/playbook.md +0 -156
- package/src/agents/developer/web-architecture/critical-reminders.md +0 -48
- package/src/agents/developer/web-architecture/critical-requirements.md +0 -65
- package/src/agents/developer/web-architecture/identity.md +0 -64
- package/src/agents/developer/web-architecture/metadata.yaml +0 -12
- package/src/agents/developer/web-architecture/output.md +0 -449
- package/src/agents/developer/web-architecture/playbook.md +0 -481
- package/src/agents/pattern/pattern-scout/critical-reminders.md +0 -71
- package/src/agents/pattern/pattern-scout/critical-requirements.md +0 -31
- package/src/agents/pattern/pattern-scout/identity.md +0 -25
- package/src/agents/pattern/pattern-scout/metadata.yaml +0 -10
- package/src/agents/pattern/pattern-scout/output.md +0 -290
- package/src/agents/pattern/pattern-scout/playbook.md +0 -1806
- package/src/agents/pattern/web-pattern-critique/critical-reminders.md +0 -30
- package/src/agents/pattern/web-pattern-critique/critical-requirements.md +0 -28
- package/src/agents/pattern/web-pattern-critique/identity.md +0 -41
- package/src/agents/pattern/web-pattern-critique/metadata.yaml +0 -12
- package/src/agents/pattern/web-pattern-critique/output.md +0 -314
- package/src/agents/pattern/web-pattern-critique/playbook.md +0 -572
- package/src/agents/planning/api-pm/critical-reminders.md +0 -48
- package/src/agents/planning/api-pm/critical-requirements.md +0 -41
- package/src/agents/planning/api-pm/identity.md +0 -39
- package/src/agents/planning/api-pm/metadata.yaml +0 -12
- package/src/agents/planning/api-pm/output.md +0 -475
- package/src/agents/planning/api-pm/playbook.md +0 -129
- package/src/agents/planning/web-pm/identity.md +0 -26
- package/src/agents/planning/web-pm/metadata.yaml +0 -12
- package/src/agents/planning/web-pm/playbook.md +0 -318
- package/src/agents/reviewer/ai-reviewer/critical-reminders.md +0 -40
- package/src/agents/reviewer/ai-reviewer/critical-requirements.md +0 -37
- package/src/agents/reviewer/ai-reviewer/identity.md +0 -51
- package/src/agents/reviewer/ai-reviewer/metadata.yaml +0 -10
- package/src/agents/reviewer/ai-reviewer/output.md +0 -395
- package/src/agents/reviewer/ai-reviewer/playbook.md +0 -90
- package/src/agents/reviewer/api-reviewer/critical-reminders.md +0 -31
- package/src/agents/reviewer/api-reviewer/critical-requirements.md +0 -27
- package/src/agents/reviewer/api-reviewer/identity.md +0 -51
- package/src/agents/reviewer/api-reviewer/metadata.yaml +0 -12
- package/src/agents/reviewer/api-reviewer/output.md +0 -343
- package/src/agents/reviewer/api-reviewer/playbook.md +0 -288
- package/src/agents/reviewer/cli-reviewer/critical-reminders.md +0 -33
- package/src/agents/reviewer/cli-reviewer/critical-requirements.md +0 -30
- package/src/agents/reviewer/cli-reviewer/identity.md +0 -44
- package/src/agents/reviewer/cli-reviewer/metadata.yaml +0 -12
- package/src/agents/reviewer/cli-reviewer/output.md +0 -414
- package/src/agents/reviewer/cli-reviewer/playbook.md +0 -218
- package/src/agents/reviewer/infra-reviewer/critical-reminders.md +0 -38
- package/src/agents/reviewer/infra-reviewer/critical-requirements.md +0 -38
- package/src/agents/reviewer/infra-reviewer/identity.md +0 -53
- package/src/agents/reviewer/infra-reviewer/metadata.yaml +0 -10
- package/src/agents/reviewer/infra-reviewer/output.md +0 -364
- package/src/agents/reviewer/infra-reviewer/playbook.md +0 -161
- package/src/agents/reviewer/web-reviewer/critical-reminders.md +0 -31
- package/src/agents/reviewer/web-reviewer/critical-requirements.md +0 -26
- package/src/agents/reviewer/web-reviewer/identity.md +0 -40
- package/src/agents/reviewer/web-reviewer/metadata.yaml +0 -12
- package/src/agents/reviewer/web-reviewer/output.md +0 -333
- package/src/agents/reviewer/web-reviewer/playbook.md +0 -156
- /package/dist/{chunk-ZL7PFNHN.js.map → chunk-K3O3YQYG.js.map} +0 -0
- /package/dist/{chunk-IHUY4M22.js.map → chunk-NXGMM5YN.js.map} +0 -0
- /package/dist/{chunk-DTSG5XZB.js.map → chunk-V3ENMW7G.js.map} +0 -0
- /package/dist/{commands/new/skill.js.map → copy-local-skills-KF2RAVD3.js.map} +0 -0
- /package/dist/{components/wizard/search-modal.js.map → load-agent-defs-DGXGBU3Q.js.map} +0 -0
- /package/dist/{components/wizard/selection-card.js.map → loader-4U7UCE2Y.js.map} +0 -0
- /package/dist/{components/wizard/step-settings.js.map → recompile-project-agents-CJVBAWDJ.js.map} +0 -0
- /package/dist/{copy-local-skills-6EMVN7RB.js.map → source-loader-ZNSYJJCI.js.map} +0 -0
|
@@ -4,32 +4,32 @@ import {
|
|
|
4
4
|
} from "./chunk-TSIU7DME.js";
|
|
5
5
|
import {
|
|
6
6
|
getDomainDisplayName
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-JFAUQDZM.js";
|
|
8
8
|
import {
|
|
9
9
|
useRowScroll
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-V3ENMW7G.js";
|
|
11
11
|
import {
|
|
12
12
|
KEY_SPACE
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-2HC2SNRP.js";
|
|
14
14
|
import {
|
|
15
15
|
deriveScopeBadges,
|
|
16
16
|
formatScopeTag,
|
|
17
17
|
useWizardStore
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-HEBPKK5L.js";
|
|
19
19
|
import {
|
|
20
20
|
isAgentName,
|
|
21
21
|
toTitleCase
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-NXQAY5U7.js";
|
|
23
23
|
import {
|
|
24
24
|
matrix
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-35VOK7XE.js";
|
|
26
26
|
import {
|
|
27
27
|
typedKeys
|
|
28
28
|
} from "./chunk-VASLW636.js";
|
|
29
29
|
import {
|
|
30
30
|
CLI_COLORS,
|
|
31
31
|
UI_SYMBOLS
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-R54KIGN2.js";
|
|
33
33
|
|
|
34
34
|
// src/cli/components/wizard/step-agents.tsx
|
|
35
35
|
import { groupBy, unique } from "remeda";
|
|
@@ -45,23 +45,11 @@ var BUILT_IN_AGENT_GROUPS = [
|
|
|
45
45
|
label: "Web Developer",
|
|
46
46
|
description: "Frontend features, components, TypeScript"
|
|
47
47
|
},
|
|
48
|
-
{ id: "web-reviewer", label: "Web Reviewer", description: "UI component code review" },
|
|
49
48
|
{ id: "web-researcher", label: "Web Researcher", description: "Frontend pattern discovery" },
|
|
50
49
|
{
|
|
51
50
|
id: "web-tester",
|
|
52
51
|
label: "Web Tester",
|
|
53
52
|
description: "Frontend tests, E2E, component tests"
|
|
54
|
-
},
|
|
55
|
-
{ id: "web-pm", label: "Web PM", description: "Implementation specs and planning" },
|
|
56
|
-
{
|
|
57
|
-
id: "web-architecture",
|
|
58
|
-
label: "Web Architecture",
|
|
59
|
-
description: "App scaffolding, foundational patterns"
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
id: "web-pattern-critique",
|
|
63
|
-
label: "Web Pattern Critique",
|
|
64
|
-
description: "Critique patterns against industry standards"
|
|
65
53
|
}
|
|
66
54
|
]
|
|
67
55
|
},
|
|
@@ -73,8 +61,32 @@ var BUILT_IN_AGENT_GROUPS = [
|
|
|
73
61
|
label: "API Developer",
|
|
74
62
|
description: "Backend routes, database, middleware"
|
|
75
63
|
},
|
|
76
|
-
{ id: "api-
|
|
77
|
-
{
|
|
64
|
+
{ id: "api-researcher", label: "API Researcher", description: "Backend pattern discovery" },
|
|
65
|
+
{
|
|
66
|
+
id: "api-tester",
|
|
67
|
+
label: "API Tester",
|
|
68
|
+
description: "Endpoint, database, and auth flow tests"
|
|
69
|
+
}
|
|
70
|
+
]
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
label: "AI",
|
|
74
|
+
items: [
|
|
75
|
+
{
|
|
76
|
+
id: "ai-developer",
|
|
77
|
+
label: "AI Developer",
|
|
78
|
+
description: "RAG pipelines, agent loops, tool calling"
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
id: "ai-researcher",
|
|
82
|
+
label: "AI Researcher",
|
|
83
|
+
description: "Prompt, model, and RAG pipeline discovery"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
id: "ai-tester",
|
|
87
|
+
label: "AI Tester",
|
|
88
|
+
description: "LLM mocking, prompt regression, eval harnesses"
|
|
89
|
+
}
|
|
78
90
|
]
|
|
79
91
|
},
|
|
80
92
|
{
|
|
@@ -86,16 +98,25 @@ var BUILT_IN_AGENT_GROUPS = [
|
|
|
86
98
|
description: "CLI commands, interactive prompts"
|
|
87
99
|
},
|
|
88
100
|
{ id: "cli-tester", label: "CLI Tester", description: "CLI application tests" },
|
|
89
|
-
{
|
|
101
|
+
{
|
|
102
|
+
id: "cli-researcher",
|
|
103
|
+
label: "CLI Researcher",
|
|
104
|
+
description: "CLI command and config pattern discovery"
|
|
105
|
+
}
|
|
90
106
|
]
|
|
91
107
|
},
|
|
92
108
|
{
|
|
93
109
|
label: "Meta",
|
|
94
110
|
items: [
|
|
95
111
|
{
|
|
96
|
-
id: "
|
|
97
|
-
label: "
|
|
98
|
-
description: "
|
|
112
|
+
id: "pm",
|
|
113
|
+
label: "PM",
|
|
114
|
+
description: "Cross-domain implementation specs; domain frameworks via skills"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
id: "reviewer",
|
|
118
|
+
label: "Reviewer",
|
|
119
|
+
description: "Cross-domain code review; domain knowledge via skills"
|
|
99
120
|
},
|
|
100
121
|
{ id: "agent-summoner", label: "Agent Summoner", description: "Create and improve agents" },
|
|
101
122
|
{
|
|
@@ -143,6 +164,11 @@ function buildFlatRows(groups) {
|
|
|
143
164
|
function buildFocusableIds(groups) {
|
|
144
165
|
return [...groups.flatMap((group) => group.items.map((a) => a.id)), "continue"];
|
|
145
166
|
}
|
|
167
|
+
function focusableIdAt(ids, index) {
|
|
168
|
+
const id = ids[index];
|
|
169
|
+
if (id === void 0) throw new Error(`No focusable row at index ${index} of ${ids.length}`);
|
|
170
|
+
return id;
|
|
171
|
+
}
|
|
146
172
|
var StepAgents = () => {
|
|
147
173
|
const selectedAgents = useWizardStore((s) => s.selectedAgents);
|
|
148
174
|
const agentConfigs = useWizardStore((s) => s.agentConfigs);
|
|
@@ -151,7 +177,7 @@ var StepAgents = () => {
|
|
|
151
177
|
const focusableIds = useMemo(() => buildFocusableIds(agentGroups), [agentGroups]);
|
|
152
178
|
const [focusedId, setFocusedId] = useState(() => {
|
|
153
179
|
const stored = useWizardStore.getState().focusedAgentId;
|
|
154
|
-
return stored && focusableIds.includes(stored) ? stored : focusableIds
|
|
180
|
+
return stored && focusableIds.includes(stored) ? stored : focusableIdAt(focusableIds, 0);
|
|
155
181
|
});
|
|
156
182
|
const { ref: listRef, measuredHeight: listHeight } = useMeasuredHeight();
|
|
157
183
|
const focusedRowIndex = focusedId !== "continue" ? flatRows.findIndex((row) => row.type === "agent" && row.agent.id === focusedId) : -1;
|
|
@@ -168,12 +194,12 @@ var StepAgents = () => {
|
|
|
168
194
|
const currentIdx = focusableIds.indexOf(focusedId);
|
|
169
195
|
if (key.upArrow || input === "k") {
|
|
170
196
|
const nextIdx = currentIdx <= 0 ? focusableIds.length - 1 : currentIdx - 1;
|
|
171
|
-
setFocusedId(focusableIds
|
|
197
|
+
setFocusedId(focusableIdAt(focusableIds, nextIdx));
|
|
172
198
|
return;
|
|
173
199
|
}
|
|
174
200
|
if (key.downArrow || input === "j") {
|
|
175
201
|
const nextIdx = currentIdx >= focusableIds.length - 1 ? 0 : currentIdx + 1;
|
|
176
|
-
setFocusedId(focusableIds
|
|
202
|
+
setFocusedId(focusableIdAt(focusableIds, nextIdx));
|
|
177
203
|
return;
|
|
178
204
|
}
|
|
179
205
|
if (key.return) {
|
|
@@ -218,11 +244,11 @@ var StepAgents = () => {
|
|
|
218
244
|
const scope = badges.scope ?? "global";
|
|
219
245
|
const secondaryScope = badges.secondaryScope;
|
|
220
246
|
return /* @__PURE__ */ jsx(Box, { flexShrink: 0, children: /* @__PURE__ */ jsxs(Text, { children: [
|
|
221
|
-
/* @__PURE__ */ jsx(Text, { color:
|
|
247
|
+
/* @__PURE__ */ jsx(Text, { ...isFocused && { color: CLI_COLORS.PRIMARY }, children: pointer }),
|
|
222
248
|
/* @__PURE__ */ jsxs(
|
|
223
249
|
Text,
|
|
224
250
|
{
|
|
225
|
-
|
|
251
|
+
...(isSelected || isFocused) && { color: CLI_COLORS.PRIMARY },
|
|
226
252
|
bold: isFocused,
|
|
227
253
|
children: [
|
|
228
254
|
" ",
|
|
@@ -242,7 +268,7 @@ var StepAgents = () => {
|
|
|
242
268
|
/* @__PURE__ */ jsxs(
|
|
243
269
|
Text,
|
|
244
270
|
{
|
|
245
|
-
|
|
271
|
+
...(isSelected || isFocused) && { color: CLI_COLORS.PRIMARY },
|
|
246
272
|
bold: isFocused,
|
|
247
273
|
children: [
|
|
248
274
|
" ",
|
|
@@ -280,7 +306,7 @@ var StepAgents = () => {
|
|
|
280
306
|
)
|
|
281
307
|
}
|
|
282
308
|
) }),
|
|
283
|
-
/* @__PURE__ */ jsxs(Text, { color:
|
|
309
|
+
/* @__PURE__ */ jsxs(Text, { ...isContinueFocused && { color: CLI_COLORS.PRIMARY }, bold: isContinueFocused, children: [
|
|
284
310
|
isContinueFocused ? UI_SYMBOLS.CHEVRON : UI_SYMBOLS.CHEVRON_SPACER,
|
|
285
311
|
" ",
|
|
286
312
|
"\u2192",
|
|
@@ -293,4 +319,4 @@ var StepAgents = () => {
|
|
|
293
319
|
export {
|
|
294
320
|
StepAgents
|
|
295
321
|
};
|
|
296
|
-
//# sourceMappingURL=chunk-
|
|
322
|
+
//# sourceMappingURL=chunk-K7PJDWER.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/components/wizard/step-agents.tsx"],"sourcesContent":["import { groupBy, unique } from \"remeda\";\nimport { Box, Text, useInput } from \"ink\";\nimport { deriveScopeBadges, formatScopeTag } from \"../../lib/wizard/index.js\";\nimport React, { useMemo, useState } from \"react\";\nimport { CLI_COLORS, UI_SYMBOLS } from \"../../consts.js\";\nimport { matrix } from \"../../lib/matrix/matrix-provider.js\";\nimport { useWizardStore } from \"../../stores/wizard-store.js\";\nimport type { AgentName, MergedSkillsMatrix } from \"../../types/index.js\";\nimport { isAgentName } from \"../../utils/type-guards.js\";\nimport { typedKeys } from \"../../utils/typed-object.js\";\nimport { toTitleCase } from \"../../utils/string.js\";\nimport { useMeasuredHeight } from \"../hooks/use-measured-height.js\";\nimport { useRowScroll } from \"../hooks/use-row-scroll.js\";\nimport { type CheckboxItem } from \"./checkbox-grid.js\";\nimport { KEY_SPACE } from \"./hotkeys.js\";\nimport { getDomainDisplayName } from \"./utils.js\";\n\ntype AgentItem = CheckboxItem<AgentName>;\n\ntype AgentGroup = {\n label: string;\n items: AgentItem[];\n};\n\nconst BUILT_IN_AGENT_GROUPS: AgentGroup[] = [\n {\n label: \"Web\",\n items: [\n {\n id: \"web-developer\",\n label: \"Web Developer\",\n description: \"Frontend features, components, TypeScript\",\n },\n { id: \"web-researcher\", label: \"Web Researcher\", description: \"Frontend pattern discovery\" },\n {\n id: \"web-tester\",\n label: \"Web Tester\",\n description: \"Frontend tests, E2E, component tests\",\n },\n ],\n },\n {\n label: \"API\",\n items: [\n {\n id: \"api-developer\",\n label: \"API Developer\",\n description: \"Backend routes, database, middleware\",\n },\n { id: \"api-researcher\", label: \"API Researcher\", description: \"Backend pattern discovery\" },\n {\n id: \"api-tester\",\n label: \"API Tester\",\n description: \"Endpoint, database, and auth flow tests\",\n },\n ],\n },\n {\n label: \"AI\",\n items: [\n {\n id: \"ai-developer\",\n label: \"AI Developer\",\n description: \"RAG pipelines, agent loops, tool calling\",\n },\n {\n id: \"ai-researcher\",\n label: \"AI Researcher\",\n description: \"Prompt, model, and RAG pipeline discovery\",\n },\n {\n id: \"ai-tester\",\n label: \"AI Tester\",\n description: \"LLM mocking, prompt regression, eval harnesses\",\n },\n ],\n },\n {\n label: \"CLI\",\n items: [\n {\n id: \"cli-developer\",\n label: \"CLI Developer\",\n description: \"CLI commands, interactive prompts\",\n },\n { id: \"cli-tester\", label: \"CLI Tester\", description: \"CLI application tests\" },\n {\n id: \"cli-researcher\",\n label: \"CLI Researcher\",\n description: \"CLI command and config pattern discovery\",\n },\n ],\n },\n {\n label: \"Meta\",\n items: [\n {\n id: \"pm\",\n label: \"PM\",\n description: \"Cross-domain implementation specs; domain frameworks via skills\",\n },\n {\n id: \"reviewer\",\n label: \"Reviewer\",\n description: \"Cross-domain code review; domain knowledge via skills\",\n },\n { id: \"agent-summoner\", label: \"Agent Summoner\", description: \"Create and improve agents\" },\n {\n id: \"skill-summoner\",\n label: \"Skill Summoner\",\n description: \"Create technology-specific skills\",\n },\n { id: \"codex-keeper\", label: \"Codex Keeper\", description: \"AI-focused documentation\" },\n ],\n },\n];\n\n/** IDs of all built-in agents for fast lookup. */\nconst BUILT_IN_AGENT_IDS = new Set<string>(\n BUILT_IN_AGENT_GROUPS.flatMap((group) => group.items.map((a) => a.id)),\n);\n\ntype FocusId = AgentName | \"continue\";\n\ntype ListRow =\n { type: \"header\"; label: string } | { type: \"spacer\" } | { type: \"agent\"; agent: AgentItem };\n\nfunction buildAgentGroups(matrix: MergedSkillsMatrix): AgentGroup[] {\n const customAgentIds: string[] = unique(\n matrix.suggestedStacks.flatMap((stack) => typedKeys(stack.skills)),\n ).filter((agentName) => !BUILT_IN_AGENT_IDS.has(agentName));\n\n if (customAgentIds.length === 0) return BUILT_IN_AGENT_GROUPS;\n\n // Group custom agents by explicit domain (from metadata.yaml) or kebab prefix fallback\n const customItems = customAgentIds.map((agentId) => {\n const explicitDomain = isAgentName(agentId) ? matrix.agentDefinedDomains?.[agentId] : undefined;\n const domainKey = explicitDomain ?? (agentId.split(\"-\")[0] || \"custom\");\n return {\n groupLabel: getDomainDisplayName(domainKey),\n item: {\n // Boundary cast: custom agent names from marketplace stacks are not in the AgentName union\n id: agentId as AgentName,\n label: toTitleCase(agentId),\n description: \"Custom agent\",\n },\n };\n });\n const customGroups: AgentGroup[] = Object.entries(groupBy(customItems, (c) => c.groupLabel)).map(\n ([label, entries]) => ({ label, items: entries.map((entry) => entry.item) }),\n );\n\n return [...BUILT_IN_AGENT_GROUPS, ...customGroups];\n}\n\nfunction buildFlatRows(groups: AgentGroup[]): ListRow[] {\n return groups.flatMap((group, groupIndex): ListRow[] => [\n ...(groupIndex > 0 ? [{ type: \"spacer\" as const }] : []),\n { type: \"header\" as const, label: group.label },\n ...group.items.map((agent): ListRow => ({ type: \"agent\", agent })),\n ]);\n}\n\nfunction buildFocusableIds(groups: AgentGroup[]): FocusId[] {\n return [...groups.flatMap((group) => group.items.map((a) => a.id)), \"continue\"];\n}\n\n/**\n * Asserting row lookup. `buildFocusableIds` always appends \"continue\", so the\n * list is never empty and every caller below wraps within it — a miss means the\n * wrap arithmetic is wrong, which is worth a diagnostic rather than a focus that\n * silently stops moving.\n */\nfunction focusableIdAt(ids: FocusId[], index: number): FocusId {\n const id = ids[index];\n if (id === undefined) throw new Error(`No focusable row at index ${index} of ${ids.length}`);\n return id;\n}\n\nexport const StepAgents: React.FC = () => {\n const selectedAgents = useWizardStore((s) => s.selectedAgents);\n const agentConfigs = useWizardStore((s) => s.agentConfigs);\n\n const agentGroups = useMemo(() => buildAgentGroups(matrix), []);\n const flatRows = useMemo(() => buildFlatRows(agentGroups), [agentGroups]);\n const focusableIds = useMemo(() => buildFocusableIds(agentGroups), [agentGroups]);\n\n const [focusedId, setFocusedId] = useState<FocusId>(() => {\n const stored = useWizardStore.getState().focusedAgentId;\n return stored && focusableIds.includes(stored) ? stored : focusableIdAt(focusableIds, 0);\n });\n const { ref: listRef, measuredHeight: listHeight } = useMeasuredHeight();\n\n const focusedRowIndex =\n focusedId !== \"continue\"\n ? flatRows.findIndex((row) => row.type === \"agent\" && row.agent.id === focusedId)\n : -1;\n // The Agents grid clips silently: `useRowScroll` exposes no hidden-line counts\n // and this view renders no `ScrollAffordance`, by owner decision — see the\n // hook's doc comment.\n const { scrollEnabled, scrollTop } = useRowScroll({\n focusedIndex: Math.max(0, focusedRowIndex),\n itemCount: flatRows.length,\n availableHeight: listHeight,\n });\n\n useInput((input, key) => {\n if (key.escape) {\n useWizardStore.getState().goBack();\n return;\n }\n\n const currentIdx = focusableIds.indexOf(focusedId);\n\n if (key.upArrow || input === \"k\") {\n const nextIdx = currentIdx <= 0 ? focusableIds.length - 1 : currentIdx - 1;\n setFocusedId(focusableIdAt(focusableIds, nextIdx));\n return;\n }\n\n if (key.downArrow || input === \"j\") {\n const nextIdx = currentIdx >= focusableIds.length - 1 ? 0 : currentIdx + 1;\n setFocusedId(focusableIdAt(focusableIds, nextIdx));\n return;\n }\n\n if (key.return) {\n useWizardStore.getState().setStep(\"confirm\");\n return;\n }\n\n if (input === KEY_SPACE && focusedId !== \"continue\") {\n useWizardStore.getState().toggleAgent(focusedId);\n }\n });\n\n // Sync focusedAgentId so the wizard-level S key handler can toggle agent scope\n React.useEffect(() => {\n useWizardStore.getState().setFocusedAgentId(focusedId === \"continue\" ? null : focusedId);\n }, [focusedId]);\n\n const focusedGroupLabel = agentGroups.find((g) => g.items.some((a) => a.id === focusedId))?.label;\n\n const selectedCount = selectedAgents.length;\n const continueLabel =\n selectedCount > 0 ? `Continue with ${selectedCount} agent(s)` : \"Continue without agents\";\n\n const isContinueFocused = focusedId === \"continue\";\n\n const rowElements = flatRows.map((row, index) => {\n switch (row.type) {\n case \"header\":\n return (\n <Box key={`header-${row.label}`} flexShrink={0}>\n {row.label === focusedGroupLabel ? (\n <Text\n color={CLI_COLORS.WHITE}\n backgroundColor={CLI_COLORS.LABEL_BG}\n >{` ${row.label} `}</Text>\n ) : (\n <Text dimColor bold>\n {\" \"}\n {row.label}\n </Text>\n )}\n </Box>\n );\n case \"spacer\":\n return (\n <Box key={`spacer-${index}`} flexShrink={0}>\n <Text> </Text>\n </Box>\n );\n case \"agent\": {\n const isFocused = row.agent.id === focusedId;\n const isSelected = selectedAgents.includes(row.agent.id);\n const checkbox = isSelected ? \"[\\u2713]\" : \"[ ]\";\n const pointer = isFocused ? UI_SYMBOLS.CHEVRON : UI_SYMBOLS.CHEVRON_SPACER;\n const agentConfig = agentConfigs.find((ac) => ac.name === row.agent.id && !ac.excluded);\n const excludedConfig = agentConfigs.find((ac) => ac.name === row.agent.id && ac.excluded);\n const badges = deriveScopeBadges(agentConfig, excludedConfig);\n const scope = badges.scope ?? \"global\";\n const secondaryScope = badges.secondaryScope;\n return (\n <Box key={row.agent.id} flexShrink={0}>\n <Text>\n <Text {...(isFocused && { color: CLI_COLORS.PRIMARY })}>{pointer}</Text>\n <Text\n {...((isSelected || isFocused) && { color: CLI_COLORS.PRIMARY })}\n bold={isFocused}\n >\n {\" \"}\n {checkbox}{\" \"}\n </Text>\n <Text color={scope === \"global\" ? CLI_COLORS.WARNING : CLI_COLORS.TOAST_BG}>\n {formatScopeTag(scope)}\n </Text>\n {secondaryScope && (\n <Text\n color={secondaryScope === \"global\" ? CLI_COLORS.WARNING : CLI_COLORS.TOAST_BG}\n >\n {formatScopeTag(secondaryScope)}\n </Text>\n )}\n <Text\n {...((isSelected || isFocused) && { color: CLI_COLORS.PRIMARY })}\n bold={isFocused}\n >\n {\" \"}\n {row.agent.label}\n </Text>\n <Text dimColor> {row.agent.description}</Text>\n </Text>\n </Box>\n );\n }\n default: {\n const _exhaustive: never = row;\n return _exhaustive;\n }\n }\n });\n\n return (\n <Box flexDirection=\"column\" width=\"100%\" flexGrow={1} flexBasis={0}>\n <Box ref={listRef} flexDirection=\"column\" flexGrow={1} flexBasis={0}>\n <Box\n flexDirection=\"column\"\n flexGrow={1}\n {...(scrollEnabled && { overflow: \"hidden\" as const })}\n >\n <Box\n flexDirection=\"column\"\n marginTop={scrollTop > 0 ? -scrollTop : 0}\n {...(scrollEnabled && { flexShrink: 0 })}\n >\n {rowElements}\n </Box>\n </Box>\n </Box>\n\n <Text {...(isContinueFocused && { color: CLI_COLORS.PRIMARY })} bold={isContinueFocused}>\n {isContinueFocused ? UI_SYMBOLS.CHEVRON : UI_SYMBOLS.CHEVRON_SPACER} {\"\\u2192\"}{\" \"}\n {continueLabel}\n </Text>\n </Box>\n );\n};\n"],"mappings":"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","names":["matrix"]}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
Wizard
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-BMGBA6HJ.js";
|
|
5
5
|
import {
|
|
6
6
|
render
|
|
7
7
|
} from "./chunk-JFLVEFFP.js";
|
|
8
8
|
import {
|
|
9
9
|
hydrateWizardStore
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-HEBPKK5L.js";
|
|
11
11
|
|
|
12
12
|
// src/cli/components/wizard/run-wizard-session.tsx
|
|
13
|
+
import "react";
|
|
13
14
|
import { jsx } from "react/jsx-runtime";
|
|
14
15
|
async function runWizardSession(options) {
|
|
15
16
|
hydrateWizardStore(options.hydrate);
|
|
@@ -37,4 +38,4 @@ async function runWizardSession(options) {
|
|
|
37
38
|
export {
|
|
38
39
|
runWizardSession
|
|
39
40
|
};
|
|
40
|
-
//# sourceMappingURL=chunk-
|
|
41
|
+
//# sourceMappingURL=chunk-KET3EVGX.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli/components/wizard/run-wizard-session.tsx"],"sourcesContent":["import React from \"react\";\nimport { render } from \"../render.js\";\nimport { Wizard, type WizardProps, type WizardResultV2 } from \"./wizard.js\";\nimport { hydrateWizardStore, type HydrateOptions } from \"../../stores/wizard-store.js\";\n\nexport type WizardSessionOptions = {\n hydrate: HydrateOptions;\n props: Omit<WizardProps, \"onComplete\" | \"onCancel\">;\n onCancel: () => void;\n /** Command-owned terminal reset, run after the Ink render unmounts. */\n clearTerminal: () => void;\n};\n\n/**\n * Runs one full wizard session: hydrate the store, render the wizard, wait\n * for exit, clear the screen, and return the result — or null when cancelled.\n */\nexport async function runWizardSession(\n options: WizardSessionOptions,\n): Promise<WizardResultV2 | null> {\n hydrateWizardStore(options.hydrate);\n\n let wizardResult: WizardResultV2 | null = null;\n // Read through a function boundary: onComplete mutates wizardResult inside the\n // closure before waitUntilExit resolves, which TS's flow narrowing can't track\n const readResult = (): WizardResultV2 | null => wizardResult;\n\n const { waitUntilExit, clear } = render(\n <Wizard\n {...options.props}\n onComplete={(result) => {\n wizardResult = result;\n }}\n onCancel={options.onCancel}\n />,\n );\n\n await waitUntilExit();\n clear();\n options.clearTerminal();\n\n const result = readResult();\n return !result || result.cancelled ? null : result;\n}\n"],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../src/cli/components/wizard/run-wizard-session.tsx"],"sourcesContent":["import React from \"react\";\nimport { render } from \"../render.js\";\nimport { Wizard, type WizardProps, type WizardResultV2 } from \"./wizard.js\";\nimport { hydrateWizardStore, type HydrateOptions } from \"../../stores/wizard-store.js\";\n\nexport type WizardSessionOptions = {\n hydrate: HydrateOptions;\n props: Omit<WizardProps, \"onComplete\" | \"onCancel\">;\n onCancel: () => void;\n /** Command-owned terminal reset, run after the Ink render unmounts. */\n clearTerminal: () => void;\n};\n\n/**\n * Runs one full wizard session: hydrate the store, render the wizard, wait\n * for exit, clear the screen, and return the result — or null when cancelled.\n */\nexport async function runWizardSession(\n options: WizardSessionOptions,\n): Promise<WizardResultV2 | null> {\n hydrateWizardStore(options.hydrate);\n\n let wizardResult: WizardResultV2 | null = null;\n // Read through a function boundary: onComplete mutates wizardResult inside the\n // closure before waitUntilExit resolves, which TS's flow narrowing can't track\n const readResult = (): WizardResultV2 | null => wizardResult;\n\n const { waitUntilExit, clear } = render(\n <Wizard\n {...options.props}\n onComplete={(result) => {\n wizardResult = result;\n }}\n onCancel={options.onCancel}\n />,\n );\n\n await waitUntilExit();\n clear();\n options.clearTerminal();\n\n const result = readResult();\n return !result || result.cancelled ? null : result;\n}\n"],"mappings":";;;;;;;;;;;;AAAA,OAAkB;AA4Bd;AAXJ,eAAsB,iBACpB,SACgC;AAChC,qBAAmB,QAAQ,OAAO;AAElC,MAAI,eAAsC;AAG1C,QAAM,aAAa,MAA6B;AAEhD,QAAM,EAAE,eAAe,MAAM,IAAI;AAAA,IAC/B;AAAA,MAAC;AAAA;AAAA,QACE,GAAG,QAAQ;AAAA,QACZ,YAAY,CAACA,YAAW;AACtB,yBAAeA;AAAA,QACjB;AAAA,QACA,UAAU,QAAQ;AAAA;AAAA,IACpB;AAAA,EACF;AAEA,QAAM,cAAc;AACpB,QAAM;AACN,UAAQ,cAAc;AAEtB,QAAM,SAAS,WAAW;AAC1B,SAAO,CAAC,UAAU,OAAO,YAAY,OAAO;AAC9C;","names":["result"]}
|
|
@@ -1,23 +1,21 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
Toast
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-NSJ2S7R5.js";
|
|
5
5
|
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
} from "./chunk-
|
|
6
|
+
WizardTabs,
|
|
7
|
+
wizardTabsFor
|
|
8
|
+
} from "./chunk-JC7DBPRD.js";
|
|
9
9
|
import {
|
|
10
10
|
SummaryPanel
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-VECFAKM5.js";
|
|
12
12
|
import {
|
|
13
13
|
getDomainDisplayName,
|
|
14
14
|
getStackName
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-JFAUQDZM.js";
|
|
16
16
|
import {
|
|
17
|
-
HOTKEY_FILTER_INCOMPATIBLE,
|
|
18
17
|
HOTKEY_INFO,
|
|
19
18
|
HOTKEY_SCOPE,
|
|
20
|
-
HOTKEY_SETTINGS,
|
|
21
19
|
HOTKEY_SET_ALL_LOCAL,
|
|
22
20
|
HOTKEY_SET_ALL_PLUGIN,
|
|
23
21
|
HOTKEY_TOGGLE_LABELS,
|
|
@@ -25,23 +23,21 @@ import {
|
|
|
25
23
|
KEY_LABEL_ESC,
|
|
26
24
|
KEY_LABEL_SPACE,
|
|
27
25
|
isInfoPanelAvailable
|
|
28
|
-
} from "./chunk-
|
|
29
|
-
import {
|
|
30
|
-
FEATURE_FLAGS
|
|
31
|
-
} from "./chunk-WBCPLH66.js";
|
|
26
|
+
} from "./chunk-2HC2SNRP.js";
|
|
32
27
|
import {
|
|
28
|
+
getActiveStepFlow,
|
|
33
29
|
orderDomains,
|
|
34
30
|
useWizardStore
|
|
35
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-HEBPKK5L.js";
|
|
36
32
|
import {
|
|
37
33
|
formatTerminalTooSmallMessage,
|
|
38
34
|
isTerminalLargeEnough
|
|
39
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-K3O3YQYG.js";
|
|
40
36
|
import {
|
|
41
37
|
CLI_COLORS,
|
|
42
38
|
FALLBACK_DOMAIN,
|
|
43
39
|
LOGO_MIN_TERMINAL_ROWS
|
|
44
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-R54KIGN2.js";
|
|
45
41
|
|
|
46
42
|
// src/cli/components/wizard/wizard-layout.tsx
|
|
47
43
|
import { Box, Text } from "ink";
|
|
@@ -76,32 +72,20 @@ function useTerminalDimensions() {
|
|
|
76
72
|
// src/cli/components/wizard/wizard-layout.tsx
|
|
77
73
|
import { Fragment as Fragment2, jsx, jsxs } from "react/jsx-runtime";
|
|
78
74
|
import { createElement } from "react";
|
|
79
|
-
var DefinitionItem = ({
|
|
80
|
-
isVisible = true,
|
|
81
|
-
isActive = false,
|
|
82
|
-
label,
|
|
83
|
-
values
|
|
84
|
-
}) => {
|
|
75
|
+
var DefinitionItem = ({ isVisible = true, label, values }) => {
|
|
85
76
|
if (!isVisible) {
|
|
86
77
|
return null;
|
|
87
78
|
}
|
|
88
79
|
return /* @__PURE__ */ jsxs(Text, { children: [
|
|
89
80
|
values.map((value) => /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
90
|
-
/* @__PURE__ */ jsxs(
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
children: [
|
|
96
|
-
" ",
|
|
97
|
-
value,
|
|
98
|
-
" "
|
|
99
|
-
]
|
|
100
|
-
}
|
|
101
|
-
),
|
|
81
|
+
/* @__PURE__ */ jsxs(Text, { backgroundColor: CLI_COLORS.LABEL_BG, color: CLI_COLORS.UNFOCUSED, children: [
|
|
82
|
+
" ",
|
|
83
|
+
value,
|
|
84
|
+
" "
|
|
85
|
+
] }),
|
|
102
86
|
" "
|
|
103
87
|
] }, value)),
|
|
104
|
-
/* @__PURE__ */ jsx(Text, {
|
|
88
|
+
/* @__PURE__ */ jsx(Text, { children: label })
|
|
105
89
|
] });
|
|
106
90
|
};
|
|
107
91
|
var HOT_KEYS = [
|
|
@@ -126,6 +110,28 @@ var WizardFooter = () => {
|
|
|
126
110
|
}
|
|
127
111
|
);
|
|
128
112
|
};
|
|
113
|
+
var MAX_PAINTED_STARTUP_MESSAGES = 3;
|
|
114
|
+
var MAX_PAINTED_STARTUP_MESSAGES_CRAMPED = 1;
|
|
115
|
+
function paintedStartupMessageCount(terminalHeight) {
|
|
116
|
+
return terminalHeight >= LOGO_MIN_TERMINAL_ROWS ? MAX_PAINTED_STARTUP_MESSAGES : MAX_PAINTED_STARTUP_MESSAGES_CRAMPED;
|
|
117
|
+
}
|
|
118
|
+
var STARTUP_MESSAGE_COLOR = {
|
|
119
|
+
info: CLI_COLORS.NEUTRAL,
|
|
120
|
+
warn: CLI_COLORS.WARNING,
|
|
121
|
+
error: CLI_COLORS.ERROR
|
|
122
|
+
};
|
|
123
|
+
var StartupMessages = ({
|
|
124
|
+
messages,
|
|
125
|
+
terminalHeight
|
|
126
|
+
}) => {
|
|
127
|
+
if (messages.length === 0) return null;
|
|
128
|
+
const painted = messages.slice(0, paintedStartupMessageCount(terminalHeight));
|
|
129
|
+
const counted = messages.length - painted.length;
|
|
130
|
+
return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", flexShrink: 0, paddingX: 1, children: [
|
|
131
|
+
painted.map((message, index) => /* @__PURE__ */ jsx(Text, { color: STARTUP_MESSAGE_COLOR[message.level], children: message.text }, index)),
|
|
132
|
+
counted > 0 && /* @__PURE__ */ jsx(Text, { color: CLI_COLORS.NEUTRAL, children: `... and ${counted} more` })
|
|
133
|
+
] });
|
|
134
|
+
};
|
|
129
135
|
var STEP_DROPDOWN_LABEL = {
|
|
130
136
|
stack: "Choose a stack",
|
|
131
137
|
domains: "Select domains",
|
|
@@ -140,7 +146,12 @@ function resolveDropdownLabel(step, selectedStackId) {
|
|
|
140
146
|
}
|
|
141
147
|
return STEP_DROPDOWN_LABEL[step];
|
|
142
148
|
}
|
|
143
|
-
var WizardLayout = ({
|
|
149
|
+
var WizardLayout = ({
|
|
150
|
+
version,
|
|
151
|
+
logo,
|
|
152
|
+
startupMessages = [],
|
|
153
|
+
children
|
|
154
|
+
}) => {
|
|
144
155
|
const store = useWizardStore();
|
|
145
156
|
const { columns: terminalWidth, rows: terminalHeight } = useTerminalDimensions();
|
|
146
157
|
if (!isTerminalLargeEnough(terminalWidth, terminalHeight)) {
|
|
@@ -161,7 +172,7 @@ var WizardLayout = ({ version, logo, children }) => {
|
|
|
161
172
|
/* @__PURE__ */ jsx(
|
|
162
173
|
WizardTabs,
|
|
163
174
|
{
|
|
164
|
-
steps:
|
|
175
|
+
steps: wizardTabsFor(getActiveStepFlow()),
|
|
165
176
|
currentStep: store.step,
|
|
166
177
|
completedSteps,
|
|
167
178
|
skippedSteps,
|
|
@@ -170,7 +181,8 @@ var WizardLayout = ({ version, logo, children }) => {
|
|
|
170
181
|
dropdowns
|
|
171
182
|
}
|
|
172
183
|
),
|
|
173
|
-
|
|
184
|
+
/* @__PURE__ */ jsx(StartupMessages, { messages: startupMessages, terminalHeight }),
|
|
185
|
+
store.showInfo ? /* @__PURE__ */ jsxs(Fragment2, { children: [
|
|
174
186
|
/* @__PURE__ */ jsx(Box, { flexDirection: "column", flexGrow: 1, flexBasis: 0, marginTop: 1, children: /* @__PURE__ */ jsx(SummaryPanel, {}) }),
|
|
175
187
|
/* @__PURE__ */ jsx(WizardFooter, {})
|
|
176
188
|
] }) : /* @__PURE__ */ jsxs(Fragment2, { children: [
|
|
@@ -184,15 +196,6 @@ var WizardLayout = ({ version, logo, children }) => {
|
|
|
184
196
|
isVisible: store.step === "build"
|
|
185
197
|
}
|
|
186
198
|
),
|
|
187
|
-
/* @__PURE__ */ jsx(
|
|
188
|
-
DefinitionItem,
|
|
189
|
-
{
|
|
190
|
-
label: "Filter incompatible",
|
|
191
|
-
values: [HOTKEY_FILTER_INCOMPATIBLE.label],
|
|
192
|
-
isVisible: store.step === "build" && FEATURE_FLAGS.FILTER_INCOMPATIBLE,
|
|
193
|
-
isActive: store.filterIncompatible
|
|
194
|
-
}
|
|
195
|
-
),
|
|
196
199
|
/* @__PURE__ */ jsx(
|
|
197
200
|
DefinitionItem,
|
|
198
201
|
{
|
|
@@ -217,15 +220,6 @@ var WizardLayout = ({ version, logo, children }) => {
|
|
|
217
220
|
isVisible: store.step === "sources"
|
|
218
221
|
}
|
|
219
222
|
),
|
|
220
|
-
/* @__PURE__ */ jsx(
|
|
221
|
-
DefinitionItem,
|
|
222
|
-
{
|
|
223
|
-
label: "Settings",
|
|
224
|
-
values: [HOTKEY_SETTINGS.label],
|
|
225
|
-
isVisible: store.step === "sources" && FEATURE_FLAGS.SOURCE_SEARCH,
|
|
226
|
-
isActive: store.showSettings
|
|
227
|
-
}
|
|
228
|
-
),
|
|
229
223
|
/* @__PURE__ */ jsx(
|
|
230
224
|
DefinitionItem,
|
|
231
225
|
{
|
|
@@ -245,4 +239,4 @@ export {
|
|
|
245
239
|
useTerminalDimensions,
|
|
246
240
|
WizardLayout
|
|
247
241
|
};
|
|
248
|
-
//# sourceMappingURL=chunk-
|
|
242
|
+
//# sourceMappingURL=chunk-M5HSTNYU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/components/wizard/wizard-layout.tsx","../src/cli/components/hooks/use-terminal-dimensions.ts"],"sourcesContent":["import { Box, Text } from \"ink\";\nimport React, { Fragment } from \"react\";\nimport { CLI_COLORS, FALLBACK_DOMAIN, LOGO_MIN_TERMINAL_ROWS } from \"../../consts.js\";\nimport type { StartupMessage } from \"../../utils/logger.js\";\nimport { formatTerminalTooSmallMessage, isTerminalLargeEnough } from \"../../utils/terminal.js\";\nimport { getActiveStepFlow, useWizardStore, type WizardStep } from \"../../stores/wizard-store.js\";\nimport { useTerminalDimensions } from \"../hooks/use-terminal-dimensions.js\";\nimport { SummaryPanel } from \"./summary-panel.js\";\nimport { Toast } from \"./toast.js\";\nimport {\n HOTKEY_INFO,\n HOTKEY_SCOPE,\n HOTKEY_SET_ALL_LOCAL,\n HOTKEY_SET_ALL_PLUGIN,\n HOTKEY_TOGGLE_LABELS,\n KEY_LABEL_ENTER,\n KEY_LABEL_ESC,\n KEY_LABEL_SPACE,\n isInfoPanelAvailable,\n} from \"./hotkeys.js\";\nimport {\n WizardTabs,\n wizardTabsFor,\n type DomainNavProps,\n type TabDropdownProps,\n} from \"./wizard-tabs.js\";\nimport { getDomainDisplayName, getStackName, orderDomains } from \"./utils.js\";\n\ntype KeyHintProps = {\n isVisible?: boolean;\n label: string;\n values: readonly string[];\n};\n\nconst DefinitionItem: React.FC<KeyHintProps> = ({ isVisible = true, label, values }) => {\n if (!isVisible) {\n return null;\n }\n\n return (\n <Text>\n {values.map((value) => (\n <Fragment key={value}>\n <Text backgroundColor={CLI_COLORS.LABEL_BG} color={CLI_COLORS.UNFOCUSED}>\n {\" \"}\n {value}{\" \"}\n </Text>{\" \"}\n </Fragment>\n ))}\n <Text>{label}</Text>\n </Text>\n );\n};\n\nconst HOT_KEYS = [\n { label: \"select\", values: [KEY_LABEL_SPACE] },\n { label: \"continue\", values: [KEY_LABEL_ENTER] },\n { label: \"back\", values: [KEY_LABEL_ESC] },\n] as const satisfies readonly { label: string; values: readonly string[] }[];\n\nconst WizardFooter = () => {\n return (\n <Box\n columnGap={2}\n borderTop\n borderRight={false}\n borderBottom\n borderLeft={false}\n borderColor=\"blackBright\"\n borderStyle=\"single\"\n paddingLeft={1}\n paddingRight={1}\n >\n {HOT_KEYS.map((hotkey) => (\n <DefinitionItem {...hotkey} key={hotkey.label} />\n ))}\n </Box>\n );\n};\n\ntype WizardLayoutProps = {\n version?: string | undefined;\n logo?: string | undefined;\n startupMessages?: StartupMessage[] | undefined;\n children: React.ReactNode;\n};\n\n/**\n * How many buffered messages the band paints before it counts the rest instead.\n * A source that cannot resolve its own relationships warns once per unresolved\n * name — thousands, for a source with a broken `skill-rules.ts` — and every line\n * is a row taken from the step below it.\n *\n * Two budgets, because a row is worth more at some heights than others: a\n * terminal short enough that the logo is already dropped for starving the\n * content cannot spare four rows for news either, and there it paints the first\n * message and counts the rest. The first is the one that matters — the fetch\n * speaks before anything is parsed, so an unreachable source is message one.\n */\nconst MAX_PAINTED_STARTUP_MESSAGES = 3;\nconst MAX_PAINTED_STARTUP_MESSAGES_CRAMPED = 1;\n\nfunction paintedStartupMessageCount(terminalHeight: number): number {\n return terminalHeight >= LOGO_MIN_TERMINAL_ROWS\n ? MAX_PAINTED_STARTUP_MESSAGES\n : MAX_PAINTED_STARTUP_MESSAGES_CRAMPED;\n}\n\nconst STARTUP_MESSAGE_COLOR = {\n info: CLI_COLORS.NEUTRAL,\n warn: CLI_COLORS.WARNING,\n error: CLI_COLORS.ERROR,\n} as const satisfies Record<StartupMessage[\"level\"], string>;\n\n/**\n * What the load said before Ink took the terminal.\n *\n * `warn()` writes to stderr, which the wizard's own `clearTerminal` would wipe,\n * so a load that opens a wizard buffers instead (`lib/operations/source/load-source.ts`)\n * and hands the buffer here. This band is the only place those lines are ever\n * seen — the source-unreachable warning among them.\n *\n * It sits above the step rather than over it, and does not shrink: a warning\n * compressed by Yoga overprints into an unreadable row, which is worse than the\n * row it would have cost the step.\n */\nconst StartupMessages: React.FC<{ messages: StartupMessage[]; terminalHeight: number }> = ({\n messages,\n terminalHeight,\n}) => {\n if (messages.length === 0) return null;\n\n const painted = messages.slice(0, paintedStartupMessageCount(terminalHeight));\n const counted = messages.length - painted.length;\n\n return (\n <Box flexDirection=\"column\" flexShrink={0} paddingX={1}>\n {painted.map((message, index) => (\n <Text key={index} color={STARTUP_MESSAGE_COLOR[message.level]}>\n {message.text}\n </Text>\n ))}\n {counted > 0 && <Text color={CLI_COLORS.NEUTRAL}>{`... and ${counted} more`}</Text>}\n </Box>\n );\n};\n\nconst STEP_DROPDOWN_LABEL: Partial<Record<WizardStep, string>> = {\n stack: \"Choose a stack\",\n domains: \"Select domains\",\n sources: \"Customize skill sources\",\n agents: \"Select agents\",\n};\n\n/**\n * What the wizard paints instead of itself while the terminal is below\n * `MIN_TERMINAL_SIZE` (consts.ts). It REPLACES the wizard tree rather than\n * covering it: Ink lays a still-mounted tree out at the small size regardless of\n * what is drawn on top, so an overlay leaves the squeezed content bleeding\n * underneath.\n */\nconst TerminalTooSmall: React.FC<{ columns: number }> = ({ columns }) => (\n <Box paddingX={1} paddingY={1}>\n <Text color={CLI_COLORS.WARNING}>{formatTerminalTooSmallMessage(columns)}</Text>\n </Box>\n);\n\nfunction resolveDropdownLabel(\n step: WizardStep,\n selectedStackId: string | null,\n): string | undefined {\n if (step === \"confirm\") {\n const stackName = getStackName(selectedStackId);\n return stackName ? `Ready to install ${stackName}` : \"Ready to install your custom stack\";\n }\n return STEP_DROPDOWN_LABEL[step];\n}\n\nexport const WizardLayout: React.FC<WizardLayoutProps> = ({\n version,\n logo,\n startupMessages = [],\n children,\n}) => {\n const store = useWizardStore();\n const { columns: terminalWidth, rows: terminalHeight } = useTerminalDimensions();\n\n // The startup gate cannot catch a terminal that shrinks after launch, and\n // `useTerminalDimensions` already re-renders on resize — so the same check\n // lives here, on the value that hook returns.\n if (!isTerminalLargeEnough(terminalWidth, terminalHeight)) {\n return <TerminalTooSmall columns={terminalWidth} />;\n }\n\n const { completedSteps, skippedSteps } = store.getStepProgress();\n\n const domainNav: DomainNavProps | undefined =\n store.step === \"build\" && store.selectedDomains.length > 0\n ? {\n domains: orderDomains(store.selectedDomains),\n activeDomain: store.getCurrentDomain() || store.selectedDomains[0] || FALLBACK_DOMAIN,\n getDomainLabel: getDomainDisplayName,\n }\n : undefined;\n\n // The logo is decoration; the stack list is the content. Below the threshold\n // its six rows starve that list's viewport until the shared scroll gate stops\n // clipping and the rows bleed over the footer.\n const terminalHasRoomForLogo = terminalHeight >= LOGO_MIN_TERMINAL_ROWS;\n const shouldRenderLogo = !!logo && store.step === \"stack\" && terminalHasRoomForLogo;\n\n const dropdownLabel = resolveDropdownLabel(store.step, store.selectedStackId);\n const dropdowns: Partial<Record<WizardStep, TabDropdownProps>> = dropdownLabel\n ? { [store.step]: { items: [{ id: dropdownLabel, label: dropdownLabel }] } }\n : {};\n\n return (\n <Box flexDirection=\"column\" paddingX={1} height={terminalHeight}>\n {shouldRenderLogo && (\n <Box flexDirection=\"row\" marginTop={1} columnGap={1}>\n <Text>{logo}</Text>\n </Box>\n )}\n <WizardTabs\n steps={wizardTabsFor(getActiveStepFlow())}\n currentStep={store.step}\n completedSteps={completedSteps}\n skippedSteps={skippedSteps}\n version={version}\n domainNav={domainNav}\n dropdowns={dropdowns}\n />\n <StartupMessages messages={startupMessages} terminalHeight={terminalHeight} />\n {store.showInfo ? (\n <>\n <Box flexDirection=\"column\" flexGrow={1} flexBasis={0} marginTop={1}>\n <SummaryPanel />\n </Box>\n <WizardFooter />\n </>\n ) : (\n <>\n <Box flexDirection=\"column\" flexGrow={1} flexBasis={0} marginTop={1}>\n {children}\n </Box>\n <Box paddingX={1} columnGap={2} marginTop={2}>\n <DefinitionItem\n label=\"Labels\"\n values={[HOTKEY_TOGGLE_LABELS.label]}\n isVisible={store.step === \"build\"}\n />\n <DefinitionItem\n label=\"Scope\"\n values={[HOTKEY_SCOPE.label]}\n isVisible={\n (store.step === \"build\" || store.step === \"agents\") &&\n !store.isEditingFromGlobalScope\n }\n />\n <DefinitionItem\n label=\"Set all local\"\n values={[HOTKEY_SET_ALL_LOCAL.label]}\n isVisible={store.step === \"sources\"}\n />\n <DefinitionItem\n label=\"Set all plugin\"\n values={[HOTKEY_SET_ALL_PLUGIN.label]}\n isVisible={store.step === \"sources\"}\n />\n <DefinitionItem\n label=\"Info\"\n values={[HOTKEY_INFO.label]}\n isVisible={isInfoPanelAvailable(store.step)}\n />\n </Box>\n <WizardFooter />\n {store.toastMessage && (\n <Box position=\"absolute\" marginTop={terminalHeight - 4}>\n <Toast>{store.toastMessage}</Toast>\n </Box>\n )}\n </>\n )}\n </Box>\n );\n};\n","import { useState, useEffect } from \"react\";\nimport { useStdout } from \"ink\";\n\nconst DEFAULT_COLUMNS = 80;\nconst DEFAULT_ROWS = 24;\n\nexport type TerminalDimensions = {\n /** Terminal width in columns */\n columns: number;\n /** Terminal height in rows */\n rows: number;\n};\n\n/**\n * Tracks terminal dimensions reactively. Re-renders on resize.\n *\n * Falls back to DEFAULT_COLUMNS x DEFAULT_ROWS when stdout is not a TTY\n * (e.g., piped output, CI environments, tests).\n */\nexport function useTerminalDimensions(): TerminalDimensions {\n const { stdout } = useStdout();\n\n const [dimensions, setDimensions] = useState<TerminalDimensions>(() => ({\n columns: stdout.columns || DEFAULT_COLUMNS,\n rows: stdout.rows || DEFAULT_ROWS,\n }));\n\n useEffect(() => {\n const handleResize = () => {\n setDimensions({\n columns: stdout.columns || DEFAULT_COLUMNS,\n rows: stdout.rows || DEFAULT_ROWS,\n });\n };\n\n stdout.on(\"resize\", handleResize);\n return () => {\n stdout.off(\"resize\", handleResize);\n };\n }, [stdout]);\n\n return dimensions;\n}\n"],"mappings":"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","names":["Fragment"]}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
CLI_COLORS
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-R54KIGN2.js";
|
|
5
5
|
|
|
6
6
|
// src/cli/components/wizard/toast.tsx
|
|
7
7
|
import { Box, Text } from "ink";
|
|
8
|
+
import "react";
|
|
8
9
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
9
10
|
var TITLE_HORIZONTAL_PADDING = 6;
|
|
10
11
|
var Toast = ({ children }) => {
|
|
@@ -24,4 +25,4 @@ var Toast = ({ children }) => {
|
|
|
24
25
|
export {
|
|
25
26
|
Toast
|
|
26
27
|
};
|
|
27
|
-
//# sourceMappingURL=chunk-
|
|
28
|
+
//# sourceMappingURL=chunk-NSJ2S7R5.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli/components/wizard/toast.tsx"],"sourcesContent":["import { Box, Text } from \"ink\";\nimport React from \"react\";\nimport { CLI_COLORS } from \"../../consts.js\";\n\nconst TITLE_HORIZONTAL_PADDING = 6;\n\ntype ToastProps = {\n children: string;\n};\n\nexport const Toast: React.FC<ToastProps> = ({ children }) => {\n const padding = \" \".repeat(children.length + TITLE_HORIZONTAL_PADDING);\n const paddingHalf = \" \".repeat(TITLE_HORIZONTAL_PADDING / 2);\n\n return (\n <Box flexDirection=\"column\" position=\"absolute\">\n <Text backgroundColor={CLI_COLORS.TOAST_BG}>{padding}</Text>\n <Text bold backgroundColor={CLI_COLORS.TOAST_BG} color={CLI_COLORS.TOAST_FG}>\n {paddingHalf}\n {children}\n {paddingHalf}\n </Text>\n <Text backgroundColor={CLI_COLORS.TOAST_BG}>{padding}</Text>\n </Box>\n );\n};\n"],"mappings":";;;;;;AAAA,SAAS,KAAK,YAAY;
|
|
1
|
+
{"version":3,"sources":["../src/cli/components/wizard/toast.tsx"],"sourcesContent":["import { Box, Text } from \"ink\";\nimport React from \"react\";\nimport { CLI_COLORS } from \"../../consts.js\";\n\nconst TITLE_HORIZONTAL_PADDING = 6;\n\ntype ToastProps = {\n children: string;\n};\n\nexport const Toast: React.FC<ToastProps> = ({ children }) => {\n const padding = \" \".repeat(children.length + TITLE_HORIZONTAL_PADDING);\n const paddingHalf = \" \".repeat(TITLE_HORIZONTAL_PADDING / 2);\n\n return (\n <Box flexDirection=\"column\" position=\"absolute\">\n <Text backgroundColor={CLI_COLORS.TOAST_BG}>{padding}</Text>\n <Text bold backgroundColor={CLI_COLORS.TOAST_BG} color={CLI_COLORS.TOAST_FG}>\n {paddingHalf}\n {children}\n {paddingHalf}\n </Text>\n <Text backgroundColor={CLI_COLORS.TOAST_BG}>{padding}</Text>\n </Box>\n );\n};\n"],"mappings":";;;;;;AAAA,SAAS,KAAK,YAAY;AAC1B,OAAkB;AAeZ,cACA,YADA;AAZN,IAAM,2BAA2B;AAM1B,IAAM,QAA8B,CAAC,EAAE,SAAS,MAAM;AAC3D,QAAM,UAAU,IAAI,OAAO,SAAS,SAAS,wBAAwB;AACrE,QAAM,cAAc,IAAI,OAAO,2BAA2B,CAAC;AAE3D,SACE,qBAAC,OAAI,eAAc,UAAS,UAAS,YACnC;AAAA,wBAAC,QAAK,iBAAiB,WAAW,UAAW,mBAAQ;AAAA,IACrD,qBAAC,QAAK,MAAI,MAAC,iBAAiB,WAAW,UAAU,OAAO,WAAW,UAChE;AAAA;AAAA,MACA;AAAA,MACA;AAAA,OACH;AAAA,IACA,oBAAC,QAAK,iBAAiB,WAAW,UAAW,mBAAQ;AAAA,KACvD;AAEJ;","names":[]}
|
|
@@ -3,14 +3,14 @@ import {
|
|
|
3
3
|
copySkillsToLocalFlattened,
|
|
4
4
|
deleteLocalSkill,
|
|
5
5
|
resolveInstallPaths
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-NXQAY5U7.js";
|
|
7
7
|
import {
|
|
8
8
|
ensureDir,
|
|
9
9
|
verbose
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-U2YSGBHA.js";
|
|
11
11
|
import {
|
|
12
12
|
EJECT_SOURCE
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-R54KIGN2.js";
|
|
14
14
|
|
|
15
15
|
// src/cli/lib/operations/skills/copy-local-skills.ts
|
|
16
16
|
import os from "os";
|
|
@@ -61,4 +61,4 @@ async function copyLocalSkills(skills, projectDir, sourceResult, options = {}) {
|
|
|
61
61
|
export {
|
|
62
62
|
copyLocalSkills
|
|
63
63
|
};
|
|
64
|
-
//# sourceMappingURL=chunk-
|
|
64
|
+
//# sourceMappingURL=chunk-NXGMM5YN.js.map
|