@iloom/cli 0.13.2 → 0.13.4

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 (169) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -1
  3. package/dist/{BranchNamingService-MEK2WZUD.js → BranchNamingService-PBP6DY3H.js} +2 -2
  4. package/dist/{ClaudeContextManager-KJ4VEA2F.js → ClaudeContextManager-3HT4LEIU.js} +5 -5
  5. package/dist/{ClaudeService-WTJO4UW6.js → ClaudeService-7BHL2GWC.js} +4 -4
  6. package/dist/{IssueTrackerFactory-UEJALI4X.js → IssueTrackerFactory-JH34S4GX.js} +3 -3
  7. package/dist/{LoomLauncher-KG2VBNQA.js → LoomLauncher-RGXJOCMC.js} +8 -5
  8. package/dist/LoomLauncher-RGXJOCMC.js.map +1 -0
  9. package/dist/{MetadataManager-HHE6LQF2.js → MetadataManager-WKM7JJIO.js} +2 -2
  10. package/dist/README.md +1 -1
  11. package/dist/{SettingsManager-PVHBSCMI.js → SettingsManager-Y5OU5HCX.js} +4 -2
  12. package/dist/agents/CLAUDE.md +12 -7
  13. package/dist/agents/iloom-code-reviewer.md +2 -1
  14. package/dist/agents/iloom-framework-detector.md +56 -9
  15. package/dist/agents/iloom-issue-analyze-and-plan.md +1 -0
  16. package/dist/agents/iloom-issue-analyzer.md +1 -0
  17. package/dist/agents/iloom-issue-complexity-evaluator.md +1 -0
  18. package/dist/agents/iloom-issue-enhancer.md +2 -1
  19. package/dist/agents/iloom-issue-implementer.md +4 -1
  20. package/dist/agents/iloom-issue-planner.md +2 -1
  21. package/dist/agents/iloom-wave-verifier.md +1 -0
  22. package/dist/{build-2FXDYEZQ.js → build-NJJT6UHO.js} +7 -7
  23. package/dist/{chunk-VUIPDX3T.js → chunk-27CQSBUG.js} +2 -2
  24. package/dist/{chunk-YVNG35OW.js → chunk-2Z4VKQND.js} +2 -2
  25. package/dist/{chunk-UQWMPQ2Q.js → chunk-4QROZMPZ.js} +3 -3
  26. package/dist/{chunk-U2OPXZ6E.js → chunk-5NVJ6N3C.js} +7 -7
  27. package/dist/{chunk-2WRD6Y5E.js → chunk-5VP2HAWF.js} +2 -2
  28. package/dist/{chunk-CQHHEW2M.js → chunk-5WJN63T4.js} +1 -1
  29. package/dist/chunk-5WJN63T4.js.map +1 -0
  30. package/dist/{chunk-H4TSDALC.js → chunk-64K5SZXC.js} +6 -6
  31. package/dist/{chunk-5W44AI63.js → chunk-6FHFHMNF.js} +4 -4
  32. package/dist/{chunk-XC5JKRSH.js → chunk-6RKZDUTQ.js} +2 -2
  33. package/dist/{chunk-RP6MHV24.js → chunk-7VSOM25S.js} +20 -15
  34. package/dist/chunk-7VSOM25S.js.map +1 -0
  35. package/dist/{chunk-UMAOVKQX.js → chunk-CSJ7JNJV.js} +3 -3
  36. package/dist/{chunk-AQUSMNBF.js → chunk-CWRQ4NU4.js} +2 -2
  37. package/dist/{chunk-R2EFSRKR.js → chunk-EBPFEM5X.js} +16 -15
  38. package/dist/chunk-EBPFEM5X.js.map +1 -0
  39. package/dist/{chunk-OMV47LLA.js → chunk-FPM6XDEO.js} +2 -2
  40. package/dist/{chunk-DYLOITSO.js → chunk-HMMDNIKG.js} +38 -31
  41. package/dist/chunk-HMMDNIKG.js.map +1 -0
  42. package/dist/{chunk-XIVLGWUX.js → chunk-JDXJIPXR.js} +3 -1
  43. package/dist/chunk-JDXJIPXR.js.map +1 -0
  44. package/dist/{chunk-ZWXJ7G2C.js → chunk-JIMFSNZI.js} +2 -2
  45. package/dist/{chunk-D6FU4DLN.js → chunk-LULQYBRA.js} +2 -2
  46. package/dist/{chunk-DDHWZNGL.js → chunk-MB4CB7Q4.js} +6 -5
  47. package/dist/chunk-MB4CB7Q4.js.map +1 -0
  48. package/dist/{chunk-OHX3PSAY.js → chunk-MZPVETJH.js} +7 -15
  49. package/dist/chunk-MZPVETJH.js.map +1 -0
  50. package/dist/{chunk-OIJNBFMP.js → chunk-OSWL7YDO.js} +2 -2
  51. package/dist/{chunk-32D4CWWH.js → chunk-R2RGFNR4.js} +2 -2
  52. package/dist/{chunk-MPHSR6GA.js → chunk-R4Y2ZBOL.js} +5 -5
  53. package/dist/{chunk-L3P3YJCE.js → chunk-RLFS5KHU.js} +3 -3
  54. package/dist/{chunk-DMNI225H.js → chunk-SM2YM3YR.js} +4 -4
  55. package/dist/{chunk-MNPKEWBQ.js → chunk-UVZBZ5IF.js} +52 -1
  56. package/dist/chunk-UVZBZ5IF.js.map +1 -0
  57. package/dist/{chunk-Y2JHYPMX.js → chunk-VG7UFVF2.js} +47 -35
  58. package/dist/chunk-VG7UFVF2.js.map +1 -0
  59. package/dist/{chunk-OVW26FHW.js → chunk-VQ3Y3PVT.js} +2 -2
  60. package/dist/{chunk-PH65MFQM.js → chunk-Y2TPRF5H.js} +3 -3
  61. package/dist/{claude-ACL7G4CF.js → claude-IYLIOOP7.js} +2 -2
  62. package/dist/{cleanup-I62RA5TZ.js → cleanup-Q6PEKMVF.js} +18 -18
  63. package/dist/cli.js +93 -77
  64. package/dist/cli.js.map +1 -1
  65. package/dist/{commit-7RI2JFFW.js → commit-JKZQYNEB.js} +8 -8
  66. package/dist/{compile-NWTMKAGL.js → compile-QEMZDLKO.js} +7 -7
  67. package/dist/{contribute-QWPOT4QR.js → contribute-TCEOVFDN.js} +4 -4
  68. package/dist/{dev-server-OZ6KKKTR.js → dev-server-25BIZKTB.js} +12 -12
  69. package/dist/{feedback-G63MODT2.js → feedback-CQ42GFZE.js} +7 -7
  70. package/dist/{git-ZTMT6OAI.js → git-HWDX2KWU.js} +4 -4
  71. package/dist/{ignite-GUYKYC5G.js → ignite-25QLX2FS.js} +13 -13
  72. package/dist/index.d.ts +1764 -1709
  73. package/dist/index.js +105 -8
  74. package/dist/index.js.map +1 -1
  75. package/dist/{init-AMLCFVXG.js → init-LRNRRFFU.js} +8 -8
  76. package/dist/{install-deps-XS2UUCUS.js → install-deps-DHFHT3KI.js} +7 -7
  77. package/dist/{issues-2IT7PSNZ.js → issues-W722ILMI.js} +5 -5
  78. package/dist/{lint-DKWJHET3.js → lint-TZDEPVKN.js} +7 -7
  79. package/dist/mcp/issue-management-server.js +39 -0
  80. package/dist/mcp/issue-management-server.js.map +1 -1
  81. package/dist/mcp/recap-server.js +2 -2
  82. package/dist/mcp/recap-server.js.map +1 -1
  83. package/dist/{open-6PXNIPXS.js → open-BCQSZYAD.js} +12 -12
  84. package/dist/{plan-NJVQBBT3.js → plan-2LUGSOYG.js} +30 -28
  85. package/dist/plan-2LUGSOYG.js.map +1 -0
  86. package/dist/{projects-3F6T3KZL.js → projects-INTNTWRM.js} +2 -2
  87. package/dist/prompts/init-prompt.txt +72 -4
  88. package/dist/prompts/issue-prompt.txt +6 -3
  89. package/dist/prompts/pr-prompt.txt +3 -2
  90. package/dist/prompts/regular-prompt.txt +3 -2
  91. package/dist/prompts/session-summary-prompt.txt +2 -1
  92. package/dist/prompts/swarm-orchestrator-prompt.txt +2 -2
  93. package/dist/{rebase-6AXN45AE.js → rebase-ZKZKKQKB.js} +7 -7
  94. package/dist/{recap-XDKI3MTA.js → recap-XXLLMETY.js} +7 -7
  95. package/dist/{run-RHE5NPDT.js → run-5P5ULYZY.js} +12 -12
  96. package/dist/schema/settings.schema.json +50 -0
  97. package/dist/{shell-XOILFEZW.js → shell-GNDHII2J.js} +6 -6
  98. package/dist/{summary-BVYOM63C.js → summary-TVLBZNKY.js} +10 -10
  99. package/dist/{test-6T2UMQ7T.js → test-T5K7FOKQ.js} +7 -7
  100. package/dist/{test-git-CQ65OL45.js → test-git-AQ3ZQ4RA.js} +4 -4
  101. package/dist/{test-jira-CQQHGZ3S.js → test-jira-7XQ63U2C.js} +3 -3
  102. package/dist/{test-prefix-HMTZSS67.js → test-prefix-OTY2HBSB.js} +4 -4
  103. package/dist/{test-webserver-ZN73CM2T.js → test-webserver-CPQMUCDD.js} +6 -6
  104. package/dist/{vscode-ABQ5ZSH7.js → vscode-M4KRTKZK.js} +6 -6
  105. package/package.json +1 -1
  106. package/dist/LoomLauncher-KG2VBNQA.js.map +0 -1
  107. package/dist/chunk-CQHHEW2M.js.map +0 -1
  108. package/dist/chunk-DDHWZNGL.js.map +0 -1
  109. package/dist/chunk-DYLOITSO.js.map +0 -1
  110. package/dist/chunk-MNPKEWBQ.js.map +0 -1
  111. package/dist/chunk-OHX3PSAY.js.map +0 -1
  112. package/dist/chunk-R2EFSRKR.js.map +0 -1
  113. package/dist/chunk-RP6MHV24.js.map +0 -1
  114. package/dist/chunk-XIVLGWUX.js.map +0 -1
  115. package/dist/chunk-Y2JHYPMX.js.map +0 -1
  116. package/dist/plan-NJVQBBT3.js.map +0 -1
  117. /package/dist/{BranchNamingService-MEK2WZUD.js.map → BranchNamingService-PBP6DY3H.js.map} +0 -0
  118. /package/dist/{ClaudeContextManager-KJ4VEA2F.js.map → ClaudeContextManager-3HT4LEIU.js.map} +0 -0
  119. /package/dist/{ClaudeService-WTJO4UW6.js.map → ClaudeService-7BHL2GWC.js.map} +0 -0
  120. /package/dist/{IssueTrackerFactory-UEJALI4X.js.map → IssueTrackerFactory-JH34S4GX.js.map} +0 -0
  121. /package/dist/{MetadataManager-HHE6LQF2.js.map → MetadataManager-WKM7JJIO.js.map} +0 -0
  122. /package/dist/{SettingsManager-PVHBSCMI.js.map → SettingsManager-Y5OU5HCX.js.map} +0 -0
  123. /package/dist/{build-2FXDYEZQ.js.map → build-NJJT6UHO.js.map} +0 -0
  124. /package/dist/{chunk-VUIPDX3T.js.map → chunk-27CQSBUG.js.map} +0 -0
  125. /package/dist/{chunk-YVNG35OW.js.map → chunk-2Z4VKQND.js.map} +0 -0
  126. /package/dist/{chunk-UQWMPQ2Q.js.map → chunk-4QROZMPZ.js.map} +0 -0
  127. /package/dist/{chunk-U2OPXZ6E.js.map → chunk-5NVJ6N3C.js.map} +0 -0
  128. /package/dist/{chunk-2WRD6Y5E.js.map → chunk-5VP2HAWF.js.map} +0 -0
  129. /package/dist/{chunk-H4TSDALC.js.map → chunk-64K5SZXC.js.map} +0 -0
  130. /package/dist/{chunk-5W44AI63.js.map → chunk-6FHFHMNF.js.map} +0 -0
  131. /package/dist/{chunk-XC5JKRSH.js.map → chunk-6RKZDUTQ.js.map} +0 -0
  132. /package/dist/{chunk-UMAOVKQX.js.map → chunk-CSJ7JNJV.js.map} +0 -0
  133. /package/dist/{chunk-AQUSMNBF.js.map → chunk-CWRQ4NU4.js.map} +0 -0
  134. /package/dist/{chunk-OMV47LLA.js.map → chunk-FPM6XDEO.js.map} +0 -0
  135. /package/dist/{chunk-ZWXJ7G2C.js.map → chunk-JIMFSNZI.js.map} +0 -0
  136. /package/dist/{chunk-D6FU4DLN.js.map → chunk-LULQYBRA.js.map} +0 -0
  137. /package/dist/{chunk-OIJNBFMP.js.map → chunk-OSWL7YDO.js.map} +0 -0
  138. /package/dist/{chunk-32D4CWWH.js.map → chunk-R2RGFNR4.js.map} +0 -0
  139. /package/dist/{chunk-MPHSR6GA.js.map → chunk-R4Y2ZBOL.js.map} +0 -0
  140. /package/dist/{chunk-L3P3YJCE.js.map → chunk-RLFS5KHU.js.map} +0 -0
  141. /package/dist/{chunk-DMNI225H.js.map → chunk-SM2YM3YR.js.map} +0 -0
  142. /package/dist/{chunk-OVW26FHW.js.map → chunk-VQ3Y3PVT.js.map} +0 -0
  143. /package/dist/{chunk-PH65MFQM.js.map → chunk-Y2TPRF5H.js.map} +0 -0
  144. /package/dist/{claude-ACL7G4CF.js.map → claude-IYLIOOP7.js.map} +0 -0
  145. /package/dist/{cleanup-I62RA5TZ.js.map → cleanup-Q6PEKMVF.js.map} +0 -0
  146. /package/dist/{commit-7RI2JFFW.js.map → commit-JKZQYNEB.js.map} +0 -0
  147. /package/dist/{compile-NWTMKAGL.js.map → compile-QEMZDLKO.js.map} +0 -0
  148. /package/dist/{contribute-QWPOT4QR.js.map → contribute-TCEOVFDN.js.map} +0 -0
  149. /package/dist/{dev-server-OZ6KKKTR.js.map → dev-server-25BIZKTB.js.map} +0 -0
  150. /package/dist/{feedback-G63MODT2.js.map → feedback-CQ42GFZE.js.map} +0 -0
  151. /package/dist/{git-ZTMT6OAI.js.map → git-HWDX2KWU.js.map} +0 -0
  152. /package/dist/{ignite-GUYKYC5G.js.map → ignite-25QLX2FS.js.map} +0 -0
  153. /package/dist/{init-AMLCFVXG.js.map → init-LRNRRFFU.js.map} +0 -0
  154. /package/dist/{install-deps-XS2UUCUS.js.map → install-deps-DHFHT3KI.js.map} +0 -0
  155. /package/dist/{issues-2IT7PSNZ.js.map → issues-W722ILMI.js.map} +0 -0
  156. /package/dist/{lint-DKWJHET3.js.map → lint-TZDEPVKN.js.map} +0 -0
  157. /package/dist/{open-6PXNIPXS.js.map → open-BCQSZYAD.js.map} +0 -0
  158. /package/dist/{projects-3F6T3KZL.js.map → projects-INTNTWRM.js.map} +0 -0
  159. /package/dist/{rebase-6AXN45AE.js.map → rebase-ZKZKKQKB.js.map} +0 -0
  160. /package/dist/{recap-XDKI3MTA.js.map → recap-XXLLMETY.js.map} +0 -0
  161. /package/dist/{run-RHE5NPDT.js.map → run-5P5ULYZY.js.map} +0 -0
  162. /package/dist/{shell-XOILFEZW.js.map → shell-GNDHII2J.js.map} +0 -0
  163. /package/dist/{summary-BVYOM63C.js.map → summary-TVLBZNKY.js.map} +0 -0
  164. /package/dist/{test-6T2UMQ7T.js.map → test-T5K7FOKQ.js.map} +0 -0
  165. /package/dist/{test-git-CQ65OL45.js.map → test-git-AQ3ZQ4RA.js.map} +0 -0
  166. /package/dist/{test-jira-CQQHGZ3S.js.map → test-jira-7XQ63U2C.js.map} +0 -0
  167. /package/dist/{test-prefix-HMTZSS67.js.map → test-prefix-OTY2HBSB.js.map} +0 -0
  168. /package/dist/{test-webserver-ZN73CM2T.js.map → test-webserver-CPQMUCDD.js.map} +0 -0
  169. /package/dist/{vscode-ABQ5ZSH7.js.map → vscode-M4KRTKZK.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-21
23
+ Change Date: 2030-03-25
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
@@ -880,7 +880,7 @@ License & Name
880
880
 
881
881
  * ❌ You cannot resell iloom itself as a product or SaaS.
882
882
 
883
- * Converts to Apache 2.0 on 2030-03-21.
883
+ * Converts to Apache 2.0 on 2030-03-25.
884
884
 
885
885
 
886
886
  See [LICENSE](https://raw.githubusercontent.com/iloom-ai/iloom-cli/main/LICENSE) for complete terms.
@@ -3,7 +3,7 @@ import {
3
3
  ClaudeBranchNameStrategy,
4
4
  DefaultBranchNamingService,
5
5
  SimpleBranchNameStrategy
6
- } from "./chunk-AQUSMNBF.js";
6
+ } from "./chunk-CWRQ4NU4.js";
7
7
  import "./chunk-FTYWGQFM.js";
8
8
  import "./chunk-VRPPI6GU.js";
9
9
  export {
@@ -11,4 +11,4 @@ export {
11
11
  DefaultBranchNamingService,
12
12
  SimpleBranchNameStrategy
13
13
  };
14
- //# sourceMappingURL=BranchNamingService-MEK2WZUD.js.map
14
+ //# sourceMappingURL=BranchNamingService-PBP6DY3H.js.map
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ClaudeContextManager
4
- } from "./chunk-32D4CWWH.js";
5
- import "./chunk-UMAOVKQX.js";
4
+ } from "./chunk-R2RGFNR4.js";
5
+ import "./chunk-CSJ7JNJV.js";
6
6
  import "./chunk-LDE6VNG5.js";
7
- import "./chunk-DDHWZNGL.js";
8
- import "./chunk-MNPKEWBQ.js";
7
+ import "./chunk-MB4CB7Q4.js";
8
+ import "./chunk-UVZBZ5IF.js";
9
9
  import "./chunk-FTYWGQFM.js";
10
10
  import "./chunk-VRPPI6GU.js";
11
11
  export {
12
12
  ClaudeContextManager
13
13
  };
14
- //# sourceMappingURL=ClaudeContextManager-KJ4VEA2F.js.map
14
+ //# sourceMappingURL=ClaudeContextManager-3HT4LEIU.js.map
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ClaudeService
4
- } from "./chunk-UMAOVKQX.js";
4
+ } from "./chunk-CSJ7JNJV.js";
5
5
  import "./chunk-LDE6VNG5.js";
6
- import "./chunk-DDHWZNGL.js";
7
- import "./chunk-MNPKEWBQ.js";
6
+ import "./chunk-MB4CB7Q4.js";
7
+ import "./chunk-UVZBZ5IF.js";
8
8
  import "./chunk-FTYWGQFM.js";
9
9
  import "./chunk-VRPPI6GU.js";
10
10
  export {
11
11
  ClaudeService
12
12
  };
13
- //# sourceMappingURL=ClaudeService-WTJO4UW6.js.map
13
+ //# sourceMappingURL=ClaudeService-7BHL2GWC.js.map
@@ -1,15 +1,15 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  IssueTrackerFactory
4
- } from "./chunk-ZWXJ7G2C.js";
4
+ } from "./chunk-JIMFSNZI.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-MNPKEWBQ.js";
9
+ import "./chunk-UVZBZ5IF.js";
10
10
  import "./chunk-FTYWGQFM.js";
11
11
  import "./chunk-VRPPI6GU.js";
12
12
  export {
13
13
  IssueTrackerFactory
14
14
  };
15
- //# sourceMappingURL=IssueTrackerFactory-UEJALI4X.js.map
15
+ //# sourceMappingURL=IssueTrackerFactory-JH34S4GX.js.map
@@ -4,8 +4,8 @@ import {
4
4
  } from "./chunk-CE676WCN.js";
5
5
  import {
6
6
  ClaudeContextManager
7
- } from "./chunk-32D4CWWH.js";
8
- import "./chunk-UMAOVKQX.js";
7
+ } from "./chunk-R2RGFNR4.js";
8
+ import "./chunk-CSJ7JNJV.js";
9
9
  import "./chunk-LDE6VNG5.js";
10
10
  import {
11
11
  getExecutablePath
@@ -14,8 +14,8 @@ import {
14
14
  generateColorFromBranchName,
15
15
  hexToRgb
16
16
  } from "./chunk-OIVFHJOA.js";
17
- import "./chunk-DDHWZNGL.js";
18
- import "./chunk-MNPKEWBQ.js";
17
+ import "./chunk-MB4CB7Q4.js";
18
+ import "./chunk-UVZBZ5IF.js";
19
19
  import {
20
20
  getLogger
21
21
  } from "./chunk-FTYWGQFM.js";
@@ -170,6 +170,9 @@ var LoomLauncher = class {
170
170
  if (options.complexity) {
171
171
  claudeCommand += ` --complexity=${options.complexity}`;
172
172
  }
173
+ if (options.effort) {
174
+ claudeCommand += ` --effort=${options.effort}`;
175
+ }
173
176
  const backgroundColor = options.colorTerminal ?? true ? options.colorHex ? hexToRgb(options.colorHex) : generateColorFromBranchName(options.branchName).rgb : void 0;
174
177
  return {
175
178
  workspacePath: options.worktreePath,
@@ -255,4 +258,4 @@ var LoomLauncher = class {
255
258
  export {
256
259
  LoomLauncher
257
260
  };
258
- //# sourceMappingURL=LoomLauncher-KG2VBNQA.js.map
261
+ //# sourceMappingURL=LoomLauncher-RGXJOCMC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/LoomLauncher.ts"],"sourcesContent":["import { existsSync } from 'node:fs'\nimport { join } from 'node:path'\nimport { openTerminalWindow, openMultipleTerminalWindows } from '../utils/terminal.js'\nimport type { TerminalWindowOptions } from '../utils/terminal.js'\nimport { openIdeWindow } from '../utils/ide.js'\nimport { generateColorFromBranchName, hexToRgb } from '../utils/color.js'\nimport { getLogger } from '../utils/logger-context.js'\nimport { ClaudeContextManager } from './ClaudeContextManager.js'\nimport type { SettingsManager } from './SettingsManager.js'\nimport type { Capability } from '../types/loom.js'\nimport { getDotenvFlowFiles } from '../utils/env.js'\nimport { getExecutablePath } from '../utils/cli-overrides.js'\n\nexport interface LaunchLoomOptions {\n\tenableClaude: boolean\n\tenableCode: boolean\n\tenableDevServer: boolean\n\tenableTerminal: boolean\n\tworktreePath: string\n\tbranchName: string\n\tport?: number\n\tcapabilities: Capability[]\n\tworkflowType: 'issue' | 'pr' | 'regular'\n\tidentifier: string | number\n\ttitle?: string\n\toneShot?: import('../types/index.js').OneShotMode\n\tsetArguments?: string[] // Raw --set arguments to forward\n\texecutablePath?: string // Executable path to use for spin command\n\tsourceEnvOnStart?: boolean // defaults to false if undefined\n\tcolorTerminal?: boolean // defaults to true if undefined\n\tcolorHex?: string // Pre-calculated hex color from metadata, avoids recalculation\n\tcomplexity?: import('../types/index.js').ComplexityOverride\n\teffort?: import('../types/index.js').EffortLevel\n}\n\n/**\n * LoomLauncher orchestrates opening loom components\n */\nexport class LoomLauncher {\n\tprivate claudeContext: ClaudeContextManager\n\tprivate settings?: SettingsManager\n\n\tconstructor(claudeContext?: ClaudeContextManager, settings?: SettingsManager) {\n\t\tthis.claudeContext = claudeContext ?? new ClaudeContextManager()\n\t\tif (settings !== undefined) {\n\t\t\tthis.settings = settings\n\t\t}\n\t}\n\n\t/**\n\t * Launch loom components based on individual flags\n\t */\n\tasync launchLoom(options: LaunchLoomOptions): Promise<void> {\n\t\tconst { enableClaude, enableCode, enableDevServer, enableTerminal } = options\n\n\t\tgetLogger().debug(`Launching loom components: Claude=${enableClaude}, Code=${enableCode}, DevServer=${enableDevServer}, Terminal=${enableTerminal}`)\n\n\t\tconst launchPromises: Promise<void>[] = []\n\n\t\t// Launch VSCode if enabled\n\t\tif (enableCode) {\n\t\t\tgetLogger().debug('Launching VSCode')\n\t\t\tlaunchPromises.push(this.launchVSCode(options))\n\t\t}\n\n\t\t// Build array of terminals to launch\n\t\tconst terminalsToLaunch: Array<{\n\t\t\ttype: 'claude' | 'devServer' | 'terminal'\n\t\t\toptions: TerminalWindowOptions\n\t\t}> = []\n\n\t\tif (enableDevServer) {\n\t\t\tterminalsToLaunch.push({\n\t\t\t\ttype: 'devServer',\n\t\t\t\toptions: this.buildDevServerTerminalOptions(options),\n\t\t\t})\n\t\t}\n\n\t\tif (enableTerminal) {\n\t\t\tterminalsToLaunch.push({\n\t\t\t\ttype: 'terminal',\n\t\t\t\toptions: this.buildStandaloneTerminalOptions(options),\n\t\t\t})\n\t\t}\n\n\t\tif (enableClaude) {\n\t\t\tterminalsToLaunch.push({\n\t\t\t\ttype: 'claude',\n\t\t\t\toptions: await this.buildClaudeTerminalOptions(options),\n\t\t\t})\n\t\t}\n\n\t\t// Launch terminals based on count\n\t\tif (terminalsToLaunch.length > 1) {\n\t\t\t// Multiple terminals - launch as tabs in single window\n\t\t\tgetLogger().debug(`Launching ${terminalsToLaunch.length} terminals in single window`)\n\t\t\tlaunchPromises.push(this.launchMultipleTerminals(terminalsToLaunch, options))\n\t\t} else if (terminalsToLaunch.length === 1) {\n\t\t\t// Single terminal - launch standalone\n\t\t\tconst terminal = terminalsToLaunch[0]\n\t\t\tif (!terminal) {\n\t\t\t\tthrow new Error('Terminal configuration is undefined')\n\t\t\t}\n\t\t\tconst terminalType = terminal.type\n\t\t\tgetLogger().debug(`Launching single ${terminalType} terminal`)\n\n\t\t\tif (terminalType === 'claude') {\n\t\t\t\tlaunchPromises.push(this.launchClaudeTerminal(options))\n\t\t\t} else if (terminalType === 'devServer') {\n\t\t\t\tlaunchPromises.push(this.launchDevServerTerminal(options))\n\t\t\t} else {\n\t\t\t\tlaunchPromises.push(this.launchStandaloneTerminal(options))\n\t\t\t}\n\t\t}\n\n\t\t// Wait for all components to launch\n\t\tawait Promise.all(launchPromises)\n\n\t\tgetLogger().success('loom launched successfully')\n\t}\n\n\t/**\n\t * Launch IDE (VSCode or configured alternative)\n\t */\n\tprivate async launchVSCode(options: LaunchLoomOptions): Promise<void> {\n\t\tconst ideConfig = await this.settings?.loadSettings().then((s) => s.ide)\n\t\tawait openIdeWindow(options.worktreePath, ideConfig)\n\t\tgetLogger().info('IDE opened')\n\t}\n\n\t/**\n\t * Launch Claude terminal\n\t */\n\tprivate async launchClaudeTerminal(options: LaunchLoomOptions): Promise<void> {\n\t\tawait this.claudeContext.launchWithContext({\n\t\t\tworkspacePath: options.worktreePath,\n\t\t\ttype: options.workflowType,\n\t\t\tidentifier: options.identifier,\n\t\t\tbranchName: options.branchName,\n\t\t\t...(options.title && { title: options.title }),\n\t\t\t...(options.port !== undefined && { port: options.port }),\n\t\t\toneShot: options.oneShot ?? 'default',\n\t\t\t...(options.setArguments && { setArguments: options.setArguments }),\n\t\t\t...(options.executablePath && { executablePath: options.executablePath }),\n\t\t})\n\t\tgetLogger().info('Claude terminal opened')\n\t}\n\n\t/**\n\t * Launch dev server terminal\n\t * Runs `il dev-server [identifier]` which handles env loading internally\n\t */\n\tprivate async launchDevServerTerminal(options: LaunchLoomOptions): Promise<void> {\n\t\t// Build dev-server command with identifier\n\t\tconst executable = options.executablePath ?? getExecutablePath()\n\t\tconst devServerIdentifier = String(options.identifier)\n\t\tconst devServerCommand = `${executable} dev-server ${devServerIdentifier}`\n\n\t\t// Only generate color if terminal coloring is enabled (default: true)\n\t\tconst backgroundColor = (options.colorTerminal ?? true)\n\t\t\t? options.colorHex\n\t\t\t\t? hexToRgb(options.colorHex)\n\t\t\t\t: generateColorFromBranchName(options.branchName).rgb\n\t\t\t: undefined\n\n\t\tawait openTerminalWindow({\n\t\t\tworkspacePath: options.worktreePath,\n\t\t\tcommand: devServerCommand,\n\t\t\t...(backgroundColor && { backgroundColor }),\n\t\t\t// il dev-server handles env loading internally, so no includeEnvSetup\n\t\t\tincludeEnvSetup: false,\n\t\t\tincludePortExport: options.capabilities.includes('web'),\n\t\t\t...(options.port !== undefined && { port: options.port }),\n\t\t})\n\t\tgetLogger().info('Dev server terminal opened')\n\t}\n\n\t/**\n\t * Launch standalone terminal running `il shell <identifier>`\n\t */\n\tprivate async launchStandaloneTerminal(options: LaunchLoomOptions): Promise<void> {\n\t\t// Build shell command with identifier\n\t\tconst executable = options.executablePath ?? getExecutablePath()\n\t\tconst shellIdentifier = String(options.identifier)\n\t\tconst shellCommand = `${executable} shell ${shellIdentifier}`\n\n\t\t// Only generate color if terminal coloring is enabled (default: true)\n\t\tconst backgroundColor = (options.colorTerminal ?? true)\n\t\t\t? options.colorHex\n\t\t\t\t? hexToRgb(options.colorHex)\n\t\t\t\t: generateColorFromBranchName(options.branchName).rgb\n\t\t\t: undefined\n\n\t\tawait openTerminalWindow({\n\t\t\tworkspacePath: options.worktreePath,\n\t\t\tcommand: shellCommand,\n\t\t\t...(backgroundColor && { backgroundColor }),\n\t\t\t// il shell handles env loading internally, so we don't need includeEnvSetup\n\t\t\tincludeEnvSetup: false,\n\t\t\tincludePortExport: options.capabilities.includes('web'),\n\t\t\t...(options.port !== undefined && { port: options.port }),\n\t\t})\n\t\tgetLogger().info('Standalone terminal opened')\n\t}\n\n\t/**\n\t * Build terminal options for Claude\n\t */\n\tprivate async buildClaudeTerminalOptions(\n\t\toptions: LaunchLoomOptions\n\t): Promise<TerminalWindowOptions> {\n\t\tconst hasEnvFile = this.hasAnyEnvFiles(options.worktreePath)\n\t\tconst claudeTitle = `Claude - ${this.formatIdentifier(options.workflowType, options.identifier)}`\n\n\t\tconst executable = options.executablePath ?? 'iloom'\n\t\tlet claudeCommand = `${executable} spin`\n\t\tif (options.oneShot !== undefined && options.oneShot !== 'default') {\n\t\t\tclaudeCommand += ` --one-shot=${options.oneShot}`\n\t\t}\n\t\tif (options.setArguments && options.setArguments.length > 0) {\n\t\t\tfor (const setArg of options.setArguments) {\n\t\t\t\tclaudeCommand += ` --set ${setArg}`\n\t\t\t}\n\t\t}\n\t\tif (options.complexity) {\n\t\t\tclaudeCommand += ` --complexity=${options.complexity}`\n\t\t}\n\t\tif (options.effort) {\n\t\t\tclaudeCommand += ` --effort=${options.effort}`\n\t\t}\n\n\t\t// Only generate color if terminal coloring is enabled (default: true)\n\t\tconst backgroundColor = (options.colorTerminal ?? true)\n\t\t\t? options.colorHex\n\t\t\t\t? hexToRgb(options.colorHex)\n\t\t\t\t: generateColorFromBranchName(options.branchName).rgb\n\t\t\t: undefined\n\n\t\treturn {\n\t\t\tworkspacePath: options.worktreePath,\n\t\t\tcommand: claudeCommand,\n\t\t\t...(backgroundColor && { backgroundColor }),\n\t\t\ttitle: claudeTitle,\n\t\t\tincludeEnvSetup: (options.sourceEnvOnStart ?? false) && hasEnvFile,\n\t\t\t...(options.port !== undefined && { port: options.port, includePortExport: true }),\n\t\t}\n\t}\n\n\t/**\n\t * Build terminal options for dev server\n\t * Uses `il dev-server [identifier]` which handles env loading internally\n\t */\n\tprivate buildDevServerTerminalOptions(\n\t\toptions: LaunchLoomOptions\n\t): TerminalWindowOptions {\n\t\t// Build dev-server command with identifier\n\t\tconst executable = options.executablePath ?? getExecutablePath()\n\t\tconst devServerIdentifier = String(options.identifier)\n\t\tconst devServerCommand = `${executable} dev-server ${devServerIdentifier}`\n\n\t\tconst devServerTitle = `Dev Server - ${this.formatIdentifier(options.workflowType, options.identifier)}`\n\n\t\t// Only generate color if terminal coloring is enabled (default: true)\n\t\tconst backgroundColor = (options.colorTerminal ?? true)\n\t\t\t? options.colorHex\n\t\t\t\t? hexToRgb(options.colorHex)\n\t\t\t\t: generateColorFromBranchName(options.branchName).rgb\n\t\t\t: undefined\n\n\t\treturn {\n\t\t\tworkspacePath: options.worktreePath,\n\t\t\tcommand: devServerCommand,\n\t\t\t...(backgroundColor && { backgroundColor }),\n\t\t\ttitle: devServerTitle,\n\t\t\t// il dev-server handles env loading internally\n\t\t\tincludeEnvSetup: false,\n\t\t\tincludePortExport: options.capabilities.includes('web'),\n\t\t\t...(options.port !== undefined && { port: options.port }),\n\t\t}\n\t}\n\n\t/**\n\t * Build terminal options for standalone terminal\n\t * Runs `il shell <identifier>` which handles env loading internally\n\t */\n\tprivate buildStandaloneTerminalOptions(\n\t\toptions: LaunchLoomOptions\n\t): TerminalWindowOptions {\n\t\tconst terminalTitle = `Terminal - ${this.formatIdentifier(options.workflowType, options.identifier)}`\n\n\t\t// Build shell command with identifier\n\t\t// Use the same executable path pattern as buildClaudeTerminalOptions\n\t\tconst executable = options.executablePath ?? getExecutablePath()\n\t\tconst shellIdentifier = String(options.identifier)\n\t\tconst shellCommand = `${executable} shell ${shellIdentifier}`\n\n\t\t// Only generate color if terminal coloring is enabled (default: true)\n\t\tconst backgroundColor = (options.colorTerminal ?? true)\n\t\t\t? options.colorHex\n\t\t\t\t? hexToRgb(options.colorHex)\n\t\t\t\t: generateColorFromBranchName(options.branchName).rgb\n\t\t\t: undefined\n\n\t\treturn {\n\t\t\tworkspacePath: options.worktreePath,\n\t\t\tcommand: shellCommand,\n\t\t\t...(backgroundColor && { backgroundColor }),\n\t\t\ttitle: terminalTitle,\n\t\t\t// il shell handles env loading internally, so we don't need includeEnvSetup\n\t\t\tincludeEnvSetup: false,\n\t\t\tincludePortExport: options.capabilities.includes('web'),\n\t\t\t...(options.port !== undefined && { port: options.port }),\n\t\t}\n\t}\n\n\t/**\n\t * Launch multiple terminals (2+) as tabs in single window\n\t */\n\tprivate async launchMultipleTerminals(\n\t\tterminals: Array<{ type: string; options: TerminalWindowOptions }>,\n\t\t_options: LaunchLoomOptions\n\t): Promise<void> {\n\t\tconst terminalOptions = terminals.map((t) => t.options)\n\n\t\tawait openMultipleTerminalWindows(terminalOptions)\n\n\t\tconst terminalTypes = terminals.map((t) => t.type).join(' + ')\n\t\tgetLogger().info(`Multiple terminals opened: ${terminalTypes}`)\n\t}\n\n\t/**\n\t * Check if any dotenv-flow files exist in the workspace\n\t * Checks all files: .env, .env.local, .env.{NODE_ENV}, .env.{NODE_ENV}.local\n\t */\n\tprivate hasAnyEnvFiles(workspacePath: string): boolean {\n\t\tconst envFiles = getDotenvFlowFiles()\n\t\treturn envFiles.some(file => existsSync(join(workspacePath, file)))\n\t}\n\n\t/**\n\t * Format identifier for terminal tab titles\n\t */\n\tprivate formatIdentifier(workflowType: 'issue' | 'pr' | 'regular', identifier: string | number): string {\n\t\tif (workflowType === 'issue') {\n\t\t\treturn `Issue #${identifier}`\n\t\t} else if (workflowType === 'pr') {\n\t\t\treturn `PR #${identifier}`\n\t\t} else {\n\t\t\treturn `Branch: ${identifier}`\n\t\t}\n\t}\n}\n"],"mappings":"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","names":[]}
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  MetadataManager
4
- } from "./chunk-XIVLGWUX.js";
4
+ } from "./chunk-JDXJIPXR.js";
5
5
  import "./chunk-FTYWGQFM.js";
6
6
  import "./chunk-VRPPI6GU.js";
7
7
  export {
8
8
  MetadataManager
9
9
  };
10
- //# sourceMappingURL=MetadataManager-HHE6LQF2.js.map
10
+ //# sourceMappingURL=MetadataManager-WKM7JJIO.js.map
package/dist/README.md CHANGED
@@ -880,7 +880,7 @@ License & Name
880
880
 
881
881
  * ❌ You cannot resell iloom itself as a product or SaaS.
882
882
 
883
- * Converts to Apache 2.0 on 2030-03-21.
883
+ * Converts to Apache 2.0 on 2030-03-25.
884
884
 
885
885
 
886
886
  See [LICENSE](https://raw.githubusercontent.com/iloom-ai/iloom-cli/main/LICENSE) for complete terms.
@@ -15,13 +15,14 @@ import {
15
15
  SpinAgentSettingsSchema,
16
16
  SummarySettingsSchema,
17
17
  VALID_CLAUDE_MODELS,
18
+ VALID_EFFORT_LEVELS,
18
19
  WorkflowPermissionSchema,
19
20
  WorkflowPermissionSchemaNoDefaults,
20
21
  WorkflowsSettingsSchema,
21
22
  WorkflowsSettingsSchemaNoDefaults,
22
23
  mergeModeValues,
23
24
  redactSensitiveFields
24
- } from "./chunk-MNPKEWBQ.js";
25
+ } from "./chunk-UVZBZ5IF.js";
25
26
  import "./chunk-VRPPI6GU.js";
26
27
  export {
27
28
  AgentSettingsSchema,
@@ -39,6 +40,7 @@ export {
39
40
  SpinAgentSettingsSchema,
40
41
  SummarySettingsSchema,
41
42
  VALID_CLAUDE_MODELS,
43
+ VALID_EFFORT_LEVELS,
42
44
  WorkflowPermissionSchema,
43
45
  WorkflowPermissionSchemaNoDefaults,
44
46
  WorkflowsSettingsSchema,
@@ -46,4 +48,4 @@ export {
46
48
  mergeModeValues,
47
49
  redactSensitiveFields
48
50
  };
49
- //# sourceMappingURL=SettingsManager-PVHBSCMI.js.map
51
+ //# sourceMappingURL=SettingsManager-Y5OU5HCX.js.map
@@ -34,11 +34,14 @@ complexity-evaluator → analyzer (or analyze-and-plan for SIMPLE) → planner
34
34
 
35
35
  ## YAML Frontmatter Format
36
36
 
37
+ Frontmatter fields support Handlebars expressions because template substitution runs on the raw file content **before** YAML parsing. This allows conditional defaults based on execution mode (e.g., swarm vs regular).
38
+
37
39
  ```yaml
38
40
  ---
39
41
  name: iloom-issue-implementer
40
42
  description: One-line description of this agent's role
41
- model: opus # Default model (can be overridden by settings)
43
+ model: {{#if SWARM_MODE}}sonnet{{else}}opus{{/if}}
44
+ {{#if SWARM_MODE}}effort: medium{{/if}}
42
45
  color: green # Optional: terminal color for status display
43
46
  tools: # Optional: restrict available tools
44
47
  - Read
@@ -49,15 +52,17 @@ tools: # Optional: restrict available tools
49
52
  Agent prompt content in Markdown...
50
53
  ```
51
54
 
52
- ## Model Override Rules
55
+ When `SWARM_MODE` is falsy, conditional lines (like `{{#if SWARM_MODE}}effort: medium{{/if}}`) resolve to an empty line, which is ignored by the parser — the agent inherits the session default.
56
+
57
+ ## Model and Effort Override Rules
53
58
 
54
- Agent models resolve in this order (highest priority first):
59
+ Agent models and effort resolve in this order (highest priority first):
55
60
  1. **CLI flag**: `--set agents.iloom-issue-implementer.model=sonnet`
56
- 2. **Settings**: `settings.agents["iloom-issue-implementer"].model`
57
- 3. **Swarm model defaults**: `SwarmSetupService` applies swarm-specific defaults (e.g., haiku for complexity evaluator)
58
- 4. **Frontmatter**: The `model` field in the YAML above
61
+ 2. **Settings**: `settings.agents["iloom-issue-implementer"].model` / `.effort`
62
+ 3. **Swarm settings**: `settings.agents["iloom-issue-implementer"].swarmModel` / `.swarmEffort` (applied by `SwarmSetupService` in swarm mode)
63
+ 4. **Frontmatter**: The `model` / `effort` field in YAML above (which may use `{{#if SWARM_MODE}}` conditionals for mode-specific defaults)
59
64
 
60
- Do NOT hardcode model choices in agent templates to work around performance issues use the settings system instead.
65
+ Swarm-specific model and effort defaults are declared directly in agent template frontmatter using `{{#if SWARM_MODE}}` conditionals, not in hardcoded maps.
61
66
 
62
67
  ## Swarm Agent Rendering
63
68
 
@@ -1,7 +1,8 @@
1
1
  ---
2
2
  name: iloom-code-reviewer
3
3
  description: Use this agent to review code changes.
4
- model: opus
4
+ model: {{#if SWARM_MODE}}sonnet{{else}}opus{{/if}}
5
+ {{#if SWARM_MODE}}effort: medium{{/if}}
5
6
  color: cyan
6
7
  ---
7
8
 
@@ -3,6 +3,7 @@ name: iloom-framework-detector
3
3
  description: Use this agent to detect a project's language and framework, then generate appropriate build/test/dev scripts for non-Node.js projects. The agent creates `.iloom/package.iloom.json` with shell commands tailored to the detected stack. Use this for Python, Rust, Ruby, Go, and other non-Node.js projects that don't have a package.json.
4
4
  color: cyan
5
5
  model: opus
6
+ effort: high
6
7
  ---
7
8
 
8
9
  You are Claude, a framework detection specialist. Your task is to analyze a project's structure and generate appropriate install/build/test/dev scripts for iloom.
@@ -60,9 +61,9 @@ If only `origin` exists (or no upstream), proceed normally with `package.iloom.j
60
61
 
61
62
  ## Core Workflow
62
63
 
63
- ### Step 1: Scan for Language Markers
64
+ ### Step 1: Scan for Language Markers and Dockerfile
64
65
 
65
- Examine the project root for language-specific files:
66
+ Examine the project root for language-specific files **and** a Dockerfile:
66
67
 
67
68
  | Marker File | Language | Package Manager |
68
69
  |-------------|----------|-----------------|
@@ -76,10 +77,11 @@ Examine the project root for language-specific files:
76
77
  | `*.csproj`, `*.sln` | C#/.NET | dotnet |
77
78
  | `Makefile` | C/C++/Generic | make |
78
79
  | `CMakeLists.txt` | C/C++ | cmake |
80
+ | `Dockerfile` | Any (Docker) | docker |
79
81
 
80
82
  Use the `Glob` tool to check for these files:
81
83
  ```
82
- Glob pattern: "{Cargo.toml,requirements.txt,pyproject.toml,setup.py,Gemfile,go.mod,pom.xml,build.gradle*,Package.swift,mix.exs,*.csproj,*.sln,Makefile,CMakeLists.txt}"
84
+ Glob pattern: "{Cargo.toml,requirements.txt,pyproject.toml,setup.py,Gemfile,go.mod,pom.xml,build.gradle*,Package.swift,mix.exs,*.csproj,*.sln,Makefile,CMakeLists.txt,Dockerfile}"
83
85
  ```
84
86
 
85
87
  ### Step 2: Detect Framework (if applicable)
@@ -107,7 +109,21 @@ For each detected language, look for framework-specific indicators:
107
109
  - `gorilla/mux` in go.mod = Gorilla Mux
108
110
  - `fiber` in go.mod = Fiber
109
111
 
110
- ### Step 3: Generate package.iloom.json
112
+ ### Step 3: Docker Detection (Report Only)
113
+
114
+ If a `Dockerfile` was found in Step 1:
115
+
116
+ 1. **Record the finding** — set `dockerfileFound: true` in `_metadata`
117
+ 2. **Do NOT ask the user** about Docker — you don't have access to interactive tools. The init prompt will handle that question.
118
+ 3. **Always generate a `dev` script** as normal — the init prompt will decide whether to use Docker or native mode based on the user's answer.
119
+
120
+ If no `Dockerfile` was found, skip this and proceed to Step 4.
121
+
122
+ **Note:** Docker Compose (`docker-compose.yml`) is not supported. Only single-container Dockerfiles are supported.
123
+
124
+ ---
125
+
126
+ ### Step 4: Generate package.iloom.json
111
127
 
112
128
  Create `.iloom/package.iloom.json` with appropriate scripts and capabilities based on detection:
113
129
 
@@ -115,6 +131,27 @@ Create `.iloom/package.iloom.json` with appropriate scripts and capabilities bas
115
131
  - `"cli"` - Include if project has CLI components (e.g., `[[bin]]` in Cargo.toml, CLI frameworks like click/typer/clap)
116
132
  - `"web"` - Include if project has web components (e.g., Flask/Django/FastAPI/Rails/Actix/Rocket)
117
133
 
134
+ **Dockerfile Detection (from Step 3):**
135
+ If a Dockerfile was found, include `"dockerfileFound": true` in `_metadata`. Always generate the `dev` script regardless — the init prompt will ask the user whether to use Docker and will remove the `dev` script if Docker mode is chosen.
136
+
137
+ Example — web project where Dockerfile was found:
138
+ ```json
139
+ {
140
+ "capabilities": ["web"],
141
+ "scripts": {
142
+ "install": "pip install -r requirements.txt",
143
+ "test": "pytest",
144
+ "dev": "python manage.py runserver"
145
+ },
146
+ "_metadata": {
147
+ "detectedLanguage": "python",
148
+ "detectedFramework": "django",
149
+ "dockerfileFound": true,
150
+ "generatedBy": "iloom-framework-detector"
151
+ }
152
+ }
153
+ ```
154
+
118
155
  **Common Patterns by Language:**
119
156
 
120
157
  #### Rust CLI
@@ -341,7 +378,7 @@ Create `.iloom/package.iloom.json` with appropriate scripts and capabilities bas
341
378
  }
342
379
  ```
343
380
 
344
- ### Step 4: Write the File
381
+ ### Step 5: Write the File
345
382
 
346
383
  **⚠️ CHECKPOINT: Verify fork status from Step 0 before proceeding.**
347
384
 
@@ -364,9 +401,12 @@ If NOT a fork:
364
401
  - Preserve any other existing fields (like `_metadata`)
365
402
  4. **If the file does not exist:**
366
403
  - Create the full detected configuration
367
- 5. Ensure `.iloom/` directory exists
368
- 6. Write the merged/new JSON to the target file
369
- 7. Report what was detected, which file was written, and what changes were made (if any)
404
+ 5. **If Dockerfile was found (from Step 3):**
405
+ - Add `"dockerfileFound": true` to `_metadata`
406
+ - Still include the `dev` script the init prompt handles Docker mode
407
+ 6. Ensure `.iloom/` directory exists
408
+ 7. Write the merged/new JSON to the target file
409
+ 8. Report what was detected, which file was written, and what changes were made (if any)
370
410
 
371
411
  **File Selection Summary:**
372
412
  | Scenario | Target File | Reason |
@@ -387,6 +427,7 @@ Detected:
387
427
  - Framework: [framework or "None detected"]
388
428
  - Package Manager: [package manager]
389
429
  - Capabilities: [cli, web, or none]
430
+ - Dockerfile: [Found | Not found]
390
431
  - Fork Status: [Yes (origin + upstream) | No]
391
432
 
392
433
  Created: .iloom/[package.iloom.json OR package.iloom.local.json]
@@ -398,6 +439,9 @@ Configuration:
398
439
  - test: [command]
399
440
  - dev: [command]
400
441
 
442
+ [If Dockerfile found]: A Dockerfile was detected. The init wizard will ask whether
443
+ to use Docker for the dev server.
444
+
401
445
  [If fork]: This configuration was saved to the LOCAL file (package.iloom.local.json)
402
446
  because you're working on a fork. This prevents your iloom settings
403
447
  from appearing in PRs to upstream.
@@ -429,6 +473,9 @@ You can customize these settings by editing .iloom/[filename].
429
473
  DO NOT:
430
474
  - Execute any build/test/dev commands
431
475
  - Install dependencies
432
- - Modify any files other than `.iloom/package.iloom.json`
476
+ - Modify any files other than `.iloom/package.iloom.json` (or `.local.json` for forks)
433
477
  - Make assumptions about project-specific configuration
434
478
  - Add scripts that require additional setup not evident from the project
479
+ - Ask the user questions — you don't have access to interactive tools. Report findings in `_metadata` and let the init prompt handle user interaction.
480
+ - Configure Docker settings in `.iloom/settings.json` — that's the init prompt's responsibility
481
+ - Recommend Docker for `docker-compose.yml` projects — only single-container Dockerfiles are supported
@@ -3,6 +3,7 @@ name: iloom-issue-analyze-and-plan
3
3
  description: Combined analysis and planning agent for SIMPLE tasks. This agent performs lightweight analysis and creates an implementation plan in one streamlined phase. Only invoked for tasks pre-classified as SIMPLE (< 5 files, <200 LOC, no breaking changes, no DB migrations). Use this agent when you have a simple issue that needs quick analysis followed by immediate planning.
4
4
  color: teal
5
5
  model: opus
6
+ {{#if SWARM_MODE}}effort: high{{/if}}
6
7
  ---
7
8
 
8
9
  {{#if SWARM_MODE}}
@@ -3,6 +3,7 @@ name: iloom-issue-analyzer
3
3
  description: Use this agent when you need to analyze and research issues, bugs, or enhancement requests. The agent will investigate the codebase, recent commits, and third-party dependencies to identify root causes WITHOUT proposing solutions. Ideal for initial issue triage, regression analysis, and documenting technical findings for team discussion.\n\nExamples:\n<example>\nContext: User wants to analyze a newly reported bug in issue #42\nuser: "Please analyze issue #42 - users are reporting that the login button doesn't work on mobile"\nassistant: "I'll use the issue-analyzer agent to investigate this issue and document my findings."\n<commentary>\nSince this is a request to analyze an issue, use the Task tool to launch the issue-analyzer agent to research the problem.\n</commentary>\n</example>\n<example>\nContext: User needs to understand a regression that appeared after recent changes\nuser: "Can you look into issue #78? It seems like something broke after yesterday's deployment"\nassistant: "Let me launch the issue-analyzer agent to research this regression and identify what changed."\n<commentary>\nThe user is asking for issue analysis and potential regression investigation, so use the issue-analyzer agent.\n</commentary>\n</example>
4
4
  color: pink
5
5
  model: opus
6
+ {{#if SWARM_MODE}}effort: high{{/if}}
6
7
  ---
7
8
 
8
9
  {{#if SWARM_MODE}}
@@ -3,6 +3,7 @@ name: iloom-issue-complexity-evaluator
3
3
  description: Use this agent when you need to quickly assess the complexity of an issue before deciding on the appropriate workflow. This agent performs a lightweight scan to classify issues as SIMPLE or COMPLEX based on estimated scope, risk, and impact. Runs first before any detailed analysis or planning.
4
4
  color: orange
5
5
  model: haiku
6
+ {{#if SWARM_MODE}}effort: high{{/if}}
6
7
  ---
7
8
 
8
9
  {{#if SWARM_MODE}}
@@ -2,7 +2,8 @@
2
2
  name: iloom-issue-enhancer
3
3
  description: Use this agent when you need to analyze bug or enhancement reports from a Product Manager perspective. The agent accepts either an issue identifier or direct text description and creates structured specifications that enhance the original user report for development teams without performing code analysis or suggesting implementations. Ideal for triaging bugs and feature requests to prepare them for technical analysis and planning.\n\nExamples:\n<example>\nContext: User wants to triage and enhance a bug report from issue tracker\nuser: "Please analyze issue #42 - the login button doesn't work on mobile"\nassistant: "I'll use the iloom-issue-enhancer agent to analyze this bug report and create a structured specification."\n<commentary>\nSince this is a request to triage and structure a bug report from a user experience perspective, use the iloom-issue-enhancer agent.\n</commentary>\n</example>\n<example>\nContext: User needs to enhance an enhancement request that lacks detail\nuser: "Can you improve the description on issue #78? The user's request is pretty vague"\nassistant: "Let me launch the iloom-issue-enhancer agent to analyze the enhancement request and create a clear specification."\n<commentary>\nThe user is asking for enhancement report structuring, so use the iloom-issue-enhancer agent.\n</commentary>\n</example>\n<example>\nContext: User provides direct description without issue identifier\nuser: "Analyze this bug: Users report that the search function returns no results when they include special characters like & or # in their query"\nassistant: "I'll use the iloom-issue-enhancer agent to create a structured specification for this bug report."\n<commentary>\nEven though no issue identifier was provided, the iloom-issue-enhancer agent can analyze the direct description and create a structured specification.\n</commentary>\n</example>\n<example>\nContext: An issue has been labeled as a valid baug and needs structured analysis\nuser: "Structure issue #123 that was just labeled as a triaged bug"\nassistant: "I'll use the iloom-issue-enhancer agent to create a comprehensive bug specification."\n<commentary>\nThe issue needs Product Manager-style analysis and structuring, so use the iloom-issue-enhancer agent.\n</commentary>\n</example>
4
4
  color: purple
5
- model: opus
5
+ model: {{#if SWARM_MODE}}sonnet{{else}}opus{{/if}}
6
+ {{#if SWARM_MODE}}effort: medium{{/if}}
6
7
  ---
7
8
 
8
9
  {{#if SWARM_MODE}}
@@ -1,7 +1,8 @@
1
1
  ---
2
2
  name: iloom-issue-implementer
3
3
  description: Use this agent when you need to implement an issue exactly as specified in its comments and description. This agent reads issue details, follows implementation plans precisely, and ensures all code passes tests, typechecking, and linting before completion. Examples:\n\n<example>\nContext: User wants to implement a specific issue.\nuser: "Please implement issue #42"\nassistant: "I'll use the issue-implementer agent to read and implement issue #42 exactly as specified."\n<commentary>\nSince the user is asking to implement an issue, use the Task tool to launch the issue-implementer agent.\n</commentary>\n</example>\n\n<example>\nContext: User references an issue that needs implementation.\nuser: "Can you work on the authentication issue we discussed in #15?"\nassistant: "Let me launch the issue-implementer agent to read issue #15 and implement it according to the plan in the comments."\n<commentary>\nThe user is referencing a specific issue number, so use the issue-implementer agent to handle the implementation.\n</commentary>\n</example>
4
- model: opus
4
+ model: {{#if SWARM_MODE}}sonnet{{else}}opus{{/if}}
5
+ {{#if SWARM_MODE}}effort: medium{{/if}}
5
6
  color: green
6
7
  ---
7
8
 
@@ -43,6 +44,8 @@ After creating or updating any issue comment, use the Recap MCP tools:
43
44
 
44
45
  This enables the recap panel to show quick-reference links to artifacts created during the session.
45
46
 
47
+ **Do NOT log `fix` recap entries** — the orchestrator tracks which review findings were addressed.
48
+
46
49
  {{#if SWARM_MODE}}
47
50
  **IMPORTANT**: You are running inline in a swarm worker's context. You MUST pass `worktreePath` on ALL recap calls (`add_artifact`, `add_entry`, `set_loom_state`, `get_recap`). The worktree path is provided by the caller — look for it in your invocation prompt (e.g., "Your worktree path is ..."). Without `worktreePath`, recap entries go to the epic's recap file instead of the child's.
48
51
  {{/if}}
@@ -2,7 +2,8 @@
2
2
  name: iloom-issue-planner
3
3
  description: Use this agent when you need to analyze issues and create detailed implementation plans. This agent specializes in reading issue context, understanding requirements, and creating focused implementation plans with specific file changes and line numbers. The agent will document the plan as a comment on the issue without executing any changes. Examples: <example>Context: The user wants detailed implementation planning for an issue.\nuser: "Analyze issue #42 and create an implementation plan"\nassistant: "I'll use the issue-planner agent to analyze the issue and create a detailed implementation plan"\n<commentary>Since the user wants issue analysis and implementation planning, use the issue-planner agent.</commentary></example> <example>Context: The user needs a plan for implementing a feature described in an issue.\nuser: "Read issue #15 and plan out what needs to be changed"\nassistant: "Let me use the issue-planner agent to analyze the issue and document a comprehensive implementation plan"\n<commentary>The user needs issue analysis and planning, so the issue-planner agent is the right choice.</commentary></example>
4
4
  color: blue
5
- model: opus
5
+ model: {{#if SWARM_MODE}}sonnet{{else}}opus{{/if}}
6
+ {{#if SWARM_MODE}}effort: high{{/if}}
6
7
  ---
7
8
 
8
9
  {{#if SWARM_MODE}}
@@ -2,6 +2,7 @@
2
2
  name: iloom-wave-verifier
3
3
  description: Wave verification agent that checks must-have criteria from child issues after each swarm wave, invokes fix skills for failures, and reports structured results.\n\nExamples:\n<example>\nContext: Orchestrator wants to verify that wave 1 work meets acceptance criteria\nuser: "Verify must-haves for issues #101, #102, #103 from wave 1"\nassistant: "I'll check all must-have criteria from those issues against the codebase and report results."\n<commentary>\nThe orchestrator needs wave verification after a completed wave, so use the iloom-wave-verifier agent.\n</commentary>\n</example>\n<example>\nContext: Swarm orchestrator needs to gate the next wave on verification passing\nuser: "Run wave verification for child issues #45, #46 before proceeding to wave 2"\nassistant: "I'll verify all must-haves for the specified issues, fix any failures, and return a structured report."\n<commentary>\nWave gating requires verification of completed work, so use the iloom-wave-verifier agent.\n</commentary>\n</example>
4
4
  model: opus
5
+ effort: high
5
6
  color: red
6
7
  ---
7
8
 
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ScriptCommandBase
4
- } from "./chunk-DMNI225H.js";
5
- import "./chunk-XC5JKRSH.js";
4
+ } from "./chunk-SM2YM3YR.js";
5
+ import "./chunk-6RKZDUTQ.js";
6
6
  import "./chunk-OLJ54WGW.js";
7
- import "./chunk-D6FU4DLN.js";
7
+ import "./chunk-LULQYBRA.js";
8
8
  import "./chunk-K3QGG4O2.js";
9
- import "./chunk-5W44AI63.js";
10
- import "./chunk-MNPKEWBQ.js";
11
- import "./chunk-XIVLGWUX.js";
9
+ import "./chunk-6FHFHMNF.js";
10
+ import "./chunk-UVZBZ5IF.js";
11
+ import "./chunk-JDXJIPXR.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-2FXDYEZQ.js.map
27
+ //# sourceMappingURL=build-NJJT6UHO.js.map
@@ -38,7 +38,7 @@ import {
38
38
  } from "./chunk-KV4NU3RP.js";
39
39
  import {
40
40
  SettingsManager
41
- } from "./chunk-MNPKEWBQ.js";
41
+ } from "./chunk-UVZBZ5IF.js";
42
42
  import {
43
43
  logger
44
44
  } from "./chunk-VRPPI6GU.js";
@@ -1436,4 +1436,4 @@ var IssueManagementProviderFactory = class {
1436
1436
  export {
1437
1437
  IssueManagementProviderFactory
1438
1438
  };
1439
- //# sourceMappingURL=chunk-VUIPDX3T.js.map
1439
+ //# sourceMappingURL=chunk-27CQSBUG.js.map
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  extractIssueNumber
4
- } from "./chunk-5W44AI63.js";
4
+ } from "./chunk-6FHFHMNF.js";
5
5
  import {
6
6
  extractPort,
7
7
  findEnvFileContainingVariable,
@@ -113,4 +113,4 @@ export {
113
113
  calculatePortFromIdentifier,
114
114
  getWorkspacePort
115
115
  };
116
- //# sourceMappingURL=chunk-YVNG35OW.js.map
116
+ //# sourceMappingURL=chunk-2Z4VKQND.js.map
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  findMainWorktreePathWithSettings
4
- } from "./chunk-5W44AI63.js";
4
+ } from "./chunk-6FHFHMNF.js";
5
5
  import {
6
6
  MetadataManager
7
- } from "./chunk-XIVLGWUX.js";
7
+ } from "./chunk-JDXJIPXR.js";
8
8
  import {
9
9
  getLogger
10
10
  } from "./chunk-FTYWGQFM.js";
@@ -70,4 +70,4 @@ export {
70
70
  archiveRecap,
71
71
  findArchivedRecap
72
72
  };
73
- //# sourceMappingURL=chunk-UQWMPQ2Q.js.map
73
+ //# sourceMappingURL=chunk-4QROZMPZ.js.map
@@ -4,16 +4,16 @@ import {
4
4
  } from "./chunk-NXMDEL3F.js";
5
5
  import {
6
6
  VCSProviderFactory
7
- } from "./chunk-L3P3YJCE.js";
7
+ } from "./chunk-RLFS5KHU.js";
8
8
  import {
9
9
  TelemetryService
10
10
  } from "./chunk-MY2Q3FJ3.js";
11
11
  import {
12
12
  resolveRecapFilePath
13
- } from "./chunk-CQHHEW2M.js";
13
+ } from "./chunk-5WJN63T4.js";
14
14
  import {
15
15
  IssueManagementProviderFactory
16
- } from "./chunk-VUIPDX3T.js";
16
+ } from "./chunk-27CQSBUG.js";
17
17
  import {
18
18
  PromptTemplateManager
19
19
  } from "./chunk-LDE6VNG5.js";
@@ -23,13 +23,13 @@ import {
23
23
  import {
24
24
  generateDeterministicSessionId,
25
25
  launchClaude
26
- } from "./chunk-DDHWZNGL.js";
26
+ } from "./chunk-MB4CB7Q4.js";
27
27
  import {
28
28
  SettingsManager
29
- } from "./chunk-MNPKEWBQ.js";
29
+ } from "./chunk-UVZBZ5IF.js";
30
30
  import {
31
31
  MetadataManager
32
- } from "./chunk-XIVLGWUX.js";
32
+ } from "./chunk-JDXJIPXR.js";
33
33
  import {
34
34
  getLogger
35
35
  } from "./chunk-FTYWGQFM.js";
@@ -617,4 +617,4 @@ var SessionSummaryService = class {
617
617
  export {
618
618
  SessionSummaryService
619
619
  };
620
- //# sourceMappingURL=chunk-U2OPXZ6E.js.map
620
+ //# sourceMappingURL=chunk-5NVJ6N3C.js.map