@iloom/cli 0.7.3 → 0.7.4
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 +5 -1
- package/dist/{BranchNamingService-FLPUUFOB.js → BranchNamingService-UB2EJGFQ.js} +2 -2
- package/dist/{ClaudeContextManager-KE5TBZVZ.js → ClaudeContextManager-M57BQUMY.js} +4 -4
- package/dist/{ClaudeService-CRSETT3A.js → ClaudeService-FLZ2IXAO.js} +3 -3
- package/dist/{LoomLauncher-NL65LSKP.js → LoomLauncher-5PPVFTFN.js} +4 -4
- package/dist/{PRManager-2ABCWXHW.js → PRManager-YTG6XPMG.js} +3 -3
- package/dist/README.md +5 -1
- package/dist/{chunk-FEAJR6PN.js → chunk-33P5VSKS.js} +2 -2
- package/dist/{chunk-DAOS6EC3.js → chunk-37V2NBYR.js} +5 -3
- package/dist/{chunk-DAOS6EC3.js.map → chunk-37V2NBYR.js.map} +1 -1
- package/dist/{chunk-FM4KBPVA.js → chunk-3K3WY3BN.js} +2 -118
- package/dist/chunk-3K3WY3BN.js.map +1 -0
- package/dist/{chunk-C3AKFAIR.js → chunk-6VQNF44G.js} +2 -2
- package/dist/{chunk-HVQNVRAF.js → chunk-7FM7AL7S.js} +96 -3
- package/dist/chunk-7FM7AL7S.js.map +1 -0
- package/dist/{chunk-6TL3BYH6.js → chunk-7GKMQJGQ.js} +2 -2
- package/dist/{chunk-CNSTXBJ3.js → chunk-EDDIAWVM.js} +8 -4
- package/dist/chunk-EDDIAWVM.js.map +1 -0
- package/dist/{chunk-YQNSZKKT.js → chunk-GH4FLYV5.js} +8 -4
- package/dist/chunk-GH4FLYV5.js.map +1 -0
- package/dist/{chunk-FP7G7DG3.js → chunk-ITIXKM24.js} +8 -3
- package/dist/chunk-ITIXKM24.js.map +1 -0
- package/dist/{chunk-EPPPDVHD.js → chunk-JWUYPJ7K.js} +5 -3
- package/dist/chunk-JWUYPJ7K.js.map +1 -0
- package/dist/{chunk-QQFBMCAH.js → chunk-RVLRPQU4.js} +7 -7
- package/dist/{chunk-KVS4XGBQ.js → chunk-XAHE76RL.js} +2 -2
- package/dist/chunk-XAMBIVXE.js +121 -0
- package/dist/chunk-XAMBIVXE.js.map +1 -0
- package/dist/{claude-6H36IBHO.js → claude-SNWHWWWM.js} +2 -2
- package/dist/{cleanup-77U5ATYI.js → cleanup-PLMS2KWF.js} +5 -5
- package/dist/cli.js +44 -117
- package/dist/cli.js.map +1 -1
- package/dist/{commit-ONRXU67O.js → commit-NAGJH4J4.js} +3 -3
- package/dist/{feedback-K3A4QUSG.js → feedback-ICJ44XGB.js} +4 -3
- package/dist/{feedback-K3A4QUSG.js.map → feedback-ICJ44XGB.js.map} +1 -1
- package/dist/{ignite-YUAOJ5PP.js → ignite-U2JSVOEZ.js} +8 -6
- package/dist/{ignite-YUAOJ5PP.js.map → ignite-U2JSVOEZ.js.map} +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/{init-XQQMFDM6.js → init-YDKOPB54.js} +3 -3
- package/dist/{rebase-QYCRF7JG.js → rebase-AONLKM2V.js} +3 -3
- package/dist/{summary-G6L3VAKK.js → summary-7KYFRAIM.js} +3 -3
- package/package.json +1 -1
- package/dist/chunk-CNSTXBJ3.js.map +0 -1
- package/dist/chunk-EPPPDVHD.js.map +0 -1
- package/dist/chunk-FM4KBPVA.js.map +0 -1
- package/dist/chunk-FP7G7DG3.js.map +0 -1
- package/dist/chunk-HVQNVRAF.js.map +0 -1
- package/dist/chunk-YQNSZKKT.js.map +0 -1
- /package/dist/{BranchNamingService-FLPUUFOB.js.map → BranchNamingService-UB2EJGFQ.js.map} +0 -0
- /package/dist/{ClaudeContextManager-KE5TBZVZ.js.map → ClaudeContextManager-M57BQUMY.js.map} +0 -0
- /package/dist/{ClaudeService-CRSETT3A.js.map → ClaudeService-FLZ2IXAO.js.map} +0 -0
- /package/dist/{LoomLauncher-NL65LSKP.js.map → LoomLauncher-5PPVFTFN.js.map} +0 -0
- /package/dist/{PRManager-2ABCWXHW.js.map → PRManager-YTG6XPMG.js.map} +0 -0
- /package/dist/{chunk-FEAJR6PN.js.map → chunk-33P5VSKS.js.map} +0 -0
- /package/dist/{chunk-C3AKFAIR.js.map → chunk-6VQNF44G.js.map} +0 -0
- /package/dist/{chunk-6TL3BYH6.js.map → chunk-7GKMQJGQ.js.map} +0 -0
- /package/dist/{chunk-QQFBMCAH.js.map → chunk-RVLRPQU4.js.map} +0 -0
- /package/dist/{chunk-KVS4XGBQ.js.map → chunk-XAHE76RL.js.map} +0 -0
- /package/dist/{claude-6H36IBHO.js.map → claude-SNWHWWWM.js.map} +0 -0
- /package/dist/{cleanup-77U5ATYI.js.map → cleanup-PLMS2KWF.js.map} +0 -0
- /package/dist/{commit-ONRXU67O.js.map → commit-NAGJH4J4.js.map} +0 -0
- /package/dist/{init-XQQMFDM6.js.map → init-YDKOPB54.js.map} +0 -0
- /package/dist/{rebase-QYCRF7JG.js.map → rebase-AONLKM2V.js.map} +0 -0
- /package/dist/{summary-G6L3VAKK.js.map → summary-7KYFRAIM.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-EDDIAWVM.js";
|
|
5
5
|
import "./chunk-NXMDEL3F.js";
|
|
6
6
|
import {
|
|
7
7
|
CLIIsolationManager,
|
|
@@ -9,15 +9,14 @@ import {
|
|
|
9
9
|
EnvironmentManager,
|
|
10
10
|
LoomManager,
|
|
11
11
|
ResourceCleanup
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-RVLRPQU4.js";
|
|
13
13
|
import {
|
|
14
14
|
BuildRunner,
|
|
15
15
|
MergeManager
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-37V2NBYR.js";
|
|
17
17
|
import {
|
|
18
|
-
IssueTrackerFactory
|
|
19
|
-
|
|
20
|
-
} from "./chunk-FM4KBPVA.js";
|
|
18
|
+
IssueTrackerFactory
|
|
19
|
+
} from "./chunk-3K3WY3BN.js";
|
|
21
20
|
import {
|
|
22
21
|
ProcessManager
|
|
23
22
|
} from "./chunk-453NC377.js";
|
|
@@ -30,7 +29,7 @@ import {
|
|
|
30
29
|
import {
|
|
31
30
|
InitCommand,
|
|
32
31
|
ShellCompletion
|
|
33
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-33P5VSKS.js";
|
|
34
33
|
import {
|
|
35
34
|
FirstRunManager
|
|
36
35
|
} from "./chunk-Q7POFB5Q.js";
|
|
@@ -38,7 +37,8 @@ import "./chunk-F2PWIRV4.js";
|
|
|
38
37
|
import {
|
|
39
38
|
IssueEnhancementService,
|
|
40
39
|
capitalizeFirstLetter
|
|
41
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-7FM7AL7S.js";
|
|
41
|
+
import "./chunk-XAMBIVXE.js";
|
|
42
42
|
import {
|
|
43
43
|
ProjectCapabilityDetector
|
|
44
44
|
} from "./chunk-7GLZVDPQ.js";
|
|
@@ -49,7 +49,7 @@ import {
|
|
|
49
49
|
CommitManager,
|
|
50
50
|
UserAbortedCommitError,
|
|
51
51
|
ValidationRunner
|
|
52
|
-
} from "./chunk-
|
|
52
|
+
} from "./chunk-GH4FLYV5.js";
|
|
53
53
|
import {
|
|
54
54
|
installDependencies
|
|
55
55
|
} from "./chunk-RD7I2Q2F.js";
|
|
@@ -59,7 +59,7 @@ import {
|
|
|
59
59
|
import "./chunk-XPKN3QWY.js";
|
|
60
60
|
import {
|
|
61
61
|
PRManager
|
|
62
|
-
} from "./chunk-
|
|
62
|
+
} from "./chunk-JWUYPJ7K.js";
|
|
63
63
|
import {
|
|
64
64
|
openBrowser
|
|
65
65
|
} from "./chunk-YETJNRQM.js";
|
|
@@ -78,15 +78,15 @@ import {
|
|
|
78
78
|
} from "./chunk-O7VL5N6S.js";
|
|
79
79
|
import {
|
|
80
80
|
ClaudeContextManager
|
|
81
|
-
} from "./chunk-
|
|
82
|
-
import "./chunk-
|
|
81
|
+
} from "./chunk-7GKMQJGQ.js";
|
|
82
|
+
import "./chunk-XAHE76RL.js";
|
|
83
83
|
import "./chunk-TIYJEEVO.js";
|
|
84
84
|
import {
|
|
85
85
|
extractSettingsOverrides
|
|
86
86
|
} from "./chunk-GYCR2LOU.js";
|
|
87
87
|
import {
|
|
88
88
|
DefaultBranchNamingService
|
|
89
|
-
} from "./chunk-
|
|
89
|
+
} from "./chunk-6VQNF44G.js";
|
|
90
90
|
import {
|
|
91
91
|
GitCommandError,
|
|
92
92
|
executeGitCommand,
|
|
@@ -116,9 +116,7 @@ import {
|
|
|
116
116
|
waitForKeypress
|
|
117
117
|
} from "./chunk-ZX3GTM7O.js";
|
|
118
118
|
import "./chunk-433MOLAU.js";
|
|
119
|
-
import
|
|
120
|
-
launchClaude
|
|
121
|
-
} from "./chunk-FP7G7DG3.js";
|
|
119
|
+
import "./chunk-ITIXKM24.js";
|
|
122
120
|
import {
|
|
123
121
|
getLogger,
|
|
124
122
|
withLogger
|
|
@@ -641,20 +639,18 @@ var AddIssueCommand = class {
|
|
|
641
639
|
|
|
642
640
|
// src/commands/enhance.ts
|
|
643
641
|
var EnhanceCommand = class {
|
|
644
|
-
constructor(issueTracker,
|
|
642
|
+
constructor(issueTracker, enhancementService, settingsManager) {
|
|
645
643
|
this.issueTracker = issueTracker;
|
|
646
|
-
this.
|
|
644
|
+
this.enhancementService = enhancementService;
|
|
647
645
|
this.settingsManager = settingsManager ?? new SettingsManager();
|
|
648
646
|
}
|
|
649
647
|
/**
|
|
650
648
|
* Execute the enhance command workflow:
|
|
651
649
|
* 1. Validate issue number
|
|
652
650
|
* 2. Fetch issue to verify it exists
|
|
653
|
-
* 3.
|
|
654
|
-
* 4.
|
|
655
|
-
* 5.
|
|
656
|
-
* 6. Handle browser interaction based on outcome (unless --json mode)
|
|
657
|
-
* 7. Return result object when --json mode
|
|
651
|
+
* 3. Invoke enhancement service
|
|
652
|
+
* 4. Handle browser interaction based on outcome (unless --json mode)
|
|
653
|
+
* 5. Return result object when --json mode
|
|
658
654
|
*/
|
|
659
655
|
async execute(input) {
|
|
660
656
|
const { issueNumber, options } = input;
|
|
@@ -677,41 +673,13 @@ var EnhanceCommand = class {
|
|
|
677
673
|
}
|
|
678
674
|
const issue = await this.issueTracker.fetchIssue(issueNumber, repo);
|
|
679
675
|
getLogger().debug("Issue fetched successfully", { number: issue.number, title: issue.title });
|
|
680
|
-
getLogger().debug("Loading agent configurations...");
|
|
681
|
-
const loadedAgents = await this.agentManager.loadAgents(settings);
|
|
682
|
-
const agents = this.agentManager.formatForCli(loadedAgents);
|
|
683
|
-
let mcpConfig;
|
|
684
|
-
let allowedTools;
|
|
685
|
-
let disallowedTools;
|
|
686
|
-
try {
|
|
687
|
-
const provider = this.issueTracker.providerName;
|
|
688
|
-
mcpConfig = await generateIssueManagementMcpConfig("issue", repo, provider, settings);
|
|
689
|
-
getLogger().debug("Generated MCP configuration for issue management:", { mcpConfig });
|
|
690
|
-
allowedTools = [
|
|
691
|
-
"mcp__issue_management__get_issue",
|
|
692
|
-
"mcp__issue_management__get_comment",
|
|
693
|
-
"mcp__issue_management__create_comment",
|
|
694
|
-
"mcp__issue_management__update_comment",
|
|
695
|
-
"mcp__issue_management__create_issue"
|
|
696
|
-
];
|
|
697
|
-
disallowedTools = ["Bash(gh api:*)"];
|
|
698
|
-
getLogger().debug("Configured tool filtering for issue workflow", { allowedTools, disallowedTools });
|
|
699
|
-
} catch (error) {
|
|
700
|
-
getLogger().warn(`Failed to generate MCP config: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
701
|
-
}
|
|
702
676
|
if (!isJsonMode) {
|
|
703
677
|
getLogger().info("Invoking enhancer agent. This may take a moment...");
|
|
704
678
|
}
|
|
705
|
-
const
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
agents,
|
|
710
|
-
...mcpConfig && { mcpConfig },
|
|
711
|
-
...allowedTools && { allowedTools },
|
|
712
|
-
...disallowedTools && { disallowedTools }
|
|
713
|
-
});
|
|
714
|
-
const result = this.parseEnhancerResponse(response);
|
|
679
|
+
const enhanceOptions = {};
|
|
680
|
+
if (author !== void 0) enhanceOptions.author = author;
|
|
681
|
+
if (repo !== void 0) enhanceOptions.repo = repo;
|
|
682
|
+
const result = await this.enhancementService.enhanceExistingIssue(issueNumber, enhanceOptions);
|
|
715
683
|
if (isJsonMode) {
|
|
716
684
|
const commentId = result.url ? this.extractCommentId(result.url) : 0;
|
|
717
685
|
const resultData = {
|
|
@@ -758,48 +726,6 @@ var EnhanceCommand = class {
|
|
|
758
726
|
throw new Error("Issue identifier cannot be empty");
|
|
759
727
|
}
|
|
760
728
|
}
|
|
761
|
-
/**
|
|
762
|
-
* Construct the prompt for the orchestrating Claude instance.
|
|
763
|
-
* This prompt is very clear about expected output format to ensure reliable parsing.
|
|
764
|
-
*/
|
|
765
|
-
constructPrompt(issueNumber, author) {
|
|
766
|
-
const authorInstruction = author ? `
|
|
767
|
-
IMPORTANT: When you create your analysis comment, tag @${author} in the "Questions for Reporter" section if you have questions.
|
|
768
|
-
` : "";
|
|
769
|
-
return `Execute @agent-iloom-issue-enhancer ${issueNumber}${authorInstruction}
|
|
770
|
-
|
|
771
|
-
## OUTPUT REQUIREMENTS
|
|
772
|
-
* If the issue was not enhanced, return ONLY: "No enhancement needed"
|
|
773
|
-
* If the issue WAS enhanced, return ONLY: <FULL URL OF THE COMMENT INCLUDING COMMENT ID>
|
|
774
|
-
* If you encounter permission/authentication/access errors, return ONLY: "Permission denied: <specific error description>"
|
|
775
|
-
* IMPORTANT: Return ONLY one of the above - DO NOT include commentary such as "I created a comment at <URL>" or "I examined the issue and found no enhancement was necessary"
|
|
776
|
-
* CONTEXT: Your output is going to be parsed programmatically, so adherence to the output requirements is CRITICAL.`;
|
|
777
|
-
}
|
|
778
|
-
/**
|
|
779
|
-
* Parse the response from the enhancer agent.
|
|
780
|
-
* Returns either { enhanced: false } or { enhanced: true, url: "..." }
|
|
781
|
-
* Throws specific errors for permission issues.
|
|
782
|
-
*/
|
|
783
|
-
parseEnhancerResponse(response) {
|
|
784
|
-
if (!response || typeof response !== "string") {
|
|
785
|
-
throw new Error("No response from enhancer agent");
|
|
786
|
-
}
|
|
787
|
-
const trimmed = response.trim();
|
|
788
|
-
getLogger().debug(`RESPONSE FROM ENHANCER AGENT: '${trimmed}'`);
|
|
789
|
-
if (trimmed.toLowerCase().startsWith("permission denied:")) {
|
|
790
|
-
const errorMessage = trimmed.substring("permission denied:".length).trim();
|
|
791
|
-
throw new Error(`Permission denied: ${errorMessage}`);
|
|
792
|
-
}
|
|
793
|
-
if (trimmed.toLowerCase().includes("no enhancement needed")) {
|
|
794
|
-
return { enhanced: false };
|
|
795
|
-
}
|
|
796
|
-
const urlPattern = /https:\/\/github\.com\/[^/]+\/[^/]+\/issues\/\d+#issuecomment-\d+/;
|
|
797
|
-
const match = trimmed.match(urlPattern);
|
|
798
|
-
if (match) {
|
|
799
|
-
return { enhanced: true, url: match[0] };
|
|
800
|
-
}
|
|
801
|
-
throw new Error(`Unexpected response from enhancer agent: ${trimmed}`);
|
|
802
|
-
}
|
|
803
729
|
/**
|
|
804
730
|
* Prompt user and open browser to view enhanced issue.
|
|
805
731
|
* Matches the pattern from the issue specification.
|
|
@@ -860,7 +786,7 @@ var FinishCommand = class {
|
|
|
860
786
|
const neonProvider = createNeonProviderFromSettings(settings);
|
|
861
787
|
const databaseManager = new DatabaseManager(neonProvider, environmentManager, databaseUrlEnvVarName);
|
|
862
788
|
const cliIsolationManager = new CLIIsolationManager();
|
|
863
|
-
const { DefaultBranchNamingService: DefaultBranchNamingService2 } = await import("./BranchNamingService-
|
|
789
|
+
const { DefaultBranchNamingService: DefaultBranchNamingService2 } = await import("./BranchNamingService-UB2EJGFQ.js");
|
|
864
790
|
this.loomManager ??= new LoomManager(
|
|
865
791
|
this.gitWorktreeManager,
|
|
866
792
|
this.issueTracker,
|
|
@@ -2229,7 +2155,7 @@ function parseIssueIdentifier(value) {
|
|
|
2229
2155
|
const parsed = parseInt(value, 10);
|
|
2230
2156
|
return !isNaN(parsed) && String(parsed) === value ? parsed : value;
|
|
2231
2157
|
}
|
|
2232
|
-
program.name("iloom").description(packageJson.description).version(packageJson.version).option("--debug", "Enable debug output (default: based on ILOOM_DEBUG env var)").option("--completion", "Output shell completion script for current shell").option("--set <key=value>", "Override any setting using dot notation (repeatable, e.g., --set workflows.issue.startIde=false)").allowUnknownOption().hook("preAction", async (thisCommand, actionCommand) => {
|
|
2158
|
+
program.name("iloom").description(packageJson.description).version(packageJson.version).option("--debug", "Enable debug output (default: based on ILOOM_DEBUG env var)").option("--completion", "Output shell completion script for current shell").option("--set <key=value>", "Override any setting using dot notation (repeatable, e.g., --set workflows.issue.startIde=false)").allowUnknownOption().addHelpText("afterAll", "\nBy using iloom, you agree to our Terms of Service: https://iloom.ai/terms").hook("preAction", async (thisCommand, actionCommand) => {
|
|
2233
2159
|
const options = thisCommand.opts();
|
|
2234
2160
|
const envDebug = process.env.ILOOM_DEBUG === "true";
|
|
2235
2161
|
const debugEnabled = options.debug !== void 0 ? options.debug : envDebug;
|
|
@@ -2262,7 +2188,7 @@ program.name("iloom").description(packageJson.description).version(packageJson.v
|
|
|
2262
2188
|
}
|
|
2263
2189
|
await validateSettingsForCommand(actionCommand);
|
|
2264
2190
|
await validateGhCliForCommand(actionCommand);
|
|
2265
|
-
await validateIdeForStartCommand(
|
|
2191
|
+
await validateIdeForStartCommand(actionCommand);
|
|
2266
2192
|
});
|
|
2267
2193
|
async function validateSettingsForCommand(command) {
|
|
2268
2194
|
var _a, _b;
|
|
@@ -2345,7 +2271,7 @@ async function validateGhCliForCommand(command) {
|
|
|
2345
2271
|
}
|
|
2346
2272
|
async function validateIdeForStartCommand(command) {
|
|
2347
2273
|
var _a, _b;
|
|
2348
|
-
const commandName = command.
|
|
2274
|
+
const commandName = command.name();
|
|
2349
2275
|
if (commandName !== "start") {
|
|
2350
2276
|
return;
|
|
2351
2277
|
}
|
|
@@ -2389,7 +2315,7 @@ async function autoLaunchInitForMultipleRemotes() {
|
|
|
2389
2315
|
await waitForKeypress2("Press any key to start configuration...");
|
|
2390
2316
|
logger.info("");
|
|
2391
2317
|
try {
|
|
2392
|
-
const { InitCommand: InitCommand2 } = await import("./init-
|
|
2318
|
+
const { InitCommand: InitCommand2 } = await import("./init-YDKOPB54.js");
|
|
2393
2319
|
const initCommand = new InitCommand2();
|
|
2394
2320
|
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.";
|
|
2395
2321
|
await initCommand.execute(customInitialMessage);
|
|
@@ -2490,7 +2416,7 @@ program.command("add-issue").alias("a").description("Create and enhance GitHub i
|
|
|
2490
2416
|
});
|
|
2491
2417
|
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) => {
|
|
2492
2418
|
try {
|
|
2493
|
-
const { FeedbackCommand } = await import("./feedback-
|
|
2419
|
+
const { FeedbackCommand } = await import("./feedback-ICJ44XGB.js");
|
|
2494
2420
|
const command = new FeedbackCommand();
|
|
2495
2421
|
const feedbackOptions = {};
|
|
2496
2422
|
if (options.body !== void 0) {
|
|
@@ -2513,7 +2439,8 @@ program.command("enhance").description("Apply enhancement agent to existing GitH
|
|
|
2513
2439
|
const settingsManager = new SettingsManager();
|
|
2514
2440
|
const settings = await settingsManager.loadSettings();
|
|
2515
2441
|
const issueTracker = IssueTrackerFactory.create(settings);
|
|
2516
|
-
const
|
|
2442
|
+
const enhancementService = new IssueEnhancementService(issueTracker, new AgentManager(), settingsManager);
|
|
2443
|
+
const command = new EnhanceCommand(issueTracker, enhancementService, settingsManager);
|
|
2517
2444
|
const result = await command.execute({
|
|
2518
2445
|
issueNumber,
|
|
2519
2446
|
options: {
|
|
@@ -2574,7 +2501,7 @@ program.command("finish").alias("dn").description("Merge work and cleanup worksp
|
|
|
2574
2501
|
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
2502
|
const executeAction = async () => {
|
|
2576
2503
|
try {
|
|
2577
|
-
const { CommitCommand } = await import("./commit-
|
|
2504
|
+
const { CommitCommand } = await import("./commit-NAGJH4J4.js");
|
|
2578
2505
|
const command = new CommitCommand();
|
|
2579
2506
|
const noReview = options.review === false || options.json === true;
|
|
2580
2507
|
const result = await command.execute({
|
|
@@ -2609,7 +2536,7 @@ program.command("commit").alias("c").description("Commit all uncommitted files w
|
|
|
2609
2536
|
});
|
|
2610
2537
|
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
2538
|
try {
|
|
2612
|
-
const { RebaseCommand } = await import("./rebase-
|
|
2539
|
+
const { RebaseCommand } = await import("./rebase-AONLKM2V.js");
|
|
2613
2540
|
const command = new RebaseCommand();
|
|
2614
2541
|
await command.execute(options);
|
|
2615
2542
|
} catch (error) {
|
|
@@ -2621,7 +2548,7 @@ program.command("spin").alias("ignite").description("Launch Claude with auto-det
|
|
|
2621
2548
|
new Option("--one-shot <mode>", "One-shot automation mode").choices(["default", "noReview", "bypassPermissions"]).default("default")
|
|
2622
2549
|
).action(async (options) => {
|
|
2623
2550
|
try {
|
|
2624
|
-
const { IgniteCommand } = await import("./ignite-
|
|
2551
|
+
const { IgniteCommand } = await import("./ignite-U2JSVOEZ.js");
|
|
2625
2552
|
const command = new IgniteCommand();
|
|
2626
2553
|
await command.execute(options.oneShot ?? "default");
|
|
2627
2554
|
} catch (error) {
|
|
@@ -2716,7 +2643,7 @@ program.command("compile").alias("typecheck").description("Run the compile or ty
|
|
|
2716
2643
|
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) => {
|
|
2717
2644
|
const executeAction = async () => {
|
|
2718
2645
|
try {
|
|
2719
|
-
const { CleanupCommand } = await import("./cleanup-
|
|
2646
|
+
const { CleanupCommand } = await import("./cleanup-PLMS2KWF.js");
|
|
2720
2647
|
const command = new CleanupCommand();
|
|
2721
2648
|
const input = {
|
|
2722
2649
|
options: options ?? {}
|
|
@@ -2950,7 +2877,7 @@ program.command("projects").description("List configured iloom projects").option
|
|
|
2950
2877
|
});
|
|
2951
2878
|
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) => {
|
|
2952
2879
|
try {
|
|
2953
|
-
const { InitCommand: InitCommand2 } = await import("./init-
|
|
2880
|
+
const { InitCommand: InitCommand2 } = await import("./init-YDKOPB54.js");
|
|
2954
2881
|
const command = new InitCommand2();
|
|
2955
2882
|
const trimmedPrompt = prompt == null ? void 0 : prompt.trim();
|
|
2956
2883
|
const customPrompt = trimmedPrompt && trimmedPrompt.length > 0 ? trimmedPrompt : void 0;
|
|
@@ -2983,7 +2910,7 @@ program.command("update").description("Update iloom-cli to the latest version").
|
|
|
2983
2910
|
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) => {
|
|
2984
2911
|
try {
|
|
2985
2912
|
const { GitHubService: GitHubService2 } = await import("./GitHubService-O7U4UQ7N.js");
|
|
2986
|
-
const { DefaultBranchNamingService: DefaultBranchNamingService2 } = await import("./BranchNamingService-
|
|
2913
|
+
const { DefaultBranchNamingService: DefaultBranchNamingService2 } = await import("./BranchNamingService-UB2EJGFQ.js");
|
|
2987
2914
|
logger.info("Testing GitHub Integration\n");
|
|
2988
2915
|
const service = new GitHubService2();
|
|
2989
2916
|
const branchNaming = new DefaultBranchNamingService2({ useClaude: options.claude !== false });
|
|
@@ -3041,10 +2968,10 @@ program.command("test-github").description("Test GitHub integration (Issue #3)")
|
|
|
3041
2968
|
});
|
|
3042
2969
|
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) => {
|
|
3043
2970
|
try {
|
|
3044
|
-
const { detectClaudeCli, getClaudeVersion, generateBranchName, launchClaude
|
|
2971
|
+
const { detectClaudeCli, getClaudeVersion, generateBranchName, launchClaude } = await import("./claude-SNWHWWWM.js");
|
|
3045
2972
|
const { PromptTemplateManager } = await import("./PromptTemplateManager-7L3HJQQU.js");
|
|
3046
|
-
const { ClaudeService } = await import("./ClaudeService-
|
|
3047
|
-
const { ClaudeContextManager: ClaudeContextManager2 } = await import("./ClaudeContextManager-
|
|
2973
|
+
const { ClaudeService } = await import("./ClaudeService-FLZ2IXAO.js");
|
|
2974
|
+
const { ClaudeContextManager: ClaudeContextManager2 } = await import("./ClaudeContextManager-M57BQUMY.js");
|
|
3048
2975
|
logger.info("Testing Claude Integration\n");
|
|
3049
2976
|
if (options.detect) {
|
|
3050
2977
|
logger.info("Detecting Claude CLI...");
|
|
@@ -3077,11 +3004,11 @@ program.command("test-claude").description("Test Claude integration (Issue #10)"
|
|
|
3077
3004
|
logger.info(` Mode: ${options.interactive ? "Interactive" : "Headless"}`);
|
|
3078
3005
|
if (options.interactive) {
|
|
3079
3006
|
logger.info(" Launching Claude in new terminal...");
|
|
3080
|
-
await
|
|
3007
|
+
await launchClaude(options.launch, { headless: false });
|
|
3081
3008
|
logger.info(" (Claude should open in a separate process)");
|
|
3082
3009
|
} else {
|
|
3083
3010
|
logger.info(" Waiting for response...");
|
|
3084
|
-
const result = await
|
|
3011
|
+
const result = await launchClaude(options.launch, { headless: true });
|
|
3085
3012
|
if (result) {
|
|
3086
3013
|
logger.success(" Response:");
|
|
3087
3014
|
logger.info(` ${result.split("\n").join("\n ")}`);
|
|
@@ -3155,7 +3082,7 @@ program.command("test-claude").description("Test Claude integration (Issue #10)"
|
|
|
3155
3082
|
logger.info("\n7. Testing Claude launch (headless)...");
|
|
3156
3083
|
logger.info(' Sending test prompt: "Say hello"');
|
|
3157
3084
|
try {
|
|
3158
|
-
const result = await
|
|
3085
|
+
const result = await launchClaude("Say hello", { headless: true });
|
|
3159
3086
|
if (result) {
|
|
3160
3087
|
logger.success(" Claude responded successfully");
|
|
3161
3088
|
logger.info(` Response preview: ${result.substring(0, 100)}...`);
|
|
@@ -3232,7 +3159,7 @@ program.command("test-prefix").description("Test worktree prefix configuration -
|
|
|
3232
3159
|
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) => {
|
|
3233
3160
|
const executeAction = async () => {
|
|
3234
3161
|
try {
|
|
3235
|
-
const { SummaryCommand } = await import("./summary-
|
|
3162
|
+
const { SummaryCommand } = await import("./summary-7KYFRAIM.js");
|
|
3236
3163
|
const command = new SummaryCommand();
|
|
3237
3164
|
const result = await command.execute({ identifier, options });
|
|
3238
3165
|
if (options.json && result) {
|