@iloom/cli 0.5.5 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +75 -4
- package/dist/{ClaudeContextManager-7WX7DUNI.js → ClaudeContextManager-6J2EB4QU.js} +4 -4
- package/dist/{ClaudeService-LQLN2GP4.js → ClaudeService-O2PB22GX.js} +3 -3
- package/dist/{LoomLauncher-5QU42LOM.js → LoomLauncher-5LFM4LXB.js} +4 -4
- package/dist/ProjectCapabilityDetector-S5FLNCFI.js +11 -0
- package/dist/{PromptTemplateManager-5GNF7FCP.js → PromptTemplateManager-C3DK6XZL.js} +2 -2
- package/dist/README.md +75 -4
- package/dist/agents/iloom-framework-detector.md +366 -0
- package/dist/agents/iloom-issue-analyze-and-plan.md +0 -10
- package/dist/agents/iloom-issue-implementer.md +1 -1
- package/dist/agents/iloom-issue-planner.md +0 -10
- package/dist/build-FJVYP7EV.js +27 -0
- package/dist/build-FJVYP7EV.js.map +1 -0
- package/dist/{chunk-SHVB3EFE.js → chunk-64O2UIWO.js} +44 -19
- package/dist/chunk-64O2UIWO.js.map +1 -0
- package/dist/{chunk-FO2H3YXI.js → chunk-6U6VI4SZ.js} +2 -2
- package/dist/{chunk-VXMY22TP.js → chunk-7WANFUIK.js} +2 -2
- package/dist/{chunk-LVLRMP7V.js → chunk-AXX3QIKK.js} +58 -14
- package/dist/chunk-AXX3QIKK.js.map +1 -0
- package/dist/chunk-BXCPJJYM.js +133 -0
- package/dist/chunk-BXCPJJYM.js.map +1 -0
- package/dist/{chunk-SJIMVKK7.js → chunk-K7SEEHKO.js} +2 -2
- package/dist/{chunk-46JVEGUW.js → chunk-PMVWQBWS.js} +13 -13
- package/dist/chunk-PMVWQBWS.js.map +1 -0
- package/dist/{chunk-NKRQNER7.js → chunk-Q7POFB5Q.js} +1 -55
- package/dist/chunk-Q7POFB5Q.js.map +1 -0
- package/dist/{chunk-N4ZJVATC.js → chunk-SN3Z6EZO.js} +11 -7
- package/dist/chunk-SN3Z6EZO.js.map +1 -0
- package/dist/chunk-TRQ76ISK.js +159 -0
- package/dist/chunk-TRQ76ISK.js.map +1 -0
- package/dist/{chunk-WZHBRKLN.js → chunk-UB4TFAXJ.js} +36 -7
- package/dist/chunk-UB4TFAXJ.js.map +1 -0
- package/dist/{chunk-K5G5SFWY.js → chunk-W6WVRHJ6.js} +13 -1
- package/dist/chunk-W6WVRHJ6.js.map +1 -0
- package/dist/{chunk-EBISESAP.js → chunk-ZPSTA5PR.js} +16 -6
- package/dist/chunk-ZPSTA5PR.js.map +1 -0
- package/dist/{cleanup-WTZZ74VS.js → cleanup-OU2HFOOG.js} +6 -6
- package/dist/cli.js +94 -56
- package/dist/cli.js.map +1 -1
- package/dist/compile-ULNO5F7Q.js +57 -0
- package/dist/compile-ULNO5F7Q.js.map +1 -0
- package/dist/{dev-server-S5QG5SBZ.js → dev-server-4RCDJ5MU.js} +5 -5
- package/dist/{feedback-PDMCKYOT.js → feedback-O4Q55SVS.js} +7 -7
- package/dist/{ignite-YF4Q5RA7.js → ignite-VHV65WEZ.js} +9 -5
- package/dist/ignite-VHV65WEZ.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -1
- package/dist/{init-XQQGC6DN.js → init-HB34Q5FH.js} +5 -4
- package/dist/lint-5JMCWE4Y.js +27 -0
- package/dist/lint-5JMCWE4Y.js.map +1 -0
- package/dist/{open-AIZG5756.js → open-WHVUYGPY.js} +5 -5
- package/dist/prompts/init-prompt.txt +100 -0
- package/dist/prompts/issue-prompt.txt +12 -12
- package/dist/{run-CMZUYZVG.js → run-NCRK5NPR.js} +5 -5
- package/dist/{summary-5YXUGPRN.js → summary-CVFAMDOJ.js} +3 -3
- package/dist/test-3KIVXI6J.js +27 -0
- package/dist/test-3KIVXI6J.js.map +1 -0
- package/package.json +1 -1
- package/dist/ProjectCapabilityDetector-34LU7JJ4.js +0 -9
- package/dist/chunk-2ZPFJQ3B.js +0 -63
- package/dist/chunk-2ZPFJQ3B.js.map +0 -1
- package/dist/chunk-46JVEGUW.js.map +0 -1
- package/dist/chunk-EBISESAP.js.map +0 -1
- package/dist/chunk-K5G5SFWY.js.map +0 -1
- package/dist/chunk-LVLRMP7V.js.map +0 -1
- package/dist/chunk-N4ZJVATC.js.map +0 -1
- package/dist/chunk-NKRQNER7.js.map +0 -1
- package/dist/chunk-SHVB3EFE.js.map +0 -1
- package/dist/chunk-WZHBRKLN.js.map +0 -1
- package/dist/ignite-YF4Q5RA7.js.map +0 -1
- /package/dist/{ClaudeContextManager-7WX7DUNI.js.map → ClaudeContextManager-6J2EB4QU.js.map} +0 -0
- /package/dist/{ClaudeService-LQLN2GP4.js.map → ClaudeService-O2PB22GX.js.map} +0 -0
- /package/dist/{LoomLauncher-5QU42LOM.js.map → LoomLauncher-5LFM4LXB.js.map} +0 -0
- /package/dist/{ProjectCapabilityDetector-34LU7JJ4.js.map → ProjectCapabilityDetector-S5FLNCFI.js.map} +0 -0
- /package/dist/{PromptTemplateManager-5GNF7FCP.js.map → PromptTemplateManager-C3DK6XZL.js.map} +0 -0
- /package/dist/{chunk-FO2H3YXI.js.map → chunk-6U6VI4SZ.js.map} +0 -0
- /package/dist/{chunk-VXMY22TP.js.map → chunk-7WANFUIK.js.map} +0 -0
- /package/dist/{chunk-SJIMVKK7.js.map → chunk-K7SEEHKO.js.map} +0 -0
- /package/dist/{cleanup-WTZZ74VS.js.map → cleanup-OU2HFOOG.js.map} +0 -0
- /package/dist/{dev-server-S5QG5SBZ.js.map → dev-server-4RCDJ5MU.js.map} +0 -0
- /package/dist/{feedback-PDMCKYOT.js.map → feedback-O4Q55SVS.js.map} +0 -0
- /package/dist/{init-XQQGC6DN.js.map → init-HB34Q5FH.js.map} +0 -0
- /package/dist/{open-AIZG5756.js.map → open-WHVUYGPY.js.map} +0 -0
- /package/dist/{run-CMZUYZVG.js.map → run-NCRK5NPR.js.map} +0 -0
- /package/dist/{summary-5YXUGPRN.js.map → summary-CVFAMDOJ.js.map} +0 -0
package/dist/cli.js
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
SessionSummaryService
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-K7SEEHKO.js";
|
|
5
5
|
import "./chunk-NXMDEL3F.js";
|
|
6
|
-
import {
|
|
7
|
-
IssueTrackerFactory,
|
|
8
|
-
generateIssueManagementMcpConfig
|
|
9
|
-
} from "./chunk-6YSFTPKW.js";
|
|
10
|
-
import "./chunk-7Q66W4OH.js";
|
|
11
6
|
import {
|
|
12
7
|
CLIIsolationManager,
|
|
13
8
|
DatabaseManager,
|
|
14
9
|
EnvironmentManager,
|
|
15
10
|
LoomManager,
|
|
16
11
|
ResourceCleanup
|
|
17
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-PMVWQBWS.js";
|
|
18
13
|
import {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
14
|
+
IssueTrackerFactory,
|
|
15
|
+
generateIssueManagementMcpConfig
|
|
16
|
+
} from "./chunk-6YSFTPKW.js";
|
|
17
|
+
import "./chunk-7Q66W4OH.js";
|
|
23
18
|
import {
|
|
24
19
|
ProcessManager
|
|
25
20
|
} from "./chunk-VU3QMIP2.js";
|
|
21
|
+
import {
|
|
22
|
+
detectPackageManager,
|
|
23
|
+
installDependencies,
|
|
24
|
+
runScript
|
|
25
|
+
} from "./chunk-AXX3QIKK.js";
|
|
26
26
|
import {
|
|
27
27
|
IdentifierParser
|
|
28
28
|
} from "./chunk-UQIXZ3BA.js";
|
|
@@ -32,25 +32,25 @@ import {
|
|
|
32
32
|
import {
|
|
33
33
|
InitCommand,
|
|
34
34
|
ShellCompletion
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-UB4TFAXJ.js";
|
|
36
36
|
import {
|
|
37
37
|
FirstRunManager
|
|
38
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-Q7POFB5Q.js";
|
|
39
39
|
import "./chunk-F2PWIRV4.js";
|
|
40
40
|
import {
|
|
41
41
|
IssueEnhancementService,
|
|
42
42
|
capitalizeFirstLetter
|
|
43
43
|
} from "./chunk-7HIRPCKU.js";
|
|
44
|
-
import {
|
|
45
|
-
AgentManager
|
|
46
|
-
} from "./chunk-N4ZJVATC.js";
|
|
47
44
|
import {
|
|
48
45
|
ProjectCapabilityDetector
|
|
49
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-ZPSTA5PR.js";
|
|
47
|
+
import {
|
|
48
|
+
getPackageConfig,
|
|
49
|
+
hasScript
|
|
50
|
+
} from "./chunk-BXCPJJYM.js";
|
|
50
51
|
import {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
} from "./chunk-2ZPFJQ3B.js";
|
|
52
|
+
AgentManager
|
|
53
|
+
} from "./chunk-SN3Z6EZO.js";
|
|
54
54
|
import {
|
|
55
55
|
MergeManager
|
|
56
56
|
} from "./chunk-WIJWIKAN.js";
|
|
@@ -74,9 +74,9 @@ import {
|
|
|
74
74
|
} from "./chunk-O7VL5N6S.js";
|
|
75
75
|
import {
|
|
76
76
|
ClaudeContextManager
|
|
77
|
-
} from "./chunk-
|
|
78
|
-
import "./chunk-
|
|
79
|
-
import "./chunk-
|
|
77
|
+
} from "./chunk-7WANFUIK.js";
|
|
78
|
+
import "./chunk-6U6VI4SZ.js";
|
|
79
|
+
import "./chunk-W6WVRHJ6.js";
|
|
80
80
|
import {
|
|
81
81
|
extractSettingsOverrides
|
|
82
82
|
} from "./chunk-GYCR2LOU.js";
|
|
@@ -148,7 +148,7 @@ async function getProjectRoot() {
|
|
|
148
148
|
async function needsFirstRunSetup() {
|
|
149
149
|
const projectRoot = await getProjectRoot();
|
|
150
150
|
const firstRunManager = new FirstRunManager();
|
|
151
|
-
const
|
|
151
|
+
const isConfigured = await firstRunManager.isProjectConfigured(projectRoot);
|
|
152
152
|
if (isConfigured) {
|
|
153
153
|
logger.debug("needsFirstRunSetup: Project is tracked as configured globally");
|
|
154
154
|
return false;
|
|
@@ -867,7 +867,7 @@ var ValidationRunner = class {
|
|
|
867
867
|
const stepStartTime = Date.now();
|
|
868
868
|
let scriptToRun = null;
|
|
869
869
|
try {
|
|
870
|
-
const pkgJson = await
|
|
870
|
+
const pkgJson = await getPackageConfig(worktreePath);
|
|
871
871
|
const hasCompileScript = hasScript(pkgJson, "compile");
|
|
872
872
|
const hasTypecheckScript = hasScript(pkgJson, "typecheck");
|
|
873
873
|
if (hasCompileScript) {
|
|
@@ -947,7 +947,7 @@ Run '${runCommand}' to see detailed errors.`
|
|
|
947
947
|
async runLint(worktreePath, dryRun) {
|
|
948
948
|
const stepStartTime = Date.now();
|
|
949
949
|
try {
|
|
950
|
-
const pkgJson = await
|
|
950
|
+
const pkgJson = await getPackageConfig(worktreePath);
|
|
951
951
|
const hasLintScript = hasScript(pkgJson, "lint");
|
|
952
952
|
if (!hasLintScript) {
|
|
953
953
|
getLogger().debug("Skipping lint - no lint script found");
|
|
@@ -1020,7 +1020,7 @@ Run '${runCommand}' to see detailed errors.`
|
|
|
1020
1020
|
async runTests(worktreePath, dryRun) {
|
|
1021
1021
|
const stepStartTime = Date.now();
|
|
1022
1022
|
try {
|
|
1023
|
-
const pkgJson = await
|
|
1023
|
+
const pkgJson = await getPackageConfig(worktreePath);
|
|
1024
1024
|
const hasTestScript = hasScript(pkgJson, "test");
|
|
1025
1025
|
if (!hasTestScript) {
|
|
1026
1026
|
getLogger().debug("Skipping tests - no test script found");
|
|
@@ -1134,12 +1134,10 @@ Run '${runCommand}' to see detailed errors.`
|
|
|
1134
1134
|
}
|
|
1135
1135
|
/**
|
|
1136
1136
|
* Get validation command string for prompts
|
|
1137
|
+
* Uses il commands for multi-language project support
|
|
1137
1138
|
*/
|
|
1138
|
-
getValidationCommand(validationType,
|
|
1139
|
-
|
|
1140
|
-
return `npm run ${validationType}`;
|
|
1141
|
-
}
|
|
1142
|
-
return `${packageManager} ${validationType}`;
|
|
1139
|
+
getValidationCommand(validationType, _packageManager) {
|
|
1140
|
+
return `il ${validationType}`;
|
|
1143
1141
|
}
|
|
1144
1142
|
/**
|
|
1145
1143
|
* Get Claude prompt for specific validation type
|
|
@@ -1606,24 +1604,24 @@ var BuildRunner = class {
|
|
|
1606
1604
|
async runBuild(buildPath, options = {}) {
|
|
1607
1605
|
const startTime = Date.now();
|
|
1608
1606
|
try {
|
|
1609
|
-
const pkgJson = await
|
|
1607
|
+
const pkgJson = await getPackageConfig(buildPath);
|
|
1610
1608
|
const hasBuildScript = hasScript(pkgJson, "build");
|
|
1611
1609
|
if (!hasBuildScript) {
|
|
1612
1610
|
getLogger().debug("Skipping build - no build script found");
|
|
1613
1611
|
return {
|
|
1614
1612
|
success: true,
|
|
1615
1613
|
skipped: true,
|
|
1616
|
-
reason: "No build script found in package
|
|
1614
|
+
reason: "No build script found in package configuration",
|
|
1617
1615
|
duration: Date.now() - startTime
|
|
1618
1616
|
};
|
|
1619
1617
|
}
|
|
1620
1618
|
} catch (error) {
|
|
1621
1619
|
if (error instanceof Error && error.message.includes("package.json not found")) {
|
|
1622
|
-
getLogger().debug("Skipping build - no package
|
|
1620
|
+
getLogger().debug("Skipping build - no package configuration found");
|
|
1623
1621
|
return {
|
|
1624
1622
|
success: true,
|
|
1625
1623
|
skipped: true,
|
|
1626
|
-
reason: "No package
|
|
1624
|
+
reason: "No package configuration found in project",
|
|
1627
1625
|
duration: Date.now() - startTime
|
|
1628
1626
|
};
|
|
1629
1627
|
}
|
|
@@ -1769,7 +1767,7 @@ var FinishCommand = class {
|
|
|
1769
1767
|
* Main entry point for finish command
|
|
1770
1768
|
*/
|
|
1771
1769
|
async execute(input) {
|
|
1772
|
-
var _a, _b;
|
|
1770
|
+
var _a, _b, _c, _d;
|
|
1773
1771
|
const isJsonMode = input.options.json === true;
|
|
1774
1772
|
const result = {
|
|
1775
1773
|
success: false,
|
|
@@ -1780,13 +1778,13 @@ var FinishCommand = class {
|
|
|
1780
1778
|
};
|
|
1781
1779
|
if (isJsonMode) {
|
|
1782
1780
|
const settings2 = await this.settingsManager.loadSettings();
|
|
1783
|
-
if (((_a = settings2.mergeBehavior) == null ? void 0 : _a.mode) === "github-pr" && input.options.cleanup === void 0) {
|
|
1784
|
-
throw new Error(
|
|
1781
|
+
if ((((_a = settings2.mergeBehavior) == null ? void 0 : _a.mode) === "github-pr" || ((_b = settings2.mergeBehavior) == null ? void 0 : _b.mode) === "github-draft-pr") && input.options.cleanup === void 0) {
|
|
1782
|
+
throw new Error('JSON mode with "github-pr"/"github-draft-pr" workflow requires --cleanup or --no-cleanup flag. Use: il finish --json --cleanup <identifier>');
|
|
1785
1783
|
}
|
|
1786
1784
|
}
|
|
1787
1785
|
const settings = await this.settingsManager.loadSettings();
|
|
1788
1786
|
let repo;
|
|
1789
|
-
const needsRepo = ((
|
|
1787
|
+
const needsRepo = ((_c = settings.mergeBehavior) == null ? void 0 : _c.mode) === "github-pr" || ((_d = settings.mergeBehavior) == null ? void 0 : _d.mode) === "github-draft-pr" || this.issueTracker.providerName === "github";
|
|
1790
1788
|
if (needsRepo && await hasMultipleRemotes()) {
|
|
1791
1789
|
repo = await getConfiguredRepoFromSettings(settings);
|
|
1792
1790
|
getLogger().info(`Using GitHub repository: ${repo}`);
|
|
@@ -2917,14 +2915,14 @@ async function validateGhCliForCommand(command) {
|
|
|
2917
2915
|
const settings = await settingsManager.loadSettings();
|
|
2918
2916
|
const provider = IssueTrackerFactory.getProviderName(settings);
|
|
2919
2917
|
const mergeBehaviorMode = (_a = settings.mergeBehavior) == null ? void 0 : _a.mode;
|
|
2920
|
-
needsGhCli = provider === "github" || mergeBehaviorMode === "github-pr";
|
|
2918
|
+
needsGhCli = provider === "github" || mergeBehaviorMode === "github-pr" || mergeBehaviorMode === "github-draft-pr";
|
|
2921
2919
|
} catch {
|
|
2922
2920
|
needsGhCli = true;
|
|
2923
2921
|
}
|
|
2924
2922
|
}
|
|
2925
2923
|
if (!ghAvailable) {
|
|
2926
2924
|
if (needsGhCli) {
|
|
2927
|
-
const errorMessage = alwaysRequireGh.includes(commandName) ? `The "${commandName}" command requires GitHub CLI (gh) to be installed.` : `GitHub CLI (gh) is required when using GitHub as the issue tracker or "github-pr" merge mode.`;
|
|
2925
|
+
const errorMessage = alwaysRequireGh.includes(commandName) ? `The "${commandName}" command requires GitHub CLI (gh) to be installed.` : `GitHub CLI (gh) is required when using GitHub as the issue tracker or "github-pr"/"github-draft-pr" merge mode.`;
|
|
2928
2926
|
logger.error(errorMessage);
|
|
2929
2927
|
logger.info("");
|
|
2930
2928
|
logger.info("To install GitHub CLI:");
|
|
@@ -2940,10 +2938,10 @@ async function validateGhCliForCommand(command) {
|
|
|
2940
2938
|
const settings = await settingsManager.loadSettings();
|
|
2941
2939
|
const provider = IssueTrackerFactory.getProviderName(settings);
|
|
2942
2940
|
const mergeBehaviorMode = (_b = settings.mergeBehavior) == null ? void 0 : _b.mode;
|
|
2943
|
-
if (provider === "github" || mergeBehaviorMode === "github-pr") {
|
|
2941
|
+
if (provider === "github" || mergeBehaviorMode === "github-pr" || mergeBehaviorMode === "github-draft-pr") {
|
|
2944
2942
|
logger.warn("GitHub CLI (gh) is not installed.");
|
|
2945
2943
|
logger.warn(
|
|
2946
|
-
|
|
2944
|
+
'Some features may not work correctly with your current configuration (GitHub provider or "github-pr"/"github-draft-pr" merge mode).'
|
|
2947
2945
|
);
|
|
2948
2946
|
logger.info("To install: brew install gh (macOS) or see https://github.com/cli/cli#installation");
|
|
2949
2947
|
logger.info("");
|
|
@@ -2999,7 +2997,7 @@ async function autoLaunchInitForMultipleRemotes() {
|
|
|
2999
2997
|
await waitForKeypress2("Press any key to start configuration...");
|
|
3000
2998
|
logger.info("");
|
|
3001
2999
|
try {
|
|
3002
|
-
const { InitCommand: InitCommand2 } = await import("./init-
|
|
3000
|
+
const { InitCommand: InitCommand2 } = await import("./init-HB34Q5FH.js");
|
|
3003
3001
|
const initCommand = new InitCommand2();
|
|
3004
3002
|
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.";
|
|
3005
3003
|
await initCommand.execute(customInitialMessage);
|
|
@@ -3100,7 +3098,7 @@ program.command("add-issue").alias("a").description("Create and enhance GitHub i
|
|
|
3100
3098
|
});
|
|
3101
3099
|
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) => {
|
|
3102
3100
|
try {
|
|
3103
|
-
const { FeedbackCommand } = await import("./feedback-
|
|
3101
|
+
const { FeedbackCommand } = await import("./feedback-O4Q55SVS.js");
|
|
3104
3102
|
const command = new FeedbackCommand();
|
|
3105
3103
|
const feedbackOptions = {};
|
|
3106
3104
|
if (options.body !== void 0) {
|
|
@@ -3195,7 +3193,7 @@ program.command("spin").alias("ignite").description("Launch Claude with auto-det
|
|
|
3195
3193
|
new Option("--one-shot <mode>", "One-shot automation mode").choices(["default", "noReview", "bypassPermissions"]).default("default")
|
|
3196
3194
|
).action(async (options) => {
|
|
3197
3195
|
try {
|
|
3198
|
-
const { IgniteCommand } = await import("./ignite-
|
|
3196
|
+
const { IgniteCommand } = await import("./ignite-VHV65WEZ.js");
|
|
3199
3197
|
const command = new IgniteCommand();
|
|
3200
3198
|
await command.execute(options.oneShot ?? "default");
|
|
3201
3199
|
} catch (error) {
|
|
@@ -3206,7 +3204,7 @@ program.command("spin").alias("ignite").description("Launch Claude with auto-det
|
|
|
3206
3204
|
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) => {
|
|
3207
3205
|
try {
|
|
3208
3206
|
const args = (command == null ? void 0 : command.args) ? command.args.slice(identifier ? 1 : 0) : [];
|
|
3209
|
-
const { OpenCommand } = await import("./open-
|
|
3207
|
+
const { OpenCommand } = await import("./open-WHVUYGPY.js");
|
|
3210
3208
|
const cmd = new OpenCommand();
|
|
3211
3209
|
const input = identifier ? { identifier, args } : { args };
|
|
3212
3210
|
await cmd.execute(input);
|
|
@@ -3218,7 +3216,7 @@ program.command("open").description("Open workspace in browser or run CLI tool")
|
|
|
3218
3216
|
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) => {
|
|
3219
3217
|
try {
|
|
3220
3218
|
const args = (command == null ? void 0 : command.args) ? command.args.slice(identifier ? 1 : 0) : [];
|
|
3221
|
-
const { RunCommand } = await import("./run-
|
|
3219
|
+
const { RunCommand } = await import("./run-NCRK5NPR.js");
|
|
3222
3220
|
const cmd = new RunCommand();
|
|
3223
3221
|
const input = identifier ? { identifier, args } : { args };
|
|
3224
3222
|
await cmd.execute(input);
|
|
@@ -3229,7 +3227,7 @@ program.command("run").description("Run CLI tool or open workspace in browser").
|
|
|
3229
3227
|
});
|
|
3230
3228
|
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) => {
|
|
3231
3229
|
try {
|
|
3232
|
-
const { DevServerCommand } = await import("./dev-server-
|
|
3230
|
+
const { DevServerCommand } = await import("./dev-server-4RCDJ5MU.js");
|
|
3233
3231
|
const cmd = new DevServerCommand();
|
|
3234
3232
|
await cmd.execute({ identifier, json: options == null ? void 0 : options.json });
|
|
3235
3233
|
} catch (error) {
|
|
@@ -3247,10 +3245,50 @@ program.command("shell").alias("terminal").description("Open interactive shell w
|
|
|
3247
3245
|
process.exit(1);
|
|
3248
3246
|
}
|
|
3249
3247
|
});
|
|
3248
|
+
program.command("build").description("Run the build script").argument("[identifier]", "Issue number, PR number, or branch name (auto-detected if omitted)").action(async (identifier) => {
|
|
3249
|
+
try {
|
|
3250
|
+
const { BuildCommand } = await import("./build-FJVYP7EV.js");
|
|
3251
|
+
const cmd = new BuildCommand();
|
|
3252
|
+
await cmd.execute(identifier ? { identifier } : {});
|
|
3253
|
+
} catch (error) {
|
|
3254
|
+
logger.error(`Build failed: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
3255
|
+
process.exit(1);
|
|
3256
|
+
}
|
|
3257
|
+
});
|
|
3258
|
+
program.command("lint").description("Run the lint script").argument("[identifier]", "Issue number, PR number, or branch name (auto-detected if omitted)").action(async (identifier) => {
|
|
3259
|
+
try {
|
|
3260
|
+
const { LintCommand } = await import("./lint-5JMCWE4Y.js");
|
|
3261
|
+
const cmd = new LintCommand();
|
|
3262
|
+
await cmd.execute(identifier ? { identifier } : {});
|
|
3263
|
+
} catch (error) {
|
|
3264
|
+
logger.error(`Lint failed: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
3265
|
+
process.exit(1);
|
|
3266
|
+
}
|
|
3267
|
+
});
|
|
3268
|
+
program.command("test").description("Run the test script").argument("[identifier]", "Issue number, PR number, or branch name (auto-detected if omitted)").action(async (identifier) => {
|
|
3269
|
+
try {
|
|
3270
|
+
const { TestCommand } = await import("./test-3KIVXI6J.js");
|
|
3271
|
+
const cmd = new TestCommand();
|
|
3272
|
+
await cmd.execute(identifier ? { identifier } : {});
|
|
3273
|
+
} catch (error) {
|
|
3274
|
+
logger.error(`Test failed: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
3275
|
+
process.exit(1);
|
|
3276
|
+
}
|
|
3277
|
+
});
|
|
3278
|
+
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) => {
|
|
3279
|
+
try {
|
|
3280
|
+
const { CompileCommand } = await import("./compile-ULNO5F7Q.js");
|
|
3281
|
+
const cmd = new CompileCommand();
|
|
3282
|
+
await cmd.execute(identifier ? { identifier } : {});
|
|
3283
|
+
} catch (error) {
|
|
3284
|
+
logger.error(`Compile failed: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
3285
|
+
process.exit(1);
|
|
3286
|
+
}
|
|
3287
|
+
});
|
|
3250
3288
|
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").action(async (identifier, options) => {
|
|
3251
3289
|
const executeAction = async () => {
|
|
3252
3290
|
try {
|
|
3253
|
-
const { CleanupCommand } = await import("./cleanup-
|
|
3291
|
+
const { CleanupCommand } = await import("./cleanup-OU2HFOOG.js");
|
|
3254
3292
|
const command = new CleanupCommand();
|
|
3255
3293
|
const input = {
|
|
3256
3294
|
options: options ?? {}
|
|
@@ -3339,7 +3377,7 @@ program.command("projects").description("List configured iloom projects").option
|
|
|
3339
3377
|
});
|
|
3340
3378
|
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) => {
|
|
3341
3379
|
try {
|
|
3342
|
-
const { InitCommand: InitCommand2 } = await import("./init-
|
|
3380
|
+
const { InitCommand: InitCommand2 } = await import("./init-HB34Q5FH.js");
|
|
3343
3381
|
const command = new InitCommand2();
|
|
3344
3382
|
const trimmedPrompt = prompt == null ? void 0 : prompt.trim();
|
|
3345
3383
|
const customPrompt = trimmedPrompt && trimmedPrompt.length > 0 ? trimmedPrompt : void 0;
|
|
@@ -3431,9 +3469,9 @@ program.command("test-github").description("Test GitHub integration (Issue #3)")
|
|
|
3431
3469
|
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) => {
|
|
3432
3470
|
try {
|
|
3433
3471
|
const { detectClaudeCli: detectClaudeCli2, getClaudeVersion, generateBranchName, launchClaude: launchClaude2 } = await import("./claude-H33OQMXO.js");
|
|
3434
|
-
const { PromptTemplateManager } = await import("./PromptTemplateManager-
|
|
3435
|
-
const { ClaudeService } = await import("./ClaudeService-
|
|
3436
|
-
const { ClaudeContextManager: ClaudeContextManager2 } = await import("./ClaudeContextManager-
|
|
3472
|
+
const { PromptTemplateManager } = await import("./PromptTemplateManager-C3DK6XZL.js");
|
|
3473
|
+
const { ClaudeService } = await import("./ClaudeService-O2PB22GX.js");
|
|
3474
|
+
const { ClaudeContextManager: ClaudeContextManager2 } = await import("./ClaudeContextManager-6J2EB4QU.js");
|
|
3437
3475
|
logger.info("Testing Claude Integration\n");
|
|
3438
3476
|
if (options.detect) {
|
|
3439
3477
|
logger.info("Detecting Claude CLI...");
|
|
@@ -3621,7 +3659,7 @@ program.command("test-prefix").description("Test worktree prefix configuration -
|
|
|
3621
3659
|
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) => {
|
|
3622
3660
|
const executeAction = async () => {
|
|
3623
3661
|
try {
|
|
3624
|
-
const { SummaryCommand } = await import("./summary-
|
|
3662
|
+
const { SummaryCommand } = await import("./summary-CVFAMDOJ.js");
|
|
3625
3663
|
const command = new SummaryCommand();
|
|
3626
3664
|
const result = await command.execute({ identifier, options });
|
|
3627
3665
|
if (options.json && result) {
|