@iloom/cli 0.7.4 → 0.7.6
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 +2 -4
- package/dist/{BranchNamingService-UB2EJGFQ.js → BranchNamingService-AO7BPIUJ.js} +2 -2
- package/dist/{ClaudeContextManager-M57BQUMY.js → ClaudeContextManager-Y2YJC6BU.js} +4 -4
- package/dist/{ClaudeService-FLZ2IXAO.js → ClaudeService-NDVFQRKC.js} +3 -3
- package/dist/{LoomLauncher-5PPVFTFN.js → LoomLauncher-U2B3VHPC.js} +4 -4
- package/dist/{PRManager-YTG6XPMG.js → PRManager-7F3AAY66.js} +4 -4
- package/dist/README.md +2 -4
- 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/agents/iloom-issue-reviewer.md +1 -1
- package/dist/{chunk-7GKMQJGQ.js → chunk-64HCHVJM.js} +2 -2
- package/dist/{chunk-JWUYPJ7K.js → chunk-6YAMWLCP.js} +3 -3
- package/dist/{chunk-33P5VSKS.js → chunk-C7YW5IMS.js} +2 -2
- package/dist/{chunk-37V2NBYR.js → chunk-CAXFWFV6.js} +2 -2
- package/dist/chunk-CFQVOTHO.js +111 -0
- package/dist/chunk-CFQVOTHO.js.map +1 -0
- package/dist/{chunk-AFRICMSW.js → chunk-ENMTWE74.js} +2 -2
- package/dist/{chunk-RVLRPQU4.js → chunk-ETY2SBW5.js} +21 -18
- package/dist/chunk-ETY2SBW5.js.map +1 -0
- package/dist/{chunk-ITIXKM24.js → chunk-IGKPPACU.js} +2 -2
- package/dist/chunk-IGKPPACU.js.map +1 -0
- package/dist/{chunk-GH4FLYV5.js → chunk-NEPH2O4C.js} +2 -2
- package/dist/{chunk-GJMEKEI5.js → chunk-NPEMVE27.js} +342 -6
- package/dist/chunk-NPEMVE27.js.map +1 -0
- package/dist/{chunk-XAHE76RL.js → chunk-O36JLYNW.js} +2 -2
- package/dist/{chunk-6VQNF44G.js → chunk-Q457PKGH.js} +2 -2
- package/dist/{chunk-7FM7AL7S.js → chunk-VYKKWU36.js} +2 -2
- package/dist/{chunk-EDDIAWVM.js → chunk-WT4UGBE2.js} +8 -7
- package/dist/chunk-WT4UGBE2.js.map +1 -0
- package/dist/{chunk-453NC377.js → chunk-WZYBHD7P.js} +3 -106
- package/dist/chunk-WZYBHD7P.js.map +1 -0
- package/dist/{claude-SNWHWWWM.js → claude-V4HRPR4Z.js} +2 -2
- package/dist/{cleanup-PLMS2KWF.js → cleanup-IO4KV2DL.js} +9 -6
- package/dist/{cleanup-PLMS2KWF.js.map → cleanup-IO4KV2DL.js.map} +1 -1
- package/dist/cli.js +84 -63
- package/dist/cli.js.map +1 -1
- package/dist/{commit-NAGJH4J4.js → commit-3ULFKXNB.js} +4 -4
- package/dist/{dev-server-UKAPBGUR.js → dev-server-OAP3RZC6.js} +4 -3
- package/dist/{dev-server-UKAPBGUR.js.map → dev-server-OAP3RZC6.js.map} +1 -1
- package/dist/{feedback-ICJ44XGB.js → feedback-ZLAX3BVL.js} +3 -3
- package/dist/{ignite-U2JSVOEZ.js → ignite-HA2OJF6Z.js} +20 -36
- package/dist/ignite-HA2OJF6Z.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/{init-YDKOPB54.js → init-S6IEGRSX.js} +3 -3
- package/dist/mcp/issue-management-server.js +420 -14
- package/dist/mcp/issue-management-server.js.map +1 -1
- package/dist/{open-QI63XQ4F.js → open-IN3LUZXX.js} +4 -3
- package/dist/{open-QI63XQ4F.js.map → open-IN3LUZXX.js.map} +1 -1
- package/dist/{projects-TWY4RT2Z.js → projects-CTRTTMSK.js} +25 -9
- package/dist/projects-CTRTTMSK.js.map +1 -0
- package/dist/prompts/issue-prompt.txt +16 -0
- package/dist/prompts/pr-prompt.txt +33 -13
- package/dist/prompts/regular-prompt.txt +7 -0
- package/dist/{rebase-AONLKM2V.js → rebase-RLEVFHWN.js} +3 -3
- package/dist/{run-YDVYORT2.js → run-QEIS2EH2.js} +4 -3
- package/dist/{run-YDVYORT2.js.map → run-QEIS2EH2.js.map} +1 -1
- package/dist/{summary-7KYFRAIM.js → summary-MPOOQIOX.js} +38 -7
- package/dist/summary-MPOOQIOX.js.map +1 -0
- package/dist/{test-webserver-NRMGT2HB.js → test-webserver-J6SMNLU2.js} +3 -2
- package/dist/{test-webserver-NRMGT2HB.js.map → test-webserver-J6SMNLU2.js.map} +1 -1
- package/package.json +1 -1
- package/dist/chunk-453NC377.js.map +0 -1
- package/dist/chunk-EDDIAWVM.js.map +0 -1
- package/dist/chunk-GJMEKEI5.js.map +0 -1
- package/dist/chunk-ITIXKM24.js.map +0 -1
- package/dist/chunk-RVLRPQU4.js.map +0 -1
- package/dist/ignite-U2JSVOEZ.js.map +0 -1
- package/dist/projects-TWY4RT2Z.js.map +0 -1
- package/dist/summary-7KYFRAIM.js.map +0 -1
- /package/dist/{BranchNamingService-UB2EJGFQ.js.map → BranchNamingService-AO7BPIUJ.js.map} +0 -0
- /package/dist/{ClaudeContextManager-M57BQUMY.js.map → ClaudeContextManager-Y2YJC6BU.js.map} +0 -0
- /package/dist/{ClaudeService-FLZ2IXAO.js.map → ClaudeService-NDVFQRKC.js.map} +0 -0
- /package/dist/{LoomLauncher-5PPVFTFN.js.map → LoomLauncher-U2B3VHPC.js.map} +0 -0
- /package/dist/{PRManager-YTG6XPMG.js.map → PRManager-7F3AAY66.js.map} +0 -0
- /package/dist/{chunk-7GKMQJGQ.js.map → chunk-64HCHVJM.js.map} +0 -0
- /package/dist/{chunk-JWUYPJ7K.js.map → chunk-6YAMWLCP.js.map} +0 -0
- /package/dist/{chunk-33P5VSKS.js.map → chunk-C7YW5IMS.js.map} +0 -0
- /package/dist/{chunk-37V2NBYR.js.map → chunk-CAXFWFV6.js.map} +0 -0
- /package/dist/{chunk-AFRICMSW.js.map → chunk-ENMTWE74.js.map} +0 -0
- /package/dist/{chunk-GH4FLYV5.js.map → chunk-NEPH2O4C.js.map} +0 -0
- /package/dist/{chunk-XAHE76RL.js.map → chunk-O36JLYNW.js.map} +0 -0
- /package/dist/{chunk-6VQNF44G.js.map → chunk-Q457PKGH.js.map} +0 -0
- /package/dist/{chunk-7FM7AL7S.js.map → chunk-VYKKWU36.js.map} +0 -0
- /package/dist/{claude-SNWHWWWM.js.map → claude-V4HRPR4Z.js.map} +0 -0
- /package/dist/{commit-NAGJH4J4.js.map → commit-3ULFKXNB.js.map} +0 -0
- /package/dist/{feedback-ICJ44XGB.js.map → feedback-ZLAX3BVL.js.map} +0 -0
- /package/dist/{init-YDKOPB54.js.map → init-S6IEGRSX.js.map} +0 -0
- /package/dist/{rebase-AONLKM2V.js.map → rebase-RLEVFHWN.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-WT4UGBE2.js";
|
|
5
5
|
import "./chunk-NXMDEL3F.js";
|
|
6
6
|
import {
|
|
7
7
|
CLIIsolationManager,
|
|
@@ -9,17 +9,18 @@ import {
|
|
|
9
9
|
EnvironmentManager,
|
|
10
10
|
LoomManager,
|
|
11
11
|
ResourceCleanup
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-ETY2SBW5.js";
|
|
13
13
|
import {
|
|
14
14
|
BuildRunner,
|
|
15
15
|
MergeManager
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-CAXFWFV6.js";
|
|
17
17
|
import {
|
|
18
18
|
IssueTrackerFactory
|
|
19
19
|
} from "./chunk-3K3WY3BN.js";
|
|
20
20
|
import {
|
|
21
21
|
ProcessManager
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-WZYBHD7P.js";
|
|
23
|
+
import "./chunk-CFQVOTHO.js";
|
|
23
24
|
import {
|
|
24
25
|
IdentifierParser
|
|
25
26
|
} from "./chunk-5V74K5ZA.js";
|
|
@@ -29,7 +30,7 @@ import {
|
|
|
29
30
|
import {
|
|
30
31
|
InitCommand,
|
|
31
32
|
ShellCompletion
|
|
32
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-C7YW5IMS.js";
|
|
33
34
|
import {
|
|
34
35
|
FirstRunManager
|
|
35
36
|
} from "./chunk-Q7POFB5Q.js";
|
|
@@ -37,7 +38,7 @@ import "./chunk-F2PWIRV4.js";
|
|
|
37
38
|
import {
|
|
38
39
|
IssueEnhancementService,
|
|
39
40
|
capitalizeFirstLetter
|
|
40
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-VYKKWU36.js";
|
|
41
42
|
import "./chunk-XAMBIVXE.js";
|
|
42
43
|
import {
|
|
43
44
|
ProjectCapabilityDetector
|
|
@@ -49,7 +50,7 @@ import {
|
|
|
49
50
|
CommitManager,
|
|
50
51
|
UserAbortedCommitError,
|
|
51
52
|
ValidationRunner
|
|
52
|
-
} from "./chunk-
|
|
53
|
+
} from "./chunk-NEPH2O4C.js";
|
|
53
54
|
import {
|
|
54
55
|
installDependencies
|
|
55
56
|
} from "./chunk-RD7I2Q2F.js";
|
|
@@ -59,13 +60,13 @@ import {
|
|
|
59
60
|
import "./chunk-XPKN3QWY.js";
|
|
60
61
|
import {
|
|
61
62
|
PRManager
|
|
62
|
-
} from "./chunk-
|
|
63
|
+
} from "./chunk-6YAMWLCP.js";
|
|
63
64
|
import {
|
|
64
65
|
openBrowser
|
|
65
66
|
} from "./chunk-YETJNRQM.js";
|
|
66
67
|
import {
|
|
67
68
|
IssueManagementProviderFactory
|
|
68
|
-
} from "./chunk-
|
|
69
|
+
} from "./chunk-NPEMVE27.js";
|
|
69
70
|
import "./chunk-HBJITKSZ.js";
|
|
70
71
|
import {
|
|
71
72
|
getConfiguredRepoFromSettings,
|
|
@@ -78,15 +79,15 @@ import {
|
|
|
78
79
|
} from "./chunk-O7VL5N6S.js";
|
|
79
80
|
import {
|
|
80
81
|
ClaudeContextManager
|
|
81
|
-
} from "./chunk-
|
|
82
|
-
import "./chunk-
|
|
82
|
+
} from "./chunk-64HCHVJM.js";
|
|
83
|
+
import "./chunk-O36JLYNW.js";
|
|
83
84
|
import "./chunk-TIYJEEVO.js";
|
|
84
85
|
import {
|
|
85
86
|
extractSettingsOverrides
|
|
86
87
|
} from "./chunk-GYCR2LOU.js";
|
|
87
88
|
import {
|
|
88
89
|
DefaultBranchNamingService
|
|
89
|
-
} from "./chunk-
|
|
90
|
+
} from "./chunk-Q457PKGH.js";
|
|
90
91
|
import {
|
|
91
92
|
GitCommandError,
|
|
92
93
|
executeGitCommand,
|
|
@@ -116,7 +117,7 @@ import {
|
|
|
116
117
|
waitForKeypress
|
|
117
118
|
} from "./chunk-ZX3GTM7O.js";
|
|
118
119
|
import "./chunk-433MOLAU.js";
|
|
119
|
-
import "./chunk-
|
|
120
|
+
import "./chunk-IGKPPACU.js";
|
|
120
121
|
import {
|
|
121
122
|
getLogger,
|
|
122
123
|
withLogger
|
|
@@ -193,6 +194,7 @@ async function launchFirstRunSetup() {
|
|
|
193
194
|
var StartCommand = class {
|
|
194
195
|
constructor(issueTracker, loomManager, _agentManager, settingsManager) {
|
|
195
196
|
this.loomManager = null;
|
|
197
|
+
this.githubService = null;
|
|
196
198
|
this.issueTracker = issueTracker;
|
|
197
199
|
this.settingsManager = settingsManager ?? new SettingsManager();
|
|
198
200
|
this.providedLoomManager = loomManager;
|
|
@@ -204,6 +206,14 @@ var StartCommand = class {
|
|
|
204
206
|
getLogger().debug(`Loaded ${Object.keys(envResult.parsed).length} environment variables`);
|
|
205
207
|
}
|
|
206
208
|
}
|
|
209
|
+
/**
|
|
210
|
+
* Get or create a GitHubService instance for PR operations
|
|
211
|
+
* Used when the configured issue tracker doesn't support PRs (e.g., Linear)
|
|
212
|
+
*/
|
|
213
|
+
getGitHubService() {
|
|
214
|
+
this.githubService ??= new GitHubService();
|
|
215
|
+
return this.githubService;
|
|
216
|
+
}
|
|
207
217
|
/**
|
|
208
218
|
* Initialize LoomManager with the main worktree path
|
|
209
219
|
* Uses lazy initialization to ensure we have the correct path
|
|
@@ -398,7 +408,7 @@ var StartCommand = class {
|
|
|
398
408
|
throw new Error("Missing required argument: identifier");
|
|
399
409
|
}
|
|
400
410
|
const spaceCount = (trimmedIdentifier.match(/ /g) ?? []).length;
|
|
401
|
-
if (trimmedIdentifier.length > 25 && spaceCount
|
|
411
|
+
if (trimmedIdentifier.length > 25 && spaceCount >= 1) {
|
|
402
412
|
return {
|
|
403
413
|
type: "description",
|
|
404
414
|
originalInput: hasLeadingSpace ? " " + trimmedIdentifier : trimmedIdentifier
|
|
@@ -436,24 +446,42 @@ var StartCommand = class {
|
|
|
436
446
|
const numericMatch = trimmedIdentifier.match(numericPattern);
|
|
437
447
|
if (numericMatch == null ? void 0 : numericMatch[1]) {
|
|
438
448
|
const number = parseInt(numericMatch[1], 10);
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
449
|
+
if (this.issueTracker.supportsPullRequests) {
|
|
450
|
+
const detection = await this.issueTracker.detectInputType(
|
|
451
|
+
trimmedIdentifier,
|
|
452
|
+
repo
|
|
453
|
+
);
|
|
454
|
+
if (detection.type === "pr") {
|
|
455
|
+
return {
|
|
456
|
+
type: "pr",
|
|
457
|
+
number: detection.identifier ? parseInt(detection.identifier, 10) : number,
|
|
458
|
+
originalInput: trimmedIdentifier
|
|
459
|
+
};
|
|
460
|
+
} else if (detection.type === "issue") {
|
|
461
|
+
return {
|
|
462
|
+
type: "issue",
|
|
463
|
+
number: detection.identifier ? parseInt(detection.identifier, 10) : number,
|
|
464
|
+
originalInput: trimmedIdentifier
|
|
465
|
+
};
|
|
466
|
+
} else {
|
|
467
|
+
throw new Error(`Could not find issue or PR #${number}`);
|
|
468
|
+
}
|
|
455
469
|
} else {
|
|
456
|
-
|
|
470
|
+
const githubService = this.getGitHubService();
|
|
471
|
+
const detection = await githubService.detectInputType(trimmedIdentifier, repo);
|
|
472
|
+
if (detection.type === "pr") {
|
|
473
|
+
return {
|
|
474
|
+
type: "pr",
|
|
475
|
+
number: detection.identifier ? parseInt(detection.identifier, 10) : number,
|
|
476
|
+
originalInput: trimmedIdentifier
|
|
477
|
+
};
|
|
478
|
+
} else {
|
|
479
|
+
return {
|
|
480
|
+
type: "issue",
|
|
481
|
+
number,
|
|
482
|
+
originalInput: trimmedIdentifier
|
|
483
|
+
};
|
|
484
|
+
}
|
|
457
485
|
}
|
|
458
486
|
}
|
|
459
487
|
return {
|
|
@@ -471,11 +499,14 @@ var StartCommand = class {
|
|
|
471
499
|
if (!parsed.number) {
|
|
472
500
|
throw new Error("Invalid PR number");
|
|
473
501
|
}
|
|
474
|
-
if (
|
|
475
|
-
|
|
502
|
+
if (this.issueTracker.supportsPullRequests && this.issueTracker.fetchPR && this.issueTracker.validatePRState) {
|
|
503
|
+
const pr = await this.issueTracker.fetchPR(parsed.number, repo);
|
|
504
|
+
await this.issueTracker.validatePRState(pr);
|
|
505
|
+
} else {
|
|
506
|
+
const githubService = this.getGitHubService();
|
|
507
|
+
const pr = await githubService.fetchPR(parsed.number, repo);
|
|
508
|
+
await githubService.validatePRState(pr);
|
|
476
509
|
}
|
|
477
|
-
const pr = await this.issueTracker.fetchPR(parsed.number, repo);
|
|
478
|
-
await this.issueTracker.validatePRState(pr);
|
|
479
510
|
getLogger().debug(`Validated PR #${parsed.number}`);
|
|
480
511
|
break;
|
|
481
512
|
}
|
|
@@ -786,7 +817,7 @@ var FinishCommand = class {
|
|
|
786
817
|
const neonProvider = createNeonProviderFromSettings(settings);
|
|
787
818
|
const databaseManager = new DatabaseManager(neonProvider, environmentManager, databaseUrlEnvVarName);
|
|
788
819
|
const cliIsolationManager = new CLIIsolationManager();
|
|
789
|
-
const { DefaultBranchNamingService: DefaultBranchNamingService2 } = await import("./BranchNamingService-
|
|
820
|
+
const { DefaultBranchNamingService: DefaultBranchNamingService2 } = await import("./BranchNamingService-AO7BPIUJ.js");
|
|
790
821
|
this.loomManager ??= new LoomManager(
|
|
791
822
|
this.gitWorktreeManager,
|
|
792
823
|
this.issueTracker,
|
|
@@ -1209,20 +1240,10 @@ var FinishCommand = class {
|
|
|
1209
1240
|
const settings = await this.settingsManager.loadSettings(worktree.path);
|
|
1210
1241
|
const mergeBehavior = settings.mergeBehavior ?? { mode: "local" };
|
|
1211
1242
|
if (mergeBehavior.mode === "github-pr") {
|
|
1212
|
-
if (!this.issueTracker.supportsPullRequests) {
|
|
1213
|
-
throw new Error(
|
|
1214
|
-
`The 'github-pr' merge mode requires a GitHub-compatible issue tracker. Your current provider (${this.issueTracker.providerName}) does not support pull requests. Either change mergeBehavior.mode to 'local' in your settings, or use GitHub as your issue tracker.`
|
|
1215
|
-
);
|
|
1216
|
-
}
|
|
1217
1243
|
await this.executeGitHubPRWorkflow(parsed, options, worktree, settings, result);
|
|
1218
1244
|
return;
|
|
1219
1245
|
}
|
|
1220
1246
|
if (mergeBehavior.mode === "github-draft-pr") {
|
|
1221
|
-
if (!this.issueTracker.supportsPullRequests) {
|
|
1222
|
-
throw new Error(
|
|
1223
|
-
`The 'github-draft-pr' merge mode requires a GitHub-compatible issue tracker. Your provider (${this.issueTracker.providerName}) does not support pull requests.`
|
|
1224
|
-
);
|
|
1225
|
-
}
|
|
1226
1247
|
const { MetadataManager: MetadataManager3 } = await import("./MetadataManager-XJ2YB762.js");
|
|
1227
1248
|
const metadataManager2 = new MetadataManager3();
|
|
1228
1249
|
const metadata = await metadataManager2.readMetadata(worktree.path);
|
|
@@ -2315,7 +2336,7 @@ async function autoLaunchInitForMultipleRemotes() {
|
|
|
2315
2336
|
await waitForKeypress2("Press any key to start configuration...");
|
|
2316
2337
|
logger.info("");
|
|
2317
2338
|
try {
|
|
2318
|
-
const { InitCommand: InitCommand2 } = await import("./init-
|
|
2339
|
+
const { InitCommand: InitCommand2 } = await import("./init-S6IEGRSX.js");
|
|
2319
2340
|
const initCommand = new InitCommand2();
|
|
2320
2341
|
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.";
|
|
2321
2342
|
await initCommand.execute(customInitialMessage);
|
|
@@ -2416,7 +2437,7 @@ program.command("add-issue").alias("a").description("Create and enhance GitHub i
|
|
|
2416
2437
|
});
|
|
2417
2438
|
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) => {
|
|
2418
2439
|
try {
|
|
2419
|
-
const { FeedbackCommand } = await import("./feedback-
|
|
2440
|
+
const { FeedbackCommand } = await import("./feedback-ZLAX3BVL.js");
|
|
2420
2441
|
const command = new FeedbackCommand();
|
|
2421
2442
|
const feedbackOptions = {};
|
|
2422
2443
|
if (options.body !== void 0) {
|
|
@@ -2501,7 +2522,7 @@ program.command("finish").alias("dn").description("Merge work and cleanup worksp
|
|
|
2501
2522
|
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) => {
|
|
2502
2523
|
const executeAction = async () => {
|
|
2503
2524
|
try {
|
|
2504
|
-
const { CommitCommand } = await import("./commit-
|
|
2525
|
+
const { CommitCommand } = await import("./commit-3ULFKXNB.js");
|
|
2505
2526
|
const command = new CommitCommand();
|
|
2506
2527
|
const noReview = options.review === false || options.json === true;
|
|
2507
2528
|
const result = await command.execute({
|
|
@@ -2536,7 +2557,7 @@ program.command("commit").alias("c").description("Commit all uncommitted files w
|
|
|
2536
2557
|
});
|
|
2537
2558
|
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) => {
|
|
2538
2559
|
try {
|
|
2539
|
-
const { RebaseCommand } = await import("./rebase-
|
|
2560
|
+
const { RebaseCommand } = await import("./rebase-RLEVFHWN.js");
|
|
2540
2561
|
const command = new RebaseCommand();
|
|
2541
2562
|
await command.execute(options);
|
|
2542
2563
|
} catch (error) {
|
|
@@ -2548,7 +2569,7 @@ program.command("spin").alias("ignite").description("Launch Claude with auto-det
|
|
|
2548
2569
|
new Option("--one-shot <mode>", "One-shot automation mode").choices(["default", "noReview", "bypassPermissions"]).default("default")
|
|
2549
2570
|
).action(async (options) => {
|
|
2550
2571
|
try {
|
|
2551
|
-
const { IgniteCommand } = await import("./ignite-
|
|
2572
|
+
const { IgniteCommand } = await import("./ignite-HA2OJF6Z.js");
|
|
2552
2573
|
const command = new IgniteCommand();
|
|
2553
2574
|
await command.execute(options.oneShot ?? "default");
|
|
2554
2575
|
} catch (error) {
|
|
@@ -2559,7 +2580,7 @@ program.command("spin").alias("ignite").description("Launch Claude with auto-det
|
|
|
2559
2580
|
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) => {
|
|
2560
2581
|
try {
|
|
2561
2582
|
const args = (command == null ? void 0 : command.args) ? command.args.slice(identifier ? 1 : 0) : [];
|
|
2562
|
-
const { OpenCommand } = await import("./open-
|
|
2583
|
+
const { OpenCommand } = await import("./open-IN3LUZXX.js");
|
|
2563
2584
|
const cmd = new OpenCommand();
|
|
2564
2585
|
const input = identifier ? { identifier, args } : { args };
|
|
2565
2586
|
await cmd.execute(input);
|
|
@@ -2571,7 +2592,7 @@ program.command("open").description("Open workspace in browser or run CLI tool")
|
|
|
2571
2592
|
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) => {
|
|
2572
2593
|
try {
|
|
2573
2594
|
const args = (command == null ? void 0 : command.args) ? command.args.slice(identifier ? 1 : 0) : [];
|
|
2574
|
-
const { RunCommand } = await import("./run-
|
|
2595
|
+
const { RunCommand } = await import("./run-QEIS2EH2.js");
|
|
2575
2596
|
const cmd = new RunCommand();
|
|
2576
2597
|
const input = identifier ? { identifier, args } : { args };
|
|
2577
2598
|
await cmd.execute(input);
|
|
@@ -2582,7 +2603,7 @@ program.command("run").description("Run CLI tool or open workspace in browser").
|
|
|
2582
2603
|
});
|
|
2583
2604
|
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) => {
|
|
2584
2605
|
try {
|
|
2585
|
-
const { DevServerCommand } = await import("./dev-server-
|
|
2606
|
+
const { DevServerCommand } = await import("./dev-server-OAP3RZC6.js");
|
|
2586
2607
|
const cmd = new DevServerCommand();
|
|
2587
2608
|
await cmd.execute({ identifier, json: options == null ? void 0 : options.json });
|
|
2588
2609
|
} catch (error) {
|
|
@@ -2643,7 +2664,7 @@ program.command("compile").alias("typecheck").description("Run the compile or ty
|
|
|
2643
2664
|
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) => {
|
|
2644
2665
|
const executeAction = async () => {
|
|
2645
2666
|
try {
|
|
2646
|
-
const { CleanupCommand } = await import("./cleanup-
|
|
2667
|
+
const { CleanupCommand } = await import("./cleanup-IO4KV2DL.js");
|
|
2647
2668
|
const command = new CleanupCommand();
|
|
2648
2669
|
const input = {
|
|
2649
2670
|
options: options ?? {}
|
|
@@ -2866,7 +2887,7 @@ program.command("list").description("Show active workspaces").option("--json", "
|
|
|
2866
2887
|
});
|
|
2867
2888
|
program.command("projects").description("List configured iloom projects").option("--json", "Output as JSON (default behavior)").action(async (options) => {
|
|
2868
2889
|
try {
|
|
2869
|
-
const { ProjectsCommand } = await import("./projects-
|
|
2890
|
+
const { ProjectsCommand } = await import("./projects-CTRTTMSK.js");
|
|
2870
2891
|
const command = new ProjectsCommand();
|
|
2871
2892
|
const result = await command.execute(options);
|
|
2872
2893
|
console.log(JSON.stringify(result, null, 2));
|
|
@@ -2877,7 +2898,7 @@ program.command("projects").description("List configured iloom projects").option
|
|
|
2877
2898
|
});
|
|
2878
2899
|
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) => {
|
|
2879
2900
|
try {
|
|
2880
|
-
const { InitCommand: InitCommand2 } = await import("./init-
|
|
2901
|
+
const { InitCommand: InitCommand2 } = await import("./init-S6IEGRSX.js");
|
|
2881
2902
|
const command = new InitCommand2();
|
|
2882
2903
|
const trimmedPrompt = prompt == null ? void 0 : prompt.trim();
|
|
2883
2904
|
const customPrompt = trimmedPrompt && trimmedPrompt.length > 0 ? trimmedPrompt : void 0;
|
|
@@ -2910,7 +2931,7 @@ program.command("update").description("Update iloom-cli to the latest version").
|
|
|
2910
2931
|
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) => {
|
|
2911
2932
|
try {
|
|
2912
2933
|
const { GitHubService: GitHubService2 } = await import("./GitHubService-O7U4UQ7N.js");
|
|
2913
|
-
const { DefaultBranchNamingService: DefaultBranchNamingService2 } = await import("./BranchNamingService-
|
|
2934
|
+
const { DefaultBranchNamingService: DefaultBranchNamingService2 } = await import("./BranchNamingService-AO7BPIUJ.js");
|
|
2914
2935
|
logger.info("Testing GitHub Integration\n");
|
|
2915
2936
|
const service = new GitHubService2();
|
|
2916
2937
|
const branchNaming = new DefaultBranchNamingService2({ useClaude: options.claude !== false });
|
|
@@ -2968,10 +2989,10 @@ program.command("test-github").description("Test GitHub integration (Issue #3)")
|
|
|
2968
2989
|
});
|
|
2969
2990
|
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) => {
|
|
2970
2991
|
try {
|
|
2971
|
-
const { detectClaudeCli, getClaudeVersion, generateBranchName, launchClaude } = await import("./claude-
|
|
2992
|
+
const { detectClaudeCli, getClaudeVersion, generateBranchName, launchClaude } = await import("./claude-V4HRPR4Z.js");
|
|
2972
2993
|
const { PromptTemplateManager } = await import("./PromptTemplateManager-7L3HJQQU.js");
|
|
2973
|
-
const { ClaudeService } = await import("./ClaudeService-
|
|
2974
|
-
const { ClaudeContextManager: ClaudeContextManager2 } = await import("./ClaudeContextManager-
|
|
2994
|
+
const { ClaudeService } = await import("./ClaudeService-NDVFQRKC.js");
|
|
2995
|
+
const { ClaudeContextManager: ClaudeContextManager2 } = await import("./ClaudeContextManager-Y2YJC6BU.js");
|
|
2975
2996
|
logger.info("Testing Claude Integration\n");
|
|
2976
2997
|
if (options.detect) {
|
|
2977
2998
|
logger.info("Detecting Claude CLI...");
|
|
@@ -3106,7 +3127,7 @@ program.command("test-claude").description("Test Claude integration (Issue #10)"
|
|
|
3106
3127
|
});
|
|
3107
3128
|
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) => {
|
|
3108
3129
|
try {
|
|
3109
|
-
const { TestWebserverCommand } = await import("./test-webserver-
|
|
3130
|
+
const { TestWebserverCommand } = await import("./test-webserver-J6SMNLU2.js");
|
|
3110
3131
|
const command = new TestWebserverCommand();
|
|
3111
3132
|
await command.execute({ issueNumber, options });
|
|
3112
3133
|
} catch (error) {
|
|
@@ -3159,7 +3180,7 @@ program.command("test-prefix").description("Test worktree prefix configuration -
|
|
|
3159
3180
|
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) => {
|
|
3160
3181
|
const executeAction = async () => {
|
|
3161
3182
|
try {
|
|
3162
|
-
const { SummaryCommand } = await import("./summary-
|
|
3183
|
+
const { SummaryCommand } = await import("./summary-MPOOQIOX.js");
|
|
3163
3184
|
const command = new SummaryCommand();
|
|
3164
3185
|
const result = await command.execute({ identifier, options });
|
|
3165
3186
|
if (options.json && result) {
|