@iloom/cli 0.9.2 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +159 -40
  3. package/dist/{BranchNamingService-K6XNWQ6C.js → BranchNamingService-ECJHBB67.js} +2 -2
  4. package/dist/ClaudeContextManager-QXX6ZFST.js +14 -0
  5. package/dist/ClaudeService-NJNK2SUH.js +13 -0
  6. package/dist/{GitHubService-TGWJN4V4.js → GitHubService-MEHKHUQP.js} +4 -4
  7. package/dist/IssueTrackerFactory-NG53YX5S.js +14 -0
  8. package/dist/{LoomLauncher-73NXL2CL.js → LoomLauncher-L64HHS3T.js} +9 -9
  9. package/dist/{MetadataManager-W3C54UYT.js → MetadataManager-5QZSTKNN.js} +2 -2
  10. package/dist/{ProjectCapabilityDetector-N5L7T4IY.js → ProjectCapabilityDetector-5KSYUTBJ.js} +3 -3
  11. package/dist/{PromptTemplateManager-36YLQRHP.js → PromptTemplateManager-DULSVRRE.js} +2 -2
  12. package/dist/README.md +159 -40
  13. package/dist/{SettingsManager-AW3JTJHD.js → SettingsManager-BQDQA3FK.js} +4 -2
  14. package/dist/agents/iloom-artifact-reviewer.md +11 -0
  15. package/dist/agents/iloom-code-reviewer.md +14 -0
  16. package/dist/agents/iloom-issue-analyze-and-plan.md +55 -12
  17. package/dist/agents/iloom-issue-analyzer.md +49 -6
  18. package/dist/agents/iloom-issue-complexity-evaluator.md +47 -6
  19. package/dist/agents/iloom-issue-enhancer.md +86 -7
  20. package/dist/agents/iloom-issue-implementer.md +48 -7
  21. package/dist/agents/iloom-issue-planner.md +115 -62
  22. package/dist/{build-THZI572G.js → build-5GO3XW26.js} +9 -9
  23. package/dist/{chunk-NUACL52E.js → chunk-3D7WQM7I.js} +2 -2
  24. package/dist/chunk-4232AHNQ.js +35 -0
  25. package/dist/chunk-4232AHNQ.js.map +1 -0
  26. package/dist/{chunk-QN47QVBX.js → chunk-4WJNIR5O.js} +1 -1
  27. package/dist/chunk-4WJNIR5O.js.map +1 -0
  28. package/dist/{chunk-A7NJF73J.js → chunk-5MWV33NN.js} +4 -4
  29. package/dist/{chunk-3I4ONZRT.js → chunk-6EU6TCF6.js} +10 -10
  30. package/dist/chunk-6EU6TCF6.js.map +1 -0
  31. package/dist/{chunk-CWRI4JC3.js → chunk-FB47TIJG.js} +29 -11
  32. package/dist/chunk-FB47TIJG.js.map +1 -0
  33. package/dist/chunk-HEXKPKCK.js +1396 -0
  34. package/dist/chunk-HEXKPKCK.js.map +1 -0
  35. package/dist/{chunk-KAYXR544.js → chunk-J5S7DFYC.js} +2 -2
  36. package/dist/{chunk-ULSWCPQG.js → chunk-JO2LZ6EQ.js} +476 -5
  37. package/dist/chunk-JO2LZ6EQ.js.map +1 -0
  38. package/dist/{chunk-KBEIQP4G.js → chunk-KB64WNBZ.js} +43 -3
  39. package/dist/chunk-KB64WNBZ.js.map +1 -0
  40. package/dist/{chunk-OFDN5NKS.js → chunk-KXDRI47U.js} +69 -12
  41. package/dist/chunk-KXDRI47U.js.map +1 -0
  42. package/dist/{chunk-R4YWBGY6.js → chunk-LXLMMXXY.js} +54 -14
  43. package/dist/chunk-LXLMMXXY.js.map +1 -0
  44. package/dist/{chunk-AR5QKYNE.js → chunk-MNHZB4Z2.js} +4 -4
  45. package/dist/{chunk-TL72BGP6.js → chunk-MORRVYPT.js} +2 -2
  46. package/dist/{chunk-KJTVU3HZ.js → chunk-NRSWLOAZ.js} +8 -8
  47. package/dist/chunk-NRSWLOAZ.js.map +1 -0
  48. package/dist/{chunk-FO5GGFOV.js → chunk-ONQYPICO.js} +13 -5
  49. package/dist/chunk-ONQYPICO.js.map +1 -0
  50. package/dist/{chunk-7ZEHSSUP.js → chunk-P4O6EH46.js} +4 -4
  51. package/dist/chunk-QZWEJVWV.js +207 -0
  52. package/dist/chunk-QZWEJVWV.js.map +1 -0
  53. package/dist/chunk-RSYT7MVI.js +202 -0
  54. package/dist/chunk-RSYT7MVI.js.map +1 -0
  55. package/dist/{chunk-Z2TWEXR7.js → chunk-RYWFS37M.js} +6 -6
  56. package/dist/chunk-RYWFS37M.js.map +1 -0
  57. package/dist/{chunk-B7U6OKUR.js → chunk-SF2P22EE.js} +11 -3
  58. package/dist/chunk-SF2P22EE.js.map +1 -0
  59. package/dist/{chunk-6IIL5M2L.js → chunk-SN3SQCFK.js} +10 -8
  60. package/dist/{chunk-6IIL5M2L.js.map → chunk-SN3SQCFK.js.map} +1 -1
  61. package/dist/{chunk-SOSQILHO.js → chunk-UD3WJDIV.js} +92 -82
  62. package/dist/chunk-UD3WJDIV.js.map +1 -0
  63. package/dist/{chunk-KXGQYLFZ.js → chunk-UKBAJ2QQ.js} +61 -7
  64. package/dist/chunk-UKBAJ2QQ.js.map +1 -0
  65. package/dist/{chunk-W6DP5RVR.js → chunk-UVD4CZKS.js} +3 -3
  66. package/dist/chunk-UWGVCXRF.js +207 -0
  67. package/dist/chunk-UWGVCXRF.js.map +1 -0
  68. package/dist/{chunk-NWMORW3U.js → chunk-VECNX6VX.js} +2 -2
  69. package/dist/{chunk-4CO6KG5S.js → chunk-VG45TUYK.js} +53 -7
  70. package/dist/{chunk-4CO6KG5S.js.map → chunk-VG45TUYK.js.map} +1 -1
  71. package/dist/{chunk-TC7APDKU.js → chunk-VGGST52X.js} +2 -2
  72. package/dist/{chunk-4LKGCFGG.js → chunk-WWKOVDWC.js} +2 -2
  73. package/dist/{chunk-YKFCCV6S.js → chunk-WY4QBK43.js} +7 -7
  74. package/dist/chunk-WY4QBK43.js.map +1 -0
  75. package/dist/chunk-Y4YZTHZE.js +73 -0
  76. package/dist/chunk-Y4YZTHZE.js.map +1 -0
  77. package/dist/{chunk-VOGGLPG5.js → chunk-YQ57ORTV.js} +14 -1
  78. package/dist/chunk-YQ57ORTV.js.map +1 -0
  79. package/dist/{chunk-RI2YL6TK.js → chunk-YYAKPQBT.js} +65 -18
  80. package/dist/chunk-YYAKPQBT.js.map +1 -0
  81. package/dist/{chunk-IZIYLYPK.js → chunk-ZEWU5PZK.js} +2 -2
  82. package/dist/{chunk-VPTAX5TR.js → chunk-ZHPNZC75.js} +12 -12
  83. package/dist/chunk-ZHPNZC75.js.map +1 -0
  84. package/dist/{chunk-DGG2VY7B.js → chunk-ZW2LKWWE.js} +9 -9
  85. package/dist/chunk-ZW2LKWWE.js.map +1 -0
  86. package/dist/{claude-TP2QO3BU.js → claude-P3NQR6IJ.js} +2 -2
  87. package/dist/{cleanup-PJRIFFU4.js → cleanup-6UCPVMFG.js} +81 -32
  88. package/dist/cleanup-6UCPVMFG.js.map +1 -0
  89. package/dist/cli.js +638 -349
  90. package/dist/cli.js.map +1 -1
  91. package/dist/{commit-IVP3M4HG.js → commit-L3EPY5QG.js} +21 -20
  92. package/dist/commit-L3EPY5QG.js.map +1 -0
  93. package/dist/{compile-R2J65HBQ.js → compile-ZS4HYRX5.js} +9 -9
  94. package/dist/{contribute-VDZXHK5Y.js → contribute-ORDDQGSL.js} +14 -6
  95. package/dist/contribute-ORDDQGSL.js.map +1 -0
  96. package/dist/{dev-server-7F622OEO.js → dev-server-FYZ2AQIH.js} +29 -15
  97. package/dist/dev-server-FYZ2AQIH.js.map +1 -0
  98. package/dist/{feedback-E7VET7CL.js → feedback-TMBXSCM5.js} +15 -15
  99. package/dist/{git-2QDQ2X2S.js → git-ET64COO3.js} +4 -4
  100. package/dist/hooks/iloom-hook.js +15 -0
  101. package/dist/ignite-CGOV3TD4.js +1393 -0
  102. package/dist/ignite-CGOV3TD4.js.map +1 -0
  103. package/dist/index.d.ts +382 -53
  104. package/dist/index.js +1167 -36
  105. package/dist/index.js.map +1 -1
  106. package/dist/{init-676DHF6R.js → init-GFQ5W7GK.js} +57 -21
  107. package/dist/init-GFQ5W7GK.js.map +1 -0
  108. package/dist/{issues-PJSOLOBJ.js → issues-T4ZZSPEG.js} +61 -20
  109. package/dist/issues-T4ZZSPEG.js.map +1 -0
  110. package/dist/{lint-CJM7BAIM.js → lint-6TQXDZ3T.js} +9 -9
  111. package/dist/mcp/issue-management-server.js +2471 -256
  112. package/dist/mcp/issue-management-server.js.map +1 -1
  113. package/dist/mcp/recap-server.js +144 -21
  114. package/dist/mcp/recap-server.js.map +1 -1
  115. package/dist/{neon-helpers-VVFFTLXE.js → neon-helpers-CQN2PB4S.js} +3 -3
  116. package/dist/neon-helpers-CQN2PB4S.js.map +1 -0
  117. package/dist/{open-544H7JF5.js → open-5QZGXQRF.js} +15 -15
  118. package/dist/open-5QZGXQRF.js.map +1 -0
  119. package/dist/{plan-Q7ELXDLC.js → plan-U7ZQWLFY.js} +41 -25
  120. package/dist/plan-U7ZQWLFY.js.map +1 -0
  121. package/dist/{projects-LH362JZQ.js → projects-2UOXFLNZ.js} +4 -4
  122. package/dist/prompts/CLAUDE.md +62 -0
  123. package/dist/prompts/init-prompt.txt +347 -26
  124. package/dist/prompts/issue-prompt.txt +427 -54
  125. package/dist/prompts/plan-prompt.txt +97 -16
  126. package/dist/prompts/pr-prompt.txt +44 -1
  127. package/dist/prompts/regular-prompt.txt +42 -1
  128. package/dist/prompts/session-summary-prompt.txt +14 -0
  129. package/dist/prompts/swarm-orchestrator-prompt.txt +437 -0
  130. package/dist/{rebase-YND35CIE.js → rebase-DWIB77KV.js} +10 -10
  131. package/dist/{recap-3W7COH7D.js → recap-MX63HAKV.js} +47 -19
  132. package/dist/recap-MX63HAKV.js.map +1 -0
  133. package/dist/{run-QUXJKDQQ.js → run-O3TFNQFC.js} +15 -15
  134. package/dist/run-O3TFNQFC.js.map +1 -0
  135. package/dist/schema/package-iloom.schema.json +58 -0
  136. package/dist/schema/settings.schema.json +115 -15
  137. package/dist/{shell-QGECBLST.js → shell-G6VC2CYR.js} +14 -7
  138. package/dist/shell-G6VC2CYR.js.map +1 -0
  139. package/dist/{summary-G2T4452H.js → summary-FWHAX55O.js} +27 -25
  140. package/dist/summary-FWHAX55O.js.map +1 -0
  141. package/dist/{test-EA5NQFDC.js → test-F7JNJZYP.js} +9 -9
  142. package/dist/{test-git-M7LSLEFL.js → test-git-BTAOIUE2.js} +4 -4
  143. package/dist/test-jira-CHYNV33F.js +96 -0
  144. package/dist/test-jira-CHYNV33F.js.map +1 -0
  145. package/dist/{test-prefix-64NAAUON.js → test-prefix-Q6TFSU6F.js} +4 -4
  146. package/dist/{test-webserver-OK6Z5FJM.js → test-webserver-EONCG7E7.js} +6 -6
  147. package/dist/{vscode-AR5NNXXI.js → vscode-VA5X4P25.js} +7 -7
  148. package/package.json +5 -1
  149. package/dist/ClaudeContextManager-HR5JQKAI.js +0 -14
  150. package/dist/ClaudeService-TK7FMC2X.js +0 -13
  151. package/dist/chunk-3I4ONZRT.js.map +0 -1
  152. package/dist/chunk-B7U6OKUR.js.map +0 -1
  153. package/dist/chunk-CWRI4JC3.js.map +0 -1
  154. package/dist/chunk-DGG2VY7B.js.map +0 -1
  155. package/dist/chunk-FJDRTVJX.js +0 -520
  156. package/dist/chunk-FJDRTVJX.js.map +0 -1
  157. package/dist/chunk-FO5GGFOV.js.map +0 -1
  158. package/dist/chunk-KBEIQP4G.js.map +0 -1
  159. package/dist/chunk-KJTVU3HZ.js.map +0 -1
  160. package/dist/chunk-KXGQYLFZ.js.map +0 -1
  161. package/dist/chunk-OFDN5NKS.js.map +0 -1
  162. package/dist/chunk-QN47QVBX.js.map +0 -1
  163. package/dist/chunk-R4YWBGY6.js.map +0 -1
  164. package/dist/chunk-RI2YL6TK.js.map +0 -1
  165. package/dist/chunk-SOSQILHO.js.map +0 -1
  166. package/dist/chunk-ULSWCPQG.js.map +0 -1
  167. package/dist/chunk-VOGGLPG5.js.map +0 -1
  168. package/dist/chunk-VPTAX5TR.js.map +0 -1
  169. package/dist/chunk-WHI5KEOX.js +0 -121
  170. package/dist/chunk-WHI5KEOX.js.map +0 -1
  171. package/dist/chunk-YKFCCV6S.js.map +0 -1
  172. package/dist/chunk-Z2TWEXR7.js.map +0 -1
  173. package/dist/cleanup-PJRIFFU4.js.map +0 -1
  174. package/dist/commit-IVP3M4HG.js.map +0 -1
  175. package/dist/contribute-VDZXHK5Y.js.map +0 -1
  176. package/dist/dev-server-7F622OEO.js.map +0 -1
  177. package/dist/ignite-IW35CDBD.js +0 -784
  178. package/dist/ignite-IW35CDBD.js.map +0 -1
  179. package/dist/init-676DHF6R.js.map +0 -1
  180. package/dist/issues-PJSOLOBJ.js.map +0 -1
  181. package/dist/open-544H7JF5.js.map +0 -1
  182. package/dist/plan-Q7ELXDLC.js.map +0 -1
  183. package/dist/recap-3W7COH7D.js.map +0 -1
  184. package/dist/run-QUXJKDQQ.js.map +0 -1
  185. package/dist/shell-QGECBLST.js.map +0 -1
  186. package/dist/summary-G2T4452H.js.map +0 -1
  187. /package/dist/{BranchNamingService-K6XNWQ6C.js.map → BranchNamingService-ECJHBB67.js.map} +0 -0
  188. /package/dist/{ClaudeContextManager-HR5JQKAI.js.map → ClaudeContextManager-QXX6ZFST.js.map} +0 -0
  189. /package/dist/{ClaudeService-TK7FMC2X.js.map → ClaudeService-NJNK2SUH.js.map} +0 -0
  190. /package/dist/{GitHubService-TGWJN4V4.js.map → GitHubService-MEHKHUQP.js.map} +0 -0
  191. /package/dist/{MetadataManager-W3C54UYT.js.map → IssueTrackerFactory-NG53YX5S.js.map} +0 -0
  192. /package/dist/{LoomLauncher-73NXL2CL.js.map → LoomLauncher-L64HHS3T.js.map} +0 -0
  193. /package/dist/{ProjectCapabilityDetector-N5L7T4IY.js.map → MetadataManager-5QZSTKNN.js.map} +0 -0
  194. /package/dist/{PromptTemplateManager-36YLQRHP.js.map → ProjectCapabilityDetector-5KSYUTBJ.js.map} +0 -0
  195. /package/dist/{SettingsManager-AW3JTJHD.js.map → PromptTemplateManager-DULSVRRE.js.map} +0 -0
  196. /package/dist/{claude-TP2QO3BU.js.map → SettingsManager-BQDQA3FK.js.map} +0 -0
  197. /package/dist/{build-THZI572G.js.map → build-5GO3XW26.js.map} +0 -0
  198. /package/dist/{chunk-NUACL52E.js.map → chunk-3D7WQM7I.js.map} +0 -0
  199. /package/dist/{chunk-A7NJF73J.js.map → chunk-5MWV33NN.js.map} +0 -0
  200. /package/dist/{chunk-KAYXR544.js.map → chunk-J5S7DFYC.js.map} +0 -0
  201. /package/dist/{chunk-AR5QKYNE.js.map → chunk-MNHZB4Z2.js.map} +0 -0
  202. /package/dist/{chunk-TL72BGP6.js.map → chunk-MORRVYPT.js.map} +0 -0
  203. /package/dist/{chunk-7ZEHSSUP.js.map → chunk-P4O6EH46.js.map} +0 -0
  204. /package/dist/{chunk-W6DP5RVR.js.map → chunk-UVD4CZKS.js.map} +0 -0
  205. /package/dist/{chunk-NWMORW3U.js.map → chunk-VECNX6VX.js.map} +0 -0
  206. /package/dist/{chunk-TC7APDKU.js.map → chunk-VGGST52X.js.map} +0 -0
  207. /package/dist/{chunk-4LKGCFGG.js.map → chunk-WWKOVDWC.js.map} +0 -0
  208. /package/dist/{chunk-IZIYLYPK.js.map → chunk-ZEWU5PZK.js.map} +0 -0
  209. /package/dist/{git-2QDQ2X2S.js.map → claude-P3NQR6IJ.js.map} +0 -0
  210. /package/dist/{compile-R2J65HBQ.js.map → compile-ZS4HYRX5.js.map} +0 -0
  211. /package/dist/{feedback-E7VET7CL.js.map → feedback-TMBXSCM5.js.map} +0 -0
  212. /package/dist/{neon-helpers-VVFFTLXE.js.map → git-ET64COO3.js.map} +0 -0
  213. /package/dist/{lint-CJM7BAIM.js.map → lint-6TQXDZ3T.js.map} +0 -0
  214. /package/dist/{projects-LH362JZQ.js.map → projects-2UOXFLNZ.js.map} +0 -0
  215. /package/dist/{rebase-YND35CIE.js.map → rebase-DWIB77KV.js.map} +0 -0
  216. /package/dist/{test-EA5NQFDC.js.map → test-F7JNJZYP.js.map} +0 -0
  217. /package/dist/{test-git-M7LSLEFL.js.map → test-git-BTAOIUE2.js.map} +0 -0
  218. /package/dist/{test-prefix-64NAAUON.js.map → test-prefix-Q6TFSU6F.js.map} +0 -0
  219. /package/dist/{test-webserver-OK6Z5FJM.js.map → test-webserver-EONCG7E7.js.map} +0 -0
  220. /package/dist/{vscode-AR5NNXXI.js.map → vscode-VA5X4P25.js.map} +0 -0
package/dist/index.d.ts CHANGED
@@ -270,16 +270,45 @@ declare const IloomSettingsSchema: z.ZodObject<{
270
270
  enabled: z.ZodOptional<z.ZodBoolean>;
271
271
  providers: z.ZodOptional<z.ZodRecord<z.ZodEnum<["claude", "gemini", "codex"]>, z.ZodString>>;
272
272
  review: z.ZodOptional<z.ZodBoolean>;
273
+ } & {
274
+ agents: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
275
+ model: z.ZodOptional<z.ZodEnum<["sonnet", "opus", "haiku"]>>;
276
+ enabled: z.ZodOptional<z.ZodBoolean>;
277
+ providers: z.ZodOptional<z.ZodRecord<z.ZodEnum<["claude", "gemini", "codex"]>, z.ZodString>>;
278
+ review: z.ZodOptional<z.ZodBoolean>;
279
+ }, "strip", z.ZodTypeAny, {
280
+ model?: "opus" | "sonnet" | "haiku" | undefined;
281
+ enabled?: boolean | undefined;
282
+ providers?: Partial<Record<"claude" | "gemini" | "codex", string>> | undefined;
283
+ review?: boolean | undefined;
284
+ }, {
285
+ model?: "opus" | "sonnet" | "haiku" | undefined;
286
+ enabled?: boolean | undefined;
287
+ providers?: Partial<Record<"claude" | "gemini" | "codex", string>> | undefined;
288
+ review?: boolean | undefined;
289
+ }>>>;
273
290
  }, "strip", z.ZodTypeAny, {
274
291
  model?: "opus" | "sonnet" | "haiku" | undefined;
275
292
  enabled?: boolean | undefined;
276
293
  providers?: Partial<Record<"claude" | "gemini" | "codex", string>> | undefined;
277
294
  review?: boolean | undefined;
295
+ agents?: Record<string, {
296
+ model?: "opus" | "sonnet" | "haiku" | undefined;
297
+ enabled?: boolean | undefined;
298
+ providers?: Partial<Record<"claude" | "gemini" | "codex", string>> | undefined;
299
+ review?: boolean | undefined;
300
+ }> | undefined;
278
301
  }, {
279
302
  model?: "opus" | "sonnet" | "haiku" | undefined;
280
303
  enabled?: boolean | undefined;
281
304
  providers?: Partial<Record<"claude" | "gemini" | "codex", string>> | undefined;
282
305
  review?: boolean | undefined;
306
+ agents?: Record<string, {
307
+ model?: "opus" | "sonnet" | "haiku" | undefined;
308
+ enabled?: boolean | undefined;
309
+ providers?: Partial<Record<"claude" | "gemini" | "codex", string>> | undefined;
310
+ review?: boolean | undefined;
311
+ }> | undefined;
283
312
  }>>>>;
284
313
  spin: z.ZodOptional<z.ZodObject<{
285
314
  model: z.ZodDefault<z.ZodEnum<["sonnet", "opus", "haiku"]>>;
@@ -309,7 +338,6 @@ declare const IloomSettingsSchema: z.ZodObject<{
309
338
  model?: "opus" | "sonnet" | "haiku" | undefined;
310
339
  }>>;
311
340
  capabilities: z.ZodOptional<z.ZodObject<{
312
- capabilities: z.ZodOptional<z.ZodArray<z.ZodEnum<["cli", "web"]>, "many">>;
313
341
  web: z.ZodOptional<z.ZodObject<{
314
342
  basePort: z.ZodOptional<z.ZodNumber>;
315
343
  }, "strip", z.ZodTypeAny, {
@@ -331,7 +359,6 @@ declare const IloomSettingsSchema: z.ZodObject<{
331
359
  database?: {
332
360
  databaseUrlEnvVarName: string;
333
361
  } | undefined;
334
- capabilities?: ("cli" | "web")[] | undefined;
335
362
  }, {
336
363
  web?: {
337
364
  basePort?: number | undefined;
@@ -339,7 +366,6 @@ declare const IloomSettingsSchema: z.ZodObject<{
339
366
  database?: {
340
367
  databaseUrlEnvVarName?: string | undefined;
341
368
  } | undefined;
342
- capabilities?: ("cli" | "web")[] | undefined;
343
369
  }>>;
344
370
  databaseProviders: z.ZodOptional<z.ZodObject<{
345
371
  neon: z.ZodOptional<z.ZodObject<{
@@ -364,7 +390,7 @@ declare const IloomSettingsSchema: z.ZodObject<{
364
390
  } | undefined;
365
391
  }>>;
366
392
  issueManagement: z.ZodOptional<z.ZodObject<{
367
- provider: z.ZodDefault<z.ZodOptional<z.ZodEnum<["github", "linear"]>>>;
393
+ provider: z.ZodDefault<z.ZodOptional<z.ZodEnum<["github", "linear", "jira"]>>>;
368
394
  github: z.ZodOptional<z.ZodObject<{
369
395
  remote: z.ZodString;
370
396
  }, "strip", z.ZodTypeAny, {
@@ -385,8 +411,39 @@ declare const IloomSettingsSchema: z.ZodObject<{
385
411
  branchFormat?: string | undefined;
386
412
  apiToken?: string | undefined;
387
413
  }>>;
414
+ jira: z.ZodOptional<z.ZodObject<{
415
+ host: z.ZodString;
416
+ username: z.ZodString;
417
+ apiToken: z.ZodOptional<z.ZodString>;
418
+ projectKey: z.ZodString;
419
+ boardId: z.ZodOptional<z.ZodString>;
420
+ transitionMappings: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
421
+ defaultIssueType: z.ZodDefault<z.ZodOptional<z.ZodString>>;
422
+ defaultSubtaskType: z.ZodDefault<z.ZodOptional<z.ZodString>>;
423
+ doneStatuses: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
424
+ }, "strip", z.ZodTypeAny, {
425
+ host: string;
426
+ username: string;
427
+ projectKey: string;
428
+ defaultIssueType: string;
429
+ defaultSubtaskType: string;
430
+ doneStatuses: string[];
431
+ apiToken?: string | undefined;
432
+ boardId?: string | undefined;
433
+ transitionMappings?: Record<string, string> | undefined;
434
+ }, {
435
+ host: string;
436
+ username: string;
437
+ projectKey: string;
438
+ apiToken?: string | undefined;
439
+ boardId?: string | undefined;
440
+ transitionMappings?: Record<string, string> | undefined;
441
+ defaultIssueType?: string | undefined;
442
+ defaultSubtaskType?: string | undefined;
443
+ doneStatuses?: string[] | undefined;
444
+ }>>;
388
445
  }, "strip", z.ZodTypeAny, {
389
- provider: "github" | "linear";
446
+ provider: "github" | "linear" | "jira";
390
447
  github?: {
391
448
  remote: string;
392
449
  } | undefined;
@@ -395,6 +452,17 @@ declare const IloomSettingsSchema: z.ZodObject<{
395
452
  branchFormat?: string | undefined;
396
453
  apiToken?: string | undefined;
397
454
  } | undefined;
455
+ jira?: {
456
+ host: string;
457
+ username: string;
458
+ projectKey: string;
459
+ defaultIssueType: string;
460
+ defaultSubtaskType: string;
461
+ doneStatuses: string[];
462
+ apiToken?: string | undefined;
463
+ boardId?: string | undefined;
464
+ transitionMappings?: Record<string, string> | undefined;
465
+ } | undefined;
398
466
  }, {
399
467
  github?: {
400
468
  remote: string;
@@ -404,20 +472,34 @@ declare const IloomSettingsSchema: z.ZodObject<{
404
472
  branchFormat?: string | undefined;
405
473
  apiToken?: string | undefined;
406
474
  } | undefined;
407
- provider?: "github" | "linear" | undefined;
475
+ jira?: {
476
+ host: string;
477
+ username: string;
478
+ projectKey: string;
479
+ apiToken?: string | undefined;
480
+ boardId?: string | undefined;
481
+ transitionMappings?: Record<string, string> | undefined;
482
+ defaultIssueType?: string | undefined;
483
+ defaultSubtaskType?: string | undefined;
484
+ doneStatuses?: string[] | undefined;
485
+ } | undefined;
486
+ provider?: "github" | "linear" | "jira" | undefined;
408
487
  }>>;
409
488
  mergeBehavior: z.ZodOptional<z.ZodObject<{
410
489
  mode: z.ZodDefault<z.ZodEnum<["local", "github-pr", "github-draft-pr"]>>;
411
490
  remote: z.ZodOptional<z.ZodString>;
412
491
  autoCommitPush: z.ZodOptional<z.ZodBoolean>;
492
+ openBrowserOnFinish: z.ZodDefault<z.ZodBoolean>;
413
493
  }, "strip", z.ZodTypeAny, {
414
494
  mode: "local" | "github-pr" | "github-draft-pr";
495
+ openBrowserOnFinish: boolean;
415
496
  remote?: string | undefined;
416
497
  autoCommitPush?: boolean | undefined;
417
498
  }, {
418
499
  remote?: string | undefined;
419
500
  mode?: "local" | "github-pr" | "github-draft-pr" | undefined;
420
501
  autoCommitPush?: boolean | undefined;
502
+ openBrowserOnFinish?: boolean | undefined;
421
503
  }>>;
422
504
  ide: z.ZodOptional<z.ZodObject<{
423
505
  type: z.ZodDefault<z.ZodEnum<["vscode", "cursor", "webstorm", "sublime", "intellij", "windsurf", "antigravity"]>>;
@@ -450,20 +532,23 @@ declare const IloomSettingsSchema: z.ZodObject<{
450
532
  git: {
451
533
  commitTimeout: number;
452
534
  };
535
+ agents?: Record<string, {
536
+ model?: "opus" | "sonnet" | "haiku" | undefined;
537
+ enabled?: boolean | undefined;
538
+ providers?: Partial<Record<"claude" | "gemini" | "codex", string>> | undefined;
539
+ review?: boolean | undefined;
540
+ agents?: Record<string, {
541
+ model?: "opus" | "sonnet" | "haiku" | undefined;
542
+ enabled?: boolean | undefined;
543
+ providers?: Partial<Record<"claude" | "gemini" | "codex", string>> | undefined;
544
+ review?: boolean | undefined;
545
+ }> | undefined;
546
+ }> | null | undefined;
453
547
  plan?: {
454
548
  model: "opus" | "sonnet" | "haiku";
455
549
  planner: "claude" | "gemini" | "codex";
456
550
  reviewer: "claude" | "gemini" | "codex" | "none";
457
551
  } | undefined;
458
- capabilities?: {
459
- web?: {
460
- basePort?: number | undefined;
461
- } | undefined;
462
- database?: {
463
- databaseUrlEnvVarName: string;
464
- } | undefined;
465
- capabilities?: ("cli" | "web")[] | undefined;
466
- } | undefined;
467
552
  mainBranch?: string | undefined;
468
553
  worktreePrefix?: string | undefined;
469
554
  protectedBranches?: string[] | undefined;
@@ -497,18 +582,20 @@ declare const IloomSettingsSchema: z.ZodObject<{
497
582
  noVerify?: boolean | undefined;
498
583
  } | undefined;
499
584
  } | undefined;
500
- agents?: Record<string, {
501
- model?: "opus" | "sonnet" | "haiku" | undefined;
502
- enabled?: boolean | undefined;
503
- providers?: Partial<Record<"claude" | "gemini" | "codex", string>> | undefined;
504
- review?: boolean | undefined;
505
- }> | null | undefined;
506
585
  spin?: {
507
586
  model: "opus" | "sonnet" | "haiku";
508
587
  } | undefined;
509
588
  summary?: {
510
589
  model: "opus" | "sonnet" | "haiku";
511
590
  } | undefined;
591
+ capabilities?: {
592
+ web?: {
593
+ basePort?: number | undefined;
594
+ } | undefined;
595
+ database?: {
596
+ databaseUrlEnvVarName: string;
597
+ } | undefined;
598
+ } | undefined;
512
599
  databaseProviders?: {
513
600
  neon?: {
514
601
  projectId: string;
@@ -516,7 +603,7 @@ declare const IloomSettingsSchema: z.ZodObject<{
516
603
  } | undefined;
517
604
  } | undefined;
518
605
  issueManagement?: {
519
- provider: "github" | "linear";
606
+ provider: "github" | "linear" | "jira";
520
607
  github?: {
521
608
  remote: string;
522
609
  } | undefined;
@@ -525,9 +612,21 @@ declare const IloomSettingsSchema: z.ZodObject<{
525
612
  branchFormat?: string | undefined;
526
613
  apiToken?: string | undefined;
527
614
  } | undefined;
615
+ jira?: {
616
+ host: string;
617
+ username: string;
618
+ projectKey: string;
619
+ defaultIssueType: string;
620
+ defaultSubtaskType: string;
621
+ doneStatuses: string[];
622
+ apiToken?: string | undefined;
623
+ boardId?: string | undefined;
624
+ transitionMappings?: Record<string, string> | undefined;
625
+ } | undefined;
528
626
  } | undefined;
529
627
  mergeBehavior?: {
530
628
  mode: "local" | "github-pr" | "github-draft-pr";
629
+ openBrowserOnFinish: boolean;
531
630
  remote?: string | undefined;
532
631
  autoCommitPush?: boolean | undefined;
533
632
  } | undefined;
@@ -539,20 +638,23 @@ declare const IloomSettingsSchema: z.ZodObject<{
539
638
  vscode: boolean;
540
639
  } | undefined;
541
640
  }, {
641
+ agents?: Record<string, {
642
+ model?: "opus" | "sonnet" | "haiku" | undefined;
643
+ enabled?: boolean | undefined;
644
+ providers?: Partial<Record<"claude" | "gemini" | "codex", string>> | undefined;
645
+ review?: boolean | undefined;
646
+ agents?: Record<string, {
647
+ model?: "opus" | "sonnet" | "haiku" | undefined;
648
+ enabled?: boolean | undefined;
649
+ providers?: Partial<Record<"claude" | "gemini" | "codex", string>> | undefined;
650
+ review?: boolean | undefined;
651
+ }> | undefined;
652
+ }> | null | undefined;
542
653
  plan?: {
543
654
  model?: "opus" | "sonnet" | "haiku" | undefined;
544
655
  planner?: "claude" | "gemini" | "codex" | undefined;
545
656
  reviewer?: "claude" | "gemini" | "codex" | "none" | undefined;
546
657
  } | undefined;
547
- capabilities?: {
548
- web?: {
549
- basePort?: number | undefined;
550
- } | undefined;
551
- database?: {
552
- databaseUrlEnvVarName?: string | undefined;
553
- } | undefined;
554
- capabilities?: ("cli" | "web")[] | undefined;
555
- } | undefined;
556
658
  mainBranch?: string | undefined;
557
659
  sourceEnvOnStart?: boolean | undefined;
558
660
  worktreePrefix?: string | undefined;
@@ -587,18 +689,20 @@ declare const IloomSettingsSchema: z.ZodObject<{
587
689
  generateSummary?: boolean | undefined;
588
690
  } | undefined;
589
691
  } | undefined;
590
- agents?: Record<string, {
591
- model?: "opus" | "sonnet" | "haiku" | undefined;
592
- enabled?: boolean | undefined;
593
- providers?: Partial<Record<"claude" | "gemini" | "codex", string>> | undefined;
594
- review?: boolean | undefined;
595
- }> | null | undefined;
596
692
  spin?: {
597
693
  model?: "opus" | "sonnet" | "haiku" | undefined;
598
694
  } | undefined;
599
695
  summary?: {
600
696
  model?: "opus" | "sonnet" | "haiku" | undefined;
601
697
  } | undefined;
698
+ capabilities?: {
699
+ web?: {
700
+ basePort?: number | undefined;
701
+ } | undefined;
702
+ database?: {
703
+ databaseUrlEnvVarName?: string | undefined;
704
+ } | undefined;
705
+ } | undefined;
602
706
  databaseProviders?: {
603
707
  neon?: {
604
708
  projectId: string;
@@ -614,12 +718,24 @@ declare const IloomSettingsSchema: z.ZodObject<{
614
718
  branchFormat?: string | undefined;
615
719
  apiToken?: string | undefined;
616
720
  } | undefined;
617
- provider?: "github" | "linear" | undefined;
721
+ jira?: {
722
+ host: string;
723
+ username: string;
724
+ projectKey: string;
725
+ apiToken?: string | undefined;
726
+ boardId?: string | undefined;
727
+ transitionMappings?: Record<string, string> | undefined;
728
+ defaultIssueType?: string | undefined;
729
+ defaultSubtaskType?: string | undefined;
730
+ doneStatuses?: string[] | undefined;
731
+ } | undefined;
732
+ provider?: "github" | "linear" | "jira" | undefined;
618
733
  } | undefined;
619
734
  mergeBehavior?: {
620
735
  remote?: string | undefined;
621
736
  mode?: "local" | "github-pr" | "github-draft-pr" | undefined;
622
737
  autoCommitPush?: boolean | undefined;
738
+ openBrowserOnFinish?: boolean | undefined;
623
739
  } | undefined;
624
740
  ide?: {
625
741
  type?: "vscode" | "cursor" | "webstorm" | "sublime" | "intellij" | "windsurf" | "antigravity" | undefined;
@@ -914,6 +1030,13 @@ interface ResourceCleanupOptions {
914
1030
  checkMergeSafety?: boolean;
915
1031
  /** Check if branch exists on remote before allowing cleanup (useful for GitHub-PR mode) */
916
1032
  checkRemoteBranch?: boolean;
1033
+ /** Pre-resolved worktree to clean up (skips the search step) */
1034
+ worktree?: {
1035
+ path: string;
1036
+ branch: string;
1037
+ };
1038
+ /** Archive metadata instead of deleting (preserves loom in il list --finished) */
1039
+ archive?: boolean;
917
1040
  }
918
1041
  /**
919
1042
  * Result of a cleanup operation
@@ -1054,7 +1177,7 @@ interface Loom {
1054
1177
  id: string;
1055
1178
  path: string;
1056
1179
  branch: string;
1057
- type: 'issue' | 'pr' | 'branch';
1180
+ type: 'issue' | 'pr' | 'branch' | 'epic';
1058
1181
  identifier: string | number;
1059
1182
  port: number;
1060
1183
  databaseBranch?: string;
@@ -1072,12 +1195,12 @@ interface Loom {
1072
1195
  cliSymlinks?: string[];
1073
1196
  }
1074
1197
  interface CreateLoomInput {
1075
- type: 'issue' | 'pr' | 'branch';
1198
+ type: 'issue' | 'pr' | 'branch' | 'epic';
1076
1199
  identifier: string | number;
1077
1200
  originalInput: string;
1078
1201
  baseBranch?: string;
1079
1202
  parentLoom?: {
1080
- type: 'issue' | 'pr' | 'branch';
1203
+ type: 'issue' | 'pr' | 'branch' | 'epic';
1081
1204
  identifier: string | number;
1082
1205
  branchName: string;
1083
1206
  worktreePath: string;
@@ -1095,12 +1218,20 @@ interface CreateLoomInput {
1095
1218
  setArguments?: string[];
1096
1219
  executablePath?: string;
1097
1220
  sourceEnvOnStart?: boolean;
1221
+ childIssueNumbers?: string[];
1222
+ childIssues?: Array<{
1223
+ number: string;
1224
+ title: string;
1225
+ body: string;
1226
+ url: string;
1227
+ }>;
1228
+ dependencyMap?: Record<string, string[]>;
1098
1229
  };
1099
1230
  }
1100
1231
  type LaunchMode = 'editor' | 'terminal' | 'both';
1101
1232
  interface LoomSummary {
1102
1233
  id: string;
1103
- type: 'issue' | 'pr' | 'branch';
1234
+ type: 'issue' | 'pr' | 'branch' | 'epic';
1104
1235
  identifier: string | number;
1105
1236
  title?: string;
1106
1237
  branch: string;
@@ -1125,6 +1256,98 @@ interface ProcessInfo {
1125
1256
  isDevServer: boolean;
1126
1257
  }
1127
1258
 
1259
+ interface TelemetryConfig {
1260
+ enabled: boolean;
1261
+ disclosed_at?: string;
1262
+ last_version?: string;
1263
+ }
1264
+ interface CliInstalledProperties {
1265
+ version: string;
1266
+ os: string;
1267
+ node_version: string;
1268
+ }
1269
+ interface CliUpgradedProperties {
1270
+ version: string;
1271
+ previous_version: string;
1272
+ os: string;
1273
+ }
1274
+ interface LoomCreatedProperties {
1275
+ source_type: 'issue' | 'pr' | 'branch' | 'freeform';
1276
+ tracker: string;
1277
+ is_child_loom: boolean;
1278
+ one_shot_mode: 'default' | 'skip-reviews' | 'yolo';
1279
+ }
1280
+ interface LoomFinishedProperties {
1281
+ merge_behavior: 'local' | 'github-pr' | 'github-draft-pr';
1282
+ duration_minutes: number;
1283
+ }
1284
+ interface LoomAbandonedProperties {
1285
+ duration_minutes: number;
1286
+ phase_reached: string;
1287
+ }
1288
+ interface EpicPlannedProperties {
1289
+ child_count: number;
1290
+ tracker: string;
1291
+ }
1292
+ interface SwarmStartedProperties {
1293
+ child_count: number;
1294
+ tracker: string;
1295
+ }
1296
+ interface SwarmChildCompletedProperties {
1297
+ success: boolean;
1298
+ duration_minutes: number;
1299
+ }
1300
+ interface SwarmCompletedProperties {
1301
+ total_children: number;
1302
+ succeeded: number;
1303
+ failed: number;
1304
+ duration_minutes: number;
1305
+ }
1306
+ interface DemoStartedProperties {
1307
+ path: string;
1308
+ }
1309
+ interface DemoCompletedProperties {
1310
+ path: string;
1311
+ converted_to_real_project: boolean;
1312
+ }
1313
+ interface ContributeStartedProperties {
1314
+ tracker: string;
1315
+ }
1316
+ interface SessionStartedProperties {
1317
+ has_neon: boolean;
1318
+ language: string;
1319
+ }
1320
+ interface ErrorOccurredProperties {
1321
+ error_type: string;
1322
+ command: string;
1323
+ phase: string;
1324
+ }
1325
+ interface InitStartedProperties {
1326
+ mode: 'accept-defaults' | 'guided' | 'guided-custom-prompt';
1327
+ }
1328
+ interface InitCompletedProperties {
1329
+ mode: 'accept-defaults' | 'guided' | 'guided-custom-prompt';
1330
+ }
1331
+ interface TelemetryEventMap {
1332
+ 'cli.installed': CliInstalledProperties;
1333
+ 'cli.upgraded': CliUpgradedProperties;
1334
+ 'loom.created': LoomCreatedProperties;
1335
+ 'loom.finished': LoomFinishedProperties;
1336
+ 'loom.abandoned': LoomAbandonedProperties;
1337
+ 'epic.planned': EpicPlannedProperties;
1338
+ 'swarm.started': SwarmStartedProperties;
1339
+ 'swarm.child_completed': SwarmChildCompletedProperties;
1340
+ 'swarm.completed': SwarmCompletedProperties;
1341
+ 'demo.started': DemoStartedProperties;
1342
+ 'demo.completed': DemoCompletedProperties;
1343
+ 'contribute.started': ContributeStartedProperties;
1344
+ 'session.started': SessionStartedProperties;
1345
+ 'error.occurred': ErrorOccurredProperties;
1346
+ 'init.started': InitStartedProperties;
1347
+ 'init.completed': InitCompletedProperties;
1348
+ }
1349
+ type TelemetryEventName = keyof TelemetryEventMap;
1350
+
1128
1351
  interface Workspace {
1129
1352
  id: string;
1130
1353
  path: string;
@@ -1243,6 +1466,7 @@ interface StartOptions {
1243
1466
  devServer?: boolean;
1244
1467
  terminal?: boolean;
1245
1468
  childLoom?: boolean;
1469
+ epic?: boolean;
1246
1470
  oneShot?: OneShotMode;
1247
1471
  body?: string;
1248
1472
  json?: boolean;
@@ -1266,6 +1490,8 @@ interface FinishOptions {
1266
1490
  noBrowser?: boolean;
1267
1491
  cleanup?: boolean;
1268
1492
  json?: boolean;
1493
+ skipToPr?: boolean;
1494
+ review?: boolean;
1269
1495
  }
1270
1496
  /**
1271
1497
  * Options for the cleanup command
@@ -1286,6 +1512,8 @@ interface CleanupOptions {
1286
1512
  json?: boolean;
1287
1513
  /** Wait specified milliseconds before cleanup execution */
1288
1514
  defer?: number;
1515
+ /** Archive metadata instead of deleting (preserves loom in il list --finished) */
1516
+ archive?: boolean;
1289
1517
  }
1290
1518
  interface ListOptions {
1291
1519
  json?: boolean;
@@ -1308,14 +1536,15 @@ interface StartResult {
1308
1536
  path: string;
1309
1537
  branch: string;
1310
1538
  port?: number;
1311
- type: 'issue' | 'pr' | 'branch';
1539
+ type: 'issue' | 'pr' | 'branch' | 'epic';
1312
1540
  identifier: string | number;
1313
1541
  title?: string;
1314
1542
  capabilities?: string[];
1543
+ childIssueNumbers?: string[];
1315
1544
  }
1316
1545
  interface FinishResult {
1317
1546
  success: boolean;
1318
- type: 'issue' | 'pr' | 'branch';
1547
+ type: 'issue' | 'pr' | 'branch' | 'epic';
1319
1548
  identifier: string | number;
1320
1549
  /** Whether this was a dry-run operation */
1321
1550
  dryRun?: boolean;
@@ -1333,7 +1562,7 @@ interface SummaryResult {
1333
1562
  sessionId: string;
1334
1563
  issueNumber?: string | number;
1335
1564
  branchName: string;
1336
- loomType: 'issue' | 'pr' | 'branch';
1565
+ loomType: 'issue' | 'pr' | 'branch' | 'epic';
1337
1566
  }
1338
1567
  interface MockOptions {
1339
1568
  scenario: 'empty' | 'existing' | 'conflicts' | 'error';
@@ -1433,10 +1662,18 @@ interface IssueTracker {
1433
1662
  url: string;
1434
1663
  }>;
1435
1664
  getIssueUrl(identifier: string | number, repo?: string): Promise<string>;
1665
+ getChildIssues(parentIdentifier: string, repo?: string): Promise<Array<{
1666
+ id: string;
1667
+ title: string;
1668
+ url: string;
1669
+ state: string;
1670
+ }>>;
1436
1671
  fetchPR?(identifier: string | number, repo?: string): Promise<PullRequest>;
1437
1672
  isValidPR?(identifier: string | number, repo?: string): Promise<PullRequest | false>;
1438
1673
  validatePRState?(pr: PullRequest): Promise<void>;
1439
1674
  moveIssueToInProgress?(identifier: string | number): Promise<void>;
1675
+ moveIssueToReadyForReview?(identifier: string | number): Promise<void>;
1676
+ normalizeIdentifier(identifier: string | number): string;
1440
1677
  extractContext(entity: Issue | PullRequest): string;
1441
1678
  }
1442
1679
 
@@ -1466,15 +1703,23 @@ declare class GitHubService implements IssueTracker {
1466
1703
  url: string;
1467
1704
  }>;
1468
1705
  getIssueUrl(issueNumber: number, repo?: string): Promise<string>;
1706
+ getChildIssues(parentIdentifier: string, repo?: string): Promise<Array<{
1707
+ id: string;
1708
+ title: string;
1709
+ url: string;
1710
+ state: string;
1711
+ }>>;
1469
1712
  moveIssueToInProgress(issueNumber: number): Promise<void>;
1713
+ moveIssueToReadyForReview(issueNumber: number): Promise<void>;
1470
1714
  private updateIssueStatusInProject;
1715
+ normalizeIdentifier(identifier: string | number): string;
1471
1716
  extractContext(entity: Issue | PullRequest): string;
1472
1717
  private mapGitHubIssueToIssue;
1473
1718
  private mapGitHubPRToPullRequest;
1474
1719
  private promptUserConfirmation;
1475
1720
  }
1476
1721
 
1477
- type IssueTrackerProviderType = 'github' | 'linear';
1722
+ type IssueTrackerProviderType = 'github' | 'linear' | 'jira';
1478
1723
  /**
1479
1724
  * Factory for creating IssueTracker instances based on settings
1480
1725
  * Provides a single point of provider instantiation
@@ -1649,6 +1894,7 @@ interface TemplateVariables {
1649
1894
  AUTO_COMMIT_PUSH?: boolean;
1650
1895
  STANDARD_ISSUE_MODE?: boolean;
1651
1896
  STANDARD_BRANCH_MODE?: boolean;
1897
+ DIRECT_PROMPT_MODE?: boolean;
1652
1898
  IS_VSCODE_MODE?: boolean;
1653
1899
  HAS_PACKAGE_JSON?: boolean;
1654
1900
  NO_PACKAGE_JSON?: boolean;
@@ -1689,6 +1935,15 @@ interface TemplateVariables {
1689
1935
  USE_CODEX_REVIEWER?: boolean;
1690
1936
  HAS_REVIEWER?: boolean;
1691
1937
  GIT_REMOTE?: string;
1938
+ EPIC_ISSUE_NUMBER?: string | number;
1939
+ EPIC_WORKTREE_PATH?: string;
1940
+ EPIC_METADATA_PATH?: string;
1941
+ CHILD_ISSUES?: string;
1942
+ DEPENDENCY_MAP?: string;
1943
+ SWARM_MODE?: boolean;
1944
+ SWARM_AGENT_METADATA?: string;
1945
+ NO_CLEANUP?: boolean;
1946
+ ISSUE_PREFIX?: string;
1692
1947
  }
1693
1948
  declare class PromptTemplateManager {
1694
1949
  private templateDir;
@@ -1696,7 +1951,7 @@ declare class PromptTemplateManager {
1696
1951
  /**
1697
1952
  * Load a template file by name
1698
1953
  */
1699
- loadTemplate(templateName: 'issue' | 'pr' | 'regular' | 'init' | 'session-summary' | 'plan'): Promise<string>;
1954
+ loadTemplate(templateName: 'issue' | 'pr' | 'regular' | 'init' | 'session-summary' | 'plan' | 'swarm-orchestrator'): Promise<string>;
1700
1955
  /**
1701
1956
  * Substitute variables in a template string using Handlebars
1702
1957
  */
@@ -1704,7 +1959,7 @@ declare class PromptTemplateManager {
1704
1959
  /**
1705
1960
  * Get a fully processed prompt for a workflow type
1706
1961
  */
1707
- getPrompt(type: 'issue' | 'pr' | 'regular' | 'init' | 'session-summary' | 'plan', variables: TemplateVariables): Promise<string>;
1962
+ getPrompt(type: 'issue' | 'pr' | 'regular' | 'init' | 'session-summary' | 'plan' | 'swarm-orchestrator', variables: TemplateVariables): Promise<string>;
1708
1963
  }
1709
1964
 
1710
1965
  interface ClaudeWorkflowOptions {
@@ -1764,6 +2019,48 @@ declare class ClaudeContextManager {
1764
2019
  launchWithContext(context: ClaudeContext, headless?: boolean): Promise<string | void>;
1765
2020
  }
1766
2021
 
2022
+ type SwarmState = 'pending' | 'in_progress' | 'code_review' | 'done' | 'failed';
2023
+ /**
2024
+ * Schema for metadata JSON file
2025
+ * Stored in ~/.config/iloom-ai/looms/
2026
+ */
2027
+ interface MetadataFile {
2028
+ description: string;
2029
+ created_at?: string;
2030
+ version: number;
2031
+ branchName?: string;
2032
+ worktreePath?: string;
2033
+ issueType?: 'branch' | 'issue' | 'pr' | 'epic';
2034
+ issueKey?: string;
2035
+ issue_numbers?: string[];
2036
+ pr_numbers?: string[];
2037
+ issueTracker?: string;
2038
+ colorHex?: string;
2039
+ sessionId?: string;
2040
+ projectPath?: string;
2041
+ issueUrls?: Record<string, string>;
2042
+ prUrls?: Record<string, string>;
2043
+ draftPrNumber?: number;
2044
+ oneShot?: OneShotMode;
2045
+ capabilities?: ProjectCapability[];
2046
+ state?: SwarmState;
2047
+ childIssueNumbers?: string[];
2048
+ parentLoom?: {
2049
+ type: 'issue' | 'pr' | 'branch' | 'epic';
2050
+ identifier: string | number;
2051
+ branchName: string;
2052
+ worktreePath: string;
2053
+ databaseBranch?: string;
2054
+ };
2055
+ childIssues?: Array<{
2056
+ number: string;
2057
+ title: string;
2058
+ body: string;
2059
+ url: string;
2060
+ }>;
2061
+ dependencyMap?: Record<string, string[]>;
2062
+ mcpConfigPath?: string;
2063
+ }
1767
2064
  /**
1768
2065
  * Input for writing metadata (all fields except version and created_at)
1769
2066
  * Note: issueTracker is required because every loom should have an associated
@@ -1773,7 +2070,8 @@ interface WriteMetadataInput {
1773
2070
  description: string;
1774
2071
  branchName: string;
1775
2072
  worktreePath: string;
1776
- issueType: 'branch' | 'issue' | 'pr';
2073
+ issueType: 'branch' | 'issue' | 'pr' | 'epic';
2074
+ issueKey?: string;
1777
2075
  issue_numbers: string[];
1778
2076
  pr_numbers: string[];
1779
2077
  issueTracker: string;
@@ -1785,13 +2083,23 @@ interface WriteMetadataInput {
1785
2083
  draftPrNumber?: number;
1786
2084
  oneShot?: OneShotMode;
1787
2085
  capabilities: ProjectCapability[];
2086
+ state?: SwarmState;
2087
+ childIssueNumbers?: string[];
1788
2088
  parentLoom?: {
1789
- type: 'issue' | 'pr' | 'branch';
2089
+ type: 'issue' | 'pr' | 'branch' | 'epic';
1790
2090
  identifier: string | number;
1791
2091
  branchName: string;
1792
2092
  worktreePath: string;
1793
2093
  databaseBranch?: string;
1794
2094
  };
2095
+ childIssues?: Array<{
2096
+ number: string;
2097
+ title: string;
2098
+ body: string;
2099
+ url: string;
2100
+ }>;
2101
+ dependencyMap?: Record<string, string[]>;
2102
+ mcpConfigPath?: string;
1795
2103
  }
1796
2104
  /**
1797
2105
  * Result of reading metadata for a worktree
@@ -1803,7 +2111,8 @@ interface LoomMetadata {
1803
2111
  created_at: string | null;
1804
2112
  branchName: string | null;
1805
2113
  worktreePath: string | null;
1806
- issueType: 'branch' | 'issue' | 'pr' | null;
2114
+ issueType: 'branch' | 'issue' | 'pr' | 'epic' | null;
2115
+ issueKey: string | null;
1807
2116
  issue_numbers: string[];
1808
2117
  pr_numbers: string[];
1809
2118
  issueTracker: string | null;
@@ -1815,13 +2124,23 @@ interface LoomMetadata {
1815
2124
  draftPrNumber: number | null;
1816
2125
  oneShot: OneShotMode | null;
1817
2126
  capabilities: ProjectCapability[];
2127
+ state: SwarmState | null;
2128
+ childIssueNumbers: string[];
1818
2129
  parentLoom: {
1819
- type: 'issue' | 'pr' | 'branch';
2130
+ type: 'issue' | 'pr' | 'branch' | 'epic';
1820
2131
  identifier: string | number;
1821
2132
  branchName: string;
1822
2133
  worktreePath: string;
1823
2134
  databaseBranch?: string;
1824
2135
  } | null;
2136
+ childIssues: Array<{
2137
+ number: string;
2138
+ title: string;
2139
+ body: string;
2140
+ url: string;
2141
+ }>;
2142
+ dependencyMap: Record<string, string[]>;
2143
+ mcpConfigPath: string | null;
1825
2144
  }
1826
2145
  /**
1827
2146
  * MetadataManager: Manage loom metadata persistence
@@ -1889,6 +2208,16 @@ declare class MetadataManager {
1889
2208
  * @returns Array of LoomMetadata objects from all stored files
1890
2209
  */
1891
2210
  listAllMetadata(): Promise<LoomMetadata[]>;
2211
+ /**
2212
+ * Update existing metadata for a worktree by merging new fields
2213
+ *
2214
+ * Reads the existing metadata file, merges the provided updates,
2215
+ * and writes back. Only provided fields are overwritten.
2216
+ *
2217
+ * @param worktreePath - Absolute path to the worktree
2218
+ * @param updates - Partial metadata fields to merge
2219
+ */
2220
+ updateMetadata(worktreePath: string, updates: Partial<MetadataFile>): Promise<void>;
1892
2221
  /**
1893
2222
  * Delete metadata for a worktree (spec section 3.3)
1894
2223
  *
@@ -2403,4 +2732,4 @@ declare class TableFormatter {
2403
2732
  static previewFormatting(headers: string[], options?: TableFormatterOptions): string;
2404
2733
  }
2405
2734
 
2406
- export { type AddIssueOptions, type AddIssueResult, type BatchCleanupResult, type BranchCleanupTarget, type BranchDeleteOptions, type BranchGenerationOptions, type BranchNameStrategy, type Capability, type ClaudeContext, ClaudeContextManager, type CleanupOptions, type CleanupResult, type ColorData, type CommitOptions, type Config, type CreateLoomInput, type DatabaseDeletionResult, DatabaseManager, type DatabaseProvider, type EnhanceOptions, type EnhanceResult, type EnvFileOptions, type EnvOperationResult, type EnvVariable, EnvironmentManager, type FeedbackOptions, type FinishOptions, type FinishResult, GitCommandError, GitHubService, type GitStatus, type GitWorktree, GitWorktreeManager, type InstallationMethod, type Issue, type IssueTracker, IssueTrackerFactory, type IssueTrackerInputDetection, type IssueTrackerProviderType, type LaunchMode, LinearMarkupConverter, type ListOptions, type Logger, type LoggerOptions, type Loom, type LoomSummary, type MergeOptions, type MergeResult, type MockOptions, type OneShotMode, type OperationResult, PLACEHOLDER_COMMIT_PREFIX, type PRWorktreePattern, type Platform, type PortAssignmentOptions, type ProcessInfo, type ProjectCapability, type PullRequest, type RemoteBranchStatus, type ResourceCleanupOptions, type RgbColor, type SafetyCheck, type StartOptions, type StartResult, type SummaryResult, TableFormatter, type TableFormatterOptions, type TableGenerationOptions, type UpdateCheckCache, type UpdateCheckResult, UserAbortedCommitError, type ValidationOptions, type ValidationResult, type ValidationStepResult, type Workspace, type WorkspaceInput, WorkspaceManager, type WorkspaceSummary, type Worktree, type WorktreeCleanupOptions, type WorktreeCreateOptions, type WorktreeListOptions, type WorktreeOperationResult, type WorktreeStatus, type WorktreeValidation, branchExists, checkRemoteBranchStatus, createLogger, createStderrLogger, ensureRepositoryHasCommits, executeGitCommand, extractIssueNumber, extractPRNumber, fetchOrigin, findAllBranchesForIssue, findMainWorktreePath, findMainWorktreePathWithSettings, findPlaceholderCommitSha, findWorktreeForBranch, generateWorktreePath, getCurrentBranch, getDefaultBranch, getMergeTargetBranch, getRepoRoot, getThemeMode, getWorktreeRoot, hasUncommittedChanges, isBranchMergedIntoMain, isEmptyRepository, isFileGitignored, isFileTrackedByGit, isPRBranch, isPlaceholderCommit, isRemoteBranchUpToDate, isValidGitRepo, isWorktreePath, logger, parseWorktreeList, pushBranchToRemote, removePlaceholderCommitFromHead, removePlaceholderCommitFromHistory, setThemeMode };
2735
+ export { type AddIssueOptions, type AddIssueResult, type BatchCleanupResult, type BranchCleanupTarget, type BranchDeleteOptions, type BranchGenerationOptions, type BranchNameStrategy, type Capability, type ClaudeContext, ClaudeContextManager, type CleanupOptions, type CleanupResult, type CliInstalledProperties, type CliUpgradedProperties, type ColorData, type CommitOptions, type Config, type ContributeStartedProperties, type CreateLoomInput, type DatabaseDeletionResult, DatabaseManager, type DatabaseProvider, type DemoCompletedProperties, type DemoStartedProperties, type EnhanceOptions, type EnhanceResult, type EnvFileOptions, type EnvOperationResult, type EnvVariable, EnvironmentManager, type EpicPlannedProperties, type ErrorOccurredProperties, type FeedbackOptions, type FinishOptions, type FinishResult, GitCommandError, GitHubService, type GitStatus, type GitWorktree, GitWorktreeManager, type InitCompletedProperties, type InitStartedProperties, type InstallationMethod, type Issue, type IssueTracker, IssueTrackerFactory, type IssueTrackerInputDetection, type IssueTrackerProviderType, type LaunchMode, LinearMarkupConverter, type ListOptions, type Logger, type LoggerOptions, type Loom, type LoomAbandonedProperties, type LoomCreatedProperties, type LoomFinishedProperties, type LoomSummary, type MergeOptions, type MergeResult, type MockOptions, type OneShotMode, type OperationResult, PLACEHOLDER_COMMIT_PREFIX, type PRWorktreePattern, type Platform, type PortAssignmentOptions, type ProcessInfo, type ProjectCapability, type PullRequest, type RemoteBranchStatus, type ResourceCleanupOptions, type RgbColor, type SafetyCheck, type SessionStartedProperties, type StartOptions, type StartResult, type SummaryResult, type SwarmChildCompletedProperties, type SwarmCompletedProperties, type SwarmStartedProperties, TableFormatter, type TableFormatterOptions, type TableGenerationOptions, type TelemetryConfig, type TelemetryEventMap, type TelemetryEventName, type UpdateCheckCache, type UpdateCheckResult, UserAbortedCommitError, type ValidationOptions, type ValidationResult, type ValidationStepResult, type Workspace, type WorkspaceInput, WorkspaceManager, type WorkspaceSummary, type Worktree, type WorktreeCleanupOptions, type WorktreeCreateOptions, type WorktreeListOptions, type WorktreeOperationResult, type WorktreeStatus, type WorktreeValidation, branchExists, checkRemoteBranchStatus, createLogger, createStderrLogger, ensureRepositoryHasCommits, executeGitCommand, extractIssueNumber, extractPRNumber, fetchOrigin, findAllBranchesForIssue, findMainWorktreePath, findMainWorktreePathWithSettings, findPlaceholderCommitSha, findWorktreeForBranch, generateWorktreePath, getCurrentBranch, getDefaultBranch, getMergeTargetBranch, getRepoRoot, getThemeMode, getWorktreeRoot, hasUncommittedChanges, isBranchMergedIntoMain, isEmptyRepository, isFileGitignored, isFileTrackedByGit, isPRBranch, isPlaceholderCommit, isRemoteBranchUpToDate, isValidGitRepo, isWorktreePath, logger, parseWorktreeList, pushBranchToRemote, removePlaceholderCommitFromHead, removePlaceholderCommitFromHistory, setThemeMode };