@iloom/cli 0.7.5 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +32 -3
- package/dist/{ClaudeContextManager-Y2YJC6BU.js → ClaudeContextManager-RDP6CLK6.js} +5 -5
- package/dist/{ClaudeService-NDVFQRKC.js → ClaudeService-FKPOQRA4.js} +4 -4
- package/dist/GitHubService-ACZVNTJE.js +12 -0
- package/dist/{LoomLauncher-U2B3VHPC.js → LoomLauncher-NHZMEVTQ.js} +5 -5
- package/dist/{MetadataManager-XJ2YB762.js → MetadataManager-W3C54UYT.js} +2 -2
- package/dist/{PRManager-6ZJZRG5Z.js → PRManager-XLTVG6YG.js} +5 -5
- package/dist/{PromptTemplateManager-7L3HJQQU.js → PromptTemplateManager-OUYDHOPI.js} +2 -2
- package/dist/README.md +32 -3
- package/dist/{SettingsManager-YU4VYPTW.js → SettingsManager-VCVLL32H.js} +4 -2
- package/dist/{SettingsMigrationManager-KZKDG66H.js → SettingsMigrationManager-LEBMJP3B.js} +3 -3
- package/dist/agents/iloom-code-reviewer.md +720 -0
- package/dist/agents/iloom-issue-analyze-and-plan.md +1 -1
- package/dist/agents/iloom-issue-analyzer.md +1 -1
- package/dist/agents/iloom-issue-complexity-evaluator.md +1 -1
- package/dist/agents/iloom-issue-enhancer.md +1 -1
- package/dist/agents/iloom-issue-implementer.md +1 -1
- package/dist/agents/iloom-issue-planner.md +1 -1
- package/dist/{build-HQ5HGA3T.js → build-H4DK3DMQ.js} +7 -7
- package/dist/{chunk-N7FVXZNI.js → chunk-4BSXZ5YZ.js} +31 -9
- package/dist/chunk-4BSXZ5YZ.js.map +1 -0
- package/dist/{chunk-VYKKWU36.js → chunk-4KGRPHM6.js} +3 -3
- package/dist/{chunk-CFQVOTHO.js → chunk-52MVUK5V.js} +2 -2
- package/dist/{chunk-TIYJEEVO.js → chunk-66QOCD5N.js} +1 -1
- package/dist/chunk-66QOCD5N.js.map +1 -0
- package/dist/chunk-7JDMYTFZ.js +251 -0
- package/dist/chunk-7JDMYTFZ.js.map +1 -0
- package/dist/{chunk-7LSSNB7Y.js → chunk-7ZEHSSUP.js} +2 -2
- package/dist/chunk-A4UQY3M2.js +75 -0
- package/dist/chunk-A4UQY3M2.js.map +1 -0
- package/dist/{chunk-KSXA2NOJ.js → chunk-AZH27CPV.js} +10 -9
- package/dist/chunk-AZH27CPV.js.map +1 -0
- package/dist/{chunk-ELJKYFSH.js → chunk-BCQDYAOJ.js} +4 -4
- package/dist/{chunk-F2PWIRV4.js → chunk-BYUMEDDD.js} +2 -2
- package/dist/{chunk-CAXFWFV6.js → chunk-ECP77QGE.js} +4 -4
- package/dist/{chunk-ZA575VLF.js → chunk-GDS2HXSW.js} +4 -4
- package/dist/{chunk-UDRZY65Y.js → chunk-HSGZW3ID.js} +2 -2
- package/dist/{chunk-WFQ5CLTR.js → chunk-IWIIOFEB.js} +56 -5
- package/dist/chunk-IWIIOFEB.js.map +1 -0
- package/dist/{chunk-VWGKGNJP.js → chunk-KBEIQP4G.js} +3 -1
- package/dist/chunk-KBEIQP4G.js.map +1 -0
- package/dist/{chunk-LZBSLO6S.js → chunk-L4CN7YQT.js} +381 -8
- package/dist/chunk-L4CN7YQT.js.map +1 -0
- package/dist/{chunk-HBJITKSZ.js → chunk-LFVRG6UU.js} +159 -3
- package/dist/chunk-LFVRG6UU.js.map +1 -0
- package/dist/{chunk-64HCHVJM.js → chunk-PLI3JQWT.js} +2 -2
- package/dist/{chunk-USJSNHGG.js → chunk-PVW6JE7E.js} +3 -3
- package/dist/{chunk-3K3WY3BN.js → chunk-QJX6ICWY.js} +4 -4
- package/dist/{chunk-C7YW5IMS.js → chunk-RODL2HVY.js} +17 -6
- package/dist/{chunk-C7YW5IMS.js.map → chunk-RODL2HVY.js.map} +1 -1
- package/dist/{chunk-NEPH2O4C.js → chunk-SSASIBDJ.js} +3 -3
- package/dist/{chunk-GCPAZSGV.js → chunk-THS5L54H.js} +150 -3
- package/dist/chunk-THS5L54H.js.map +1 -0
- package/dist/{chunk-5V74K5ZA.js → chunk-TVH67KEO.js} +25 -2
- package/dist/chunk-TVH67KEO.js.map +1 -0
- package/dist/{chunk-ENMTWE74.js → chunk-VZYSM7N7.js} +2 -2
- package/dist/{chunk-77VLG2KP.js → chunk-WNXYC7J4.js} +18 -16
- package/dist/chunk-WNXYC7J4.js.map +1 -0
- package/dist/{chunk-WZYBHD7P.js → chunk-XHNACIHO.js} +2 -2
- package/dist/{chunk-XAMBIVXE.js → chunk-XJHQVOT6.js} +2 -2
- package/dist/{chunk-O36JLYNW.js → chunk-XU5A6BWA.js} +4 -7
- package/dist/chunk-XU5A6BWA.js.map +1 -0
- package/dist/{chunk-TB6475EW.js → chunk-YAVVDZVF.js} +3 -3
- package/dist/{cleanup-DB7EFBF3.js → cleanup-25PCP2EM.js} +16 -16
- package/dist/cli.js +107 -157
- package/dist/cli.js.map +1 -1
- package/dist/{commit-NGMDWWAP.js → commit-SS77KUNX.js} +10 -10
- package/dist/{compile-CT7IR7O2.js → compile-ZOAODFN2.js} +7 -7
- package/dist/{contribute-GXKOIA42.js → contribute-7USRBWRM.js} +6 -6
- package/dist/{dev-server-OAP3RZC6.js → dev-server-TYYJM3XA.js} +9 -9
- package/dist/{feedback-ZLAX3BVL.js → feedback-HZVLOTQJ.js} +9 -9
- package/dist/{git-ENLT2VNI.js → git-GUNOPP4Q.js} +4 -4
- package/dist/hooks/iloom-hook.js +75 -3
- package/dist/{ignite-HA2OJF6Z.js → ignite-CPXPZ4ZD.js} +85 -25
- package/dist/ignite-CPXPZ4ZD.js.map +1 -0
- package/dist/index.d.ts +85 -2
- package/dist/index.js +133 -73
- package/dist/index.js.map +1 -1
- package/dist/init-MZBIXQ7V.js +21 -0
- package/dist/{lint-HAVU4U34.js → lint-MDVUV3W2.js} +7 -7
- package/dist/mcp/issue-management-server.js +832 -7
- package/dist/mcp/issue-management-server.js.map +1 -1
- package/dist/{neon-helpers-3KBC4A3Y.js → neon-helpers-VVFFTLXE.js} +3 -3
- package/dist/{open-IN3LUZXX.js → open-2LPZ7XXW.js} +9 -9
- package/dist/plan-N3YDCOIV.js +371 -0
- package/dist/plan-N3YDCOIV.js.map +1 -0
- package/dist/{projects-CTRTTMSK.js → projects-325GEEGJ.js} +2 -2
- package/dist/{prompt-3SAZYRUN.js → prompt-ONNPSNKM.js} +2 -2
- package/dist/prompts/init-prompt.txt +57 -1
- package/dist/prompts/issue-prompt.txt +51 -3
- package/dist/prompts/plan-prompt.txt +435 -0
- package/dist/prompts/pr-prompt.txt +38 -0
- package/dist/prompts/regular-prompt.txt +53 -3
- package/dist/{rebase-RLEVFHWN.js → rebase-7YS3N274.js} +6 -6
- package/dist/{recap-ZKGHZCX6.js → recap-GSXFEOD6.js} +6 -6
- package/dist/{run-QEIS2EH2.js → run-XPGCMFFO.js} +9 -9
- package/dist/schema/settings.schema.json +57 -1
- package/dist/{shell-2NNSIU34.js → shell-2SPM3Z5O.js} +6 -6
- package/dist/{summary-2KLNHVTN.js → summary-5UWNLAI5.js} +43 -12
- package/dist/summary-5UWNLAI5.js.map +1 -0
- package/dist/{test-75WAA6DU.js → test-N2725YRI.js} +7 -7
- package/dist/{test-git-E2BLXR6M.js → test-git-ZPSPA2TP.js} +4 -4
- package/dist/{test-prefix-A7JGGYAA.js → test-prefix-6DLB2BHE.js} +4 -4
- package/dist/{test-webserver-J6SMNLU2.js → test-webserver-XLJ2TZFP.js} +6 -6
- package/package.json +1 -1
- package/dist/GitHubService-O7U4UQ7N.js +0 -12
- package/dist/agents/iloom-issue-reviewer.md +0 -139
- package/dist/chunk-5V74K5ZA.js.map +0 -1
- package/dist/chunk-77VLG2KP.js.map +0 -1
- package/dist/chunk-GCPAZSGV.js.map +0 -1
- package/dist/chunk-HBJITKSZ.js.map +0 -1
- package/dist/chunk-KSXA2NOJ.js.map +0 -1
- package/dist/chunk-LZBSLO6S.js.map +0 -1
- package/dist/chunk-N7FVXZNI.js.map +0 -1
- package/dist/chunk-O36JLYNW.js.map +0 -1
- package/dist/chunk-TIYJEEVO.js.map +0 -1
- package/dist/chunk-VWGKGNJP.js.map +0 -1
- package/dist/chunk-WFQ5CLTR.js.map +0 -1
- package/dist/chunk-ZX3GTM7O.js +0 -119
- package/dist/chunk-ZX3GTM7O.js.map +0 -1
- package/dist/ignite-HA2OJF6Z.js.map +0 -1
- package/dist/init-S6IEGRSX.js +0 -21
- package/dist/summary-2KLNHVTN.js.map +0 -1
- /package/dist/{ClaudeContextManager-Y2YJC6BU.js.map → ClaudeContextManager-RDP6CLK6.js.map} +0 -0
- /package/dist/{ClaudeService-NDVFQRKC.js.map → ClaudeService-FKPOQRA4.js.map} +0 -0
- /package/dist/{GitHubService-O7U4UQ7N.js.map → GitHubService-ACZVNTJE.js.map} +0 -0
- /package/dist/{LoomLauncher-U2B3VHPC.js.map → LoomLauncher-NHZMEVTQ.js.map} +0 -0
- /package/dist/{MetadataManager-XJ2YB762.js.map → MetadataManager-W3C54UYT.js.map} +0 -0
- /package/dist/{PRManager-6ZJZRG5Z.js.map → PRManager-XLTVG6YG.js.map} +0 -0
- /package/dist/{PromptTemplateManager-7L3HJQQU.js.map → PromptTemplateManager-OUYDHOPI.js.map} +0 -0
- /package/dist/{SettingsManager-YU4VYPTW.js.map → SettingsManager-VCVLL32H.js.map} +0 -0
- /package/dist/{SettingsMigrationManager-KZKDG66H.js.map → SettingsMigrationManager-LEBMJP3B.js.map} +0 -0
- /package/dist/{build-HQ5HGA3T.js.map → build-H4DK3DMQ.js.map} +0 -0
- /package/dist/{chunk-VYKKWU36.js.map → chunk-4KGRPHM6.js.map} +0 -0
- /package/dist/{chunk-CFQVOTHO.js.map → chunk-52MVUK5V.js.map} +0 -0
- /package/dist/{chunk-7LSSNB7Y.js.map → chunk-7ZEHSSUP.js.map} +0 -0
- /package/dist/{chunk-ELJKYFSH.js.map → chunk-BCQDYAOJ.js.map} +0 -0
- /package/dist/{chunk-F2PWIRV4.js.map → chunk-BYUMEDDD.js.map} +0 -0
- /package/dist/{chunk-CAXFWFV6.js.map → chunk-ECP77QGE.js.map} +0 -0
- /package/dist/{chunk-ZA575VLF.js.map → chunk-GDS2HXSW.js.map} +0 -0
- /package/dist/{chunk-UDRZY65Y.js.map → chunk-HSGZW3ID.js.map} +0 -0
- /package/dist/{chunk-64HCHVJM.js.map → chunk-PLI3JQWT.js.map} +0 -0
- /package/dist/{chunk-USJSNHGG.js.map → chunk-PVW6JE7E.js.map} +0 -0
- /package/dist/{chunk-3K3WY3BN.js.map → chunk-QJX6ICWY.js.map} +0 -0
- /package/dist/{chunk-NEPH2O4C.js.map → chunk-SSASIBDJ.js.map} +0 -0
- /package/dist/{chunk-ENMTWE74.js.map → chunk-VZYSM7N7.js.map} +0 -0
- /package/dist/{chunk-WZYBHD7P.js.map → chunk-XHNACIHO.js.map} +0 -0
- /package/dist/{chunk-XAMBIVXE.js.map → chunk-XJHQVOT6.js.map} +0 -0
- /package/dist/{chunk-TB6475EW.js.map → chunk-YAVVDZVF.js.map} +0 -0
- /package/dist/{cleanup-DB7EFBF3.js.map → cleanup-25PCP2EM.js.map} +0 -0
- /package/dist/{commit-NGMDWWAP.js.map → commit-SS77KUNX.js.map} +0 -0
- /package/dist/{compile-CT7IR7O2.js.map → compile-ZOAODFN2.js.map} +0 -0
- /package/dist/{contribute-GXKOIA42.js.map → contribute-7USRBWRM.js.map} +0 -0
- /package/dist/{dev-server-OAP3RZC6.js.map → dev-server-TYYJM3XA.js.map} +0 -0
- /package/dist/{feedback-ZLAX3BVL.js.map → feedback-HZVLOTQJ.js.map} +0 -0
- /package/dist/{git-ENLT2VNI.js.map → git-GUNOPP4Q.js.map} +0 -0
- /package/dist/{init-S6IEGRSX.js.map → init-MZBIXQ7V.js.map} +0 -0
- /package/dist/{lint-HAVU4U34.js.map → lint-MDVUV3W2.js.map} +0 -0
- /package/dist/{neon-helpers-3KBC4A3Y.js.map → neon-helpers-VVFFTLXE.js.map} +0 -0
- /package/dist/{open-IN3LUZXX.js.map → open-2LPZ7XXW.js.map} +0 -0
- /package/dist/{projects-CTRTTMSK.js.map → projects-325GEEGJ.js.map} +0 -0
- /package/dist/{prompt-3SAZYRUN.js.map → prompt-ONNPSNKM.js.map} +0 -0
- /package/dist/{rebase-RLEVFHWN.js.map → rebase-7YS3N274.js.map} +0 -0
- /package/dist/{recap-ZKGHZCX6.js.map → recap-GSXFEOD6.js.map} +0 -0
- /package/dist/{run-QEIS2EH2.js.map → run-XPGCMFFO.js.map} +0 -0
- /package/dist/{shell-2NNSIU34.js.map → shell-2SPM3Z5O.js.map} +0 -0
- /package/dist/{test-75WAA6DU.js.map → test-N2725YRI.js.map} +0 -0
- /package/dist/{test-git-E2BLXR6M.js.map → test-git-ZPSPA2TP.js.map} +0 -0
- /package/dist/{test-prefix-A7JGGYAA.js.map → test-prefix-6DLB2BHE.js.map} +0 -0
- /package/dist/{test-webserver-J6SMNLU2.js.map → test-webserver-XLJ2TZFP.js.map} +0 -0
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
SessionSummaryService
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-AZH27CPV.js";
|
|
5
5
|
import "./chunk-NXMDEL3F.js";
|
|
6
6
|
import {
|
|
7
7
|
CLIIsolationManager,
|
|
@@ -9,65 +9,67 @@ import {
|
|
|
9
9
|
EnvironmentManager,
|
|
10
10
|
LoomManager,
|
|
11
11
|
ResourceCleanup
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-WNXYC7J4.js";
|
|
13
|
+
import {
|
|
14
|
+
launchFirstRunSetup,
|
|
15
|
+
needsFirstRunSetup
|
|
16
|
+
} from "./chunk-A4UQY3M2.js";
|
|
13
17
|
import {
|
|
14
18
|
BuildRunner,
|
|
15
19
|
MergeManager
|
|
16
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-ECP77QGE.js";
|
|
17
21
|
import {
|
|
18
22
|
IssueTrackerFactory
|
|
19
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-QJX6ICWY.js";
|
|
20
24
|
import {
|
|
21
25
|
ProcessManager
|
|
22
|
-
} from "./chunk-
|
|
23
|
-
import "./chunk-
|
|
26
|
+
} from "./chunk-XHNACIHO.js";
|
|
27
|
+
import "./chunk-52MVUK5V.js";
|
|
24
28
|
import {
|
|
25
|
-
IdentifierParser
|
|
26
|
-
|
|
29
|
+
IdentifierParser,
|
|
30
|
+
matchIssueIdentifier
|
|
31
|
+
} from "./chunk-TVH67KEO.js";
|
|
27
32
|
import {
|
|
28
33
|
createNeonProviderFromSettings
|
|
29
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-7ZEHSSUP.js";
|
|
30
35
|
import {
|
|
31
|
-
InitCommand,
|
|
32
36
|
ShellCompletion
|
|
33
|
-
} from "./chunk-
|
|
34
|
-
import
|
|
35
|
-
|
|
36
|
-
} from "./chunk-Q7POFB5Q.js";
|
|
37
|
-
import "./chunk-F2PWIRV4.js";
|
|
37
|
+
} from "./chunk-RODL2HVY.js";
|
|
38
|
+
import "./chunk-Q7POFB5Q.js";
|
|
39
|
+
import "./chunk-BYUMEDDD.js";
|
|
38
40
|
import {
|
|
39
41
|
IssueEnhancementService,
|
|
40
42
|
capitalizeFirstLetter
|
|
41
|
-
} from "./chunk-
|
|
42
|
-
import "./chunk-
|
|
43
|
+
} from "./chunk-4KGRPHM6.js";
|
|
44
|
+
import "./chunk-XJHQVOT6.js";
|
|
43
45
|
import {
|
|
44
46
|
ProjectCapabilityDetector
|
|
45
47
|
} from "./chunk-7GLZVDPQ.js";
|
|
46
48
|
import {
|
|
47
49
|
AgentManager
|
|
48
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-4BSXZ5YZ.js";
|
|
49
51
|
import {
|
|
50
52
|
CommitManager,
|
|
51
53
|
UserAbortedCommitError,
|
|
52
54
|
ValidationRunner
|
|
53
|
-
} from "./chunk-
|
|
55
|
+
} from "./chunk-SSASIBDJ.js";
|
|
54
56
|
import {
|
|
55
57
|
installDependencies
|
|
56
58
|
} from "./chunk-RD7I2Q2F.js";
|
|
57
59
|
import {
|
|
58
60
|
GitWorktreeManager
|
|
59
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-HSGZW3ID.js";
|
|
60
62
|
import "./chunk-XPKN3QWY.js";
|
|
61
63
|
import {
|
|
62
64
|
PRManager
|
|
63
|
-
} from "./chunk-
|
|
65
|
+
} from "./chunk-YAVVDZVF.js";
|
|
64
66
|
import {
|
|
65
67
|
openBrowser
|
|
66
68
|
} from "./chunk-YETJNRQM.js";
|
|
67
69
|
import {
|
|
68
70
|
IssueManagementProviderFactory
|
|
69
|
-
} from "./chunk-
|
|
70
|
-
import "./chunk-
|
|
71
|
+
} from "./chunk-L4CN7YQT.js";
|
|
72
|
+
import "./chunk-LFVRG6UU.js";
|
|
71
73
|
import {
|
|
72
74
|
getConfiguredRepoFromSettings,
|
|
73
75
|
hasMultipleRemotes
|
|
@@ -79,9 +81,9 @@ import {
|
|
|
79
81
|
} from "./chunk-O7VL5N6S.js";
|
|
80
82
|
import {
|
|
81
83
|
ClaudeContextManager
|
|
82
|
-
} from "./chunk-
|
|
83
|
-
import "./chunk-
|
|
84
|
-
import "./chunk-
|
|
84
|
+
} from "./chunk-PLI3JQWT.js";
|
|
85
|
+
import "./chunk-XU5A6BWA.js";
|
|
86
|
+
import "./chunk-66QOCD5N.js";
|
|
85
87
|
import {
|
|
86
88
|
extractSettingsOverrides
|
|
87
89
|
} from "./chunk-GYCR2LOU.js";
|
|
@@ -95,27 +97,26 @@ import {
|
|
|
95
97
|
findMainWorktreePathWithSettings,
|
|
96
98
|
findPlaceholderCommitSha,
|
|
97
99
|
getMergeTargetBranch,
|
|
98
|
-
getRepoRoot,
|
|
99
100
|
isPlaceholderCommit,
|
|
100
101
|
isValidGitRepo,
|
|
101
102
|
pushBranchToRemote,
|
|
102
103
|
removePlaceholderCommitFromHead,
|
|
103
104
|
removePlaceholderCommitFromHistory
|
|
104
|
-
} from "./chunk-
|
|
105
|
+
} from "./chunk-GDS2HXSW.js";
|
|
105
106
|
import {
|
|
106
107
|
SettingsManager
|
|
107
|
-
} from "./chunk-
|
|
108
|
+
} from "./chunk-IWIIOFEB.js";
|
|
108
109
|
import {
|
|
109
110
|
MetadataManager
|
|
110
|
-
} from "./chunk-
|
|
111
|
+
} from "./chunk-KBEIQP4G.js";
|
|
111
112
|
import {
|
|
112
113
|
GitHubService
|
|
113
|
-
} from "./chunk-
|
|
114
|
-
import "./chunk-
|
|
114
|
+
} from "./chunk-PVW6JE7E.js";
|
|
115
|
+
import "./chunk-THS5L54H.js";
|
|
115
116
|
import {
|
|
116
117
|
promptConfirmation,
|
|
117
118
|
waitForKeypress
|
|
118
|
-
} from "./chunk-
|
|
119
|
+
} from "./chunk-7JDMYTFZ.js";
|
|
119
120
|
import "./chunk-433MOLAU.js";
|
|
120
121
|
import "./chunk-IGKPPACU.js";
|
|
121
122
|
import {
|
|
@@ -132,65 +133,7 @@ import {
|
|
|
132
133
|
import { program, Option } from "commander";
|
|
133
134
|
|
|
134
135
|
// src/commands/start.ts
|
|
135
|
-
import path2 from "path";
|
|
136
|
-
|
|
137
|
-
// src/utils/first-run-setup.ts
|
|
138
|
-
import { existsSync } from "fs";
|
|
139
|
-
import { readFile } from "fs/promises";
|
|
140
136
|
import path from "path";
|
|
141
|
-
async function getProjectRoot() {
|
|
142
|
-
const repoRoot = await getRepoRoot();
|
|
143
|
-
if (repoRoot) {
|
|
144
|
-
logger.debug(`getProjectRoot: Using git repo root: ${repoRoot}`);
|
|
145
|
-
return repoRoot;
|
|
146
|
-
}
|
|
147
|
-
const cwd = process.cwd();
|
|
148
|
-
logger.debug(`getProjectRoot: Not in git repo, using cwd: ${cwd}`);
|
|
149
|
-
return cwd;
|
|
150
|
-
}
|
|
151
|
-
async function needsFirstRunSetup() {
|
|
152
|
-
const projectRoot = await getProjectRoot();
|
|
153
|
-
const firstRunManager = new FirstRunManager();
|
|
154
|
-
const isConfigured = await firstRunManager.isProjectConfigured(projectRoot);
|
|
155
|
-
if (isConfigured) {
|
|
156
|
-
logger.debug("needsFirstRunSetup: Project is tracked as configured globally");
|
|
157
|
-
return false;
|
|
158
|
-
}
|
|
159
|
-
const iloomDir = path.join(projectRoot, ".iloom");
|
|
160
|
-
if (!existsSync(iloomDir)) {
|
|
161
|
-
return true;
|
|
162
|
-
}
|
|
163
|
-
const settingsPath = path.join(iloomDir, "settings.json");
|
|
164
|
-
const settingsLocalPath = path.join(iloomDir, "settings.local.json");
|
|
165
|
-
const hasSettings = await hasNonEmptySettings(settingsPath);
|
|
166
|
-
const hasLocalSettings = await hasNonEmptySettings(settingsLocalPath);
|
|
167
|
-
return !hasSettings && !hasLocalSettings;
|
|
168
|
-
}
|
|
169
|
-
async function hasNonEmptySettings(filePath) {
|
|
170
|
-
if (!existsSync(filePath)) return false;
|
|
171
|
-
try {
|
|
172
|
-
const content = await readFile(filePath, "utf-8");
|
|
173
|
-
const parsed = JSON.parse(content);
|
|
174
|
-
return Object.keys(parsed).length > 0;
|
|
175
|
-
} catch {
|
|
176
|
-
return false;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
async function launchFirstRunSetup() {
|
|
180
|
-
logger.info("First-time project setup detected.");
|
|
181
|
-
logger.info(
|
|
182
|
-
"iloom will now launch an interactive configuration session with Claude."
|
|
183
|
-
);
|
|
184
|
-
const { waitForKeypress: waitForKeypress2 } = await import("./prompt-3SAZYRUN.js");
|
|
185
|
-
await waitForKeypress2("Press any key to start configuration...");
|
|
186
|
-
const initCommand = new InitCommand();
|
|
187
|
-
await initCommand.execute(
|
|
188
|
-
"Help me configure iloom settings for this project. This is my first time using iloom here. Note: Your iloom command will execute once we are done with configuration changes."
|
|
189
|
-
);
|
|
190
|
-
logger.info("Configuration complete! Continuing with your original command...");
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
// src/commands/start.ts
|
|
194
137
|
var StartCommand = class {
|
|
195
138
|
constructor(issueTracker, loomManager, _agentManager, settingsManager) {
|
|
196
139
|
this.loomManager = null;
|
|
@@ -278,7 +221,7 @@ var StartCommand = class {
|
|
|
278
221
|
const parsed = await this.parseInput(input.identifier, repo);
|
|
279
222
|
await this.validateInput(parsed, repo);
|
|
280
223
|
if (parentLoom) {
|
|
281
|
-
const { isInteractiveEnvironment, promptConfirmation: promptConfirmation2 } = await import("./prompt-
|
|
224
|
+
const { isInteractiveEnvironment, promptConfirmation: promptConfirmation2 } = await import("./prompt-ONNPSNKM.js");
|
|
282
225
|
const parentDisplay = parentLoom.type === "issue" ? `issue #${parentLoom.identifier}` : parentLoom.type === "pr" ? `PR #${parentLoom.identifier}` : `branch ${parentLoom.identifier}`;
|
|
283
226
|
if (input.options.childLoom === true) {
|
|
284
227
|
getLogger().info(`Creating as child loom of ${parentDisplay} (--child-loom flag)`);
|
|
@@ -326,7 +269,7 @@ var StartCommand = class {
|
|
|
326
269
|
if (isJsonMode) {
|
|
327
270
|
throw new Error("JSON mode does not support bypassPermissions confirmation prompt");
|
|
328
271
|
}
|
|
329
|
-
const { promptConfirmation: promptConfirmation2 } = await import("./prompt-
|
|
272
|
+
const { promptConfirmation: promptConfirmation2 } = await import("./prompt-ONNPSNKM.js");
|
|
330
273
|
const confirmed = await promptConfirmation2(
|
|
331
274
|
"WARNING: bypassPermissions mode will allow Claude to execute all tool calls without confirmation. This can be dangerous. Do you want to proceed?"
|
|
332
275
|
);
|
|
@@ -423,9 +366,8 @@ var StartCommand = class {
|
|
|
423
366
|
originalInput: trimmedIdentifier
|
|
424
367
|
};
|
|
425
368
|
}
|
|
426
|
-
const
|
|
427
|
-
|
|
428
|
-
if (linearMatch == null ? void 0 : linearMatch[1]) {
|
|
369
|
+
const identifierMatch = matchIssueIdentifier(trimmedIdentifier);
|
|
370
|
+
if (identifierMatch.type === "linear" && identifierMatch.identifier) {
|
|
429
371
|
const detection = await this.issueTracker.detectInputType(
|
|
430
372
|
trimmedIdentifier,
|
|
431
373
|
repo
|
|
@@ -439,13 +381,11 @@ var StartCommand = class {
|
|
|
439
381
|
};
|
|
440
382
|
}
|
|
441
383
|
throw new Error(
|
|
442
|
-
`Could not find Linear issue ${
|
|
384
|
+
`Could not find Linear issue ${identifierMatch.identifier}`
|
|
443
385
|
);
|
|
444
386
|
}
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
if (numericMatch == null ? void 0 : numericMatch[1]) {
|
|
448
|
-
const number = parseInt(numericMatch[1], 10);
|
|
387
|
+
if (identifierMatch.type === "numeric" && identifierMatch.identifier) {
|
|
388
|
+
const number = parseInt(identifierMatch.identifier, 10);
|
|
449
389
|
if (this.issueTracker.supportsPullRequests) {
|
|
450
390
|
const detection = await this.issueTracker.detectInputType(
|
|
451
391
|
trimmedIdentifier,
|
|
@@ -582,7 +522,7 @@ var StartCommand = class {
|
|
|
582
522
|
if (loom.path === mainWorktreePath) {
|
|
583
523
|
return false;
|
|
584
524
|
}
|
|
585
|
-
return cwd === loom.path || cwd.startsWith(loom.path +
|
|
525
|
+
return cwd === loom.path || cwd.startsWith(loom.path + path.sep);
|
|
586
526
|
});
|
|
587
527
|
if (!parentLoom) {
|
|
588
528
|
return null;
|
|
@@ -778,7 +718,7 @@ var EnhanceCommand = class {
|
|
|
778
718
|
};
|
|
779
719
|
|
|
780
720
|
// src/commands/finish.ts
|
|
781
|
-
import
|
|
721
|
+
import path2 from "path";
|
|
782
722
|
var FinishCommand = class {
|
|
783
723
|
constructor(issueTracker, gitWorktreeManager, validationRunner, commitManager, mergeManager, identifierParser, resourceCleanup, buildRunner, settingsManager, loomManager) {
|
|
784
724
|
const envResult = loadEnvIntoProcess();
|
|
@@ -980,7 +920,7 @@ var FinishCommand = class {
|
|
|
980
920
|
* Ports logic from merge-current-issue.sh lines 30-52
|
|
981
921
|
*/
|
|
982
922
|
async autoDetectFromCurrentDirectory() {
|
|
983
|
-
const currentDir =
|
|
923
|
+
const currentDir = path2.basename(process.cwd());
|
|
984
924
|
const prPattern = /_pr_(\d+)$/;
|
|
985
925
|
const prMatch = currentDir.match(prPattern);
|
|
986
926
|
if (prMatch == null ? void 0 : prMatch[1]) {
|
|
@@ -1244,7 +1184,7 @@ var FinishCommand = class {
|
|
|
1244
1184
|
return;
|
|
1245
1185
|
}
|
|
1246
1186
|
if (mergeBehavior.mode === "github-draft-pr") {
|
|
1247
|
-
const { MetadataManager: MetadataManager3 } = await import("./MetadataManager-
|
|
1187
|
+
const { MetadataManager: MetadataManager3 } = await import("./MetadataManager-W3C54UYT.js");
|
|
1248
1188
|
const metadataManager2 = new MetadataManager3();
|
|
1249
1189
|
const metadata = await metadataManager2.readMetadata(worktree.path);
|
|
1250
1190
|
getLogger().debug(`Draft PR mode: worktree=${worktree.path}, draftPrNumber=${(metadata == null ? void 0 : metadata.draftPrNumber) ?? "none"}`);
|
|
@@ -1345,7 +1285,7 @@ var FinishCommand = class {
|
|
|
1345
1285
|
getLogger().debug("Skipping build verification (--skip-build flag provided)");
|
|
1346
1286
|
}
|
|
1347
1287
|
await this.generateSessionSummaryIfConfigured(parsed, worktree, options);
|
|
1348
|
-
const { MetadataManager: MetadataManager2 } = await import("./MetadataManager-
|
|
1288
|
+
const { MetadataManager: MetadataManager2 } = await import("./MetadataManager-W3C54UYT.js");
|
|
1349
1289
|
const metadataManager = new MetadataManager2();
|
|
1350
1290
|
if (!options.dryRun) {
|
|
1351
1291
|
await metadataManager.archiveMetadata(worktree.path);
|
|
@@ -1374,7 +1314,7 @@ var FinishCommand = class {
|
|
|
1374
1314
|
"Cannot cleanup PR with uncommitted changes. Commit or stash changes, then run again with --force to cleanup anyway."
|
|
1375
1315
|
);
|
|
1376
1316
|
}
|
|
1377
|
-
const { MetadataManager: MetadataManager2 } = await import("./MetadataManager-
|
|
1317
|
+
const { MetadataManager: MetadataManager2 } = await import("./MetadataManager-W3C54UYT.js");
|
|
1378
1318
|
const metadataManager = new MetadataManager2();
|
|
1379
1319
|
if (!options.dryRun) {
|
|
1380
1320
|
await metadataManager.archiveMetadata(worktree.path);
|
|
@@ -1506,7 +1446,7 @@ var FinishCommand = class {
|
|
|
1506
1446
|
}
|
|
1507
1447
|
finishResult.prUrl = prResult.url;
|
|
1508
1448
|
await this.generateSessionSummaryIfConfigured(parsed, worktree, options, prResult.number);
|
|
1509
|
-
const { MetadataManager: MetadataManager2 } = await import("./MetadataManager-
|
|
1449
|
+
const { MetadataManager: MetadataManager2 } = await import("./MetadataManager-W3C54UYT.js");
|
|
1510
1450
|
const metadataManager = new MetadataManager2();
|
|
1511
1451
|
if (!options.dryRun) {
|
|
1512
1452
|
await metadataManager.archiveMetadata(worktree.path);
|
|
@@ -1847,8 +1787,8 @@ var FinishCommand = class {
|
|
|
1847
1787
|
* Check if current working directory is within the target worktree
|
|
1848
1788
|
*/
|
|
1849
1789
|
isRunningFromWithinWorktree(worktreePath) {
|
|
1850
|
-
const normalizedCwd =
|
|
1851
|
-
const normalizedWorktree =
|
|
1790
|
+
const normalizedCwd = path2.normalize(process.cwd());
|
|
1791
|
+
const normalizedWorktree = path2.normalize(worktreePath);
|
|
1852
1792
|
return normalizedCwd.startsWith(normalizedWorktree);
|
|
1853
1793
|
}
|
|
1854
1794
|
/**
|
|
@@ -1903,12 +1843,12 @@ function determineLoomType(worktree) {
|
|
|
1903
1843
|
}
|
|
1904
1844
|
return "branch";
|
|
1905
1845
|
}
|
|
1906
|
-
function extractPRNumbers(
|
|
1907
|
-
if (!
|
|
1846
|
+
function extractPRNumbers(path5) {
|
|
1847
|
+
if (!path5) {
|
|
1908
1848
|
return [];
|
|
1909
1849
|
}
|
|
1910
1850
|
const prPathPattern = /_pr_(\d+)$/;
|
|
1911
|
-
const match =
|
|
1851
|
+
const match = path5.match(prPathPattern);
|
|
1912
1852
|
if (match == null ? void 0 : match[1]) {
|
|
1913
1853
|
return [match[1]];
|
|
1914
1854
|
}
|
|
@@ -1992,12 +1932,12 @@ import fs3 from "fs-extra";
|
|
|
1992
1932
|
|
|
1993
1933
|
// src/lib/VersionMigrationManager.ts
|
|
1994
1934
|
import fs2 from "fs-extra";
|
|
1995
|
-
import
|
|
1935
|
+
import path4 from "path";
|
|
1996
1936
|
import os2 from "os";
|
|
1997
1937
|
|
|
1998
1938
|
// src/migrations/index.ts
|
|
1999
1939
|
import fs from "fs-extra";
|
|
2000
|
-
import
|
|
1940
|
+
import path3 from "path";
|
|
2001
1941
|
import os from "os";
|
|
2002
1942
|
var migrations = [
|
|
2003
1943
|
// v0.6.0 is the baseline - no migrations needed
|
|
@@ -2005,9 +1945,9 @@ var migrations = [
|
|
|
2005
1945
|
version: "0.6.1",
|
|
2006
1946
|
description: "Add global gitignore for .iloom/settings.local.json",
|
|
2007
1947
|
migrate: async () => {
|
|
2008
|
-
const globalIgnorePath =
|
|
1948
|
+
const globalIgnorePath = path3.join(os.homedir(), ".config", "git", "ignore");
|
|
2009
1949
|
const pattern = "**/.iloom/settings.local.json";
|
|
2010
|
-
await fs.ensureDir(
|
|
1950
|
+
await fs.ensureDir(path3.dirname(globalIgnorePath));
|
|
2011
1951
|
let content = "";
|
|
2012
1952
|
try {
|
|
2013
1953
|
content = await fs.readFile(globalIgnorePath, "utf-8");
|
|
@@ -2025,9 +1965,9 @@ var migrations = [
|
|
|
2025
1965
|
version: "0.7.1",
|
|
2026
1966
|
description: "Add global gitignore for .iloom/package.iloom.local.json",
|
|
2027
1967
|
migrate: async () => {
|
|
2028
|
-
const globalIgnorePath =
|
|
1968
|
+
const globalIgnorePath = path3.join(os.homedir(), ".config", "git", "ignore");
|
|
2029
1969
|
const pattern = "**/.iloom/package.iloom.local.json";
|
|
2030
|
-
await fs.ensureDir(
|
|
1970
|
+
await fs.ensureDir(path3.dirname(globalIgnorePath));
|
|
2031
1971
|
let content = "";
|
|
2032
1972
|
try {
|
|
2033
1973
|
content = await fs.readFile(globalIgnorePath, "utf-8");
|
|
@@ -2051,7 +1991,7 @@ var VersionMigrationManager = class {
|
|
|
2051
1991
|
}
|
|
2052
1992
|
// Return path to migration state file
|
|
2053
1993
|
getMigrationStatePath() {
|
|
2054
|
-
return
|
|
1994
|
+
return path4.join(os2.homedir(), ".config", "iloom-ai", "migration-state.json");
|
|
2055
1995
|
}
|
|
2056
1996
|
// Get effective version, respecting ILOOM_VERSION_OVERRIDE env var
|
|
2057
1997
|
// packageVersion is the version from package.json passed by caller
|
|
@@ -2091,7 +2031,7 @@ var VersionMigrationManager = class {
|
|
|
2091
2031
|
async saveMigrationState(version, newFailures = []) {
|
|
2092
2032
|
const statePath = this.getMigrationStatePath();
|
|
2093
2033
|
try {
|
|
2094
|
-
await fs2.ensureDir(
|
|
2034
|
+
await fs2.ensureDir(path4.dirname(statePath));
|
|
2095
2035
|
const existingState = await this.loadFullMigrationState();
|
|
2096
2036
|
const existingFailures = existingState.failedMigrations ?? [];
|
|
2097
2037
|
const allFailures = [...existingFailures];
|
|
@@ -2195,7 +2135,7 @@ program.name("iloom").description(packageJson.description).version(packageJson.v
|
|
|
2195
2135
|
} catch {
|
|
2196
2136
|
}
|
|
2197
2137
|
try {
|
|
2198
|
-
const { SettingsMigrationManager } = await import("./SettingsMigrationManager-
|
|
2138
|
+
const { SettingsMigrationManager } = await import("./SettingsMigrationManager-LEBMJP3B.js");
|
|
2199
2139
|
const migrationManager = new SettingsMigrationManager();
|
|
2200
2140
|
await migrationManager.migrateSettingsIfNeeded();
|
|
2201
2141
|
} catch (error) {
|
|
@@ -2332,18 +2272,18 @@ async function autoLaunchInitForMultipleRemotes() {
|
|
|
2332
2272
|
logger.info("iloom will now launch an interactive configuration session with Claude");
|
|
2333
2273
|
logger.info("to help you select which remote to use for GitHub operations.");
|
|
2334
2274
|
logger.info("");
|
|
2335
|
-
const { waitForKeypress: waitForKeypress2 } = await import("./prompt-
|
|
2275
|
+
const { waitForKeypress: waitForKeypress2 } = await import("./prompt-ONNPSNKM.js");
|
|
2336
2276
|
await waitForKeypress2("Press any key to start configuration...");
|
|
2337
2277
|
logger.info("");
|
|
2338
2278
|
try {
|
|
2339
|
-
const { InitCommand
|
|
2340
|
-
const initCommand = new
|
|
2279
|
+
const { InitCommand } = await import("./init-MZBIXQ7V.js");
|
|
2280
|
+
const initCommand = new InitCommand();
|
|
2341
2281
|
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.";
|
|
2342
2282
|
await initCommand.execute(customInitialMessage);
|
|
2343
2283
|
logger.info("");
|
|
2344
2284
|
logger.info("Configuration complete! Continuing with your original command...");
|
|
2345
2285
|
logger.info("");
|
|
2346
|
-
const { SettingsManager: SettingsManager2 } = await import("./SettingsManager-
|
|
2286
|
+
const { SettingsManager: SettingsManager2 } = await import("./SettingsManager-VCVLL32H.js");
|
|
2347
2287
|
const settingsManager = new SettingsManager2();
|
|
2348
2288
|
const settings = await settingsManager.loadSettings();
|
|
2349
2289
|
const { hasMultipleRemotes: hasMultipleRemotes2 } = await import("./remote-IJAMOEAP.js");
|
|
@@ -2373,7 +2313,7 @@ program.command("start").alias("new").alias("create").alias("up").description("C
|
|
|
2373
2313
|
logger.error("JSON mode requires identifier argument");
|
|
2374
2314
|
process.exit(1);
|
|
2375
2315
|
}
|
|
2376
|
-
const { promptInput } = await import("./prompt-
|
|
2316
|
+
const { promptInput } = await import("./prompt-ONNPSNKM.js");
|
|
2377
2317
|
finalIdentifier = await promptInput("Enter issue number, PR number (pr/123), or branch name");
|
|
2378
2318
|
if (!(finalIdentifier == null ? void 0 : finalIdentifier.trim())) {
|
|
2379
2319
|
logger.error("Identifier is required");
|
|
@@ -2437,7 +2377,7 @@ program.command("add-issue").alias("a").description("Create and enhance GitHub i
|
|
|
2437
2377
|
});
|
|
2438
2378
|
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) => {
|
|
2439
2379
|
try {
|
|
2440
|
-
const { FeedbackCommand } = await import("./feedback-
|
|
2380
|
+
const { FeedbackCommand } = await import("./feedback-HZVLOTQJ.js");
|
|
2441
2381
|
const command = new FeedbackCommand();
|
|
2442
2382
|
const feedbackOptions = {};
|
|
2443
2383
|
if (options.body !== void 0) {
|
|
@@ -2522,7 +2462,7 @@ program.command("finish").alias("dn").description("Merge work and cleanup worksp
|
|
|
2522
2462
|
program.command("commit").alias("c").description("Commit all uncommitted files with issue reference").option("-m, --message <text>", "Custom commit message (skip Claude generation)").option("--fixes", 'Use "Fixes #N" trailer instead of "Refs #N" (closes issue)').option("--no-review", "Skip commit message review prompt").option("--json", "Output result as JSON (implies --no-review)").option("--wip-commit", "Quick WIP commit: skip validations and pre-commit hooks").action(async (options) => {
|
|
2523
2463
|
const executeAction = async () => {
|
|
2524
2464
|
try {
|
|
2525
|
-
const { CommitCommand } = await import("./commit-
|
|
2465
|
+
const { CommitCommand } = await import("./commit-SS77KUNX.js");
|
|
2526
2466
|
const command = new CommitCommand();
|
|
2527
2467
|
const noReview = options.review === false || options.json === true;
|
|
2528
2468
|
const result = await command.execute({
|
|
@@ -2557,7 +2497,7 @@ program.command("commit").alias("c").description("Commit all uncommitted files w
|
|
|
2557
2497
|
});
|
|
2558
2498
|
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").action(async (options) => {
|
|
2559
2499
|
try {
|
|
2560
|
-
const { RebaseCommand } = await import("./rebase-
|
|
2500
|
+
const { RebaseCommand } = await import("./rebase-7YS3N274.js");
|
|
2561
2501
|
const command = new RebaseCommand();
|
|
2562
2502
|
await command.execute(options);
|
|
2563
2503
|
} catch (error) {
|
|
@@ -2566,12 +2506,12 @@ program.command("rebase").description("Rebase current branch on main with Claude
|
|
|
2566
2506
|
}
|
|
2567
2507
|
});
|
|
2568
2508
|
program.command("spin").alias("ignite").description("Launch Claude with auto-detected workspace context").addOption(
|
|
2569
|
-
new Option("--one-shot <mode>", "One-shot automation mode").choices(["default", "noReview", "bypassPermissions"])
|
|
2509
|
+
new Option("--one-shot <mode>", "One-shot automation mode").choices(["default", "noReview", "bypassPermissions"])
|
|
2570
2510
|
).action(async (options) => {
|
|
2571
2511
|
try {
|
|
2572
|
-
const { IgniteCommand } = await import("./ignite-
|
|
2512
|
+
const { IgniteCommand } = await import("./ignite-CPXPZ4ZD.js");
|
|
2573
2513
|
const command = new IgniteCommand();
|
|
2574
|
-
await command.execute(options.oneShot
|
|
2514
|
+
await command.execute(options.oneShot);
|
|
2575
2515
|
} catch (error) {
|
|
2576
2516
|
logger.error(`Failed to spin up loom: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
2577
2517
|
process.exit(1);
|
|
@@ -2580,7 +2520,7 @@ program.command("spin").alias("ignite").description("Launch Claude with auto-det
|
|
|
2580
2520
|
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) => {
|
|
2581
2521
|
try {
|
|
2582
2522
|
const args = (command == null ? void 0 : command.args) ? command.args.slice(identifier ? 1 : 0) : [];
|
|
2583
|
-
const { OpenCommand } = await import("./open-
|
|
2523
|
+
const { OpenCommand } = await import("./open-2LPZ7XXW.js");
|
|
2584
2524
|
const cmd = new OpenCommand();
|
|
2585
2525
|
const input = identifier ? { identifier, args } : { args };
|
|
2586
2526
|
await cmd.execute(input);
|
|
@@ -2592,7 +2532,7 @@ program.command("open").description("Open workspace in browser or run CLI tool")
|
|
|
2592
2532
|
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) => {
|
|
2593
2533
|
try {
|
|
2594
2534
|
const args = (command == null ? void 0 : command.args) ? command.args.slice(identifier ? 1 : 0) : [];
|
|
2595
|
-
const { RunCommand } = await import("./run-
|
|
2535
|
+
const { RunCommand } = await import("./run-XPGCMFFO.js");
|
|
2596
2536
|
const cmd = new RunCommand();
|
|
2597
2537
|
const input = identifier ? { identifier, args } : { args };
|
|
2598
2538
|
await cmd.execute(input);
|
|
@@ -2603,7 +2543,7 @@ program.command("run").description("Run CLI tool or open workspace in browser").
|
|
|
2603
2543
|
});
|
|
2604
2544
|
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) => {
|
|
2605
2545
|
try {
|
|
2606
|
-
const { DevServerCommand } = await import("./dev-server-
|
|
2546
|
+
const { DevServerCommand } = await import("./dev-server-TYYJM3XA.js");
|
|
2607
2547
|
const cmd = new DevServerCommand();
|
|
2608
2548
|
await cmd.execute({ identifier, json: options == null ? void 0 : options.json });
|
|
2609
2549
|
} catch (error) {
|
|
@@ -2613,7 +2553,7 @@ program.command("dev-server").alias("dev").description("Start dev server for wor
|
|
|
2613
2553
|
});
|
|
2614
2554
|
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) => {
|
|
2615
2555
|
try {
|
|
2616
|
-
const { ShellCommand } = await import("./shell-
|
|
2556
|
+
const { ShellCommand } = await import("./shell-2SPM3Z5O.js");
|
|
2617
2557
|
const cmd = new ShellCommand();
|
|
2618
2558
|
await cmd.execute({ identifier });
|
|
2619
2559
|
} catch (error) {
|
|
@@ -2623,7 +2563,7 @@ program.command("shell").alias("terminal").description("Open interactive shell w
|
|
|
2623
2563
|
});
|
|
2624
2564
|
program.command("build").description("Run the build script").argument("[identifier]", "Issue number, PR number, or branch name (auto-detected if omitted)").action(async (identifier) => {
|
|
2625
2565
|
try {
|
|
2626
|
-
const { BuildCommand } = await import("./build-
|
|
2566
|
+
const { BuildCommand } = await import("./build-H4DK3DMQ.js");
|
|
2627
2567
|
const cmd = new BuildCommand();
|
|
2628
2568
|
await cmd.execute(identifier ? { identifier } : {});
|
|
2629
2569
|
} catch (error) {
|
|
@@ -2633,7 +2573,7 @@ program.command("build").description("Run the build script").argument("[identifi
|
|
|
2633
2573
|
});
|
|
2634
2574
|
program.command("lint").description("Run the lint script").argument("[identifier]", "Issue number, PR number, or branch name (auto-detected if omitted)").action(async (identifier) => {
|
|
2635
2575
|
try {
|
|
2636
|
-
const { LintCommand } = await import("./lint-
|
|
2576
|
+
const { LintCommand } = await import("./lint-MDVUV3W2.js");
|
|
2637
2577
|
const cmd = new LintCommand();
|
|
2638
2578
|
await cmd.execute(identifier ? { identifier } : {});
|
|
2639
2579
|
} catch (error) {
|
|
@@ -2643,7 +2583,7 @@ program.command("lint").description("Run the lint script").argument("[identifier
|
|
|
2643
2583
|
});
|
|
2644
2584
|
program.command("test").description("Run the test script").argument("[identifier]", "Issue number, PR number, or branch name (auto-detected if omitted)").action(async (identifier) => {
|
|
2645
2585
|
try {
|
|
2646
|
-
const { TestCommand } = await import("./test-
|
|
2586
|
+
const { TestCommand } = await import("./test-N2725YRI.js");
|
|
2647
2587
|
const cmd = new TestCommand();
|
|
2648
2588
|
await cmd.execute(identifier ? { identifier } : {});
|
|
2649
2589
|
} catch (error) {
|
|
@@ -2653,7 +2593,7 @@ program.command("test").description("Run the test script").argument("[identifier
|
|
|
2653
2593
|
});
|
|
2654
2594
|
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) => {
|
|
2655
2595
|
try {
|
|
2656
|
-
const { CompileCommand } = await import("./compile-
|
|
2596
|
+
const { CompileCommand } = await import("./compile-ZOAODFN2.js");
|
|
2657
2597
|
const cmd = new CompileCommand();
|
|
2658
2598
|
await cmd.execute(identifier ? { identifier } : {});
|
|
2659
2599
|
} catch (error) {
|
|
@@ -2664,7 +2604,7 @@ program.command("compile").alias("typecheck").description("Run the compile or ty
|
|
|
2664
2604
|
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", parseInt).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("--defer <ms>", "Wait specified milliseconds before cleanup", parseInt).action(async (identifier, options) => {
|
|
2665
2605
|
const executeAction = async () => {
|
|
2666
2606
|
try {
|
|
2667
|
-
const { CleanupCommand } = await import("./cleanup-
|
|
2607
|
+
const { CleanupCommand } = await import("./cleanup-25PCP2EM.js");
|
|
2668
2608
|
const command = new CleanupCommand();
|
|
2669
2609
|
const input = {
|
|
2670
2610
|
options: options ?? {}
|
|
@@ -2887,7 +2827,7 @@ program.command("list").description("Show active workspaces").option("--json", "
|
|
|
2887
2827
|
});
|
|
2888
2828
|
program.command("projects").description("List configured iloom projects").option("--json", "Output as JSON (default behavior)").action(async (options) => {
|
|
2889
2829
|
try {
|
|
2890
|
-
const { ProjectsCommand } = await import("./projects-
|
|
2830
|
+
const { ProjectsCommand } = await import("./projects-325GEEGJ.js");
|
|
2891
2831
|
const command = new ProjectsCommand();
|
|
2892
2832
|
const result = await command.execute(options);
|
|
2893
2833
|
console.log(JSON.stringify(result, null, 2));
|
|
@@ -2898,8 +2838,8 @@ program.command("projects").description("List configured iloom projects").option
|
|
|
2898
2838
|
});
|
|
2899
2839
|
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.")').action(async (prompt) => {
|
|
2900
2840
|
try {
|
|
2901
|
-
const { InitCommand
|
|
2902
|
-
const command = new
|
|
2841
|
+
const { InitCommand } = await import("./init-MZBIXQ7V.js");
|
|
2842
|
+
const command = new InitCommand();
|
|
2903
2843
|
const trimmedPrompt = prompt == null ? void 0 : prompt.trim();
|
|
2904
2844
|
const customPrompt = trimmedPrompt && trimmedPrompt.length > 0 ? trimmedPrompt : void 0;
|
|
2905
2845
|
await command.execute(customPrompt);
|
|
@@ -2908,9 +2848,19 @@ program.command("init").alias("config").description("Initialize iloom configurat
|
|
|
2908
2848
|
process.exit(1);
|
|
2909
2849
|
}
|
|
2910
2850
|
});
|
|
2851
|
+
program.command("plan").description("Launch interactive planning session with Architect persona").argument("[prompt]", "Initial planning prompt or topic").option("--model <model>", "Model to use (default: opus)").option("--yolo", "Enable autonomous mode - Claude proceeds without user interaction").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)").action(async (prompt, options) => {
|
|
2852
|
+
try {
|
|
2853
|
+
const { PlanCommand } = await import("./plan-N3YDCOIV.js");
|
|
2854
|
+
const command = new PlanCommand();
|
|
2855
|
+
await command.execute(prompt, options == null ? void 0 : options.model, options == null ? void 0 : options.yolo, options == null ? void 0 : options.planner, options == null ? void 0 : options.reviewer);
|
|
2856
|
+
} catch (error) {
|
|
2857
|
+
logger.error(`Planning session failed: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
2858
|
+
process.exit(1);
|
|
2859
|
+
}
|
|
2860
|
+
});
|
|
2911
2861
|
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) => {
|
|
2912
2862
|
try {
|
|
2913
|
-
const { ContributeCommand } = await import("./contribute-
|
|
2863
|
+
const { ContributeCommand } = await import("./contribute-7USRBWRM.js");
|
|
2914
2864
|
const command = new ContributeCommand();
|
|
2915
2865
|
await command.execute(repository);
|
|
2916
2866
|
} catch (error) {
|
|
@@ -2930,7 +2880,7 @@ program.command("update").description("Update iloom-cli to the latest version").
|
|
|
2930
2880
|
});
|
|
2931
2881
|
program.command("test-github").description("Test GitHub integration (Issue #3)").argument("<identifier>", "Issue number or PR number").option("--no-claude", "Skip Claude for branch name generation").action(async (identifier, options) => {
|
|
2932
2882
|
try {
|
|
2933
|
-
const { GitHubService: GitHubService2 } = await import("./GitHubService-
|
|
2883
|
+
const { GitHubService: GitHubService2 } = await import("./GitHubService-ACZVNTJE.js");
|
|
2934
2884
|
const { DefaultBranchNamingService: DefaultBranchNamingService2 } = await import("./BranchNamingService-AO7BPIUJ.js");
|
|
2935
2885
|
logger.info("Testing GitHub Integration\n");
|
|
2936
2886
|
const service = new GitHubService2();
|
|
@@ -2990,9 +2940,9 @@ program.command("test-github").description("Test GitHub integration (Issue #3)")
|
|
|
2990
2940
|
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) => {
|
|
2991
2941
|
try {
|
|
2992
2942
|
const { detectClaudeCli, getClaudeVersion, generateBranchName, launchClaude } = await import("./claude-V4HRPR4Z.js");
|
|
2993
|
-
const { PromptTemplateManager } = await import("./PromptTemplateManager-
|
|
2994
|
-
const { ClaudeService } = await import("./ClaudeService-
|
|
2995
|
-
const { ClaudeContextManager: ClaudeContextManager2 } = await import("./ClaudeContextManager-
|
|
2943
|
+
const { PromptTemplateManager } = await import("./PromptTemplateManager-OUYDHOPI.js");
|
|
2944
|
+
const { ClaudeService } = await import("./ClaudeService-FKPOQRA4.js");
|
|
2945
|
+
const { ClaudeContextManager: ClaudeContextManager2 } = await import("./ClaudeContextManager-RDP6CLK6.js");
|
|
2996
2946
|
logger.info("Testing Claude Integration\n");
|
|
2997
2947
|
if (options.detect) {
|
|
2998
2948
|
logger.info("Detecting Claude CLI...");
|
|
@@ -3127,7 +3077,7 @@ program.command("test-claude").description("Test Claude integration (Issue #10)"
|
|
|
3127
3077
|
});
|
|
3128
3078
|
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) => {
|
|
3129
3079
|
try {
|
|
3130
|
-
const { TestWebserverCommand } = await import("./test-webserver-
|
|
3080
|
+
const { TestWebserverCommand } = await import("./test-webserver-XLJ2TZFP.js");
|
|
3131
3081
|
const command = new TestWebserverCommand();
|
|
3132
3082
|
await command.execute({ issueNumber, options });
|
|
3133
3083
|
} catch (error) {
|
|
@@ -3140,7 +3090,7 @@ program.command("test-webserver").description("Test if a web server is running o
|
|
|
3140
3090
|
});
|
|
3141
3091
|
program.command("test-git").description("Test Git integration - findMainWorktreePath() function (reads .iloom/settings.json)").action(async () => {
|
|
3142
3092
|
try {
|
|
3143
|
-
const { TestGitCommand } = await import("./test-git-
|
|
3093
|
+
const { TestGitCommand } = await import("./test-git-ZPSPA2TP.js");
|
|
3144
3094
|
const command = new TestGitCommand();
|
|
3145
3095
|
await command.execute();
|
|
3146
3096
|
} catch (error) {
|
|
@@ -3166,7 +3116,7 @@ program.command("test-tabs").description("Test iTerm2 dual tab functionality - o
|
|
|
3166
3116
|
});
|
|
3167
3117
|
program.command("test-prefix").description("Test worktree prefix configuration - preview worktree paths (reads .iloom/settings.json)").action(async () => {
|
|
3168
3118
|
try {
|
|
3169
|
-
const { TestPrefixCommand } = await import("./test-prefix-
|
|
3119
|
+
const { TestPrefixCommand } = await import("./test-prefix-6DLB2BHE.js");
|
|
3170
3120
|
const command = new TestPrefixCommand();
|
|
3171
3121
|
await command.execute();
|
|
3172
3122
|
} catch (error) {
|
|
@@ -3180,7 +3130,7 @@ program.command("test-prefix").description("Test worktree prefix configuration -
|
|
|
3180
3130
|
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) => {
|
|
3181
3131
|
const executeAction = async () => {
|
|
3182
3132
|
try {
|
|
3183
|
-
const { SummaryCommand } = await import("./summary-
|
|
3133
|
+
const { SummaryCommand } = await import("./summary-5UWNLAI5.js");
|
|
3184
3134
|
const command = new SummaryCommand();
|
|
3185
3135
|
const result = await command.execute({ identifier, options });
|
|
3186
3136
|
if (options.json && result) {
|
|
@@ -3209,7 +3159,7 @@ program.command("summary").description("Generate Claude session summary for a lo
|
|
|
3209
3159
|
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) => {
|
|
3210
3160
|
const executeAction = async () => {
|
|
3211
3161
|
try {
|
|
3212
|
-
const { RecapCommand } = await import("./recap-
|
|
3162
|
+
const { RecapCommand } = await import("./recap-GSXFEOD6.js");
|
|
3213
3163
|
const command = new RecapCommand();
|
|
3214
3164
|
const result = await command.execute({ identifier, json: options.json });
|
|
3215
3165
|
if (options.json && result) {
|
|
@@ -3238,8 +3188,8 @@ program.command("recap").description("Get recap for a loom (defaults to current
|
|
|
3238
3188
|
program.command("test-neon").description("Test Neon integration and debug configuration").action(async () => {
|
|
3239
3189
|
var _a;
|
|
3240
3190
|
try {
|
|
3241
|
-
const { SettingsManager: SettingsManager2 } = await import("./SettingsManager-
|
|
3242
|
-
const { createNeonProviderFromSettings: createNeonProviderFromSettings2 } = await import("./neon-helpers-
|
|
3191
|
+
const { SettingsManager: SettingsManager2 } = await import("./SettingsManager-VCVLL32H.js");
|
|
3192
|
+
const { createNeonProviderFromSettings: createNeonProviderFromSettings2 } = await import("./neon-helpers-VVFFTLXE.js");
|
|
3243
3193
|
logger.info("Testing Neon Integration\n");
|
|
3244
3194
|
logger.info("1. Settings Configuration:");
|
|
3245
3195
|
const settingsManager = new SettingsManager2();
|