@iloom/cli 0.11.1 → 0.12.1
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 +153 -13
- package/dist/BitBucketApiClient-J2ZSCS5N.js +10 -0
- package/dist/BitBucketVCSProvider-5X64IXXW.js +12 -0
- package/dist/{BranchNamingService-XBCO747L.js → BranchNamingService-MEK2WZUD.js} +4 -4
- package/dist/ClaudeContextManager-IENAE2CP.js +14 -0
- package/dist/ClaudeService-YIJCZUUB.js +13 -0
- package/dist/GitHubService-UTAYZXL3.js +12 -0
- package/dist/IssueTrackerFactory-2OI7YIN6.js +15 -0
- package/dist/{LoomLauncher-5AZU2F5I.js → LoomLauncher-3TSFW7QP.js} +10 -10
- package/dist/MetadataManager-V4LSJ2PB.js +10 -0
- package/dist/ProjectCapabilityDetector-I4J66WKF.js +11 -0
- package/dist/{PromptTemplateManager-T5VTLJP3.js → PromptTemplateManager-I75WKXM4.js} +3 -3
- package/dist/README.md +153 -13
- package/dist/{SettingsManager-WQ5NSGAH.js → SettingsManager-BMQCAXPP.js} +13 -5
- package/dist/SettingsMigrationManager-ZPARZ5KH.js +10 -0
- package/dist/agents/iloom-code-reviewer.md +2 -1
- package/dist/agents/iloom-framework-detector.md +0 -1
- package/dist/agents/iloom-issue-analyze-and-plan.md +4 -1
- package/dist/agents/iloom-issue-analyzer.md +4 -1
- package/dist/agents/iloom-issue-complexity-evaluator.md +4 -1
- package/dist/agents/iloom-issue-enhancer.md +4 -1
- package/dist/agents/iloom-issue-implementer.md +5 -2
- package/dist/agents/iloom-issue-planner.md +4 -1
- package/dist/agents/iloom-wave-verifier.md +186 -0
- package/dist/browser-VZY7F2DF.js +10 -0
- package/dist/build-DMWSIME6.js +27 -0
- package/dist/{chunk-UHIBKD73.js → chunk-35CBWAJL.js} +13 -32
- package/dist/{chunk-UHIBKD73.js.map → chunk-35CBWAJL.js.map} +1 -1
- package/dist/{chunk-YRCEOQPX.js → chunk-4JZEQBWV.js} +4 -3
- package/dist/chunk-4JZEQBWV.js.map +1 -0
- package/dist/{chunk-ET6A2JR4.js → chunk-653XBU3L.js} +111 -18
- package/dist/chunk-653XBU3L.js.map +1 -0
- package/dist/{chunk-G2MNSPA4.js → chunk-772N5WCA.js} +2 -2
- package/dist/{chunk-WG4MLJ6J.js → chunk-7RCUWU3I.js} +2 -2
- package/dist/chunk-7RCUWU3I.js.map +1 -0
- package/dist/{chunk-NOMQ5RFG.js → chunk-7UBEHQTP.js} +2 -2
- package/dist/{chunk-7NFCGKZT.js → chunk-AQUSMNBF.js} +3 -3
- package/dist/{chunk-IDCE26KD.js → chunk-AUYSAMXV.js} +3 -3
- package/dist/chunk-AYLC633W.js +406 -0
- package/dist/chunk-AYLC633W.js.map +1 -0
- package/dist/{chunk-HLDY5S4C.js → chunk-BFF27W3S.js} +3 -3
- package/dist/{chunk-QVAA5KHK.js → chunk-BZ7KTXPB.js} +16 -8
- package/dist/chunk-BZ7KTXPB.js.map +1 -0
- package/dist/{chunk-K7R5QY6C.js → chunk-CE676WCN.js} +2 -2
- package/dist/{chunk-5UFGO4ZT.js → chunk-CQHHEW2M.js} +6 -3
- package/dist/chunk-CQHHEW2M.js.map +1 -0
- package/dist/{chunk-LHDD4JHC.js → chunk-D4Q7T5KD.js} +4 -4
- package/dist/{chunk-RBYTXYGD.js → chunk-D75KSI3V.js} +2 -2
- package/dist/{chunk-Y3RX7LZT.js → chunk-DDHWZNGL.js} +18 -12
- package/dist/chunk-DDHWZNGL.js.map +1 -0
- package/dist/{chunk-5LTID2AF.js → chunk-DMSL5BAP.js} +35 -6
- package/dist/{chunk-5LTID2AF.js.map → chunk-DMSL5BAP.js.map} +1 -1
- package/dist/{chunk-TEJAGQX2.js → chunk-DY6MUWQW.js} +36 -36
- package/dist/chunk-DY6MUWQW.js.map +1 -0
- package/dist/{chunk-SQYHPBFP.js → chunk-EGNUOALL.js} +2 -2
- package/dist/{chunk-LL6TOX3G.js → chunk-EQIII6GI.js} +10 -10
- package/dist/chunk-EQIII6GI.js.map +1 -0
- package/dist/{chunk-ZAXRQLK3.js → chunk-FTYWGQFM.js} +2 -2
- package/dist/{chunk-LE2NOUTN.js → chunk-FV4KXBGO.js} +3 -3
- package/dist/{chunk-XFQGI2E3.js → chunk-GWJWECZB.js} +51 -45
- package/dist/chunk-GWJWECZB.js.map +1 -0
- package/dist/{chunk-QNHZM5ZV.js → chunk-HIGWKLQR.js} +3 -3
- package/dist/{chunk-VMZG66UV.js → chunk-HKEXRZMU.js} +3 -3
- package/dist/{chunk-V4STTBQD.js → chunk-IHSA7VGI.js} +9 -9
- package/dist/{chunk-NCPZYQ4B.js → chunk-K3QGG4O2.js} +2 -2
- package/dist/{chunk-QR4FU53I.js → chunk-KCZSUJUR.js} +22 -12
- package/dist/chunk-KCZSUJUR.js.map +1 -0
- package/dist/{chunk-NH3QZYE5.js → chunk-KV4NU3RP.js} +2 -2
- package/dist/{chunk-NDSGJZI2.js → chunk-LOAYWTJJ.js} +2 -2
- package/dist/{chunk-ABVMUNCD.js → chunk-M3FBM4T3.js} +64 -10
- package/dist/chunk-M3FBM4T3.js.map +1 -0
- package/dist/{chunk-GMDSYLI6.js → chunk-MY2Q3FJ3.js} +2 -2
- package/dist/{chunk-CV47VCMQ.js → chunk-NPVA65KS.js} +2 -2
- package/dist/{chunk-7OCGBJLR.js → chunk-OIVFHJOA.js} +2 -2
- package/dist/{chunk-7FIXNAUO.js → chunk-OKB2NEDQ.js} +66 -43
- package/dist/chunk-OKB2NEDQ.js.map +1 -0
- package/dist/{chunk-3RXYOBME.js → chunk-OPQC4OWM.js} +5 -5
- package/dist/{chunk-3RXYOBME.js.map → chunk-OPQC4OWM.js.map} +1 -1
- package/dist/chunk-P5MXXHXQ.js +284 -0
- package/dist/chunk-P5MXXHXQ.js.map +1 -0
- package/dist/{chunk-NN5RYWXA.js → chunk-PH65MFQM.js} +6 -6
- package/dist/{chunk-TZNNJLGT.js → chunk-PMB6TYV4.js} +6 -6
- package/dist/chunk-QC65IOV3.js +304 -0
- package/dist/chunk-QC65IOV3.js.map +1 -0
- package/dist/{chunk-6YVJVUR4.js → chunk-QF2DROQR.js} +3 -3
- package/dist/{chunk-XXFSOVL3.js → chunk-QFDM23CO.js} +4 -4
- package/dist/{chunk-RMLADZRY.js → chunk-R7DGN73N.js} +5 -5
- package/dist/{chunk-IR74O2F6.js → chunk-UVXB6O24.js} +245 -187
- package/dist/chunk-UVXB6O24.js.map +1 -0
- package/dist/{chunk-5PNZBH6V.js → chunk-V5IYLWRA.js} +2 -2
- package/dist/{chunk-KQFIGI37.js → chunk-VA6CWUAE.js} +7 -7
- package/dist/{chunk-3GTUXW26.js → chunk-VIQOQ463.js} +19 -3
- package/dist/chunk-VIQOQ463.js.map +1 -0
- package/dist/{chunk-H2SSF24U.js → chunk-VRPPI6GU.js} +17 -6
- package/dist/{chunk-H2SSF24U.js.map → chunk-VRPPI6GU.js.map} +1 -1
- package/dist/{chunk-YETJNRQM.js → chunk-WEBMMJKL.js} +2 -1
- package/dist/{chunk-VUUN3KE4.js → chunk-XVCGPTEQ.js} +8 -8
- package/dist/chunk-XVCGPTEQ.js.map +1 -0
- package/dist/{chunk-VNYWBHKR.js → chunk-Y2MVSEJK.js} +33 -3
- package/dist/chunk-Y2MVSEJK.js.map +1 -0
- package/dist/chunk-YWNF5755.js +696 -0
- package/dist/chunk-YWNF5755.js.map +1 -0
- package/dist/{chunk-UDCI3QTS.js → chunk-ZM2AYHMO.js} +2 -2
- package/dist/{claude-ONQTDWV3.js → claude-ACL7G4CF.js} +4 -4
- package/dist/{cleanup-YOM6PQCN.js → cleanup-RLBLNQZN.js} +37 -34
- package/dist/{cleanup-YOM6PQCN.js.map → cleanup-RLBLNQZN.js.map} +1 -1
- package/dist/cli.js +290 -141
- package/dist/cli.js.map +1 -1
- package/dist/{color-VQD52LOI.js → color-AC6F2QE7.js} +3 -3
- package/dist/{commit-DC2Q5CDY.js → commit-RILBXFWO.js} +15 -15
- package/dist/{compile-4NCQECKE.js → compile-QEL5724K.js} +11 -11
- package/dist/{contribute-M5UWXCAV.js → contribute-EHWLYOMZ.js} +11 -11
- package/dist/{contribute-M5UWXCAV.js.map → contribute-EHWLYOMZ.js.map} +1 -1
- package/dist/{mcp/darwin-3JFFE3W2.js → darwin-5K3I4FTH.js} +2 -2
- package/dist/{dev-server-CYRP6M73.js → dev-server-2WSWZXJG.js} +35 -21
- package/dist/dev-server-2WSWZXJG.js.map +1 -0
- package/dist/{feedback-BMAZGKRW.js → feedback-RFWGB4I5.js} +17 -17
- package/dist/{git-BXUD6CL5.js → git-I3PO6FY7.js} +6 -6
- package/dist/ignite-X2NNTNUN.js +35 -0
- package/dist/index.d.ts +200 -16
- package/dist/index.js +164 -55
- package/dist/index.js.map +1 -1
- package/dist/{init-CI43GJHV.js → init-LWU2M53W.js} +18 -18
- package/dist/{install-deps-SRTM5U7D.js → install-deps-HXP2TM7G.js} +11 -11
- package/dist/{installation-detector-HF6QN7KP.js → installation-detector-PYAZ2O6U.js} +3 -3
- package/dist/{issues-DMRQJH7E.js → issues-SUFQJY6O.js} +69 -56
- package/dist/issues-SUFQJY6O.js.map +1 -0
- package/dist/lint-FDZC77GL.js +27 -0
- package/dist/{linux-RYLOP2LY.js → linux-WUGRYCJY.js} +2 -2
- package/dist/mcp/{chunk-PIIRD4LO.js → chunk-4HZMW2V3.js} +1 -1
- package/dist/mcp/{chunk-PIIRD4LO.js.map → chunk-4HZMW2V3.js.map} +1 -1
- package/dist/{darwin-5BHWRJ7D.js → mcp/darwin-U25WIGH6.js} +2 -2
- package/dist/mcp/issue-management-server.js +900 -20
- package/dist/mcp/issue-management-server.js.map +1 -1
- package/dist/mcp/{linux-JBVS4R3A.js → linux-5BXVBGSY.js} +2 -2
- package/dist/mcp/recap-server.js +24 -22
- package/dist/mcp/recap-server.js.map +1 -1
- package/dist/mcp/{tmux-RYBLEHUZ.js → tmux-CU26ZTNM.js} +2 -2
- package/dist/mcp/{wsl-4QZIQLLE.js → wsl-KI25UDOF.js} +2 -2
- package/dist/neon-helpers-LCZAN4U4.js +11 -0
- package/dist/{open-2Y7GSUTJ.js → open-US4XACLW.js} +36 -21
- package/dist/open-US4XACLW.js.map +1 -0
- package/dist/{plan-SWFPLNJE.js → plan-5S6355GF.js} +68 -75
- package/dist/plan-5S6355GF.js.map +1 -0
- package/dist/{projects-IUSUXD5D.js → projects-L5AHUBGA.js} +6 -6
- package/dist/{prompt-7LZB4PAT.js → prompt-FUU5NMJQ.js} +3 -3
- package/dist/prompt-FUU5NMJQ.js.map +1 -0
- package/dist/prompts/init-prompt.txt +160 -23
- package/dist/prompts/issue-prompt.txt +93 -157
- package/dist/prompts/plan-prompt.txt +86 -6
- package/dist/prompts/swarm-orchestrator-prompt.txt +78 -21
- package/dist/{rebase-S6OHAOOF.js → rebase-JA3RW2XO.js} +12 -12
- package/dist/{recap-GGVCG5VH.js → recap-5TO42HN2.js} +9 -9
- package/dist/{remote-MZTFHHTU.js → remote-RO4LZKT2.js} +3 -3
- package/dist/remote-RO4LZKT2.js.map +1 -0
- package/dist/{run-ST3FR75O.js → run-KKCRBRLW.js} +36 -21
- package/dist/run-KKCRBRLW.js.map +1 -0
- package/dist/schema/settings.schema.json +147 -11
- package/dist/{shell-W4SBQPTE.js → shell-GAB2FCXH.js} +8 -8
- package/dist/{summary-P2JCIIJO.js → summary-P7QE3TNW.js} +21 -19
- package/dist/summary-P7QE3TNW.js.map +1 -0
- package/dist/test-6LFB5WOO.js +27 -0
- package/dist/{test-git-2KFFAQ6B.js → test-git-PYJOYSED.js} +6 -6
- package/dist/{test-jira-FKDKG6CD.js → test-jira-SM7IU5HW.js} +8 -8
- package/dist/{test-prefix-GP2DAX37.js → test-prefix-HIRZBXTM.js} +6 -6
- package/dist/{test-tabs-YDWMWTVA.js → test-tabs-NGPTFD5T.js} +2 -2
- package/dist/{test-webserver-QI3QQFZ3.js → test-webserver-43PVP2JL.js} +8 -8
- package/dist/{tmux-7ZTA3BDI.js → tmux-6LRFH3DM.js} +2 -2
- package/dist/{update-XLW7R7FL.js → update-AD3GE5C4.js} +4 -4
- package/dist/{update-notifier-EYLAXZAA.js → update-notifier-VYDTDMSJ.js} +3 -3
- package/dist/update-notifier-VYDTDMSJ.js.map +1 -0
- package/dist/{vscode-TOGE5N67.js → vscode-HXIXRZ3A.js} +12 -12
- package/dist/{vscode-announcement-NIX7O2MG.js → vscode-announcement-AL3EHORH.js} +3 -3
- package/dist/{wsl-Y4GUTOQ7.js → wsl-4VMVT2PO.js} +2 -2
- package/package.json +1 -1
- package/dist/ClaudeContextManager-SXDCWDJA.js +0 -14
- package/dist/ClaudeService-6E6MCGJE.js +0 -13
- package/dist/GitHubService-2R5GQG4K.js +0 -12
- package/dist/IssueTrackerFactory-XN6MQ4UN.js +0 -14
- package/dist/MetadataManager-CMQQTFLQ.js +0 -10
- package/dist/ProjectCapabilityDetector-IC6NAFGY.js +0 -11
- package/dist/SettingsMigrationManager-S6J7OHUH.js +0 -10
- package/dist/build-OLS6J5KZ.js +0 -27
- package/dist/chunk-3GTUXW26.js.map +0 -1
- package/dist/chunk-5UFGO4ZT.js.map +0 -1
- package/dist/chunk-7FIXNAUO.js.map +0 -1
- package/dist/chunk-ABVMUNCD.js.map +0 -1
- package/dist/chunk-ET6A2JR4.js.map +0 -1
- package/dist/chunk-IR74O2F6.js.map +0 -1
- package/dist/chunk-LL6TOX3G.js.map +0 -1
- package/dist/chunk-QR4FU53I.js.map +0 -1
- package/dist/chunk-QVAA5KHK.js.map +0 -1
- package/dist/chunk-RVI6C2H5.js +0 -220
- package/dist/chunk-RVI6C2H5.js.map +0 -1
- package/dist/chunk-TEJAGQX2.js.map +0 -1
- package/dist/chunk-VNYWBHKR.js.map +0 -1
- package/dist/chunk-VUUN3KE4.js.map +0 -1
- package/dist/chunk-WG4MLJ6J.js.map +0 -1
- package/dist/chunk-XFQGI2E3.js.map +0 -1
- package/dist/chunk-Y3RX7LZT.js.map +0 -1
- package/dist/chunk-YRCEOQPX.js.map +0 -1
- package/dist/dev-server-CYRP6M73.js.map +0 -1
- package/dist/ignite-IO4LXVXJ.js +0 -35
- package/dist/issues-DMRQJH7E.js.map +0 -1
- package/dist/lint-BSWRMGPZ.js +0 -27
- package/dist/neon-helpers-HWIYRKOW.js +0 -11
- package/dist/open-2Y7GSUTJ.js.map +0 -1
- package/dist/plan-SWFPLNJE.js.map +0 -1
- package/dist/run-ST3FR75O.js.map +0 -1
- package/dist/summary-P2JCIIJO.js.map +0 -1
- package/dist/test-6JH4FE2X.js +0 -27
- /package/dist/{BranchNamingService-XBCO747L.js.map → BitBucketApiClient-J2ZSCS5N.js.map} +0 -0
- /package/dist/{ClaudeContextManager-SXDCWDJA.js.map → BitBucketVCSProvider-5X64IXXW.js.map} +0 -0
- /package/dist/{ClaudeService-6E6MCGJE.js.map → BranchNamingService-MEK2WZUD.js.map} +0 -0
- /package/dist/{GitHubService-2R5GQG4K.js.map → ClaudeContextManager-IENAE2CP.js.map} +0 -0
- /package/dist/{IssueTrackerFactory-XN6MQ4UN.js.map → ClaudeService-YIJCZUUB.js.map} +0 -0
- /package/dist/{MetadataManager-CMQQTFLQ.js.map → GitHubService-UTAYZXL3.js.map} +0 -0
- /package/dist/{ProjectCapabilityDetector-IC6NAFGY.js.map → IssueTrackerFactory-2OI7YIN6.js.map} +0 -0
- /package/dist/{LoomLauncher-5AZU2F5I.js.map → LoomLauncher-3TSFW7QP.js.map} +0 -0
- /package/dist/{PromptTemplateManager-T5VTLJP3.js.map → MetadataManager-V4LSJ2PB.js.map} +0 -0
- /package/dist/{SettingsManager-WQ5NSGAH.js.map → ProjectCapabilityDetector-I4J66WKF.js.map} +0 -0
- /package/dist/{SettingsMigrationManager-S6J7OHUH.js.map → PromptTemplateManager-I75WKXM4.js.map} +0 -0
- /package/dist/{claude-ONQTDWV3.js.map → SettingsManager-BMQCAXPP.js.map} +0 -0
- /package/dist/{color-VQD52LOI.js.map → SettingsMigrationManager-ZPARZ5KH.js.map} +0 -0
- /package/dist/{darwin-5BHWRJ7D.js.map → browser-VZY7F2DF.js.map} +0 -0
- /package/dist/{build-OLS6J5KZ.js.map → build-DMWSIME6.js.map} +0 -0
- /package/dist/{chunk-G2MNSPA4.js.map → chunk-772N5WCA.js.map} +0 -0
- /package/dist/{chunk-NOMQ5RFG.js.map → chunk-7UBEHQTP.js.map} +0 -0
- /package/dist/{chunk-7NFCGKZT.js.map → chunk-AQUSMNBF.js.map} +0 -0
- /package/dist/{chunk-IDCE26KD.js.map → chunk-AUYSAMXV.js.map} +0 -0
- /package/dist/{chunk-HLDY5S4C.js.map → chunk-BFF27W3S.js.map} +0 -0
- /package/dist/{chunk-K7R5QY6C.js.map → chunk-CE676WCN.js.map} +0 -0
- /package/dist/{chunk-LHDD4JHC.js.map → chunk-D4Q7T5KD.js.map} +0 -0
- /package/dist/{chunk-RBYTXYGD.js.map → chunk-D75KSI3V.js.map} +0 -0
- /package/dist/{chunk-SQYHPBFP.js.map → chunk-EGNUOALL.js.map} +0 -0
- /package/dist/{chunk-ZAXRQLK3.js.map → chunk-FTYWGQFM.js.map} +0 -0
- /package/dist/{chunk-LE2NOUTN.js.map → chunk-FV4KXBGO.js.map} +0 -0
- /package/dist/{chunk-QNHZM5ZV.js.map → chunk-HIGWKLQR.js.map} +0 -0
- /package/dist/{chunk-VMZG66UV.js.map → chunk-HKEXRZMU.js.map} +0 -0
- /package/dist/{chunk-V4STTBQD.js.map → chunk-IHSA7VGI.js.map} +0 -0
- /package/dist/{chunk-NCPZYQ4B.js.map → chunk-K3QGG4O2.js.map} +0 -0
- /package/dist/{chunk-NH3QZYE5.js.map → chunk-KV4NU3RP.js.map} +0 -0
- /package/dist/{chunk-NDSGJZI2.js.map → chunk-LOAYWTJJ.js.map} +0 -0
- /package/dist/{chunk-GMDSYLI6.js.map → chunk-MY2Q3FJ3.js.map} +0 -0
- /package/dist/{chunk-CV47VCMQ.js.map → chunk-NPVA65KS.js.map} +0 -0
- /package/dist/{chunk-7OCGBJLR.js.map → chunk-OIVFHJOA.js.map} +0 -0
- /package/dist/{chunk-NN5RYWXA.js.map → chunk-PH65MFQM.js.map} +0 -0
- /package/dist/{chunk-TZNNJLGT.js.map → chunk-PMB6TYV4.js.map} +0 -0
- /package/dist/{chunk-6YVJVUR4.js.map → chunk-QF2DROQR.js.map} +0 -0
- /package/dist/{chunk-XXFSOVL3.js.map → chunk-QFDM23CO.js.map} +0 -0
- /package/dist/{chunk-RMLADZRY.js.map → chunk-R7DGN73N.js.map} +0 -0
- /package/dist/{chunk-5PNZBH6V.js.map → chunk-V5IYLWRA.js.map} +0 -0
- /package/dist/{chunk-KQFIGI37.js.map → chunk-VA6CWUAE.js.map} +0 -0
- /package/dist/{chunk-YETJNRQM.js.map → chunk-WEBMMJKL.js.map} +0 -0
- /package/dist/{chunk-UDCI3QTS.js.map → chunk-ZM2AYHMO.js.map} +0 -0
- /package/dist/{git-BXUD6CL5.js.map → claude-ACL7G4CF.js.map} +0 -0
- /package/dist/{ignite-IO4LXVXJ.js.map → color-AC6F2QE7.js.map} +0 -0
- /package/dist/{commit-DC2Q5CDY.js.map → commit-RILBXFWO.js.map} +0 -0
- /package/dist/{compile-4NCQECKE.js.map → compile-QEL5724K.js.map} +0 -0
- /package/dist/{installation-detector-HF6QN7KP.js.map → darwin-5K3I4FTH.js.map} +0 -0
- /package/dist/{feedback-BMAZGKRW.js.map → feedback-RFWGB4I5.js.map} +0 -0
- /package/dist/{mcp/darwin-3JFFE3W2.js.map → git-I3PO6FY7.js.map} +0 -0
- /package/dist/{neon-helpers-HWIYRKOW.js.map → ignite-X2NNTNUN.js.map} +0 -0
- /package/dist/{init-CI43GJHV.js.map → init-LWU2M53W.js.map} +0 -0
- /package/dist/{install-deps-SRTM5U7D.js.map → install-deps-HXP2TM7G.js.map} +0 -0
- /package/dist/{prompt-7LZB4PAT.js.map → installation-detector-PYAZ2O6U.js.map} +0 -0
- /package/dist/{lint-BSWRMGPZ.js.map → lint-FDZC77GL.js.map} +0 -0
- /package/dist/{linux-RYLOP2LY.js.map → linux-WUGRYCJY.js.map} +0 -0
- /package/dist/{remote-MZTFHHTU.js.map → mcp/darwin-U25WIGH6.js.map} +0 -0
- /package/dist/mcp/{linux-JBVS4R3A.js.map → linux-5BXVBGSY.js.map} +0 -0
- /package/dist/mcp/{tmux-RYBLEHUZ.js.map → tmux-CU26ZTNM.js.map} +0 -0
- /package/dist/mcp/{wsl-4QZIQLLE.js.map → wsl-KI25UDOF.js.map} +0 -0
- /package/dist/{update-notifier-EYLAXZAA.js.map → neon-helpers-LCZAN4U4.js.map} +0 -0
- /package/dist/{projects-IUSUXD5D.js.map → projects-L5AHUBGA.js.map} +0 -0
- /package/dist/{rebase-S6OHAOOF.js.map → rebase-JA3RW2XO.js.map} +0 -0
- /package/dist/{recap-GGVCG5VH.js.map → recap-5TO42HN2.js.map} +0 -0
- /package/dist/{shell-W4SBQPTE.js.map → shell-GAB2FCXH.js.map} +0 -0
- /package/dist/{test-6JH4FE2X.js.map → test-6LFB5WOO.js.map} +0 -0
- /package/dist/{test-git-2KFFAQ6B.js.map → test-git-PYJOYSED.js.map} +0 -0
- /package/dist/{test-jira-FKDKG6CD.js.map → test-jira-SM7IU5HW.js.map} +0 -0
- /package/dist/{test-prefix-GP2DAX37.js.map → test-prefix-HIRZBXTM.js.map} +0 -0
- /package/dist/{test-tabs-YDWMWTVA.js.map → test-tabs-NGPTFD5T.js.map} +0 -0
- /package/dist/{test-webserver-QI3QQFZ3.js.map → test-webserver-43PVP2JL.js.map} +0 -0
- /package/dist/{tmux-7ZTA3BDI.js.map → tmux-6LRFH3DM.js.map} +0 -0
- /package/dist/{update-XLW7R7FL.js.map → update-AD3GE5C4.js.map} +0 -0
- /package/dist/{vscode-TOGE5N67.js.map → vscode-HXIXRZ3A.js.map} +0 -0
- /package/dist/{vscode-announcement-NIX7O2MG.js.map → vscode-announcement-AL3EHORH.js.map} +0 -0
- /package/dist/{wsl-Y4GUTOQ7.js.map → wsl-4VMVT2PO.js.map} +0 -0
package/dist/index.js
CHANGED
|
@@ -999,6 +999,8 @@ __export(SettingsManager_exports, {
|
|
|
999
999
|
CapabilitiesSettingsSchema: () => CapabilitiesSettingsSchema,
|
|
1000
1000
|
CapabilitiesSettingsSchemaNoDefaults: () => CapabilitiesSettingsSchemaNoDefaults,
|
|
1001
1001
|
DatabaseProvidersSettingsSchema: () => DatabaseProvidersSettingsSchema,
|
|
1002
|
+
DevServerSettingsSchema: () => DevServerSettingsSchema,
|
|
1003
|
+
DevServerSettingsSchemaNoDefaults: () => DevServerSettingsSchemaNoDefaults,
|
|
1002
1004
|
IloomSettingsSchema: () => IloomSettingsSchema,
|
|
1003
1005
|
IloomSettingsSchemaNoDefaults: () => IloomSettingsSchemaNoDefaults,
|
|
1004
1006
|
NeonSettingsSchema: () => NeonSettingsSchema,
|
|
@@ -1009,7 +1011,9 @@ __export(SettingsManager_exports, {
|
|
|
1009
1011
|
WorkflowPermissionSchema: () => WorkflowPermissionSchema,
|
|
1010
1012
|
WorkflowPermissionSchemaNoDefaults: () => WorkflowPermissionSchemaNoDefaults,
|
|
1011
1013
|
WorkflowsSettingsSchema: () => WorkflowsSettingsSchema,
|
|
1012
|
-
WorkflowsSettingsSchemaNoDefaults: () => WorkflowsSettingsSchemaNoDefaults
|
|
1014
|
+
WorkflowsSettingsSchemaNoDefaults: () => WorkflowsSettingsSchemaNoDefaults,
|
|
1015
|
+
mergeModeValues: () => mergeModeValues,
|
|
1016
|
+
redactSensitiveFields: () => redactSensitiveFields
|
|
1013
1017
|
});
|
|
1014
1018
|
import { readFile } from "fs/promises";
|
|
1015
1019
|
import path2 from "path";
|
|
@@ -1020,7 +1024,7 @@ function redactSensitiveFields(obj) {
|
|
|
1020
1024
|
if (obj === null || obj === void 0) return obj;
|
|
1021
1025
|
if (typeof obj !== "object") return obj;
|
|
1022
1026
|
if (Array.isArray(obj)) return obj.map(redactSensitiveFields);
|
|
1023
|
-
const sensitiveKeys = ["apitoken", "token", "secret", "password"];
|
|
1027
|
+
const sensitiveKeys = ["apitoken", "token", "secret", "password", "credential"];
|
|
1024
1028
|
const result = {};
|
|
1025
1029
|
for (const [key, value] of Object.entries(obj)) {
|
|
1026
1030
|
const lowerKey = key.toLowerCase();
|
|
@@ -1034,11 +1038,16 @@ function redactSensitiveFields(obj) {
|
|
|
1034
1038
|
}
|
|
1035
1039
|
return result;
|
|
1036
1040
|
}
|
|
1037
|
-
var BaseAgentSettingsSchema, AgentSettingsSchema, SpinAgentSettingsSchema, PlanCommandSettingsSchema, SummarySettingsSchema, WorkflowPermissionSchema, WorkflowPermissionSchemaNoDefaults, WorkflowsSettingsSchema, WorkflowsSettingsSchemaNoDefaults, CapabilitiesSettingsSchema, CapabilitiesSettingsSchemaNoDefaults, NeonSettingsSchema, DatabaseProvidersSettingsSchema, IloomSettingsSchema, IloomSettingsSchemaNoDefaults, SettingsManager;
|
|
1041
|
+
var mergeModeValues, mergeModeTransform, BaseAgentSettingsSchema, AgentSettingsSchema, SpinAgentSettingsSchema, PlanCommandSettingsSchema, SummarySettingsSchema, WorkflowPermissionSchema, WorkflowPermissionSchemaNoDefaults, WorkflowsSettingsSchema, WorkflowsSettingsSchemaNoDefaults, CapabilitiesSettingsSchema, CapabilitiesSettingsSchemaNoDefaults, DevServerSettingsSchema, DevServerSettingsSchemaNoDefaults, NeonSettingsSchema, DatabaseProvidersSettingsSchema, IloomSettingsSchema, IloomSettingsSchemaNoDefaults, SettingsManager;
|
|
1038
1042
|
var init_SettingsManager = __esm({
|
|
1039
1043
|
"src/lib/SettingsManager.ts"() {
|
|
1040
1044
|
"use strict";
|
|
1041
1045
|
init_logger();
|
|
1046
|
+
mergeModeValues = ["local", "pr", "draft-pr", "github-pr", "github-draft-pr", "bitbucket-pr"];
|
|
1047
|
+
mergeModeTransform = (val) => {
|
|
1048
|
+
const map = { "github-pr": "pr", "github-draft-pr": "draft-pr", "bitbucket-pr": "pr" };
|
|
1049
|
+
return map[val] ?? val;
|
|
1050
|
+
};
|
|
1042
1051
|
BaseAgentSettingsSchema = z.object({
|
|
1043
1052
|
model: z.enum(["sonnet", "opus", "haiku"]).optional().describe("Claude model shorthand: sonnet, opus, or haiku"),
|
|
1044
1053
|
swarmModel: z.enum(["sonnet", "opus", "haiku"]).optional().describe("Model to use for this agent in swarm mode. Overrides the base model when running inside swarm workers."),
|
|
@@ -1050,9 +1059,7 @@ var init_SettingsManager = __esm({
|
|
|
1050
1059
|
review: z.boolean().optional().describe("Whether artifacts from this agent should be reviewed before posting (defaults to false)"),
|
|
1051
1060
|
swarmReview: z.boolean().optional().describe("Whether artifacts from this agent should be reviewed in swarm mode. Defaults to false if not set (review is off in swarm mode for speed and cost unless explicitly enabled).")
|
|
1052
1061
|
});
|
|
1053
|
-
AgentSettingsSchema = BaseAgentSettingsSchema
|
|
1054
|
-
subAgentTimeout: z.number().min(1, "Sub-agent timeout must be at least 1 minute").max(120, "Sub-agent timeout cannot exceed 120 minutes").default(10).describe("Timeout in minutes for sub-agent claude -p invocations in swarm mode. Applies to each phase agent (evaluator, analyzer, planner, implementer) when invoked via the Bash tool. Default: 10 minutes. Only meaningful under the iloom-swarm-worker agent entry.")
|
|
1055
|
-
});
|
|
1062
|
+
AgentSettingsSchema = BaseAgentSettingsSchema;
|
|
1056
1063
|
SpinAgentSettingsSchema = z.object({
|
|
1057
1064
|
model: z.enum(["sonnet", "opus", "haiku"]).default("opus").describe("Claude model shorthand for spin orchestrator"),
|
|
1058
1065
|
swarmModel: z.enum(["sonnet", "opus", "haiku"]).optional().describe("Model for the spin orchestrator when running in swarm mode. Overrides spin.model for swarm workflows."),
|
|
@@ -1061,7 +1068,8 @@ var init_SettingsManager = __esm({
|
|
|
1061
1068
|
PlanCommandSettingsSchema = z.object({
|
|
1062
1069
|
model: z.enum(["sonnet", "opus", "haiku"]).default("opus").describe("Claude model shorthand for plan command"),
|
|
1063
1070
|
planner: z.enum(["claude", "gemini", "codex"]).default("claude").describe("AI provider for creating the plan"),
|
|
1064
|
-
reviewer: z.enum(["claude", "gemini", "codex", "none"]).default("none").describe("AI provider for reviewing the plan (none to skip review)")
|
|
1071
|
+
reviewer: z.enum(["claude", "gemini", "codex", "none"]).default("none").describe("AI provider for reviewing the plan (none to skip review)"),
|
|
1072
|
+
waveVerification: z.boolean().default(true).describe("When enabled, the planner generates verification child issues between dependency waves to catch integration issues early.")
|
|
1065
1073
|
});
|
|
1066
1074
|
SummarySettingsSchema = z.object({
|
|
1067
1075
|
model: z.enum(["sonnet", "opus", "haiku"]).default("sonnet").describe("Claude model shorthand for session summary generation")
|
|
@@ -1096,7 +1104,12 @@ var init_SettingsManager = __esm({
|
|
|
1096
1104
|
}).optional();
|
|
1097
1105
|
CapabilitiesSettingsSchema = z.object({
|
|
1098
1106
|
web: z.object({
|
|
1099
|
-
basePort: z.number().min(1, "Base port must be >= 1").max(65535, "Base port must be <= 65535").optional().describe("Base port for web workspace port calculations (default: 3000)")
|
|
1107
|
+
basePort: z.number().min(1, "Base port must be >= 1").max(65535, "Base port must be <= 65535").optional().describe("Base port for web workspace port calculations (default: 3000)"),
|
|
1108
|
+
devServer: z.enum(["process", "docker"]).default("process").describe('Dev server mode: "process" runs natively, "docker" runs inside a Docker container with port mapping'),
|
|
1109
|
+
dockerFile: z.string().default("./Dockerfile").describe('Path to Dockerfile relative to worktree root (only used when devServer is "docker")'),
|
|
1110
|
+
containerPort: z.number().min(1, "Container port must be >= 1").max(65535, "Container port must be <= 65535").optional().describe("Port the app runs on inside the Docker container (auto-detected from EXPOSE directive if not set)"),
|
|
1111
|
+
dockerBuildArgs: z.record(z.string()).optional().describe('Build arguments to pass to docker build (e.g., {"NODE_ENV": "development"})'),
|
|
1112
|
+
dockerRunArgs: z.array(z.string()).optional().describe('Additional arguments for docker run (e.g., ["-v", "./src:/app/src"] for volume mounts)')
|
|
1100
1113
|
}).optional().describe('Web dev server settings. To declare a project as a web project, add "web" to the capabilities array in .iloom/package.iloom.json or .iloom/package.iloom.local.json.'),
|
|
1101
1114
|
database: z.object({
|
|
1102
1115
|
databaseUrlEnvVarName: z.string().min(1, "Database URL variable name cannot be empty").regex(/^[A-Z_][A-Z0-9_]*$/, "Must be valid env var name (uppercase, underscores)").optional().default("DATABASE_URL").describe("Name of environment variable for database connection URL")
|
|
@@ -1104,12 +1117,56 @@ var init_SettingsManager = __esm({
|
|
|
1104
1117
|
}).optional();
|
|
1105
1118
|
CapabilitiesSettingsSchemaNoDefaults = z.object({
|
|
1106
1119
|
web: z.object({
|
|
1107
|
-
basePort: z.number().min(1, "Base port must be >= 1").max(65535, "Base port must be <= 65535").optional().describe("Base port for web workspace port calculations (default: 3000)")
|
|
1120
|
+
basePort: z.number().min(1, "Base port must be >= 1").max(65535, "Base port must be <= 65535").optional().describe("Base port for web workspace port calculations (default: 3000)"),
|
|
1121
|
+
devServer: z.enum(["process", "docker"]).optional().describe('Dev server mode: "process" runs natively, "docker" runs inside a Docker container with port mapping'),
|
|
1122
|
+
dockerFile: z.string().optional().describe('Path to Dockerfile relative to worktree root (only used when devServer is "docker")'),
|
|
1123
|
+
containerPort: z.number().min(1, "Container port must be >= 1").max(65535, "Container port must be <= 65535").optional().describe("Port the app runs on inside the Docker container (auto-detected from EXPOSE directive if not set)"),
|
|
1124
|
+
dockerBuildArgs: z.record(z.string()).optional().describe('Build arguments to pass to docker build (e.g., {"NODE_ENV": "development"})'),
|
|
1125
|
+
dockerRunArgs: z.array(z.string()).optional().describe('Additional arguments for docker run (e.g., ["-v", "./src:/app/src"] for volume mounts)')
|
|
1108
1126
|
}).optional().describe('Web dev server settings. To declare a project as a web project, add "web" to the capabilities array in .iloom/package.iloom.json or .iloom/package.iloom.local.json.'),
|
|
1109
1127
|
database: z.object({
|
|
1110
1128
|
databaseUrlEnvVarName: z.string().min(1, "Database URL variable name cannot be empty").regex(/^[A-Z_][A-Z0-9_]*$/, "Must be valid env var name (uppercase, underscores)").optional().describe("Name of environment variable for database connection URL")
|
|
1111
1129
|
}).optional()
|
|
1112
1130
|
}).optional();
|
|
1131
|
+
DevServerSettingsSchema = z.object({
|
|
1132
|
+
mode: z.enum(["docker"]).default("docker").describe('Dev server mode. Currently only "docker" is supported.'),
|
|
1133
|
+
docker: z.object({
|
|
1134
|
+
dockerFile: z.string().default("./Dockerfile").refine(
|
|
1135
|
+
(val) => {
|
|
1136
|
+
if (path2.isAbsolute(val)) return false;
|
|
1137
|
+
const normalized = path2.normalize(val);
|
|
1138
|
+
if (normalized.startsWith("..")) return false;
|
|
1139
|
+
return true;
|
|
1140
|
+
},
|
|
1141
|
+
{
|
|
1142
|
+
message: 'dockerFile must be a relative path that does not traverse outside the project root (no leading "/" and no "../" escaping)'
|
|
1143
|
+
}
|
|
1144
|
+
).describe("Path to Dockerfile relative to worktree root"),
|
|
1145
|
+
containerPort: z.number().min(1, "Container port must be >= 1").max(65535, "Container port must be <= 65535").optional().describe("Port the app runs on inside the Docker container (auto-detected from EXPOSE directive if not set)"),
|
|
1146
|
+
buildArgs: z.record(z.string(), z.string()).optional().describe("Build arguments to pass to docker build"),
|
|
1147
|
+
runArgs: z.array(z.string()).optional().describe("Additional arguments for docker run")
|
|
1148
|
+
}).optional()
|
|
1149
|
+
});
|
|
1150
|
+
DevServerSettingsSchemaNoDefaults = z.object({
|
|
1151
|
+
mode: z.enum(["docker"]).optional().describe('Dev server mode. Currently only "docker" is supported.'),
|
|
1152
|
+
docker: z.object({
|
|
1153
|
+
dockerFile: z.string().optional().refine(
|
|
1154
|
+
(val) => {
|
|
1155
|
+
if (val === void 0) return true;
|
|
1156
|
+
if (path2.isAbsolute(val)) return false;
|
|
1157
|
+
const normalized = path2.normalize(val);
|
|
1158
|
+
if (normalized.startsWith("..")) return false;
|
|
1159
|
+
return true;
|
|
1160
|
+
},
|
|
1161
|
+
{
|
|
1162
|
+
message: 'dockerFile must be a relative path that does not traverse outside the project root (no leading "/" and no "../" escaping)'
|
|
1163
|
+
}
|
|
1164
|
+
).describe("Path to Dockerfile relative to worktree root"),
|
|
1165
|
+
containerPort: z.number().min(1, "Container port must be >= 1").max(65535, "Container port must be <= 65535").optional().describe("Port the app runs on inside the Docker container (auto-detected from EXPOSE directive if not set)"),
|
|
1166
|
+
buildArgs: z.record(z.string(), z.string()).optional().describe("Build arguments to pass to docker build"),
|
|
1167
|
+
runArgs: z.array(z.string()).optional().describe("Additional arguments for docker run")
|
|
1168
|
+
}).optional()
|
|
1169
|
+
});
|
|
1113
1170
|
NeonSettingsSchema = z.object({
|
|
1114
1171
|
projectId: z.string().min(1).regex(/^[a-zA-Z0-9-]+$/, "Neon project ID must contain only letters, numbers, and hyphens").describe('Neon project ID found in your project URL (e.g., "fantastic-fox-3566354")'),
|
|
1115
1172
|
parentBranch: z.string().min(1).describe("Branch from which new database branches are created")
|
|
@@ -1161,6 +1218,7 @@ var init_SettingsManager = __esm({
|
|
|
1161
1218
|
"Session summary generation configuration. Model defaults to sonnet when not configured."
|
|
1162
1219
|
),
|
|
1163
1220
|
capabilities: CapabilitiesSettingsSchema.describe("Project capability configurations"),
|
|
1221
|
+
devServer: DevServerSettingsSchema.optional().describe("Docker-based dev server configuration"),
|
|
1164
1222
|
databaseProviders: DatabaseProvidersSettingsSchema.describe("Database provider configurations"),
|
|
1165
1223
|
issueManagement: z.object({
|
|
1166
1224
|
// SYNC: If this default changes, update displayDefaultsBox() in src/utils/first-run-setup.ts
|
|
@@ -1185,17 +1243,28 @@ var init_SettingsManager = __esm({
|
|
|
1185
1243
|
doneStatuses: z.array(z.string()).optional().default(["Done"]).describe('Status names to exclude from issue lists (e.g., ["Done", "Closed", "Verify"])')
|
|
1186
1244
|
}).optional()
|
|
1187
1245
|
}).optional().describe("Issue management configuration"),
|
|
1246
|
+
versionControl: z.object({
|
|
1247
|
+
provider: z.enum(["github", "bitbucket"]).optional().default("github").describe("Version control provider (github, bitbucket)"),
|
|
1248
|
+
bitbucket: z.object({
|
|
1249
|
+
username: z.string().min(1, "BitBucket username cannot be empty").describe("BitBucket username"),
|
|
1250
|
+
apiToken: z.string().optional().describe("BitBucket API token. SECURITY: Store in settings.local.json only, never commit to source control. Generate at: https://bitbucket.org/account/settings/app-passwords/ (Note: App passwords deprecated Sep 2025, use API tokens)"),
|
|
1251
|
+
workspace: z.string().optional().describe("BitBucket workspace (optional, auto-detected from git remote if not provided)"),
|
|
1252
|
+
repoSlug: z.string().optional().describe("BitBucket repository slug (optional, auto-detected from git remote if not provided)"),
|
|
1253
|
+
reviewers: z.array(z.string().describe("Reviewer username")).optional().describe("List of usernames to add as PR reviewers. Usernames are resolved to Bitbucket account IDs at PR creation time.")
|
|
1254
|
+
}).optional()
|
|
1255
|
+
}).optional().describe("Version control provider configuration"),
|
|
1188
1256
|
mergeBehavior: z.object({
|
|
1189
1257
|
// SYNC: If this default changes, update displayDefaultsBox() in src/utils/first-run-setup.ts
|
|
1190
|
-
mode: z.enum(
|
|
1258
|
+
mode: z.enum(mergeModeValues).default("local").transform(mergeModeTransform),
|
|
1191
1259
|
remote: z.string().optional(),
|
|
1192
1260
|
autoCommitPush: z.boolean().optional().describe(
|
|
1193
|
-
"Auto-commit and push after code review in draft PR mode. Defaults to true when mode is
|
|
1261
|
+
"Auto-commit and push after code review in draft PR mode. Defaults to true when mode is draft-pr."
|
|
1194
1262
|
),
|
|
1263
|
+
prTitlePrefix: z.boolean().default(false).optional().describe('Prefix PR titles with the issue number (e.g., "QLH-123: Title"). Default: false'),
|
|
1195
1264
|
openBrowserOnFinish: z.boolean().default(true).describe(
|
|
1196
|
-
"Open the PR in the default browser after finishing in
|
|
1265
|
+
"Open the PR in the default browser after finishing in pr or draft-pr mode. Use --no-browser flag to override."
|
|
1197
1266
|
)
|
|
1198
|
-
}).optional().describe("Merge behavior configuration: local (merge locally),
|
|
1267
|
+
}).optional().describe("Merge behavior configuration: local (merge locally), pr (create PR), or draft-pr (create draft PR at start, mark ready on finish)"),
|
|
1199
1268
|
ide: z.object({
|
|
1200
1269
|
// SYNC: If this default changes, update displayDefaultsBox() in src/utils/first-run-setup.ts
|
|
1201
1270
|
type: z.enum(["vscode", "cursor", "webstorm", "sublime", "intellij", "windsurf", "antigravity"]).default("vscode").describe(
|
|
@@ -1257,12 +1326,14 @@ var init_SettingsManager = __esm({
|
|
|
1257
1326
|
plan: z.object({
|
|
1258
1327
|
model: z.enum(["sonnet", "opus", "haiku"]).optional(),
|
|
1259
1328
|
planner: z.enum(["claude", "gemini", "codex"]).optional(),
|
|
1260
|
-
reviewer: z.enum(["claude", "gemini", "codex", "none"]).optional()
|
|
1329
|
+
reviewer: z.enum(["claude", "gemini", "codex", "none"]).optional(),
|
|
1330
|
+
waveVerification: z.boolean().optional()
|
|
1261
1331
|
}).optional().describe("Plan command configuration"),
|
|
1262
1332
|
summary: z.object({
|
|
1263
1333
|
model: z.enum(["sonnet", "opus", "haiku"]).optional()
|
|
1264
1334
|
}).optional().describe("Session summary generation configuration"),
|
|
1265
1335
|
capabilities: CapabilitiesSettingsSchemaNoDefaults.describe("Project capability configurations"),
|
|
1336
|
+
devServer: DevServerSettingsSchemaNoDefaults.optional().describe("Docker-based dev server configuration"),
|
|
1266
1337
|
databaseProviders: DatabaseProvidersSettingsSchema.describe("Database provider configurations"),
|
|
1267
1338
|
issueManagement: z.object({
|
|
1268
1339
|
provider: z.enum(["github", "linear", "jira"]).optional().describe("Issue tracker provider (github, linear, jira)"),
|
|
@@ -1286,16 +1357,27 @@ var init_SettingsManager = __esm({
|
|
|
1286
1357
|
doneStatuses: z.array(z.string()).optional().default(["Done"]).describe('Status names to exclude from issue lists (e.g., ["Done", "Closed", "Verify"])')
|
|
1287
1358
|
}).optional()
|
|
1288
1359
|
}).optional().describe("Issue management configuration"),
|
|
1360
|
+
versionControl: z.object({
|
|
1361
|
+
provider: z.enum(["github", "bitbucket"]).optional().describe("Version control provider (github, bitbucket)"),
|
|
1362
|
+
bitbucket: z.object({
|
|
1363
|
+
username: z.string().min(1, "BitBucket username cannot be empty").describe("BitBucket username"),
|
|
1364
|
+
apiToken: z.string().optional().describe("BitBucket API token. SECURITY: Store in settings.local.json only, never commit to source control. Generate at: https://bitbucket.org/account/settings/app-passwords/ (Note: App passwords deprecated Sep 2025, use API tokens)"),
|
|
1365
|
+
workspace: z.string().optional().describe("BitBucket workspace (optional, auto-detected from git remote if not provided)"),
|
|
1366
|
+
repoSlug: z.string().optional().describe("BitBucket repository slug (optional, auto-detected from git remote if not provided)"),
|
|
1367
|
+
reviewers: z.array(z.string().describe("Reviewer username")).optional().describe("List of usernames to add as PR reviewers. Usernames are resolved to Bitbucket account IDs at PR creation time.")
|
|
1368
|
+
}).optional()
|
|
1369
|
+
}).optional().describe("Version control provider configuration"),
|
|
1289
1370
|
mergeBehavior: z.object({
|
|
1290
|
-
mode: z.enum(
|
|
1371
|
+
mode: z.enum(mergeModeValues).transform(mergeModeTransform).optional(),
|
|
1291
1372
|
remote: z.string().optional(),
|
|
1292
1373
|
autoCommitPush: z.boolean().optional().describe(
|
|
1293
|
-
"Auto-commit and push after code review in draft PR mode. Defaults to true when mode is
|
|
1374
|
+
"Auto-commit and push after code review in draft PR mode. Defaults to true when mode is draft-pr."
|
|
1294
1375
|
),
|
|
1376
|
+
prTitlePrefix: z.boolean().optional(),
|
|
1295
1377
|
openBrowserOnFinish: z.boolean().optional().describe(
|
|
1296
|
-
"Open the PR in the default browser after finishing in
|
|
1378
|
+
"Open the PR in the default browser after finishing in pr or draft-pr mode. Use --no-browser flag to override."
|
|
1297
1379
|
)
|
|
1298
|
-
}).optional().describe("Merge behavior configuration: local (merge locally),
|
|
1380
|
+
}).optional().describe("Merge behavior configuration: local (merge locally), pr (create PR), or draft-pr (create draft PR at start, mark ready on finish)"),
|
|
1299
1381
|
ide: z.object({
|
|
1300
1382
|
type: z.enum(["vscode", "cursor", "webstorm", "sublime", "intellij", "windsurf", "antigravity"]).optional().describe(
|
|
1301
1383
|
"IDE to launch when starting a loom. Options: vscode (Visual Studio Code), cursor (Cursor AI editor), webstorm (JetBrains WebStorm), sublime (Sublime Text), intellij (JetBrains IntelliJ IDEA), windsurf (Windsurf editor), antigravity (Antigravity IDE)."
|
|
@@ -1567,6 +1649,17 @@ ${errorMessages.join("\n")}`
|
|
|
1567
1649
|
var _a;
|
|
1568
1650
|
return ((_a = settings == null ? void 0 : settings.plan) == null ? void 0 : _a.reviewer) ?? "none";
|
|
1569
1651
|
}
|
|
1652
|
+
/**
|
|
1653
|
+
* Get the plan command waveVerification setting with default applied
|
|
1654
|
+
* Default is true (verification tasks are generated)
|
|
1655
|
+
*
|
|
1656
|
+
* @param settings - Pre-loaded settings object
|
|
1657
|
+
* @returns Whether wave verification is enabled
|
|
1658
|
+
*/
|
|
1659
|
+
getPlanWaveVerification(settings) {
|
|
1660
|
+
var _a;
|
|
1661
|
+
return ((_a = settings == null ? void 0 : settings.plan) == null ? void 0 : _a.waveVerification) !== false;
|
|
1662
|
+
}
|
|
1570
1663
|
/**
|
|
1571
1664
|
* Get the session summary model with default applied
|
|
1572
1665
|
* Default is defined in SummarySettingsSchema
|
|
@@ -1850,7 +1943,8 @@ var MetadataManager = class {
|
|
|
1850
1943
|
parentLoom: data.parentLoom ?? null,
|
|
1851
1944
|
childIssues: data.childIssues ?? [],
|
|
1852
1945
|
dependencyMap: data.dependencyMap ?? {},
|
|
1853
|
-
mcpConfigPath: data.mcpConfigPath ?? null
|
|
1946
|
+
mcpConfigPath: data.mcpConfigPath ?? null,
|
|
1947
|
+
swarmTeamName: data.swarmTeamName ?? null
|
|
1854
1948
|
};
|
|
1855
1949
|
}
|
|
1856
1950
|
/**
|
|
@@ -4710,7 +4804,7 @@ var JiraApiClient = class {
|
|
|
4710
4804
|
};
|
|
4711
4805
|
|
|
4712
4806
|
// src/lib/providers/jira/JiraIssueTracker.ts
|
|
4713
|
-
var JiraIssueTracker = class {
|
|
4807
|
+
var JiraIssueTracker = class _JiraIssueTracker {
|
|
4714
4808
|
constructor(config, options) {
|
|
4715
4809
|
this.providerName = "jira";
|
|
4716
4810
|
this.supportsPullRequests = false;
|
|
@@ -4722,6 +4816,36 @@ var JiraIssueTracker = class {
|
|
|
4722
4816
|
});
|
|
4723
4817
|
this.prompter = (options == null ? void 0 : options.prompter) ?? promptConfirmation;
|
|
4724
4818
|
}
|
|
4819
|
+
/**
|
|
4820
|
+
* Create a JiraIssueTracker from IloomSettings
|
|
4821
|
+
* Extracts and validates Jira config from settings
|
|
4822
|
+
*/
|
|
4823
|
+
static fromSettings(settings) {
|
|
4824
|
+
var _a;
|
|
4825
|
+
const jiraSettings = (_a = settings.issueManagement) == null ? void 0 : _a.jira;
|
|
4826
|
+
if (!(jiraSettings == null ? void 0 : jiraSettings.host)) {
|
|
4827
|
+
throw new Error("Jira host is required. Configure issueManagement.jira.host in .iloom/settings.json");
|
|
4828
|
+
}
|
|
4829
|
+
if (!(jiraSettings == null ? void 0 : jiraSettings.username)) {
|
|
4830
|
+
throw new Error("Jira username is required. Configure issueManagement.jira.username in .iloom/settings.json");
|
|
4831
|
+
}
|
|
4832
|
+
if (!(jiraSettings == null ? void 0 : jiraSettings.apiToken)) {
|
|
4833
|
+
throw new Error("Jira API token is required. Configure issueManagement.jira.apiToken in .iloom/settings.local.json");
|
|
4834
|
+
}
|
|
4835
|
+
if (!(jiraSettings == null ? void 0 : jiraSettings.projectKey)) {
|
|
4836
|
+
throw new Error("Jira project key is required. Configure issueManagement.jira.projectKey in .iloom/settings.json");
|
|
4837
|
+
}
|
|
4838
|
+
const config = {
|
|
4839
|
+
host: jiraSettings.host,
|
|
4840
|
+
username: jiraSettings.username,
|
|
4841
|
+
apiToken: jiraSettings.apiToken,
|
|
4842
|
+
projectKey: jiraSettings.projectKey
|
|
4843
|
+
};
|
|
4844
|
+
if (jiraSettings.transitionMappings) {
|
|
4845
|
+
config.transitionMappings = jiraSettings.transitionMappings;
|
|
4846
|
+
}
|
|
4847
|
+
return new _JiraIssueTracker(config);
|
|
4848
|
+
}
|
|
4725
4849
|
/**
|
|
4726
4850
|
* Normalize identifier to canonical uppercase form
|
|
4727
4851
|
* Jira issue keys are case-sensitive in the API (must be uppercase)
|
|
@@ -5030,6 +5154,7 @@ ${entity.assignees.length > 0 ? `Assignees: ${entity.assignees.join(", ")}` : ""
|
|
|
5030
5154
|
};
|
|
5031
5155
|
|
|
5032
5156
|
// src/lib/IssueTrackerFactory.ts
|
|
5157
|
+
init_SettingsManager();
|
|
5033
5158
|
var IssueTrackerFactory = class {
|
|
5034
5159
|
/**
|
|
5035
5160
|
* Create an IssueTracker instance based on settings configuration
|
|
@@ -5040,10 +5165,10 @@ var IssueTrackerFactory = class {
|
|
|
5040
5165
|
* @throws Error if provider type is not supported
|
|
5041
5166
|
*/
|
|
5042
5167
|
static create(settings) {
|
|
5043
|
-
var _a, _b
|
|
5168
|
+
var _a, _b;
|
|
5044
5169
|
const provider = ((_a = settings.issueManagement) == null ? void 0 : _a.provider) ?? "github";
|
|
5045
5170
|
getLogger().debug(`IssueTrackerFactory: Creating tracker for provider "${provider}"`);
|
|
5046
|
-
getLogger().debug(`IssueTrackerFactory: issueManagement settings:`, JSON.stringify(settings.issueManagement, null, 2));
|
|
5171
|
+
getLogger().debug(`IssueTrackerFactory: issueManagement settings:`, JSON.stringify(redactSensitiveFields(settings.issueManagement), null, 2));
|
|
5047
5172
|
switch (provider) {
|
|
5048
5173
|
case "github":
|
|
5049
5174
|
getLogger().debug("IssueTrackerFactory: Creating GitHubService");
|
|
@@ -5060,34 +5185,12 @@ var IssueTrackerFactory = class {
|
|
|
5060
5185
|
if (linearSettings == null ? void 0 : linearSettings.apiToken) {
|
|
5061
5186
|
linearConfig.apiToken = linearSettings.apiToken;
|
|
5062
5187
|
}
|
|
5063
|
-
getLogger().debug(`IssueTrackerFactory: Creating LinearService with config:`, JSON.stringify(linearConfig, null, 2));
|
|
5188
|
+
getLogger().debug(`IssueTrackerFactory: Creating LinearService with config:`, JSON.stringify(redactSensitiveFields(linearConfig), null, 2));
|
|
5064
5189
|
return new LinearService(linearConfig);
|
|
5065
5190
|
}
|
|
5066
5191
|
case "jira": {
|
|
5067
|
-
|
|
5068
|
-
|
|
5069
|
-
throw new Error("Jira host is required. Configure issueManagement.jira.host in .iloom/settings.json");
|
|
5070
|
-
}
|
|
5071
|
-
if (!(jiraSettings == null ? void 0 : jiraSettings.username)) {
|
|
5072
|
-
throw new Error("Jira username is required. Configure issueManagement.jira.username in .iloom/settings.json");
|
|
5073
|
-
}
|
|
5074
|
-
if (!(jiraSettings == null ? void 0 : jiraSettings.apiToken)) {
|
|
5075
|
-
throw new Error("Jira API token is required. Configure issueManagement.jira.apiToken in .iloom/settings.local.json");
|
|
5076
|
-
}
|
|
5077
|
-
if (!(jiraSettings == null ? void 0 : jiraSettings.projectKey)) {
|
|
5078
|
-
throw new Error("Jira project key is required. Configure issueManagement.jira.projectKey in .iloom/settings.json");
|
|
5079
|
-
}
|
|
5080
|
-
const jiraConfig = {
|
|
5081
|
-
host: jiraSettings.host,
|
|
5082
|
-
username: jiraSettings.username,
|
|
5083
|
-
apiToken: jiraSettings.apiToken,
|
|
5084
|
-
projectKey: jiraSettings.projectKey
|
|
5085
|
-
};
|
|
5086
|
-
if (jiraSettings.transitionMappings) {
|
|
5087
|
-
jiraConfig.transitionMappings = jiraSettings.transitionMappings;
|
|
5088
|
-
}
|
|
5089
|
-
getLogger().debug(`IssueTrackerFactory: Creating JiraIssueTracker for host: ${jiraSettings.host}`);
|
|
5090
|
-
return new JiraIssueTracker(jiraConfig);
|
|
5192
|
+
getLogger().debug(`IssueTrackerFactory: Creating JiraIssueTracker from settings`);
|
|
5193
|
+
return JiraIssueTracker.fromSettings(settings);
|
|
5091
5194
|
}
|
|
5092
5195
|
default:
|
|
5093
5196
|
throw new Error(`Unsupported issue tracker provider: ${provider}`);
|
|
@@ -5600,7 +5703,7 @@ function parseJsonStreamOutput(output) {
|
|
|
5600
5703
|
}
|
|
5601
5704
|
}
|
|
5602
5705
|
async function launchClaude(prompt, options = {}) {
|
|
5603
|
-
const { model, permissionMode, addDir, headless = false, appendSystemPrompt, mcpConfig, allowedTools, disallowedTools, agents, pluginDir, sessionId, noSessionPersistence, outputFormat, verbose, jsonMode, passthroughStdout, env: extraEnv, signal } = options;
|
|
5706
|
+
const { model, permissionMode, addDir, headless = false, appendSystemPrompt, appendSystemPromptFile, mcpConfig, allowedTools, disallowedTools, agents, pluginDir, sessionId, noSessionPersistence, outputFormat, verbose, jsonMode, passthroughStdout, env: extraEnv, signal } = options;
|
|
5604
5707
|
const log = getLogger();
|
|
5605
5708
|
const args = [];
|
|
5606
5709
|
if (headless) {
|
|
@@ -5624,6 +5727,9 @@ async function launchClaude(prompt, options = {}) {
|
|
|
5624
5727
|
if (appendSystemPrompt) {
|
|
5625
5728
|
args.push("--append-system-prompt", appendSystemPrompt);
|
|
5626
5729
|
}
|
|
5730
|
+
if (appendSystemPromptFile) {
|
|
5731
|
+
args.push("--append-system-prompt-file", appendSystemPromptFile);
|
|
5732
|
+
}
|
|
5627
5733
|
if (mcpConfig && mcpConfig.length > 0) {
|
|
5628
5734
|
for (const config of mcpConfig) {
|
|
5629
5735
|
args.push("--mcp-config", JSON.stringify(config));
|
|
@@ -5644,6 +5750,10 @@ async function launchClaude(prompt, options = {}) {
|
|
|
5644
5750
|
if (sessionId) {
|
|
5645
5751
|
args.push("--session-id", sessionId);
|
|
5646
5752
|
}
|
|
5753
|
+
const isDebugMode = logger.isDebugEnabled();
|
|
5754
|
+
if (isDebugMode) {
|
|
5755
|
+
args.push("--debug");
|
|
5756
|
+
}
|
|
5647
5757
|
if (noSessionPersistence && headless) {
|
|
5648
5758
|
args.push("--no-session-persistence");
|
|
5649
5759
|
}
|
|
@@ -5679,7 +5789,6 @@ async function launchClaude(prompt, options = {}) {
|
|
|
5679
5789
|
return;
|
|
5680
5790
|
}
|
|
5681
5791
|
if (headless) {
|
|
5682
|
-
const isDebugMode = logger.isDebugEnabled();
|
|
5683
5792
|
const execaOptions = {
|
|
5684
5793
|
input: prompt,
|
|
5685
5794
|
timeout: 0,
|
|
@@ -5813,14 +5922,14 @@ async function launchClaude(prompt, options = {}) {
|
|
|
5813
5922
|
resumeArgs.push("--resume", extractedSessionId);
|
|
5814
5923
|
try {
|
|
5815
5924
|
if (headless) {
|
|
5816
|
-
const
|
|
5925
|
+
const isDebugMode2 = logger.isDebugEnabled();
|
|
5817
5926
|
const execaOptions = {
|
|
5818
5927
|
input: prompt,
|
|
5819
5928
|
timeout: 0,
|
|
5820
5929
|
...addDir && { cwd: addDir },
|
|
5821
|
-
verbose:
|
|
5930
|
+
verbose: isDebugMode2,
|
|
5822
5931
|
env: claudeEnv,
|
|
5823
|
-
...
|
|
5932
|
+
...isDebugMode2 && { stdio: ["pipe", "pipe", "pipe"] }
|
|
5824
5933
|
};
|
|
5825
5934
|
const subprocess = execa8("claude", resumeArgs, execaOptions);
|
|
5826
5935
|
const isJsonStreamFormat = resumeArgs.includes("--output-format") && resumeArgs.includes("stream-json");
|
|
@@ -5835,7 +5944,7 @@ async function launchClaude(prompt, options = {}) {
|
|
|
5835
5944
|
if (jsonMode === "stream") {
|
|
5836
5945
|
process.stdout.write(text);
|
|
5837
5946
|
} else if (jsonMode === "json") {
|
|
5838
|
-
} else if (
|
|
5947
|
+
} else if (isDebugMode2) {
|
|
5839
5948
|
log.stdout.write(text);
|
|
5840
5949
|
} else {
|
|
5841
5950
|
if (isFirstProgress) {
|
|
@@ -5850,12 +5959,12 @@ async function launchClaude(prompt, options = {}) {
|
|
|
5850
5959
|
const result = await subprocess;
|
|
5851
5960
|
if (isStreaming) {
|
|
5852
5961
|
const rawOutput = outputBuffer.trim();
|
|
5853
|
-
if (!
|
|
5962
|
+
if (!isDebugMode2 && !jsonMode) {
|
|
5854
5963
|
log.stdout.write("\n");
|
|
5855
5964
|
}
|
|
5856
5965
|
return isJsonStreamFormat ? parseJsonStreamOutput(rawOutput) : rawOutput;
|
|
5857
5966
|
} else {
|
|
5858
|
-
if (
|
|
5967
|
+
if (isDebugMode2) {
|
|
5859
5968
|
log.stdout.write(result.stdout);
|
|
5860
5969
|
if (result.stdout && !result.stdout.endsWith("\n")) {
|
|
5861
5970
|
log.stdout.write("\n");
|