@iloom/cli 0.13.1 → 0.13.3
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 +1 -1
- package/dist/CLAUDE.md +66 -0
- package/dist/{ClaudeContextManager-ZH6LEA5I.js → ClaudeContextManager-KJ4VEA2F.js} +5 -5
- package/dist/{ClaudeService-YR66WXZN.js → ClaudeService-WTJO4UW6.js} +4 -4
- package/dist/{IssueTrackerFactory-O2ZBA666.js → IssueTrackerFactory-UEJALI4X.js} +3 -3
- package/dist/{LoomLauncher-V54ENBEF.js → LoomLauncher-KG2VBNQA.js} +5 -5
- package/dist/{PromptTemplateManager-4RFELNYY.js → PromptTemplateManager-QIUVJP6S.js} +2 -2
- package/dist/README.md +1 -1
- package/dist/{SettingsManager-SLSYEYDZ.js → SettingsManager-PVHBSCMI.js} +2 -2
- package/dist/agents/CLAUDE.md +68 -0
- package/dist/agents/iloom-code-reviewer.md +1 -0
- package/dist/agents/iloom-wave-verifier.md +1 -36
- package/dist/{build-ZTGWDHWU.js → build-2FXDYEZQ.js} +6 -6
- package/dist/{chunk-LNY2Y32V.js → chunk-2WRD6Y5E.js} +2 -2
- package/dist/{chunk-WYDLOQYO.js → chunk-32D4CWWH.js} +2 -2
- package/dist/{chunk-KGOBNC5A.js → chunk-5W44AI63.js} +3 -3
- package/dist/{chunk-PPQ5LV7U.js → chunk-D6FU4DLN.js} +2 -2
- package/dist/{chunk-PS6K2AOV.js → chunk-DMNI225H.js} +4 -4
- package/dist/{chunk-55NTREIU.js → chunk-DYLOITSO.js} +55 -35
- package/dist/chunk-DYLOITSO.js.map +1 -0
- package/dist/{chunk-T4KFKKEB.js → chunk-H4TSDALC.js} +6 -6
- package/dist/{chunk-J5JOJPK3.js → chunk-L3P3YJCE.js} +2 -2
- package/dist/{chunk-MRPIDNZU.js → chunk-LDE6VNG5.js} +1 -1
- package/dist/chunk-LDE6VNG5.js.map +1 -0
- package/dist/{chunk-F5NKWLMQ.js → chunk-MNPKEWBQ.js} +9 -5
- package/dist/chunk-MNPKEWBQ.js.map +1 -0
- package/dist/{chunk-EHAITKLS.js → chunk-MPHSR6GA.js} +3 -3
- package/dist/{chunk-HWDQRW3O.js → chunk-OHX3PSAY.js} +2 -2
- package/dist/{chunk-C2BVNJW5.js → chunk-OIJNBFMP.js} +2 -2
- package/dist/{chunk-TJDKGKQV.js → chunk-OMV47LLA.js} +2 -2
- package/dist/{chunk-P5MNWBLH.js → chunk-OVW26FHW.js} +19 -7
- package/dist/chunk-OVW26FHW.js.map +1 -0
- package/dist/{chunk-QNRXRSKC.js → chunk-RP6MHV24.js} +9 -9
- package/dist/chunk-RP6MHV24.js.map +1 -0
- package/dist/{chunk-UXBVDD7U.js → chunk-U2OPXZ6E.js} +282 -44
- package/dist/chunk-U2OPXZ6E.js.map +1 -0
- package/dist/{chunk-T4NESGYB.js → chunk-UMAOVKQX.js} +3 -3
- package/dist/{chunk-E5OM25WK.js → chunk-UQWMPQ2Q.js} +2 -2
- package/dist/{chunk-ZEFTWM5Z.js → chunk-VUIPDX3T.js} +2 -2
- package/dist/{chunk-GQDVH6FA.js → chunk-XC5JKRSH.js} +2 -2
- package/dist/{chunk-G2DGDCDP.js → chunk-Y2JHYPMX.js} +15 -13
- package/dist/chunk-Y2JHYPMX.js.map +1 -0
- package/dist/{chunk-ERMEYFT6.js → chunk-YVNG35OW.js} +2 -2
- package/dist/{chunk-7TN5VW4I.js → chunk-Z32HPRZF.js} +2 -1
- package/dist/chunk-Z32HPRZF.js.map +1 -0
- package/dist/{chunk-KCAWSZUO.js → chunk-Z3ZEJN3W.js} +13 -13
- package/dist/{chunk-GPBX2BY2.js → chunk-ZWXJ7G2C.js} +2 -2
- package/dist/{cleanup-BCVY7PEF.js → cleanup-W5FP3UKK.js} +16 -16
- package/dist/cli.js +115 -68
- package/dist/cli.js.map +1 -1
- package/dist/{commit-L5JNBU4U.js → commit-7RI2JFFW.js} +6 -6
- package/dist/{compile-GPJOHXH4.js → compile-NWTMKAGL.js} +6 -6
- package/dist/{contribute-QEGCI4PS.js → contribute-QWPOT4QR.js} +3 -3
- package/dist/{dev-server-UQKNKU2S.js → dev-server-U2XUN57X.js} +61 -30
- package/dist/dev-server-U2XUN57X.js.map +1 -0
- package/dist/{feedback-2LWXKLQZ.js → feedback-M43SGGK2.js} +4 -4
- package/dist/{git-IS7AV3ED.js → git-ZTMT6OAI.js} +3 -3
- package/dist/{ignite-VQDJQ37S.js → ignite-GUYKYC5G.js} +11 -11
- package/dist/index.d.ts +30 -3
- package/dist/index.js +8 -4
- package/dist/index.js.map +1 -1
- package/dist/{init-7SDJUAEZ.js → init-AMLCFVXG.js} +9 -7
- package/dist/init-AMLCFVXG.js.map +1 -0
- package/dist/{install-deps-NGSFDNUW.js → install-deps-XS2UUCUS.js} +6 -6
- package/dist/{issues-4HQKEUP7.js → issues-2IT7PSNZ.js} +4 -4
- package/dist/{lint-C5FOVRXY.js → lint-DKWJHET3.js} +6 -6
- package/dist/mcp/issue-management-server.js +8 -4
- package/dist/mcp/issue-management-server.js.map +1 -1
- package/dist/{open-2HL6GV5F.js → open-XIUV5JMJ.js} +16 -15
- package/dist/open-XIUV5JMJ.js.map +1 -0
- package/dist/{plan-GC3HF73T.js → plan-UPYDB34J.js} +20 -20
- package/dist/prompts/epic-report-prompt.txt +145 -0
- package/dist/prompts/init-prompt.txt +32 -9
- package/dist/prompts/issue-prompt.txt +1 -1
- package/dist/prompts/swarm-orchestrator-prompt.txt +50 -6
- package/dist/{rebase-MLIN572O.js → rebase-6AXN45AE.js} +5 -5
- package/dist/{recap-CKGKFDJL.js → recap-XDKI3MTA.js} +6 -6
- package/dist/{run-CUNRQNZS.js → run-VOGGJGPO.js} +19 -19
- package/dist/run-VOGGJGPO.js.map +1 -0
- package/dist/schema/settings.schema.json +14 -0
- package/dist/{shell-M2YYPNGV.js → shell-XOILFEZW.js} +5 -5
- package/dist/{summary-XR4CBJEG.js → summary-BVYOM63C.js} +10 -8
- package/dist/{summary-XR4CBJEG.js.map → summary-BVYOM63C.js.map} +1 -1
- package/dist/{test-ESDAHEVE.js → test-6T2UMQ7T.js} +6 -6
- package/dist/{test-git-KWPLHYSI.js → test-git-CQ65OL45.js} +3 -3
- package/dist/{test-jira-6NK7UHSV.js → test-jira-CQQHGZ3S.js} +3 -3
- package/dist/{test-prefix-VVODGHXP.js → test-prefix-HMTZSS67.js} +3 -3
- package/dist/{test-webserver-AHXKC6H4.js → test-webserver-ZN73CM2T.js} +5 -5
- package/dist/{vscode-OY7HOVRO.js → vscode-ABQ5ZSH7.js} +5 -5
- package/package.json +1 -1
- package/dist/chunk-55NTREIU.js.map +0 -1
- package/dist/chunk-7TN5VW4I.js.map +0 -1
- package/dist/chunk-F5NKWLMQ.js.map +0 -1
- package/dist/chunk-G2DGDCDP.js.map +0 -1
- package/dist/chunk-MRPIDNZU.js.map +0 -1
- package/dist/chunk-P5MNWBLH.js.map +0 -1
- package/dist/chunk-QNRXRSKC.js.map +0 -1
- package/dist/chunk-UXBVDD7U.js.map +0 -1
- package/dist/dev-server-UQKNKU2S.js.map +0 -1
- package/dist/init-7SDJUAEZ.js.map +0 -1
- package/dist/open-2HL6GV5F.js.map +0 -1
- package/dist/run-CUNRQNZS.js.map +0 -1
- /package/dist/{ClaudeContextManager-ZH6LEA5I.js.map → ClaudeContextManager-KJ4VEA2F.js.map} +0 -0
- /package/dist/{ClaudeService-YR66WXZN.js.map → ClaudeService-WTJO4UW6.js.map} +0 -0
- /package/dist/{IssueTrackerFactory-O2ZBA666.js.map → IssueTrackerFactory-UEJALI4X.js.map} +0 -0
- /package/dist/{LoomLauncher-V54ENBEF.js.map → LoomLauncher-KG2VBNQA.js.map} +0 -0
- /package/dist/{PromptTemplateManager-4RFELNYY.js.map → PromptTemplateManager-QIUVJP6S.js.map} +0 -0
- /package/dist/{SettingsManager-SLSYEYDZ.js.map → SettingsManager-PVHBSCMI.js.map} +0 -0
- /package/dist/{build-ZTGWDHWU.js.map → build-2FXDYEZQ.js.map} +0 -0
- /package/dist/{chunk-LNY2Y32V.js.map → chunk-2WRD6Y5E.js.map} +0 -0
- /package/dist/{chunk-WYDLOQYO.js.map → chunk-32D4CWWH.js.map} +0 -0
- /package/dist/{chunk-KGOBNC5A.js.map → chunk-5W44AI63.js.map} +0 -0
- /package/dist/{chunk-PPQ5LV7U.js.map → chunk-D6FU4DLN.js.map} +0 -0
- /package/dist/{chunk-PS6K2AOV.js.map → chunk-DMNI225H.js.map} +0 -0
- /package/dist/{chunk-T4KFKKEB.js.map → chunk-H4TSDALC.js.map} +0 -0
- /package/dist/{chunk-J5JOJPK3.js.map → chunk-L3P3YJCE.js.map} +0 -0
- /package/dist/{chunk-EHAITKLS.js.map → chunk-MPHSR6GA.js.map} +0 -0
- /package/dist/{chunk-HWDQRW3O.js.map → chunk-OHX3PSAY.js.map} +0 -0
- /package/dist/{chunk-C2BVNJW5.js.map → chunk-OIJNBFMP.js.map} +0 -0
- /package/dist/{chunk-TJDKGKQV.js.map → chunk-OMV47LLA.js.map} +0 -0
- /package/dist/{chunk-T4NESGYB.js.map → chunk-UMAOVKQX.js.map} +0 -0
- /package/dist/{chunk-E5OM25WK.js.map → chunk-UQWMPQ2Q.js.map} +0 -0
- /package/dist/{chunk-ZEFTWM5Z.js.map → chunk-VUIPDX3T.js.map} +0 -0
- /package/dist/{chunk-GQDVH6FA.js.map → chunk-XC5JKRSH.js.map} +0 -0
- /package/dist/{chunk-ERMEYFT6.js.map → chunk-YVNG35OW.js.map} +0 -0
- /package/dist/{chunk-KCAWSZUO.js.map → chunk-Z3ZEJN3W.js.map} +0 -0
- /package/dist/{chunk-GPBX2BY2.js.map → chunk-ZWXJ7G2C.js.map} +0 -0
- /package/dist/{cleanup-BCVY7PEF.js.map → cleanup-W5FP3UKK.js.map} +0 -0
- /package/dist/{commit-L5JNBU4U.js.map → commit-7RI2JFFW.js.map} +0 -0
- /package/dist/{compile-GPJOHXH4.js.map → compile-NWTMKAGL.js.map} +0 -0
- /package/dist/{contribute-QEGCI4PS.js.map → contribute-QWPOT4QR.js.map} +0 -0
- /package/dist/{feedback-2LWXKLQZ.js.map → feedback-M43SGGK2.js.map} +0 -0
- /package/dist/{git-IS7AV3ED.js.map → git-ZTMT6OAI.js.map} +0 -0
- /package/dist/{ignite-VQDJQ37S.js.map → ignite-GUYKYC5G.js.map} +0 -0
- /package/dist/{install-deps-NGSFDNUW.js.map → install-deps-XS2UUCUS.js.map} +0 -0
- /package/dist/{issues-4HQKEUP7.js.map → issues-2IT7PSNZ.js.map} +0 -0
- /package/dist/{lint-C5FOVRXY.js.map → lint-DKWJHET3.js.map} +0 -0
- /package/dist/{plan-GC3HF73T.js.map → plan-UPYDB34J.js.map} +0 -0
- /package/dist/{rebase-MLIN572O.js.map → rebase-6AXN45AE.js.map} +0 -0
- /package/dist/{recap-CKGKFDJL.js.map → recap-XDKI3MTA.js.map} +0 -0
- /package/dist/{shell-M2YYPNGV.js.map → shell-XOILFEZW.js.map} +0 -0
- /package/dist/{test-ESDAHEVE.js.map → test-6T2UMQ7T.js.map} +0 -0
- /package/dist/{test-git-KWPLHYSI.js.map → test-git-CQ65OL45.js.map} +0 -0
- /package/dist/{test-jira-6NK7UHSV.js.map → test-jira-CQQHGZ3S.js.map} +0 -0
- /package/dist/{test-prefix-VVODGHXP.js.map → test-prefix-HMTZSS67.js.map} +0 -0
- /package/dist/{test-webserver-AHXKC6H4.js.map → test-webserver-ZN73CM2T.js.map} +0 -0
- /package/dist/{vscode-OY7HOVRO.js.map → vscode-ABQ5ZSH7.js.map} +0 -0
|
@@ -2,37 +2,37 @@
|
|
|
2
2
|
import {
|
|
3
3
|
DevServerManager,
|
|
4
4
|
buildDevServerUrl
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-OVW26FHW.js";
|
|
6
6
|
import {
|
|
7
7
|
DockerManager
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-Z32HPRZF.js";
|
|
9
|
+
import "./chunk-2WRD6Y5E.js";
|
|
10
10
|
import {
|
|
11
11
|
getWorkspacePort
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-YVNG35OW.js";
|
|
13
13
|
import {
|
|
14
14
|
IdentifierParser
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-XC5JKRSH.js";
|
|
16
16
|
import "./chunk-OLJ54WGW.js";
|
|
17
17
|
import {
|
|
18
18
|
GitWorktreeManager
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-D6FU4DLN.js";
|
|
20
20
|
import {
|
|
21
21
|
openBrowser
|
|
22
22
|
} from "./chunk-WEBMMJKL.js";
|
|
23
|
-
import {
|
|
24
|
-
extractSettingsOverrides
|
|
25
|
-
} from "./chunk-GYCR2LOU.js";
|
|
26
23
|
import {
|
|
27
24
|
ProjectCapabilityDetector
|
|
28
25
|
} from "./chunk-772N5WCA.js";
|
|
29
26
|
import "./chunk-K3QGG4O2.js";
|
|
27
|
+
import {
|
|
28
|
+
extractSettingsOverrides
|
|
29
|
+
} from "./chunk-GYCR2LOU.js";
|
|
30
30
|
import {
|
|
31
31
|
extractIssueNumber
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-5W44AI63.js";
|
|
33
33
|
import {
|
|
34
34
|
SettingsManager
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-MNPKEWBQ.js";
|
|
36
36
|
import "./chunk-XIVLGWUX.js";
|
|
37
37
|
import "./chunk-FTYWGQFM.js";
|
|
38
38
|
import {
|
|
@@ -59,7 +59,7 @@ var OpenCommand = class {
|
|
|
59
59
|
const { capabilities, binEntries } = await this.capabilityDetector.detectCapabilities(worktree.path);
|
|
60
60
|
logger.debug(`Detected capabilities: ${capabilities.join(", ")}`);
|
|
61
61
|
if (capabilities.includes("web")) {
|
|
62
|
-
await this.openWebBrowser(worktree);
|
|
62
|
+
await this.openWebBrowser(worktree, input.env);
|
|
63
63
|
} else if (capabilities.includes("cli")) {
|
|
64
64
|
await this.runCLITool(worktree.path, binEntries, input.args ?? []);
|
|
65
65
|
} else {
|
|
@@ -183,7 +183,7 @@ var OpenCommand = class {
|
|
|
183
183
|
* Open web browser with workspace URL
|
|
184
184
|
* Auto-starts dev server if not already running
|
|
185
185
|
*/
|
|
186
|
-
async openWebBrowser(worktree) {
|
|
186
|
+
async openWebBrowser(worktree, env) {
|
|
187
187
|
var _a, _b, _c, _d, _e;
|
|
188
188
|
const cliOverrides = extractSettingsOverrides();
|
|
189
189
|
const settings = await this.settingsManager.loadSettings(void 0, cliOverrides);
|
|
@@ -209,7 +209,8 @@ var OpenCommand = class {
|
|
|
209
209
|
const serverReady = await this.devServerManager.ensureServerRunning(
|
|
210
210
|
worktree.path,
|
|
211
211
|
port,
|
|
212
|
-
dockerConfig
|
|
212
|
+
dockerConfig,
|
|
213
|
+
env
|
|
213
214
|
);
|
|
214
215
|
if (!serverReady) {
|
|
215
216
|
logger.warn(
|
|
@@ -257,4 +258,4 @@ Make sure the project is built (run 'il start' first)`
|
|
|
257
258
|
export {
|
|
258
259
|
OpenCommand
|
|
259
260
|
};
|
|
260
|
-
//# sourceMappingURL=open-
|
|
261
|
+
//# sourceMappingURL=open-XIUV5JMJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/open.ts"],"sourcesContent":["import path from 'path'\nimport fs from 'fs-extra'\nimport { execa } from 'execa'\nimport { GitWorktreeManager } from '../lib/GitWorktreeManager.js'\nimport { ProjectCapabilityDetector } from '../lib/ProjectCapabilityDetector.js'\nimport { DevServerManager } from '../lib/DevServerManager.js'\nimport { DockerManager } from '../lib/DockerManager.js'\nimport { SettingsManager } from '../lib/SettingsManager.js'\nimport { IdentifierParser } from '../utils/IdentifierParser.js'\nimport { openBrowser } from '../utils/browser.js'\nimport { getWorkspacePort } from '../utils/port.js'\nimport { extractIssueNumber } from '../utils/git.js'\nimport { buildDevServerUrl } from '../utils/dev-server.js'\nimport { logger } from '../utils/logger.js'\nimport { extractSettingsOverrides } from '../utils/cli-overrides.js'\nimport type { GitWorktree } from '../types/worktree.js'\n\nexport interface OpenCommandInput {\n\tidentifier?: string\n\targs?: string[]\n\tenv?: Record<string, string> | undefined\n}\n\ninterface ParsedOpenInput {\n\ttype: 'issue' | 'pr' | 'branch' | 'epic'\n\tnumber?: string | number // For issues and PRs\n\tbranchName?: string // For branches\n\toriginalInput: string\n\tautoDetected: boolean\n}\n\n/**\n * OpenCommand - Opens workspace in browser or runs CLI tool\n * Priority: Web first, CLI fallback\n */\nexport class OpenCommand {\n\tconstructor(\n\t\tprivate gitWorktreeManager = new GitWorktreeManager(),\n\t\tprivate capabilityDetector = new ProjectCapabilityDetector(),\n\t\tprivate identifierParser = new IdentifierParser(new GitWorktreeManager()),\n\t\tprivate devServerManager = new DevServerManager(),\n\t\tprivate settingsManager = new SettingsManager()\n\t) {}\n\n\tasync execute(input: OpenCommandInput): Promise<void> {\n\t\t// 1. Parse or auto-detect identifier\n\t\tconst parsed = input.identifier\n\t\t\t? await this.parseExplicitInput(input.identifier)\n\t\t\t: await this.autoDetectFromCurrentDirectory()\n\n\t\tlogger.debug(`Parsed input: ${JSON.stringify(parsed)}`)\n\n\t\t// 2. Find worktree path based on identifier\n\t\tconst worktree = await this.findWorktreeForIdentifier(parsed)\n\n\t\tlogger.info(`Found worktree at: ${worktree.path}`)\n\n\t\t// 3. Detect project capabilities\n\t\tconst { capabilities, binEntries } =\n\t\t\tawait this.capabilityDetector.detectCapabilities(worktree.path)\n\n\t\tlogger.debug(`Detected capabilities: ${capabilities.join(', ')}`)\n\n\t\t// 4. Execute based on capabilities (web first, CLI fallback)\n\t\tif (capabilities.includes('web')) {\n\t\t\tawait this.openWebBrowser(worktree, input.env)\n\t\t} else if (capabilities.includes('cli')) {\n\t\t\tawait this.runCLITool(worktree.path, binEntries, input.args ?? [])\n\t\t} else {\n\t\t\tthrow new Error(\n\t\t\t\t`No web or CLI capabilities detected for workspace at ${worktree.path}`\n\t\t\t)\n\t\t}\n\t}\n\n\t/**\n\t * Parse explicit identifier input\n\t */\n\tprivate async parseExplicitInput(identifier: string): Promise<ParsedOpenInput> {\n\t\tconst parsed = await this.identifierParser.parseForPatternDetection(identifier)\n\n\t\t// Description type should never reach open command (converted in start)\n\t\tif (parsed.type === 'description') {\n\t\t\tthrow new Error('Description input type is not supported in open command')\n\t\t}\n\n\t\tconst result: ParsedOpenInput = {\n\t\t\ttype: parsed.type,\n\t\t\toriginalInput: parsed.originalInput,\n\t\t\tautoDetected: false,\n\t\t}\n\n\t\tif (parsed.number !== undefined) {\n\t\t\tresult.number = parsed.number\n\t\t}\n\t\tif (parsed.branchName !== undefined) {\n\t\t\tresult.branchName = parsed.branchName\n\t\t}\n\n\t\treturn result\n\t}\n\n\t/**\n\t * Auto-detect identifier from current directory\n\t * Same logic as FinishCommand.autoDetectFromCurrentDirectory()\n\t */\n\tprivate async autoDetectFromCurrentDirectory(): Promise<ParsedOpenInput> {\n\t\tconst currentDir = path.basename(process.cwd())\n\n\t\t// Check for PR worktree pattern: _pr_N suffix\n\t\tconst prPattern = /_pr_(\\d+)$/\n\t\tconst prMatch = currentDir.match(prPattern)\n\n\t\tif (prMatch?.[1]) {\n\t\t\tconst prNumber = parseInt(prMatch[1], 10)\n\t\t\tlogger.debug(`Auto-detected PR #${prNumber} from directory: ${currentDir}`)\n\t\t\treturn {\n\t\t\t\ttype: 'pr',\n\t\t\t\tnumber: prNumber,\n\t\t\t\toriginalInput: currentDir,\n\t\t\t\tautoDetected: true,\n\t\t\t}\n\t\t}\n\n\t\t// Check for issue pattern in directory\n\t\tconst issueNumber = extractIssueNumber(currentDir)\n\n\t\tif (issueNumber !== null) {\n\t\t\tlogger.debug(`Auto-detected issue #${issueNumber} from directory: ${currentDir}`)\n\t\t\treturn {\n\t\t\t\ttype: 'issue',\n\t\t\t\tnumber: issueNumber,\n\t\t\t\toriginalInput: currentDir,\n\t\t\t\tautoDetected: true,\n\t\t\t}\n\t\t}\n\n\t\t// Fallback: get current branch name\n\t\tconst repoInfo = await this.gitWorktreeManager.getRepoInfo()\n\t\tconst currentBranch = repoInfo.currentBranch\n\n\t\tif (!currentBranch) {\n\t\t\tthrow new Error(\n\t\t\t\t'Could not auto-detect identifier. Please provide an issue number, PR number, or branch name.\\n' +\n\t\t\t\t\t'Expected directory pattern: feat/issue-XX-description OR worktree with _pr_N suffix'\n\t\t\t)\n\t\t}\n\n\t\t// Try to extract issue from branch name\n\t\tconst branchIssueNumber = extractIssueNumber(currentBranch)\n\t\tif (branchIssueNumber !== null) {\n\t\t\tlogger.debug(`Auto-detected issue #${branchIssueNumber} from branch: ${currentBranch}`)\n\t\t\treturn {\n\t\t\t\ttype: 'issue',\n\t\t\t\tnumber: branchIssueNumber,\n\t\t\t\toriginalInput: currentBranch,\n\t\t\t\tautoDetected: true,\n\t\t\t}\n\t\t}\n\n\t\t// Last resort: use branch name\n\t\treturn {\n\t\t\ttype: 'branch',\n\t\t\tbranchName: currentBranch,\n\t\t\toriginalInput: currentBranch,\n\t\t\tautoDetected: true,\n\t\t}\n\t}\n\n\t/**\n\t * Find worktree for the given identifier\n\t */\n\tprivate async findWorktreeForIdentifier(parsed: ParsedOpenInput): Promise<GitWorktree> {\n\t\tlet worktree: GitWorktree | null = null\n\n\t\tif (parsed.type === 'issue' && parsed.number !== undefined) {\n\t\t\tworktree = await this.gitWorktreeManager.findWorktreeForIssue(parsed.number)\n\t\t} else if (parsed.type === 'pr' && parsed.number !== undefined) {\n\t\t\t// For PRs, ensure the number is numeric (PRs are always numeric per GitHub)\n\t\t\tconst prNumber = typeof parsed.number === 'number' ? parsed.number : Number(parsed.number)\n\t\t\tif (isNaN(prNumber) || !isFinite(prNumber)) {\n\t\t\t\tthrow new Error(`Invalid PR number: ${parsed.number}. PR numbers must be numeric.`)\n\t\t\t}\n\t\t\t// Pass empty string for branch name since we don't know it yet\n\t\t\tworktree = await this.gitWorktreeManager.findWorktreeForPR(prNumber, '')\n\t\t} else if (parsed.type === 'branch' && parsed.branchName) {\n\t\t\tworktree = await this.gitWorktreeManager.findWorktreeForBranch(\n\t\t\t\tparsed.branchName\n\t\t\t)\n\t\t}\n\n\t\tif (!worktree) {\n\t\t\tthrow new Error(\n\t\t\t\t`No worktree found for ${this.formatParsedInput(parsed)}. ` +\n\t\t\t\t\t`Run 'il start ${parsed.originalInput}' to create one.`\n\t\t\t)\n\t\t}\n\n\t\treturn worktree\n\t}\n\n\t/**\n\t * Format parsed input for display\n\t */\n\tprivate formatParsedInput(parsed: ParsedOpenInput): string {\n\t\tconst autoLabel = parsed.autoDetected ? ' (auto-detected)' : ''\n\n\t\tif (parsed.type === 'issue') {\n\t\t\treturn `issue #${parsed.number}${autoLabel}`\n\t\t}\n\t\tif (parsed.type === 'pr') {\n\t\t\treturn `PR #${parsed.number}${autoLabel}`\n\t\t}\n\t\treturn `branch \"${parsed.branchName}\"${autoLabel}`\n\t}\n\n\t/**\n\t * Open web browser with workspace URL\n\t * Auto-starts dev server if not already running\n\t */\n\tprivate async openWebBrowser(worktree: GitWorktree, env?: Record<string, string>): Promise<void> {\n\t\tconst cliOverrides = extractSettingsOverrides()\n\t\tconst settings = await this.settingsManager.loadSettings(undefined, cliOverrides)\n\t\tconst isMainWorktree = await this.gitWorktreeManager.isMainWorktree(worktree, this.settingsManager)\n\t\tconst port = await getWorkspacePort({\n\t\t\tworktreePath: worktree.path,\n\t\t\tworktreeBranch: worktree.branch,\n\t\t\tbasePort: settings.capabilities?.web?.basePort,\n\t\t\tcheckEnvFile: true,\n\t\t\tisMainWorktree,\n\t\t})\n\n\t\t// Extract Docker configuration if Docker mode is enabled\n\t\tconst issueNumber = extractIssueNumber(worktree.branch)\n\t\tconst dockerIdentifier = issueNumber?.toString() ?? worktree.branch\n\t\tconst dockerConfig = DockerManager.buildDockerConfigFromSettings(\n\t\t\tsettings.capabilities?.web,\n\t\t\tdockerIdentifier\n\t\t)\n\n\t\tif (dockerConfig) {\n\t\t\tawait DockerManager.assertAvailable()\n\t\t\tconst { dockerFile, containerPort, identifier } = dockerConfig\n\t\t\tlogger.debug(`Docker mode enabled with config: ${JSON.stringify({ dockerFile, containerPort, identifier })}`)\n\t\t}\n\n\t\t// Ensure dev server is running on the port\n\t\tconst serverReady = await this.devServerManager.ensureServerRunning(\n\t\t\tworktree.path,\n\t\t\tport,\n\t\t\tdockerConfig,\n\t\t\tenv\n\t\t)\n\n\t\tif (!serverReady) {\n\t\t\tlogger.warn(\n\t\t\t\t`Dev server failed to start on port ${port}. Opening browser anyway...`\n\t\t\t)\n\t\t}\n\n\t\t// Construct URL and open browser\n\t\tconst protocol = settings.capabilities?.web?.protocol ?? 'http'\n\t\tconst url = buildDevServerUrl(port, protocol)\n\t\tlogger.info(`Opening browser: ${url}`)\n\t\tawait openBrowser(url)\n\t\tlogger.success('Browser opened')\n\t}\n\n\t/**\n\t * Run CLI tool directly from worktree bin path (NO SYMLINKS!)\n\t */\n\tprivate async runCLITool(\n\t\tworktreePath: string,\n\t\tbinEntries: Record<string, string>,\n\t\targs: string[]\n\t): Promise<void> {\n\t\t// Validate binEntries exist\n\t\tif (Object.keys(binEntries).length === 0) {\n\t\t\tthrow new Error('No bin entries found in package.json')\n\t\t}\n\n\t\t// Get first bin entry (deterministic)\n\t\tconst firstEntry = Object.entries(binEntries)[0]\n\t\tif (!firstEntry) {\n\t\t\tthrow new Error('No bin entries found in package.json')\n\t\t}\n\t\tconst [binName, binPath] = firstEntry\n\t\tlogger.debug(`Using bin entry: ${binName} -> ${binPath}`)\n\n\t\t// CRITICAL: Construct absolute path (NO SYMLINKS!)\n\t\tconst binFilePath = path.resolve(worktreePath, binPath)\n\t\tlogger.debug(`Resolved bin file path: ${binFilePath}`)\n\n\t\t// Verify file exists\n\t\tif (!(await fs.pathExists(binFilePath))) {\n\t\t\tthrow new Error(\n\t\t\t\t`CLI executable not found: ${binFilePath}\\n` +\n\t\t\t\t\t`Make sure the project is built (run 'il start' first)`\n\t\t\t)\n\t\t}\n\n\t\t// Execute with Node.js\n\t\tlogger.info(`Running CLI: node ${binFilePath} ${args.join(' ')}`)\n\t\tawait execa('node', [binFilePath, ...args], {\n\t\t\tstdio: 'inherit', // Allow interactive CLIs (prompts, colors, etc.)\n\t\t\tcwd: worktreePath, // Execute in worktree context\n\t\t\tenv: process.env, // Inherit environment\n\t\t})\n\t}\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
IgniteCommand
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-Y2JHYPMX.js";
|
|
5
5
|
import {
|
|
6
6
|
StartCommand,
|
|
7
7
|
launchFirstRunSetup,
|
|
8
8
|
needsFirstRunSetup
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-Z3ZEJN3W.js";
|
|
10
|
+
import "./chunk-DYLOITSO.js";
|
|
11
|
+
import "./chunk-L3P3YJCE.js";
|
|
12
|
+
import "./chunk-OIJNBFMP.js";
|
|
13
13
|
import {
|
|
14
14
|
preAcceptClaudeTrust
|
|
15
15
|
} from "./chunk-7UBEHQTP.js";
|
|
16
|
-
import "./chunk-
|
|
16
|
+
import "./chunk-YVNG35OW.js";
|
|
17
17
|
import {
|
|
18
18
|
matchIssueIdentifier
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-XC5JKRSH.js";
|
|
20
20
|
import "./chunk-HKEXRZMU.js";
|
|
21
21
|
import {
|
|
22
22
|
TelemetryService
|
|
@@ -29,26 +29,26 @@ import {
|
|
|
29
29
|
} from "./chunk-CQHHEW2M.js";
|
|
30
30
|
import {
|
|
31
31
|
AgentManager
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-RP6MHV24.js";
|
|
33
33
|
import {
|
|
34
34
|
IssueManagementProviderFactory
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-VUIPDX3T.js";
|
|
36
36
|
import "./chunk-4232AHNQ.js";
|
|
37
37
|
import "./chunk-OLJ54WGW.js";
|
|
38
|
-
import "./chunk-
|
|
38
|
+
import "./chunk-D6FU4DLN.js";
|
|
39
39
|
import "./chunk-WEBMMJKL.js";
|
|
40
|
-
import "./chunk-
|
|
41
|
-
import "./chunk-
|
|
40
|
+
import "./chunk-772N5WCA.js";
|
|
41
|
+
import "./chunk-K3QGG4O2.js";
|
|
42
|
+
import "./chunk-32D4CWWH.js";
|
|
43
|
+
import "./chunk-UMAOVKQX.js";
|
|
42
44
|
import {
|
|
43
45
|
PromptTemplateManager
|
|
44
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-LDE6VNG5.js";
|
|
45
47
|
import "./chunk-GYCR2LOU.js";
|
|
46
48
|
import "./chunk-AQUSMNBF.js";
|
|
47
|
-
import "./chunk-772N5WCA.js";
|
|
48
|
-
import "./chunk-K3QGG4O2.js";
|
|
49
49
|
import {
|
|
50
50
|
IssueTrackerFactory
|
|
51
|
-
} from "./chunk-
|
|
51
|
+
} from "./chunk-ZWXJ7G2C.js";
|
|
52
52
|
import "./chunk-DMSL5BAP.js";
|
|
53
53
|
import "./chunk-D4Q7T5KD.js";
|
|
54
54
|
import "./chunk-KV4NU3RP.js";
|
|
@@ -64,11 +64,11 @@ import {
|
|
|
64
64
|
detectClaudeCli,
|
|
65
65
|
launchClaude
|
|
66
66
|
} from "./chunk-DDHWZNGL.js";
|
|
67
|
-
import "./chunk-
|
|
67
|
+
import "./chunk-5W44AI63.js";
|
|
68
68
|
import {
|
|
69
69
|
PlanCommandSettingsSchema,
|
|
70
70
|
SettingsManager
|
|
71
|
-
} from "./chunk-
|
|
71
|
+
} from "./chunk-MNPKEWBQ.js";
|
|
72
72
|
import "./chunk-XIVLGWUX.js";
|
|
73
73
|
import {
|
|
74
74
|
withLogger
|
|
@@ -394,7 +394,7 @@ var PlanCommand = class {
|
|
|
394
394
|
);
|
|
395
395
|
if (shouldRunInit) {
|
|
396
396
|
logger.info(chalk.bold("Launching iloom init..."));
|
|
397
|
-
const { InitCommand } = await import("./init-
|
|
397
|
+
const { InitCommand } = await import("./init-AMLCFVXG.js");
|
|
398
398
|
const initCommand = new InitCommand();
|
|
399
399
|
await initCommand.execute(
|
|
400
400
|
"Help the user set up a GitHub repository or Linear project for this project so they can use issue management features. When complete tell the user they can exit to continue the planning session."
|
|
@@ -743,4 +743,4 @@ ${initialMessage}`;
|
|
|
743
743
|
export {
|
|
744
744
|
PlanCommand
|
|
745
745
|
};
|
|
746
|
-
//# sourceMappingURL=plan-
|
|
746
|
+
//# sourceMappingURL=plan-UPYDB34J.js.map
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
You are generating an implementation report for an epic PR. You are NOT having a conversation. Output ONLY the report markdown — no preamble, no meta-commentary, no sign-off.
|
|
2
|
+
|
|
3
|
+
## Epic Context
|
|
4
|
+
|
|
5
|
+
Epic: #{{EPIC_NUMBER}} - {{EPIC_TITLE}}
|
|
6
|
+
Children: {{TOTAL_CHILDREN}} total, {{TOTAL_SUCCEEDED}} succeeded, {{TOTAL_FAILED}} failed
|
|
7
|
+
|
|
8
|
+
## Content Quality Guidelines
|
|
9
|
+
|
|
10
|
+
**CRITICAL: This report is NOT a play-by-play of the swarm. It's a knowledge artifact for PR reviewers and future developers.**
|
|
11
|
+
|
|
12
|
+
The reader doesn't care about:
|
|
13
|
+
- Which agent did what, or in which order
|
|
14
|
+
- Git operations (rebases, merges, pushes, conflict resolution steps)
|
|
15
|
+
- Workflow phases, status transitions, or orchestration mechanics
|
|
16
|
+
- "The agent analyzed the issue and then planned the implementation"
|
|
17
|
+
|
|
18
|
+
The reader DOES care about:
|
|
19
|
+
- What changed in the codebase and why
|
|
20
|
+
- What could break and what to watch out for
|
|
21
|
+
- Decisions that constrain future work
|
|
22
|
+
- Gaps in testing or verification
|
|
23
|
+
- Integration risks from parallel development
|
|
24
|
+
|
|
25
|
+
**Self-check:** If a sentence describes swarm PROCESS rather than codebase KNOWLEDGE, delete it.
|
|
26
|
+
|
|
27
|
+
| BAD (process narration) | GOOD (technical insight) |
|
|
28
|
+
|-------------------------|--------------------------|
|
|
29
|
+
| "Issue #42 was implemented first, then #43 was merged" | "The auth middleware now validates tokens before route matching" |
|
|
30
|
+
| "The agent resolved a merge conflict in config.ts" | "Two children modified the same type union — reconciled to include both additions" |
|
|
31
|
+
| "Wave 1 completed successfully with 4 children" | "All 4 services share a common `ChildImplementationData` interface for consistency" |
|
|
32
|
+
| "The verification agent confirmed all must-haves" | "The collector gracefully degrades when recap files are missing (returns partial data)" |
|
|
33
|
+
|
|
34
|
+
## Report Structure
|
|
35
|
+
|
|
36
|
+
Produce these sections in order:
|
|
37
|
+
|
|
38
|
+
### 1. Executive Summary (always visible, no collapse)
|
|
39
|
+
|
|
40
|
+
3-4 sentences covering:
|
|
41
|
+
- What capability was added or changed (in user/developer terms, not swarm terms)
|
|
42
|
+
- Key architectural pattern or approach chosen
|
|
43
|
+
- Anything a reviewer should be concerned about
|
|
44
|
+
- Quick stats: files changed, tests added
|
|
45
|
+
|
|
46
|
+
### 2. What to Review Carefully (always visible, no collapse)
|
|
47
|
+
|
|
48
|
+
3-5 bullets pointing reviewers to the areas where human judgment matters most:
|
|
49
|
+
- Integration seams between independently-developed components
|
|
50
|
+
- Behavioral changes to existing code paths
|
|
51
|
+
- Edge cases with no test coverage
|
|
52
|
+
- Architectural choices that could be controversial
|
|
53
|
+
|
|
54
|
+
### 3. Cross-Cutting Risks & Assumptions
|
|
55
|
+
|
|
56
|
+
<details>
|
|
57
|
+
<summary>Risks & Assumptions (expand for details)</summary>
|
|
58
|
+
|
|
59
|
+
Synthesize from ALL children. Group by architectural concern (e.g., "API Surface", "Error Handling", "Type Safety") — NOT by child issue. Highlight risks that appeared in multiple children. Flag any contradictions between children's approaches.
|
|
60
|
+
|
|
61
|
+
</details>
|
|
62
|
+
|
|
63
|
+
### 4. Architecture Decisions
|
|
64
|
+
|
|
65
|
+
<details>
|
|
66
|
+
<summary>Key Decisions (expand for details)</summary>
|
|
67
|
+
|
|
68
|
+
Decisions that affect the overall system — shared interfaces, patterns, naming conventions, integration contracts. Include rationale. Format as bullets.
|
|
69
|
+
|
|
70
|
+
</details>
|
|
71
|
+
|
|
72
|
+
### 5. Testing & Verification
|
|
73
|
+
|
|
74
|
+
<details>
|
|
75
|
+
<summary>Test Coverage (expand for details)</summary>
|
|
76
|
+
|
|
77
|
+
- New tests: what areas they cover and rough count
|
|
78
|
+
- Modified tests: what changed and why
|
|
79
|
+
- Coverage gaps: areas with NO test coverage that need manual verification
|
|
80
|
+
- Integration verification results: what was checked, what passed, what was fixed
|
|
81
|
+
|
|
82
|
+
</details>
|
|
83
|
+
|
|
84
|
+
### 6. Lessons Learned
|
|
85
|
+
|
|
86
|
+
<details>
|
|
87
|
+
<summary>What we'd do differently (expand for details)</summary>
|
|
88
|
+
|
|
89
|
+
Technical insights, NOT process reflection:
|
|
90
|
+
- Integration issues discovered when merging parallel work (e.g., "Two children defined the same type differently")
|
|
91
|
+
- Contract mismatches caught by review or verification (and how they were fixed)
|
|
92
|
+
- Patterns that worked well for parallel decomposition
|
|
93
|
+
- Patterns that caused friction (e.g., "Shared type file was modified by 3 children independently")
|
|
94
|
+
|
|
95
|
+
Do NOT include: "should have planned better", "the swarm was efficient", "agents worked well together"
|
|
96
|
+
|
|
97
|
+
</details>
|
|
98
|
+
|
|
99
|
+
### 7. Per-Child Details
|
|
100
|
+
|
|
101
|
+
For each child, use an H3 heading with the issue number as a link, then collapse the details:
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
### [#NUMBER](issue-url): TITLE — succeeded/failed
|
|
105
|
+
|
|
106
|
+
<details>
|
|
107
|
+
<summary>Details</summary>
|
|
108
|
+
|
|
109
|
+
**What changed:** [1-2 sentences about the actual code change, not the process]
|
|
110
|
+
|
|
111
|
+
**Key files:** [most important files, not exhaustive list]
|
|
112
|
+
|
|
113
|
+
**Decisions:** [child-specific decisions with brief rationale]
|
|
114
|
+
|
|
115
|
+
**Risks:** [child-specific risks, if any]
|
|
116
|
+
|
|
117
|
+
**Test coverage:** [what's tested, what isn't]
|
|
118
|
+
|
|
119
|
+
</details>
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
This way the issue number and title are always visible as scannable headings, with details collapsed underneath.
|
|
123
|
+
|
|
124
|
+
## Formatting Rules
|
|
125
|
+
|
|
126
|
+
- Sections 1 and 2 are ALWAYS visible (no `<details>` wrapper) — they're the skim layer
|
|
127
|
+
- Sections 3-7 use `<details><summary>` — they're the depth layer
|
|
128
|
+
- Replace "(expand for details)" with actual item counts when you can (e.g., "Risks & Assumptions (4 items)")
|
|
129
|
+
- Keep total output under 10,000 characters (GitHub comment limit)
|
|
130
|
+
- Write for two audiences: humans who skim headings and expand selectively, and AI agents that ingest everything
|
|
131
|
+
|
|
132
|
+
## VALIDATION CHECKLIST
|
|
133
|
+
|
|
134
|
+
Before outputting, verify:
|
|
135
|
+
- [ ] Executive summary describes what CHANGED, not what the swarm DID
|
|
136
|
+
- [ ] No sentences describe agent behavior, orchestration steps, or workflow phases
|
|
137
|
+
- [ ] Risks are grouped by concern, not by child issue
|
|
138
|
+
- [ ] "What to Review Carefully" contains actionable guidance, not vague praise
|
|
139
|
+
- [ ] Lessons learned contains technical insights, not process reflection
|
|
140
|
+
|
|
141
|
+
## Child Implementation Data
|
|
142
|
+
|
|
143
|
+
{{CHILD_DATA}}
|
|
144
|
+
|
|
145
|
+
Output ONLY the report markdown. No preamble, no meta-commentary, no sign-off.
|
|
@@ -51,6 +51,11 @@ ALL iloom configuration files should default to their `.local` variants:
|
|
|
51
51
|
- ❌ **NEVER** read README.md, package.json, or any other files "for context"
|
|
52
52
|
- **WHY**: All necessary information is provided in template variables
|
|
53
53
|
|
|
54
|
+
**GITIGNORE CHECKS:**
|
|
55
|
+
- If you need to check whether a file is gitignored, ALWAYS use `git check-ignore -q <path>` (exit code 0 = ignored, non-zero = not ignored)
|
|
56
|
+
- ❌ **NEVER** read or parse `.gitignore` files directly to determine gitignore status
|
|
57
|
+
- **WHY**: `git check-ignore` respects all gitignore sources (global, repo, nested) — reading a single `.gitignore` file does not
|
|
58
|
+
|
|
54
59
|
**VIOLATION EXAMPLES TO AVOID:**
|
|
55
60
|
- ❌ "Let me read .iloom/settings.json to see your current configuration"
|
|
56
61
|
- ❌ "Let me look at your settings file to understand what's configured"
|
|
@@ -515,6 +520,13 @@ The following JSON Schema defines valid iloom settings:
|
|
|
515
520
|
"type": "string"
|
|
516
521
|
},
|
|
517
522
|
"description": "Additional arguments for docker run (e.g., [\"-v\", \"./src:/app/src\"] for volume mounts)"
|
|
523
|
+
},
|
|
524
|
+
"dockerRunEnv": {
|
|
525
|
+
"type": "object",
|
|
526
|
+
"additionalProperties": {
|
|
527
|
+
"type": "string"
|
|
528
|
+
},
|
|
529
|
+
"description": "Environment variables to pass to docker run (e.g., {\"NODE_ENV\": \"development\", \"DEBUG\": \"true\"})"
|
|
518
530
|
}
|
|
519
531
|
},
|
|
520
532
|
"additionalProperties": false,
|
|
@@ -575,6 +587,13 @@ The following JSON Schema defines valid iloom settings:
|
|
|
575
587
|
"type": "string"
|
|
576
588
|
},
|
|
577
589
|
"description": "Additional arguments for docker run"
|
|
590
|
+
},
|
|
591
|
+
"runEnv": {
|
|
592
|
+
"type": "object",
|
|
593
|
+
"additionalProperties": {
|
|
594
|
+
"type": "string"
|
|
595
|
+
},
|
|
596
|
+
"description": "Environment variables to pass to docker run"
|
|
578
597
|
}
|
|
579
598
|
},
|
|
580
599
|
"additionalProperties": false
|
|
@@ -990,8 +1009,8 @@ Current Configuration:
|
|
|
990
1009
|
Main Branch: [currentMainBranch or "main (default)"]
|
|
991
1010
|
Permission Mode (Issues): [currentPermissionMode or "acceptEdits (default)"]
|
|
992
1011
|
Base Port: [currentBasePort or "3000 (default)"]
|
|
993
|
-
IDE: [currentIdeType or "vscode (default)"]
|
|
994
|
-
Issue Tracker: [currentIssueProvider or "github (default)"]
|
|
1012
|
+
{{#unless IS_VSCODE_MODE}}IDE: [currentIdeType or "vscode (default)"]
|
|
1013
|
+
{{/unless}}Issue Tracker: [currentIssueProvider or "github (default)"]
|
|
995
1014
|
Linear Team ID: [currentLinearTeamId] (only if currentIssueProvider == linear)
|
|
996
1015
|
{{#if MULTIPLE_REMOTES}}GitHub Remote: [currentGitHubRemote] (only if currentIssueProvider == github){{/if}}
|
|
997
1016
|
Jira Host: [currentJiraHost] (only if currentIssueProvider == jira)
|
|
@@ -1338,6 +1357,9 @@ This repository has multiple git remotes detected. iloom needs to know which rem
|
|
|
1338
1357
|
|
|
1339
1358
|
**Step 3: IDE Selection**
|
|
1340
1359
|
|
|
1360
|
+
{{#if IS_VSCODE_MODE}}
|
|
1361
|
+
4. **IDE Selection** — SKIP this question. The user is running from VS Code, so automatically set `ide.type` to `"vscode"`. Do not ask.
|
|
1362
|
+
{{else}}
|
|
1341
1363
|
4. **IDE Selection**
|
|
1342
1364
|
- Question format: "Which IDE should iloom launch when starting a loom?{{#if currentIdeType}} (Currently: [currentIdeType]){{/if}}"
|
|
1343
1365
|
- Options:
|
|
@@ -1352,6 +1374,7 @@ This repository has multiple git remotes detected. iloom needs to know which rem
|
|
|
1352
1374
|
- Validation: Must be one of the listed options
|
|
1353
1375
|
- Store answer as: `ide.type`
|
|
1354
1376
|
- Note: Color synchronization (title bar colors) only works with VSCode-compatible editors (vscode, cursor, windsurf, antigravity). Other IDEs will launch without color theming.
|
|
1377
|
+
{{/if}}
|
|
1355
1378
|
|
|
1356
1379
|
**Step 4: Merge Mode** (only ask if multiple remotes detected OR user requests advanced config)
|
|
1357
1380
|
|
|
@@ -1375,7 +1398,7 @@ This repository has multiple git remotes detected. iloom needs to know which rem
|
|
|
1375
1398
|
**Implementation Details:**
|
|
1376
1399
|
- Ask Step 1 first to determine provider
|
|
1377
1400
|
- Then ask Step 2 based on the provider selected (includes Linear API Token if Linear was selected, or Jira credentials if Jira was selected)
|
|
1378
|
-
- Ask Step 3 (IDE) for all users
|
|
1401
|
+
{{#unless IS_VSCODE_MODE}}- Ask Step 3 (IDE) for all users{{/unless}}
|
|
1379
1402
|
- Ask Step 4 (Merge Mode) only if multiple remotes detected OR user requests advanced config
|
|
1380
1403
|
- Set multiSelect: false for all questions
|
|
1381
1404
|
- Process answers sequentially as they depend on each other
|
|
@@ -1425,8 +1448,8 @@ Tooling Configuration (Phase 2):
|
|
|
1425
1448
|
Jira Project Key: [value] (only if issue tracker is Jira)
|
|
1426
1449
|
Jira Board ID: [value or "not configured"] (only if issue tracker is Jira)
|
|
1427
1450
|
Jira API Token: [configured/not configured] (only if issue tracker is Jira - never show actual token)
|
|
1428
|
-
IDE: [value or "vscode (default)"]
|
|
1429
|
-
Merge Mode: [value] (only if configured)
|
|
1451
|
+
{{#unless IS_VSCODE_MODE}} IDE: [value or "vscode (default)"]
|
|
1452
|
+
{{/unless}} Merge Mode: [value] (only if configured)
|
|
1430
1453
|
Swarm Mode: [Maximum Quality / Balanced / Fast & Cheap] (only if configured in Phase 2.5)
|
|
1431
1454
|
```
|
|
1432
1455
|
|
|
@@ -1736,7 +1759,7 @@ Would you like to commit these changes?
|
|
|
1736
1759
|
- **ONLY commit iloom-related files**: .iloom/settings.json, .iloom/package.iloom.json, .gitignore
|
|
1737
1760
|
- **NEVER stage or commit unrelated files** - even if they appear in `git status`
|
|
1738
1761
|
- **If the commit fails, you must then subsequently request to use --no-verify flag** to bypass pre-commit hooks that might fail due to unrelated codebase state
|
|
1739
|
-
- **Do NOT commit local-only files** - settings.local.json and package.iloom.local.json
|
|
1762
|
+
- **Do NOT commit local-only files** - settings.local.json and package.iloom.local.json are automatically added to the global gitignore by iloom CLI
|
|
1740
1763
|
- **YOU MAY NEED TO EDIT/UPDATE MORE THAN ONE FILE if the user is changing something like API Keys (local only), permissionsMode (local only), IDE (recommened global) as well as shared settings.
|
|
1741
1764
|
|
|
1742
1765
|
**Step 3: If user says yes, commit the changes**
|
|
@@ -1748,7 +1771,7 @@ Stage ONLY the iloom-related files that should be committed:
|
|
|
1748
1771
|
git add .iloom/settings.json .iloom/package.iloom.json .gitignore 2>/dev/null || true
|
|
1749
1772
|
```
|
|
1750
1773
|
|
|
1751
|
-
Note: Do NOT add local-only files (.iloom/settings.local.json, .iloom/package.iloom.local.json) -
|
|
1774
|
+
Note: Do NOT add local-only files (.iloom/settings.local.json, .iloom/package.iloom.local.json) - these are automatically added to the global gitignore by iloom CLI.
|
|
1752
1775
|
|
|
1753
1776
|
Then commit:
|
|
1754
1777
|
|
|
@@ -2040,13 +2063,13 @@ When configuring agents, use these model identifiers:
|
|
|
2040
2063
|
**Local Overrides for Fork Contributors:**
|
|
2041
2064
|
|
|
2042
2065
|
If you're contributing to a forked repository, save your customizations to `.iloom/package.iloom.local.json` instead of `package.iloom.json`. This file:
|
|
2043
|
-
- Is automatically
|
|
2066
|
+
- Is automatically gitignored by iloom CLI (won't appear in PRs)
|
|
2044
2067
|
- Merges with package.iloom.json (local scripts override base scripts)
|
|
2045
2068
|
- Is automatically copied to new looms
|
|
2046
2069
|
|
|
2047
2070
|
**When to use each file:**
|
|
2048
2071
|
- `package.iloom.json` - Shared team configuration, committed to git
|
|
2049
|
-
- `package.iloom.local.json` - Personal overrides, never committed (gitignored
|
|
2072
|
+
- `package.iloom.local.json` - Personal overrides, never committed (automatically gitignored by iloom CLI)
|
|
2050
2073
|
|
|
2051
2074
|
Example `.iloom/package.iloom.local.json`:
|
|
2052
2075
|
```json
|
|
@@ -1247,7 +1247,7 @@ This section is about reviewing code changes for quality, security, and complian
|
|
|
1247
1247
|
**Auto-Run Mode**: Review automatically executes after implementation completes. No manual trigger needed.
|
|
1248
1248
|
|
|
1249
1249
|
{{#if SWARM_MODE}}
|
|
1250
|
-
1. Execute code review via /iloom-swarm-code-reviewer skill with prompt: "Run code review."
|
|
1250
|
+
1. Execute code review via /iloom-swarm-code-reviewer skill with prompt: "Your worktree path is <your-worktree-path>. Run code review."
|
|
1251
1251
|
{{else}}
|
|
1252
1252
|
1. Execute: @agent-iloom-code-reviewer with prompt "Run code review." (foreground, no extra context)
|
|
1253
1253
|
{{/if}}
|
|
@@ -3,6 +3,9 @@
|
|
|
3
3
|
You are the swarm orchestrator for epic #{{EPIC_ISSUE_NUMBER}}. Your job is to manage a team of child agents, each implementing a child issue in its own worktree, and merge their work back into the epic branch.
|
|
4
4
|
|
|
5
5
|
**Epic Worktree:** `{{EPIC_WORKTREE_PATH}}`
|
|
6
|
+
{{#if PORT}}
|
|
7
|
+
**Dev Server Port:** `{{PORT}}` — This is the port assigned to the epic worktree. After merging child work into the epic branch, you can verify web output by running `curl http://localhost:{{PORT}}` or using Chrome DevTools MCP tools against this port. This is useful for checking that the integrated result works correctly.
|
|
8
|
+
{{/if}}
|
|
6
9
|
|
|
7
10
|
You are running with `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1`. You have access to MCP tools for issue management (`mcp__issue_management__*`) and recap state tracking (`mcp__recap__*`).
|
|
8
11
|
|
|
@@ -92,10 +95,12 @@ This is a JSON object representing the dependency DAG. Keys are issue numbers (a
|
|
|
92
95
|
12. Create final commit with Fixes trailer for epic issue
|
|
93
96
|
13. Push epic branch to remote (final commit)
|
|
94
97
|
14. Print final summary
|
|
98
|
+
15. Post completion status comment on epic issue
|
|
95
99
|
{{else}}
|
|
96
100
|
11. Create final commit with Fixes trailer for epic issue
|
|
97
101
|
12. Push epic branch to remote (final commit)
|
|
98
102
|
13. Print final summary
|
|
103
|
+
14. Post completion status comment on epic issue
|
|
99
104
|
{{/if}}
|
|
100
105
|
{{else}}
|
|
101
106
|
6. Clean up completed child worktrees (if not --skip-cleanup)
|
|
@@ -106,9 +111,11 @@ This is a JSON object representing the dependency DAG. Keys are issue numbers (a
|
|
|
106
111
|
10. Run post-swarm code review and auto-fix any findings
|
|
107
112
|
11. Create final commit with Fixes trailer for epic issue
|
|
108
113
|
12. Print final summary
|
|
114
|
+
13. Post completion status comment on epic issue
|
|
109
115
|
{{else}}
|
|
110
116
|
10. Create final commit with Fixes trailer for epic issue
|
|
111
117
|
11. Print final summary
|
|
118
|
+
12. Post completion status comment on epic issue
|
|
112
119
|
{{/if}}
|
|
113
120
|
{{/if}}
|
|
114
121
|
{{else}}
|
|
@@ -120,9 +127,11 @@ This is a JSON object representing the dependency DAG. Keys are issue numbers (a
|
|
|
120
127
|
10. Run post-swarm code review and auto-fix any findings
|
|
121
128
|
11. Create final commit with Fixes trailer for epic issue
|
|
122
129
|
12. Print final summary
|
|
130
|
+
13. Post completion status comment on epic issue
|
|
123
131
|
{{else}}
|
|
124
132
|
10. Create final commit with Fixes trailer for epic issue
|
|
125
133
|
11. Print final summary
|
|
134
|
+
12. Post completion status comment on epic issue
|
|
126
135
|
{{/if}}
|
|
127
136
|
{{/if}}
|
|
128
137
|
|
|
@@ -627,25 +636,60 @@ The epic branch at `{{EPIC_WORKTREE_PATH}}` contains merged work from all succes
|
|
|
627
636
|
The epic worktree is ready for review at: `{{EPIC_WORKTREE_PATH}}`
|
|
628
637
|
```
|
|
629
638
|
|
|
639
|
+
### Step 5.4.5: Post Completion Status Comment on Epic Issue
|
|
640
|
+
|
|
641
|
+
Using the same data you just printed in Step 5.4, post a lightweight status comment on the parent epic issue.
|
|
642
|
+
|
|
643
|
+
1. Build the comment body using the following format:
|
|
644
|
+
|
|
645
|
+
```markdown
|
|
646
|
+
## Swarm Completion Status
|
|
647
|
+
|
|
648
|
+
**Epic:** #<EPIC_ISSUE_NUMBER>
|
|
649
|
+
|
|
650
|
+
| Issue | Status |
|
|
651
|
+
|-------|--------|
|
|
652
|
+
| [#<number>](<url>) | Done |
|
|
653
|
+
| [#<number>](<url>) | Failed |
|
|
654
|
+
|
|
655
|
+
**Results:** N succeeded, N failed out of N total children.
|
|
656
|
+
|
|
657
|
+
_Full implementation report will be generated at `il finish` time._
|
|
658
|
+
```
|
|
659
|
+
|
|
660
|
+
2. Post the comment by calling `mcp__issue_management__create_comment` with:
|
|
661
|
+
- `number`: `"{{EPIC_ISSUE_NUMBER}}"`
|
|
662
|
+
- `type`: `"issue"`
|
|
663
|
+
- `body`: the constructed markdown above
|
|
664
|
+
- `markupLanguage`: `"GFM"`
|
|
665
|
+
|
|
666
|
+
3. Log the comment as a recap artifact by calling `mcp__recap__add_artifact` with:
|
|
667
|
+
- `type`: `"comment"`
|
|
668
|
+
- `primaryUrl`: the URL returned from the create_comment call
|
|
669
|
+
- `description`: `"Swarm completion status comment"`
|
|
670
|
+
- (omit `worktreePath` -- this belongs to the epic recap)
|
|
671
|
+
|
|
672
|
+
4. If the comment creation fails for any reason, log the error and continue. This step is non-blocking -- do not let a failed comment post stop the swarm from completing.
|
|
673
|
+
|
|
630
674
|
{{#if DRAFT_PR_MODE}}
|
|
631
675
|
{{#if AUTO_COMMIT_PUSH}}
|
|
632
676
|
{{#if POST_SWARM_REVIEW}}
|
|
633
|
-
Mark todo #10, #11, #12, #13, and #
|
|
677
|
+
Mark todo #10, #11, #12, #13, #14, and #15 as completed.
|
|
634
678
|
{{else}}
|
|
635
|
-
Mark todo #10, #11, #12, and #
|
|
679
|
+
Mark todo #10, #11, #12, #13, and #14 as completed.
|
|
636
680
|
{{/if}}
|
|
637
681
|
{{else}}
|
|
638
682
|
{{#if POST_SWARM_REVIEW}}
|
|
639
|
-
Mark todo #9, #10, #11, and #
|
|
683
|
+
Mark todo #9, #10, #11, #12, and #13 as completed.
|
|
640
684
|
{{else}}
|
|
641
|
-
Mark todo #9, #10, and #
|
|
685
|
+
Mark todo #9, #10, #11, and #12 as completed.
|
|
642
686
|
{{/if}}
|
|
643
687
|
{{/if}}
|
|
644
688
|
{{else}}
|
|
645
689
|
{{#if POST_SWARM_REVIEW}}
|
|
646
|
-
Mark todo #9, #10, #11, and #
|
|
690
|
+
Mark todo #9, #10, #11, #12, and #13 as completed.
|
|
647
691
|
{{else}}
|
|
648
|
-
Mark todo #9, #10, and #
|
|
692
|
+
Mark todo #9, #10, #11, and #12 as completed.
|
|
649
693
|
{{/if}}
|
|
650
694
|
{{/if}}
|
|
651
695
|
|
|
@@ -2,23 +2,23 @@
|
|
|
2
2
|
import {
|
|
3
3
|
BuildRunner,
|
|
4
4
|
MergeManager
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-MPHSR6GA.js";
|
|
6
6
|
import {
|
|
7
7
|
installDependencies
|
|
8
8
|
} from "./chunk-OLJ54WGW.js";
|
|
9
9
|
import {
|
|
10
10
|
GitWorktreeManager
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-D6FU4DLN.js";
|
|
12
12
|
import "./chunk-772N5WCA.js";
|
|
13
13
|
import "./chunk-K3QGG4O2.js";
|
|
14
14
|
import "./chunk-DDHWZNGL.js";
|
|
15
15
|
import {
|
|
16
16
|
getWorktreeRoot,
|
|
17
17
|
isValidGitRepo
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-5W44AI63.js";
|
|
19
19
|
import {
|
|
20
20
|
SettingsManager
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-MNPKEWBQ.js";
|
|
22
22
|
import "./chunk-XIVLGWUX.js";
|
|
23
23
|
import "./chunk-FTYWGQFM.js";
|
|
24
24
|
import {
|
|
@@ -148,4 +148,4 @@ export {
|
|
|
148
148
|
RebaseCommand,
|
|
149
149
|
WorktreeValidationError
|
|
150
150
|
};
|
|
151
|
-
//# sourceMappingURL=rebase-
|
|
151
|
+
//# sourceMappingURL=rebase-6AXN45AE.js.map
|
|
@@ -4,15 +4,15 @@ import {
|
|
|
4
4
|
} from "./chunk-NXMDEL3F.js";
|
|
5
5
|
import {
|
|
6
6
|
findArchivedRecap
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-UQWMPQ2Q.js";
|
|
8
8
|
import {
|
|
9
9
|
IdentifierParser
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-XC5JKRSH.js";
|
|
11
11
|
import {
|
|
12
12
|
GitWorktreeManager
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
13
|
+
} from "./chunk-D6FU4DLN.js";
|
|
14
|
+
import "./chunk-5W44AI63.js";
|
|
15
|
+
import "./chunk-MNPKEWBQ.js";
|
|
16
16
|
import "./chunk-XIVLGWUX.js";
|
|
17
17
|
import "./chunk-FTYWGQFM.js";
|
|
18
18
|
import "./chunk-VRPPI6GU.js";
|
|
@@ -135,4 +135,4 @@ var RecapCommand = class {
|
|
|
135
135
|
export {
|
|
136
136
|
RecapCommand
|
|
137
137
|
};
|
|
138
|
-
//# sourceMappingURL=recap-
|
|
138
|
+
//# sourceMappingURL=recap-XDKI3MTA.js.map
|