@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.
Files changed (173) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +3 -18
  3. package/dist/{ClaudeContextManager-RRGREEZQ.js → ClaudeContextManager-ZH6LEA5I.js} +5 -5
  4. package/dist/{ClaudeService-LEPW6QAC.js → ClaudeService-YR66WXZN.js} +4 -4
  5. package/dist/{IssueTrackerFactory-KE2BDCLC.js → IssueTrackerFactory-O2ZBA666.js} +3 -3
  6. package/dist/{LoomLauncher-GKQMR5E6.js → LoomLauncher-V54ENBEF.js} +5 -5
  7. package/dist/{MetadataManager-V4LSJ2PB.js → MetadataManager-HHE6LQF2.js} +2 -2
  8. package/dist/{PromptTemplateManager-I75WKXM4.js → PromptTemplateManager-4RFELNYY.js} +2 -2
  9. package/dist/README.md +3 -18
  10. package/dist/{SettingsManager-KQU7OX7G.js → SettingsManager-SLSYEYDZ.js} +4 -4
  11. package/dist/agents/iloom-artifact-reviewer.md +1 -0
  12. package/dist/agents/iloom-code-reviewer.md +21 -0
  13. package/dist/agents/iloom-issue-analyze-and-plan.md +30 -12
  14. package/dist/agents/iloom-issue-analyzer.md +32 -7
  15. package/dist/agents/iloom-issue-complexity-evaluator.md +32 -12
  16. package/dist/agents/iloom-issue-implementer.md +31 -12
  17. package/dist/agents/iloom-issue-planner.md +30 -12
  18. package/dist/agents/iloom-wave-verifier.md +177 -4
  19. package/dist/{build-V3KADFMO.js → build-ZTGWDHWU.js} +8 -8
  20. package/dist/{chunk-VVQQIG64.js → chunk-55NTREIU.js} +33 -30
  21. package/dist/chunk-55NTREIU.js.map +1 -0
  22. package/dist/{chunk-AYLC633W.js → chunk-7TN5VW4I.js} +65 -7
  23. package/dist/chunk-7TN5VW4I.js.map +1 -0
  24. package/dist/{chunk-RFCAPHL5.js → chunk-C2BVNJW5.js} +2 -2
  25. package/dist/{chunk-3XEXT35Z.js → chunk-E5OM25WK.js} +3 -3
  26. package/dist/{chunk-ZUIFO7B4.js → chunk-ERMEYFT6.js} +7 -2
  27. package/dist/chunk-ERMEYFT6.js.map +1 -0
  28. package/dist/{chunk-WGUGB54H.js → chunk-F5NKWLMQ.js} +21 -24
  29. package/dist/chunk-F5NKWLMQ.js.map +1 -0
  30. package/dist/{chunk-TN2D2RX7.js → chunk-G2DGDCDP.js} +33 -224
  31. package/dist/chunk-G2DGDCDP.js.map +1 -0
  32. package/dist/{chunk-NUUFP53X.js → chunk-GPBX2BY2.js} +2 -2
  33. package/dist/{chunk-SN4S5CWL.js → chunk-GQDVH6FA.js} +2 -2
  34. package/dist/{chunk-YUOVWWJX.js → chunk-HKEXRZMU.js} +5 -310
  35. package/dist/chunk-HKEXRZMU.js.map +1 -0
  36. package/dist/{chunk-TAEVA4QR.js → chunk-HWDQRW3O.js} +3 -3
  37. package/dist/chunk-HWDQRW3O.js.map +1 -0
  38. package/dist/{chunk-KQSV7FOG.js → chunk-J5JOJPK3.js} +2 -2
  39. package/dist/{chunk-PD75ZCFT.js → chunk-KCAWSZUO.js} +18 -17
  40. package/dist/chunk-KCAWSZUO.js.map +1 -0
  41. package/dist/{chunk-QNPJXO53.js → chunk-KGOBNC5A.js} +4 -4
  42. package/dist/{chunk-H3T3EPF3.js → chunk-LNY2Y32V.js} +2 -2
  43. package/dist/{chunk-7RCUWU3I.js → chunk-MRPIDNZU.js} +1 -1
  44. package/dist/chunk-MRPIDNZU.js.map +1 -0
  45. package/dist/{chunk-QQULYI2S.js → chunk-N6DY47YN.js} +80 -45
  46. package/dist/chunk-N6DY47YN.js.map +1 -0
  47. package/dist/{chunk-VIQOQ463.js → chunk-OLJ54WGW.js} +15 -10
  48. package/dist/chunk-OLJ54WGW.js.map +1 -0
  49. package/dist/{chunk-4VQXMEEP.js → chunk-PPQ5LV7U.js} +3 -3
  50. package/dist/{chunk-4VQXMEEP.js.map → chunk-PPQ5LV7U.js.map} +1 -1
  51. package/dist/{chunk-QED2WB2D.js → chunk-PS6K2AOV.js} +5 -5
  52. package/dist/{chunk-JD3K2344.js → chunk-QNRXRSKC.js} +36 -3
  53. package/dist/chunk-QNRXRSKC.js.map +1 -0
  54. package/dist/{chunk-Q7VXHJP6.js → chunk-SM3BCHYB.js} +5 -5
  55. package/dist/{chunk-SA446KA2.js → chunk-T4KFKKEB.js} +7 -7
  56. package/dist/{chunk-XCP2WDYA.js → chunk-T4NESGYB.js} +3 -3
  57. package/dist/{chunk-QXGM32TO.js → chunk-TJDKGKQV.js} +2 -2
  58. package/dist/{chunk-X5DRLONY.js → chunk-UXBVDD7U.js} +6 -6
  59. package/dist/{chunk-JDN4SPV3.js → chunk-WYDLOQYO.js} +2 -2
  60. package/dist/{chunk-4JZEQBWV.js → chunk-XIVLGWUX.js} +3 -1
  61. package/dist/chunk-XIVLGWUX.js.map +1 -0
  62. package/dist/{chunk-NTDY5AMO.js → chunk-ZEFTWM5Z.js} +2 -2
  63. package/dist/{cleanup-RJKLI47I.js → cleanup-BCVY7PEF.js} +22 -22
  64. package/dist/cleanup-BCVY7PEF.js.map +1 -0
  65. package/dist/cli.js +126 -105
  66. package/dist/cli.js.map +1 -1
  67. package/dist/{commit-SUHRUMDE.js → commit-L5JNBU4U.js} +8 -8
  68. package/dist/{compile-2MD346PO.js → compile-GPJOHXH4.js} +8 -8
  69. package/dist/{contribute-P4BMRY7C.js → contribute-QEGCI4PS.js} +4 -4
  70. package/dist/{dev-server-ZNTLWOL5.js → dev-server-67NPVWUN.js} +247 -31
  71. package/dist/dev-server-67NPVWUN.js.map +1 -0
  72. package/dist/{feedback-Q6WG2WX4.js → feedback-2LWXKLQZ.js} +4 -4
  73. package/dist/{git-TX2IEMB3.js → git-IS7AV3ED.js} +4 -4
  74. package/dist/hooks/iloom-hook.js +40 -2
  75. package/dist/{ignite-P644W2PK.js → ignite-VQDJQ37S.js} +12 -14
  76. package/dist/index.d.ts +73 -75
  77. package/dist/index.js +32 -32
  78. package/dist/index.js.map +1 -1
  79. package/dist/{init-5HFY7JG6.js → init-7SDJUAEZ.js} +8 -8
  80. package/dist/{install-deps-J4ALTM27.js → install-deps-NGSFDNUW.js} +8 -8
  81. package/dist/{issues-LZMIF22U.js → issues-4HQKEUP7.js} +5 -5
  82. package/dist/{lint-XIXKU22H.js → lint-C5FOVRXY.js} +8 -8
  83. package/dist/mcp/issue-management-server.js +19 -22
  84. package/dist/mcp/issue-management-server.js.map +1 -1
  85. package/dist/neon-helpers-LCZAN4U4.js +11 -0
  86. package/dist/{open-KUO35JIJ.js → open-WUTLRI6S.js} +19 -15
  87. package/dist/open-WUTLRI6S.js.map +1 -0
  88. package/dist/{plan-7CF56OIR.js → plan-GC3HF73T.js} +86 -66
  89. package/dist/plan-GC3HF73T.js.map +1 -0
  90. package/dist/{projects-L5AHUBGA.js → projects-3F6T3KZL.js} +2 -2
  91. package/dist/prompts/init-prompt.txt +40 -36
  92. package/dist/prompts/issue-prompt.txt +4 -1
  93. package/dist/prompts/plan-prompt.txt +97 -16
  94. package/dist/prompts/regular-prompt.txt +1 -1
  95. package/dist/prompts/swarm-orchestrator-prompt.txt +25 -12
  96. package/dist/{rebase-MAMWPA2L.js → rebase-CSGQICAP.js} +7 -7
  97. package/dist/{recap-IDBO3KM5.js → recap-CKGKFDJL.js} +7 -7
  98. package/dist/{run-RGZHCQ6M.js → run-3YL2IXXI.js} +19 -15
  99. package/dist/run-3YL2IXXI.js.map +1 -0
  100. package/dist/schema/settings.schema.json +35 -31
  101. package/dist/{shell-7ADCDFIV.js → shell-M2YYPNGV.js} +6 -6
  102. package/dist/{summary-7J2HORFD.js → summary-XR4CBJEG.js} +9 -9
  103. package/dist/{test-SRB7EWU6.js → test-ESDAHEVE.js} +8 -8
  104. package/dist/{test-git-G7ATVIXG.js → test-git-KWPLHYSI.js} +4 -4
  105. package/dist/{test-jira-Q2HPA522.js → test-jira-6NK7UHSV.js} +3 -3
  106. package/dist/{test-prefix-JMDGXR5A.js → test-prefix-VVODGHXP.js} +4 -4
  107. package/dist/{test-webserver-GZFVXBGD.js → test-webserver-AHXKC6H4.js} +6 -6
  108. package/dist/{vscode-3I7ISHUU.js → vscode-OY7HOVRO.js} +6 -6
  109. package/package.json +1 -1
  110. package/dist/chunk-4JZEQBWV.js.map +0 -1
  111. package/dist/chunk-7RCUWU3I.js.map +0 -1
  112. package/dist/chunk-AYLC633W.js.map +0 -1
  113. package/dist/chunk-JD3K2344.js.map +0 -1
  114. package/dist/chunk-PD75ZCFT.js.map +0 -1
  115. package/dist/chunk-QQULYI2S.js.map +0 -1
  116. package/dist/chunk-TAEVA4QR.js.map +0 -1
  117. package/dist/chunk-TN2D2RX7.js.map +0 -1
  118. package/dist/chunk-VIQOQ463.js.map +0 -1
  119. package/dist/chunk-VVQQIG64.js.map +0 -1
  120. package/dist/chunk-WGUGB54H.js.map +0 -1
  121. package/dist/chunk-YUOVWWJX.js.map +0 -1
  122. package/dist/chunk-ZUIFO7B4.js.map +0 -1
  123. package/dist/cleanup-RJKLI47I.js.map +0 -1
  124. package/dist/database-helpers-PRDFNDRO.js +0 -11
  125. package/dist/dev-server-ZNTLWOL5.js.map +0 -1
  126. package/dist/open-KUO35JIJ.js.map +0 -1
  127. package/dist/plan-7CF56OIR.js.map +0 -1
  128. package/dist/run-RGZHCQ6M.js.map +0 -1
  129. /package/dist/{ClaudeContextManager-RRGREEZQ.js.map → ClaudeContextManager-ZH6LEA5I.js.map} +0 -0
  130. /package/dist/{ClaudeService-LEPW6QAC.js.map → ClaudeService-YR66WXZN.js.map} +0 -0
  131. /package/dist/{IssueTrackerFactory-KE2BDCLC.js.map → IssueTrackerFactory-O2ZBA666.js.map} +0 -0
  132. /package/dist/{LoomLauncher-GKQMR5E6.js.map → LoomLauncher-V54ENBEF.js.map} +0 -0
  133. /package/dist/{MetadataManager-V4LSJ2PB.js.map → MetadataManager-HHE6LQF2.js.map} +0 -0
  134. /package/dist/{PromptTemplateManager-I75WKXM4.js.map → PromptTemplateManager-4RFELNYY.js.map} +0 -0
  135. /package/dist/{SettingsManager-KQU7OX7G.js.map → SettingsManager-SLSYEYDZ.js.map} +0 -0
  136. /package/dist/{build-V3KADFMO.js.map → build-ZTGWDHWU.js.map} +0 -0
  137. /package/dist/{chunk-RFCAPHL5.js.map → chunk-C2BVNJW5.js.map} +0 -0
  138. /package/dist/{chunk-3XEXT35Z.js.map → chunk-E5OM25WK.js.map} +0 -0
  139. /package/dist/{chunk-NUUFP53X.js.map → chunk-GPBX2BY2.js.map} +0 -0
  140. /package/dist/{chunk-SN4S5CWL.js.map → chunk-GQDVH6FA.js.map} +0 -0
  141. /package/dist/{chunk-KQSV7FOG.js.map → chunk-J5JOJPK3.js.map} +0 -0
  142. /package/dist/{chunk-QNPJXO53.js.map → chunk-KGOBNC5A.js.map} +0 -0
  143. /package/dist/{chunk-H3T3EPF3.js.map → chunk-LNY2Y32V.js.map} +0 -0
  144. /package/dist/{chunk-QED2WB2D.js.map → chunk-PS6K2AOV.js.map} +0 -0
  145. /package/dist/{chunk-Q7VXHJP6.js.map → chunk-SM3BCHYB.js.map} +0 -0
  146. /package/dist/{chunk-SA446KA2.js.map → chunk-T4KFKKEB.js.map} +0 -0
  147. /package/dist/{chunk-XCP2WDYA.js.map → chunk-T4NESGYB.js.map} +0 -0
  148. /package/dist/{chunk-QXGM32TO.js.map → chunk-TJDKGKQV.js.map} +0 -0
  149. /package/dist/{chunk-X5DRLONY.js.map → chunk-UXBVDD7U.js.map} +0 -0
  150. /package/dist/{chunk-JDN4SPV3.js.map → chunk-WYDLOQYO.js.map} +0 -0
  151. /package/dist/{chunk-NTDY5AMO.js.map → chunk-ZEFTWM5Z.js.map} +0 -0
  152. /package/dist/{commit-SUHRUMDE.js.map → commit-L5JNBU4U.js.map} +0 -0
  153. /package/dist/{compile-2MD346PO.js.map → compile-GPJOHXH4.js.map} +0 -0
  154. /package/dist/{contribute-P4BMRY7C.js.map → contribute-QEGCI4PS.js.map} +0 -0
  155. /package/dist/{feedback-Q6WG2WX4.js.map → feedback-2LWXKLQZ.js.map} +0 -0
  156. /package/dist/{database-helpers-PRDFNDRO.js.map → git-IS7AV3ED.js.map} +0 -0
  157. /package/dist/{git-TX2IEMB3.js.map → ignite-VQDJQ37S.js.map} +0 -0
  158. /package/dist/{init-5HFY7JG6.js.map → init-7SDJUAEZ.js.map} +0 -0
  159. /package/dist/{install-deps-J4ALTM27.js.map → install-deps-NGSFDNUW.js.map} +0 -0
  160. /package/dist/{issues-LZMIF22U.js.map → issues-4HQKEUP7.js.map} +0 -0
  161. /package/dist/{lint-XIXKU22H.js.map → lint-C5FOVRXY.js.map} +0 -0
  162. /package/dist/{ignite-P644W2PK.js.map → neon-helpers-LCZAN4U4.js.map} +0 -0
  163. /package/dist/{projects-L5AHUBGA.js.map → projects-3F6T3KZL.js.map} +0 -0
  164. /package/dist/{rebase-MAMWPA2L.js.map → rebase-CSGQICAP.js.map} +0 -0
  165. /package/dist/{recap-IDBO3KM5.js.map → recap-CKGKFDJL.js.map} +0 -0
  166. /package/dist/{shell-7ADCDFIV.js.map → shell-M2YYPNGV.js.map} +0 -0
  167. /package/dist/{summary-7J2HORFD.js.map → summary-XR4CBJEG.js.map} +0 -0
  168. /package/dist/{test-SRB7EWU6.js.map → test-ESDAHEVE.js.map} +0 -0
  169. /package/dist/{test-git-G7ATVIXG.js.map → test-git-KWPLHYSI.js.map} +0 -0
  170. /package/dist/{test-jira-Q2HPA522.js.map → test-jira-6NK7UHSV.js.map} +0 -0
  171. /package/dist/{test-prefix-JMDGXR5A.js.map → test-prefix-VVODGHXP.js.map} +0 -0
  172. /package/dist/{test-webserver-GZFVXBGD.js.map → test-webserver-AHXKC6H4.js.map} +0 -0
  173. /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 SWARM_MODE}}const comment = await mcp__issue_management__create_comment({
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}}{{/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 SWARM_MODE}}await mcp__issue_management__update_comment({
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}}{{/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 SWARM_MODE}}const comment = await mcp__issue_management__create_comment({
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}}{{/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 SWARM_MODE}}await mcp__issue_management__update_comment({
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}}{{/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
- ### Step 5: Return Structured Report
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
- ### Overall Status: [ALL_PASSED | PARTIALLY_FIXED | FAILURES_REMAIN]
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-QED2WB2D.js";
5
- import "./chunk-SN4S5CWL.js";
6
- import "./chunk-VIQOQ463.js";
7
- import "./chunk-4VQXMEEP.js";
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-QNPJXO53.js";
10
- import "./chunk-WGUGB54H.js";
11
- import "./chunk-4JZEQBWV.js";
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-V3KADFMO.js.map
27
+ //# sourceMappingURL=build-ZTGWDHWU.js.map
@@ -2,18 +2,18 @@
2
2
  import {
3
3
  PRManager,
4
4
  VCSProviderFactory
5
- } from "./chunk-KQSV7FOG.js";
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-ZUIFO7B4.js";
12
+ } from "./chunk-ERMEYFT6.js";
13
13
  import {
14
14
  installDependencies,
15
15
  runScript
16
- } from "./chunk-VIQOQ463.js";
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-QNPJXO53.js";
46
+ } from "./chunk-KGOBNC5A.js";
47
47
  import {
48
48
  MetadataManager
49
- } from "./chunk-4JZEQBWV.js";
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-GKQMR5E6.js");
447
- const { ClaudeContextManager } = await import("./ClaudeContextManager-RRGREEZQ.js");
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.complexity) && { complexity: input.options.complexity },
513
- ...((_r = input.options) == null ? void 0 : _r.childIssueNumbers) && input.options.childIssueNumbers.length > 0 && { childIssueNumbers: input.options.childIssueNumbers },
514
- ...((_s = input.options) == null ? void 0 : _s.childIssues) && input.options.childIssues.length > 0 && { childIssues: input.options.childIssues },
515
- ...((_t = input.options) == null ? void 0 : _t.dependencyMap) && Object.keys(input.options.dependencyMap).length > 0 && { dependencyMap: input.options.dependencyMap },
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-TX2IEMB3.js");
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 !== "pr" && branchExistedLocally) {
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-GKQMR5E6.js");
1164
- const { ClaudeContextManager } = await import("./ClaudeContextManager-RRGREEZQ.js");
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.complexity) && { complexity: input.options.complexity },
1227
- ...((_o = input.options) == null ? void 0 : _o.childIssueNumbers) && input.options.childIssueNumbers.length > 0 && { childIssueNumbers: input.options.childIssueNumbers },
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 ((_p = input.options) == null ? void 0 : _p.complexity) {
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(`Skipping database branch creation: ${this.provider.displayName} CLI not available`);
1732
- getLogger().warn(`Install with: ${this.provider.installHint}`);
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(`Skipping database branch creation: Not authenticated with ${this.provider.displayName} CLI`);
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(`Skipping database branch deletion: ${this.provider.displayName} CLI not available. Install with: ${this.provider.installHint}`);
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: `${this.provider.displayName} CLI not available`,
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(`Skipping database branch deletion: Not authenticated with ${this.provider.displayName}`);
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: `Not authenticated with ${this.provider.displayName}`,
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-VVQQIG64.js.map
1914
+ //# sourceMappingURL=chunk-55NTREIU.js.map