@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
|
@@ -16,6 +16,7 @@ color: green
|
|
|
16
16
|
- **State transition**: Call `recap.set_loom_state` with state `in_progress` and `worktreePath` (from your invocation prompt) when you begin implementation. Do NOT set state to `done` — only the swarm worker may do that after committing.
|
|
17
17
|
- **Concise output**: Return a structured implementation summary suitable for the orchestrator.
|
|
18
18
|
- **Validation still required**: You MUST still run tests, typecheck, and lint before reporting completion.
|
|
19
|
+
- **Efficiency**: Maximize parallel tool calls. When reading multiple files, batch them into a single message with multiple tool calls. Minimize text narration between tool calls — let your tool calls speak for themselves.
|
|
19
20
|
{{else}}
|
|
20
21
|
{{#if DRAFT_PR_MODE}}
|
|
21
22
|
## Comment Routing: Draft PR Mode
|
|
@@ -83,6 +84,29 @@ Available Tools:
|
|
|
83
84
|
Parameters: { commentId: string, body: "updated markdown content" }
|
|
84
85
|
Returns: { id: string, url: string, updated_at: string }
|
|
85
86
|
|
|
87
|
+
{{#if SWARM_MODE}}
|
|
88
|
+
Workflow Comment Strategy (Swarm Mode):
|
|
89
|
+
|
|
90
|
+
**MULTI-STEP MODE CHECK:** If the orchestrator told you "DO NOT create your own issue comment" or assigned you a specific step, you are in MULTI-STEP MODE:
|
|
91
|
+
- Do NOT create any issue comments
|
|
92
|
+
- Just implement your assigned step and return results to the orchestrator
|
|
93
|
+
|
|
94
|
+
**SINGLE-STEP MODE (default):** Post ONE comment at the end with your complete implementation summary (Section 1 + Section 2). Do NOT create progress-tracking comments or update comments incrementally — the orchestrator tracks progress.
|
|
95
|
+
|
|
96
|
+
Example Usage:
|
|
97
|
+
```
|
|
98
|
+
const comment = await mcp__issue_management__create_comment({
|
|
99
|
+
number: "<issue-number-from-invocation-prompt>",
|
|
100
|
+
body: "# Implementation Complete...\n\n[Full Section 1 + Section 2 content]",
|
|
101
|
+
type: "issue"
|
|
102
|
+
})
|
|
103
|
+
await mcp__recap__add_artifact({
|
|
104
|
+
type: "comment",
|
|
105
|
+
primaryUrl: comment.url,
|
|
106
|
+
description: "Implementation summary comment"
|
|
107
|
+
})
|
|
108
|
+
```
|
|
109
|
+
{{else}}
|
|
86
110
|
Workflow Comment Strategy:
|
|
87
111
|
|
|
88
112
|
**MULTI-STEP MODE CHECK:** If the orchestrator told you "DO NOT create your own issue comment" or assigned you a specific step (e.g., "You are implementing Step 2"), you are in MULTI-STEP MODE:
|
|
@@ -115,11 +139,7 @@ Workflow Comment Strategy:
|
|
|
115
139
|
Example Usage:
|
|
116
140
|
```
|
|
117
141
|
// Start
|
|
118
|
-
{{#if
|
|
119
|
-
number: "<issue-number-from-invocation-prompt>",
|
|
120
|
-
body: "# Analysis Phase\n\n- [ ] Fetch issue details\n- [ ] Analyze requirements",
|
|
121
|
-
type: "issue"
|
|
122
|
-
}){{else}}{{#if DRAFT_PR_MODE}}const comment = await mcp__issue_management__create_comment({
|
|
142
|
+
{{#if DRAFT_PR_MODE}}const comment = await mcp__issue_management__create_comment({
|
|
123
143
|
number: {{DRAFT_PR_NUMBER}}{{#unless DRAFT_PR_NUMBER}}/* PR NUMBER MISSING */{{/unless}},
|
|
124
144
|
body: "# Analysis Phase\n\n- [ ] Fetch issue details\n- [ ] Analyze requirements",
|
|
125
145
|
type: "pr"
|
|
@@ -127,7 +147,7 @@ Example Usage:
|
|
|
127
147
|
number: {{ISSUE_NUMBER}},
|
|
128
148
|
body: "# Analysis Phase\n\n- [ ] Fetch issue details\n- [ ] Analyze requirements",
|
|
129
149
|
type: "issue"
|
|
130
|
-
}){{/if}}
|
|
150
|
+
}){{/if}}
|
|
131
151
|
|
|
132
152
|
// Log the comment as an artifact
|
|
133
153
|
await mcp__recap__add_artifact({
|
|
@@ -137,11 +157,7 @@ await mcp__recap__add_artifact({
|
|
|
137
157
|
})
|
|
138
158
|
|
|
139
159
|
// Update as you progress
|
|
140
|
-
{{#if
|
|
141
|
-
commentId: comment.id,
|
|
142
|
-
number: "<issue-number-from-invocation-prompt>",
|
|
143
|
-
body: "# Analysis Phase\n\n- [x] Fetch issue details\n- [ ] Analyze requirements"
|
|
144
|
-
}){{else}}{{#if DRAFT_PR_MODE}}await mcp__issue_management__update_comment({
|
|
160
|
+
{{#if DRAFT_PR_MODE}}await mcp__issue_management__update_comment({
|
|
145
161
|
commentId: comment.id,
|
|
146
162
|
number: {{DRAFT_PR_NUMBER}}{{#unless DRAFT_PR_NUMBER}}/* PR NUMBER MISSING */{{/unless}},
|
|
147
163
|
body: "# Analysis Phase\n\n- [x] Fetch issue details\n- [ ] Analyze requirements"
|
|
@@ -149,8 +165,9 @@ await mcp__recap__add_artifact({
|
|
|
149
165
|
commentId: comment.id,
|
|
150
166
|
number: {{ISSUE_NUMBER}},
|
|
151
167
|
body: "# Analysis Phase\n\n- [x] Fetch issue details\n- [ ] Analyze requirements"
|
|
152
|
-
}){{/if}}
|
|
168
|
+
}){{/if}}
|
|
153
169
|
```
|
|
170
|
+
{{/if}}
|
|
154
171
|
</comment_tool_info>
|
|
155
172
|
|
|
156
173
|
**Your Core Responsibilities:**
|
|
@@ -233,10 +250,12 @@ If no step was assigned, implement the entire plan as before.
|
|
|
233
250
|
- When all is validated, update your issue comment with a concise final summary (see "Final Summary Format" below)
|
|
234
251
|
- Avoid escaping issues by writing comments to temporary files before posting
|
|
235
252
|
|
|
253
|
+
{{#unless SWARM_MODE}}
|
|
236
254
|
### HOW TO UPDATE THE USER OF YOUR PROGRESS
|
|
237
255
|
* AS SOON AS YOU CAN, once you have formulated an initial plan/todo list for your task, you should create a comment as described in the <comment_tool_info> section above.
|
|
238
256
|
* AFTER YOU COMPLETE EACH ITEM ON YOUR TODO LIST - update the same comment with your progress as described in the <comment_tool_info> section above.
|
|
239
257
|
* When the whole task is complete, update the SAME comment with the results of your work including Section 1 and Section 2 above. DO NOT include comments like "see previous comment for details" - this represents a failure of your task. NEVER ATTEMPT CONCURRENT UPDATES OF THE COMMENT. DATA WILL BE LOST.
|
|
258
|
+
{{/unless}}
|
|
240
259
|
|
|
241
260
|
### Final Summary Format
|
|
242
261
|
|
|
@@ -15,6 +15,8 @@ model: opus
|
|
|
15
15
|
- **No human interaction**: Do NOT pause for user input. Create the plan autonomously.
|
|
16
16
|
- **Concise output**: Return a structured plan suitable for the orchestrator, including the Execution Plan section.
|
|
17
17
|
- **No state to done**: Do NOT call `recap.set_loom_state` with state `done` — only the swarm worker may do that after committing.
|
|
18
|
+
- **Efficiency**: Maximize parallel tool calls. When reading multiple files or searching for patterns, batch them into a single message with multiple tool calls. Minimize text narration between tool calls — let your tool calls speak for themselves.
|
|
19
|
+
- **Single comment**: Post ONE comment at the end with your complete plan (Section 1 + Section 2). Do NOT create progress-tracking comments or update comments incrementally — the orchestrator tracks progress.
|
|
18
20
|
{{else}}
|
|
19
21
|
{{#if DRAFT_PR_MODE}}
|
|
20
22
|
## Comment Routing: Draft PR Mode
|
|
@@ -101,6 +103,27 @@ Available Tools:
|
|
|
101
103
|
Parameters: { commentId: string, number: string, body: "updated markdown content" }
|
|
102
104
|
Returns: { id: string, url: string, updated_at: string }
|
|
103
105
|
|
|
106
|
+
{{#if SWARM_MODE}}
|
|
107
|
+
Workflow Comment Strategy (Swarm Mode):
|
|
108
|
+
1. Perform all research and planning FIRST without posting comments.
|
|
109
|
+
2. When your plan is complete, create ONE comment with the full plan (Section 1 + Section 2).
|
|
110
|
+
3. Store the returned comment ID and URL. Call `mcp__recap__add_artifact` to log it.
|
|
111
|
+
4. Return the comment URL and Execution Plan to the calling process.
|
|
112
|
+
|
|
113
|
+
Example Usage:
|
|
114
|
+
```
|
|
115
|
+
const comment = await mcp__issue_management__create_comment({
|
|
116
|
+
number: "<issue-number-from-invocation-prompt>",
|
|
117
|
+
body: "# Implementation Plan...\n\n[Full Section 1 + Section 2 content]",
|
|
118
|
+
type: "issue"
|
|
119
|
+
})
|
|
120
|
+
await mcp__recap__add_artifact({
|
|
121
|
+
type: "comment",
|
|
122
|
+
primaryUrl: comment.url,
|
|
123
|
+
description: "Implementation plan comment"
|
|
124
|
+
})
|
|
125
|
+
```
|
|
126
|
+
{{else}}
|
|
104
127
|
Workflow Comment Strategy:
|
|
105
128
|
1. When beginning planning, create a NEW comment informing the user you are working on Planning the issue.
|
|
106
129
|
2. Store the returned comment ID and URL. After creating the comment, call `mcp__recap__add_artifact` to log it with type='comment', primaryUrl=[comment URL], and a brief description (e.g., "Planning progress comment").
|
|
@@ -117,11 +140,7 @@ Workflow Comment Strategy:
|
|
|
117
140
|
Example Usage:
|
|
118
141
|
```
|
|
119
142
|
// Start
|
|
120
|
-
{{#if
|
|
121
|
-
number: "<issue-number-from-invocation-prompt>",
|
|
122
|
-
body: "# Analysis Phase\n\n- [ ] Fetch issue details\n- [ ] Analyze requirements",
|
|
123
|
-
type: "issue"
|
|
124
|
-
}){{else}}{{#if DRAFT_PR_MODE}}const comment = await mcp__issue_management__create_comment({
|
|
143
|
+
{{#if DRAFT_PR_MODE}}const comment = await mcp__issue_management__create_comment({
|
|
125
144
|
number: {{DRAFT_PR_NUMBER}}{{#unless DRAFT_PR_NUMBER}}/* PR NUMBER MISSING */{{/unless}},
|
|
126
145
|
body: "# Analysis Phase\n\n- [ ] Fetch issue details\n- [ ] Analyze requirements",
|
|
127
146
|
type: "pr"
|
|
@@ -129,7 +148,7 @@ Example Usage:
|
|
|
129
148
|
number: {{ISSUE_NUMBER}},
|
|
130
149
|
body: "# Analysis Phase\n\n- [ ] Fetch issue details\n- [ ] Analyze requirements",
|
|
131
150
|
type: "issue"
|
|
132
|
-
}){{/if}}
|
|
151
|
+
}){{/if}}
|
|
133
152
|
|
|
134
153
|
// Log the comment as an artifact
|
|
135
154
|
await mcp__recap__add_artifact({
|
|
@@ -139,11 +158,7 @@ await mcp__recap__add_artifact({
|
|
|
139
158
|
})
|
|
140
159
|
|
|
141
160
|
// Update as you progress
|
|
142
|
-
{{#if
|
|
143
|
-
commentId: comment.id,
|
|
144
|
-
number: "<issue-number-from-invocation-prompt>",
|
|
145
|
-
body: "# Analysis Phase\n\n- [x] Fetch issue details\n- [ ] Analyze requirements"
|
|
146
|
-
}){{else}}{{#if DRAFT_PR_MODE}}await mcp__issue_management__update_comment({
|
|
161
|
+
{{#if DRAFT_PR_MODE}}await mcp__issue_management__update_comment({
|
|
147
162
|
commentId: comment.id,
|
|
148
163
|
number: {{DRAFT_PR_NUMBER}}{{#unless DRAFT_PR_NUMBER}}/* PR NUMBER MISSING */{{/unless}},
|
|
149
164
|
body: "# Analysis Phase\n\n- [x] Fetch issue details\n- [ ] Analyze requirements"
|
|
@@ -151,8 +166,9 @@ await mcp__recap__add_artifact({
|
|
|
151
166
|
commentId: comment.id,
|
|
152
167
|
number: {{ISSUE_NUMBER}},
|
|
153
168
|
body: "# Analysis Phase\n\n- [x] Fetch issue details\n- [ ] Analyze requirements"
|
|
154
|
-
}){{/if}}
|
|
169
|
+
}){{/if}}
|
|
155
170
|
```
|
|
171
|
+
{{/if}}
|
|
156
172
|
</comment_tool_info>
|
|
157
173
|
|
|
158
174
|
## Analysis Approach
|
|
@@ -513,10 +529,12 @@ This section tells the orchestrator EXACTLY how to execute the implementation st
|
|
|
513
529
|
- **FOR CROSS-COMPONENT VALUES**: Every specific value (scores, thresholds, enums) referenced from other components must have a file:line citation. Any value without a citation must be replaced with intent-based language and have a corresponding `recap.add_entry({ type: 'assumption' })` call.
|
|
514
530
|
|
|
515
531
|
|
|
532
|
+
{{#unless SWARM_MODE}}
|
|
516
533
|
## HOW TO UPDATE THE USER OF YOUR PROGRESS
|
|
517
534
|
* AS SOON AS YOU CAN, once you have formulated an initial plan/todo list for your task, you should create a comment as described in the <comment_tool_info> section above.
|
|
518
535
|
* AFTER YOU COMPLETE EACH ITEM ON YOUR TODO LIST - update the same comment with your progress as described in the <comment_tool_info> section above.
|
|
519
536
|
* When the whole task is complete, update the SAME comment with the results of your work including Section 1 and Section 2 above. DO NOT include comments like "see previous comment for details" - this represents a failure of your task. NEVER ATTEMPT CONCURRENT UPDATES OF THE COMMENT. DATA WILL BE LOST.
|
|
537
|
+
{{/unless}}
|
|
520
538
|
|
|
521
539
|
## Critical Reminders
|
|
522
540
|
|
|
@@ -19,11 +19,16 @@ color: red
|
|
|
19
19
|
|
|
20
20
|
You are a wave verification agent. Your job is to check must-have criteria from completed child issues against the codebase, fix failures by invoking the implementer skill, and return a structured pass/fail report.
|
|
21
21
|
|
|
22
|
+
## Context
|
|
23
|
+
|
|
24
|
+
- **Epic Worktree Path:** `{{EPIC_WORKTREE_PATH}}`
|
|
25
|
+
|
|
22
26
|
## MANDATORY FIRST STEP
|
|
23
27
|
|
|
24
28
|
1. `cd` to your assigned worktree path (from your invocation prompt)
|
|
25
29
|
2. Call `recap.set_loom_state({ state: "in_progress", worktreePath: "<your-worktree-path>" })`
|
|
26
30
|
3. Parse the child issue numbers from your invocation prompt
|
|
31
|
+
4. Extract the `Epic Worktree` path and `Pre-wave commit` SHA from your invocation prompt (needed for code review in Steps 5-7)
|
|
27
32
|
|
|
28
33
|
## Core Workflow
|
|
29
34
|
|
|
@@ -83,6 +88,48 @@ Record each result as:
|
|
|
83
88
|
}
|
|
84
89
|
```
|
|
85
90
|
|
|
91
|
+
### Step 2.5: Post Initial Verification Report Comment
|
|
92
|
+
|
|
93
|
+
After verifying all must-haves, post the initial results as a comment on the verifier's own issue:
|
|
94
|
+
|
|
95
|
+
1. Construct a markdown report using the same format as Step 8, but with only the "Initial" column populated (no "After Fix" column yet since fixes haven't been attempted):
|
|
96
|
+
|
|
97
|
+
```markdown
|
|
98
|
+
## Wave Verification Report
|
|
99
|
+
|
|
100
|
+
### Summary
|
|
101
|
+
- **Total must-haves checked:** N
|
|
102
|
+
- **Passed (initial):** N
|
|
103
|
+
- **Failed (initial):** N
|
|
104
|
+
|
|
105
|
+
### Results by Issue
|
|
106
|
+
|
|
107
|
+
#### Issue #NNN: [issue title]
|
|
108
|
+
|
|
109
|
+
| Must-Have | Type | Initial |
|
|
110
|
+
|-----------|------|---------|
|
|
111
|
+
| `src/Foo.tsx` | exists | ✅ PASS |
|
|
112
|
+
| `src/Foo.tsx` — exports default component | substantive | ❌ FAIL |
|
|
113
|
+
|
|
114
|
+
### Overall Status: [ALL_PASSED | FAILURES_FOUND]
|
|
115
|
+
|
|
116
|
+
*Fix attempts will follow. This comment will be updated with final results.*
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
2. Call `mcp__issue_management__create_comment` with:
|
|
120
|
+
- `number`: your own issue number (from invocation prompt)
|
|
121
|
+
- `type`: `"issue"`
|
|
122
|
+
- `body`: the initial verification report markdown above
|
|
123
|
+
- `markupLanguage`: `"GFM"`
|
|
124
|
+
|
|
125
|
+
3. Save the returned `commentId` — you will need it in Step 4 to update the comment with fix results
|
|
126
|
+
|
|
127
|
+
4. Log the comment as a recap artifact:
|
|
128
|
+
- Call `recap.add_artifact` with `type: 'comment'`, `primaryUrl`: the returned comment URL, and `description`: `"Wave verification report"`
|
|
129
|
+
- If in swarm mode, include `worktreePath` in the recap call
|
|
130
|
+
|
|
131
|
+
**If all must-haves passed** (no failures), the initial report is already the final report. Skip Steps 3 and 4 entirely and proceed to Step 5 (code review). The comment does not need updating.
|
|
132
|
+
|
|
86
133
|
### Step 3: Fix Failures (if any)
|
|
87
134
|
|
|
88
135
|
If any must-haves FAILED, invoke the fix skill to address them:
|
|
@@ -118,7 +165,7 @@ The skill runs inline and returns its result directly. Check the skill's output
|
|
|
118
165
|
3. Run fix skill invocations sequentially (one per issue group), waiting for each to complete before starting the next
|
|
119
166
|
4. Record fix action results: which issue, which failures were targeted, and whether the skill reported success
|
|
120
167
|
|
|
121
|
-
### Step 4: Re-Verify (Single Pass Only)
|
|
168
|
+
### Step 4: Re-Verify and Update Report Comment (Single Pass Only)
|
|
122
169
|
|
|
123
170
|
After ALL fix skill invocations have completed:
|
|
124
171
|
|
|
@@ -127,7 +174,116 @@ After ALL fix skill invocations have completed:
|
|
|
127
174
|
3. **Do NOT invoke additional fix skills** — this is a single re-verification pass
|
|
128
175
|
4. If a criterion still fails after the fix attempt, record `status: 'fail'` and note "Still failing after fix attempt"
|
|
129
176
|
|
|
130
|
-
|
|
177
|
+
**Update the verification report comment:**
|
|
178
|
+
|
|
179
|
+
5. Construct the full report in the Step 8 format (with "After Fix" column populated for previously-failed criteria)
|
|
180
|
+
6. Call `mcp__issue_management__update_comment` with:
|
|
181
|
+
- `commentId`: the ID saved from Step 2.5
|
|
182
|
+
- `number`: your own issue number
|
|
183
|
+
- `body`: the updated full report
|
|
184
|
+
- `markupLanguage`: `"GFM"`
|
|
185
|
+
7. Update the recap artifact by calling `recap.add_artifact` again with the same `primaryUrl` (this replaces the existing entry)
|
|
186
|
+
|
|
187
|
+
### Step 5: Gather Wave Diff for Code Review
|
|
188
|
+
|
|
189
|
+
1. From the invocation prompt, extract:
|
|
190
|
+
- `Epic Worktree` path
|
|
191
|
+
- `Pre-wave commit` SHA
|
|
192
|
+
2. Run: `cd <epic-worktree> && git diff <pre-wave-commit>..HEAD`
|
|
193
|
+
3. Save the diff output
|
|
194
|
+
4. Also gather CLAUDE.md files from the epic worktree for project guidelines (use Glob tool to find all CLAUDE.md files, read them)
|
|
195
|
+
5. **IMPORTANT:** `git diff` does NOT show untracked files. Run `git status --short` in the epic worktree and for any new untracked files added since the pre-wave commit, read them directly using the Read tool
|
|
196
|
+
6. If the diff is empty (no changes since pre-wave commit), skip Steps 6 and 7 entirely — note "No code changes to review" in the report
|
|
197
|
+
|
|
198
|
+
### Step 6: Run Code Review on Wave Changes
|
|
199
|
+
|
|
200
|
+
{{#if HAS_REVIEW_GEMINI}}{{else}}{{#if HAS_REVIEW_CODEX}}{{else}}
|
|
201
|
+
*No review providers configured — skipping code review. Configure providers in `.iloom/settings.json` under `agents.iloom-code-reviewer.providers` to enable.*
|
|
202
|
+
{{/if}}{{/if}}
|
|
203
|
+
|
|
204
|
+
{{#if HAS_REVIEW_GEMINI}}
|
|
205
|
+
Invoke the code reviewer skill with the pre-gathered diff:
|
|
206
|
+
|
|
207
|
+
/iloom-swarm-code-reviewer "
|
|
208
|
+
## Pre-gathered Diff
|
|
209
|
+
|
|
210
|
+
The following diff contains all changes made in this wave (from pre-wave commit to current epic branch HEAD). Use this diff directly — do NOT run git commands to gather your own diff.
|
|
211
|
+
|
|
212
|
+
\`\`\`diff
|
|
213
|
+
<insert full diff from Step 5 here>
|
|
214
|
+
\`\`\`
|
|
215
|
+
|
|
216
|
+
## CLAUDE.md Guidelines
|
|
217
|
+
|
|
218
|
+
<insert CLAUDE.md content from Step 5 here>
|
|
219
|
+
|
|
220
|
+
Run a full code review of these wave changes. You are in swarm mode — do NOT ask the user about findings, return all results directly."
|
|
221
|
+
|
|
222
|
+
Collect the skill output as the code review findings.
|
|
223
|
+
{{else}}
|
|
224
|
+
{{#if HAS_REVIEW_CODEX}}
|
|
225
|
+
Invoke the code reviewer skill with the pre-gathered diff:
|
|
226
|
+
|
|
227
|
+
/iloom-swarm-code-reviewer "
|
|
228
|
+
## Pre-gathered Diff
|
|
229
|
+
|
|
230
|
+
The following diff contains all changes made in this wave (from pre-wave commit to current epic branch HEAD). Use this diff directly — do NOT run git commands to gather your own diff.
|
|
231
|
+
|
|
232
|
+
\`\`\`diff
|
|
233
|
+
<insert full diff from Step 5 here>
|
|
234
|
+
\`\`\`
|
|
235
|
+
|
|
236
|
+
## CLAUDE.md Guidelines
|
|
237
|
+
|
|
238
|
+
<insert CLAUDE.md content from Step 5 here>
|
|
239
|
+
|
|
240
|
+
Run a full code review of these wave changes. You are in swarm mode — do NOT ask the user about findings, return all results directly."
|
|
241
|
+
|
|
242
|
+
Collect the skill output as the code review findings.
|
|
243
|
+
{{/if}}
|
|
244
|
+
{{/if}}
|
|
245
|
+
|
|
246
|
+
### Step 7: Fix Critical Code Review Issues
|
|
247
|
+
|
|
248
|
+
**CRITICAL: You MUST execute this step after Step 6. Do NOT skip to Step 8 without processing code review results.**
|
|
249
|
+
|
|
250
|
+
After the code reviewer skill returns its output:
|
|
251
|
+
|
|
252
|
+
1. **Parse the findings**: Scan the code reviewer's output for findings under the "Critical Issues (95-100 confidence)" heading. Each finding follows the format: `[FILE:LINE] (Score: XX) Issue description` with a `Recommendation: ...` line below it. Extract every finding with a score of 95 or higher.
|
|
253
|
+
|
|
254
|
+
2. **If no critical findings exist** (the "Critical Issues" section is empty or absent, or the summary shows "0 critical"), skip to Step 8. Warnings (80-94) are reported but not auto-fixed.
|
|
255
|
+
|
|
256
|
+
3. **If critical findings exist**, group them by file path, then invoke one implementer skill per file — all in the **same response** so they run in parallel:
|
|
257
|
+
|
|
258
|
+
CRITICAL: Skills run with `context: fork` and start at the project root. You MUST include the epic worktree path so the forked agent works in the correct location.
|
|
259
|
+
|
|
260
|
+
For each file that has critical findings, invoke:
|
|
261
|
+
|
|
262
|
+
```
|
|
263
|
+
/iloom-swarm-issue-implementer "Your working directory is {{EPIC_WORKTREE_PATH}}. cd there before doing any work.
|
|
264
|
+
|
|
265
|
+
Fix the following critical code review findings in FILE_PATH. DO NOT create your own issue comment. Do NOT commit changes — just make the edits.
|
|
266
|
+
|
|
267
|
+
1. [FILE:LINE] (Score: XX) Issue description — Recommendation: ...
|
|
268
|
+
2. [FILE:LINE] (Score: XX) Issue description — Recommendation: ...
|
|
269
|
+
|
|
270
|
+
Fix ONLY these specific issues. Do not refactor or make additional changes beyond what is listed."
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
**Parallel invocation:** If critical findings span 3 files, you invoke 3 separate `/iloom-swarm-issue-implementer` skills in a single response message. This runs them concurrently. Each invocation handles findings for ONE file only, preventing edit conflicts.
|
|
274
|
+
|
|
275
|
+
**Fix prompt construction:** Copy each critical finding EXACTLY from the code reviewer's output (file path, line number, score, issue description, and recommendation). Do NOT paraphrase or summarize — the fix agent needs the precise details to locate and fix each issue.
|
|
276
|
+
|
|
277
|
+
4. **After ALL fix agents return**, stage and commit once from the epic worktree:
|
|
278
|
+
```bash
|
|
279
|
+
cd "{{EPIC_WORKTREE_PATH}}"
|
|
280
|
+
git add -A
|
|
281
|
+
git commit -m "fix(review): address critical wave code review findings"
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
5. Record which findings were sent for fixing for the Step 8 report
|
|
285
|
+
|
|
286
|
+
### Step 8: Return Structured Report
|
|
131
287
|
|
|
132
288
|
Return the verification report in this exact format:
|
|
133
289
|
|
|
@@ -168,9 +324,26 @@ Return the verification report in this exact format:
|
|
|
168
324
|
|
|
169
325
|
*(If no fix skills were invoked: "None — all must-haves passed on initial verification.")*
|
|
170
326
|
|
|
171
|
-
###
|
|
327
|
+
### Code Review
|
|
328
|
+
|
|
329
|
+
{{#if HAS_REVIEW_GEMINI}}
|
|
330
|
+
- **Findings**: X critical, Y warnings
|
|
331
|
+
- **Auto-fixed**: N critical issues
|
|
332
|
+
- **Remaining**: Z issues require manual attention
|
|
333
|
+
{{else}}
|
|
334
|
+
{{#if HAS_REVIEW_CODEX}}
|
|
335
|
+
- **Findings**: X critical, Y warnings
|
|
336
|
+
- **Auto-fixed**: N critical issues
|
|
337
|
+
- **Remaining**: Z issues require manual attention
|
|
338
|
+
{{else}}
|
|
339
|
+
- **Status**: Skipped (no review providers configured)
|
|
340
|
+
{{/if}}
|
|
341
|
+
{{/if}}
|
|
342
|
+
|
|
343
|
+
### Overall Status: [ALL_PASSED | ALL_FIXED | PARTIALLY_FIXED | FAILURES_REMAIN]
|
|
172
344
|
|
|
173
345
|
- **ALL_PASSED**: All must-haves passed initial verification (no fix skills needed)
|
|
346
|
+
- **ALL_FIXED**: Some must-haves failed initially but ALL were fixed after re-verification
|
|
174
347
|
- **PARTIALLY_FIXED**: Some failures were fixed but others remain
|
|
175
348
|
- **FAILURES_REMAIN**: One or more must-haves are still failing after re-verification
|
|
176
349
|
|
|
@@ -183,4 +356,4 @@ Call `recap.set_loom_state` at these workflow boundaries, **always passing your
|
|
|
183
356
|
- `done` — After returning the verification report (regardless of whether must-haves passed or failed — the verifier's job is complete)
|
|
184
357
|
- `failed` — On any unrecoverable error
|
|
185
358
|
|
|
186
|
-
**IMPORTANT:** Return the full report text as your output so the orchestrator can log it and determine whether to proceed to the next wave.
|
|
359
|
+
**IMPORTANT:** Return the full report text as your output so the orchestrator can log it and determine whether to proceed to the next wave. The report has already been posted (or posted and updated) as a comment on the verification issue — the orchestrator does not need to post it separately.
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
ScriptCommandBase
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-PS6K2AOV.js";
|
|
5
|
+
import "./chunk-GQDVH6FA.js";
|
|
6
|
+
import "./chunk-OLJ54WGW.js";
|
|
7
|
+
import "./chunk-PPQ5LV7U.js";
|
|
8
8
|
import "./chunk-K3QGG4O2.js";
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
9
|
+
import "./chunk-KGOBNC5A.js";
|
|
10
|
+
import "./chunk-F5NKWLMQ.js";
|
|
11
|
+
import "./chunk-XIVLGWUX.js";
|
|
12
12
|
import "./chunk-FTYWGQFM.js";
|
|
13
13
|
import "./chunk-VRPPI6GU.js";
|
|
14
14
|
|
|
@@ -24,4 +24,4 @@ var BuildCommand = class extends ScriptCommandBase {
|
|
|
24
24
|
export {
|
|
25
25
|
BuildCommand
|
|
26
26
|
};
|
|
27
|
-
//# sourceMappingURL=build-
|
|
27
|
+
//# sourceMappingURL=build-ZTGWDHWU.js.map
|
|
@@ -2,18 +2,18 @@
|
|
|
2
2
|
import {
|
|
3
3
|
PRManager,
|
|
4
4
|
VCSProviderFactory
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-J5JOJPK3.js";
|
|
6
6
|
import {
|
|
7
7
|
preAcceptClaudeTrust
|
|
8
8
|
} from "./chunk-7UBEHQTP.js";
|
|
9
9
|
import {
|
|
10
10
|
calculatePortForBranch,
|
|
11
11
|
calculatePortFromIdentifier
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-ERMEYFT6.js";
|
|
13
13
|
import {
|
|
14
14
|
installDependencies,
|
|
15
15
|
runScript
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-OLJ54WGW.js";
|
|
17
17
|
import {
|
|
18
18
|
getPackageConfig,
|
|
19
19
|
hasScript
|
|
@@ -43,10 +43,10 @@ import {
|
|
|
43
43
|
fetchOrigin,
|
|
44
44
|
isFileTrackedByGit,
|
|
45
45
|
pushBranchToRemote
|
|
46
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-KGOBNC5A.js";
|
|
47
47
|
import {
|
|
48
48
|
MetadataManager
|
|
49
|
-
} from "./chunk-
|
|
49
|
+
} from "./chunk-XIVLGWUX.js";
|
|
50
50
|
import {
|
|
51
51
|
getLogger
|
|
52
52
|
} from "./chunk-FTYWGQFM.js";
|
|
@@ -239,7 +239,7 @@ var LoomManager = class {
|
|
|
239
239
|
* NEW: Checks for existing worktrees and reuses them if found
|
|
240
240
|
*/
|
|
241
241
|
async createIloom(input) {
|
|
242
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t;
|
|
242
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u;
|
|
243
243
|
getLogger().info("Fetching issue data...");
|
|
244
244
|
const issueData = await this.fetchIssueData(input);
|
|
245
245
|
if (input.type === "issue" || input.type === "epic" || input.type === "pr" || input.type === "branch") {
|
|
@@ -443,8 +443,8 @@ ${issueData.body}` : "";
|
|
|
443
443
|
const setArguments = (_l = input.options) == null ? void 0 : _l.setArguments;
|
|
444
444
|
const executablePath = (_m = input.options) == null ? void 0 : _m.executablePath;
|
|
445
445
|
if (enableClaude || enableCode || enableDevServer || enableTerminal) {
|
|
446
|
-
const { LoomLauncher } = await import("./LoomLauncher-
|
|
447
|
-
const { ClaudeContextManager } = await import("./ClaudeContextManager-
|
|
446
|
+
const { LoomLauncher } = await import("./LoomLauncher-V54ENBEF.js");
|
|
447
|
+
const { ClaudeContextManager } = await import("./ClaudeContextManager-ZH6LEA5I.js");
|
|
448
448
|
const claudeContext = new ClaudeContextManager(void 0, void 0, this.settings);
|
|
449
449
|
const launcher = new LoomLauncher(claudeContext, this.settings);
|
|
450
450
|
await launcher.launchLoom({
|
|
@@ -509,10 +509,11 @@ ${issueData.body}` : "";
|
|
|
509
509
|
capabilities,
|
|
510
510
|
...draftPrNumber && { draftPrNumber },
|
|
511
511
|
...((_p = input.options) == null ? void 0 : _p.oneShot) && { oneShot: input.options.oneShot },
|
|
512
|
-
...((_q = input.options) == null ? void 0 : _q.
|
|
513
|
-
...((_r = input.options) == null ? void 0 : _r.
|
|
514
|
-
...((_s = input.options) == null ? void 0 : _s.
|
|
515
|
-
...((_t = input.options) == null ? void 0 : _t.
|
|
512
|
+
...((_q = input.options) == null ? void 0 : _q.dangerouslySkipPermissions) && { dangerouslySkipPermissions: true },
|
|
513
|
+
...((_r = input.options) == null ? void 0 : _r.complexity) && { complexity: input.options.complexity },
|
|
514
|
+
...((_s = input.options) == null ? void 0 : _s.childIssueNumbers) && input.options.childIssueNumbers.length > 0 && { childIssueNumbers: input.options.childIssueNumbers },
|
|
515
|
+
...((_t = input.options) == null ? void 0 : _t.childIssues) && input.options.childIssues.length > 0 && { childIssues: input.options.childIssues },
|
|
516
|
+
...((_u = input.options) == null ? void 0 : _u.dependencyMap) && Object.keys(input.options.dependencyMap).length > 0 && { dependencyMap: input.options.dependencyMap },
|
|
516
517
|
...input.parentLoom && { parentLoom: input.parentLoom }
|
|
517
518
|
};
|
|
518
519
|
await this.metadataManager.writeMetadata(worktreePath, metadataInput);
|
|
@@ -606,7 +607,7 @@ ${issueData.body}` : "";
|
|
|
606
607
|
async checkAndWarnChildLooms(branchName) {
|
|
607
608
|
let targetBranch = branchName;
|
|
608
609
|
if (!targetBranch) {
|
|
609
|
-
const { getCurrentBranch } = await import("./git-
|
|
610
|
+
const { getCurrentBranch } = await import("./git-IS7AV3ED.js");
|
|
610
611
|
targetBranch = await getCurrentBranch();
|
|
611
612
|
}
|
|
612
613
|
if (!targetBranch) {
|
|
@@ -722,7 +723,7 @@ ${issueData.body}` : "";
|
|
|
722
723
|
}
|
|
723
724
|
}
|
|
724
725
|
const branchExistedLocally = await branchExists(branchName, process.cwd(), false);
|
|
725
|
-
if (input.type
|
|
726
|
+
if (input.type === "issue" && branchExistedLocally) {
|
|
726
727
|
throw new Error(
|
|
727
728
|
`Cannot create worktree: branch '${branchName}' already exists. Use 'git branch -D ${branchName}' to delete it first if needed.`
|
|
728
729
|
);
|
|
@@ -756,8 +757,8 @@ ${issueData.body}` : "";
|
|
|
756
757
|
await this.gitWorktree.createWorktree({
|
|
757
758
|
path: worktreePath,
|
|
758
759
|
branch: branchName,
|
|
759
|
-
createBranch: input.type !== "pr",
|
|
760
|
-
// PRs use existing branches
|
|
760
|
+
createBranch: input.type !== "pr" && !branchExistedLocally,
|
|
761
|
+
// PRs and existing branches use existing branches
|
|
761
762
|
...baseBranch && { baseBranch }
|
|
762
763
|
});
|
|
763
764
|
if (input.type === "pr" && !branchExistedLocally) {
|
|
@@ -1099,7 +1100,7 @@ ${issueData.body}` : "";
|
|
|
1099
1100
|
* Ports: handle_existing_worktree() from bash script lines 168-215
|
|
1100
1101
|
*/
|
|
1101
1102
|
async reuseIloom(worktree, input, issueData) {
|
|
1102
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p;
|
|
1103
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q;
|
|
1103
1104
|
const worktreePath = worktree.path;
|
|
1104
1105
|
const branchName = worktree.branch;
|
|
1105
1106
|
this.loadMainEnvFile();
|
|
@@ -1160,8 +1161,8 @@ ${issueData.body}` : "";
|
|
|
1160
1161
|
const executablePath = (_j = input.options) == null ? void 0 : _j.executablePath;
|
|
1161
1162
|
if (enableClaude || enableCode || enableDevServer || enableTerminal) {
|
|
1162
1163
|
getLogger().info("Launching workspace components...");
|
|
1163
|
-
const { LoomLauncher } = await import("./LoomLauncher-
|
|
1164
|
-
const { ClaudeContextManager } = await import("./ClaudeContextManager-
|
|
1164
|
+
const { LoomLauncher } = await import("./LoomLauncher-V54ENBEF.js");
|
|
1165
|
+
const { ClaudeContextManager } = await import("./ClaudeContextManager-ZH6LEA5I.js");
|
|
1165
1166
|
const claudeContext = new ClaudeContextManager(void 0, void 0, this.settings);
|
|
1166
1167
|
const launcher = new LoomLauncher(claudeContext, this.settings);
|
|
1167
1168
|
await launcher.launchLoom({
|
|
@@ -1223,12 +1224,13 @@ ${issueData.body}` : "";
|
|
|
1223
1224
|
prUrls,
|
|
1224
1225
|
capabilities,
|
|
1225
1226
|
...((_m = input.options) == null ? void 0 : _m.oneShot) && { oneShot: input.options.oneShot },
|
|
1226
|
-
...((_n = input.options) == null ? void 0 : _n.
|
|
1227
|
-
...((_o = input.options) == null ? void 0 : _o.
|
|
1227
|
+
...((_n = input.options) == null ? void 0 : _n.dangerouslySkipPermissions) && { dangerouslySkipPermissions: true },
|
|
1228
|
+
...((_o = input.options) == null ? void 0 : _o.complexity) && { complexity: input.options.complexity },
|
|
1229
|
+
...((_p = input.options) == null ? void 0 : _p.childIssueNumbers) && input.options.childIssueNumbers.length > 0 && { childIssueNumbers: input.options.childIssueNumbers },
|
|
1228
1230
|
...input.parentLoom && { parentLoom: input.parentLoom }
|
|
1229
1231
|
};
|
|
1230
1232
|
await this.metadataManager.writeMetadata(worktreePath, metadataInput);
|
|
1231
|
-
} else if ((
|
|
1233
|
+
} else if ((_q = input.options) == null ? void 0 : _q.complexity) {
|
|
1232
1234
|
await this.metadataManager.updateMetadata(worktreePath, {
|
|
1233
1235
|
complexity: input.options.complexity
|
|
1234
1236
|
});
|
|
@@ -1728,14 +1730,15 @@ var DatabaseManager = class {
|
|
|
1728
1730
|
return null;
|
|
1729
1731
|
}
|
|
1730
1732
|
if (!await this.provider.isCliAvailable()) {
|
|
1731
|
-
getLogger().warn(
|
|
1732
|
-
getLogger().warn(
|
|
1733
|
+
getLogger().warn("Skipping database branch creation: Neon CLI not available");
|
|
1734
|
+
getLogger().warn("Install with: npm install -g neonctl");
|
|
1733
1735
|
return null;
|
|
1734
1736
|
}
|
|
1735
1737
|
try {
|
|
1736
1738
|
const isAuth = await this.provider.isAuthenticated(cwd);
|
|
1737
1739
|
if (!isAuth) {
|
|
1738
|
-
getLogger().warn(
|
|
1740
|
+
getLogger().warn("Skipping database branch creation: Not authenticated with Neon CLI");
|
|
1741
|
+
getLogger().warn("Run: neon auth");
|
|
1739
1742
|
return null;
|
|
1740
1743
|
}
|
|
1741
1744
|
} catch (error) {
|
|
@@ -1783,24 +1786,24 @@ var DatabaseManager = class {
|
|
|
1783
1786
|
};
|
|
1784
1787
|
}
|
|
1785
1788
|
if (!await this.provider.isCliAvailable()) {
|
|
1786
|
-
getLogger().info(
|
|
1789
|
+
getLogger().info("Skipping database branch deletion: CLI tool not available");
|
|
1787
1790
|
return {
|
|
1788
1791
|
success: false,
|
|
1789
1792
|
deleted: false,
|
|
1790
1793
|
notFound: true,
|
|
1791
|
-
error:
|
|
1794
|
+
error: "CLI tool not available",
|
|
1792
1795
|
branchName
|
|
1793
1796
|
};
|
|
1794
1797
|
}
|
|
1795
1798
|
try {
|
|
1796
1799
|
const isAuth = await this.provider.isAuthenticated(cwd);
|
|
1797
1800
|
if (!isAuth) {
|
|
1798
|
-
getLogger().warn(
|
|
1801
|
+
getLogger().warn("Skipping database branch deletion: Not authenticated with DB Provider");
|
|
1799
1802
|
return {
|
|
1800
1803
|
success: false,
|
|
1801
1804
|
deleted: false,
|
|
1802
1805
|
notFound: false,
|
|
1803
|
-
error:
|
|
1806
|
+
error: "Not authenticated with DB Provider",
|
|
1804
1807
|
branchName
|
|
1805
1808
|
};
|
|
1806
1809
|
}
|
|
@@ -1908,4 +1911,4 @@ export {
|
|
|
1908
1911
|
CLIIsolationManager,
|
|
1909
1912
|
DatabaseManager
|
|
1910
1913
|
};
|
|
1911
|
-
//# sourceMappingURL=chunk-
|
|
1914
|
+
//# sourceMappingURL=chunk-55NTREIU.js.map
|