@iloom/cli 0.13.0-beta.0 → 0.13.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 +3 -18
- package/dist/{ClaudeContextManager-RRGREEZQ.js → ClaudeContextManager-ZH6LEA5I.js} +5 -5
- package/dist/{ClaudeService-LEPW6QAC.js → ClaudeService-YR66WXZN.js} +4 -4
- package/dist/{IssueTrackerFactory-KE2BDCLC.js → IssueTrackerFactory-O2ZBA666.js} +3 -3
- package/dist/{LoomLauncher-GKQMR5E6.js → LoomLauncher-V54ENBEF.js} +5 -5
- package/dist/{MetadataManager-V4LSJ2PB.js → MetadataManager-HHE6LQF2.js} +2 -2
- package/dist/{PromptTemplateManager-I75WKXM4.js → PromptTemplateManager-4RFELNYY.js} +2 -2
- package/dist/README.md +3 -18
- package/dist/{SettingsManager-KQU7OX7G.js → SettingsManager-SLSYEYDZ.js} +4 -4
- package/dist/agents/iloom-artifact-reviewer.md +1 -0
- package/dist/agents/iloom-code-reviewer.md +21 -0
- package/dist/agents/iloom-issue-analyze-and-plan.md +30 -12
- package/dist/agents/iloom-issue-analyzer.md +32 -7
- package/dist/agents/iloom-issue-complexity-evaluator.md +32 -12
- package/dist/agents/iloom-issue-implementer.md +31 -12
- package/dist/agents/iloom-issue-planner.md +30 -12
- package/dist/agents/iloom-wave-verifier.md +177 -4
- package/dist/{build-V3KADFMO.js → build-ZTGWDHWU.js} +8 -8
- package/dist/{chunk-VVQQIG64.js → chunk-55NTREIU.js} +33 -30
- package/dist/chunk-55NTREIU.js.map +1 -0
- package/dist/{chunk-AYLC633W.js → chunk-7TN5VW4I.js} +65 -7
- package/dist/chunk-7TN5VW4I.js.map +1 -0
- package/dist/{chunk-RFCAPHL5.js → chunk-C2BVNJW5.js} +2 -2
- package/dist/{chunk-3XEXT35Z.js → chunk-E5OM25WK.js} +3 -3
- package/dist/{chunk-Q7VXHJP6.js → chunk-EHAITKLS.js} +10 -6
- package/dist/{chunk-Q7VXHJP6.js.map → chunk-EHAITKLS.js.map} +1 -1
- package/dist/{chunk-ZUIFO7B4.js → chunk-ERMEYFT6.js} +7 -2
- package/dist/chunk-ERMEYFT6.js.map +1 -0
- package/dist/{chunk-WGUGB54H.js → chunk-F5NKWLMQ.js} +21 -24
- package/dist/chunk-F5NKWLMQ.js.map +1 -0
- package/dist/{chunk-TN2D2RX7.js → chunk-G2DGDCDP.js} +33 -224
- package/dist/chunk-G2DGDCDP.js.map +1 -0
- package/dist/{chunk-NUUFP53X.js → chunk-GPBX2BY2.js} +2 -2
- package/dist/{chunk-SN4S5CWL.js → chunk-GQDVH6FA.js} +2 -2
- package/dist/{chunk-YUOVWWJX.js → chunk-HKEXRZMU.js} +5 -310
- package/dist/chunk-HKEXRZMU.js.map +1 -0
- package/dist/{chunk-TAEVA4QR.js → chunk-HWDQRW3O.js} +3 -3
- package/dist/chunk-HWDQRW3O.js.map +1 -0
- package/dist/{chunk-KQSV7FOG.js → chunk-J5JOJPK3.js} +2 -2
- package/dist/{chunk-PD75ZCFT.js → chunk-KCAWSZUO.js} +18 -17
- package/dist/chunk-KCAWSZUO.js.map +1 -0
- package/dist/{chunk-QNPJXO53.js → chunk-KGOBNC5A.js} +4 -4
- package/dist/{chunk-H3T3EPF3.js → chunk-LNY2Y32V.js} +2 -2
- package/dist/{chunk-7RCUWU3I.js → chunk-MRPIDNZU.js} +1 -1
- package/dist/chunk-MRPIDNZU.js.map +1 -0
- package/dist/{chunk-VIQOQ463.js → chunk-OLJ54WGW.js} +15 -10
- package/dist/chunk-OLJ54WGW.js.map +1 -0
- package/dist/{chunk-QQULYI2S.js → chunk-P5MNWBLH.js} +108 -47
- package/dist/chunk-P5MNWBLH.js.map +1 -0
- package/dist/{chunk-4VQXMEEP.js → chunk-PPQ5LV7U.js} +3 -3
- package/dist/{chunk-4VQXMEEP.js.map → chunk-PPQ5LV7U.js.map} +1 -1
- package/dist/{chunk-QED2WB2D.js → chunk-PS6K2AOV.js} +5 -5
- package/dist/{chunk-JD3K2344.js → chunk-QNRXRSKC.js} +36 -3
- package/dist/chunk-QNRXRSKC.js.map +1 -0
- package/dist/{chunk-SA446KA2.js → chunk-T4KFKKEB.js} +7 -7
- package/dist/{chunk-XCP2WDYA.js → chunk-T4NESGYB.js} +3 -3
- package/dist/{chunk-QXGM32TO.js → chunk-TJDKGKQV.js} +2 -2
- package/dist/{chunk-X5DRLONY.js → chunk-UXBVDD7U.js} +6 -6
- package/dist/{chunk-JDN4SPV3.js → chunk-WYDLOQYO.js} +2 -2
- package/dist/{chunk-4JZEQBWV.js → chunk-XIVLGWUX.js} +3 -1
- package/dist/chunk-XIVLGWUX.js.map +1 -0
- package/dist/{chunk-NTDY5AMO.js → chunk-ZEFTWM5Z.js} +2 -2
- package/dist/{cleanup-RJKLI47I.js → cleanup-BCVY7PEF.js} +22 -22
- package/dist/cleanup-BCVY7PEF.js.map +1 -0
- package/dist/cli.js +136 -105
- package/dist/cli.js.map +1 -1
- package/dist/{commit-SUHRUMDE.js → commit-L5JNBU4U.js} +8 -8
- package/dist/{compile-2MD346PO.js → compile-GPJOHXH4.js} +8 -8
- package/dist/{contribute-P4BMRY7C.js → contribute-QEGCI4PS.js} +4 -4
- package/dist/{dev-server-ZNTLWOL5.js → dev-server-UQKNKU2S.js} +249 -31
- package/dist/dev-server-UQKNKU2S.js.map +1 -0
- package/dist/{feedback-Q6WG2WX4.js → feedback-2LWXKLQZ.js} +4 -4
- package/dist/{git-TX2IEMB3.js → git-IS7AV3ED.js} +4 -4
- package/dist/hooks/iloom-hook.js +40 -2
- package/dist/{ignite-P644W2PK.js → ignite-VQDJQ37S.js} +12 -14
- package/dist/index.d.ts +73 -75
- package/dist/index.js +32 -32
- package/dist/index.js.map +1 -1
- package/dist/{init-5HFY7JG6.js → init-7SDJUAEZ.js} +8 -8
- package/dist/{install-deps-J4ALTM27.js → install-deps-NGSFDNUW.js} +8 -8
- package/dist/{issues-LZMIF22U.js → issues-4HQKEUP7.js} +5 -5
- package/dist/{lint-XIXKU22H.js → lint-C5FOVRXY.js} +8 -8
- package/dist/mcp/issue-management-server.js +19 -22
- package/dist/mcp/issue-management-server.js.map +1 -1
- package/dist/neon-helpers-LCZAN4U4.js +11 -0
- package/dist/{open-KUO35JIJ.js → open-2HL6GV5F.js} +19 -15
- package/dist/open-2HL6GV5F.js.map +1 -0
- package/dist/{plan-7CF56OIR.js → plan-GC3HF73T.js} +86 -66
- package/dist/plan-GC3HF73T.js.map +1 -0
- package/dist/{projects-L5AHUBGA.js → projects-3F6T3KZL.js} +2 -2
- package/dist/prompts/init-prompt.txt +40 -36
- package/dist/prompts/issue-prompt.txt +4 -1
- package/dist/prompts/plan-prompt.txt +97 -16
- package/dist/prompts/regular-prompt.txt +1 -1
- package/dist/prompts/swarm-orchestrator-prompt.txt +25 -12
- package/dist/{rebase-MAMWPA2L.js → rebase-MLIN572O.js} +7 -7
- package/dist/{recap-IDBO3KM5.js → recap-CKGKFDJL.js} +7 -7
- package/dist/{run-RGZHCQ6M.js → run-CUNRQNZS.js} +19 -15
- package/dist/run-CUNRQNZS.js.map +1 -0
- package/dist/schema/settings.schema.json +35 -31
- package/dist/{shell-7ADCDFIV.js → shell-M2YYPNGV.js} +6 -6
- package/dist/{summary-7J2HORFD.js → summary-XR4CBJEG.js} +9 -9
- package/dist/{test-SRB7EWU6.js → test-ESDAHEVE.js} +8 -8
- package/dist/{test-git-G7ATVIXG.js → test-git-KWPLHYSI.js} +4 -4
- package/dist/{test-jira-Q2HPA522.js → test-jira-6NK7UHSV.js} +3 -3
- package/dist/{test-prefix-JMDGXR5A.js → test-prefix-VVODGHXP.js} +4 -4
- package/dist/{test-webserver-GZFVXBGD.js → test-webserver-AHXKC6H4.js} +6 -6
- package/dist/{vscode-3I7ISHUU.js → vscode-OY7HOVRO.js} +6 -6
- package/package.json +1 -1
- package/dist/chunk-4JZEQBWV.js.map +0 -1
- package/dist/chunk-7RCUWU3I.js.map +0 -1
- package/dist/chunk-AYLC633W.js.map +0 -1
- package/dist/chunk-JD3K2344.js.map +0 -1
- package/dist/chunk-PD75ZCFT.js.map +0 -1
- package/dist/chunk-QQULYI2S.js.map +0 -1
- package/dist/chunk-TAEVA4QR.js.map +0 -1
- package/dist/chunk-TN2D2RX7.js.map +0 -1
- package/dist/chunk-VIQOQ463.js.map +0 -1
- package/dist/chunk-VVQQIG64.js.map +0 -1
- package/dist/chunk-WGUGB54H.js.map +0 -1
- package/dist/chunk-YUOVWWJX.js.map +0 -1
- package/dist/chunk-ZUIFO7B4.js.map +0 -1
- package/dist/cleanup-RJKLI47I.js.map +0 -1
- package/dist/database-helpers-PRDFNDRO.js +0 -11
- package/dist/dev-server-ZNTLWOL5.js.map +0 -1
- package/dist/open-KUO35JIJ.js.map +0 -1
- package/dist/plan-7CF56OIR.js.map +0 -1
- package/dist/run-RGZHCQ6M.js.map +0 -1
- /package/dist/{ClaudeContextManager-RRGREEZQ.js.map → ClaudeContextManager-ZH6LEA5I.js.map} +0 -0
- /package/dist/{ClaudeService-LEPW6QAC.js.map → ClaudeService-YR66WXZN.js.map} +0 -0
- /package/dist/{IssueTrackerFactory-KE2BDCLC.js.map → IssueTrackerFactory-O2ZBA666.js.map} +0 -0
- /package/dist/{LoomLauncher-GKQMR5E6.js.map → LoomLauncher-V54ENBEF.js.map} +0 -0
- /package/dist/{MetadataManager-V4LSJ2PB.js.map → MetadataManager-HHE6LQF2.js.map} +0 -0
- /package/dist/{PromptTemplateManager-I75WKXM4.js.map → PromptTemplateManager-4RFELNYY.js.map} +0 -0
- /package/dist/{SettingsManager-KQU7OX7G.js.map → SettingsManager-SLSYEYDZ.js.map} +0 -0
- /package/dist/{build-V3KADFMO.js.map → build-ZTGWDHWU.js.map} +0 -0
- /package/dist/{chunk-RFCAPHL5.js.map → chunk-C2BVNJW5.js.map} +0 -0
- /package/dist/{chunk-3XEXT35Z.js.map → chunk-E5OM25WK.js.map} +0 -0
- /package/dist/{chunk-NUUFP53X.js.map → chunk-GPBX2BY2.js.map} +0 -0
- /package/dist/{chunk-SN4S5CWL.js.map → chunk-GQDVH6FA.js.map} +0 -0
- /package/dist/{chunk-KQSV7FOG.js.map → chunk-J5JOJPK3.js.map} +0 -0
- /package/dist/{chunk-QNPJXO53.js.map → chunk-KGOBNC5A.js.map} +0 -0
- /package/dist/{chunk-H3T3EPF3.js.map → chunk-LNY2Y32V.js.map} +0 -0
- /package/dist/{chunk-QED2WB2D.js.map → chunk-PS6K2AOV.js.map} +0 -0
- /package/dist/{chunk-SA446KA2.js.map → chunk-T4KFKKEB.js.map} +0 -0
- /package/dist/{chunk-XCP2WDYA.js.map → chunk-T4NESGYB.js.map} +0 -0
- /package/dist/{chunk-QXGM32TO.js.map → chunk-TJDKGKQV.js.map} +0 -0
- /package/dist/{chunk-X5DRLONY.js.map → chunk-UXBVDD7U.js.map} +0 -0
- /package/dist/{chunk-JDN4SPV3.js.map → chunk-WYDLOQYO.js.map} +0 -0
- /package/dist/{chunk-NTDY5AMO.js.map → chunk-ZEFTWM5Z.js.map} +0 -0
- /package/dist/{commit-SUHRUMDE.js.map → commit-L5JNBU4U.js.map} +0 -0
- /package/dist/{compile-2MD346PO.js.map → compile-GPJOHXH4.js.map} +0 -0
- /package/dist/{contribute-P4BMRY7C.js.map → contribute-QEGCI4PS.js.map} +0 -0
- /package/dist/{feedback-Q6WG2WX4.js.map → feedback-2LWXKLQZ.js.map} +0 -0
- /package/dist/{database-helpers-PRDFNDRO.js.map → git-IS7AV3ED.js.map} +0 -0
- /package/dist/{git-TX2IEMB3.js.map → ignite-VQDJQ37S.js.map} +0 -0
- /package/dist/{init-5HFY7JG6.js.map → init-7SDJUAEZ.js.map} +0 -0
- /package/dist/{install-deps-J4ALTM27.js.map → install-deps-NGSFDNUW.js.map} +0 -0
- /package/dist/{issues-LZMIF22U.js.map → issues-4HQKEUP7.js.map} +0 -0
- /package/dist/{lint-XIXKU22H.js.map → lint-C5FOVRXY.js.map} +0 -0
- /package/dist/{ignite-P644W2PK.js.map → neon-helpers-LCZAN4U4.js.map} +0 -0
- /package/dist/{projects-L5AHUBGA.js.map → projects-3F6T3KZL.js.map} +0 -0
- /package/dist/{rebase-MAMWPA2L.js.map → rebase-MLIN572O.js.map} +0 -0
- /package/dist/{recap-IDBO3KM5.js.map → recap-CKGKFDJL.js.map} +0 -0
- /package/dist/{shell-7ADCDFIV.js.map → shell-M2YYPNGV.js.map} +0 -0
- /package/dist/{summary-7J2HORFD.js.map → summary-XR4CBJEG.js.map} +0 -0
- /package/dist/{test-SRB7EWU6.js.map → test-ESDAHEVE.js.map} +0 -0
- /package/dist/{test-git-G7ATVIXG.js.map → test-git-KWPLHYSI.js.map} +0 -0
- /package/dist/{test-jira-Q2HPA522.js.map → test-jira-6NK7UHSV.js.map} +0 -0
- /package/dist/{test-prefix-JMDGXR5A.js.map → test-prefix-VVODGHXP.js.map} +0 -0
- /package/dist/{test-webserver-GZFVXBGD.js.map → test-webserver-AHXKC6H4.js.map} +0 -0
- /package/dist/{vscode-3I7ISHUU.js.map → vscode-OY7HOVRO.js.map} +0 -0
package/dist/cli.js
CHANGED
|
@@ -1,49 +1,49 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
SessionSummaryService
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-UXBVDD7U.js";
|
|
5
5
|
import "./chunk-NXMDEL3F.js";
|
|
6
6
|
import {
|
|
7
7
|
ResourceCleanup
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-T4KFKKEB.js";
|
|
9
|
+
import "./chunk-E5OM25WK.js";
|
|
10
10
|
import {
|
|
11
11
|
StartCommand,
|
|
12
12
|
launchFirstRunSetup,
|
|
13
13
|
needsFirstRunSetup
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-KCAWSZUO.js";
|
|
15
15
|
import {
|
|
16
16
|
CLIIsolationManager,
|
|
17
17
|
DatabaseManager,
|
|
18
18
|
EnvironmentManager,
|
|
19
19
|
LoomManager
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-55NTREIU.js";
|
|
21
21
|
import {
|
|
22
22
|
PRManager,
|
|
23
23
|
VCSProviderFactory
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-J5JOJPK3.js";
|
|
25
25
|
import {
|
|
26
26
|
BuildRunner,
|
|
27
27
|
MergeManager
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-EHAITKLS.js";
|
|
29
29
|
import {
|
|
30
30
|
assembleChildrenData
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-C2BVNJW5.js";
|
|
32
32
|
import "./chunk-7UBEHQTP.js";
|
|
33
|
-
import "./chunk-
|
|
33
|
+
import "./chunk-7TN5VW4I.js";
|
|
34
34
|
import {
|
|
35
35
|
ProcessManager
|
|
36
|
-
} from "./chunk-
|
|
37
|
-
import "./chunk-
|
|
36
|
+
} from "./chunk-LNY2Y32V.js";
|
|
37
|
+
import "./chunk-ERMEYFT6.js";
|
|
38
38
|
import {
|
|
39
39
|
IdentifierParser
|
|
40
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-GQDVH6FA.js";
|
|
41
41
|
import {
|
|
42
|
-
|
|
43
|
-
} from "./chunk-
|
|
42
|
+
createNeonProviderFromSettings
|
|
43
|
+
} from "./chunk-HKEXRZMU.js";
|
|
44
44
|
import {
|
|
45
45
|
ShellCompletion
|
|
46
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-TJDKGKQV.js";
|
|
47
47
|
import {
|
|
48
48
|
TelemetryManager,
|
|
49
49
|
TelemetryService
|
|
@@ -58,22 +58,22 @@ import {
|
|
|
58
58
|
import "./chunk-CQHHEW2M.js";
|
|
59
59
|
import {
|
|
60
60
|
AgentManager
|
|
61
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-QNRXRSKC.js";
|
|
62
62
|
import {
|
|
63
63
|
CommitManager,
|
|
64
64
|
UserAbortedCommitError,
|
|
65
65
|
ValidationRunner
|
|
66
|
-
} from "./chunk-
|
|
66
|
+
} from "./chunk-HWDQRW3O.js";
|
|
67
67
|
import {
|
|
68
68
|
IssueManagementProviderFactory
|
|
69
|
-
} from "./chunk-
|
|
69
|
+
} from "./chunk-ZEFTWM5Z.js";
|
|
70
70
|
import "./chunk-4232AHNQ.js";
|
|
71
71
|
import {
|
|
72
72
|
installDependencies
|
|
73
|
-
} from "./chunk-
|
|
73
|
+
} from "./chunk-OLJ54WGW.js";
|
|
74
74
|
import {
|
|
75
75
|
GitWorktreeManager
|
|
76
|
-
} from "./chunk-
|
|
76
|
+
} from "./chunk-PPQ5LV7U.js";
|
|
77
77
|
import {
|
|
78
78
|
openBrowser
|
|
79
79
|
} from "./chunk-WEBMMJKL.js";
|
|
@@ -84,9 +84,9 @@ import {
|
|
|
84
84
|
} from "./chunk-CE676WCN.js";
|
|
85
85
|
import {
|
|
86
86
|
ClaudeContextManager
|
|
87
|
-
} from "./chunk-
|
|
88
|
-
import "./chunk-
|
|
89
|
-
import "./chunk-
|
|
87
|
+
} from "./chunk-WYDLOQYO.js";
|
|
88
|
+
import "./chunk-T4NESGYB.js";
|
|
89
|
+
import "./chunk-MRPIDNZU.js";
|
|
90
90
|
import "./chunk-GYCR2LOU.js";
|
|
91
91
|
import "./chunk-AQUSMNBF.js";
|
|
92
92
|
import {
|
|
@@ -95,7 +95,7 @@ import {
|
|
|
95
95
|
import "./chunk-K3QGG4O2.js";
|
|
96
96
|
import {
|
|
97
97
|
IssueTrackerFactory
|
|
98
|
-
} from "./chunk-
|
|
98
|
+
} from "./chunk-GPBX2BY2.js";
|
|
99
99
|
import "./chunk-DMSL5BAP.js";
|
|
100
100
|
import {
|
|
101
101
|
GitHubService
|
|
@@ -125,13 +125,13 @@ import {
|
|
|
125
125
|
pushBranchToRemote,
|
|
126
126
|
removePlaceholderCommitFromHead,
|
|
127
127
|
removePlaceholderCommitFromHistory
|
|
128
|
-
} from "./chunk-
|
|
128
|
+
} from "./chunk-KGOBNC5A.js";
|
|
129
129
|
import {
|
|
130
130
|
SettingsManager
|
|
131
|
-
} from "./chunk-
|
|
131
|
+
} from "./chunk-F5NKWLMQ.js";
|
|
132
132
|
import {
|
|
133
133
|
MetadataManager
|
|
134
|
-
} from "./chunk-
|
|
134
|
+
} from "./chunk-XIVLGWUX.js";
|
|
135
135
|
import {
|
|
136
136
|
getLogger,
|
|
137
137
|
withLogger
|
|
@@ -350,8 +350,8 @@ var FinishCommand = class {
|
|
|
350
350
|
const settings = await this.settingsManager.loadSettings();
|
|
351
351
|
const databaseUrlEnvVarName = ((_b = (_a2 = settings.capabilities) == null ? void 0 : _a2.database) == null ? void 0 : _b.databaseUrlEnvVarName) ?? "DATABASE_URL";
|
|
352
352
|
const environmentManager = new EnvironmentManager();
|
|
353
|
-
const
|
|
354
|
-
const databaseManager = new DatabaseManager(
|
|
353
|
+
const neonProvider = createNeonProviderFromSettings(settings);
|
|
354
|
+
const databaseManager = new DatabaseManager(neonProvider, environmentManager, databaseUrlEnvVarName);
|
|
355
355
|
const cliIsolationManager = new CLIIsolationManager();
|
|
356
356
|
const { DefaultBranchNamingService } = await import("./BranchNamingService-MEK2WZUD.js");
|
|
357
357
|
this.loomManager ??= new LoomManager(
|
|
@@ -541,7 +541,7 @@ var FinishCommand = class {
|
|
|
541
541
|
if (result.type === "issue" && result.number !== void 0) {
|
|
542
542
|
const worktree = await this.gitWorktreeManager.findWorktreeForIssue(result.number);
|
|
543
543
|
if (worktree) {
|
|
544
|
-
const { MetadataManager: MetadataManager2 } = await import("./MetadataManager-
|
|
544
|
+
const { MetadataManager: MetadataManager2 } = await import("./MetadataManager-HHE6LQF2.js");
|
|
545
545
|
const metadataManager = new MetadataManager2();
|
|
546
546
|
const metadata = await metadataManager.readMetadata(worktree.path);
|
|
547
547
|
const canonicalKey = (metadata == null ? void 0 : metadata.issueKey) ?? ((_a2 = metadata == null ? void 0 : metadata.issue_numbers) == null ? void 0 : _a2[0]);
|
|
@@ -571,7 +571,7 @@ var FinishCommand = class {
|
|
|
571
571
|
autoDetected: true
|
|
572
572
|
};
|
|
573
573
|
}
|
|
574
|
-
const { MetadataManager: MetadataManager2 } = await import("./MetadataManager-
|
|
574
|
+
const { MetadataManager: MetadataManager2 } = await import("./MetadataManager-HHE6LQF2.js");
|
|
575
575
|
const metadataManager = new MetadataManager2();
|
|
576
576
|
const metadata = await metadataManager.readMetadata(process.cwd());
|
|
577
577
|
const issueNumber = extractIssueNumber(currentDir);
|
|
@@ -978,7 +978,7 @@ var FinishCommand = class {
|
|
|
978
978
|
"Cannot cleanup PR with uncommitted changes. Commit or stash changes, then run again with --force to cleanup anyway."
|
|
979
979
|
);
|
|
980
980
|
}
|
|
981
|
-
const { MetadataManager: MetadataManager2 } = await import("./MetadataManager-
|
|
981
|
+
const { MetadataManager: MetadataManager2 } = await import("./MetadataManager-HHE6LQF2.js");
|
|
982
982
|
const metadataManager = new MetadataManager2();
|
|
983
983
|
if (!options.dryRun) {
|
|
984
984
|
await metadataManager.archiveMetadata(worktree.path);
|
|
@@ -1188,7 +1188,7 @@ var FinishCommand = class {
|
|
|
1188
1188
|
}
|
|
1189
1189
|
finishResult.prUrl = prResult.url;
|
|
1190
1190
|
await this.generateSessionSummaryIfConfigured(parsed, worktree, options, prResult.number);
|
|
1191
|
-
const { MetadataManager: MetadataManager2 } = await import("./MetadataManager-
|
|
1191
|
+
const { MetadataManager: MetadataManager2 } = await import("./MetadataManager-HHE6LQF2.js");
|
|
1192
1192
|
const metadataManager = new MetadataManager2();
|
|
1193
1193
|
if (!options.dryRun) {
|
|
1194
1194
|
await metadataManager.archiveMetadata(worktree.path);
|
|
@@ -1863,6 +1863,16 @@ var migrations = [
|
|
|
1863
1863
|
];
|
|
1864
1864
|
await ensureGlobalGitignorePatterns(allIloomPatterns);
|
|
1865
1865
|
}
|
|
1866
|
+
},
|
|
1867
|
+
{
|
|
1868
|
+
version: "0.13.1",
|
|
1869
|
+
description: "Add global gitignore for .env.local and .env.*.local files",
|
|
1870
|
+
migrate: async () => {
|
|
1871
|
+
await ensureGlobalGitignorePatterns([
|
|
1872
|
+
"**/.env.local",
|
|
1873
|
+
"**/.env.*.local"
|
|
1874
|
+
]);
|
|
1875
|
+
}
|
|
1866
1876
|
}
|
|
1867
1877
|
];
|
|
1868
1878
|
|
|
@@ -2206,14 +2216,14 @@ async function autoLaunchInitForMultipleRemotes() {
|
|
|
2206
2216
|
await waitForKeypress2("Press any key to start configuration...");
|
|
2207
2217
|
logger.info("");
|
|
2208
2218
|
try {
|
|
2209
|
-
const { InitCommand } = await import("./init-
|
|
2219
|
+
const { InitCommand } = await import("./init-7SDJUAEZ.js");
|
|
2210
2220
|
const initCommand = new InitCommand();
|
|
2211
2221
|
const customInitialMessage = "Help me configure which git remote iloom should use for GitHub operations. I have multiple remotes and need to select the correct one.";
|
|
2212
2222
|
await initCommand.execute(customInitialMessage);
|
|
2213
2223
|
logger.info("");
|
|
2214
2224
|
logger.info("Configuration complete! Continuing with your original command...");
|
|
2215
2225
|
logger.info("");
|
|
2216
|
-
const { SettingsManager: SettingsManager2 } = await import("./SettingsManager-
|
|
2226
|
+
const { SettingsManager: SettingsManager2 } = await import("./SettingsManager-SLSYEYDZ.js");
|
|
2217
2227
|
const settingsManager = new SettingsManager2();
|
|
2218
2228
|
const settings = await settingsManager.loadSettings();
|
|
2219
2229
|
const { hasMultipleRemotes: hasMultipleRemotes2 } = await import("./remote-RO4LZKT2.js");
|
|
@@ -2234,7 +2244,7 @@ var shellCompletion = new ShellCompletion();
|
|
|
2234
2244
|
shellCompletion.init();
|
|
2235
2245
|
program.command("start").alias("new").alias("create").alias("up").description("Create isolated workspace for an issue/PR").argument("[identifier]", "Issue number, PR number, or branch name (optional - will prompt if not provided)").option("--claude", "Enable Claude integration (default: true)").option("--no-claude", "Disable Claude integration").option("--code", "Enable VSCode (default: true)").option("--no-code", "Disable VSCode").option("--dev-server", "Enable dev server in terminal (default: true)").option("--no-dev-server", "Disable dev server").option("--terminal", "Enable terminal without dev server (default: false)").option("--no-terminal", "Disable terminal").option("--child-loom", "Force create as child loom (skip prompt)").option("--no-child-loom", "Force create as independent loom (skip prompt)").option("--epic", "Create as epic loom with child issues (skip prompt; ignored if no children)").option("--no-epic", "Skip epic loom creation even if issue has children (ignored if no children)").option("--body <text>", "Body text for issue (skips AI enhancement)").option("--json", "Output result as JSON").addOption(
|
|
2236
2246
|
new Option("--one-shot <mode>", "One-shot automation mode").choices(["default", "noReview", "bypassPermissions"]).default("default")
|
|
2237
|
-
).option("--yolo", "Enable autonomous mode (shorthand for --one-shot=bypassPermissions)").addOption(
|
|
2247
|
+
).option("--yolo", "Enable autonomous mode (shorthand for --one-shot=bypassPermissions)").option("--dangerously-skip-permissions", "Skip Claude permission prompts without skipping workflow gates").addOption(
|
|
2238
2248
|
new Option("--complexity <level>", "Override complexity evaluation (persists in loom metadata)").choices(["trivial", "simple", "complex"])
|
|
2239
2249
|
).option("--create-only", "Create workspace only (skip Claude, IDE, terminal, dev server)").action(async (identifier, options) => {
|
|
2240
2250
|
if (options.yolo) {
|
|
@@ -2314,7 +2324,7 @@ program.command("add-issue").alias("a").description("Create and enhance GitHub i
|
|
|
2314
2324
|
});
|
|
2315
2325
|
program.command("feedback").alias("f").description("Submit feedback/bug report to iloom-cli repository").argument("<description>", "Feedback title (>30 chars, >2 spaces; or any non-empty text when --body provided)").option("--body <text>", "Body text for feedback (added after diagnostics)").action(async (description, options) => {
|
|
2316
2326
|
try {
|
|
2317
|
-
const { FeedbackCommand } = await import("./feedback-
|
|
2327
|
+
const { FeedbackCommand } = await import("./feedback-2LWXKLQZ.js");
|
|
2318
2328
|
const command = new FeedbackCommand();
|
|
2319
2329
|
const feedbackOptions = {};
|
|
2320
2330
|
if (options.body !== void 0) {
|
|
@@ -2416,7 +2426,7 @@ program.command("commit").alias("c").description("Commit all uncommitted files w
|
|
|
2416
2426
|
const isAnyJsonMode = options.json ?? options.jsonStream;
|
|
2417
2427
|
const executeAction = async () => {
|
|
2418
2428
|
try {
|
|
2419
|
-
const { CommitCommand } = await import("./commit-
|
|
2429
|
+
const { CommitCommand } = await import("./commit-L5JNBU4U.js");
|
|
2420
2430
|
const command = new CommitCommand();
|
|
2421
2431
|
const noReview = options.review === false || options.json === true || options.jsonStream === true;
|
|
2422
2432
|
const result = await command.execute({
|
|
@@ -2455,7 +2465,7 @@ program.command("commit").alias("c").description("Commit all uncommitted files w
|
|
|
2455
2465
|
program.command("rebase").description("Rebase current branch on main with Claude-assisted conflict resolution").option("-f, --force", "Skip confirmation prompts").option("-n, --dry-run", "Preview actions without executing").option("--json-stream", "Stream JSONL output; runs Claude headless for conflict resolution").action(async (options) => {
|
|
2456
2466
|
const executeAction = async () => {
|
|
2457
2467
|
try {
|
|
2458
|
-
const { RebaseCommand } = await import("./rebase-
|
|
2468
|
+
const { RebaseCommand } = await import("./rebase-MLIN572O.js");
|
|
2459
2469
|
const command = new RebaseCommand();
|
|
2460
2470
|
const result = await command.execute(options);
|
|
2461
2471
|
if (options.jsonStream && result) {
|
|
@@ -2495,7 +2505,7 @@ program.command("spin").alias("ignite").description("Launch Claude with auto-det
|
|
|
2495
2505
|
options.oneShot = "bypassPermissions";
|
|
2496
2506
|
}
|
|
2497
2507
|
try {
|
|
2498
|
-
const { IgniteCommand } = await import("./ignite-
|
|
2508
|
+
const { IgniteCommand } = await import("./ignite-VQDJQ37S.js");
|
|
2499
2509
|
const command = new IgniteCommand();
|
|
2500
2510
|
if (options.json && options.jsonStream) {
|
|
2501
2511
|
logger.error("--json and --json-stream are mutually exclusive");
|
|
@@ -2523,7 +2533,7 @@ program.command("spin").alias("ignite").description("Launch Claude with auto-det
|
|
|
2523
2533
|
program.command("open").description("Open workspace in browser or run CLI tool").argument("[identifier]", "Issue number, PR number, or branch name (auto-detected if omitted)").allowUnknownOption().action(async (identifier, _options, command) => {
|
|
2524
2534
|
try {
|
|
2525
2535
|
const args = (command == null ? void 0 : command.args) ? command.args.slice(identifier ? 1 : 0) : [];
|
|
2526
|
-
const { OpenCommand } = await import("./open-
|
|
2536
|
+
const { OpenCommand } = await import("./open-2HL6GV5F.js");
|
|
2527
2537
|
const cmd = new OpenCommand();
|
|
2528
2538
|
const input = identifier ? { identifier, args } : { args };
|
|
2529
2539
|
await cmd.execute(input);
|
|
@@ -2535,7 +2545,7 @@ program.command("open").description("Open workspace in browser or run CLI tool")
|
|
|
2535
2545
|
program.command("run").description("Run CLI tool or open workspace in browser").argument("[identifier]", "Issue number, PR number, or branch name (auto-detected if omitted)").allowUnknownOption().action(async (identifier, _options, command) => {
|
|
2536
2546
|
try {
|
|
2537
2547
|
const args = (command == null ? void 0 : command.args) ? command.args.slice(identifier ? 1 : 0) : [];
|
|
2538
|
-
const { RunCommand } = await import("./run-
|
|
2548
|
+
const { RunCommand } = await import("./run-CUNRQNZS.js");
|
|
2539
2549
|
const cmd = new RunCommand();
|
|
2540
2550
|
const input = identifier ? { identifier, args } : { args };
|
|
2541
2551
|
await cmd.execute(input);
|
|
@@ -2546,7 +2556,7 @@ program.command("run").description("Run CLI tool or open workspace in browser").
|
|
|
2546
2556
|
});
|
|
2547
2557
|
program.command("vscode").description("Install iloom VS Code extension and open workspace in VS Code").argument("[identifier]", "Issue number, PR number, or branch name (auto-detected if omitted)").option("--no-wait", "Skip keypress prompt and open immediately").action(async (identifier, options) => {
|
|
2548
2558
|
try {
|
|
2549
|
-
const { VSCodeCommand } = await import("./vscode-
|
|
2559
|
+
const { VSCodeCommand } = await import("./vscode-OY7HOVRO.js");
|
|
2550
2560
|
const cmd = new VSCodeCommand();
|
|
2551
2561
|
await cmd.execute({ identifier, wait: options == null ? void 0 : options.wait });
|
|
2552
2562
|
} catch (error) {
|
|
@@ -2555,7 +2565,7 @@ program.command("vscode").description("Install iloom VS Code extension and open
|
|
|
2555
2565
|
});
|
|
2556
2566
|
program.command("dev-server").alias("dev").description("Start dev server for workspace (foreground)").argument("[identifier]", "Issue number, PR number, or branch name (auto-detected if omitted)").option("--json", "Output as JSON").action(async (identifier, options) => {
|
|
2557
2567
|
try {
|
|
2558
|
-
const { DevServerCommand } = await import("./dev-server-
|
|
2568
|
+
const { DevServerCommand } = await import("./dev-server-UQKNKU2S.js");
|
|
2559
2569
|
const cmd = new DevServerCommand();
|
|
2560
2570
|
await cmd.execute({ identifier, json: options == null ? void 0 : options.json });
|
|
2561
2571
|
} catch (error) {
|
|
@@ -2565,7 +2575,7 @@ program.command("dev-server").alias("dev").description("Start dev server for wor
|
|
|
2565
2575
|
});
|
|
2566
2576
|
program.command("shell").alias("terminal").description("Open interactive shell with workspace environment").argument("[identifier]", "Issue number, PR number, or branch name (auto-detected if omitted)").action(async (identifier) => {
|
|
2567
2577
|
try {
|
|
2568
|
-
const { ShellCommand } = await import("./shell-
|
|
2578
|
+
const { ShellCommand } = await import("./shell-M2YYPNGV.js");
|
|
2569
2579
|
const cmd = new ShellCommand();
|
|
2570
2580
|
await cmd.execute({ identifier });
|
|
2571
2581
|
} catch (error) {
|
|
@@ -2575,7 +2585,7 @@ program.command("shell").alias("terminal").description("Open interactive shell w
|
|
|
2575
2585
|
});
|
|
2576
2586
|
program.command("build").description("Run the build script").argument("[identifier]", "Issue number, PR number, or branch name (auto-detected if omitted)").action(async (identifier) => {
|
|
2577
2587
|
try {
|
|
2578
|
-
const { BuildCommand } = await import("./build-
|
|
2588
|
+
const { BuildCommand } = await import("./build-ZTGWDHWU.js");
|
|
2579
2589
|
const cmd = new BuildCommand();
|
|
2580
2590
|
await cmd.execute(identifier ? { identifier } : {});
|
|
2581
2591
|
} catch (error) {
|
|
@@ -2585,7 +2595,7 @@ program.command("build").description("Run the build script").argument("[identifi
|
|
|
2585
2595
|
});
|
|
2586
2596
|
program.command("lint").description("Run the lint script").argument("[identifier]", "Issue number, PR number, or branch name (auto-detected if omitted)").action(async (identifier) => {
|
|
2587
2597
|
try {
|
|
2588
|
-
const { LintCommand } = await import("./lint-
|
|
2598
|
+
const { LintCommand } = await import("./lint-C5FOVRXY.js");
|
|
2589
2599
|
const cmd = new LintCommand();
|
|
2590
2600
|
await cmd.execute(identifier ? { identifier } : {});
|
|
2591
2601
|
} catch (error) {
|
|
@@ -2595,7 +2605,7 @@ program.command("lint").description("Run the lint script").argument("[identifier
|
|
|
2595
2605
|
});
|
|
2596
2606
|
program.command("test").description("Run the test script").argument("[identifier]", "Issue number, PR number, or branch name (auto-detected if omitted)").action(async (identifier) => {
|
|
2597
2607
|
try {
|
|
2598
|
-
const { TestCommand } = await import("./test-
|
|
2608
|
+
const { TestCommand } = await import("./test-ESDAHEVE.js");
|
|
2599
2609
|
const cmd = new TestCommand();
|
|
2600
2610
|
await cmd.execute(identifier ? { identifier } : {});
|
|
2601
2611
|
} catch (error) {
|
|
@@ -2605,7 +2615,7 @@ program.command("test").description("Run the test script").argument("[identifier
|
|
|
2605
2615
|
});
|
|
2606
2616
|
program.command("compile").alias("typecheck").description("Run the compile or typecheck script (prefers compile if both exist)").argument("[identifier]", "Issue number, PR number, or branch name (auto-detected if omitted)").action(async (identifier) => {
|
|
2607
2617
|
try {
|
|
2608
|
-
const { CompileCommand } = await import("./compile-
|
|
2618
|
+
const { CompileCommand } = await import("./compile-GPJOHXH4.js");
|
|
2609
2619
|
const cmd = new CompileCommand();
|
|
2610
2620
|
await cmd.execute(identifier ? { identifier } : {});
|
|
2611
2621
|
} catch (error) {
|
|
@@ -2615,7 +2625,7 @@ program.command("compile").alias("typecheck").description("Run the compile or ty
|
|
|
2615
2625
|
});
|
|
2616
2626
|
program.command("install-deps").description("Install dependencies for a workspace").argument("[identifier]", "Issue number, PR number, or branch name (auto-detected if omitted)").option("--no-frozen", "Allow lockfile updates (default: frozen/locked)").action(async (identifier, options) => {
|
|
2617
2627
|
try {
|
|
2618
|
-
const { InstallDepsCommand } = await import("./install-deps-
|
|
2628
|
+
const { InstallDepsCommand } = await import("./install-deps-NGSFDNUW.js");
|
|
2619
2629
|
const cmd = new InstallDepsCommand();
|
|
2620
2630
|
const input = {};
|
|
2621
2631
|
if (identifier) input.identifier = identifier;
|
|
@@ -2626,10 +2636,10 @@ program.command("install-deps").description("Install dependencies for a workspac
|
|
|
2626
2636
|
process.exit(1);
|
|
2627
2637
|
}
|
|
2628
2638
|
});
|
|
2629
|
-
program.command("cleanup").alias("remove").alias("clean").description("Remove workspaces").argument("[identifier]", "Branch name or issue number to cleanup (auto-detected)").option("-l, --list", "List all worktrees").option("-a, --all", "Remove all worktrees (interactive confirmation)").option("-i, --issue <number>", "Cleanup by issue number",
|
|
2639
|
+
program.command("cleanup").alias("remove").alias("clean").description("Remove workspaces").argument("[identifier]", "Branch name or issue number to cleanup (auto-detected)").option("-l, --list", "List all worktrees").option("-a, --all", "Remove all worktrees (interactive confirmation)").option("-i, --issue <number>", "Cleanup by issue number", parseIssueIdentifier).option("-f, --force", "Skip confirmations and force removal").option("--dry-run", "Show what would be done without doing it").option("--json", "Output result as JSON").option("--archive", "Archive metadata instead of deleting (preserves loom in il list --finished)").option("--defer <ms>", "Wait specified milliseconds before cleanup", parseInt).action(async (identifier, options) => {
|
|
2630
2640
|
const executeAction = async () => {
|
|
2631
2641
|
try {
|
|
2632
|
-
const { CleanupCommand } = await import("./cleanup-
|
|
2642
|
+
const { CleanupCommand } = await import("./cleanup-BCVY7PEF.js");
|
|
2633
2643
|
const command = new CleanupCommand();
|
|
2634
2644
|
const input = {
|
|
2635
2645
|
options: options ?? {}
|
|
@@ -2676,13 +2686,16 @@ function colorizeState(state) {
|
|
|
2676
2686
|
}
|
|
2677
2687
|
}
|
|
2678
2688
|
program.command("list").description("Show active workspaces").option("--json", "Output as JSON").option("--finished", "Show only finished looms (sorted by finish time, latest first)").option("--all", "Show both active and finished looms").option("--global", "Show looms from all projects (default: current project only)").option("--children", "Fetch and display child issues and child looms for each parent loom").action(async (options) => {
|
|
2689
|
+
var _a2;
|
|
2679
2690
|
try {
|
|
2680
2691
|
const manager = new GitWorktreeManager();
|
|
2681
2692
|
const metadataManager = new MetadataManager();
|
|
2682
2693
|
let currentProjectPath = null;
|
|
2683
2694
|
if (!options.global) {
|
|
2684
2695
|
try {
|
|
2685
|
-
|
|
2696
|
+
const primaryWorktrees = await manager.listWorktrees({ porcelain: true });
|
|
2697
|
+
const primaryPath = (_a2 = primaryWorktrees[0]) == null ? void 0 : _a2.path;
|
|
2698
|
+
currentProjectPath = await findMainWorktreePathWithSettings(primaryPath);
|
|
2686
2699
|
} catch (error) {
|
|
2687
2700
|
if (error instanceof GitCommandError && (error.exitCode === 128 || /fatal: not a git repository/i.test(error.stderr))) {
|
|
2688
2701
|
currentProjectPath = null;
|
|
@@ -2979,7 +2992,7 @@ program.command("list").description("Show active workspaces").option("--json", "
|
|
|
2979
2992
|
});
|
|
2980
2993
|
program.command("projects").description("List configured iloom projects").option("--json", "Output as JSON (default behavior)").action(async (options) => {
|
|
2981
2994
|
try {
|
|
2982
|
-
const { ProjectsCommand } = await import("./projects-
|
|
2995
|
+
const { ProjectsCommand } = await import("./projects-3F6T3KZL.js");
|
|
2983
2996
|
const command = new ProjectsCommand();
|
|
2984
2997
|
const result = await command.execute(options);
|
|
2985
2998
|
console.log(JSON.stringify(result, null, 2));
|
|
@@ -2990,7 +3003,7 @@ program.command("projects").description("List configured iloom projects").option
|
|
|
2990
3003
|
});
|
|
2991
3004
|
program.command("issues").description("List project issues from configured issue tracker").argument("[project-path]", "Path to project root (auto-detected if omitted)").option("--json", "Output as JSON (default behavior)").option("--limit <n>", "Max issues to return", "100").option("--sprint <name>", 'Jira only: filter by sprint name (e.g., "Sprint 17") or "current" for active sprint').option("--mine", "Show only issues and PRs assigned to me").action(async (projectPath, options) => {
|
|
2992
3005
|
try {
|
|
2993
|
-
const { IssuesCommand } = await import("./issues-
|
|
3006
|
+
const { IssuesCommand } = await import("./issues-4HQKEUP7.js");
|
|
2994
3007
|
const command = new IssuesCommand();
|
|
2995
3008
|
const parsedLimit = parseInt((options == null ? void 0 : options.limit) ?? "100", 10);
|
|
2996
3009
|
const limit = Number.isNaN(parsedLimit) || parsedLimit <= 0 ? 100 : parsedLimit;
|
|
@@ -3008,7 +3021,7 @@ program.command("issues").description("List project issues from configured issue
|
|
|
3008
3021
|
});
|
|
3009
3022
|
program.command("init").alias("config").description("Initialize iloom configuration").argument("[prompt]", 'Custom initial message to send to Claude (defaults to "Help me configure iloom settings.")').addOption(new Option("--accept-defaults").hideHelp()).action(async (prompt, options) => {
|
|
3010
3023
|
try {
|
|
3011
|
-
const { InitCommand } = await import("./init-
|
|
3024
|
+
const { InitCommand } = await import("./init-7SDJUAEZ.js");
|
|
3012
3025
|
const command = new InitCommand();
|
|
3013
3026
|
const trimmedPrompt = prompt == null ? void 0 : prompt.trim();
|
|
3014
3027
|
const customPrompt = trimmedPrompt && trimmedPrompt.length > 0 ? trimmedPrompt : void 0;
|
|
@@ -3018,11 +3031,13 @@ program.command("init").alias("config").description("Initialize iloom configurat
|
|
|
3018
3031
|
process.exit(1);
|
|
3019
3032
|
}
|
|
3020
3033
|
});
|
|
3021
|
-
program.command("plan").description("Launch interactive planning session with Architect persona").argument("[prompt]", "Initial planning prompt or topic").option("--model <model>", "Model to use
|
|
3034
|
+
program.command("plan").description("Launch interactive planning session with Architect persona").argument("[prompt]", "Initial planning prompt or topic").option("--model <model>", "Model to use: opus, sonnet, haiku, opus[1m], sonnet[1m] (default: opus)").addOption(
|
|
3035
|
+
new Option("--one-shot <mode>", "One-shot automation mode").choices(["default", "noReview", "bypassPermissions"])
|
|
3036
|
+
).option("--dangerously-skip-permissions", "Skip Claude permission prompts without skipping confirmation gates").option("--autonomous", "Alias for --one-shot=bypassPermissions (backwards compat)").option("--yolo", "Full autonomy shorthand (--one-shot=bypassPermissions + --auto-swarm)").option("--planner <provider>", "AI provider for planning: claude, gemini, codex (default: claude)").option("--reviewer <provider>", "AI provider for review: claude, gemini, codex, none (default: none)").option("-p, --print", "Enable print/headless mode for CI/CD (uses bypassPermissions)").addOption(
|
|
3022
3037
|
new Option("--output-format <format>", "Output format for Claude CLI (requires --print)").choices(["json", "stream-json", "text"])
|
|
3023
3038
|
).option("--verbose", "Enable verbose output (requires --print)").option("--json", "Output final result as JSON object (requires --print)").option("--json-stream", "Stream JSONL output to stdout in real-time (requires --print)").option("--auto-swarm", "Enable auto-swarm: plan, start epic, and spin automatically").action(async (prompt, options) => {
|
|
3024
3039
|
try {
|
|
3025
|
-
const { PlanCommand } = await import("./plan-
|
|
3040
|
+
const { PlanCommand } = await import("./plan-GC3HF73T.js");
|
|
3026
3041
|
const command = new PlanCommand();
|
|
3027
3042
|
if ((options == null ? void 0 : options.json) && (options == null ? void 0 : options.jsonStream)) {
|
|
3028
3043
|
logger.error("--json and --json-stream are mutually exclusive");
|
|
@@ -3034,6 +3049,22 @@ program.command("plan").description("Launch interactive planning session with Ar
|
|
|
3034
3049
|
if (!(options == null ? void 0 : options.print) && ((options == null ? void 0 : options.json) || (options == null ? void 0 : options.jsonStream))) {
|
|
3035
3050
|
logger.warn("--json and --json-stream flags are ignored without --print");
|
|
3036
3051
|
}
|
|
3052
|
+
let resolvedOneShot = options == null ? void 0 : options.oneShot;
|
|
3053
|
+
let resolvedAutoSwarm = (options == null ? void 0 : options.autoSwarm) ?? false;
|
|
3054
|
+
const resolvedDangerouslySkipPermissions = (options == null ? void 0 : options.dangerouslySkipPermissions) ?? false;
|
|
3055
|
+
if (options == null ? void 0 : options.yolo) {
|
|
3056
|
+
if (resolvedOneShot !== void 0 && resolvedOneShot !== "bypassPermissions") {
|
|
3057
|
+
logger.debug(`--yolo overrides --one-shot value to bypassPermissions`);
|
|
3058
|
+
}
|
|
3059
|
+
resolvedOneShot = "bypassPermissions";
|
|
3060
|
+
resolvedAutoSwarm = true;
|
|
3061
|
+
}
|
|
3062
|
+
if (options == null ? void 0 : options.autonomous) {
|
|
3063
|
+
if (resolvedOneShot !== void 0 && resolvedOneShot !== "bypassPermissions") {
|
|
3064
|
+
logger.debug(`--autonomous overrides --one-shot value to bypassPermissions`);
|
|
3065
|
+
}
|
|
3066
|
+
resolvedOneShot = "bypassPermissions";
|
|
3067
|
+
}
|
|
3037
3068
|
const printOptions = (options == null ? void 0 : options.print) ? {
|
|
3038
3069
|
print: true,
|
|
3039
3070
|
...(options == null ? void 0 : options.outputFormat) !== void 0 && { outputFormat: options.outputFormat },
|
|
@@ -3041,7 +3072,11 @@ program.command("plan").description("Launch interactive planning session with Ar
|
|
|
3041
3072
|
...(options == null ? void 0 : options.json) && { json: true },
|
|
3042
3073
|
...(options == null ? void 0 : options.jsonStream) && { jsonStream: true }
|
|
3043
3074
|
} : void 0;
|
|
3044
|
-
await command.execute(prompt, options == null ? void 0 : options.model,
|
|
3075
|
+
await command.execute(prompt, options == null ? void 0 : options.model, {
|
|
3076
|
+
...resolvedOneShot !== void 0 && { oneShot: resolvedOneShot },
|
|
3077
|
+
...resolvedDangerouslySkipPermissions && { dangerouslySkipPermissions: true },
|
|
3078
|
+
autoSwarm: resolvedAutoSwarm
|
|
3079
|
+
}, options == null ? void 0 : options.planner, options == null ? void 0 : options.reviewer, printOptions);
|
|
3045
3080
|
} catch (error) {
|
|
3046
3081
|
logger.error(`Planning session failed: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
3047
3082
|
process.exit(1);
|
|
@@ -3049,7 +3084,7 @@ program.command("plan").description("Launch interactive planning session with Ar
|
|
|
3049
3084
|
});
|
|
3050
3085
|
program.command("contribute").description("Set up local development environment for contributing to a GitHub project").argument("[repository]", "GitHub repository (owner/repo, github.com/owner/repo, or full URL). Defaults to iloom-ai/iloom-cli").action(async (repository) => {
|
|
3051
3086
|
try {
|
|
3052
|
-
const { ContributeCommand } = await import("./contribute-
|
|
3087
|
+
const { ContributeCommand } = await import("./contribute-QEGCI4PS.js");
|
|
3053
3088
|
const command = new ContributeCommand();
|
|
3054
3089
|
await command.execute(repository);
|
|
3055
3090
|
} catch (error) {
|
|
@@ -3129,9 +3164,9 @@ program.command("test-github").description("Test GitHub integration (Issue #3)")
|
|
|
3129
3164
|
program.command("test-claude").description("Test Claude integration (Issue #10)").option("--detect", "Test Claude CLI detection").option("--version", "Get Claude CLI version").option("--branch <title>", "Test branch name generation with given title").option("--issue <number>", "Issue number for branch generation", "123").option("--launch <prompt>", "Launch Claude with a prompt (headless)").option("--interactive", "Launch Claude interactively (requires --launch)").option("--template <name>", "Test template loading").action(async (options) => {
|
|
3130
3165
|
try {
|
|
3131
3166
|
const { detectClaudeCli, getClaudeVersion, generateBranchName, launchClaude } = await import("./claude-ACL7G4CF.js");
|
|
3132
|
-
const { PromptTemplateManager } = await import("./PromptTemplateManager-
|
|
3133
|
-
const { ClaudeService } = await import("./ClaudeService-
|
|
3134
|
-
const { ClaudeContextManager: ClaudeContextManager2 } = await import("./ClaudeContextManager-
|
|
3167
|
+
const { PromptTemplateManager } = await import("./PromptTemplateManager-4RFELNYY.js");
|
|
3168
|
+
const { ClaudeService } = await import("./ClaudeService-YR66WXZN.js");
|
|
3169
|
+
const { ClaudeContextManager: ClaudeContextManager2 } = await import("./ClaudeContextManager-ZH6LEA5I.js");
|
|
3135
3170
|
logger.info("Testing Claude Integration\n");
|
|
3136
3171
|
if (options.detect) {
|
|
3137
3172
|
logger.info("Detecting Claude CLI...");
|
|
@@ -3266,7 +3301,7 @@ program.command("test-claude").description("Test Claude integration (Issue #10)"
|
|
|
3266
3301
|
});
|
|
3267
3302
|
program.command("test-webserver").description("Test if a web server is running on a workspace port").argument("<issue-number>", "Issue number (port will be calculated as 3000 + issue number)", parseInt).option("--kill", "Kill the web server if detected").action(async (issueNumber, options) => {
|
|
3268
3303
|
try {
|
|
3269
|
-
const { TestWebserverCommand } = await import("./test-webserver-
|
|
3304
|
+
const { TestWebserverCommand } = await import("./test-webserver-AHXKC6H4.js");
|
|
3270
3305
|
const command = new TestWebserverCommand();
|
|
3271
3306
|
await command.execute({ issueNumber, options });
|
|
3272
3307
|
} catch (error) {
|
|
@@ -3279,7 +3314,7 @@ program.command("test-webserver").description("Test if a web server is running o
|
|
|
3279
3314
|
});
|
|
3280
3315
|
program.command("test-git").description("Test Git integration - findMainWorktreePath() function (reads .iloom/settings.json)").action(async () => {
|
|
3281
3316
|
try {
|
|
3282
|
-
const { TestGitCommand } = await import("./test-git-
|
|
3317
|
+
const { TestGitCommand } = await import("./test-git-KWPLHYSI.js");
|
|
3283
3318
|
const command = new TestGitCommand();
|
|
3284
3319
|
await command.execute();
|
|
3285
3320
|
} catch (error) {
|
|
@@ -3305,7 +3340,7 @@ program.command("test-tabs").description("Test iTerm2 dual tab functionality - o
|
|
|
3305
3340
|
});
|
|
3306
3341
|
program.command("test-prefix").description("[DEPRECATED] Test worktree prefix configuration - preview worktree paths").action(async () => {
|
|
3307
3342
|
try {
|
|
3308
|
-
const { TestPrefixCommand } = await import("./test-prefix-
|
|
3343
|
+
const { TestPrefixCommand } = await import("./test-prefix-VVODGHXP.js");
|
|
3309
3344
|
const command = new TestPrefixCommand();
|
|
3310
3345
|
await command.execute();
|
|
3311
3346
|
} catch (error) {
|
|
@@ -3319,7 +3354,7 @@ program.command("test-prefix").description("[DEPRECATED] Test worktree prefix co
|
|
|
3319
3354
|
program.command("summary").description("Generate Claude session summary for a loom").argument("[identifier]", "Issue number, PR number (pr/123), or branch name (auto-detected if omitted)").option("--with-comment", "Post summary as a comment to the issue/PR").option("--json", "Output result as JSON").action(async (identifier, options) => {
|
|
3320
3355
|
const executeAction = async () => {
|
|
3321
3356
|
try {
|
|
3322
|
-
const { SummaryCommand } = await import("./summary-
|
|
3357
|
+
const { SummaryCommand } = await import("./summary-XR4CBJEG.js");
|
|
3323
3358
|
const command = new SummaryCommand();
|
|
3324
3359
|
const result = await command.execute({ identifier, options });
|
|
3325
3360
|
if (options.json && result) {
|
|
@@ -3349,7 +3384,7 @@ program.command("summary").description("Generate Claude session summary for a lo
|
|
|
3349
3384
|
program.command("recap").description("Get recap for a loom (defaults to current directory)").argument("[identifier]", "Issue number, PR number (pr/123), or branch name (auto-detected if omitted)").option("--json", "Output as JSON with filePath for file watching").action(async (identifier, options) => {
|
|
3350
3385
|
const executeAction = async () => {
|
|
3351
3386
|
try {
|
|
3352
|
-
const { RecapCommand } = await import("./recap-
|
|
3387
|
+
const { RecapCommand } = await import("./recap-CKGKFDJL.js");
|
|
3353
3388
|
const command = new RecapCommand();
|
|
3354
3389
|
const result = await command.execute({ identifier, json: options.json });
|
|
3355
3390
|
if (options.json && result) {
|
|
@@ -3379,7 +3414,7 @@ program.command("recap").description("Get recap for a loom (defaults to current
|
|
|
3379
3414
|
var testJiraCommand = program.command("test-jira").description("Test Jira integration methods against a real Jira instance");
|
|
3380
3415
|
testJiraCommand.command("child-issue").description("Create a test child issue under a parent").argument("<parentKey>", "Parent issue key (e.g., PROJ-123)").action(async (parentKey) => {
|
|
3381
3416
|
try {
|
|
3382
|
-
const { TestJiraCommand } = await import("./test-jira-
|
|
3417
|
+
const { TestJiraCommand } = await import("./test-jira-6NK7UHSV.js");
|
|
3383
3418
|
await new TestJiraCommand().createChildIssue(parentKey);
|
|
3384
3419
|
} catch (error) {
|
|
3385
3420
|
logger.error(`Failed: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
@@ -3388,7 +3423,7 @@ testJiraCommand.command("child-issue").description("Create a test child issue un
|
|
|
3388
3423
|
});
|
|
3389
3424
|
testJiraCommand.command("create-dep").description('Create a "Blocks" dependency between two issues').argument("<blockingKey>", "Issue key that blocks (e.g., PROJ-100)").argument("<blockedKey>", "Issue key being blocked (e.g., PROJ-200)").action(async (blockingKey, blockedKey) => {
|
|
3390
3425
|
try {
|
|
3391
|
-
const { TestJiraCommand } = await import("./test-jira-
|
|
3426
|
+
const { TestJiraCommand } = await import("./test-jira-6NK7UHSV.js");
|
|
3392
3427
|
await new TestJiraCommand().createDependency(blockingKey, blockedKey);
|
|
3393
3428
|
} catch (error) {
|
|
3394
3429
|
logger.error(`Failed: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
@@ -3397,7 +3432,7 @@ testJiraCommand.command("create-dep").description('Create a "Blocks" dependency
|
|
|
3397
3432
|
});
|
|
3398
3433
|
testJiraCommand.command("get-deps").description("Fetch and print dependencies for an issue").argument("<issueKey>", "Issue key (e.g., PROJ-123)").action(async (issueKey) => {
|
|
3399
3434
|
try {
|
|
3400
|
-
const { TestJiraCommand } = await import("./test-jira-
|
|
3435
|
+
const { TestJiraCommand } = await import("./test-jira-6NK7UHSV.js");
|
|
3401
3436
|
await new TestJiraCommand().getDependencies(issueKey);
|
|
3402
3437
|
} catch (error) {
|
|
3403
3438
|
logger.error(`Failed: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
@@ -3406,7 +3441,7 @@ testJiraCommand.command("get-deps").description("Fetch and print dependencies fo
|
|
|
3406
3441
|
});
|
|
3407
3442
|
testJiraCommand.command("remove-dep").description('Remove a "Blocks" dependency between two issues').argument("<blockingKey>", "Issue key that blocks (e.g., PROJ-100)").argument("<blockedKey>", "Issue key being blocked (e.g., PROJ-200)").action(async (blockingKey, blockedKey) => {
|
|
3408
3443
|
try {
|
|
3409
|
-
const { TestJiraCommand } = await import("./test-jira-
|
|
3444
|
+
const { TestJiraCommand } = await import("./test-jira-6NK7UHSV.js");
|
|
3410
3445
|
await new TestJiraCommand().removeDependency(blockingKey, blockedKey);
|
|
3411
3446
|
} catch (error) {
|
|
3412
3447
|
logger.error(`Failed: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
@@ -3415,54 +3450,51 @@ testJiraCommand.command("remove-dep").description('Remove a "Blocks" dependency
|
|
|
3415
3450
|
});
|
|
3416
3451
|
testJiraCommand.command("get-children").description("List child issues of a parent").argument("<issueKey>", "Parent issue key (e.g., PROJ-123)").action(async (issueKey) => {
|
|
3417
3452
|
try {
|
|
3418
|
-
const { TestJiraCommand } = await import("./test-jira-
|
|
3453
|
+
const { TestJiraCommand } = await import("./test-jira-6NK7UHSV.js");
|
|
3419
3454
|
await new TestJiraCommand().getChildIssues(issueKey);
|
|
3420
3455
|
} catch (error) {
|
|
3421
3456
|
logger.error(`Failed: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
3422
3457
|
process.exit(1);
|
|
3423
3458
|
}
|
|
3424
3459
|
});
|
|
3425
|
-
program.command("test-
|
|
3460
|
+
program.command("test-neon").description("Test Neon integration and debug configuration").action(async () => {
|
|
3461
|
+
var _a2;
|
|
3426
3462
|
try {
|
|
3427
|
-
const { SettingsManager: SettingsManager2 } = await import("./SettingsManager-
|
|
3428
|
-
const {
|
|
3429
|
-
logger.info("Testing
|
|
3463
|
+
const { SettingsManager: SettingsManager2 } = await import("./SettingsManager-SLSYEYDZ.js");
|
|
3464
|
+
const { createNeonProviderFromSettings: createNeonProviderFromSettings2 } = await import("./neon-helpers-LCZAN4U4.js");
|
|
3465
|
+
logger.info("Testing Neon Integration\n");
|
|
3430
3466
|
logger.info("1. Settings Configuration:");
|
|
3431
3467
|
const settingsManager = new SettingsManager2();
|
|
3432
3468
|
const settings = await settingsManager.loadSettings();
|
|
3433
|
-
|
|
3469
|
+
const neonConfig = (_a2 = settings.databaseProviders) == null ? void 0 : _a2.neon;
|
|
3470
|
+
logger.info(` projectId: ${(neonConfig == null ? void 0 : neonConfig.projectId) ?? "(not configured)"}`);
|
|
3471
|
+
logger.info(` parentBranch: ${(neonConfig == null ? void 0 : neonConfig.parentBranch) ?? "(not configured)"}`);
|
|
3472
|
+
logger.info("\n2. Creating NeonProvider...");
|
|
3434
3473
|
try {
|
|
3435
|
-
const
|
|
3436
|
-
logger.
|
|
3437
|
-
|
|
3438
|
-
|
|
3439
|
-
logger.success(` ${provider.displayName} is configured`);
|
|
3440
|
-
} else {
|
|
3441
|
-
logger.warn(` ${provider.displayName} is not configured`);
|
|
3442
|
-
}
|
|
3443
|
-
logger.info(`
|
|
3444
|
-
3. Testing ${provider.displayName} CLI availability...`);
|
|
3445
|
-
const isAvailable = await provider.isCliAvailable();
|
|
3474
|
+
const neonProvider = createNeonProviderFromSettings2(settings);
|
|
3475
|
+
logger.success(" NeonProvider created successfully");
|
|
3476
|
+
logger.info("\n3. Testing Neon CLI availability...");
|
|
3477
|
+
const isAvailable = await neonProvider.isCliAvailable();
|
|
3446
3478
|
if (isAvailable) {
|
|
3447
|
-
logger.success(
|
|
3479
|
+
logger.success(" Neon CLI is available");
|
|
3448
3480
|
} else {
|
|
3449
|
-
logger.error(
|
|
3450
|
-
logger.info(
|
|
3481
|
+
logger.error(" Neon CLI not found");
|
|
3482
|
+
logger.info(" Install with: npm install -g @neon/cli");
|
|
3451
3483
|
return;
|
|
3452
3484
|
}
|
|
3453
|
-
logger.info(
|
|
3454
|
-
|
|
3455
|
-
const isAuthenticated = await provider.isAuthenticated();
|
|
3485
|
+
logger.info("\n4. Testing Neon CLI authentication...");
|
|
3486
|
+
const isAuthenticated = await neonProvider.isAuthenticated();
|
|
3456
3487
|
if (isAuthenticated) {
|
|
3457
|
-
logger.success(
|
|
3488
|
+
logger.success(" Neon CLI is authenticated");
|
|
3458
3489
|
} else {
|
|
3459
|
-
logger.error(
|
|
3490
|
+
logger.error(" Neon CLI not authenticated");
|
|
3491
|
+
logger.info(" Run: neon auth");
|
|
3460
3492
|
return;
|
|
3461
3493
|
}
|
|
3462
|
-
if (
|
|
3494
|
+
if (neonConfig == null ? void 0 : neonConfig.projectId) {
|
|
3463
3495
|
logger.info("\n5. Testing branch listing...");
|
|
3464
3496
|
try {
|
|
3465
|
-
const branches = await
|
|
3497
|
+
const branches = await neonProvider.listBranches();
|
|
3466
3498
|
logger.success(` Found ${branches.length} branches:`);
|
|
3467
3499
|
for (const branch of branches.slice(0, 5)) {
|
|
3468
3500
|
logger.info(` - ${branch}`);
|
|
@@ -3474,18 +3506,17 @@ program.command("test-db").description("Test database provider integration and d
|
|
|
3474
3506
|
logger.error(` Failed to list branches: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
3475
3507
|
}
|
|
3476
3508
|
} else {
|
|
3477
|
-
logger.warn(
|
|
3478
|
-
5. Skipping branch listing (${provider.displayName} not configured in settings)`);
|
|
3509
|
+
logger.warn("\n5. Skipping branch listing (Neon not configured in settings)");
|
|
3479
3510
|
}
|
|
3480
3511
|
} catch (error) {
|
|
3481
|
-
logger.error(` Failed to create
|
|
3512
|
+
logger.error(` Failed to create NeonProvider: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
3482
3513
|
if (error instanceof Error && error.message.includes("not configured")) {
|
|
3483
|
-
logger.info("\n This is expected if
|
|
3484
|
-
logger.info(" Configure databaseProviders in .iloom/settings.json to test fully.");
|
|
3514
|
+
logger.info("\n This is expected if Neon is not configured.");
|
|
3515
|
+
logger.info(" Configure databaseProviders.neon in .iloom/settings.json to test fully.");
|
|
3485
3516
|
}
|
|
3486
3517
|
}
|
|
3487
3518
|
logger.info("\n" + "=".repeat(50));
|
|
3488
|
-
logger.success("
|
|
3519
|
+
logger.success("Neon integration test complete!");
|
|
3489
3520
|
} catch (error) {
|
|
3490
3521
|
logger.error(`Test failed: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
3491
3522
|
if (error instanceof Error && error.stack) {
|