@iloom/cli 0.13.0-beta.0 → 0.13.1

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-Q7VXHJP6.js → chunk-EHAITKLS.js} +10 -6
  27. package/dist/{chunk-Q7VXHJP6.js.map → chunk-EHAITKLS.js.map} +1 -1
  28. package/dist/{chunk-ZUIFO7B4.js → chunk-ERMEYFT6.js} +7 -2
  29. package/dist/chunk-ERMEYFT6.js.map +1 -0
  30. package/dist/{chunk-WGUGB54H.js → chunk-F5NKWLMQ.js} +21 -24
  31. package/dist/chunk-F5NKWLMQ.js.map +1 -0
  32. package/dist/{chunk-TN2D2RX7.js → chunk-G2DGDCDP.js} +33 -224
  33. package/dist/chunk-G2DGDCDP.js.map +1 -0
  34. package/dist/{chunk-NUUFP53X.js → chunk-GPBX2BY2.js} +2 -2
  35. package/dist/{chunk-SN4S5CWL.js → chunk-GQDVH6FA.js} +2 -2
  36. package/dist/{chunk-YUOVWWJX.js → chunk-HKEXRZMU.js} +5 -310
  37. package/dist/chunk-HKEXRZMU.js.map +1 -0
  38. package/dist/{chunk-TAEVA4QR.js → chunk-HWDQRW3O.js} +3 -3
  39. package/dist/chunk-HWDQRW3O.js.map +1 -0
  40. package/dist/{chunk-KQSV7FOG.js → chunk-J5JOJPK3.js} +2 -2
  41. package/dist/{chunk-PD75ZCFT.js → chunk-KCAWSZUO.js} +18 -17
  42. package/dist/chunk-KCAWSZUO.js.map +1 -0
  43. package/dist/{chunk-QNPJXO53.js → chunk-KGOBNC5A.js} +4 -4
  44. package/dist/{chunk-H3T3EPF3.js → chunk-LNY2Y32V.js} +2 -2
  45. package/dist/{chunk-7RCUWU3I.js → chunk-MRPIDNZU.js} +1 -1
  46. package/dist/chunk-MRPIDNZU.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-QQULYI2S.js → chunk-P5MNWBLH.js} +108 -47
  50. package/dist/chunk-P5MNWBLH.js.map +1 -0
  51. package/dist/{chunk-4VQXMEEP.js → chunk-PPQ5LV7U.js} +3 -3
  52. package/dist/{chunk-4VQXMEEP.js.map → chunk-PPQ5LV7U.js.map} +1 -1
  53. package/dist/{chunk-QED2WB2D.js → chunk-PS6K2AOV.js} +5 -5
  54. package/dist/{chunk-JD3K2344.js → chunk-QNRXRSKC.js} +36 -3
  55. package/dist/chunk-QNRXRSKC.js.map +1 -0
  56. package/dist/{chunk-SA446KA2.js → chunk-T4KFKKEB.js} +7 -7
  57. package/dist/{chunk-XCP2WDYA.js → chunk-T4NESGYB.js} +3 -3
  58. package/dist/{chunk-QXGM32TO.js → chunk-TJDKGKQV.js} +2 -2
  59. package/dist/{chunk-X5DRLONY.js → chunk-UXBVDD7U.js} +6 -6
  60. package/dist/{chunk-JDN4SPV3.js → chunk-WYDLOQYO.js} +2 -2
  61. package/dist/{chunk-4JZEQBWV.js → chunk-XIVLGWUX.js} +3 -1
  62. package/dist/chunk-XIVLGWUX.js.map +1 -0
  63. package/dist/{chunk-NTDY5AMO.js → chunk-ZEFTWM5Z.js} +2 -2
  64. package/dist/{cleanup-RJKLI47I.js → cleanup-BCVY7PEF.js} +22 -22
  65. package/dist/cleanup-BCVY7PEF.js.map +1 -0
  66. package/dist/cli.js +136 -105
  67. package/dist/cli.js.map +1 -1
  68. package/dist/{commit-SUHRUMDE.js → commit-L5JNBU4U.js} +8 -8
  69. package/dist/{compile-2MD346PO.js → compile-GPJOHXH4.js} +8 -8
  70. package/dist/{contribute-P4BMRY7C.js → contribute-QEGCI4PS.js} +4 -4
  71. package/dist/{dev-server-ZNTLWOL5.js → dev-server-UQKNKU2S.js} +249 -31
  72. package/dist/dev-server-UQKNKU2S.js.map +1 -0
  73. package/dist/{feedback-Q6WG2WX4.js → feedback-2LWXKLQZ.js} +4 -4
  74. package/dist/{git-TX2IEMB3.js → git-IS7AV3ED.js} +4 -4
  75. package/dist/hooks/iloom-hook.js +40 -2
  76. package/dist/{ignite-P644W2PK.js → ignite-VQDJQ37S.js} +12 -14
  77. package/dist/index.d.ts +73 -75
  78. package/dist/index.js +32 -32
  79. package/dist/index.js.map +1 -1
  80. package/dist/{init-5HFY7JG6.js → init-7SDJUAEZ.js} +8 -8
  81. package/dist/{install-deps-J4ALTM27.js → install-deps-NGSFDNUW.js} +8 -8
  82. package/dist/{issues-LZMIF22U.js → issues-4HQKEUP7.js} +5 -5
  83. package/dist/{lint-XIXKU22H.js → lint-C5FOVRXY.js} +8 -8
  84. package/dist/mcp/issue-management-server.js +19 -22
  85. package/dist/mcp/issue-management-server.js.map +1 -1
  86. package/dist/neon-helpers-LCZAN4U4.js +11 -0
  87. package/dist/{open-KUO35JIJ.js → open-2HL6GV5F.js} +19 -15
  88. package/dist/open-2HL6GV5F.js.map +1 -0
  89. package/dist/{plan-7CF56OIR.js → plan-GC3HF73T.js} +86 -66
  90. package/dist/plan-GC3HF73T.js.map +1 -0
  91. package/dist/{projects-L5AHUBGA.js → projects-3F6T3KZL.js} +2 -2
  92. package/dist/prompts/init-prompt.txt +40 -36
  93. package/dist/prompts/issue-prompt.txt +4 -1
  94. package/dist/prompts/plan-prompt.txt +97 -16
  95. package/dist/prompts/regular-prompt.txt +1 -1
  96. package/dist/prompts/swarm-orchestrator-prompt.txt +25 -12
  97. package/dist/{rebase-MAMWPA2L.js → rebase-MLIN572O.js} +7 -7
  98. package/dist/{recap-IDBO3KM5.js → recap-CKGKFDJL.js} +7 -7
  99. package/dist/{run-RGZHCQ6M.js → run-CUNRQNZS.js} +19 -15
  100. package/dist/run-CUNRQNZS.js.map +1 -0
  101. package/dist/schema/settings.schema.json +35 -31
  102. package/dist/{shell-7ADCDFIV.js → shell-M2YYPNGV.js} +6 -6
  103. package/dist/{summary-7J2HORFD.js → summary-XR4CBJEG.js} +9 -9
  104. package/dist/{test-SRB7EWU6.js → test-ESDAHEVE.js} +8 -8
  105. package/dist/{test-git-G7ATVIXG.js → test-git-KWPLHYSI.js} +4 -4
  106. package/dist/{test-jira-Q2HPA522.js → test-jira-6NK7UHSV.js} +3 -3
  107. package/dist/{test-prefix-JMDGXR5A.js → test-prefix-VVODGHXP.js} +4 -4
  108. package/dist/{test-webserver-GZFVXBGD.js → test-webserver-AHXKC6H4.js} +6 -6
  109. package/dist/{vscode-3I7ISHUU.js → vscode-OY7HOVRO.js} +6 -6
  110. package/package.json +1 -1
  111. package/dist/chunk-4JZEQBWV.js.map +0 -1
  112. package/dist/chunk-7RCUWU3I.js.map +0 -1
  113. package/dist/chunk-AYLC633W.js.map +0 -1
  114. package/dist/chunk-JD3K2344.js.map +0 -1
  115. package/dist/chunk-PD75ZCFT.js.map +0 -1
  116. package/dist/chunk-QQULYI2S.js.map +0 -1
  117. package/dist/chunk-TAEVA4QR.js.map +0 -1
  118. package/dist/chunk-TN2D2RX7.js.map +0 -1
  119. package/dist/chunk-VIQOQ463.js.map +0 -1
  120. package/dist/chunk-VVQQIG64.js.map +0 -1
  121. package/dist/chunk-WGUGB54H.js.map +0 -1
  122. package/dist/chunk-YUOVWWJX.js.map +0 -1
  123. package/dist/chunk-ZUIFO7B4.js.map +0 -1
  124. package/dist/cleanup-RJKLI47I.js.map +0 -1
  125. package/dist/database-helpers-PRDFNDRO.js +0 -11
  126. package/dist/dev-server-ZNTLWOL5.js.map +0 -1
  127. package/dist/open-KUO35JIJ.js.map +0 -1
  128. package/dist/plan-7CF56OIR.js.map +0 -1
  129. package/dist/run-RGZHCQ6M.js.map +0 -1
  130. /package/dist/{ClaudeContextManager-RRGREEZQ.js.map → ClaudeContextManager-ZH6LEA5I.js.map} +0 -0
  131. /package/dist/{ClaudeService-LEPW6QAC.js.map → ClaudeService-YR66WXZN.js.map} +0 -0
  132. /package/dist/{IssueTrackerFactory-KE2BDCLC.js.map → IssueTrackerFactory-O2ZBA666.js.map} +0 -0
  133. /package/dist/{LoomLauncher-GKQMR5E6.js.map → LoomLauncher-V54ENBEF.js.map} +0 -0
  134. /package/dist/{MetadataManager-V4LSJ2PB.js.map → MetadataManager-HHE6LQF2.js.map} +0 -0
  135. /package/dist/{PromptTemplateManager-I75WKXM4.js.map → PromptTemplateManager-4RFELNYY.js.map} +0 -0
  136. /package/dist/{SettingsManager-KQU7OX7G.js.map → SettingsManager-SLSYEYDZ.js.map} +0 -0
  137. /package/dist/{build-V3KADFMO.js.map → build-ZTGWDHWU.js.map} +0 -0
  138. /package/dist/{chunk-RFCAPHL5.js.map → chunk-C2BVNJW5.js.map} +0 -0
  139. /package/dist/{chunk-3XEXT35Z.js.map → chunk-E5OM25WK.js.map} +0 -0
  140. /package/dist/{chunk-NUUFP53X.js.map → chunk-GPBX2BY2.js.map} +0 -0
  141. /package/dist/{chunk-SN4S5CWL.js.map → chunk-GQDVH6FA.js.map} +0 -0
  142. /package/dist/{chunk-KQSV7FOG.js.map → chunk-J5JOJPK3.js.map} +0 -0
  143. /package/dist/{chunk-QNPJXO53.js.map → chunk-KGOBNC5A.js.map} +0 -0
  144. /package/dist/{chunk-H3T3EPF3.js.map → chunk-LNY2Y32V.js.map} +0 -0
  145. /package/dist/{chunk-QED2WB2D.js.map → chunk-PS6K2AOV.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-MLIN572O.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
package/LICENSE CHANGED
@@ -20,7 +20,7 @@ it within your organization. What is prohibited is redistributing or offering
20
20
  access to this software (in original or modified form) as part of something
21
21
  you sell or provide to others.
22
22
 
23
- Change Date: 2030-03-10
23
+ Change Date: 2030-03-16
24
24
  Change License: Apache License 2.0
25
25
 
26
26
  For clarity, on or after the Change Date, the Licensed Work will
package/README.md CHANGED
@@ -97,7 +97,7 @@ Each loom is a fully isolated container for your work:
97
97
 
98
98
  * **Git Worktree:** A separate filesystem at ~/project-looms/issue-25/. No stashing, no branch switching overhead.
99
99
 
100
- * **Database Branch:** (Neon and Supabase support) Schema changes in this loom are isolated—they won't break your main environment or your other active looms.
100
+ * **Database Branch:** (Neon support) Schema changes in this loom are isolated—they won't break your main environment or your other active looms.
101
101
 
102
102
  * **Environment Variables:** Each loom has its own environment files (`.env`, `.env.local`, `.env.development`, `.env.development.local`). Uses `development` by default, override with `DOTENV_FLOW_NODE_ENV`. See [Secret Storage Limitations](#multi-language-project-support) for frameworks with encrypted credentials.
103
103
 
@@ -153,7 +153,7 @@ Configuration
153
153
 
154
154
  ### 1. Interactive Setup (Recommended)
155
155
 
156
- The easiest way to configure iloom is the interactive wizard. It guides you through setting up your environment (GitHub/Linear, Neon/Supabase, IDE).
156
+ The easiest way to configure iloom is the interactive wizard. It guides you through setting up your environment (GitHub/Linear, Neon, IDE).
157
157
 
158
158
  You can even use natural language to jump-start the process:
159
159
 
@@ -206,21 +206,6 @@ This example shows how to configure a project-wide default (e.g., GitHub remote)
206
206
  }
207
207
  ```
208
208
 
209
- Or, if using Supabase (requires a paid plan):
210
-
211
- ```json
212
- {
213
- "databaseProviders": {
214
- "supabase": {
215
- "projectRef": "abcdefghijklmnop",
216
- "parentBranch": "main"
217
- }
218
- }
219
- }
220
- ```
221
-
222
- > Only one database provider can be active at a time. See [Database Branching](docs/iloom-commands.md#database-branching) for full details.
223
-
224
209
  **.iloom/settings.local.json (Gitignored)**
225
210
 
226
211
  ```json
@@ -895,7 +880,7 @@ License & Name
895
880
 
896
881
  * ❌ You cannot resell iloom itself as a product or SaaS.
897
882
 
898
- * Converts to Apache 2.0 on 2030-03-10.
883
+ * Converts to Apache 2.0 on 2030-03-16.
899
884
 
900
885
 
901
886
  See [LICENSE](https://raw.githubusercontent.com/iloom-ai/iloom-cli/main/LICENSE) for complete terms.
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ClaudeContextManager
4
- } from "./chunk-JDN4SPV3.js";
5
- import "./chunk-XCP2WDYA.js";
6
- import "./chunk-7RCUWU3I.js";
4
+ } from "./chunk-WYDLOQYO.js";
5
+ import "./chunk-T4NESGYB.js";
6
+ import "./chunk-MRPIDNZU.js";
7
7
  import "./chunk-DDHWZNGL.js";
8
- import "./chunk-WGUGB54H.js";
8
+ import "./chunk-F5NKWLMQ.js";
9
9
  import "./chunk-FTYWGQFM.js";
10
10
  import "./chunk-VRPPI6GU.js";
11
11
  export {
12
12
  ClaudeContextManager
13
13
  };
14
- //# sourceMappingURL=ClaudeContextManager-RRGREEZQ.js.map
14
+ //# sourceMappingURL=ClaudeContextManager-ZH6LEA5I.js.map
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ClaudeService
4
- } from "./chunk-XCP2WDYA.js";
5
- import "./chunk-7RCUWU3I.js";
4
+ } from "./chunk-T4NESGYB.js";
5
+ import "./chunk-MRPIDNZU.js";
6
6
  import "./chunk-DDHWZNGL.js";
7
- import "./chunk-WGUGB54H.js";
7
+ import "./chunk-F5NKWLMQ.js";
8
8
  import "./chunk-FTYWGQFM.js";
9
9
  import "./chunk-VRPPI6GU.js";
10
10
  export {
11
11
  ClaudeService
12
12
  };
13
- //# sourceMappingURL=ClaudeService-LEPW6QAC.js.map
13
+ //# sourceMappingURL=ClaudeService-YR66WXZN.js.map
@@ -1,15 +1,15 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  IssueTrackerFactory
4
- } from "./chunk-NUUFP53X.js";
4
+ } from "./chunk-GPBX2BY2.js";
5
5
  import "./chunk-DMSL5BAP.js";
6
6
  import "./chunk-D4Q7T5KD.js";
7
7
  import "./chunk-KV4NU3RP.js";
8
8
  import "./chunk-NPVA65KS.js";
9
- import "./chunk-WGUGB54H.js";
9
+ import "./chunk-F5NKWLMQ.js";
10
10
  import "./chunk-FTYWGQFM.js";
11
11
  import "./chunk-VRPPI6GU.js";
12
12
  export {
13
13
  IssueTrackerFactory
14
14
  };
15
- //# sourceMappingURL=IssueTrackerFactory-KE2BDCLC.js.map
15
+ //# sourceMappingURL=IssueTrackerFactory-O2ZBA666.js.map
@@ -4,9 +4,9 @@ import {
4
4
  } from "./chunk-CE676WCN.js";
5
5
  import {
6
6
  ClaudeContextManager
7
- } from "./chunk-JDN4SPV3.js";
8
- import "./chunk-XCP2WDYA.js";
9
- import "./chunk-7RCUWU3I.js";
7
+ } from "./chunk-WYDLOQYO.js";
8
+ import "./chunk-T4NESGYB.js";
9
+ import "./chunk-MRPIDNZU.js";
10
10
  import {
11
11
  getExecutablePath
12
12
  } from "./chunk-GYCR2LOU.js";
@@ -15,7 +15,7 @@ import {
15
15
  hexToRgb
16
16
  } from "./chunk-OIVFHJOA.js";
17
17
  import "./chunk-DDHWZNGL.js";
18
- import "./chunk-WGUGB54H.js";
18
+ import "./chunk-F5NKWLMQ.js";
19
19
  import {
20
20
  getLogger
21
21
  } from "./chunk-FTYWGQFM.js";
@@ -255,4 +255,4 @@ var LoomLauncher = class {
255
255
  export {
256
256
  LoomLauncher
257
257
  };
258
- //# sourceMappingURL=LoomLauncher-GKQMR5E6.js.map
258
+ //# sourceMappingURL=LoomLauncher-V54ENBEF.js.map
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  MetadataManager
4
- } from "./chunk-4JZEQBWV.js";
4
+ } from "./chunk-XIVLGWUX.js";
5
5
  import "./chunk-FTYWGQFM.js";
6
6
  import "./chunk-VRPPI6GU.js";
7
7
  export {
8
8
  MetadataManager
9
9
  };
10
- //# sourceMappingURL=MetadataManager-V4LSJ2PB.js.map
10
+ //# sourceMappingURL=MetadataManager-HHE6LQF2.js.map
@@ -2,10 +2,10 @@
2
2
  import {
3
3
  PromptTemplateManager,
4
4
  buildReviewTemplateVariables
5
- } from "./chunk-7RCUWU3I.js";
5
+ } from "./chunk-MRPIDNZU.js";
6
6
  import "./chunk-VRPPI6GU.js";
7
7
  export {
8
8
  PromptTemplateManager,
9
9
  buildReviewTemplateVariables
10
10
  };
11
- //# sourceMappingURL=PromptTemplateManager-I75WKXM4.js.map
11
+ //# sourceMappingURL=PromptTemplateManager-4RFELNYY.js.map
package/dist/README.md CHANGED
@@ -97,7 +97,7 @@ Each loom is a fully isolated container for your work:
97
97
 
98
98
  * **Git Worktree:** A separate filesystem at ~/project-looms/issue-25/. No stashing, no branch switching overhead.
99
99
 
100
- * **Database Branch:** (Neon and Supabase support) Schema changes in this loom are isolated—they won't break your main environment or your other active looms.
100
+ * **Database Branch:** (Neon support) Schema changes in this loom are isolated—they won't break your main environment or your other active looms.
101
101
 
102
102
  * **Environment Variables:** Each loom has its own environment files (`.env`, `.env.local`, `.env.development`, `.env.development.local`). Uses `development` by default, override with `DOTENV_FLOW_NODE_ENV`. See [Secret Storage Limitations](#multi-language-project-support) for frameworks with encrypted credentials.
103
103
 
@@ -153,7 +153,7 @@ Configuration
153
153
 
154
154
  ### 1. Interactive Setup (Recommended)
155
155
 
156
- The easiest way to configure iloom is the interactive wizard. It guides you through setting up your environment (GitHub/Linear, Neon/Supabase, IDE).
156
+ The easiest way to configure iloom is the interactive wizard. It guides you through setting up your environment (GitHub/Linear, Neon, IDE).
157
157
 
158
158
  You can even use natural language to jump-start the process:
159
159
 
@@ -206,21 +206,6 @@ This example shows how to configure a project-wide default (e.g., GitHub remote)
206
206
  }
207
207
  ```
208
208
 
209
- Or, if using Supabase (requires a paid plan):
210
-
211
- ```json
212
- {
213
- "databaseProviders": {
214
- "supabase": {
215
- "projectRef": "abcdefghijklmnop",
216
- "parentBranch": "main"
217
- }
218
- }
219
- }
220
- ```
221
-
222
- > Only one database provider can be active at a time. See [Database Branching](docs/iloom-commands.md#database-branching) for full details.
223
-
224
209
  **.iloom/settings.local.json (Gitignored)**
225
210
 
226
211
  ```json
@@ -895,7 +880,7 @@ License & Name
895
880
 
896
881
  * ❌ You cannot resell iloom itself as a product or SaaS.
897
882
 
898
- * Converts to Apache 2.0 on 2030-03-10.
883
+ * Converts to Apache 2.0 on 2030-03-16.
899
884
 
900
885
 
901
886
  See [LICENSE](https://raw.githubusercontent.com/iloom-ai/iloom-cli/main/LICENSE) for complete terms.
@@ -14,14 +14,14 @@ import {
14
14
  SettingsManager,
15
15
  SpinAgentSettingsSchema,
16
16
  SummarySettingsSchema,
17
- SupabaseSettingsSchema,
17
+ VALID_CLAUDE_MODELS,
18
18
  WorkflowPermissionSchema,
19
19
  WorkflowPermissionSchemaNoDefaults,
20
20
  WorkflowsSettingsSchema,
21
21
  WorkflowsSettingsSchemaNoDefaults,
22
22
  mergeModeValues,
23
23
  redactSensitiveFields
24
- } from "./chunk-WGUGB54H.js";
24
+ } from "./chunk-F5NKWLMQ.js";
25
25
  import "./chunk-VRPPI6GU.js";
26
26
  export {
27
27
  AgentSettingsSchema,
@@ -38,7 +38,7 @@ export {
38
38
  SettingsManager,
39
39
  SpinAgentSettingsSchema,
40
40
  SummarySettingsSchema,
41
- SupabaseSettingsSchema,
41
+ VALID_CLAUDE_MODELS,
42
42
  WorkflowPermissionSchema,
43
43
  WorkflowPermissionSchemaNoDefaults,
44
44
  WorkflowsSettingsSchema,
@@ -46,4 +46,4 @@ export {
46
46
  mergeModeValues,
47
47
  redactSensitiveFields
48
48
  };
49
- //# sourceMappingURL=SettingsManager-KQU7OX7G.js.map
49
+ //# sourceMappingURL=SettingsManager-SLSYEYDZ.js.map
@@ -16,6 +16,7 @@ You are a skeptical senior staff engineer reviewing work produced by AI agents b
16
16
  - **Concise output**: Return structured review results suitable for the orchestrator.
17
17
  - **Autonomous decisions**: If improvements are needed, provide actionable feedback in the response.
18
18
  - **No state to done**: Do NOT call `recap.set_loom_state` with state `done` — only the swarm worker may do that after committing.
19
+ - **Efficiency**: Maximize parallel tool calls. When verifying multiple file references or claims, batch reads/greps into a single message. Minimize text narration between tool calls.
19
20
  {{/if}}
20
21
 
21
22
  {{#if HAS_ARTIFACT_REVIEW_GEMINI}}
@@ -55,6 +55,13 @@ Codex review configured with model: {{REVIEW_CODEX_MODEL}}
55
55
  {{#if HAS_REVIEW_CLAUDE}}
56
56
  {{#unless HAS_REVIEW_GEMINI}}
57
57
  {{#unless HAS_REVIEW_CODEX}}
58
+ ### Pre-provided Diff Check
59
+
60
+ **FIRST**: Check whether the invocation prompt contains a `## Pre-gathered Diff` section.
61
+
62
+ - **If yes**: Use that diff directly as your working diff. Skip all of Step 0 (diff gathering) and Step 1 (context gathering from git). The diff and CLAUDE.md content have already been provided. Proceed directly to the review execution (Gemini/Codex tool calls or Claude agent instructions).
63
+ - **If no**: Proceed with normal flow below.
64
+
58
65
  ## Claude-Only Configuration Detected
59
66
 
60
67
  **IMPORTANT: You are a SUBAGENT. You were spawned by an orchestrator (the main Claude session). The orchestrator has the Task tool and can spawn sub-agents - you cannot.**
@@ -265,6 +272,13 @@ Summary: X critical, Y warnings, Z suggestions
265
272
  {{#if HAS_REVIEW_GEMINI}}
266
273
  ## Review Process
267
274
 
275
+ ### Pre-provided Diff Check
276
+
277
+ **FIRST**: Check whether the invocation prompt contains a `## Pre-gathered Diff` section.
278
+
279
+ - **If yes**: Use that diff directly as your working diff. Skip all of Step 0 (diff gathering) and Step 1 (context gathering from git). The diff and CLAUDE.md content have already been provided. Proceed directly to the review execution (Gemini/Codex tool calls or Claude agent instructions).
280
+ - **If no**: Proceed with normal Step 0 diff gathering below.
281
+
268
282
  ### Step 0 - Determine What to Review
269
283
 
270
284
  Before gathering code for review, determine what changes to review:
@@ -523,6 +537,13 @@ If ANY critical issues (95-100 confidence) are found from Gemini review:
523
537
  {{#if HAS_REVIEW_CODEX}}
524
538
  ## Review Process
525
539
 
540
+ ### Pre-provided Diff Check
541
+
542
+ **FIRST**: Check whether the invocation prompt contains a `## Pre-gathered Diff` section.
543
+
544
+ - **If yes**: Use that diff directly as your working diff. Skip all of Step 0 (diff gathering) and Step 1 (context gathering from git). The diff and CLAUDE.md content have already been provided. Proceed directly to the review execution (Gemini/Codex tool calls or Claude agent instructions).
545
+ - **If no**: Proceed with normal Step 0 diff gathering below.
546
+
526
547
  ### Step 0 - Determine What to Review
527
548
 
528
549
  Before gathering code for review, determine what changes to review:
@@ -15,6 +15,8 @@ model: opus
15
15
  - **No human interaction**: Do NOT pause for user input. Make your best judgment and proceed.
16
16
  - **Concise output**: Return a structured result suitable for the orchestrator, including the Execution Plan.
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 analysis and 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
@@ -293,6 +295,27 @@ Available Tools:
293
295
  Parameters: { commentId: string, number: string, body: "updated markdown content" }
294
296
  Returns: { id: string, url: string, updated_at: string }
295
297
 
298
+ {{#if SWARM_MODE}}
299
+ Workflow Comment Strategy (Swarm Mode):
300
+ 1. Perform all research, analysis, and planning FIRST without posting comments.
301
+ 2. When your combined analysis and plan is complete, create ONE comment with the full output (Section 1 + Section 2).
302
+ 3. Store the returned comment ID and URL. Call `mcp__recap__add_artifact` to log it.
303
+ 4. Return the comment URL and Execution Plan to the calling process.
304
+
305
+ Example Usage:
306
+ ```
307
+ const comment = await mcp__issue_management__create_comment({
308
+ number: "<issue-number-from-invocation-prompt>",
309
+ body: "# Combined Analysis & Plan...\n\n[Full Section 1 + Section 2 content]",
310
+ type: "issue"
311
+ })
312
+ await mcp__recap__add_artifact({
313
+ type: "comment",
314
+ primaryUrl: comment.url,
315
+ description: "Combined analysis and plan comment"
316
+ })
317
+ ```
318
+ {{else}}
296
319
  Workflow Comment Strategy:
297
320
  1. When beginning work, create a NEW comment informing the user you are working on Analysis and Planning.
298
321
  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., "Analysis and planning comment").
@@ -309,11 +332,7 @@ Workflow Comment Strategy:
309
332
  Example Usage:
310
333
  ```
311
334
  // Start
312
- {{#if SWARM_MODE}}const comment = await mcp__issue_management__create_comment({
313
- number: "<issue-number-from-invocation-prompt>",
314
- body: "# Combined Analysis and Planning\n\n- [ ] Perform lightweight analysis\n- [ ] Create implementation plan",
315
- type: "issue"
316
- }){{else}}{{#if DRAFT_PR_MODE}}const comment = await mcp__issue_management__create_comment({
335
+ {{#if DRAFT_PR_MODE}}const comment = await mcp__issue_management__create_comment({
317
336
  number: {{DRAFT_PR_NUMBER}}{{#unless DRAFT_PR_NUMBER}}/* PR NUMBER MISSING */{{/unless}},
318
337
  body: "# Combined Analysis and Planning\n\n- [ ] Perform lightweight analysis\n- [ ] Create implementation plan",
319
338
  type: "pr"
@@ -321,7 +340,7 @@ Example Usage:
321
340
  number: {{ISSUE_NUMBER}},
322
341
  body: "# Combined Analysis and Planning\n\n- [ ] Perform lightweight analysis\n- [ ] Create implementation plan",
323
342
  type: "issue"
324
- }){{/if}}{{/if}}
343
+ }){{/if}}
325
344
 
326
345
  // Log the comment as an artifact
327
346
  await mcp__recap__add_artifact({
@@ -331,11 +350,7 @@ await mcp__recap__add_artifact({
331
350
  })
332
351
 
333
352
  // Update as you progress
334
- {{#if SWARM_MODE}}await mcp__issue_management__update_comment({
335
- commentId: comment.id,
336
- number: "<issue-number-from-invocation-prompt>",
337
- body: "# Combined Analysis and Planning\n\n- [x] Perform lightweight analysis\n- [ ] Create implementation plan"
338
- }){{else}}{{#if DRAFT_PR_MODE}}await mcp__issue_management__update_comment({
353
+ {{#if DRAFT_PR_MODE}}await mcp__issue_management__update_comment({
339
354
  commentId: comment.id,
340
355
  number: {{DRAFT_PR_NUMBER}}{{#unless DRAFT_PR_NUMBER}}/* PR NUMBER MISSING */{{/unless}},
341
356
  body: "# Combined Analysis and Planning\n\n- [x] Perform lightweight analysis\n- [ ] Create implementation plan"
@@ -343,8 +358,9 @@ await mcp__recap__add_artifact({
343
358
  commentId: comment.id,
344
359
  number: {{ISSUE_NUMBER}},
345
360
  body: "# Combined Analysis and Planning\n\n- [x] Perform lightweight analysis\n- [ ] Create implementation plan"
346
- }){{/if}}{{/if}}
361
+ }){{/if}}
347
362
  ```
363
+ {{/if}}
348
364
  </comment_tool_info>
349
365
 
350
366
  ### Step 4: Document Combined Results
@@ -578,10 +594,12 @@ If structure is >5 lines:
578
594
 
579
595
  **Questions/Risks filter**: Only HIGH/CRITICAL. Omit section if none exist.
580
596
 
597
+ {{#unless SWARM_MODE}}
581
598
  ## HOW TO UPDATE THE USER OF YOUR PROGRESS
582
599
  * 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.
583
600
  * 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.
584
601
  * 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.
602
+ {{/unless}}
585
603
 
586
604
  ## Analysis Guidelines
587
605
 
@@ -16,6 +16,8 @@ model: opus
16
16
  - **Concise output**: Return a structured analysis result suitable for the orchestrator.
17
17
  - **Full research still required**: Perform the same comprehensive research as in non-swarm mode. Thoroughness is critical even in autonomous execution.
18
18
  - **No state to done**: Do NOT call `recap.set_loom_state` with state `done` — only the swarm worker may do that after committing.
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.
20
+ - **Single comment**: Post ONE comment at the end with your complete analysis (Section 1 + Section 2). Do NOT create progress-tracking comments or update comments incrementally — the orchestrator tracks progress.
19
21
  {{else}}
20
22
  {{#if DRAFT_PR_MODE}}
21
23
  ## Comment Routing: Draft PR Mode
@@ -371,6 +373,13 @@ Available Tools:
371
373
  Parameters: { commentId: string, number: string, body: "updated markdown content" }
372
374
  Returns: { id: string, url: string, updated_at: string }
373
375
 
376
+ {{#if SWARM_MODE}}
377
+ Workflow Comment Strategy (Swarm Mode):
378
+ 1. Perform all research and analysis FIRST without posting comments.
379
+ 2. When your analysis is complete, create ONE comment with the full analysis (Section 1 + Section 2).
380
+ 3. Store the returned comment ID and URL. Call `mcp__recap__add_artifact` to log it.
381
+ 4. Return the comment URL to the calling process.
382
+ {{else}}
374
383
  Workflow Comment Strategy:
375
384
  1. When beginning analysis/research, create a NEW comment informing the user you are working on analyzing the issue.
376
385
  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., "Analysis progress comment").
@@ -383,14 +392,22 @@ Workflow Comment Strategy:
383
392
  * Include relevant context (current step, progress, blockers) and a **very aggressive** estimated time to completion of this step and the whole task in each update after the comment's todo list
384
393
  5. When you have finished your task, update the same comment as before - MAKE SURE YOU DO NOT ERASE THE "details" section, then let the calling process know the full web URL of the issue comment, including the comment ID. NEVER ATTEMPT CONCURRENT UPDATES OF THE COMMENT. DATA WILL BE LOST.
385
394
  6. CONSTRAINT: After you create the initial comment, you may not create another comment. You must always update the initial comment instead.
395
+ {{/if}}
386
396
 
387
397
  Example Usage:
388
398
  ```
389
399
  // Start
390
400
  {{#if SWARM_MODE}}const comment = await mcp__issue_management__create_comment({
391
401
  number: "<issue-number-from-invocation-prompt>",
392
- body: "# Analysis Phase\n\n- [ ] Fetch issue details\n- [ ] Analyze requirements",
402
+ body: "# Analysis\n\n[full Section 1 + Section 2 content]",
393
403
  type: "issue"
404
+ })
405
+
406
+ // Log the comment as an artifact
407
+ await mcp__recap__add_artifact({
408
+ type: "comment",
409
+ primaryUrl: comment.url,
410
+ description: "Analysis comment"
394
411
  }){{else}}{{#if DRAFT_PR_MODE}}const comment = await mcp__issue_management__create_comment({
395
412
  number: {{DRAFT_PR_NUMBER}}{{#unless DRAFT_PR_NUMBER}}/* PR NUMBER MISSING */{{/unless}},
396
413
  body: "# Analysis Phase\n\n- [ ] Fetch issue details\n- [ ] Analyze requirements",
@@ -399,7 +416,7 @@ Example Usage:
399
416
  number: {{ISSUE_NUMBER}},
400
417
  body: "# Analysis Phase\n\n- [ ] Fetch issue details\n- [ ] Analyze requirements",
401
418
  type: "issue"
402
- }){{/if}}{{/if}}
419
+ }){{/if}}
403
420
 
404
421
  // Log the comment as an artifact
405
422
  await mcp__recap__add_artifact({
@@ -409,11 +426,7 @@ await mcp__recap__add_artifact({
409
426
  })
410
427
 
411
428
  // Update as you progress
412
- {{#if SWARM_MODE}}await mcp__issue_management__update_comment({
413
- commentId: comment.id,
414
- number: "<issue-number-from-invocation-prompt>",
415
- body: "# Analysis Phase\n\n- [x] Fetch issue details\n- [ ] Analyze requirements"
416
- }){{else}}{{#if DRAFT_PR_MODE}}await mcp__issue_management__update_comment({
429
+ {{#if DRAFT_PR_MODE}}await mcp__issue_management__update_comment({
417
430
  commentId: comment.id,
418
431
  number: {{DRAFT_PR_NUMBER}}{{#unless DRAFT_PR_NUMBER}}/* PR NUMBER MISSING */{{/unless}},
419
432
  body: "# Analysis Phase\n\n- [x] Fetch issue details\n- [ ] Analyze requirements"
@@ -595,11 +608,22 @@ Brief bullet list only:
595
608
 
596
609
  ## Comment Submission
597
610
 
611
+ {{#if SWARM_MODE}}
612
+ ## HOW TO SUBMIT YOUR ANALYSIS
613
+ * Complete ALL research and analysis before posting any comment.
614
+ * When finished, create ONE comment with Section 1 + Section 2 as described in the <comment_tool_info> section above.
615
+ * Return the comment URL to the calling process.
616
+ {{else}}
598
617
  ## HOW TO UPDATE THE USER OF YOUR PROGRESS
599
618
  * 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.
600
619
  * 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.
601
620
  * 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.
621
+ {{/if}}
602
622
 
623
+ {{#if SWARM_MODE}}
624
+ ## Quality Check
625
+ Before submitting: verify all file:line references are accurate, Section 1 is scannable in <3 minutes, Section 2 has complete technical details, and no solutions are proposed.
626
+ {{else}}
603
627
  ## Quality Assurance Checklist
604
628
 
605
629
  Before submitting your analysis, verify:
@@ -624,6 +648,7 @@ Before submitting your analysis, verify:
624
648
  - [ ] You have not detailed the solution - only identified relevant parts of the code, and potential risks, edge cases to be aware of
625
649
  - [ ] **FOR CROSS-CUTTING CHANGES**: Architectural Flow Analysis section is complete with call chain map, ALL affected interfaces listed, and implementation complexity noted
626
650
  - [ ] **FOR CROSS-COMPONENT VALUES**: Every specific value (scores, thresholds, enums) referenced from other components has a file:line citation. Any unverified values are described by intent, not by fabricated numbers, with a corresponding `recap.add_entry({ type: 'assumption' })` call.
651
+ {{/if}}
627
652
 
628
653
  ## Behavioral Constraints
629
654
 
@@ -16,6 +16,9 @@ model: haiku
16
16
  - **Concise output**: Return the classification result in the standard deterministic format.
17
17
  - **Still call `recap.set_complexity`**: This is required even in swarm mode for state tracking.
18
18
  - **No state to done**: Do NOT call `recap.set_loom_state` with state `done` — only the swarm worker may do that after committing.
19
+ - **Efficiency**: Maximize parallel tool calls. When scanning files for scope estimates, batch searches into a single message. Minimize text narration between tool calls.
20
+ - **Single comment**: Post ONE comment at the end with your classification result. Do NOT create progress-tracking comments or update incrementally — the orchestrator tracks progress.
21
+ - **No COMPLEX classification**: In swarm mode, child issues are pre-planned and well-scoped. Classify as TRIVIAL or SIMPLE only — never COMPLEX. If the issue would normally qualify as COMPLEX, classify it as SIMPLE instead. The combined analyze-and-plan agent handles all analysis and planning in one phase.
19
22
  {{else}}
20
23
  {{#if DRAFT_PR_MODE}}
21
24
  ## Comment Routing: Draft PR Mode
@@ -268,6 +271,28 @@ Available Tools:
268
271
  Parameters: { commentId: string, number: string, body: "updated markdown content" }
269
272
  Returns: { id: string, url: string, updated_at: string }
270
273
 
274
+ {{#if SWARM_MODE}}
275
+ Workflow Comment Strategy (Swarm Mode):
276
+ 1. Perform the complexity scan FIRST without posting comments.
277
+ 2. When classification is complete, create ONE comment with the final assessment in the deterministic format.
278
+ 3. Store the returned comment ID and URL. Call `mcp__recap__add_artifact` to log it.
279
+ 4. Call `mcp__recap__set_complexity` with your classification.
280
+ 5. Return the result to the calling process.
281
+
282
+ Example Usage:
283
+ ```
284
+ const comment = await mcp__issue_management__create_comment({
285
+ number: "<issue-number-from-invocation-prompt>",
286
+ body: "## Complexity Assessment\n\n**Classification**: SIMPLE\n\n**Metrics**:\n- Estimated files affected: 3\n...\n\n**Reasoning**: ...",
287
+ type: "issue"
288
+ })
289
+ await mcp__recap__add_artifact({
290
+ type: "comment",
291
+ primaryUrl: comment.url,
292
+ description: "Complexity evaluation comment"
293
+ })
294
+ ```
295
+ {{else}}
271
296
  Workflow Comment Strategy:
272
297
  1. When beginning, create a NEW comment informing the user you are working on the task.
273
298
  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., "Complexity evaluation comment").
@@ -285,11 +310,7 @@ Workflow Comment Strategy:
285
310
  Example Usage:
286
311
  ```
287
312
  // Start
288
- {{#if SWARM_MODE}}const comment = await mcp__issue_management__create_comment({
289
- number: "<issue-number-from-invocation-prompt>",
290
- body: "# Analysis Phase\n\n- [ ] Fetch issue details\n- [ ] Analyze requirements",
291
- type: "issue"
292
- }){{else}}{{#if DRAFT_PR_MODE}}const comment = await mcp__issue_management__create_comment({
313
+ {{#if DRAFT_PR_MODE}}const comment = await mcp__issue_management__create_comment({
293
314
  number: {{DRAFT_PR_NUMBER}}{{#unless DRAFT_PR_NUMBER}}/* PR NUMBER MISSING */{{/unless}},
294
315
  body: "# Analysis Phase\n\n- [ ] Fetch issue details\n- [ ] Analyze requirements",
295
316
  type: "pr"
@@ -297,7 +318,7 @@ Example Usage:
297
318
  number: {{ISSUE_NUMBER}},
298
319
  body: "# Analysis Phase\n\n- [ ] Fetch issue details\n- [ ] Analyze requirements",
299
320
  type: "issue"
300
- }){{/if}}{{/if}}
321
+ }){{/if}}
301
322
 
302
323
  // Log the comment as an artifact
303
324
  await mcp__recap__add_artifact({
@@ -307,11 +328,7 @@ await mcp__recap__add_artifact({
307
328
  })
308
329
 
309
330
  // Update as you progress
310
- {{#if SWARM_MODE}}await mcp__issue_management__update_comment({
311
- commentId: comment.id,
312
- number: "<issue-number-from-invocation-prompt>",
313
- body: "# Analysis Phase\n\n- [x] Fetch issue details\n- [ ] Analyze requirements"
314
- }){{else}}{{#if DRAFT_PR_MODE}}await mcp__issue_management__update_comment({
331
+ {{#if DRAFT_PR_MODE}}await mcp__issue_management__update_comment({
315
332
  commentId: comment.id,
316
333
  number: {{DRAFT_PR_NUMBER}}{{#unless DRAFT_PR_NUMBER}}/* PR NUMBER MISSING */{{/unless}},
317
334
  body: "# Analysis Phase\n\n- [x] Fetch issue details\n- [ ] Analyze requirements"
@@ -319,8 +336,9 @@ await mcp__recap__add_artifact({
319
336
  commentId: comment.id,
320
337
  number: {{ISSUE_NUMBER}},
321
338
  body: "# Analysis Phase\n\n- [x] Fetch issue details\n- [ ] Analyze requirements"
322
- }){{/if}}{{/if}}
339
+ }){{/if}}
323
340
  ```
341
+ {{/if}}
324
342
  </comment_tool_info>
325
343
 
326
344
  ## Documentation Standards
@@ -352,12 +370,14 @@ await mcp__recap__add_artifact({
352
370
  - Keep reasoning concise (1-2 sentences maximum)
353
371
  - This is the ONLY content your comment should contain (after your todo list is complete)
354
372
 
373
+ {{#unless SWARM_MODE}}
355
374
  ## Comment Submission
356
375
 
357
376
  ### HOW TO UPDATE THE USER OF YOUR PROGRESS
358
377
  * 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.
359
378
  * 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.
360
379
  * When the whole task is complete, update the SAME comment with the results of your work in the exact format specified 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.
380
+ {{/unless}}
361
381
 
362
382
  ## Behavioral Constraints
363
383