agents-inc 0.152.1 → 0.154.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 +57 -0
- package/README.md +31 -35
- package/dist/{chunk-FVDKAVOL.js → chunk-2IMYK4WN.js} +18 -51
- package/dist/chunk-2IMYK4WN.js.map +1 -0
- package/dist/{chunk-PMM2MYMA.js → chunk-4VCWL2IG.js} +649 -357
- package/dist/chunk-4VCWL2IG.js.map +1 -0
- package/dist/{chunk-PZIZNMHK.js → chunk-5MFJ24VM.js} +237 -150
- package/dist/chunk-5MFJ24VM.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-7VZV4O6B.js +40 -0
- package/dist/chunk-7VZV4O6B.js.map +1 -0
- package/dist/{chunk-SX5H6TSC.js → chunk-AKQ5QISO.js} +11 -8
- package/dist/chunk-AKQ5QISO.js.map +1 -0
- package/dist/{chunk-BNSRA6HL.js → chunk-AURY6RT6.js} +39 -176
- package/dist/chunk-AURY6RT6.js.map +1 -0
- package/dist/{chunk-LZ52XEPR.js → chunk-B66SC72V.js} +7 -6
- package/dist/chunk-B66SC72V.js.map +1 -0
- package/dist/{chunk-LASI35KT.js → chunk-BZ4CZBOM.js} +14 -28
- package/dist/chunk-BZ4CZBOM.js.map +1 -0
- package/dist/chunk-CBF4ZYV3.js +18540 -0
- package/dist/chunk-CBF4ZYV3.js.map +1 -0
- package/dist/{chunk-5GUOIJSG.js → chunk-CHNA5RVS.js} +3 -15
- package/dist/chunk-CHNA5RVS.js.map +1 -0
- package/dist/{chunk-LDP5ASDM.js → chunk-DRKSYJZ2.js} +2 -19
- package/dist/chunk-DRKSYJZ2.js.map +1 -0
- package/dist/chunk-FMYHWKGG.js +325 -0
- package/dist/chunk-FMYHWKGG.js.map +1 -0
- package/dist/{chunk-SKQWRUPX.js → chunk-GUDGCFSF.js} +59 -33
- package/dist/chunk-GUDGCFSF.js.map +1 -0
- package/dist/{chunk-WKTHWQKM.js → chunk-IPJOMAWC.js} +5070 -6305
- package/dist/chunk-IPJOMAWC.js.map +1 -0
- package/dist/chunk-IXEDSKMH.js +48 -0
- package/dist/chunk-IXEDSKMH.js.map +1 -0
- package/dist/{chunk-TUPYW2IQ.js → chunk-JC7DBPRD.js} +9 -12
- package/dist/chunk-JC7DBPRD.js.map +1 -0
- package/dist/{chunk-ZL7PFNHN.js → chunk-K3O3YQYG.js} +2 -2
- package/dist/{chunk-QRDTLVXG.js → chunk-LA3JPESW.js} +9 -22
- package/dist/chunk-LA3JPESW.js.map +1 -0
- package/dist/{chunk-MWG4VU64.js → chunk-MJFIO5SX.js} +50 -74
- package/dist/chunk-MJFIO5SX.js.map +1 -0
- package/dist/{chunk-L7SZXUBJ.js → chunk-NFH6SA62.js} +7 -6
- package/dist/{chunk-L7SZXUBJ.js.map → chunk-NFH6SA62.js.map} +1 -1
- package/dist/{chunk-GRVKW3CC.js → chunk-NKCY2ULI.js} +3 -2
- package/dist/{chunk-GRVKW3CC.js.map → chunk-NKCY2ULI.js.map} +1 -1
- 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-Q2KG7UV3.js → chunk-OJJLYHM3.js} +2 -1
- package/dist/{chunk-Q2KG7UV3.js.map → chunk-OJJLYHM3.js.map} +1 -1
- package/dist/{chunk-MJ2KHG24.js → chunk-ONWEOS77.js} +6 -6
- package/dist/{chunk-MJ2KHG24.js.map → chunk-ONWEOS77.js.map} +1 -1
- 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-QZZJFYUQ.js → chunk-PRJD5MMQ.js} +3 -3
- package/dist/chunk-PRJD5MMQ.js.map +1 -0
- 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-5UWKOOIS.js → chunk-QQTYMW7N.js} +131 -209
- package/dist/chunk-QQTYMW7N.js.map +1 -0
- package/dist/{chunk-MVR3SYMN.js → chunk-QUDQTO3O.js} +4 -3
- package/dist/{chunk-MVR3SYMN.js.map → chunk-QUDQTO3O.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-XHUODHZ4.js → chunk-R7JV22QK.js} +22 -49
- package/dist/chunk-R7JV22QK.js.map +1 -0
- package/dist/{chunk-E5X6RJ4E.js → chunk-TUQF577Z.js} +56 -53
- package/dist/chunk-TUQF577Z.js.map +1 -0
- package/dist/{chunk-IHUY4M22.js → chunk-UW44KSYL.js} +4 -4
- package/dist/{chunk-DTSG5XZB.js → chunk-V3ENMW7G.js} +3 -3
- package/dist/chunk-VZRO7RYT.js +3694 -0
- package/dist/chunk-VZRO7RYT.js.map +1 -0
- package/dist/{chunk-MQ7FLIYS.js → chunk-WRRP47PY.js} +3 -2
- package/dist/{chunk-MQ7FLIYS.js.map → chunk-WRRP47PY.js.map} +1 -1
- package/dist/{chunk-RNJWAKMO.js → chunk-XGMOXMS4.js} +9 -8
- package/dist/chunk-XGMOXMS4.js.map +1 -0
- package/dist/{chunk-STMHDOZD.js → chunk-XMEIVWAS.js} +12 -9
- package/dist/chunk-XMEIVWAS.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-ZU6DAR4S.js +223 -0
- package/dist/chunk-ZU6DAR4S.js.map +1 -0
- package/dist/commands/build/marketplace.js +115 -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 +135 -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 +231 -236
- 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 +35 -88
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/uninstall.js +212 -167
- 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-WVHJFRPK.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-5OT54J5M.js +15 -0
- package/dist/{loader-5JP4S7CJ.js → loader-JIZDTR4G.js} +7 -5
- package/dist/recompile-project-agents-VREEPBDV.js +20 -0
- package/dist/{source-loader-MZYCPL2S.js → source-loader-OE6EJFPU.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/plugin.schema.json +3 -0
- 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 +0 -284
- 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-UW44KSYL.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-WVHJFRPK.js.map} +0 -0
- /package/dist/{components/wizard/search-modal.js.map → load-agent-defs-5OT54J5M.js.map} +0 -0
- /package/dist/{components/wizard/selection-card.js.map → loader-JIZDTR4G.js.map} +0 -0
- /package/dist/{components/wizard/step-settings.js.map → recompile-project-agents-VREEPBDV.js.map} +0 -0
- /package/dist/{copy-local-skills-6EMVN7RB.js.map → source-loader-OE6EJFPU.js.map} +0 -0
|
@@ -1,36 +1,35 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
Confirm
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-OZXAJNLA.js";
|
|
5
5
|
import {
|
|
6
6
|
promptConfirm
|
|
7
|
-
} from "../chunk-
|
|
8
|
-
import
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
registeredProjectUpdateSkipped,
|
|
12
|
-
registeredProjectsUpdateFailed,
|
|
13
|
-
registeredProjectsUpdated
|
|
14
|
-
} from "../chunk-ODNDXQH2.js";
|
|
15
|
-
import "../chunk-STMHDOZD.js";
|
|
16
|
-
import "../chunk-SBHBBZKF.js";
|
|
17
|
-
import "../chunk-IHUY4M22.js";
|
|
7
|
+
} from "../chunk-OJJLYHM3.js";
|
|
8
|
+
import "../chunk-XMEIVWAS.js";
|
|
9
|
+
import "../chunk-ZU6DAR4S.js";
|
|
10
|
+
import "../chunk-UW44KSYL.js";
|
|
18
11
|
import {
|
|
19
12
|
loadAgentDefs
|
|
20
|
-
} from "../chunk-
|
|
13
|
+
} from "../chunk-PRJD5MMQ.js";
|
|
21
14
|
import {
|
|
22
15
|
listAgentMdFiles
|
|
23
|
-
} from "../chunk-
|
|
16
|
+
} from "../chunk-TUQF577Z.js";
|
|
24
17
|
import "../chunk-JFLVEFFP.js";
|
|
25
18
|
import {
|
|
26
19
|
BaseCommand,
|
|
27
20
|
EXIT_CODES
|
|
28
|
-
} from "../chunk-
|
|
29
|
-
import "../chunk-
|
|
21
|
+
} from "../chunk-FMYHWKGG.js";
|
|
22
|
+
import "../chunk-7VZV4O6B.js";
|
|
23
|
+
import "../chunk-K3O3YQYG.js";
|
|
30
24
|
import {
|
|
31
25
|
ConfigLoadError,
|
|
26
|
+
INFO_MESSAGES,
|
|
27
|
+
SUCCESS_MESSAGES,
|
|
28
|
+
UNINSTALL_PLAN,
|
|
32
29
|
buildMarketplacePluginRef,
|
|
33
30
|
claudePluginUninstallBestEffort,
|
|
31
|
+
compiledAgentsKept,
|
|
32
|
+
compiledAgentsRemoval,
|
|
34
33
|
getProjectPluginsDir,
|
|
35
34
|
isClaudeCLIAvailable,
|
|
36
35
|
isHomeDirectory,
|
|
@@ -38,21 +37,26 @@ import {
|
|
|
38
37
|
listPluginNames,
|
|
39
38
|
loadProjectConfigFromDir,
|
|
40
39
|
loadSkillsMatrixFromSource,
|
|
40
|
+
localSkillsRemoval,
|
|
41
41
|
mutateGlobal,
|
|
42
42
|
parseMarketplacePluginRef,
|
|
43
43
|
propagateGlobalRemoval,
|
|
44
44
|
readForkedFromMetadata,
|
|
45
|
+
registeredProjectUpdateSkipped,
|
|
46
|
+
registeredProjectsUpdateFailed,
|
|
47
|
+
registeredProjectsUpdated,
|
|
45
48
|
resolveInstallPaths,
|
|
46
49
|
toClaudePluginScope
|
|
47
|
-
} from "../chunk-
|
|
50
|
+
} from "../chunk-CBF4ZYV3.js";
|
|
48
51
|
import {
|
|
49
52
|
directoryExists,
|
|
50
53
|
fileExists,
|
|
51
54
|
getErrorMessage,
|
|
52
55
|
listDirectories,
|
|
53
|
-
remove
|
|
54
|
-
|
|
55
|
-
|
|
56
|
+
remove,
|
|
57
|
+
removeDirIfEmpty
|
|
58
|
+
} from "../chunk-4VCWL2IG.js";
|
|
59
|
+
import "../chunk-IPJOMAWC.js";
|
|
56
60
|
import "../chunk-VASLW636.js";
|
|
57
61
|
import {
|
|
58
62
|
CLAUDE_DIR,
|
|
@@ -61,45 +65,111 @@ import {
|
|
|
61
65
|
DEFAULT_BRANDING,
|
|
62
66
|
EJECT_SOURCE,
|
|
63
67
|
STANDARD_FILES
|
|
64
|
-
} from "../chunk-
|
|
65
|
-
import "../chunk-
|
|
68
|
+
} from "../chunk-R54KIGN2.js";
|
|
69
|
+
import "../chunk-VZRO7RYT.js";
|
|
66
70
|
|
|
67
71
|
// src/cli/commands/uninstall.tsx
|
|
72
|
+
import "react";
|
|
68
73
|
import { partition } from "remeda";
|
|
69
74
|
import path from "path";
|
|
70
|
-
import { readdir } from "fs/promises";
|
|
71
75
|
import { Flags } from "@oclif/core";
|
|
72
76
|
import { Box, Text, useApp } from "ink";
|
|
73
77
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
74
78
|
function buildRemovalPlan(target) {
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
79
|
+
const agents = compiledAgentsEntry(target);
|
|
80
|
+
return {
|
|
81
|
+
entries: [
|
|
82
|
+
...pluginsEntry(target),
|
|
83
|
+
...localSkillsEntry(target),
|
|
84
|
+
...agents,
|
|
85
|
+
...configManifestEntry(target)
|
|
86
|
+
],
|
|
87
|
+
kept: keptStatements(target, agents)
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
function hasAnythingToRemove(plan) {
|
|
91
|
+
return plan.entries.length > 0;
|
|
92
|
+
}
|
|
93
|
+
function pluginsEntry(target) {
|
|
94
|
+
if (!target.hasPlugins) return [];
|
|
95
|
+
return [{ kind: "plugins", pluginsDir: target.pluginsDir, names: [...target.cliPluginNames] }];
|
|
96
|
+
}
|
|
97
|
+
function localSkillsEntry(target) {
|
|
98
|
+
if (!target.hasLocalSkills) return [];
|
|
99
|
+
return [{ kind: "skills", skillsDir: target.skillsDir }];
|
|
100
|
+
}
|
|
101
|
+
function compiledAgentsEntry(target) {
|
|
102
|
+
if (!target.hasLocalAgents) return [];
|
|
103
|
+
if (target.configuredAgents.length === 0) return [];
|
|
104
|
+
return [{ kind: "agents", agentsDir: target.agentsDir, agentNames: target.configuredAgents }];
|
|
105
|
+
}
|
|
106
|
+
function configManifestEntry(target) {
|
|
107
|
+
const fileNames = [
|
|
108
|
+
...target.hasClaudeSrcConfig ? [STANDARD_FILES.CONFIG_TS] : [],
|
|
109
|
+
...target.hasClaudeSrcConfigTypes ? [STANDARD_FILES.CONFIG_TYPES_TS] : []
|
|
110
|
+
];
|
|
111
|
+
if (fileNames.length === 0) return [];
|
|
112
|
+
return [{ kind: "config", claudeSrcDir: target.claudeSrcDir, fileNames }];
|
|
113
|
+
}
|
|
114
|
+
function keptStatements(target, agentRemovals) {
|
|
115
|
+
if (!target.hasLocalAgents) return [];
|
|
116
|
+
if (agentRemovals.length > 0) return [];
|
|
117
|
+
return [compiledAgentsKept(target.agentsDir)];
|
|
118
|
+
}
|
|
119
|
+
function planEntry(plan, kind) {
|
|
120
|
+
return plan.entries.find(
|
|
121
|
+
(entry) => entry.kind === kind
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
function describeEntry(entry) {
|
|
125
|
+
switch (entry.kind) {
|
|
126
|
+
case "plugins":
|
|
127
|
+
return { label: UNINSTALL_PLAN.PLUGINS_HEADING, items: entry.names };
|
|
128
|
+
case "skills":
|
|
129
|
+
return {
|
|
130
|
+
label: UNINSTALL_PLAN.CLI_MANAGED_FILES_HEADING,
|
|
131
|
+
items: [localSkillsRemoval(entry.skillsDir)]
|
|
132
|
+
};
|
|
133
|
+
case "agents":
|
|
134
|
+
return {
|
|
135
|
+
label: UNINSTALL_PLAN.CLI_MANAGED_FILES_HEADING,
|
|
136
|
+
items: [compiledAgentsRemoval(entry.agentsDir)]
|
|
137
|
+
};
|
|
138
|
+
case "config":
|
|
139
|
+
return {
|
|
140
|
+
label: UNINSTALL_PLAN.CONFIG_HEADING,
|
|
141
|
+
items: entry.fileNames.map((fileName) => `${entry.claudeSrcDir}/${fileName}`)
|
|
142
|
+
};
|
|
143
|
+
default: {
|
|
144
|
+
const _exhaustive = entry;
|
|
145
|
+
return _exhaustive;
|
|
92
146
|
}
|
|
93
|
-
sections.push({ label: "Config:", items });
|
|
94
147
|
}
|
|
95
|
-
return sections;
|
|
96
148
|
}
|
|
97
|
-
var
|
|
149
|
+
var PLAN_SECTION_ORDER = [
|
|
150
|
+
UNINSTALL_PLAN.PLUGINS_HEADING,
|
|
151
|
+
UNINSTALL_PLAN.CLI_MANAGED_FILES_HEADING,
|
|
152
|
+
UNINSTALL_PLAN.CONFIG_HEADING
|
|
153
|
+
];
|
|
154
|
+
function planSections(entries) {
|
|
155
|
+
const described = entries.map(describeEntry);
|
|
156
|
+
return PLAN_SECTION_ORDER.flatMap(
|
|
157
|
+
(label) => sectionWithItems(label, itemsUnder(described, label))
|
|
158
|
+
);
|
|
159
|
+
}
|
|
160
|
+
function itemsUnder(described, label) {
|
|
161
|
+
return described.filter((section) => section.label === label).flatMap((section) => section.items);
|
|
162
|
+
}
|
|
163
|
+
function sectionWithItems(label, items) {
|
|
164
|
+
if (items.length === 0) return [];
|
|
165
|
+
return [{ label, items }];
|
|
166
|
+
}
|
|
167
|
+
var UninstallConfirm = ({ plan, onConfirm, onCancel }) => {
|
|
98
168
|
const { exit } = useApp();
|
|
99
169
|
return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", children: [
|
|
100
|
-
/* @__PURE__ */ jsx(Text, { bold: true, children:
|
|
170
|
+
/* @__PURE__ */ jsx(Text, { bold: true, children: UNINSTALL_PLAN.PREVIEW_HEADING }),
|
|
101
171
|
/* @__PURE__ */ jsx(Text, { children: " " }),
|
|
102
|
-
|
|
172
|
+
planSections(plan.entries).map((section) => /* @__PURE__ */ jsxs(Box, { flexDirection: "column", children: [
|
|
103
173
|
/* @__PURE__ */ jsxs(Text, { color: CLI_COLORS.ERROR, children: [
|
|
104
174
|
" ",
|
|
105
175
|
section.label
|
|
@@ -109,6 +179,10 @@ var UninstallConfirm = ({ target, onConfirm, onCancel }) => {
|
|
|
109
179
|
item
|
|
110
180
|
] }, item))
|
|
111
181
|
] }, section.label)),
|
|
182
|
+
plan.kept.map((statement) => /* @__PURE__ */ jsxs(Box, { flexDirection: "column", children: [
|
|
183
|
+
/* @__PURE__ */ jsx(Text, { children: " " }),
|
|
184
|
+
/* @__PURE__ */ jsx(Text, { dimColor: true, children: statement })
|
|
185
|
+
] }, statement)),
|
|
112
186
|
/* @__PURE__ */ jsx(Text, { children: " " }),
|
|
113
187
|
/* @__PURE__ */ jsx(
|
|
114
188
|
Confirm,
|
|
@@ -135,7 +209,6 @@ var Uninstall = class _Uninstall extends BaseCommand {
|
|
|
135
209
|
"<%= config.bin %> <%= command.id %> --yes"
|
|
136
210
|
];
|
|
137
211
|
static flags = {
|
|
138
|
-
...BaseCommand.baseFlags,
|
|
139
212
|
yes: Flags.boolean({
|
|
140
213
|
char: "y",
|
|
141
214
|
description: "Skip confirmation prompt",
|
|
@@ -152,17 +225,18 @@ var Uninstall = class _Uninstall extends BaseCommand {
|
|
|
152
225
|
`Could not read the project config \u2014 plugins and compiled agents it lists may be left behind: ${reason}`
|
|
153
226
|
)
|
|
154
227
|
);
|
|
155
|
-
|
|
228
|
+
const plan = buildRemovalPlan(target);
|
|
229
|
+
if (!hasAnythingToRemove(plan)) {
|
|
156
230
|
this.reportNothingToUninstall();
|
|
157
231
|
return;
|
|
158
232
|
}
|
|
159
|
-
const confirmed = flags.yes ? this.printRemovalPlan(
|
|
233
|
+
const confirmed = flags.yes ? this.printRemovalPlan(plan) : await this.confirmRemoval(plan);
|
|
160
234
|
if (!confirmed) {
|
|
161
235
|
this.log("");
|
|
162
236
|
this.log("Uninstall cancelled");
|
|
163
237
|
this.exit(EXIT_CODES.CANCELLED);
|
|
164
238
|
}
|
|
165
|
-
await this.executeUninstall(target, projectDir);
|
|
239
|
+
await this.executeUninstall(plan, target, projectDir);
|
|
166
240
|
this.reportSuccess();
|
|
167
241
|
}
|
|
168
242
|
printHeader() {
|
|
@@ -177,45 +251,32 @@ var Uninstall = class _Uninstall extends BaseCommand {
|
|
|
177
251
|
this.log("");
|
|
178
252
|
this.log(INFO_MESSAGES.NO_CHANGES_MADE);
|
|
179
253
|
}
|
|
180
|
-
printRemovalPlan(
|
|
181
|
-
this.log(
|
|
254
|
+
printRemovalPlan(plan) {
|
|
255
|
+
this.log(UNINSTALL_PLAN.PREVIEW_HEADING);
|
|
182
256
|
this.log("");
|
|
183
|
-
for (const section of
|
|
257
|
+
for (const section of planSections(plan.entries)) {
|
|
184
258
|
this.log(` ${section.label}`);
|
|
185
259
|
for (const item of section.items) {
|
|
186
260
|
this.log(` ${item}`);
|
|
187
261
|
}
|
|
188
262
|
}
|
|
263
|
+
for (const statement of plan.kept) {
|
|
264
|
+
this.log("");
|
|
265
|
+
this.log(statement);
|
|
266
|
+
}
|
|
189
267
|
this.log("");
|
|
190
268
|
return true;
|
|
191
269
|
}
|
|
192
|
-
async confirmRemoval(
|
|
193
|
-
const outcome = await promptConfirm(({ onConfirm, onCancel }) => /* @__PURE__ */ jsx(UninstallConfirm, {
|
|
270
|
+
async confirmRemoval(plan) {
|
|
271
|
+
const outcome = await promptConfirm(({ onConfirm, onCancel }) => /* @__PURE__ */ jsx(UninstallConfirm, { plan, onConfirm, onCancel }));
|
|
194
272
|
return outcome === "confirmed";
|
|
195
273
|
}
|
|
196
|
-
async executeUninstall(target, projectDir) {
|
|
274
|
+
async executeUninstall(plan, target, projectDir) {
|
|
197
275
|
const isGlobalUninstall = isHomeDirectory(projectDir);
|
|
198
276
|
const propagation = isGlobalUninstall ? await this.prepareGlobalPropagation(target, projectDir) : null;
|
|
199
|
-
|
|
200
|
-
this.log("Uninstalling plugins...");
|
|
201
|
-
try {
|
|
202
|
-
const pluginResult = await uninstallPlugins(
|
|
203
|
-
target,
|
|
204
|
-
projectDir,
|
|
205
|
-
(name) => this.log(` Uninstalled plugin '${name}'`)
|
|
206
|
-
);
|
|
207
|
-
this.logSuccess(
|
|
208
|
-
`Uninstalled ${pluginResult.totalUninstalled} ${pluginResult.totalUninstalled === 1 ? "plugin" : "plugins"}`
|
|
209
|
-
);
|
|
210
|
-
} catch (error) {
|
|
211
|
-
this.log("Plugin uninstall failed");
|
|
212
|
-
this.error(getErrorMessage(error), {
|
|
213
|
-
exit: EXIT_CODES.ERROR
|
|
214
|
-
});
|
|
215
|
-
}
|
|
216
|
-
}
|
|
277
|
+
await this.removePlannedPlugins(planEntry(plan, "plugins"), target.config, projectDir);
|
|
217
278
|
try {
|
|
218
|
-
await this.removeLocalFiles(target);
|
|
279
|
+
await this.removeLocalFiles(plan, target);
|
|
219
280
|
} catch (error) {
|
|
220
281
|
this.log("Failed to remove local files");
|
|
221
282
|
this.error(getErrorMessage(error), {
|
|
@@ -288,12 +349,7 @@ var Uninstall = class _Uninstall extends BaseCommand {
|
|
|
288
349
|
}
|
|
289
350
|
if (report.propagated.updated.length === 0) return;
|
|
290
351
|
this.logSuccess(registeredProjectsUpdated(report.propagated.updated.length));
|
|
291
|
-
|
|
292
|
-
for (const warning of warnings) {
|
|
293
|
-
this.warn(warning);
|
|
294
|
-
}
|
|
295
|
-
const failureSuffix = failedCount > 0 ? ` (${failedCount} failed)` : "";
|
|
296
|
-
this.log(`Recompiled agents in ${recompiledCount} registered projects${failureSuffix}`);
|
|
352
|
+
this.reportPropagatedRecompile(report);
|
|
297
353
|
} catch (error) {
|
|
298
354
|
this.warn(registeredProjectsUpdateFailed(getErrorMessage(error)));
|
|
299
355
|
}
|
|
@@ -305,27 +361,14 @@ var Uninstall = class _Uninstall extends BaseCommand {
|
|
|
305
361
|
this.logSuccess(SUCCESS_MESSAGES.UNINSTALL_COMPLETE);
|
|
306
362
|
this.log("");
|
|
307
363
|
}
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
);
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
`Removed ${skillResult.removedCount} CLI-installed ${skillResult.removedCount === 1 ? "skill" : "skills"}`
|
|
317
|
-
);
|
|
318
|
-
}
|
|
319
|
-
const agentResult = await removeMatchingAgents(
|
|
320
|
-
target,
|
|
321
|
-
(agentName) => this.log(` Uninstalled agent '${agentName}'`)
|
|
322
|
-
);
|
|
323
|
-
if (agentResult.removedCount > 0) {
|
|
324
|
-
this.logSuccess(
|
|
325
|
-
`Removed ${agentResult.removedCount} compiled ${agentResult.removedCount === 1 ? "agent" : "agents"}`
|
|
326
|
-
);
|
|
327
|
-
}
|
|
328
|
-
const cleanup = await cleanupEmptyDirs(target);
|
|
364
|
+
/**
|
|
365
|
+
* Each step acts only when the plan carries its entry, so what the user was shown and
|
|
366
|
+
* what this run removes are the same list read twice.
|
|
367
|
+
*/
|
|
368
|
+
async removeLocalFiles(plan, target) {
|
|
369
|
+
await this.removePlannedSkills(planEntry(plan, "skills"));
|
|
370
|
+
await this.removePlannedAgents(planEntry(plan, "agents"));
|
|
371
|
+
const cleanup = await cleanupEmptyDirs(target, planEntry(plan, "config"));
|
|
329
372
|
if (cleanup.claudeSrcDirRemoved) {
|
|
330
373
|
this.logSuccess(`Removed ${CLAUDE_SRC_DIR}/`);
|
|
331
374
|
} else if (cleanup.claudeSrcManifestRemoved) {
|
|
@@ -337,10 +380,50 @@ var Uninstall = class _Uninstall extends BaseCommand {
|
|
|
337
380
|
this.log(`Kept ${CLAUDE_DIR}/ (contains user content)`);
|
|
338
381
|
}
|
|
339
382
|
}
|
|
383
|
+
async removePlannedPlugins(entry, config, projectDir) {
|
|
384
|
+
if (!entry) return;
|
|
385
|
+
this.log("Uninstalling plugins...");
|
|
386
|
+
try {
|
|
387
|
+
const pluginResult = await uninstallPlugins(
|
|
388
|
+
entry,
|
|
389
|
+
config,
|
|
390
|
+
projectDir,
|
|
391
|
+
(name) => this.log(` Uninstalled plugin '${name}'`)
|
|
392
|
+
);
|
|
393
|
+
this.logSuccess(
|
|
394
|
+
`Uninstalled ${pluginResult.totalUninstalled} ${pluginResult.totalUninstalled === 1 ? "plugin" : "plugins"}`
|
|
395
|
+
);
|
|
396
|
+
} catch (error) {
|
|
397
|
+
this.log("Plugin uninstall failed");
|
|
398
|
+
this.error(getErrorMessage(error), {
|
|
399
|
+
exit: EXIT_CODES.ERROR
|
|
400
|
+
});
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
async removePlannedSkills(entry) {
|
|
404
|
+
if (!entry) return;
|
|
405
|
+
const result = await removeMatchingSkills(
|
|
406
|
+
entry,
|
|
407
|
+
(dirName) => this.log(` Uninstalled skill '${dirName}'`),
|
|
408
|
+
(dirName) => this.warn(`Skipping '${dirName}': not created by ${DEFAULT_BRANDING.NAME} CLI`)
|
|
409
|
+
);
|
|
410
|
+
if (result.removedCount === 0) return;
|
|
411
|
+
this.logSuccess(
|
|
412
|
+
`Removed ${result.removedCount} CLI-installed ${result.removedCount === 1 ? "skill" : "skills"}`
|
|
413
|
+
);
|
|
414
|
+
}
|
|
415
|
+
async removePlannedAgents(entry) {
|
|
416
|
+
if (!entry) return;
|
|
417
|
+
const result = await removeMatchingAgents(
|
|
418
|
+
entry,
|
|
419
|
+
(agentName) => this.log(` Uninstalled agent '${agentName}'`)
|
|
420
|
+
);
|
|
421
|
+
if (result.removedCount === 0) return;
|
|
422
|
+
this.logSuccess(
|
|
423
|
+
`Removed ${result.removedCount} compiled ${result.removedCount === 1 ? "agent" : "agents"}`
|
|
424
|
+
);
|
|
425
|
+
}
|
|
340
426
|
};
|
|
341
|
-
function hasAnythingToRemove(target) {
|
|
342
|
-
return target.hasPlugins || target.hasLocalSkills || target.hasLocalAgents || target.hasClaudeSrcConfig || target.hasClaudeSrcConfigTypes;
|
|
343
|
-
}
|
|
344
427
|
function collectConfiguredAgents(config) {
|
|
345
428
|
if (!config?.agents) return [];
|
|
346
429
|
return config.agents.map((a) => a.name);
|
|
@@ -397,8 +480,8 @@ async function detectUninstallTarget(projectDir, onConfigLoadFailed) {
|
|
|
397
480
|
}
|
|
398
481
|
const activeConfig = config ? {
|
|
399
482
|
...config,
|
|
400
|
-
skills: config.skills
|
|
401
|
-
agents: config.agents
|
|
483
|
+
skills: config.skills.filter((s) => !s.excluded),
|
|
484
|
+
agents: config.agents.filter((a) => !a.excluded)
|
|
402
485
|
} : null;
|
|
403
486
|
const configuredAgents = collectConfiguredAgents(activeConfig);
|
|
404
487
|
const cliInstalledKeys = getCliInstalledPluginKeys(activeConfig);
|
|
@@ -424,24 +507,15 @@ async function detectUninstallTarget(projectDir, onConfigLoadFailed) {
|
|
|
424
507
|
function shouldRemoveSkill(forkedFrom) {
|
|
425
508
|
return forkedFrom !== null;
|
|
426
509
|
}
|
|
427
|
-
async function removeMatchingSkills(
|
|
428
|
-
|
|
429
|
-
return {
|
|
430
|
-
removedCount: 0,
|
|
431
|
-
skippedCount: 0,
|
|
432
|
-
removedNames: [],
|
|
433
|
-
skippedNames: [],
|
|
434
|
-
dirCleaned: false
|
|
435
|
-
};
|
|
436
|
-
}
|
|
437
|
-
const classified = await classifySkillDirs(target.skillsDir);
|
|
510
|
+
async function removeMatchingSkills(entry, onRemoved, onSkipped) {
|
|
511
|
+
const classified = await classifySkillDirs(entry.skillsDir);
|
|
438
512
|
const removedNames = await removeClassifiedSkills(
|
|
439
513
|
classified.toRemove,
|
|
440
|
-
|
|
514
|
+
entry.skillsDir,
|
|
441
515
|
onRemoved
|
|
442
516
|
);
|
|
443
517
|
classified.toSkip.forEach((name) => onSkipped?.(name));
|
|
444
|
-
const dirCleaned = await cleanupSkillsDir(
|
|
518
|
+
const dirCleaned = await cleanupSkillsDir(entry.skillsDir, classified.toSkip.length === 0);
|
|
445
519
|
return {
|
|
446
520
|
removedCount: removedNames.length,
|
|
447
521
|
skippedCount: classified.toSkip.length,
|
|
@@ -472,68 +546,47 @@ async function cleanupSkillsDir(dir, allRemoved) {
|
|
|
472
546
|
if (!allRemoved) return false;
|
|
473
547
|
return removeDirIfEmpty(dir);
|
|
474
548
|
}
|
|
475
|
-
async function
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
await remove(dir);
|
|
479
|
-
return true;
|
|
480
|
-
}
|
|
481
|
-
async function removeMatchingAgents(target, onRemoved) {
|
|
482
|
-
if (!target.hasLocalAgents) {
|
|
483
|
-
return { removedCount: 0, removedNames: [], dirCleaned: false };
|
|
484
|
-
}
|
|
485
|
-
if (target.configuredAgents.length === 0) {
|
|
486
|
-
return { removedCount: 0, removedNames: [], dirCleaned: false };
|
|
487
|
-
}
|
|
488
|
-
const agentFiles = await listAgentFiles(target.agentsDir);
|
|
489
|
-
const removedNames = agentFiles.map((agentFile) => agentFile.replace(/\.md$/, "")).filter((agentName) => target.configuredAgents.includes(agentName));
|
|
549
|
+
async function removeMatchingAgents(entry, onRemoved) {
|
|
550
|
+
const agentFiles = await listAgentFiles(entry.agentsDir);
|
|
551
|
+
const removedNames = agentFiles.map((agentFile) => agentFile.replace(/\.md$/, "")).filter((agentName) => entry.agentNames.includes(agentName));
|
|
490
552
|
for (const agentName of removedNames) {
|
|
491
|
-
await remove(path.join(
|
|
553
|
+
await remove(path.join(entry.agentsDir, `${agentName}.md`));
|
|
492
554
|
onRemoved?.(agentName);
|
|
493
555
|
}
|
|
494
|
-
const dirCleaned = await removeDirIfEmpty(
|
|
556
|
+
const dirCleaned = await removeDirIfEmpty(entry.agentsDir);
|
|
495
557
|
return {
|
|
496
558
|
removedCount: removedNames.length,
|
|
497
559
|
removedNames,
|
|
498
560
|
dirCleaned
|
|
499
561
|
};
|
|
500
562
|
}
|
|
501
|
-
async function uninstallPlugins(
|
|
502
|
-
if (!target.hasPlugins) {
|
|
503
|
-
return { uninstalledNames: [], totalUninstalled: 0 };
|
|
504
|
-
}
|
|
563
|
+
async function uninstallPlugins(entry, config, projectDir, onUninstalled) {
|
|
505
564
|
const cliAvailable = await isClaudeCLIAvailable();
|
|
506
|
-
for (const pluginName of
|
|
565
|
+
for (const pluginName of entry.names) {
|
|
507
566
|
if (cliAvailable) {
|
|
508
567
|
const skillId = parseMarketplacePluginRef(pluginName);
|
|
509
|
-
const skillConfig =
|
|
568
|
+
const skillConfig = config?.skills.find((s) => s.id === skillId);
|
|
510
569
|
const primaryScope = toClaudePluginScope(skillConfig?.scope);
|
|
511
570
|
await claudePluginUninstallBestEffort(pluginName, primaryScope, projectDir);
|
|
512
571
|
}
|
|
513
|
-
const pluginPath = path.join(
|
|
572
|
+
const pluginPath = path.join(entry.pluginsDir, pluginName);
|
|
514
573
|
await remove(pluginPath);
|
|
515
574
|
onUninstalled?.(pluginName);
|
|
516
575
|
}
|
|
517
576
|
return {
|
|
518
|
-
uninstalledNames:
|
|
519
|
-
totalUninstalled:
|
|
577
|
+
uninstalledNames: entry.names,
|
|
578
|
+
totalUninstalled: entry.names.length
|
|
520
579
|
};
|
|
521
580
|
}
|
|
522
|
-
async function removeConfigManifest(
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
}
|
|
528
|
-
if (target.hasClaudeSrcConfigTypes) {
|
|
529
|
-
await remove(path.join(target.claudeSrcDir, STANDARD_FILES.CONFIG_TYPES_TS));
|
|
530
|
-
manifestRemoved = true;
|
|
531
|
-
}
|
|
532
|
-
const dirRemoved = manifestRemoved && await removeDirIfEmpty(target.claudeSrcDir);
|
|
533
|
-
return { manifestRemoved, dirRemoved };
|
|
581
|
+
async function removeConfigManifest(entry) {
|
|
582
|
+
if (!entry) return { manifestRemoved: false, dirRemoved: false };
|
|
583
|
+
await Promise.all(
|
|
584
|
+
entry.fileNames.map((fileName) => remove(path.join(entry.claudeSrcDir, fileName)))
|
|
585
|
+
);
|
|
586
|
+
return { manifestRemoved: true, dirRemoved: await removeDirIfEmpty(entry.claudeSrcDir) };
|
|
534
587
|
}
|
|
535
|
-
async function cleanupEmptyDirs(target) {
|
|
536
|
-
const manifest = await removeConfigManifest(
|
|
588
|
+
async function cleanupEmptyDirs(target, manifestEntry) {
|
|
589
|
+
const manifest = await removeConfigManifest(manifestEntry);
|
|
537
590
|
const claudeDirRemoved = target.hasClaudeDir && await removeDirIfEmpty(target.claudeDir);
|
|
538
591
|
const claudeDirKept = !claudeDirRemoved && target.hasClaudeDir && await directoryExists(target.claudeDir);
|
|
539
592
|
return {
|
|
@@ -543,14 +596,6 @@ async function cleanupEmptyDirs(target) {
|
|
|
543
596
|
claudeDirKept
|
|
544
597
|
};
|
|
545
598
|
}
|
|
546
|
-
async function isDirectoryEmpty(dirPath) {
|
|
547
|
-
try {
|
|
548
|
-
const allEntries = await readdir(dirPath);
|
|
549
|
-
return allEntries.length === 0;
|
|
550
|
-
} catch {
|
|
551
|
-
return true;
|
|
552
|
-
}
|
|
553
|
-
}
|
|
554
599
|
async function listAgentFiles(agentsDir) {
|
|
555
600
|
try {
|
|
556
601
|
return await listAgentMdFiles(agentsDir);
|