@iloom/cli 0.9.0 → 0.9.2
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 +21 -2
- package/dist/{ClaudeContextManager-X2Y72GRL.js → ClaudeContextManager-HR5JQKAI.js} +4 -4
- package/dist/{ClaudeService-7P32TTES.js → ClaudeService-TK7FMC2X.js} +3 -3
- package/dist/{GitHubService-ACZVNTJE.js → GitHubService-TGWJN4V4.js} +3 -3
- package/dist/{LoomLauncher-3I47SUPV.js → LoomLauncher-73NXL2CL.js} +4 -4
- package/dist/README.md +21 -2
- package/dist/{SettingsManager-QR7V2IW2.js → SettingsManager-AW3JTJHD.js} +2 -2
- package/dist/{build-IC4CJRMP.js → build-THZI572G.js} +6 -6
- package/dist/{chunk-Z6F5CUS6.js → chunk-3I4ONZRT.js} +3 -3
- package/dist/{chunk-THS5L54H.js → chunk-4CO6KG5S.js} +50 -3
- package/dist/chunk-4CO6KG5S.js.map +1 -0
- package/dist/{chunk-MZPRBNYC.js → chunk-6IIL5M2L.js} +2 -2
- package/dist/{chunk-2JPXGGP4.js → chunk-A7NJF73J.js} +2 -2
- package/dist/{chunk-H6ST2TGP.js → chunk-AR5QKYNE.js} +3 -3
- package/dist/{chunk-PL2FDYEK.js → chunk-CWRI4JC3.js} +2 -2
- package/dist/{chunk-I23OQB4Y.js → chunk-DGG2VY7B.js} +6 -5
- package/dist/chunk-DGG2VY7B.js.map +1 -0
- package/dist/{chunk-RNBIISBZ.js → chunk-FJDRTVJX.js} +50 -5
- package/dist/chunk-FJDRTVJX.js.map +1 -0
- package/dist/{chunk-NTTSUAVM.js → chunk-IZIYLYPK.js} +2 -2
- package/dist/{chunk-TGRK3CHF.js → chunk-KJTVU3HZ.js} +4 -4
- package/dist/{chunk-SC6X5EBG.js → chunk-KXGQYLFZ.js} +3 -3
- package/dist/{chunk-USSL2X4A.js → chunk-NUACL52E.js} +2 -2
- package/dist/{chunk-JT5LZRMI.js → chunk-NWMORW3U.js} +2 -2
- package/dist/{chunk-PVW6JE7E.js → chunk-OFDN5NKS.js} +4 -3
- package/dist/{chunk-PVW6JE7E.js.map → chunk-OFDN5NKS.js.map} +1 -1
- package/dist/{chunk-HZXBHMVM.js → chunk-R4YWBGY6.js} +3 -3
- package/dist/{chunk-XFEK2X2D.js → chunk-RI2YL6TK.js} +9 -3
- package/dist/chunk-RI2YL6TK.js.map +1 -0
- package/dist/{chunk-6Y3FTRJL.js → chunk-SOSQILHO.js} +102 -51
- package/dist/chunk-SOSQILHO.js.map +1 -0
- package/dist/{chunk-4GAJJUYS.js → chunk-TC7APDKU.js} +2 -2
- package/dist/{chunk-UDZCTLD6.js → chunk-ULSWCPQG.js} +3 -3
- package/dist/{chunk-5LVVQGB3.js → chunk-VPTAX5TR.js} +7 -7
- package/dist/chunk-VPTAX5TR.js.map +1 -0
- package/dist/{chunk-RD7OPXZK.js → chunk-W6DP5RVR.js} +3 -3
- package/dist/{chunk-XJHQVOT6.js → chunk-WHI5KEOX.js} +2 -2
- package/dist/{chunk-2HZX6AMR.js → chunk-YKFCCV6S.js} +2 -2
- package/dist/{chunk-OAVJR4PM.js → chunk-Z2TWEXR7.js} +2 -2
- package/dist/{cleanup-M6N7KV7E.js → cleanup-PJRIFFU4.js} +16 -16
- package/dist/cli.js +79 -62
- package/dist/cli.js.map +1 -1
- package/dist/{commit-ORHR53KW.js → commit-IVP3M4HG.js} +10 -9
- package/dist/commit-IVP3M4HG.js.map +1 -0
- package/dist/{compile-EOWJORKO.js → compile-R2J65HBQ.js} +6 -6
- package/dist/{contribute-4KCEOHSH.js → contribute-VDZXHK5Y.js} +4 -4
- package/dist/{dev-server-Q6M62ATG.js → dev-server-7F622OEO.js} +8 -8
- package/dist/{feedback-XRI7SGYX.js → feedback-E7VET7CL.js} +6 -6
- package/dist/{git-W3XUIFTR.js → git-2QDQ2X2S.js} +3 -3
- package/dist/{ignite-3FHQY23X.js → ignite-IW35CDBD.js} +10 -10
- package/dist/index.d.ts +18 -0
- package/dist/index.js +14 -6
- package/dist/index.js.map +1 -1
- package/dist/{init-ALYWKNWG.js → init-676DHF6R.js} +5 -5
- package/dist/issues-PJSOLOBJ.js +138 -0
- package/dist/issues-PJSOLOBJ.js.map +1 -0
- package/dist/{lint-IHUH45OC.js → lint-CJM7BAIM.js} +6 -6
- package/dist/mcp/issue-management-server.js +5 -4
- package/dist/mcp/issue-management-server.js.map +1 -1
- package/dist/{open-KWOV2OFO.js → open-544H7JF5.js} +8 -8
- package/dist/{plan-P6MXL7AU.js → plan-Q7ELXDLC.js} +12 -12
- package/dist/prompts/init-prompt.txt +39 -21
- package/dist/{rebase-AJOJOZUG.js → rebase-YND35CIE.js} +5 -5
- package/dist/{recap-GKJXMDXW.js → recap-3W7COH7D.js} +5 -5
- package/dist/{run-QEUVZF7J.js → run-QUXJKDQQ.js} +8 -8
- package/dist/schema/settings.schema.json +15 -0
- package/dist/{shell-DAAVG4YN.js → shell-QGECBLST.js} +5 -5
- package/dist/{summary-WNEYCO4S.js → summary-G2T4452H.js} +9 -9
- package/dist/{test-5GPWWO3P.js → test-EA5NQFDC.js} +6 -6
- package/dist/{test-git-EJUKDB7F.js → test-git-M7LSLEFL.js} +3 -3
- package/dist/{test-prefix-23TOBUXY.js → test-prefix-64NAAUON.js} +3 -3
- package/dist/{test-webserver-CKROHFBQ.js → test-webserver-OK6Z5FJM.js} +5 -5
- package/dist/{vscode-6TOLFCI2.js → vscode-AR5NNXXI.js} +5 -5
- package/package.json +1 -1
- package/dist/chunk-5LVVQGB3.js.map +0 -1
- package/dist/chunk-6Y3FTRJL.js.map +0 -1
- package/dist/chunk-I23OQB4Y.js.map +0 -1
- package/dist/chunk-RNBIISBZ.js.map +0 -1
- package/dist/chunk-THS5L54H.js.map +0 -1
- package/dist/chunk-XFEK2X2D.js.map +0 -1
- package/dist/commit-ORHR53KW.js.map +0 -1
- /package/dist/{ClaudeContextManager-X2Y72GRL.js.map → ClaudeContextManager-HR5JQKAI.js.map} +0 -0
- /package/dist/{ClaudeService-7P32TTES.js.map → ClaudeService-TK7FMC2X.js.map} +0 -0
- /package/dist/{GitHubService-ACZVNTJE.js.map → GitHubService-TGWJN4V4.js.map} +0 -0
- /package/dist/{LoomLauncher-3I47SUPV.js.map → LoomLauncher-73NXL2CL.js.map} +0 -0
- /package/dist/{SettingsManager-QR7V2IW2.js.map → SettingsManager-AW3JTJHD.js.map} +0 -0
- /package/dist/{build-IC4CJRMP.js.map → build-THZI572G.js.map} +0 -0
- /package/dist/{chunk-Z6F5CUS6.js.map → chunk-3I4ONZRT.js.map} +0 -0
- /package/dist/{chunk-MZPRBNYC.js.map → chunk-6IIL5M2L.js.map} +0 -0
- /package/dist/{chunk-2JPXGGP4.js.map → chunk-A7NJF73J.js.map} +0 -0
- /package/dist/{chunk-H6ST2TGP.js.map → chunk-AR5QKYNE.js.map} +0 -0
- /package/dist/{chunk-PL2FDYEK.js.map → chunk-CWRI4JC3.js.map} +0 -0
- /package/dist/{chunk-NTTSUAVM.js.map → chunk-IZIYLYPK.js.map} +0 -0
- /package/dist/{chunk-TGRK3CHF.js.map → chunk-KJTVU3HZ.js.map} +0 -0
- /package/dist/{chunk-SC6X5EBG.js.map → chunk-KXGQYLFZ.js.map} +0 -0
- /package/dist/{chunk-USSL2X4A.js.map → chunk-NUACL52E.js.map} +0 -0
- /package/dist/{chunk-JT5LZRMI.js.map → chunk-NWMORW3U.js.map} +0 -0
- /package/dist/{chunk-HZXBHMVM.js.map → chunk-R4YWBGY6.js.map} +0 -0
- /package/dist/{chunk-4GAJJUYS.js.map → chunk-TC7APDKU.js.map} +0 -0
- /package/dist/{chunk-UDZCTLD6.js.map → chunk-ULSWCPQG.js.map} +0 -0
- /package/dist/{chunk-RD7OPXZK.js.map → chunk-W6DP5RVR.js.map} +0 -0
- /package/dist/{chunk-XJHQVOT6.js.map → chunk-WHI5KEOX.js.map} +0 -0
- /package/dist/{chunk-2HZX6AMR.js.map → chunk-YKFCCV6S.js.map} +0 -0
- /package/dist/{chunk-OAVJR4PM.js.map → chunk-Z2TWEXR7.js.map} +0 -0
- /package/dist/{cleanup-M6N7KV7E.js.map → cleanup-PJRIFFU4.js.map} +0 -0
- /package/dist/{compile-EOWJORKO.js.map → compile-R2J65HBQ.js.map} +0 -0
- /package/dist/{contribute-4KCEOHSH.js.map → contribute-VDZXHK5Y.js.map} +0 -0
- /package/dist/{dev-server-Q6M62ATG.js.map → dev-server-7F622OEO.js.map} +0 -0
- /package/dist/{feedback-XRI7SGYX.js.map → feedback-E7VET7CL.js.map} +0 -0
- /package/dist/{git-W3XUIFTR.js.map → git-2QDQ2X2S.js.map} +0 -0
- /package/dist/{ignite-3FHQY23X.js.map → ignite-IW35CDBD.js.map} +0 -0
- /package/dist/{init-ALYWKNWG.js.map → init-676DHF6R.js.map} +0 -0
- /package/dist/{lint-IHUH45OC.js.map → lint-CJM7BAIM.js.map} +0 -0
- /package/dist/{open-KWOV2OFO.js.map → open-544H7JF5.js.map} +0 -0
- /package/dist/{plan-P6MXL7AU.js.map → plan-Q7ELXDLC.js.map} +0 -0
- /package/dist/{rebase-AJOJOZUG.js.map → rebase-YND35CIE.js.map} +0 -0
- /package/dist/{recap-GKJXMDXW.js.map → recap-3W7COH7D.js.map} +0 -0
- /package/dist/{run-QEUVZF7J.js.map → run-QUXJKDQQ.js.map} +0 -0
- /package/dist/{shell-DAAVG4YN.js.map → shell-QGECBLST.js.map} +0 -0
- /package/dist/{summary-WNEYCO4S.js.map → summary-G2T4452H.js.map} +0 -0
- /package/dist/{test-5GPWWO3P.js.map → test-EA5NQFDC.js.map} +0 -0
- /package/dist/{test-git-EJUKDB7F.js.map → test-git-M7LSLEFL.js.map} +0 -0
- /package/dist/{test-prefix-23TOBUXY.js.map → test-prefix-64NAAUON.js.map} +0 -0
- /package/dist/{test-webserver-CKROHFBQ.js.map → test-webserver-OK6Z5FJM.js.map} +0 -0
- /package/dist/{vscode-6TOLFCI2.js.map → vscode-AR5NNXXI.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-3I4ONZRT.js";
|
|
5
5
|
import "./chunk-NXMDEL3F.js";
|
|
6
6
|
import {
|
|
7
7
|
CLIIsolationManager,
|
|
@@ -9,41 +9,41 @@ import {
|
|
|
9
9
|
EnvironmentManager,
|
|
10
10
|
LoomManager,
|
|
11
11
|
ResourceCleanup
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-SOSQILHO.js";
|
|
13
13
|
import {
|
|
14
14
|
PRManager
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-DGG2VY7B.js";
|
|
16
16
|
import {
|
|
17
17
|
launchFirstRunSetup,
|
|
18
18
|
needsFirstRunSetup
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-W6DP5RVR.js";
|
|
20
20
|
import {
|
|
21
21
|
BuildRunner,
|
|
22
22
|
MergeManager
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-R4YWBGY6.js";
|
|
24
24
|
import {
|
|
25
25
|
IssueTrackerFactory
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-KXGQYLFZ.js";
|
|
27
27
|
import {
|
|
28
28
|
ProcessManager
|
|
29
|
-
} from "./chunk-
|
|
30
|
-
import "./chunk-
|
|
29
|
+
} from "./chunk-IZIYLYPK.js";
|
|
30
|
+
import "./chunk-NUACL52E.js";
|
|
31
31
|
import {
|
|
32
32
|
IdentifierParser,
|
|
33
33
|
matchIssueIdentifier
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-YKFCCV6S.js";
|
|
35
35
|
import {
|
|
36
36
|
createNeonProviderFromSettings
|
|
37
37
|
} from "./chunk-7ZEHSSUP.js";
|
|
38
38
|
import {
|
|
39
39
|
ShellCompletion
|
|
40
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-NWMORW3U.js";
|
|
41
41
|
import "./chunk-Q7POFB5Q.js";
|
|
42
42
|
import {
|
|
43
43
|
IssueEnhancementService,
|
|
44
44
|
capitalizeFirstLetter
|
|
45
|
-
} from "./chunk-
|
|
46
|
-
import "./chunk-
|
|
45
|
+
} from "./chunk-CWRI4JC3.js";
|
|
46
|
+
import "./chunk-WHI5KEOX.js";
|
|
47
47
|
import {
|
|
48
48
|
openBrowser
|
|
49
49
|
} from "./chunk-YETJNRQM.js";
|
|
@@ -54,19 +54,19 @@ import {
|
|
|
54
54
|
CommitManager,
|
|
55
55
|
UserAbortedCommitError,
|
|
56
56
|
ValidationRunner
|
|
57
|
-
} from "./chunk-
|
|
57
|
+
} from "./chunk-VPTAX5TR.js";
|
|
58
58
|
import {
|
|
59
59
|
IssueManagementProviderFactory
|
|
60
|
-
} from "./chunk-
|
|
60
|
+
} from "./chunk-ULSWCPQG.js";
|
|
61
61
|
import {
|
|
62
62
|
getLinearChildIssues
|
|
63
|
-
} from "./chunk-
|
|
63
|
+
} from "./chunk-FJDRTVJX.js";
|
|
64
64
|
import {
|
|
65
65
|
installDependencies
|
|
66
66
|
} from "./chunk-4LKGCFGG.js";
|
|
67
67
|
import {
|
|
68
68
|
GitWorktreeManager
|
|
69
|
-
} from "./chunk-
|
|
69
|
+
} from "./chunk-TC7APDKU.js";
|
|
70
70
|
import {
|
|
71
71
|
getConfiguredRepoFromSettings,
|
|
72
72
|
hasMultipleRemotes
|
|
@@ -78,8 +78,8 @@ import {
|
|
|
78
78
|
} from "./chunk-O7VL5N6S.js";
|
|
79
79
|
import {
|
|
80
80
|
ClaudeContextManager
|
|
81
|
-
} from "./chunk-
|
|
82
|
-
import "./chunk-
|
|
81
|
+
} from "./chunk-Z2TWEXR7.js";
|
|
82
|
+
import "./chunk-6IIL5M2L.js";
|
|
83
83
|
import "./chunk-QN47QVBX.js";
|
|
84
84
|
import {
|
|
85
85
|
extractSettingsOverrides
|
|
@@ -103,19 +103,19 @@ import {
|
|
|
103
103
|
pushBranchToRemote,
|
|
104
104
|
removePlaceholderCommitFromHead,
|
|
105
105
|
removePlaceholderCommitFromHistory
|
|
106
|
-
} from "./chunk-
|
|
106
|
+
} from "./chunk-AR5QKYNE.js";
|
|
107
107
|
import {
|
|
108
108
|
SettingsManager
|
|
109
|
-
} from "./chunk-
|
|
109
|
+
} from "./chunk-RI2YL6TK.js";
|
|
110
110
|
import {
|
|
111
111
|
MetadataManager
|
|
112
112
|
} from "./chunk-KBEIQP4G.js";
|
|
113
113
|
import {
|
|
114
114
|
GitHubService
|
|
115
|
-
} from "./chunk-
|
|
115
|
+
} from "./chunk-OFDN5NKS.js";
|
|
116
116
|
import {
|
|
117
117
|
getSubIssues
|
|
118
|
-
} from "./chunk-
|
|
118
|
+
} from "./chunk-4CO6KG5S.js";
|
|
119
119
|
import {
|
|
120
120
|
promptConfirmation,
|
|
121
121
|
waitForKeypress
|
|
@@ -268,10 +268,7 @@ var StartCommand = class {
|
|
|
268
268
|
parsed.type = "issue";
|
|
269
269
|
parsed.number = result.number;
|
|
270
270
|
}
|
|
271
|
-
if (input.options.oneShot === "bypassPermissions") {
|
|
272
|
-
if (isJsonMode) {
|
|
273
|
-
throw new Error("JSON mode does not support bypassPermissions confirmation prompt");
|
|
274
|
-
}
|
|
271
|
+
if (input.options.oneShot === "bypassPermissions" && input.options.claude !== false && !isJsonMode) {
|
|
275
272
|
const { promptConfirmation: promptConfirmation2 } = await import("./prompt-ONNPSNKM.js");
|
|
276
273
|
const confirmed = await promptConfirmation2(
|
|
277
274
|
"WARNING: bypassPermissions mode will allow Claude to execute all tool calls without confirmation. This can be dangerous. Do you want to proceed?"
|
|
@@ -1101,7 +1098,7 @@ var FinishCommand = class {
|
|
|
1101
1098
|
* This is the workflow: rebase → validate → commit → merge → cleanup
|
|
1102
1099
|
*/
|
|
1103
1100
|
async executeIssueWorkflow(parsed, options, worktree, result) {
|
|
1104
|
-
var _a, _b, _c, _d;
|
|
1101
|
+
var _a, _b, _c, _d, _e;
|
|
1105
1102
|
getLogger().info("Rebasing branch on main...");
|
|
1106
1103
|
const mergeOptions = {
|
|
1107
1104
|
dryRun: options.dryRun ?? false,
|
|
@@ -1151,7 +1148,8 @@ var FinishCommand = class {
|
|
|
1151
1148
|
const commitOptions = {
|
|
1152
1149
|
dryRun: options.dryRun ?? false,
|
|
1153
1150
|
skipVerify,
|
|
1154
|
-
issuePrefix
|
|
1151
|
+
issuePrefix,
|
|
1152
|
+
timeout: (_d = settings2.git) == null ? void 0 : _d.commitTimeout
|
|
1155
1153
|
};
|
|
1156
1154
|
if (parsed.type === "issue" && parsed.number) {
|
|
1157
1155
|
commitOptions.issueNumber = parsed.number;
|
|
@@ -1245,7 +1243,7 @@ var FinishCommand = class {
|
|
|
1245
1243
|
} else {
|
|
1246
1244
|
getLogger().info(`[DRY RUN] Would mark PR #${metadata.draftPrNumber} as ready for review`);
|
|
1247
1245
|
}
|
|
1248
|
-
const prUrl = (
|
|
1246
|
+
const prUrl = (_e = metadata.prUrls) == null ? void 0 : _e[String(metadata.draftPrNumber)];
|
|
1249
1247
|
if (prUrl) {
|
|
1250
1248
|
result.prUrl = prUrl;
|
|
1251
1249
|
}
|
|
@@ -1298,7 +1296,7 @@ var FinishCommand = class {
|
|
|
1298
1296
|
* - CLOSED/MERGED: Skip to cleanup
|
|
1299
1297
|
*/
|
|
1300
1298
|
async executePRWorkflow(parsed, options, worktree, pr, result) {
|
|
1301
|
-
var _a, _b, _c;
|
|
1299
|
+
var _a, _b, _c, _d;
|
|
1302
1300
|
if (pr.state === "closed" || pr.state === "merged") {
|
|
1303
1301
|
getLogger().info(`PR #${parsed.number} is ${pr.state.toUpperCase()} - skipping to cleanup`);
|
|
1304
1302
|
const gitStatus = await this.commitManager.detectUncommittedChanges(worktree.path);
|
|
@@ -1341,7 +1339,8 @@ var FinishCommand = class {
|
|
|
1341
1339
|
await this.commitManager.commitChanges(worktree.path, {
|
|
1342
1340
|
dryRun: false,
|
|
1343
1341
|
skipVerify,
|
|
1344
|
-
issuePrefix
|
|
1342
|
+
issuePrefix,
|
|
1343
|
+
timeout: (_d = settings.git) == null ? void 0 : _d.commitTimeout
|
|
1345
1344
|
// Do NOT pass issueNumber for PRs - no "Fixes #" trailer needed
|
|
1346
1345
|
});
|
|
1347
1346
|
getLogger().success("Changes committed");
|
|
@@ -1931,6 +1930,7 @@ async function fetchChildIssues(parentIssueNumber, settings, repo) {
|
|
|
1931
1930
|
logger.debug("Fetching child issues", { parentIssueNumber, provider: providerName, repo });
|
|
1932
1931
|
const results = await Promise.allSettled([
|
|
1933
1932
|
(async () => {
|
|
1933
|
+
var _a, _b;
|
|
1934
1934
|
if (providerName === "github") {
|
|
1935
1935
|
const issueNum = parseInt(parentIssueNumber, 10);
|
|
1936
1936
|
if (isNaN(issueNum)) {
|
|
@@ -1939,7 +1939,8 @@ async function fetchChildIssues(parentIssueNumber, settings, repo) {
|
|
|
1939
1939
|
}
|
|
1940
1940
|
return getSubIssues(issueNum, repo);
|
|
1941
1941
|
} else if (providerName === "linear") {
|
|
1942
|
-
|
|
1942
|
+
const apiToken = (_b = (_a = settings.issueManagement) == null ? void 0 : _a.linear) == null ? void 0 : _b.apiToken;
|
|
1943
|
+
return getLinearChildIssues(parentIssueNumber, apiToken ? { apiToken } : void 0);
|
|
1943
1944
|
} else {
|
|
1944
1945
|
logger.warn(`Unsupported issue tracker provider: ${providerName}`);
|
|
1945
1946
|
return [];
|
|
@@ -2267,7 +2268,7 @@ async function validateSettingsForCommand(command) {
|
|
|
2267
2268
|
if (bypassCommands.includes(commandName)) {
|
|
2268
2269
|
return;
|
|
2269
2270
|
}
|
|
2270
|
-
const warnOnlyCommands = ["list", "projects"];
|
|
2271
|
+
const warnOnlyCommands = ["list", "projects", "issues"];
|
|
2271
2272
|
try {
|
|
2272
2273
|
const settingsManager = new SettingsManager();
|
|
2273
2274
|
const settings = await settingsManager.loadSettings();
|
|
@@ -2291,7 +2292,7 @@ async function validateGhCliForCommand(command) {
|
|
|
2291
2292
|
const commandName = command.name();
|
|
2292
2293
|
const alwaysRequireGh = ["feedback", "contribute"];
|
|
2293
2294
|
const conditionallyRequireGh = ["start", "finish", "enhance", "add-issue", "ignite", "spin"];
|
|
2294
|
-
const warnOnly = ["init", "list", "rebase", "cleanup", "run", "update", "open"];
|
|
2295
|
+
const warnOnly = ["init", "list", "rebase", "cleanup", "run", "update", "open", "issues"];
|
|
2295
2296
|
if (commandName.startsWith("test-") || commandName === "help") {
|
|
2296
2297
|
return;
|
|
2297
2298
|
}
|
|
@@ -2385,14 +2386,14 @@ async function autoLaunchInitForMultipleRemotes() {
|
|
|
2385
2386
|
await waitForKeypress2("Press any key to start configuration...");
|
|
2386
2387
|
logger.info("");
|
|
2387
2388
|
try {
|
|
2388
|
-
const { InitCommand } = await import("./init-
|
|
2389
|
+
const { InitCommand } = await import("./init-676DHF6R.js");
|
|
2389
2390
|
const initCommand = new InitCommand();
|
|
2390
2391
|
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.";
|
|
2391
2392
|
await initCommand.execute(customInitialMessage);
|
|
2392
2393
|
logger.info("");
|
|
2393
2394
|
logger.info("Configuration complete! Continuing with your original command...");
|
|
2394
2395
|
logger.info("");
|
|
2395
|
-
const { SettingsManager: SettingsManager2 } = await import("./SettingsManager-
|
|
2396
|
+
const { SettingsManager: SettingsManager2 } = await import("./SettingsManager-AW3JTJHD.js");
|
|
2396
2397
|
const settingsManager = new SettingsManager2();
|
|
2397
2398
|
const settings = await settingsManager.loadSettings();
|
|
2398
2399
|
const { hasMultipleRemotes: hasMultipleRemotes2 } = await import("./remote-IJAMOEAP.js");
|
|
@@ -2489,7 +2490,7 @@ program.command("add-issue").alias("a").description("Create and enhance GitHub i
|
|
|
2489
2490
|
});
|
|
2490
2491
|
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) => {
|
|
2491
2492
|
try {
|
|
2492
|
-
const { FeedbackCommand } = await import("./feedback-
|
|
2493
|
+
const { FeedbackCommand } = await import("./feedback-E7VET7CL.js");
|
|
2493
2494
|
const command = new FeedbackCommand();
|
|
2494
2495
|
const feedbackOptions = {};
|
|
2495
2496
|
if (options.body !== void 0) {
|
|
@@ -2574,7 +2575,7 @@ program.command("finish").alias("dn").description("Merge work and cleanup worksp
|
|
|
2574
2575
|
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) => {
|
|
2575
2576
|
const executeAction = async () => {
|
|
2576
2577
|
try {
|
|
2577
|
-
const { CommitCommand } = await import("./commit-
|
|
2578
|
+
const { CommitCommand } = await import("./commit-IVP3M4HG.js");
|
|
2578
2579
|
const command = new CommitCommand();
|
|
2579
2580
|
const noReview = options.review === false || options.json === true;
|
|
2580
2581
|
const result = await command.execute({
|
|
@@ -2609,7 +2610,7 @@ program.command("commit").alias("c").description("Commit all uncommitted files w
|
|
|
2609
2610
|
});
|
|
2610
2611
|
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) => {
|
|
2611
2612
|
try {
|
|
2612
|
-
const { RebaseCommand } = await import("./rebase-
|
|
2613
|
+
const { RebaseCommand } = await import("./rebase-YND35CIE.js");
|
|
2613
2614
|
const command = new RebaseCommand();
|
|
2614
2615
|
await command.execute(options);
|
|
2615
2616
|
} catch (error) {
|
|
@@ -2626,7 +2627,7 @@ program.command("spin").alias("ignite").description("Launch Claude with auto-det
|
|
|
2626
2627
|
options.oneShot = "bypassPermissions";
|
|
2627
2628
|
}
|
|
2628
2629
|
try {
|
|
2629
|
-
const { IgniteCommand } = await import("./ignite-
|
|
2630
|
+
const { IgniteCommand } = await import("./ignite-IW35CDBD.js");
|
|
2630
2631
|
const command = new IgniteCommand();
|
|
2631
2632
|
if (options.json && options.jsonStream) {
|
|
2632
2633
|
logger.error("--json and --json-stream are mutually exclusive");
|
|
@@ -2654,7 +2655,7 @@ program.command("spin").alias("ignite").description("Launch Claude with auto-det
|
|
|
2654
2655
|
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) => {
|
|
2655
2656
|
try {
|
|
2656
2657
|
const args = (command == null ? void 0 : command.args) ? command.args.slice(identifier ? 1 : 0) : [];
|
|
2657
|
-
const { OpenCommand } = await import("./open-
|
|
2658
|
+
const { OpenCommand } = await import("./open-544H7JF5.js");
|
|
2658
2659
|
const cmd = new OpenCommand();
|
|
2659
2660
|
const input = identifier ? { identifier, args } : { args };
|
|
2660
2661
|
await cmd.execute(input);
|
|
@@ -2666,7 +2667,7 @@ program.command("open").description("Open workspace in browser or run CLI tool")
|
|
|
2666
2667
|
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) => {
|
|
2667
2668
|
try {
|
|
2668
2669
|
const args = (command == null ? void 0 : command.args) ? command.args.slice(identifier ? 1 : 0) : [];
|
|
2669
|
-
const { RunCommand } = await import("./run-
|
|
2670
|
+
const { RunCommand } = await import("./run-QUXJKDQQ.js");
|
|
2670
2671
|
const cmd = new RunCommand();
|
|
2671
2672
|
const input = identifier ? { identifier, args } : { args };
|
|
2672
2673
|
await cmd.execute(input);
|
|
@@ -2677,7 +2678,7 @@ program.command("run").description("Run CLI tool or open workspace in browser").
|
|
|
2677
2678
|
});
|
|
2678
2679
|
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) => {
|
|
2679
2680
|
try {
|
|
2680
|
-
const { VSCodeCommand } = await import("./vscode-
|
|
2681
|
+
const { VSCodeCommand } = await import("./vscode-AR5NNXXI.js");
|
|
2681
2682
|
const cmd = new VSCodeCommand();
|
|
2682
2683
|
await cmd.execute({ identifier, wait: options == null ? void 0 : options.wait });
|
|
2683
2684
|
} catch (error) {
|
|
@@ -2686,7 +2687,7 @@ program.command("vscode").description("Install iloom VS Code extension and open
|
|
|
2686
2687
|
});
|
|
2687
2688
|
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) => {
|
|
2688
2689
|
try {
|
|
2689
|
-
const { DevServerCommand } = await import("./dev-server-
|
|
2690
|
+
const { DevServerCommand } = await import("./dev-server-7F622OEO.js");
|
|
2690
2691
|
const cmd = new DevServerCommand();
|
|
2691
2692
|
await cmd.execute({ identifier, json: options == null ? void 0 : options.json });
|
|
2692
2693
|
} catch (error) {
|
|
@@ -2696,7 +2697,7 @@ program.command("dev-server").alias("dev").description("Start dev server for wor
|
|
|
2696
2697
|
});
|
|
2697
2698
|
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) => {
|
|
2698
2699
|
try {
|
|
2699
|
-
const { ShellCommand } = await import("./shell-
|
|
2700
|
+
const { ShellCommand } = await import("./shell-QGECBLST.js");
|
|
2700
2701
|
const cmd = new ShellCommand();
|
|
2701
2702
|
await cmd.execute({ identifier });
|
|
2702
2703
|
} catch (error) {
|
|
@@ -2706,7 +2707,7 @@ program.command("shell").alias("terminal").description("Open interactive shell w
|
|
|
2706
2707
|
});
|
|
2707
2708
|
program.command("build").description("Run the build script").argument("[identifier]", "Issue number, PR number, or branch name (auto-detected if omitted)").action(async (identifier) => {
|
|
2708
2709
|
try {
|
|
2709
|
-
const { BuildCommand } = await import("./build-
|
|
2710
|
+
const { BuildCommand } = await import("./build-THZI572G.js");
|
|
2710
2711
|
const cmd = new BuildCommand();
|
|
2711
2712
|
await cmd.execute(identifier ? { identifier } : {});
|
|
2712
2713
|
} catch (error) {
|
|
@@ -2716,7 +2717,7 @@ program.command("build").description("Run the build script").argument("[identifi
|
|
|
2716
2717
|
});
|
|
2717
2718
|
program.command("lint").description("Run the lint script").argument("[identifier]", "Issue number, PR number, or branch name (auto-detected if omitted)").action(async (identifier) => {
|
|
2718
2719
|
try {
|
|
2719
|
-
const { LintCommand } = await import("./lint-
|
|
2720
|
+
const { LintCommand } = await import("./lint-CJM7BAIM.js");
|
|
2720
2721
|
const cmd = new LintCommand();
|
|
2721
2722
|
await cmd.execute(identifier ? { identifier } : {});
|
|
2722
2723
|
} catch (error) {
|
|
@@ -2726,7 +2727,7 @@ program.command("lint").description("Run the lint script").argument("[identifier
|
|
|
2726
2727
|
});
|
|
2727
2728
|
program.command("test").description("Run the test script").argument("[identifier]", "Issue number, PR number, or branch name (auto-detected if omitted)").action(async (identifier) => {
|
|
2728
2729
|
try {
|
|
2729
|
-
const { TestCommand } = await import("./test-
|
|
2730
|
+
const { TestCommand } = await import("./test-EA5NQFDC.js");
|
|
2730
2731
|
const cmd = new TestCommand();
|
|
2731
2732
|
await cmd.execute(identifier ? { identifier } : {});
|
|
2732
2733
|
} catch (error) {
|
|
@@ -2736,7 +2737,7 @@ program.command("test").description("Run the test script").argument("[identifier
|
|
|
2736
2737
|
});
|
|
2737
2738
|
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) => {
|
|
2738
2739
|
try {
|
|
2739
|
-
const { CompileCommand } = await import("./compile-
|
|
2740
|
+
const { CompileCommand } = await import("./compile-R2J65HBQ.js");
|
|
2740
2741
|
const cmd = new CompileCommand();
|
|
2741
2742
|
await cmd.execute(identifier ? { identifier } : {});
|
|
2742
2743
|
} catch (error) {
|
|
@@ -2747,7 +2748,7 @@ program.command("compile").alias("typecheck").description("Run the compile or ty
|
|
|
2747
2748
|
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) => {
|
|
2748
2749
|
const executeAction = async () => {
|
|
2749
2750
|
try {
|
|
2750
|
-
const { CleanupCommand } = await import("./cleanup-
|
|
2751
|
+
const { CleanupCommand } = await import("./cleanup-PJRIFFU4.js");
|
|
2751
2752
|
const command = new CleanupCommand();
|
|
2752
2753
|
const input = {
|
|
2753
2754
|
options: options ?? {}
|
|
@@ -3072,9 +3073,25 @@ program.command("projects").description("List configured iloom projects").option
|
|
|
3072
3073
|
process.exit(1);
|
|
3073
3074
|
}
|
|
3074
3075
|
});
|
|
3076
|
+
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").action(async (projectPath, options) => {
|
|
3077
|
+
try {
|
|
3078
|
+
const { IssuesCommand } = await import("./issues-PJSOLOBJ.js");
|
|
3079
|
+
const command = new IssuesCommand();
|
|
3080
|
+
const parsedLimit = parseInt((options == null ? void 0 : options.limit) ?? "100", 10);
|
|
3081
|
+
const limit = Number.isNaN(parsedLimit) || parsedLimit <= 0 ? 100 : parsedLimit;
|
|
3082
|
+
const result = await command.execute({
|
|
3083
|
+
...projectPath ? { projectPath } : {},
|
|
3084
|
+
limit
|
|
3085
|
+
});
|
|
3086
|
+
console.log(JSON.stringify(result, null, 2));
|
|
3087
|
+
} catch (error) {
|
|
3088
|
+
logger.error(`Failed to list issues: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
3089
|
+
process.exit(1);
|
|
3090
|
+
}
|
|
3091
|
+
});
|
|
3075
3092
|
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) => {
|
|
3076
3093
|
try {
|
|
3077
|
-
const { InitCommand } = await import("./init-
|
|
3094
|
+
const { InitCommand } = await import("./init-676DHF6R.js");
|
|
3078
3095
|
const command = new InitCommand();
|
|
3079
3096
|
const trimmedPrompt = prompt == null ? void 0 : prompt.trim();
|
|
3080
3097
|
const customPrompt = trimmedPrompt && trimmedPrompt.length > 0 ? trimmedPrompt : void 0;
|
|
@@ -3088,7 +3105,7 @@ program.command("plan").description("Launch interactive planning session with Ar
|
|
|
3088
3105
|
new Option("--output-format <format>", "Output format for Claude CLI (requires --print)").choices(["json", "stream-json", "text"])
|
|
3089
3106
|
).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)").action(async (prompt, options) => {
|
|
3090
3107
|
try {
|
|
3091
|
-
const { PlanCommand } = await import("./plan-
|
|
3108
|
+
const { PlanCommand } = await import("./plan-Q7ELXDLC.js");
|
|
3092
3109
|
const command = new PlanCommand();
|
|
3093
3110
|
if ((options == null ? void 0 : options.json) && (options == null ? void 0 : options.jsonStream)) {
|
|
3094
3111
|
logger.error("--json and --json-stream are mutually exclusive");
|
|
@@ -3115,7 +3132,7 @@ program.command("plan").description("Launch interactive planning session with Ar
|
|
|
3115
3132
|
});
|
|
3116
3133
|
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) => {
|
|
3117
3134
|
try {
|
|
3118
|
-
const { ContributeCommand } = await import("./contribute-
|
|
3135
|
+
const { ContributeCommand } = await import("./contribute-VDZXHK5Y.js");
|
|
3119
3136
|
const command = new ContributeCommand();
|
|
3120
3137
|
await command.execute(repository);
|
|
3121
3138
|
} catch (error) {
|
|
@@ -3135,7 +3152,7 @@ program.command("update").description("Update iloom-cli to the latest version").
|
|
|
3135
3152
|
});
|
|
3136
3153
|
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) => {
|
|
3137
3154
|
try {
|
|
3138
|
-
const { GitHubService: GitHubService2 } = await import("./GitHubService-
|
|
3155
|
+
const { GitHubService: GitHubService2 } = await import("./GitHubService-TGWJN4V4.js");
|
|
3139
3156
|
const { DefaultBranchNamingService: DefaultBranchNamingService2 } = await import("./BranchNamingService-K6XNWQ6C.js");
|
|
3140
3157
|
logger.info("Testing GitHub Integration\n");
|
|
3141
3158
|
const service = new GitHubService2();
|
|
@@ -3196,8 +3213,8 @@ program.command("test-claude").description("Test Claude integration (Issue #10)"
|
|
|
3196
3213
|
try {
|
|
3197
3214
|
const { detectClaudeCli, getClaudeVersion, generateBranchName, launchClaude } = await import("./claude-TP2QO3BU.js");
|
|
3198
3215
|
const { PromptTemplateManager } = await import("./PromptTemplateManager-36YLQRHP.js");
|
|
3199
|
-
const { ClaudeService } = await import("./ClaudeService-
|
|
3200
|
-
const { ClaudeContextManager: ClaudeContextManager2 } = await import("./ClaudeContextManager-
|
|
3216
|
+
const { ClaudeService } = await import("./ClaudeService-TK7FMC2X.js");
|
|
3217
|
+
const { ClaudeContextManager: ClaudeContextManager2 } = await import("./ClaudeContextManager-HR5JQKAI.js");
|
|
3201
3218
|
logger.info("Testing Claude Integration\n");
|
|
3202
3219
|
if (options.detect) {
|
|
3203
3220
|
logger.info("Detecting Claude CLI...");
|
|
@@ -3332,7 +3349,7 @@ program.command("test-claude").description("Test Claude integration (Issue #10)"
|
|
|
3332
3349
|
});
|
|
3333
3350
|
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) => {
|
|
3334
3351
|
try {
|
|
3335
|
-
const { TestWebserverCommand } = await import("./test-webserver-
|
|
3352
|
+
const { TestWebserverCommand } = await import("./test-webserver-OK6Z5FJM.js");
|
|
3336
3353
|
const command = new TestWebserverCommand();
|
|
3337
3354
|
await command.execute({ issueNumber, options });
|
|
3338
3355
|
} catch (error) {
|
|
@@ -3345,7 +3362,7 @@ program.command("test-webserver").description("Test if a web server is running o
|
|
|
3345
3362
|
});
|
|
3346
3363
|
program.command("test-git").description("Test Git integration - findMainWorktreePath() function (reads .iloom/settings.json)").action(async () => {
|
|
3347
3364
|
try {
|
|
3348
|
-
const { TestGitCommand } = await import("./test-git-
|
|
3365
|
+
const { TestGitCommand } = await import("./test-git-M7LSLEFL.js");
|
|
3349
3366
|
const command = new TestGitCommand();
|
|
3350
3367
|
await command.execute();
|
|
3351
3368
|
} catch (error) {
|
|
@@ -3371,7 +3388,7 @@ program.command("test-tabs").description("Test iTerm2 dual tab functionality - o
|
|
|
3371
3388
|
});
|
|
3372
3389
|
program.command("test-prefix").description("Test worktree prefix configuration - preview worktree paths (reads .iloom/settings.json)").action(async () => {
|
|
3373
3390
|
try {
|
|
3374
|
-
const { TestPrefixCommand } = await import("./test-prefix-
|
|
3391
|
+
const { TestPrefixCommand } = await import("./test-prefix-64NAAUON.js");
|
|
3375
3392
|
const command = new TestPrefixCommand();
|
|
3376
3393
|
await command.execute();
|
|
3377
3394
|
} catch (error) {
|
|
@@ -3385,7 +3402,7 @@ program.command("test-prefix").description("Test worktree prefix configuration -
|
|
|
3385
3402
|
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) => {
|
|
3386
3403
|
const executeAction = async () => {
|
|
3387
3404
|
try {
|
|
3388
|
-
const { SummaryCommand } = await import("./summary-
|
|
3405
|
+
const { SummaryCommand } = await import("./summary-G2T4452H.js");
|
|
3389
3406
|
const command = new SummaryCommand();
|
|
3390
3407
|
const result = await command.execute({ identifier, options });
|
|
3391
3408
|
if (options.json && result) {
|
|
@@ -3414,7 +3431,7 @@ program.command("summary").description("Generate Claude session summary for a lo
|
|
|
3414
3431
|
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) => {
|
|
3415
3432
|
const executeAction = async () => {
|
|
3416
3433
|
try {
|
|
3417
|
-
const { RecapCommand } = await import("./recap-
|
|
3434
|
+
const { RecapCommand } = await import("./recap-3W7COH7D.js");
|
|
3418
3435
|
const command = new RecapCommand();
|
|
3419
3436
|
const result = await command.execute({ identifier, json: options.json });
|
|
3420
3437
|
if (options.json && result) {
|
|
@@ -3443,7 +3460,7 @@ program.command("recap").description("Get recap for a loom (defaults to current
|
|
|
3443
3460
|
program.command("test-neon").description("Test Neon integration and debug configuration").action(async () => {
|
|
3444
3461
|
var _a;
|
|
3445
3462
|
try {
|
|
3446
|
-
const { SettingsManager: SettingsManager2 } = await import("./SettingsManager-
|
|
3463
|
+
const { SettingsManager: SettingsManager2 } = await import("./SettingsManager-AW3JTJHD.js");
|
|
3447
3464
|
const { createNeonProviderFromSettings: createNeonProviderFromSettings2 } = await import("./neon-helpers-VVFFTLXE.js");
|
|
3448
3465
|
logger.info("Testing Neon Integration\n");
|
|
3449
3466
|
logger.info("1. Settings Configuration:");
|