@iloom/cli 0.13.0-beta.0 → 0.13.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/LICENSE +1 -1
- package/README.md +3 -18
- package/dist/{ClaudeContextManager-RRGREEZQ.js → ClaudeContextManager-ZH6LEA5I.js} +5 -5
- package/dist/{ClaudeService-LEPW6QAC.js → ClaudeService-YR66WXZN.js} +4 -4
- package/dist/{IssueTrackerFactory-KE2BDCLC.js → IssueTrackerFactory-O2ZBA666.js} +3 -3
- package/dist/{LoomLauncher-GKQMR5E6.js → LoomLauncher-V54ENBEF.js} +5 -5
- package/dist/{MetadataManager-V4LSJ2PB.js → MetadataManager-HHE6LQF2.js} +2 -2
- package/dist/{PromptTemplateManager-I75WKXM4.js → PromptTemplateManager-4RFELNYY.js} +2 -2
- package/dist/README.md +3 -18
- package/dist/{SettingsManager-KQU7OX7G.js → SettingsManager-SLSYEYDZ.js} +4 -4
- package/dist/agents/iloom-artifact-reviewer.md +1 -0
- package/dist/agents/iloom-code-reviewer.md +21 -0
- package/dist/agents/iloom-issue-analyze-and-plan.md +30 -12
- package/dist/agents/iloom-issue-analyzer.md +32 -7
- package/dist/agents/iloom-issue-complexity-evaluator.md +32 -12
- package/dist/agents/iloom-issue-implementer.md +31 -12
- package/dist/agents/iloom-issue-planner.md +30 -12
- package/dist/agents/iloom-wave-verifier.md +177 -4
- package/dist/{build-V3KADFMO.js → build-ZTGWDHWU.js} +8 -8
- package/dist/{chunk-VVQQIG64.js → chunk-55NTREIU.js} +33 -30
- package/dist/chunk-55NTREIU.js.map +1 -0
- package/dist/{chunk-AYLC633W.js → chunk-7TN5VW4I.js} +65 -7
- package/dist/chunk-7TN5VW4I.js.map +1 -0
- package/dist/{chunk-RFCAPHL5.js → chunk-C2BVNJW5.js} +2 -2
- package/dist/{chunk-3XEXT35Z.js → chunk-E5OM25WK.js} +3 -3
- package/dist/{chunk-ZUIFO7B4.js → chunk-ERMEYFT6.js} +7 -2
- package/dist/chunk-ERMEYFT6.js.map +1 -0
- package/dist/{chunk-WGUGB54H.js → chunk-F5NKWLMQ.js} +21 -24
- package/dist/chunk-F5NKWLMQ.js.map +1 -0
- package/dist/{chunk-TN2D2RX7.js → chunk-G2DGDCDP.js} +33 -224
- package/dist/chunk-G2DGDCDP.js.map +1 -0
- package/dist/{chunk-NUUFP53X.js → chunk-GPBX2BY2.js} +2 -2
- package/dist/{chunk-SN4S5CWL.js → chunk-GQDVH6FA.js} +2 -2
- package/dist/{chunk-YUOVWWJX.js → chunk-HKEXRZMU.js} +5 -310
- package/dist/chunk-HKEXRZMU.js.map +1 -0
- package/dist/{chunk-TAEVA4QR.js → chunk-HWDQRW3O.js} +3 -3
- package/dist/chunk-HWDQRW3O.js.map +1 -0
- package/dist/{chunk-KQSV7FOG.js → chunk-J5JOJPK3.js} +2 -2
- package/dist/{chunk-PD75ZCFT.js → chunk-KCAWSZUO.js} +18 -17
- package/dist/chunk-KCAWSZUO.js.map +1 -0
- package/dist/{chunk-QNPJXO53.js → chunk-KGOBNC5A.js} +4 -4
- package/dist/{chunk-H3T3EPF3.js → chunk-LNY2Y32V.js} +2 -2
- package/dist/{chunk-7RCUWU3I.js → chunk-MRPIDNZU.js} +1 -1
- package/dist/chunk-MRPIDNZU.js.map +1 -0
- package/dist/{chunk-QQULYI2S.js → chunk-N6DY47YN.js} +80 -45
- package/dist/chunk-N6DY47YN.js.map +1 -0
- package/dist/{chunk-VIQOQ463.js → chunk-OLJ54WGW.js} +15 -10
- package/dist/chunk-OLJ54WGW.js.map +1 -0
- package/dist/{chunk-4VQXMEEP.js → chunk-PPQ5LV7U.js} +3 -3
- package/dist/{chunk-4VQXMEEP.js.map → chunk-PPQ5LV7U.js.map} +1 -1
- package/dist/{chunk-QED2WB2D.js → chunk-PS6K2AOV.js} +5 -5
- package/dist/{chunk-JD3K2344.js → chunk-QNRXRSKC.js} +36 -3
- package/dist/chunk-QNRXRSKC.js.map +1 -0
- package/dist/{chunk-Q7VXHJP6.js → chunk-SM3BCHYB.js} +5 -5
- package/dist/{chunk-SA446KA2.js → chunk-T4KFKKEB.js} +7 -7
- package/dist/{chunk-XCP2WDYA.js → chunk-T4NESGYB.js} +3 -3
- package/dist/{chunk-QXGM32TO.js → chunk-TJDKGKQV.js} +2 -2
- package/dist/{chunk-X5DRLONY.js → chunk-UXBVDD7U.js} +6 -6
- package/dist/{chunk-JDN4SPV3.js → chunk-WYDLOQYO.js} +2 -2
- package/dist/{chunk-4JZEQBWV.js → chunk-XIVLGWUX.js} +3 -1
- package/dist/chunk-XIVLGWUX.js.map +1 -0
- package/dist/{chunk-NTDY5AMO.js → chunk-ZEFTWM5Z.js} +2 -2
- package/dist/{cleanup-RJKLI47I.js → cleanup-BCVY7PEF.js} +22 -22
- package/dist/cleanup-BCVY7PEF.js.map +1 -0
- package/dist/cli.js +126 -105
- package/dist/cli.js.map +1 -1
- package/dist/{commit-SUHRUMDE.js → commit-L5JNBU4U.js} +8 -8
- package/dist/{compile-2MD346PO.js → compile-GPJOHXH4.js} +8 -8
- package/dist/{contribute-P4BMRY7C.js → contribute-QEGCI4PS.js} +4 -4
- package/dist/{dev-server-ZNTLWOL5.js → dev-server-67NPVWUN.js} +247 -31
- package/dist/dev-server-67NPVWUN.js.map +1 -0
- package/dist/{feedback-Q6WG2WX4.js → feedback-2LWXKLQZ.js} +4 -4
- package/dist/{git-TX2IEMB3.js → git-IS7AV3ED.js} +4 -4
- package/dist/hooks/iloom-hook.js +40 -2
- package/dist/{ignite-P644W2PK.js → ignite-VQDJQ37S.js} +12 -14
- package/dist/index.d.ts +73 -75
- package/dist/index.js +32 -32
- package/dist/index.js.map +1 -1
- package/dist/{init-5HFY7JG6.js → init-7SDJUAEZ.js} +8 -8
- package/dist/{install-deps-J4ALTM27.js → install-deps-NGSFDNUW.js} +8 -8
- package/dist/{issues-LZMIF22U.js → issues-4HQKEUP7.js} +5 -5
- package/dist/{lint-XIXKU22H.js → lint-C5FOVRXY.js} +8 -8
- package/dist/mcp/issue-management-server.js +19 -22
- package/dist/mcp/issue-management-server.js.map +1 -1
- package/dist/neon-helpers-LCZAN4U4.js +11 -0
- package/dist/{open-KUO35JIJ.js → open-WUTLRI6S.js} +19 -15
- package/dist/open-WUTLRI6S.js.map +1 -0
- package/dist/{plan-7CF56OIR.js → plan-GC3HF73T.js} +86 -66
- package/dist/plan-GC3HF73T.js.map +1 -0
- package/dist/{projects-L5AHUBGA.js → projects-3F6T3KZL.js} +2 -2
- package/dist/prompts/init-prompt.txt +40 -36
- package/dist/prompts/issue-prompt.txt +4 -1
- package/dist/prompts/plan-prompt.txt +97 -16
- package/dist/prompts/regular-prompt.txt +1 -1
- package/dist/prompts/swarm-orchestrator-prompt.txt +25 -12
- package/dist/{rebase-MAMWPA2L.js → rebase-CSGQICAP.js} +7 -7
- package/dist/{recap-IDBO3KM5.js → recap-CKGKFDJL.js} +7 -7
- package/dist/{run-RGZHCQ6M.js → run-3YL2IXXI.js} +19 -15
- package/dist/run-3YL2IXXI.js.map +1 -0
- package/dist/schema/settings.schema.json +35 -31
- package/dist/{shell-7ADCDFIV.js → shell-M2YYPNGV.js} +6 -6
- package/dist/{summary-7J2HORFD.js → summary-XR4CBJEG.js} +9 -9
- package/dist/{test-SRB7EWU6.js → test-ESDAHEVE.js} +8 -8
- package/dist/{test-git-G7ATVIXG.js → test-git-KWPLHYSI.js} +4 -4
- package/dist/{test-jira-Q2HPA522.js → test-jira-6NK7UHSV.js} +3 -3
- package/dist/{test-prefix-JMDGXR5A.js → test-prefix-VVODGHXP.js} +4 -4
- package/dist/{test-webserver-GZFVXBGD.js → test-webserver-AHXKC6H4.js} +6 -6
- package/dist/{vscode-3I7ISHUU.js → vscode-OY7HOVRO.js} +6 -6
- package/package.json +1 -1
- package/dist/chunk-4JZEQBWV.js.map +0 -1
- package/dist/chunk-7RCUWU3I.js.map +0 -1
- package/dist/chunk-AYLC633W.js.map +0 -1
- package/dist/chunk-JD3K2344.js.map +0 -1
- package/dist/chunk-PD75ZCFT.js.map +0 -1
- package/dist/chunk-QQULYI2S.js.map +0 -1
- package/dist/chunk-TAEVA4QR.js.map +0 -1
- package/dist/chunk-TN2D2RX7.js.map +0 -1
- package/dist/chunk-VIQOQ463.js.map +0 -1
- package/dist/chunk-VVQQIG64.js.map +0 -1
- package/dist/chunk-WGUGB54H.js.map +0 -1
- package/dist/chunk-YUOVWWJX.js.map +0 -1
- package/dist/chunk-ZUIFO7B4.js.map +0 -1
- package/dist/cleanup-RJKLI47I.js.map +0 -1
- package/dist/database-helpers-PRDFNDRO.js +0 -11
- package/dist/dev-server-ZNTLWOL5.js.map +0 -1
- package/dist/open-KUO35JIJ.js.map +0 -1
- package/dist/plan-7CF56OIR.js.map +0 -1
- package/dist/run-RGZHCQ6M.js.map +0 -1
- /package/dist/{ClaudeContextManager-RRGREEZQ.js.map → ClaudeContextManager-ZH6LEA5I.js.map} +0 -0
- /package/dist/{ClaudeService-LEPW6QAC.js.map → ClaudeService-YR66WXZN.js.map} +0 -0
- /package/dist/{IssueTrackerFactory-KE2BDCLC.js.map → IssueTrackerFactory-O2ZBA666.js.map} +0 -0
- /package/dist/{LoomLauncher-GKQMR5E6.js.map → LoomLauncher-V54ENBEF.js.map} +0 -0
- /package/dist/{MetadataManager-V4LSJ2PB.js.map → MetadataManager-HHE6LQF2.js.map} +0 -0
- /package/dist/{PromptTemplateManager-I75WKXM4.js.map → PromptTemplateManager-4RFELNYY.js.map} +0 -0
- /package/dist/{SettingsManager-KQU7OX7G.js.map → SettingsManager-SLSYEYDZ.js.map} +0 -0
- /package/dist/{build-V3KADFMO.js.map → build-ZTGWDHWU.js.map} +0 -0
- /package/dist/{chunk-RFCAPHL5.js.map → chunk-C2BVNJW5.js.map} +0 -0
- /package/dist/{chunk-3XEXT35Z.js.map → chunk-E5OM25WK.js.map} +0 -0
- /package/dist/{chunk-NUUFP53X.js.map → chunk-GPBX2BY2.js.map} +0 -0
- /package/dist/{chunk-SN4S5CWL.js.map → chunk-GQDVH6FA.js.map} +0 -0
- /package/dist/{chunk-KQSV7FOG.js.map → chunk-J5JOJPK3.js.map} +0 -0
- /package/dist/{chunk-QNPJXO53.js.map → chunk-KGOBNC5A.js.map} +0 -0
- /package/dist/{chunk-H3T3EPF3.js.map → chunk-LNY2Y32V.js.map} +0 -0
- /package/dist/{chunk-QED2WB2D.js.map → chunk-PS6K2AOV.js.map} +0 -0
- /package/dist/{chunk-Q7VXHJP6.js.map → chunk-SM3BCHYB.js.map} +0 -0
- /package/dist/{chunk-SA446KA2.js.map → chunk-T4KFKKEB.js.map} +0 -0
- /package/dist/{chunk-XCP2WDYA.js.map → chunk-T4NESGYB.js.map} +0 -0
- /package/dist/{chunk-QXGM32TO.js.map → chunk-TJDKGKQV.js.map} +0 -0
- /package/dist/{chunk-X5DRLONY.js.map → chunk-UXBVDD7U.js.map} +0 -0
- /package/dist/{chunk-JDN4SPV3.js.map → chunk-WYDLOQYO.js.map} +0 -0
- /package/dist/{chunk-NTDY5AMO.js.map → chunk-ZEFTWM5Z.js.map} +0 -0
- /package/dist/{commit-SUHRUMDE.js.map → commit-L5JNBU4U.js.map} +0 -0
- /package/dist/{compile-2MD346PO.js.map → compile-GPJOHXH4.js.map} +0 -0
- /package/dist/{contribute-P4BMRY7C.js.map → contribute-QEGCI4PS.js.map} +0 -0
- /package/dist/{feedback-Q6WG2WX4.js.map → feedback-2LWXKLQZ.js.map} +0 -0
- /package/dist/{database-helpers-PRDFNDRO.js.map → git-IS7AV3ED.js.map} +0 -0
- /package/dist/{git-TX2IEMB3.js.map → ignite-VQDJQ37S.js.map} +0 -0
- /package/dist/{init-5HFY7JG6.js.map → init-7SDJUAEZ.js.map} +0 -0
- /package/dist/{install-deps-J4ALTM27.js.map → install-deps-NGSFDNUW.js.map} +0 -0
- /package/dist/{issues-LZMIF22U.js.map → issues-4HQKEUP7.js.map} +0 -0
- /package/dist/{lint-XIXKU22H.js.map → lint-C5FOVRXY.js.map} +0 -0
- /package/dist/{ignite-P644W2PK.js.map → neon-helpers-LCZAN4U4.js.map} +0 -0
- /package/dist/{projects-L5AHUBGA.js.map → projects-3F6T3KZL.js.map} +0 -0
- /package/dist/{rebase-MAMWPA2L.js.map → rebase-CSGQICAP.js.map} +0 -0
- /package/dist/{recap-IDBO3KM5.js.map → recap-CKGKFDJL.js.map} +0 -0
- /package/dist/{shell-7ADCDFIV.js.map → shell-M2YYPNGV.js.map} +0 -0
- /package/dist/{summary-7J2HORFD.js.map → summary-XR4CBJEG.js.map} +0 -0
- /package/dist/{test-SRB7EWU6.js.map → test-ESDAHEVE.js.map} +0 -0
- /package/dist/{test-git-G7ATVIXG.js.map → test-git-KWPLHYSI.js.map} +0 -0
- /package/dist/{test-jira-Q2HPA522.js.map → test-jira-6NK7UHSV.js.map} +0 -0
- /package/dist/{test-prefix-JMDGXR5A.js.map → test-prefix-VVODGHXP.js.map} +0 -0
- /package/dist/{test-webserver-GZFVXBGD.js.map → test-webserver-AHXKC6H4.js.map} +0 -0
- /package/dist/{vscode-3I7ISHUU.js.map → vscode-OY7HOVRO.js.map} +0 -0
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
import {
|
|
3
3
|
buildDependencyMap,
|
|
4
4
|
fetchChildIssueDetails
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-C2BVNJW5.js";
|
|
6
6
|
import {
|
|
7
7
|
preAcceptClaudeTrust
|
|
8
8
|
} from "./chunk-7UBEHQTP.js";
|
|
9
9
|
import {
|
|
10
10
|
getWorkspacePort
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-ERMEYFT6.js";
|
|
12
12
|
import {
|
|
13
13
|
TelemetryService
|
|
14
14
|
} from "./chunk-MY2Q3FJ3.js";
|
|
@@ -25,26 +25,23 @@ import {
|
|
|
25
25
|
} from "./chunk-CQHHEW2M.js";
|
|
26
26
|
import {
|
|
27
27
|
AgentManager
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-QNRXRSKC.js";
|
|
29
29
|
import {
|
|
30
30
|
IssueManagementProviderFactory
|
|
31
|
-
} from "./chunk-
|
|
32
|
-
import {
|
|
33
|
-
installDependencies
|
|
34
|
-
} from "./chunk-VIQOQ463.js";
|
|
31
|
+
} from "./chunk-ZEFTWM5Z.js";
|
|
35
32
|
import {
|
|
36
33
|
GitWorktreeManager
|
|
37
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-PPQ5LV7U.js";
|
|
38
35
|
import {
|
|
39
36
|
PromptTemplateManager,
|
|
40
37
|
buildReviewTemplateVariables
|
|
41
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-MRPIDNZU.js";
|
|
42
39
|
import {
|
|
43
40
|
extractSettingsOverrides
|
|
44
41
|
} from "./chunk-GYCR2LOU.js";
|
|
45
42
|
import {
|
|
46
43
|
IssueTrackerFactory
|
|
47
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-GPBX2BY2.js";
|
|
48
45
|
import {
|
|
49
46
|
launchClaude
|
|
50
47
|
} from "./chunk-DDHWZNGL.js";
|
|
@@ -54,13 +51,13 @@ import {
|
|
|
54
51
|
generateWorktreePath,
|
|
55
52
|
getWorktreeRoot,
|
|
56
53
|
isValidGitRepo
|
|
57
|
-
} from "./chunk-
|
|
54
|
+
} from "./chunk-KGOBNC5A.js";
|
|
58
55
|
import {
|
|
59
56
|
SettingsManager
|
|
60
|
-
} from "./chunk-
|
|
57
|
+
} from "./chunk-F5NKWLMQ.js";
|
|
61
58
|
import {
|
|
62
59
|
MetadataManager
|
|
63
|
-
} from "./chunk-
|
|
60
|
+
} from "./chunk-XIVLGWUX.js";
|
|
64
61
|
import {
|
|
65
62
|
getLogger,
|
|
66
63
|
withLogger
|
|
@@ -284,140 +281,11 @@ var ClaudeHookManager = class {
|
|
|
284
281
|
import path2 from "path";
|
|
285
282
|
import fs2 from "fs-extra";
|
|
286
283
|
var SwarmSetupService = class {
|
|
287
|
-
constructor(
|
|
288
|
-
this.gitWorktree = gitWorktree;
|
|
289
|
-
this.metadataManager = metadataManager;
|
|
284
|
+
constructor(agentManager, settingsManager, templateManager) {
|
|
290
285
|
this.agentManager = agentManager;
|
|
291
286
|
this.settingsManager = settingsManager;
|
|
292
287
|
this.templateManager = templateManager;
|
|
293
288
|
}
|
|
294
|
-
/**
|
|
295
|
-
* Create child worktrees for each child issue, branched off the epic branch.
|
|
296
|
-
* Writes iloom-metadata.json for each child with state: 'pending' and parentLoom.
|
|
297
|
-
* Generates and writes per-loom MCP config file for each child.
|
|
298
|
-
*
|
|
299
|
-
* Uses standard iloom naming conventions via generateWorktreePath().
|
|
300
|
-
*
|
|
301
|
-
* @param childIssues - Array of child issues from epic metadata
|
|
302
|
-
* @param epicBranch - The epic branch name (base branch for children)
|
|
303
|
-
* @param epicWorktreePath - Path to the epic worktree
|
|
304
|
-
* @param mainWorktreePath - Path to the main worktree (project root)
|
|
305
|
-
* @param epicIssueNumber - The parent epic issue number
|
|
306
|
-
* @param issueTrackerName - The issue tracker provider name (e.g., 'github')
|
|
307
|
-
* @param settings - Optional settings for MCP config generation
|
|
308
|
-
* @returns Array of results for each child worktree creation
|
|
309
|
-
*/
|
|
310
|
-
async createChildWorktrees(childIssues, epicBranch, epicWorktreePath, mainWorktreePath, epicIssueNumber, issueTrackerName, settings) {
|
|
311
|
-
return Promise.all(childIssues.map(async (child) => {
|
|
312
|
-
try {
|
|
313
|
-
const rawId = child.number.replace(/^#/, "");
|
|
314
|
-
const safeId = rawId.replace(/[^a-zA-Z0-9-_]/g, "-");
|
|
315
|
-
const childBranch = `issue/${safeId}`;
|
|
316
|
-
const childWorktreePath = generateWorktreePath(
|
|
317
|
-
childBranch,
|
|
318
|
-
mainWorktreePath
|
|
319
|
-
);
|
|
320
|
-
getLogger().info(`Creating child worktree for ${child.number}: ${childWorktreePath}...`);
|
|
321
|
-
await this.gitWorktree.createWorktree({
|
|
322
|
-
path: childWorktreePath,
|
|
323
|
-
branch: childBranch,
|
|
324
|
-
createBranch: true,
|
|
325
|
-
baseBranch: epicBranch
|
|
326
|
-
});
|
|
327
|
-
try {
|
|
328
|
-
await preAcceptClaudeTrust(childWorktreePath);
|
|
329
|
-
} catch (error) {
|
|
330
|
-
getLogger().warn(`Failed to pre-accept Claude trust for child worktree: ${error instanceof Error ? error.message : String(error)}`);
|
|
331
|
-
}
|
|
332
|
-
const metadataInput = {
|
|
333
|
-
description: child.title,
|
|
334
|
-
branchName: childBranch,
|
|
335
|
-
worktreePath: childWorktreePath,
|
|
336
|
-
issueType: "issue",
|
|
337
|
-
issue_numbers: [rawId],
|
|
338
|
-
pr_numbers: [],
|
|
339
|
-
issueTracker: issueTrackerName,
|
|
340
|
-
colorHex: "#808080",
|
|
341
|
-
sessionId: "",
|
|
342
|
-
// No session - not launching Claude directly
|
|
343
|
-
projectPath: mainWorktreePath,
|
|
344
|
-
issueUrls: { [rawId]: child.url },
|
|
345
|
-
prUrls: {},
|
|
346
|
-
capabilities: [],
|
|
347
|
-
state: "pending",
|
|
348
|
-
parentLoom: {
|
|
349
|
-
type: "epic",
|
|
350
|
-
identifier: epicIssueNumber,
|
|
351
|
-
branchName: epicBranch,
|
|
352
|
-
worktreePath: epicWorktreePath
|
|
353
|
-
}
|
|
354
|
-
};
|
|
355
|
-
try {
|
|
356
|
-
await this.metadataManager.writeMetadata(childWorktreePath, metadataInput);
|
|
357
|
-
} catch (metaError) {
|
|
358
|
-
getLogger().warn(`Metadata write failed for ${child.number}, cleaning up worktree...`);
|
|
359
|
-
try {
|
|
360
|
-
await this.gitWorktree.removeWorktree(childWorktreePath, { force: true });
|
|
361
|
-
} catch {
|
|
362
|
-
getLogger().debug(`Could not clean up worktree at ${childWorktreePath}`);
|
|
363
|
-
}
|
|
364
|
-
throw metaError;
|
|
365
|
-
}
|
|
366
|
-
try {
|
|
367
|
-
const childMetadata = await this.metadataManager.readMetadata(childWorktreePath);
|
|
368
|
-
if (childMetadata) {
|
|
369
|
-
const providerName = IssueTrackerFactory.getProviderName(
|
|
370
|
-
settings ?? await this.settingsManager.loadSettings()
|
|
371
|
-
);
|
|
372
|
-
const mcpConfigPath = await generateAndWriteMcpConfigFile(
|
|
373
|
-
childWorktreePath,
|
|
374
|
-
childMetadata,
|
|
375
|
-
providerName,
|
|
376
|
-
settings
|
|
377
|
-
);
|
|
378
|
-
await this.metadataManager.updateMetadata(childWorktreePath, { mcpConfigPath });
|
|
379
|
-
const claudeDir = path2.join(childWorktreePath, ".claude");
|
|
380
|
-
await fs2.ensureDir(claudeDir);
|
|
381
|
-
await fs2.writeFile(
|
|
382
|
-
path2.join(claudeDir, "iloom-swarm-mcp-config-path"),
|
|
383
|
-
mcpConfigPath,
|
|
384
|
-
"utf-8"
|
|
385
|
-
);
|
|
386
|
-
getLogger().debug(`Wrote MCP config for ${child.number}: ${mcpConfigPath}`);
|
|
387
|
-
}
|
|
388
|
-
} catch (error) {
|
|
389
|
-
getLogger().warn(
|
|
390
|
-
`Failed to write MCP config for child ${child.number}: ${error instanceof Error ? error.message : "Unknown error"}`
|
|
391
|
-
);
|
|
392
|
-
}
|
|
393
|
-
try {
|
|
394
|
-
await installDependencies(childWorktreePath, true, true);
|
|
395
|
-
} catch (error) {
|
|
396
|
-
getLogger().warn(
|
|
397
|
-
`Failed to install dependencies in child worktree ${child.number}: ${error instanceof Error ? error.message : "Unknown error"}`
|
|
398
|
-
);
|
|
399
|
-
}
|
|
400
|
-
getLogger().success(`Created child worktree for ${child.number}`);
|
|
401
|
-
return {
|
|
402
|
-
issueId: rawId,
|
|
403
|
-
worktreePath: childWorktreePath,
|
|
404
|
-
branch: childBranch,
|
|
405
|
-
success: true
|
|
406
|
-
};
|
|
407
|
-
} catch (error) {
|
|
408
|
-
const rawId = child.number.replace(/^#/, "");
|
|
409
|
-
const errorMessage = error instanceof Error ? error.message : "Unknown error";
|
|
410
|
-
getLogger().warn(`Failed to create child worktree for ${child.number}: ${errorMessage}`);
|
|
411
|
-
return {
|
|
412
|
-
issueId: rawId,
|
|
413
|
-
worktreePath: "",
|
|
414
|
-
branch: "",
|
|
415
|
-
success: false,
|
|
416
|
-
error: errorMessage
|
|
417
|
-
};
|
|
418
|
-
}
|
|
419
|
-
}));
|
|
420
|
-
}
|
|
421
289
|
/**
|
|
422
290
|
* Render swarm-mode agent templates as custom agent files AND thin skill wrappers.
|
|
423
291
|
*
|
|
@@ -572,7 +440,8 @@ ${agentBody}
|
|
|
572
440
|
const settings = await this.settingsManager.loadSettings();
|
|
573
441
|
const templateVariables = {
|
|
574
442
|
SWARM_MODE: true,
|
|
575
|
-
EPIC_WORKTREE_PATH: epicWorktreePath
|
|
443
|
+
EPIC_WORKTREE_PATH: epicWorktreePath,
|
|
444
|
+
...buildReviewTemplateVariables(true, settings == null ? void 0 : settings.agents)
|
|
576
445
|
};
|
|
577
446
|
const agents = await this.agentManager.loadAgents(settings, templateVariables, ["iloom-wave-verifier.md"]);
|
|
578
447
|
const verifierConfig = agents["iloom-wave-verifier"];
|
|
@@ -603,43 +472,6 @@ ${verifierConfig.prompt}
|
|
|
603
472
|
return false;
|
|
604
473
|
}
|
|
605
474
|
}
|
|
606
|
-
/**
|
|
607
|
-
* Copy .claude/agents/ and .claude/skills/ from the epic worktree to each child worktree.
|
|
608
|
-
*
|
|
609
|
-
* Child workers need local access to agent files (used as custom agent types) and
|
|
610
|
-
* skill files (invoked via /skill-name). Without this copy, child worktrees lack
|
|
611
|
-
* the rendered files since they only exist in the epic worktree after rendering.
|
|
612
|
-
*/
|
|
613
|
-
async copyAgentsAndSkillsToChildWorktrees(epicWorktreePath, childWorktrees) {
|
|
614
|
-
const agentsSourceDir = path2.join(epicWorktreePath, ".claude", "agents");
|
|
615
|
-
const skillsSourceDir = path2.join(epicWorktreePath, ".claude", "skills");
|
|
616
|
-
const agentsExist = await fs2.pathExists(agentsSourceDir);
|
|
617
|
-
const skillsExist = await fs2.pathExists(skillsSourceDir);
|
|
618
|
-
if (!agentsExist && !skillsExist) {
|
|
619
|
-
getLogger().warn("No .claude/agents/ or .claude/skills/ directory in epic worktree to copy");
|
|
620
|
-
return;
|
|
621
|
-
}
|
|
622
|
-
const successfulChildren = childWorktrees.filter((c) => c.success);
|
|
623
|
-
await Promise.all(successfulChildren.map(async (child) => {
|
|
624
|
-
try {
|
|
625
|
-
if (agentsExist) {
|
|
626
|
-
const targetAgentsDir = path2.join(child.worktreePath, ".claude", "agents");
|
|
627
|
-
await fs2.copy(agentsSourceDir, targetAgentsDir, { overwrite: true });
|
|
628
|
-
getLogger().debug(`Copied .claude/agents/ to ${child.worktreePath}`);
|
|
629
|
-
}
|
|
630
|
-
if (skillsExist) {
|
|
631
|
-
const targetSkillsDir = path2.join(child.worktreePath, ".claude", "skills");
|
|
632
|
-
await fs2.copy(skillsSourceDir, targetSkillsDir, { overwrite: true });
|
|
633
|
-
getLogger().debug(`Copied .claude/skills/ to ${child.worktreePath}`);
|
|
634
|
-
}
|
|
635
|
-
} catch (error) {
|
|
636
|
-
getLogger().warn(
|
|
637
|
-
`Failed to copy agents/skills to child worktree ${child.issueId}: ${error instanceof Error ? error.message : "Unknown error"}`
|
|
638
|
-
);
|
|
639
|
-
}
|
|
640
|
-
}));
|
|
641
|
-
getLogger().success(`Copied agents and skills to ${successfulChildren.length} child worktrees`);
|
|
642
|
-
}
|
|
643
475
|
/**
|
|
644
476
|
* Run the full swarm setup: render agents, worker agent, and wave verifier.
|
|
645
477
|
*
|
|
@@ -786,7 +618,7 @@ var IgniteCommand = class {
|
|
|
786
618
|
* Internal execution method (separated for withLogger wrapping)
|
|
787
619
|
*/
|
|
788
620
|
async executeInternal(oneShot, skipCleanup, workspacePath, complexity) {
|
|
789
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r
|
|
621
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r;
|
|
790
622
|
process.env.ILOOM = "1";
|
|
791
623
|
try {
|
|
792
624
|
await this.validateNotMainWorktree(workspacePath);
|
|
@@ -841,18 +673,16 @@ var IgniteCommand = class {
|
|
|
841
673
|
}
|
|
842
674
|
try {
|
|
843
675
|
const hasNeon = !!((_e = (_d = this.settings) == null ? void 0 : _d.databaseProviders) == null ? void 0 : _e.neon);
|
|
844
|
-
const hasSupabase = !!((_g = (_f = this.settings) == null ? void 0 : _f.databaseProviders) == null ? void 0 : _g.supabase);
|
|
845
676
|
const language = await detectProjectLanguage(context.workspacePath);
|
|
846
677
|
TelemetryService.getInstance().track("session.started", {
|
|
847
678
|
has_neon: hasNeon,
|
|
848
|
-
has_supabase: hasSupabase,
|
|
849
679
|
language
|
|
850
680
|
});
|
|
851
681
|
} catch (error) {
|
|
852
682
|
logger.debug(`Telemetry session.started tracking failed: ${error instanceof Error ? error.message : error}`);
|
|
853
683
|
}
|
|
854
|
-
if (((
|
|
855
|
-
const basePort = ((
|
|
684
|
+
if (((_f = metadata == null ? void 0 : metadata.capabilities) == null ? void 0 : _f.includes("web")) && context.branchName) {
|
|
685
|
+
const basePort = ((_i = (_h = (_g = this.settings) == null ? void 0 : _g.capabilities) == null ? void 0 : _h.web) == null ? void 0 : _i.basePort) ?? 3e3;
|
|
856
686
|
context.port = await getWorkspacePort({
|
|
857
687
|
basePort,
|
|
858
688
|
worktreePath: context.workspacePath,
|
|
@@ -860,7 +690,7 @@ var IgniteCommand = class {
|
|
|
860
690
|
});
|
|
861
691
|
logger.info(`\u{1F310} Development server port: ${context.port}`);
|
|
862
692
|
}
|
|
863
|
-
const isEpicLoom = metadata && metadata.issue_numbers.length > 0 && ((((
|
|
693
|
+
const isEpicLoom = metadata && metadata.issue_numbers.length > 0 && ((((_j = metadata.childIssues) == null ? void 0 : _j.length) ?? 0) > 0 || metadata.issueType === "epic");
|
|
864
694
|
if (isEpicLoom && this.settings) {
|
|
865
695
|
await this.fetchAndStoreEpicChildData(metadataManager, metadata, context.workspacePath, this.settings);
|
|
866
696
|
}
|
|
@@ -887,7 +717,7 @@ var IgniteCommand = class {
|
|
|
887
717
|
const userPrompt = this.buildUserPrompt(effectiveOneShot);
|
|
888
718
|
const model = this.settingsManager.getSpinModel(this.settings);
|
|
889
719
|
let permissionMode = this.getPermissionModeForWorkflow(context.type);
|
|
890
|
-
if (effectiveOneShot === "bypassPermissions") {
|
|
720
|
+
if (effectiveOneShot === "bypassPermissions" || (metadata == null ? void 0 : metadata.dangerouslySkipPermissions)) {
|
|
891
721
|
permissionMode = "bypassPermissions";
|
|
892
722
|
}
|
|
893
723
|
if (permissionMode === "bypassPermissions") {
|
|
@@ -900,7 +730,7 @@ var IgniteCommand = class {
|
|
|
900
730
|
throw new Error("No session ID found in loom metadata. This loom may need to be recreated with `il start`.");
|
|
901
731
|
}
|
|
902
732
|
logger.debug("Using session ID from metadata", { sessionId });
|
|
903
|
-
const isHeadless = ((
|
|
733
|
+
const isHeadless = ((_k = this.printOptions) == null ? void 0 : _k.print) ?? false;
|
|
904
734
|
const claudeOptions = {
|
|
905
735
|
headless: isHeadless,
|
|
906
736
|
addDir: context.workspacePath,
|
|
@@ -916,16 +746,16 @@ var IgniteCommand = class {
|
|
|
916
746
|
if (permissionMode !== void 0 && permissionMode !== "default") {
|
|
917
747
|
claudeOptions.permissionMode = permissionMode;
|
|
918
748
|
}
|
|
919
|
-
if (((
|
|
749
|
+
if (((_l = this.printOptions) == null ? void 0 : _l.outputFormat) !== void 0) {
|
|
920
750
|
claudeOptions.outputFormat = this.printOptions.outputFormat;
|
|
921
751
|
}
|
|
922
|
-
if (((
|
|
752
|
+
if (((_m = this.printOptions) == null ? void 0 : _m.verbose) !== void 0) {
|
|
923
753
|
claudeOptions.verbose = this.printOptions.verbose;
|
|
924
754
|
}
|
|
925
|
-
if ((
|
|
755
|
+
if ((_n = this.printOptions) == null ? void 0 : _n.json) {
|
|
926
756
|
claudeOptions.jsonMode = "json";
|
|
927
757
|
claudeOptions.outputFormat = "stream-json";
|
|
928
|
-
} else if ((
|
|
758
|
+
} else if ((_o = this.printOptions) == null ? void 0 : _o.jsonStream) {
|
|
929
759
|
claudeOptions.jsonMode = "stream";
|
|
930
760
|
claudeOptions.outputFormat = "stream-json";
|
|
931
761
|
}
|
|
@@ -989,31 +819,17 @@ var IgniteCommand = class {
|
|
|
989
819
|
}
|
|
990
820
|
let agents;
|
|
991
821
|
try {
|
|
992
|
-
if (((
|
|
822
|
+
if (((_p = this.settings) == null ? void 0 : _p.agents) && Object.keys(this.settings.agents).length > 0) {
|
|
993
823
|
logger.debug("Loaded project settings", {
|
|
994
824
|
agentOverrides: Object.keys(this.settings.agents)
|
|
995
825
|
});
|
|
996
826
|
}
|
|
997
|
-
|
|
827
|
+
agents = await this.agentManager.loadAndPrepare(
|
|
998
828
|
this.settings,
|
|
999
829
|
variables,
|
|
1000
|
-
["*.md", "!iloom-framework-detector.md"]
|
|
830
|
+
["*.md", "!iloom-framework-detector.md"],
|
|
831
|
+
path5.join(context.workspacePath, ".claude", "agents")
|
|
1001
832
|
);
|
|
1002
|
-
if (process.platform === "darwin") {
|
|
1003
|
-
agents = this.agentManager.formatForCli(loadedAgents);
|
|
1004
|
-
logger.debug("Loaded agent configurations for CLI", {
|
|
1005
|
-
agentCount: Object.keys(agents).length,
|
|
1006
|
-
agentNames: Object.keys(agents)
|
|
1007
|
-
});
|
|
1008
|
-
} else {
|
|
1009
|
-
const agentsDir = path5.join(context.workspacePath, ".claude", "agents");
|
|
1010
|
-
const rendered = await this.agentManager.renderAgentsToDisk(loadedAgents, agentsDir);
|
|
1011
|
-
logger.debug("Rendered agent files to disk for auto-discovery", {
|
|
1012
|
-
agentCount: rendered.length,
|
|
1013
|
-
agentNames: rendered,
|
|
1014
|
-
targetDir: agentsDir
|
|
1015
|
-
});
|
|
1016
|
-
}
|
|
1017
833
|
} catch (error) {
|
|
1018
834
|
logger.warn(`Failed to load agents: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
1019
835
|
}
|
|
@@ -1042,7 +858,7 @@ var IgniteCommand = class {
|
|
|
1042
858
|
...disallowedTools && { disallowedTools },
|
|
1043
859
|
...agents && { agents }
|
|
1044
860
|
});
|
|
1045
|
-
if ((
|
|
861
|
+
if ((_q = this.printOptions) == null ? void 0 : _q.json) {
|
|
1046
862
|
console.log(JSON.stringify({
|
|
1047
863
|
success: true,
|
|
1048
864
|
output: claudeResult ?? ""
|
|
@@ -1053,7 +869,7 @@ var IgniteCommand = class {
|
|
|
1053
869
|
}
|
|
1054
870
|
} catch (error) {
|
|
1055
871
|
const errorMessage = error instanceof Error ? error.message : "Unknown error";
|
|
1056
|
-
if ((
|
|
872
|
+
if ((_r = this.printOptions) == null ? void 0 : _r.json) {
|
|
1057
873
|
console.log(JSON.stringify({
|
|
1058
874
|
success: false,
|
|
1059
875
|
error: errorMessage
|
|
@@ -1311,8 +1127,6 @@ var IgniteCommand = class {
|
|
|
1311
1127
|
const mainWorktreePath = await findMainWorktreePathWithSettings();
|
|
1312
1128
|
const providerName = IssueTrackerFactory.getProviderName(settings);
|
|
1313
1129
|
const swarmSetup = new SwarmSetupService(
|
|
1314
|
-
this.gitWorktreeManager,
|
|
1315
|
-
metadataManager,
|
|
1316
1130
|
this.agentManager,
|
|
1317
1131
|
this.settingsManager,
|
|
1318
1132
|
this.templateManager
|
|
@@ -1493,17 +1307,12 @@ var IgniteCommand = class {
|
|
|
1493
1307
|
logger.info(` Pending child issues: ${pendingChildIssues.length}`);
|
|
1494
1308
|
let agents;
|
|
1495
1309
|
try {
|
|
1496
|
-
|
|
1310
|
+
agents = await this.agentManager.loadAndPrepare(
|
|
1497
1311
|
settings,
|
|
1498
1312
|
variables,
|
|
1499
|
-
["*.md", "!iloom-framework-detector.md"]
|
|
1313
|
+
["*.md", "!iloom-framework-detector.md"],
|
|
1314
|
+
path5.join(epicWorktreePath, ".claude", "agents")
|
|
1500
1315
|
);
|
|
1501
|
-
if (process.platform === "darwin") {
|
|
1502
|
-
agents = this.agentManager.formatForCli(loadedAgents);
|
|
1503
|
-
} else {
|
|
1504
|
-
const agentsDir = path5.join(epicWorktreePath, ".claude", "agents");
|
|
1505
|
-
await this.agentManager.renderAgentsToDisk(loadedAgents, agentsDir);
|
|
1506
|
-
}
|
|
1507
1316
|
} catch (error) {
|
|
1508
1317
|
logger.warn(`Failed to load agents: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
1509
1318
|
}
|
|
@@ -1636,4 +1445,4 @@ export {
|
|
|
1636
1445
|
WorktreeValidationError,
|
|
1637
1446
|
IgniteCommand
|
|
1638
1447
|
};
|
|
1639
|
-
//# sourceMappingURL=chunk-
|
|
1448
|
+
//# sourceMappingURL=chunk-G2DGDCDP.js.map
|