@iloom/cli 0.10.1 → 0.11.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/LICENSE +1 -1
- package/README.md +4 -2
- package/dist/{BranchNamingService-25KSZAEM.js → BranchNamingService-XBCO747L.js} +4 -4
- package/dist/ClaudeContextManager-SXDCWDJA.js +14 -0
- package/dist/ClaudeService-6E6MCGJE.js +13 -0
- package/dist/GitHubService-2R5GQG4K.js +12 -0
- package/dist/IssueTrackerFactory-XN6MQ4UN.js +14 -0
- package/dist/{LoomLauncher-TDLZSYG2.js → LoomLauncher-5AZU2F5I.js} +15 -12
- package/dist/LoomLauncher-5AZU2F5I.js.map +1 -0
- package/dist/MetadataManager-CMQQTFLQ.js +10 -0
- package/dist/ProjectCapabilityDetector-IC6NAFGY.js +11 -0
- package/dist/{PromptTemplateManager-YOE2SIPG.js → PromptTemplateManager-T5VTLJP3.js} +3 -3
- package/dist/README.md +4 -2
- package/dist/{SettingsManager-FNKCOZMQ.js → SettingsManager-WQ5NSGAH.js} +3 -3
- package/dist/SettingsMigrationManager-S6J7OHUH.js +10 -0
- package/dist/agents/iloom-code-reviewer.md +50 -8
- package/dist/agents/iloom-issue-analyze-and-plan.md +10 -0
- package/dist/agents/iloom-issue-analyzer.md +13 -0
- package/dist/agents/iloom-issue-complexity-evaluator.md +8 -1
- package/dist/agents/iloom-issue-enhancer.md +8 -1
- package/dist/agents/iloom-issue-planner.md +5 -0
- package/dist/build-OLS6J5KZ.js +27 -0
- package/dist/{chunk-WWKOVDWC.js → chunk-3GTUXW26.js} +3 -3
- package/dist/{chunk-4FGEGQW4.js → chunk-3RXYOBME.js} +5 -5
- package/dist/{chunk-HEXKPKCK.js → chunk-5LTID2AF.js} +6 -6
- package/dist/{chunk-G5V75JD5.js → chunk-5PNZBH6V.js} +2 -2
- package/dist/{chunk-SKSYYBCU.js → chunk-5UFGO4ZT.js} +24 -3
- package/dist/{chunk-SKSYYBCU.js.map → chunk-5UFGO4ZT.js.map} +1 -1
- package/dist/{chunk-E6KOWMKA.js → chunk-6YVJVUR4.js} +3 -3
- package/dist/{chunk-RJ3VBUFK.js → chunk-7FIXNAUO.js} +36 -7
- package/dist/chunk-7FIXNAUO.js.map +1 -0
- package/dist/{chunk-QVLPWNE3.js → chunk-7NFCGKZT.js} +3 -3
- package/dist/{chunk-433MOLAU.js → chunk-7OCGBJLR.js} +2 -2
- package/dist/{chunk-KVHIAWVT.js → chunk-ABVMUNCD.js} +8 -8
- package/dist/{chunk-7JDMYTFZ.js → chunk-CV47VCMQ.js} +2 -2
- package/dist/{chunk-7VHJNVLF.js → chunk-ET6A2JR4.js} +8 -6
- package/dist/chunk-ET6A2JR4.js.map +1 -0
- package/dist/{chunk-MORRVYPT.js → chunk-G2MNSPA4.js} +2 -2
- package/dist/{chunk-RSYT7MVI.js → chunk-GMDSYLI6.js} +36 -3
- package/dist/chunk-GMDSYLI6.js.map +1 -0
- package/dist/{chunk-VT4PDUYT.js → chunk-H2SSF24U.js} +284 -209
- package/dist/chunk-H2SSF24U.js.map +1 -0
- package/dist/{chunk-LLHXQS3C.js → chunk-HLDY5S4C.js} +3 -3
- package/dist/{chunk-BYUMEDDD.js → chunk-IDCE26KD.js} +3 -3
- package/dist/{chunk-OTGH2HRS.js → chunk-IR74O2F6.js} +221 -88
- package/dist/chunk-IR74O2F6.js.map +1 -0
- package/dist/{chunk-O7VL5N6S.js → chunk-K7R5QY6C.js} +2 -2
- package/dist/{chunk-S7PZA6IV.js → chunk-KQFIGI37.js} +5 -5
- package/dist/{chunk-I5T677EA.js → chunk-LE2NOUTN.js} +3 -3
- package/dist/{chunk-KXDRI47U.js → chunk-LHDD4JHC.js} +6 -6
- package/dist/{chunk-5FJWO4IT.js → chunk-LL6TOX3G.js} +9 -9
- package/dist/{chunk-YQ57ORTV.js → chunk-NCPZYQ4B.js} +2 -2
- package/dist/{chunk-EWJFUFPT.js → chunk-NDSGJZI2.js} +2 -2
- package/dist/{chunk-VG45TUYK.js → chunk-NH3QZYE5.js} +2 -2
- package/dist/{chunk-KKV5WH5M.js → chunk-NN5RYWXA.js} +7 -7
- package/dist/chunk-NOMQ5RFG.js +118 -0
- package/dist/chunk-NOMQ5RFG.js.map +1 -0
- package/dist/{chunk-KIK2ZFAL.js → chunk-QNHZM5ZV.js} +3 -3
- package/dist/{chunk-EVPZFV3K.js → chunk-QR4FU53I.js} +8 -8
- package/dist/{chunk-FXDYIV3K.js → chunk-QVAA5KHK.js} +2 -2
- package/dist/{chunk-NGJZ4TOU.js → chunk-RBYTXYGD.js} +2 -2
- package/dist/{chunk-SWSJWA2S.js → chunk-RMLADZRY.js} +12 -9
- package/dist/chunk-RMLADZRY.js.map +1 -0
- package/dist/{chunk-CVCTIDDK.js → chunk-RVI6C2H5.js} +5 -5
- package/dist/{chunk-Q7POFB5Q.js → chunk-SQYHPBFP.js} +2 -2
- package/dist/{chunk-GRISNU6G.js → chunk-TEJAGQX2.js} +64 -40
- package/dist/chunk-TEJAGQX2.js.map +1 -0
- package/dist/{chunk-QZWEJVWV.js → chunk-TZNNJLGT.js} +6 -6
- package/dist/{chunk-63QWFWH3.js → chunk-UDCI3QTS.js} +2 -2
- package/dist/{chunk-UKBAJ2QQ.js → chunk-UHIBKD73.js} +7 -7
- package/dist/{chunk-WXIM2WS7.js → chunk-V4STTBQD.js} +10 -10
- package/dist/{chunk-P4O6EH46.js → chunk-VMZG66UV.js} +5 -5
- package/dist/{chunk-C6HNNJIV.js → chunk-VNYWBHKR.js} +34 -4
- package/dist/chunk-VNYWBHKR.js.map +1 -0
- package/dist/{chunk-5RPBYK5Q.js → chunk-VUUN3KE4.js} +10 -10
- package/dist/chunk-VUUN3KE4.js.map +1 -0
- package/dist/{chunk-UUEW5KWB.js → chunk-WG4MLJ6J.js} +15 -10
- package/dist/chunk-WG4MLJ6J.js.map +1 -0
- package/dist/{chunk-ZNMPGMHY.js → chunk-XFQGI2E3.js} +66 -43
- package/dist/chunk-XFQGI2E3.js.map +1 -0
- package/dist/{chunk-LUKXJSRI.js → chunk-XXFSOVL3.js} +4 -4
- package/dist/{chunk-UR5DGNUO.js → chunk-Y3RX7LZT.js} +11 -8
- package/dist/chunk-Y3RX7LZT.js.map +1 -0
- package/dist/{chunk-KB64WNBZ.js → chunk-YRCEOQPX.js} +4 -2
- package/dist/chunk-YRCEOQPX.js.map +1 -0
- package/dist/{chunk-6MLEBAYZ.js → chunk-ZAXRQLK3.js} +2 -2
- package/dist/{claude-7GGEWVEM.js → claude-ONQTDWV3.js} +4 -4
- package/dist/{cleanup-6PVAC4NI.js → cleanup-YOM6PQCN.js} +35 -34
- package/dist/{cleanup-6PVAC4NI.js.map → cleanup-YOM6PQCN.js.map} +1 -1
- package/dist/cli.js +235 -147
- package/dist/cli.js.map +1 -1
- package/dist/{color-4TJ4P5EY.js → color-VQD52LOI.js} +3 -3
- package/dist/{commit-FZR5XDQG.js → commit-DC2Q5CDY.js} +15 -15
- package/dist/{compile-7ALJHZ4N.js → compile-4NCQECKE.js} +11 -11
- package/dist/{contribute-5GKLK3BQ.js → contribute-M5UWXCAV.js} +12 -12
- package/dist/darwin-5BHWRJ7D.js +10 -0
- package/dist/{dev-server-7SMIB7OF.js → dev-server-CYRP6M73.js} +19 -19
- package/dist/{feedback-G2GJFN2F.js → feedback-BMAZGKRW.js} +16 -16
- package/dist/{git-GTLKAZRJ.js → git-BXUD6CL5.js} +6 -6
- package/dist/ignite-IO4LXVXJ.js +35 -0
- package/dist/index.d.ts +39 -65
- package/dist/index.js +637 -110
- package/dist/index.js.map +1 -1
- package/dist/{init-32YOKXRL.js → init-CI43GJHV.js} +17 -17
- package/dist/{init-32YOKXRL.js.map → init-CI43GJHV.js.map} +1 -1
- package/dist/install-deps-SRTM5U7D.js +43 -0
- package/dist/install-deps-SRTM5U7D.js.map +1 -0
- package/dist/{installation-detector-MMFWLJYN.js → installation-detector-HF6QN7KP.js} +3 -3
- package/dist/{issues-4UUAQ5K6.js → issues-DMRQJH7E.js} +15 -15
- package/dist/lint-BSWRMGPZ.js +27 -0
- package/dist/linux-RYLOP2LY.js +103 -0
- package/dist/linux-RYLOP2LY.js.map +1 -0
- package/dist/mcp/chunk-PIIRD4LO.js +373 -0
- package/dist/mcp/chunk-PIIRD4LO.js.map +1 -0
- package/dist/mcp/darwin-3JFFE3W2.js +10 -0
- package/dist/mcp/issue-management-server.js +23 -127
- package/dist/mcp/issue-management-server.js.map +1 -1
- package/dist/mcp/linux-JBVS4R3A.js +103 -0
- package/dist/mcp/linux-JBVS4R3A.js.map +1 -0
- package/dist/mcp/tmux-RYBLEHUZ.js +156 -0
- package/dist/mcp/tmux-RYBLEHUZ.js.map +1 -0
- package/dist/mcp/wsl-4QZIQLLE.js +78 -0
- package/dist/mcp/wsl-4QZIQLLE.js.map +1 -0
- package/dist/neon-helpers-HWIYRKOW.js +11 -0
- package/dist/{open-FXWW3VI4.js → open-2Y7GSUTJ.js} +19 -19
- package/dist/{plan-RQ5FPIGF.js → plan-SWFPLNJE.js} +47 -46
- package/dist/{plan-RQ5FPIGF.js.map → plan-SWFPLNJE.js.map} +1 -1
- package/dist/{projects-2UOXFLNZ.js → projects-IUSUXD5D.js} +6 -6
- package/dist/{prompt-ONNPSNKM.js → prompt-7LZB4PAT.js} +3 -3
- package/dist/prompts/init-prompt.txt +56 -107
- package/dist/prompts/issue-prompt.txt +57 -11
- package/dist/prompts/pr-prompt.txt +154 -4
- package/dist/prompts/regular-prompt.txt +20 -3
- package/dist/prompts/swarm-orchestrator-prompt.txt +134 -14
- package/dist/{rebase-6NVLX5V7.js → rebase-S6OHAOOF.js} +12 -12
- package/dist/{recap-OMBOKJST.js → recap-GGVCG5VH.js} +9 -9
- package/dist/{remote-IJAMOEAP.js → remote-MZTFHHTU.js} +3 -3
- package/dist/remote-MZTFHHTU.js.map +1 -0
- package/dist/{run-BBXLRIZB.js → run-ST3FR75O.js} +19 -19
- package/dist/schema/settings.schema.json +8 -49
- package/dist/{shell-RF7LTND5.js → shell-W4SBQPTE.js} +8 -8
- package/dist/{summary-WTQZ7XG2.js → summary-P2JCIIJO.js} +17 -17
- package/dist/test-6JH4FE2X.js +27 -0
- package/dist/{test-git-XM4TM65W.js → test-git-2KFFAQ6B.js} +6 -6
- package/dist/{test-jira-LDTOYFSD.js → test-jira-FKDKG6CD.js} +8 -8
- package/dist/{test-prefix-GBO37XCN.js → test-prefix-GP2DAX37.js} +11 -11
- package/dist/test-prefix-GP2DAX37.js.map +1 -0
- package/dist/{test-tabs-D3POYOJ5.js → test-tabs-YDWMWTVA.js} +3 -3
- package/dist/{test-webserver-NZ3JTVLL.js → test-webserver-QI3QQFZ3.js} +8 -8
- package/dist/tmux-7ZTA3BDI.js +156 -0
- package/dist/tmux-7ZTA3BDI.js.map +1 -0
- package/dist/{update-HJKDYA3F.js → update-XLW7R7FL.js} +4 -4
- package/dist/{update-notifier-LBAUOOLM.js → update-notifier-EYLAXZAA.js} +3 -3
- package/dist/update-notifier-EYLAXZAA.js.map +1 -0
- package/dist/{vscode-6XUGHJKL.js → vscode-TOGE5N67.js} +13 -13
- package/dist/{vscode-announcement-EQ2SKK3T.js → vscode-announcement-NIX7O2MG.js} +3 -3
- package/dist/wsl-Y4GUTOQ7.js +78 -0
- package/dist/wsl-Y4GUTOQ7.js.map +1 -0
- package/package.json +4 -2
- package/dist/ClaudeContextManager-66GR4BGM.js +0 -14
- package/dist/ClaudeService-7KM5NA5Z.js +0 -13
- package/dist/GitHubService-MEHKHUQP.js +0 -12
- package/dist/IssueTrackerFactory-NG53YX5S.js +0 -14
- package/dist/LoomLauncher-TDLZSYG2.js.map +0 -1
- package/dist/MetadataManager-5QZSTKNN.js +0 -10
- package/dist/ProjectCapabilityDetector-5KSYUTBJ.js +0 -11
- package/dist/SettingsMigrationManager-LEBMJP3B.js +0 -10
- package/dist/build-VHGEMXBA.js +0 -27
- package/dist/chunk-5RPBYK5Q.js.map +0 -1
- package/dist/chunk-7VHJNVLF.js.map +0 -1
- package/dist/chunk-C6HNNJIV.js.map +0 -1
- package/dist/chunk-GRISNU6G.js.map +0 -1
- package/dist/chunk-KB64WNBZ.js.map +0 -1
- package/dist/chunk-OTGH2HRS.js.map +0 -1
- package/dist/chunk-RJ3VBUFK.js.map +0 -1
- package/dist/chunk-RSYT7MVI.js.map +0 -1
- package/dist/chunk-SWSJWA2S.js.map +0 -1
- package/dist/chunk-UR5DGNUO.js.map +0 -1
- package/dist/chunk-UUEW5KWB.js.map +0 -1
- package/dist/chunk-VT4PDUYT.js.map +0 -1
- package/dist/chunk-ZNMPGMHY.js.map +0 -1
- package/dist/ignite-H2O5Y5A2.js +0 -34
- package/dist/lint-AAN2NZWG.js +0 -27
- package/dist/neon-helpers-CQN2PB4S.js +0 -11
- package/dist/test-SGO6I5Z7.js +0 -27
- package/dist/test-prefix-GBO37XCN.js.map +0 -1
- /package/dist/{BranchNamingService-25KSZAEM.js.map → BranchNamingService-XBCO747L.js.map} +0 -0
- /package/dist/{ClaudeContextManager-66GR4BGM.js.map → ClaudeContextManager-SXDCWDJA.js.map} +0 -0
- /package/dist/{ClaudeService-7KM5NA5Z.js.map → ClaudeService-6E6MCGJE.js.map} +0 -0
- /package/dist/{GitHubService-MEHKHUQP.js.map → GitHubService-2R5GQG4K.js.map} +0 -0
- /package/dist/{IssueTrackerFactory-NG53YX5S.js.map → IssueTrackerFactory-XN6MQ4UN.js.map} +0 -0
- /package/dist/{MetadataManager-5QZSTKNN.js.map → MetadataManager-CMQQTFLQ.js.map} +0 -0
- /package/dist/{ProjectCapabilityDetector-5KSYUTBJ.js.map → ProjectCapabilityDetector-IC6NAFGY.js.map} +0 -0
- /package/dist/{PromptTemplateManager-YOE2SIPG.js.map → PromptTemplateManager-T5VTLJP3.js.map} +0 -0
- /package/dist/{SettingsManager-FNKCOZMQ.js.map → SettingsManager-WQ5NSGAH.js.map} +0 -0
- /package/dist/{SettingsMigrationManager-LEBMJP3B.js.map → SettingsMigrationManager-S6J7OHUH.js.map} +0 -0
- /package/dist/{build-VHGEMXBA.js.map → build-OLS6J5KZ.js.map} +0 -0
- /package/dist/{chunk-WWKOVDWC.js.map → chunk-3GTUXW26.js.map} +0 -0
- /package/dist/{chunk-4FGEGQW4.js.map → chunk-3RXYOBME.js.map} +0 -0
- /package/dist/{chunk-HEXKPKCK.js.map → chunk-5LTID2AF.js.map} +0 -0
- /package/dist/{chunk-G5V75JD5.js.map → chunk-5PNZBH6V.js.map} +0 -0
- /package/dist/{chunk-E6KOWMKA.js.map → chunk-6YVJVUR4.js.map} +0 -0
- /package/dist/{chunk-QVLPWNE3.js.map → chunk-7NFCGKZT.js.map} +0 -0
- /package/dist/{chunk-433MOLAU.js.map → chunk-7OCGBJLR.js.map} +0 -0
- /package/dist/{chunk-KVHIAWVT.js.map → chunk-ABVMUNCD.js.map} +0 -0
- /package/dist/{chunk-7JDMYTFZ.js.map → chunk-CV47VCMQ.js.map} +0 -0
- /package/dist/{chunk-MORRVYPT.js.map → chunk-G2MNSPA4.js.map} +0 -0
- /package/dist/{chunk-LLHXQS3C.js.map → chunk-HLDY5S4C.js.map} +0 -0
- /package/dist/{chunk-BYUMEDDD.js.map → chunk-IDCE26KD.js.map} +0 -0
- /package/dist/{chunk-O7VL5N6S.js.map → chunk-K7R5QY6C.js.map} +0 -0
- /package/dist/{chunk-S7PZA6IV.js.map → chunk-KQFIGI37.js.map} +0 -0
- /package/dist/{chunk-I5T677EA.js.map → chunk-LE2NOUTN.js.map} +0 -0
- /package/dist/{chunk-KXDRI47U.js.map → chunk-LHDD4JHC.js.map} +0 -0
- /package/dist/{chunk-5FJWO4IT.js.map → chunk-LL6TOX3G.js.map} +0 -0
- /package/dist/{chunk-YQ57ORTV.js.map → chunk-NCPZYQ4B.js.map} +0 -0
- /package/dist/{chunk-EWJFUFPT.js.map → chunk-NDSGJZI2.js.map} +0 -0
- /package/dist/{chunk-VG45TUYK.js.map → chunk-NH3QZYE5.js.map} +0 -0
- /package/dist/{chunk-KKV5WH5M.js.map → chunk-NN5RYWXA.js.map} +0 -0
- /package/dist/{chunk-KIK2ZFAL.js.map → chunk-QNHZM5ZV.js.map} +0 -0
- /package/dist/{chunk-EVPZFV3K.js.map → chunk-QR4FU53I.js.map} +0 -0
- /package/dist/{chunk-FXDYIV3K.js.map → chunk-QVAA5KHK.js.map} +0 -0
- /package/dist/{chunk-NGJZ4TOU.js.map → chunk-RBYTXYGD.js.map} +0 -0
- /package/dist/{chunk-CVCTIDDK.js.map → chunk-RVI6C2H5.js.map} +0 -0
- /package/dist/{chunk-Q7POFB5Q.js.map → chunk-SQYHPBFP.js.map} +0 -0
- /package/dist/{chunk-QZWEJVWV.js.map → chunk-TZNNJLGT.js.map} +0 -0
- /package/dist/{chunk-63QWFWH3.js.map → chunk-UDCI3QTS.js.map} +0 -0
- /package/dist/{chunk-UKBAJ2QQ.js.map → chunk-UHIBKD73.js.map} +0 -0
- /package/dist/{chunk-WXIM2WS7.js.map → chunk-V4STTBQD.js.map} +0 -0
- /package/dist/{chunk-P4O6EH46.js.map → chunk-VMZG66UV.js.map} +0 -0
- /package/dist/{chunk-LUKXJSRI.js.map → chunk-XXFSOVL3.js.map} +0 -0
- /package/dist/{chunk-6MLEBAYZ.js.map → chunk-ZAXRQLK3.js.map} +0 -0
- /package/dist/{claude-7GGEWVEM.js.map → claude-ONQTDWV3.js.map} +0 -0
- /package/dist/{color-4TJ4P5EY.js.map → color-VQD52LOI.js.map} +0 -0
- /package/dist/{commit-FZR5XDQG.js.map → commit-DC2Q5CDY.js.map} +0 -0
- /package/dist/{compile-7ALJHZ4N.js.map → compile-4NCQECKE.js.map} +0 -0
- /package/dist/{contribute-5GKLK3BQ.js.map → contribute-M5UWXCAV.js.map} +0 -0
- /package/dist/{git-GTLKAZRJ.js.map → darwin-5BHWRJ7D.js.map} +0 -0
- /package/dist/{dev-server-7SMIB7OF.js.map → dev-server-CYRP6M73.js.map} +0 -0
- /package/dist/{feedback-G2GJFN2F.js.map → feedback-BMAZGKRW.js.map} +0 -0
- /package/dist/{ignite-H2O5Y5A2.js.map → git-BXUD6CL5.js.map} +0 -0
- /package/dist/{installation-detector-MMFWLJYN.js.map → ignite-IO4LXVXJ.js.map} +0 -0
- /package/dist/{neon-helpers-CQN2PB4S.js.map → installation-detector-HF6QN7KP.js.map} +0 -0
- /package/dist/{issues-4UUAQ5K6.js.map → issues-DMRQJH7E.js.map} +0 -0
- /package/dist/{lint-AAN2NZWG.js.map → lint-BSWRMGPZ.js.map} +0 -0
- /package/dist/{prompt-ONNPSNKM.js.map → mcp/darwin-3JFFE3W2.js.map} +0 -0
- /package/dist/{remote-IJAMOEAP.js.map → neon-helpers-HWIYRKOW.js.map} +0 -0
- /package/dist/{open-FXWW3VI4.js.map → open-2Y7GSUTJ.js.map} +0 -0
- /package/dist/{projects-2UOXFLNZ.js.map → projects-IUSUXD5D.js.map} +0 -0
- /package/dist/{update-notifier-LBAUOOLM.js.map → prompt-7LZB4PAT.js.map} +0 -0
- /package/dist/{rebase-6NVLX5V7.js.map → rebase-S6OHAOOF.js.map} +0 -0
- /package/dist/{recap-OMBOKJST.js.map → recap-GGVCG5VH.js.map} +0 -0
- /package/dist/{run-BBXLRIZB.js.map → run-ST3FR75O.js.map} +0 -0
- /package/dist/{shell-RF7LTND5.js.map → shell-W4SBQPTE.js.map} +0 -0
- /package/dist/{summary-WTQZ7XG2.js.map → summary-P2JCIIJO.js.map} +0 -0
- /package/dist/{test-SGO6I5Z7.js.map → test-6JH4FE2X.js.map} +0 -0
- /package/dist/{test-git-XM4TM65W.js.map → test-git-2KFFAQ6B.js.map} +0 -0
- /package/dist/{test-jira-LDTOYFSD.js.map → test-jira-FKDKG6CD.js.map} +0 -0
- /package/dist/{test-tabs-D3POYOJ5.js.map → test-tabs-YDWMWTVA.js.map} +0 -0
- /package/dist/{test-webserver-NZ3JTVLL.js.map → test-webserver-QI3QQFZ3.js.map} +0 -0
- /package/dist/{update-HJKDYA3F.js.map → update-XLW7R7FL.js.map} +0 -0
- /package/dist/{vscode-6XUGHJKL.js.map → vscode-TOGE5N67.js.map} +0 -0
- /package/dist/{vscode-announcement-EQ2SKK3T.js.map → vscode-announcement-NIX7O2MG.js.map} +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
extractIssueNumber
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-3RXYOBME.js";
|
|
5
5
|
import {
|
|
6
6
|
extractPort,
|
|
7
7
|
findEnvFileContainingVariable,
|
|
8
8
|
logger,
|
|
9
9
|
parseEnvFile
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-H2SSF24U.js";
|
|
11
11
|
|
|
12
12
|
// src/utils/port.ts
|
|
13
13
|
import { createHash } from "crypto";
|
|
@@ -108,4 +108,4 @@ export {
|
|
|
108
108
|
calculatePortFromIdentifier,
|
|
109
109
|
getWorkspacePort
|
|
110
110
|
};
|
|
111
|
-
//# sourceMappingURL=chunk-
|
|
111
|
+
//# sourceMappingURL=chunk-HLDY5S4C.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
promptConfirmation
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-CV47VCMQ.js";
|
|
5
5
|
import {
|
|
6
6
|
logger
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-H2SSF24U.js";
|
|
8
8
|
|
|
9
9
|
// src/lib/SettingsMigrationManager.ts
|
|
10
10
|
import fs from "fs-extra";
|
|
@@ -144,4 +144,4 @@ var SettingsMigrationManager = class {
|
|
|
144
144
|
export {
|
|
145
145
|
SettingsMigrationManager
|
|
146
146
|
};
|
|
147
|
-
//# sourceMappingURL=chunk-
|
|
147
|
+
//# sourceMappingURL=chunk-IDCE26KD.js.map
|
|
@@ -2,71 +2,77 @@
|
|
|
2
2
|
import {
|
|
3
3
|
buildDependencyMap,
|
|
4
4
|
fetchChildIssueDetails
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-TZNNJLGT.js";
|
|
6
|
+
import {
|
|
7
|
+
preAcceptClaudeTrust
|
|
8
|
+
} from "./chunk-NOMQ5RFG.js";
|
|
9
|
+
import {
|
|
10
|
+
generateAndWriteMcpConfigFile,
|
|
11
|
+
generateIssueManagementMcpConfig,
|
|
12
|
+
generateRecapMcpConfig,
|
|
13
|
+
readRecapFile,
|
|
14
|
+
resolveRecapFilePath,
|
|
15
|
+
writeRecapFile
|
|
16
|
+
} from "./chunk-5UFGO4ZT.js";
|
|
6
17
|
import {
|
|
7
18
|
IssueManagementProviderFactory
|
|
8
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-RMLADZRY.js";
|
|
9
20
|
import {
|
|
10
21
|
getWorkspacePort
|
|
11
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-HLDY5S4C.js";
|
|
12
23
|
import {
|
|
13
24
|
installDependencies
|
|
14
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-3GTUXW26.js";
|
|
15
26
|
import {
|
|
16
|
-
|
|
17
|
-
} from "./chunk-
|
|
27
|
+
extractSettingsOverrides
|
|
28
|
+
} from "./chunk-GYCR2LOU.js";
|
|
18
29
|
import {
|
|
19
|
-
|
|
20
|
-
} from "./chunk-
|
|
30
|
+
TelemetryService
|
|
31
|
+
} from "./chunk-GMDSYLI6.js";
|
|
21
32
|
import {
|
|
22
33
|
FirstRunManager
|
|
23
|
-
} from "./chunk-
|
|
24
|
-
import {
|
|
25
|
-
generateAndWriteMcpConfigFile,
|
|
26
|
-
generateIssueManagementMcpConfig,
|
|
27
|
-
generateRecapMcpConfig
|
|
28
|
-
} from "./chunk-SKSYYBCU.js";
|
|
34
|
+
} from "./chunk-SQYHPBFP.js";
|
|
29
35
|
import {
|
|
30
36
|
AgentManager
|
|
31
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-VNYWBHKR.js";
|
|
38
|
+
import {
|
|
39
|
+
GitWorktreeManager
|
|
40
|
+
} from "./chunk-LE2NOUTN.js";
|
|
41
|
+
import {
|
|
42
|
+
IssueTrackerFactory
|
|
43
|
+
} from "./chunk-UHIBKD73.js";
|
|
32
44
|
import {
|
|
33
45
|
launchClaude
|
|
34
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-Y3RX7LZT.js";
|
|
35
47
|
import {
|
|
36
48
|
PromptTemplateManager,
|
|
37
49
|
buildReviewTemplateVariables
|
|
38
|
-
} from "./chunk-
|
|
39
|
-
import {
|
|
40
|
-
extractSettingsOverrides
|
|
41
|
-
} from "./chunk-GYCR2LOU.js";
|
|
50
|
+
} from "./chunk-WG4MLJ6J.js";
|
|
42
51
|
import {
|
|
43
52
|
extractIssueNumber,
|
|
44
53
|
findMainWorktreePathWithSettings,
|
|
45
54
|
generateWorktreePath,
|
|
46
55
|
getWorktreeRoot,
|
|
47
56
|
isValidGitRepo
|
|
48
|
-
} from "./chunk-
|
|
57
|
+
} from "./chunk-3RXYOBME.js";
|
|
49
58
|
import {
|
|
50
59
|
SettingsManager
|
|
51
|
-
} from "./chunk-
|
|
60
|
+
} from "./chunk-ET6A2JR4.js";
|
|
52
61
|
import {
|
|
53
62
|
MetadataManager
|
|
54
|
-
} from "./chunk-
|
|
55
|
-
import {
|
|
56
|
-
IssueTrackerFactory
|
|
57
|
-
} from "./chunk-UKBAJ2QQ.js";
|
|
63
|
+
} from "./chunk-YRCEOQPX.js";
|
|
58
64
|
import {
|
|
59
65
|
getLogger,
|
|
60
66
|
withLogger
|
|
61
|
-
} from "./chunk-
|
|
67
|
+
} from "./chunk-ZAXRQLK3.js";
|
|
62
68
|
import {
|
|
63
69
|
createStderrLogger,
|
|
64
70
|
logger
|
|
65
|
-
} from "./chunk-
|
|
71
|
+
} from "./chunk-H2SSF24U.js";
|
|
66
72
|
|
|
67
73
|
// src/commands/ignite.ts
|
|
68
|
-
import
|
|
69
|
-
import
|
|
74
|
+
import path5 from "path";
|
|
75
|
+
import fs5 from "fs-extra";
|
|
70
76
|
import { readFile } from "fs/promises";
|
|
71
77
|
|
|
72
78
|
// src/lib/ClaudeHookManager.ts
|
|
@@ -318,6 +324,11 @@ var SwarmSetupService = class {
|
|
|
318
324
|
createBranch: true,
|
|
319
325
|
baseBranch: epicBranch
|
|
320
326
|
});
|
|
327
|
+
try {
|
|
328
|
+
await preAcceptClaudeTrust(childWorktreePath);
|
|
329
|
+
} catch (error) {
|
|
330
|
+
getLogger().warn(`Failed to pre-accept Claude trust for child worktree: ${error instanceof Error ? error.message : String(error)}`);
|
|
331
|
+
}
|
|
321
332
|
const metadataInput = {
|
|
322
333
|
description: child.title,
|
|
323
334
|
branchName: childBranch,
|
|
@@ -484,11 +495,12 @@ var SwarmSetupService = class {
|
|
|
484
495
|
const variables = {
|
|
485
496
|
SWARM_MODE: true,
|
|
486
497
|
ONE_SHOT_MODE: true,
|
|
498
|
+
COMPLEXITY_OVERRIDE: "simple",
|
|
487
499
|
EPIC_WORKTREE_PATH: epicWorktreePath,
|
|
488
500
|
ISSUE_PREFIX: issuePrefix,
|
|
489
501
|
SWARM_SUB_AGENT_TIMEOUT_MS: subAgentTimeoutMs,
|
|
490
502
|
...agentMetadata && { SWARM_AGENT_METADATA: JSON.stringify(agentMetadata) },
|
|
491
|
-
...buildReviewTemplateVariables(settings == null ? void 0 : settings.agents)
|
|
503
|
+
...buildReviewTemplateVariables(true, settings == null ? void 0 : settings.agents)
|
|
492
504
|
};
|
|
493
505
|
const agentBody = await this.templateManager.getPrompt("issue", variables);
|
|
494
506
|
const workerModel = ((_e = (_d = settings == null ? void 0 : settings.agents) == null ? void 0 : _d["iloom-swarm-worker"]) == null ? void 0 : _e.model) ?? "opus";
|
|
@@ -621,6 +633,51 @@ async function detectProjectLanguage(projectPath) {
|
|
|
621
633
|
}
|
|
622
634
|
}
|
|
623
635
|
|
|
636
|
+
// src/utils/system-prompt-writer.ts
|
|
637
|
+
import path4 from "path";
|
|
638
|
+
import fs4 from "fs-extra";
|
|
639
|
+
async function prepareSystemPromptForPlatform(systemPrompt, workspacePath, platform = process.platform) {
|
|
640
|
+
if (platform === "darwin" || platform === "linux") {
|
|
641
|
+
return { appendSystemPrompt: systemPrompt };
|
|
642
|
+
}
|
|
643
|
+
const claudeDir = path4.join(workspacePath, ".claude");
|
|
644
|
+
const promptFilePath = path4.join(claudeDir, "iloom-system-prompt.md");
|
|
645
|
+
const pluginDir = path4.join(claudeDir, "iloom-plugin");
|
|
646
|
+
await fs4.ensureDir(claudeDir);
|
|
647
|
+
await fs4.writeFile(promptFilePath, systemPrompt, "utf-8");
|
|
648
|
+
await createSessionStartPlugin(pluginDir, promptFilePath);
|
|
649
|
+
return {
|
|
650
|
+
pluginDir,
|
|
651
|
+
initialPromptOverride: "/clear"
|
|
652
|
+
};
|
|
653
|
+
}
|
|
654
|
+
async function createSessionStartPlugin(pluginDir, promptFilePath) {
|
|
655
|
+
await fs4.ensureDir(pluginDir);
|
|
656
|
+
const runnerScript = `process.stdout.write(require('fs').readFileSync(${JSON.stringify(promptFilePath)}, 'utf-8'));`;
|
|
657
|
+
await fs4.writeFile(path4.join(pluginDir, "runner.js"), runnerScript, "utf-8");
|
|
658
|
+
const portableRunnerPath = path4.join(pluginDir, "runner.js").replace(/\\/g, "/");
|
|
659
|
+
const hooksConfig = {
|
|
660
|
+
hooks: {
|
|
661
|
+
SessionStart: [
|
|
662
|
+
{
|
|
663
|
+
matcher: "*",
|
|
664
|
+
hooks: [
|
|
665
|
+
{
|
|
666
|
+
type: "command",
|
|
667
|
+
command: `node "${portableRunnerPath}"`
|
|
668
|
+
}
|
|
669
|
+
]
|
|
670
|
+
}
|
|
671
|
+
]
|
|
672
|
+
}
|
|
673
|
+
};
|
|
674
|
+
await fs4.writeFile(
|
|
675
|
+
path4.join(pluginDir, "hooks.json"),
|
|
676
|
+
JSON.stringify(hooksConfig, null, 2),
|
|
677
|
+
"utf-8"
|
|
678
|
+
);
|
|
679
|
+
}
|
|
680
|
+
|
|
624
681
|
// src/commands/ignite.ts
|
|
625
682
|
var WorktreeValidationError = class extends Error {
|
|
626
683
|
constructor(message, suggestion) {
|
|
@@ -672,21 +729,22 @@ var IgniteCommand = class {
|
|
|
672
729
|
* @param printOptions - Print mode options for headless/CI execution
|
|
673
730
|
* @param skipCleanup - Skip cleanup after execution
|
|
674
731
|
* @param workspacePath - Optional explicit workspace path for programmatic invocation (avoids process.chdir())
|
|
732
|
+
* @param complexity - Override complexity evaluation (session-only, takes priority over metadata)
|
|
675
733
|
*/
|
|
676
|
-
async execute(oneShot, printOptions, skipCleanup, workspacePath) {
|
|
734
|
+
async execute(oneShot, printOptions, skipCleanup, workspacePath, complexity) {
|
|
677
735
|
var _a, _b;
|
|
678
736
|
this.printOptions = printOptions;
|
|
679
737
|
const isJsonMode = (((_a = this.printOptions) == null ? void 0 : _a.json) ?? false) || (((_b = this.printOptions) == null ? void 0 : _b.jsonStream) ?? false);
|
|
680
738
|
if (isJsonMode) {
|
|
681
739
|
const jsonLogger = createStderrLogger();
|
|
682
|
-
return withLogger(jsonLogger, () => this.executeInternal(oneShot, skipCleanup, workspacePath));
|
|
740
|
+
return withLogger(jsonLogger, () => this.executeInternal(oneShot, skipCleanup, workspacePath, complexity));
|
|
683
741
|
}
|
|
684
|
-
return this.executeInternal(oneShot, skipCleanup, workspacePath);
|
|
742
|
+
return this.executeInternal(oneShot, skipCleanup, workspacePath, complexity);
|
|
685
743
|
}
|
|
686
744
|
/**
|
|
687
745
|
* Internal execution method (separated for withLogger wrapping)
|
|
688
746
|
*/
|
|
689
|
-
async executeInternal(oneShot, skipCleanup, workspacePath) {
|
|
747
|
+
async executeInternal(oneShot, skipCleanup, workspacePath, complexity) {
|
|
690
748
|
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r;
|
|
691
749
|
process.env.ILOOM = "1";
|
|
692
750
|
try {
|
|
@@ -723,6 +781,19 @@ var IgniteCommand = class {
|
|
|
723
781
|
const storedOneShot = (metadata == null ? void 0 : metadata.oneShot) ?? "default";
|
|
724
782
|
const isHeadlessForOneShot = ((_c = this.printOptions) == null ? void 0 : _c.print) ?? false;
|
|
725
783
|
const effectiveOneShot = isHeadlessForOneShot ? "noReview" : oneShot ?? storedOneShot;
|
|
784
|
+
const effectiveComplexity = complexity ?? (metadata == null ? void 0 : metadata.complexity) ?? void 0;
|
|
785
|
+
if (effectiveComplexity) {
|
|
786
|
+
try {
|
|
787
|
+
const recapFilePath = resolveRecapFilePath(context.workspacePath);
|
|
788
|
+
const recap = await readRecapFile(recapFilePath);
|
|
789
|
+
if (!recap.complexity) {
|
|
790
|
+
recap.complexity = { level: effectiveComplexity, reason: "Overridden via CLI flag", timestamp: (/* @__PURE__ */ new Date()).toISOString() };
|
|
791
|
+
await writeRecapFile(recapFilePath, recap);
|
|
792
|
+
}
|
|
793
|
+
} catch (error) {
|
|
794
|
+
logger.debug(`Failed to set recap complexity: ${error instanceof Error ? error.message : error}`);
|
|
795
|
+
}
|
|
796
|
+
}
|
|
726
797
|
if (!this.settings) {
|
|
727
798
|
const cliOverrides = extractSettingsOverrides();
|
|
728
799
|
this.settings = await this.settingsManager.loadSettings(void 0, cliOverrides);
|
|
@@ -763,7 +834,7 @@ var IgniteCommand = class {
|
|
|
763
834
|
return;
|
|
764
835
|
}
|
|
765
836
|
}
|
|
766
|
-
const variables = this.buildTemplateVariables(context, effectiveOneShot, draftPrNumber, draftPrUrl);
|
|
837
|
+
const variables = this.buildTemplateVariables(context, effectiveOneShot, draftPrNumber, draftPrUrl, effectiveComplexity);
|
|
767
838
|
if (isFirstRun) {
|
|
768
839
|
variables.FIRST_TIME_USER = true;
|
|
769
840
|
variables.README_CONTENT = await this.loadReadmeContent();
|
|
@@ -843,7 +914,7 @@ var IgniteCommand = class {
|
|
|
843
914
|
"mcp__recap__get_loom_state"
|
|
844
915
|
];
|
|
845
916
|
allowedTools = context.type === "pr" ? [...baseTools, "mcp__issue_management__get_pr", "mcp__issue_management__get_review_comments", "mcp__recap__set_goal"] : baseTools;
|
|
846
|
-
disallowedTools = ["Bash(gh api:*), Bash(gh issue comment:*)"];
|
|
917
|
+
disallowedTools = context.type === "pr" ? ["Bash(gh issue comment:*)"] : ["Bash(gh api:*)", "Bash(gh issue comment:*)"];
|
|
847
918
|
logger.debug("Configured tool filtering for issue/PR workflow", { allowedTools, disallowedTools });
|
|
848
919
|
} catch (error) {
|
|
849
920
|
logger.warn(`Failed to generate MCP config: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
@@ -885,11 +956,21 @@ var IgniteCommand = class {
|
|
|
885
956
|
variables,
|
|
886
957
|
["*.md", "!iloom-framework-detector.md"]
|
|
887
958
|
);
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
959
|
+
if (process.platform === "darwin") {
|
|
960
|
+
agents = this.agentManager.formatForCli(loadedAgents);
|
|
961
|
+
logger.debug("Loaded agent configurations for CLI", {
|
|
962
|
+
agentCount: Object.keys(agents).length,
|
|
963
|
+
agentNames: Object.keys(agents)
|
|
964
|
+
});
|
|
965
|
+
} else {
|
|
966
|
+
const agentsDir = path5.join(context.workspacePath, ".claude", "agents");
|
|
967
|
+
const rendered = await this.agentManager.renderAgentsToDisk(loadedAgents, agentsDir);
|
|
968
|
+
logger.debug("Rendered agent files to disk for auto-discovery", {
|
|
969
|
+
agentCount: rendered.length,
|
|
970
|
+
agentNames: rendered,
|
|
971
|
+
targetDir: agentsDir
|
|
972
|
+
});
|
|
973
|
+
}
|
|
893
974
|
} catch (error) {
|
|
894
975
|
logger.warn(`Failed to load agents: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
895
976
|
}
|
|
@@ -900,10 +981,21 @@ var IgniteCommand = class {
|
|
|
900
981
|
workspacePath: context.workspacePath,
|
|
901
982
|
hasMcpConfig: !!mcpConfig
|
|
902
983
|
});
|
|
984
|
+
try {
|
|
985
|
+
await preAcceptClaudeTrust(context.workspacePath);
|
|
986
|
+
} catch (error) {
|
|
987
|
+
logger.warn(`Failed to pre-accept Claude trust: ${error instanceof Error ? error.message : String(error)}`);
|
|
988
|
+
}
|
|
903
989
|
logger.info(isHeadless ? "\u2728 Launching Claude in headless mode..." : "\u2728 Launching Claude in current terminal...");
|
|
904
|
-
const
|
|
990
|
+
const systemPromptConfig = await prepareSystemPromptForPlatform(
|
|
991
|
+
systemInstructions,
|
|
992
|
+
context.workspacePath
|
|
993
|
+
);
|
|
994
|
+
const effectiveUserPrompt = systemPromptConfig.initialPromptOverride ?? userPrompt;
|
|
995
|
+
const claudeResult = await launchClaude(effectiveUserPrompt, {
|
|
905
996
|
...claudeOptions,
|
|
906
|
-
appendSystemPrompt:
|
|
997
|
+
...systemPromptConfig.appendSystemPrompt && { appendSystemPrompt: systemPromptConfig.appendSystemPrompt },
|
|
998
|
+
...systemPromptConfig.pluginDir && { pluginDir: systemPromptConfig.pluginDir },
|
|
907
999
|
...mcpConfig && { mcpConfig },
|
|
908
1000
|
...allowedTools && { allowedTools },
|
|
909
1001
|
...disallowedTools && { disallowedTools },
|
|
@@ -925,8 +1017,6 @@ var IgniteCommand = class {
|
|
|
925
1017
|
success: false,
|
|
926
1018
|
error: errorMessage
|
|
927
1019
|
}));
|
|
928
|
-
} else {
|
|
929
|
-
logger.error(`Failed to launch Claude: ${errorMessage}`);
|
|
930
1020
|
}
|
|
931
1021
|
throw error;
|
|
932
1022
|
}
|
|
@@ -952,7 +1042,7 @@ var IgniteCommand = class {
|
|
|
952
1042
|
/**
|
|
953
1043
|
* Build template variables from context
|
|
954
1044
|
*/
|
|
955
|
-
buildTemplateVariables(context, oneShot, draftPrNumber, draftPrUrl) {
|
|
1045
|
+
buildTemplateVariables(context, oneShot, draftPrNumber, draftPrUrl, complexity) {
|
|
956
1046
|
var _a, _b, _c, _d, _e;
|
|
957
1047
|
const variables = {
|
|
958
1048
|
WORKSPACE_PATH: context.workspacePath
|
|
@@ -978,7 +1068,10 @@ var IgniteCommand = class {
|
|
|
978
1068
|
} else {
|
|
979
1069
|
variables.INTERACTIVE_MODE = true;
|
|
980
1070
|
}
|
|
981
|
-
Object.assign(variables, buildReviewTemplateVariables((_a = this.settings) == null ? void 0 : _a.agents));
|
|
1071
|
+
Object.assign(variables, buildReviewTemplateVariables(false, (_a = this.settings) == null ? void 0 : _a.agents));
|
|
1072
|
+
if (complexity) {
|
|
1073
|
+
variables.COMPLEXITY_OVERRIDE = complexity;
|
|
1074
|
+
}
|
|
982
1075
|
if (draftPrNumber !== void 0) {
|
|
983
1076
|
variables.DRAFT_PR_MODE = true;
|
|
984
1077
|
variables.DRAFT_PR_NUMBER = draftPrNumber;
|
|
@@ -1030,7 +1123,7 @@ var IgniteCommand = class {
|
|
|
1030
1123
|
*/
|
|
1031
1124
|
async detectWorkspaceContext(workspacePath) {
|
|
1032
1125
|
const workspacePath_ = workspacePath ?? process.cwd();
|
|
1033
|
-
const currentDir =
|
|
1126
|
+
const currentDir = path5.basename(workspacePath_);
|
|
1034
1127
|
const prPattern = /_pr_(\d+)$/;
|
|
1035
1128
|
const prMatch = currentDir.match(prPattern);
|
|
1036
1129
|
if (prMatch == null ? void 0 : prMatch[1]) {
|
|
@@ -1164,7 +1257,7 @@ var IgniteCommand = class {
|
|
|
1164
1257
|
* orchestrator prompt, and launches Claude with agent teams enabled.
|
|
1165
1258
|
*/
|
|
1166
1259
|
async executeSwarmMode(metadata, epicWorktreePath, epicBranch, metadataManager, skipCleanup) {
|
|
1167
|
-
var _a, _b, _c;
|
|
1260
|
+
var _a, _b, _c, _d;
|
|
1168
1261
|
if (!this.settings) {
|
|
1169
1262
|
throw new Error("Settings not loaded. Cannot enter swarm mode.");
|
|
1170
1263
|
}
|
|
@@ -1191,10 +1284,10 @@ var IgniteCommand = class {
|
|
|
1191
1284
|
settings
|
|
1192
1285
|
);
|
|
1193
1286
|
await metadataManager.updateMetadata(epicWorktreePath, { mcpConfigPath: epicMcpConfigPath });
|
|
1194
|
-
const epicClaudeDir =
|
|
1195
|
-
await
|
|
1196
|
-
await
|
|
1197
|
-
|
|
1287
|
+
const epicClaudeDir = path5.join(epicWorktreePath, ".claude");
|
|
1288
|
+
await fs5.ensureDir(epicClaudeDir);
|
|
1289
|
+
await fs5.writeFile(
|
|
1290
|
+
path5.join(epicClaudeDir, "iloom-swarm-mcp-config-path"),
|
|
1198
1291
|
epicMcpConfigPath,
|
|
1199
1292
|
"utf-8"
|
|
1200
1293
|
);
|
|
@@ -1220,18 +1313,46 @@ var IgniteCommand = class {
|
|
|
1220
1313
|
} catch (error) {
|
|
1221
1314
|
logger.warn(`Failed to generate recap MCP config: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
1222
1315
|
}
|
|
1316
|
+
const finishedMetadata = await metadataManager.listFinishedMetadata();
|
|
1317
|
+
const finishedByIssueNumber = /* @__PURE__ */ new Map();
|
|
1318
|
+
for (const meta of finishedMetadata) {
|
|
1319
|
+
for (const issueNum of meta.issue_numbers) {
|
|
1320
|
+
if (!finishedByIssueNumber.has(issueNum)) {
|
|
1321
|
+
finishedByIssueNumber.set(issueNum, meta);
|
|
1322
|
+
}
|
|
1323
|
+
}
|
|
1324
|
+
}
|
|
1325
|
+
const pendingChildIssues = [];
|
|
1326
|
+
const skippedChildren = [];
|
|
1327
|
+
for (const child of metadata.childIssues) {
|
|
1328
|
+
const rawId = child.number.replace(/^#/, "");
|
|
1329
|
+
const safeId = rawId.replace(/[^a-zA-Z0-9-_]/g, "-");
|
|
1330
|
+
const childBranch = `issue/${safeId}`;
|
|
1331
|
+
const childWorktreePath = generateWorktreePath(childBranch, mainWorktreePath);
|
|
1332
|
+
const childMeta = await metadataManager.readMetadata(childWorktreePath) ?? finishedByIssueNumber.get(rawId) ?? null;
|
|
1333
|
+
if ((childMeta == null ? void 0 : childMeta.state) === "done") {
|
|
1334
|
+
skippedChildren.push({ number: child.number, state: childMeta.state });
|
|
1335
|
+
} else {
|
|
1336
|
+
pendingChildIssues.push(child);
|
|
1337
|
+
}
|
|
1338
|
+
}
|
|
1339
|
+
if (skippedChildren.length > 0) {
|
|
1340
|
+
for (const skipped of skippedChildren) {
|
|
1341
|
+
logger.info(`Skipping child ${skipped.number} (state: ${skipped.state})`);
|
|
1342
|
+
}
|
|
1343
|
+
}
|
|
1223
1344
|
const swarmResult = await swarmSetup.setupSwarm(
|
|
1224
1345
|
epicIssueNumber,
|
|
1225
1346
|
epicBranch,
|
|
1226
1347
|
epicWorktreePath,
|
|
1227
|
-
|
|
1348
|
+
pendingChildIssues,
|
|
1228
1349
|
mainWorktreePath,
|
|
1229
1350
|
providerName,
|
|
1230
1351
|
settings
|
|
1231
1352
|
);
|
|
1232
1353
|
const successfulWorktrees = swarmResult.childWorktrees.filter((c) => c.success);
|
|
1233
1354
|
const worktreeMap = new Map(successfulWorktrees.map((cw) => [cw.issueId, cw]));
|
|
1234
|
-
const childIssuesData =
|
|
1355
|
+
const childIssuesData = pendingChildIssues.filter((ci) => worktreeMap.has(ci.number.replace(/^#/, ""))).map((ci) => {
|
|
1235
1356
|
const rawId = ci.number.replace(/^#/, "");
|
|
1236
1357
|
const wt = worktreeMap.get(rawId);
|
|
1237
1358
|
return {
|
|
@@ -1244,6 +1365,7 @@ var IgniteCommand = class {
|
|
|
1244
1365
|
});
|
|
1245
1366
|
const epicMetadataPath = metadataManager.getMetadataFilePath(epicWorktreePath);
|
|
1246
1367
|
const issuePrefix = providerName === "github" ? "#" : "";
|
|
1368
|
+
const postSwarmReview = ((_a = settings.spin) == null ? void 0 : _a.postSwarmReview) !== false;
|
|
1247
1369
|
const variables = {
|
|
1248
1370
|
EPIC_ISSUE_NUMBER: epicIssueNumber,
|
|
1249
1371
|
EPIC_WORKTREE_PATH: epicWorktreePath,
|
|
@@ -1251,19 +1373,20 @@ var IgniteCommand = class {
|
|
|
1251
1373
|
CHILD_ISSUES: JSON.stringify(childIssuesData, null, 2),
|
|
1252
1374
|
DEPENDENCY_MAP: JSON.stringify(metadata.dependencyMap, null, 2),
|
|
1253
1375
|
ISSUE_PREFIX: issuePrefix,
|
|
1254
|
-
...skipCleanup && { NO_CLEANUP: true }
|
|
1376
|
+
...skipCleanup && { NO_CLEANUP: true },
|
|
1377
|
+
...postSwarmReview && { POST_SWARM_REVIEW: true }
|
|
1255
1378
|
};
|
|
1256
1379
|
const draftPrNumber = metadata.draftPrNumber ?? void 0;
|
|
1257
1380
|
if (draftPrNumber !== void 0) {
|
|
1258
1381
|
variables.DRAFT_PR_MODE = true;
|
|
1259
1382
|
variables.DRAFT_PR_NUMBER = draftPrNumber;
|
|
1260
|
-
const draftPrUrl = (
|
|
1383
|
+
const draftPrUrl = (_b = metadata.prUrls) == null ? void 0 : _b[String(draftPrNumber)];
|
|
1261
1384
|
if (draftPrUrl) {
|
|
1262
1385
|
variables.DRAFT_PR_URL = draftPrUrl;
|
|
1263
1386
|
}
|
|
1264
|
-
const autoCommitPushEnabled = ((
|
|
1387
|
+
const autoCommitPushEnabled = ((_c = settings.mergeBehavior) == null ? void 0 : _c.autoCommitPush) !== false;
|
|
1265
1388
|
variables.AUTO_COMMIT_PUSH = autoCommitPushEnabled;
|
|
1266
|
-
const remote = ((
|
|
1389
|
+
const remote = ((_d = settings.mergeBehavior) == null ? void 0 : _d.remote) ?? "origin";
|
|
1267
1390
|
if (!/^[a-zA-Z0-9_-]+$/.test(remote)) {
|
|
1268
1391
|
throw new Error(`Invalid git remote name: "${remote}". Remote names can only contain alphanumeric characters, underscores, and hyphens.`);
|
|
1269
1392
|
}
|
|
@@ -1299,7 +1422,12 @@ var IgniteCommand = class {
|
|
|
1299
1422
|
variables,
|
|
1300
1423
|
["*.md", "!iloom-framework-detector.md"]
|
|
1301
1424
|
);
|
|
1302
|
-
|
|
1425
|
+
if (process.platform === "darwin") {
|
|
1426
|
+
agents = this.agentManager.formatForCli(loadedAgents);
|
|
1427
|
+
} else {
|
|
1428
|
+
const agentsDir = path5.join(epicWorktreePath, ".claude", "agents");
|
|
1429
|
+
await this.agentManager.renderAgentsToDisk(loadedAgents, agentsDir);
|
|
1430
|
+
}
|
|
1303
1431
|
} catch (error) {
|
|
1304
1432
|
logger.warn(`Failed to load agents: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
1305
1433
|
}
|
|
@@ -1312,25 +1440,30 @@ var IgniteCommand = class {
|
|
|
1312
1440
|
} catch (error) {
|
|
1313
1441
|
logger.debug(`Telemetry swarm.started tracking failed: ${error instanceof Error ? error.message : error}`);
|
|
1314
1442
|
}
|
|
1315
|
-
await
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
model,
|
|
1319
|
-
permissionMode: "bypassPermissions",
|
|
1320
|
-
addDir: epicWorktreePath,
|
|
1321
|
-
headless: false,
|
|
1322
|
-
...metadata.sessionId && { sessionId: metadata.sessionId },
|
|
1323
|
-
appendSystemPrompt: orchestratorPrompt,
|
|
1324
|
-
mcpConfig: mcpConfigs,
|
|
1325
|
-
allowedTools,
|
|
1326
|
-
...agents && { agents },
|
|
1327
|
-
env: {
|
|
1328
|
-
CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS: "1",
|
|
1329
|
-
ILOOM_SWARM: "1",
|
|
1330
|
-
ENABLE_TOOL_SEARCH: "auto:30"
|
|
1331
|
-
}
|
|
1332
|
-
}
|
|
1443
|
+
const orchestratorPromptConfig = await prepareSystemPromptForPlatform(
|
|
1444
|
+
orchestratorPrompt,
|
|
1445
|
+
epicWorktreePath
|
|
1333
1446
|
);
|
|
1447
|
+
const effectiveSwarmPrompt = orchestratorPromptConfig.initialPromptOverride ?? `You are the swarm orchestrator for epic #${epicIssueNumber}. Begin by reading your system prompt instructions and executing the workflow.`;
|
|
1448
|
+
process.env.CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS = "1";
|
|
1449
|
+
process.env.ILOOM_SWARM = "1";
|
|
1450
|
+
process.env.ENABLE_TOOL_SEARCH = "auto:30";
|
|
1451
|
+
process.env.CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING = "1";
|
|
1452
|
+
process.env.CLAUDE_CODE_DISABLE_AUTO_MEMORY = "1";
|
|
1453
|
+
process.env.CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC = "1";
|
|
1454
|
+
process.env.CLAUDE_CODE_EFFORT_LEVEL = "medium";
|
|
1455
|
+
await launchClaude(effectiveSwarmPrompt, {
|
|
1456
|
+
model,
|
|
1457
|
+
permissionMode: "bypassPermissions",
|
|
1458
|
+
addDir: epicWorktreePath,
|
|
1459
|
+
headless: false,
|
|
1460
|
+
...metadata.sessionId && { sessionId: metadata.sessionId },
|
|
1461
|
+
...orchestratorPromptConfig.appendSystemPrompt && { appendSystemPrompt: orchestratorPromptConfig.appendSystemPrompt },
|
|
1462
|
+
...orchestratorPromptConfig.pluginDir && { pluginDir: orchestratorPromptConfig.pluginDir },
|
|
1463
|
+
mcpConfig: mcpConfigs,
|
|
1464
|
+
allowedTools,
|
|
1465
|
+
...agents && { agents }
|
|
1466
|
+
});
|
|
1334
1467
|
try {
|
|
1335
1468
|
const swarmEndTime = Date.now();
|
|
1336
1469
|
let succeeded = 0;
|
|
@@ -1376,15 +1509,15 @@ var IgniteCommand = class {
|
|
|
1376
1509
|
*/
|
|
1377
1510
|
async loadReadmeContent() {
|
|
1378
1511
|
try {
|
|
1379
|
-
let currentDir =
|
|
1380
|
-
while (currentDir !==
|
|
1381
|
-
const readmePath =
|
|
1512
|
+
let currentDir = path5.dirname(new URL(import.meta.url).pathname);
|
|
1513
|
+
while (currentDir !== path5.dirname(currentDir)) {
|
|
1514
|
+
const readmePath = path5.join(currentDir, "README.md");
|
|
1382
1515
|
try {
|
|
1383
1516
|
const content = await readFile(readmePath, "utf-8");
|
|
1384
1517
|
logger.debug("Loaded README.md for first-time user", { readmePath });
|
|
1385
1518
|
return content;
|
|
1386
1519
|
} catch {
|
|
1387
|
-
currentDir =
|
|
1520
|
+
currentDir = path5.dirname(currentDir);
|
|
1388
1521
|
}
|
|
1389
1522
|
}
|
|
1390
1523
|
logger.debug("README.md not found, returning empty string");
|
|
@@ -1400,15 +1533,15 @@ var IgniteCommand = class {
|
|
|
1400
1533
|
*/
|
|
1401
1534
|
async loadSettingsSchemaContent() {
|
|
1402
1535
|
try {
|
|
1403
|
-
let currentDir =
|
|
1404
|
-
while (currentDir !==
|
|
1405
|
-
const schemaPath =
|
|
1536
|
+
let currentDir = path5.dirname(new URL(import.meta.url).pathname);
|
|
1537
|
+
while (currentDir !== path5.dirname(currentDir)) {
|
|
1538
|
+
const schemaPath = path5.join(currentDir, ".iloom", "README.md");
|
|
1406
1539
|
try {
|
|
1407
1540
|
const content = await readFile(schemaPath, "utf-8");
|
|
1408
1541
|
logger.debug("Loaded .iloom/README.md for first-time user", { schemaPath });
|
|
1409
1542
|
return content;
|
|
1410
1543
|
} catch {
|
|
1411
|
-
currentDir =
|
|
1544
|
+
currentDir = path5.dirname(currentDir);
|
|
1412
1545
|
}
|
|
1413
1546
|
}
|
|
1414
1547
|
logger.debug(".iloom/README.md not found, returning empty string");
|
|
@@ -1424,4 +1557,4 @@ export {
|
|
|
1424
1557
|
WorktreeValidationError,
|
|
1425
1558
|
IgniteCommand
|
|
1426
1559
|
};
|
|
1427
|
-
//# sourceMappingURL=chunk-
|
|
1560
|
+
//# sourceMappingURL=chunk-IR74O2F6.js.map
|