@iloom/cli 0.9.1 → 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 (222) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +179 -41
  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-O7T6CFAJ.js → GitHubService-MEHKHUQP.js} +4 -4
  7. package/dist/IssueTrackerFactory-NG53YX5S.js +14 -0
  8. package/dist/{LoomLauncher-3I47SUPV.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 +179 -41
  13. package/dist/{SettingsManager-QR7V2IW2.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-IC4CJRMP.js → build-5GO3XW26.js} +9 -9
  23. package/dist/{chunk-USSL2X4A.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-2JPXGGP4.js → chunk-5MWV33NN.js} +4 -4
  29. package/dist/{chunk-POU2UMWN.js → chunk-6EU6TCF6.js} +10 -10
  30. package/dist/chunk-6EU6TCF6.js.map +1 -0
  31. package/dist/{chunk-Y5O2ALDZ.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-OK7LUTRW.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-Y5HSSIK2.js → chunk-KXDRI47U.js} +71 -13
  41. package/dist/chunk-KXDRI47U.js.map +1 -0
  42. package/dist/{chunk-HZXBHMVM.js → chunk-LXLMMXXY.js} +54 -14
  43. package/dist/chunk-LXLMMXXY.js.map +1 -0
  44. package/dist/{chunk-H6ST2TGP.js → chunk-MNHZB4Z2.js} +4 -4
  45. package/dist/{chunk-TL72BGP6.js → chunk-MORRVYPT.js} +2 -2
  46. package/dist/{chunk-TGRK3CHF.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-OAVJR4PM.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-MZPRBNYC.js → chunk-SN3SQCFK.js} +10 -8
  60. package/dist/{chunk-MZPRBNYC.js.map → chunk-SN3SQCFK.js.map} +1 -1
  61. package/dist/{chunk-4ZIHFUPN.js → chunk-UD3WJDIV.js} +145 -107
  62. package/dist/chunk-UD3WJDIV.js.map +1 -0
  63. package/dist/{chunk-3P6J4IZZ.js → chunk-UKBAJ2QQ.js} +61 -7
  64. package/dist/chunk-UKBAJ2QQ.js.map +1 -0
  65. package/dist/{chunk-RD7OPXZK.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-JT5LZRMI.js → chunk-VECNX6VX.js} +2 -2
  69. package/dist/{chunk-TRUMP4DA.js → chunk-VG45TUYK.js} +75 -6
  70. package/dist/chunk-VG45TUYK.js.map +1 -0
  71. package/dist/{chunk-4GAJJUYS.js → chunk-VGGST52X.js} +2 -2
  72. package/dist/{chunk-4LKGCFGG.js → chunk-WWKOVDWC.js} +2 -2
  73. package/dist/{chunk-2HZX6AMR.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-XFEK2X2D.js → chunk-YYAKPQBT.js} +73 -20
  80. package/dist/chunk-YYAKPQBT.js.map +1 -0
  81. package/dist/{chunk-NTTSUAVM.js → chunk-ZEWU5PZK.js} +2 -2
  82. package/dist/{chunk-5LVVQGB3.js → chunk-ZHPNZC75.js} +17 -17
  83. package/dist/chunk-ZHPNZC75.js.map +1 -0
  84. package/dist/{chunk-I3HMNWQQ.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-D3CSRBBZ.js → cleanup-6UCPVMFG.js} +81 -32
  88. package/dist/cleanup-6UCPVMFG.js.map +1 -0
  89. package/dist/cli.js +640 -350
  90. package/dist/cli.js.map +1 -1
  91. package/dist/{commit-IWGT42XN.js → commit-L3EPY5QG.js} +23 -21
  92. package/dist/commit-L3EPY5QG.js.map +1 -0
  93. package/dist/{compile-EOWJORKO.js → compile-ZS4HYRX5.js} +9 -9
  94. package/dist/{contribute-WSJTV2RX.js → contribute-ORDDQGSL.js} +14 -6
  95. package/dist/contribute-ORDDQGSL.js.map +1 -0
  96. package/dist/{dev-server-Q6M62ATG.js → dev-server-FYZ2AQIH.js} +29 -15
  97. package/dist/dev-server-FYZ2AQIH.js.map +1 -0
  98. package/dist/{feedback-QPNDZQRV.js → feedback-TMBXSCM5.js} +15 -15
  99. package/dist/{git-W3XUIFTR.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 +397 -53
  104. package/dist/index.js +1178 -40
  105. package/dist/index.js.map +1 -1
  106. package/dist/{init-ALYWKNWG.js → init-GFQ5W7GK.js} +57 -21
  107. package/dist/init-GFQ5W7GK.js.map +1 -0
  108. package/dist/issues-T4ZZSPEG.js +179 -0
  109. package/dist/issues-T4ZZSPEG.js.map +1 -0
  110. package/dist/{lint-IHUH45OC.js → lint-6TQXDZ3T.js} +9 -9
  111. package/dist/mcp/issue-management-server.js +2472 -257
  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-KWOV2OFO.js → open-5QZGXQRF.js} +15 -15
  118. package/dist/open-5QZGXQRF.js.map +1 -0
  119. package/dist/{plan-BRJBFJHF.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 +386 -47
  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-AJOJOZUG.js → rebase-DWIB77KV.js} +10 -10
  131. package/dist/{recap-GKJXMDXW.js → recap-MX63HAKV.js} +47 -19
  132. package/dist/recap-MX63HAKV.js.map +1 -0
  133. package/dist/{run-QEUVZF7J.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 +130 -15
  137. package/dist/{shell-DAAVG4YN.js → shell-G6VC2CYR.js} +14 -7
  138. package/dist/shell-G6VC2CYR.js.map +1 -0
  139. package/dist/{summary-ZKOA35PT.js → summary-FWHAX55O.js} +27 -25
  140. package/dist/summary-FWHAX55O.js.map +1 -0
  141. package/dist/{test-5GPWWO3P.js → test-F7JNJZYP.js} +9 -9
  142. package/dist/{test-git-EJUKDB7F.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-23TOBUXY.js → test-prefix-Q6TFSU6F.js} +4 -4
  146. package/dist/{test-webserver-CKROHFBQ.js → test-webserver-EONCG7E7.js} +6 -6
  147. package/dist/{vscode-6TOLFCI2.js → vscode-VA5X4P25.js} +7 -7
  148. package/package.json +5 -1
  149. package/dist/ClaudeContextManager-X2Y72GRL.js +0 -14
  150. package/dist/ClaudeService-7P32TTES.js +0 -13
  151. package/dist/chunk-2HZX6AMR.js.map +0 -1
  152. package/dist/chunk-3P6J4IZZ.js.map +0 -1
  153. package/dist/chunk-4ZIHFUPN.js.map +0 -1
  154. package/dist/chunk-5LVVQGB3.js.map +0 -1
  155. package/dist/chunk-B7U6OKUR.js.map +0 -1
  156. package/dist/chunk-ENGCJIYQ.js +0 -520
  157. package/dist/chunk-ENGCJIYQ.js.map +0 -1
  158. package/dist/chunk-FO5GGFOV.js.map +0 -1
  159. package/dist/chunk-HZXBHMVM.js.map +0 -1
  160. package/dist/chunk-I3HMNWQQ.js.map +0 -1
  161. package/dist/chunk-J7FJ6PUT.js +0 -121
  162. package/dist/chunk-J7FJ6PUT.js.map +0 -1
  163. package/dist/chunk-KBEIQP4G.js.map +0 -1
  164. package/dist/chunk-OAVJR4PM.js.map +0 -1
  165. package/dist/chunk-OK7LUTRW.js.map +0 -1
  166. package/dist/chunk-POU2UMWN.js.map +0 -1
  167. package/dist/chunk-QN47QVBX.js.map +0 -1
  168. package/dist/chunk-TGRK3CHF.js.map +0 -1
  169. package/dist/chunk-TRUMP4DA.js.map +0 -1
  170. package/dist/chunk-VOGGLPG5.js.map +0 -1
  171. package/dist/chunk-XFEK2X2D.js.map +0 -1
  172. package/dist/chunk-Y5HSSIK2.js.map +0 -1
  173. package/dist/chunk-Y5O2ALDZ.js.map +0 -1
  174. package/dist/cleanup-D3CSRBBZ.js.map +0 -1
  175. package/dist/commit-IWGT42XN.js.map +0 -1
  176. package/dist/contribute-WSJTV2RX.js.map +0 -1
  177. package/dist/dev-server-Q6M62ATG.js.map +0 -1
  178. package/dist/ignite-OPO6EDYT.js +0 -784
  179. package/dist/ignite-OPO6EDYT.js.map +0 -1
  180. package/dist/init-ALYWKNWG.js.map +0 -1
  181. package/dist/issues-L7TBUPXT.js +0 -116
  182. package/dist/issues-L7TBUPXT.js.map +0 -1
  183. package/dist/open-KWOV2OFO.js.map +0 -1
  184. package/dist/plan-BRJBFJHF.js.map +0 -1
  185. package/dist/recap-GKJXMDXW.js.map +0 -1
  186. package/dist/run-QEUVZF7J.js.map +0 -1
  187. package/dist/shell-DAAVG4YN.js.map +0 -1
  188. package/dist/summary-ZKOA35PT.js.map +0 -1
  189. /package/dist/{BranchNamingService-K6XNWQ6C.js.map → BranchNamingService-ECJHBB67.js.map} +0 -0
  190. /package/dist/{ClaudeContextManager-X2Y72GRL.js.map → ClaudeContextManager-QXX6ZFST.js.map} +0 -0
  191. /package/dist/{ClaudeService-7P32TTES.js.map → ClaudeService-NJNK2SUH.js.map} +0 -0
  192. /package/dist/{GitHubService-O7T6CFAJ.js.map → GitHubService-MEHKHUQP.js.map} +0 -0
  193. /package/dist/{MetadataManager-W3C54UYT.js.map → IssueTrackerFactory-NG53YX5S.js.map} +0 -0
  194. /package/dist/{LoomLauncher-3I47SUPV.js.map → LoomLauncher-L64HHS3T.js.map} +0 -0
  195. /package/dist/{ProjectCapabilityDetector-N5L7T4IY.js.map → MetadataManager-5QZSTKNN.js.map} +0 -0
  196. /package/dist/{PromptTemplateManager-36YLQRHP.js.map → ProjectCapabilityDetector-5KSYUTBJ.js.map} +0 -0
  197. /package/dist/{SettingsManager-QR7V2IW2.js.map → PromptTemplateManager-DULSVRRE.js.map} +0 -0
  198. /package/dist/{claude-TP2QO3BU.js.map → SettingsManager-BQDQA3FK.js.map} +0 -0
  199. /package/dist/{build-IC4CJRMP.js.map → build-5GO3XW26.js.map} +0 -0
  200. /package/dist/{chunk-USSL2X4A.js.map → chunk-3D7WQM7I.js.map} +0 -0
  201. /package/dist/{chunk-2JPXGGP4.js.map → chunk-5MWV33NN.js.map} +0 -0
  202. /package/dist/{chunk-KAYXR544.js.map → chunk-J5S7DFYC.js.map} +0 -0
  203. /package/dist/{chunk-H6ST2TGP.js.map → chunk-MNHZB4Z2.js.map} +0 -0
  204. /package/dist/{chunk-TL72BGP6.js.map → chunk-MORRVYPT.js.map} +0 -0
  205. /package/dist/{chunk-7ZEHSSUP.js.map → chunk-P4O6EH46.js.map} +0 -0
  206. /package/dist/{chunk-RD7OPXZK.js.map → chunk-UVD4CZKS.js.map} +0 -0
  207. /package/dist/{chunk-JT5LZRMI.js.map → chunk-VECNX6VX.js.map} +0 -0
  208. /package/dist/{chunk-4GAJJUYS.js.map → chunk-VGGST52X.js.map} +0 -0
  209. /package/dist/{chunk-4LKGCFGG.js.map → chunk-WWKOVDWC.js.map} +0 -0
  210. /package/dist/{chunk-NTTSUAVM.js.map → chunk-ZEWU5PZK.js.map} +0 -0
  211. /package/dist/{git-W3XUIFTR.js.map → claude-P3NQR6IJ.js.map} +0 -0
  212. /package/dist/{compile-EOWJORKO.js.map → compile-ZS4HYRX5.js.map} +0 -0
  213. /package/dist/{feedback-QPNDZQRV.js.map → feedback-TMBXSCM5.js.map} +0 -0
  214. /package/dist/{neon-helpers-VVFFTLXE.js.map → git-ET64COO3.js.map} +0 -0
  215. /package/dist/{lint-IHUH45OC.js.map → lint-6TQXDZ3T.js.map} +0 -0
  216. /package/dist/{projects-LH362JZQ.js.map → projects-2UOXFLNZ.js.map} +0 -0
  217. /package/dist/{rebase-AJOJOZUG.js.map → rebase-DWIB77KV.js.map} +0 -0
  218. /package/dist/{test-5GPWWO3P.js.map → test-F7JNJZYP.js.map} +0 -0
  219. /package/dist/{test-git-EJUKDB7F.js.map → test-git-BTAOIUE2.js.map} +0 -0
  220. /package/dist/{test-prefix-23TOBUXY.js.map → test-prefix-Q6TFSU6F.js.map} +0 -0
  221. /package/dist/{test-webserver-CKROHFBQ.js.map → test-webserver-EONCG7E7.js.map} +0 -0
  222. /package/dist/{vscode-6TOLFCI2.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"]>>;
@@ -437,23 +519,36 @@ declare const IloomSettingsSchema: z.ZodObject<{
437
519
  vscode?: boolean | undefined;
438
520
  }>>;
439
521
  attribution: z.ZodDefault<z.ZodEnum<["off", "upstreamOnly", "on"]>>;
522
+ git: z.ZodDefault<z.ZodObject<{
523
+ commitTimeout: z.ZodDefault<z.ZodNumber>;
524
+ }, "strip", z.ZodTypeAny, {
525
+ commitTimeout: number;
526
+ }, {
527
+ commitTimeout?: number | undefined;
528
+ }>>;
440
529
  }, "strip", z.ZodTypeAny, {
441
530
  sourceEnvOnStart: boolean;
442
531
  attribution: "off" | "upstreamOnly" | "on";
532
+ git: {
533
+ commitTimeout: number;
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;
443
547
  plan?: {
444
548
  model: "opus" | "sonnet" | "haiku";
445
549
  planner: "claude" | "gemini" | "codex";
446
550
  reviewer: "claude" | "gemini" | "codex" | "none";
447
551
  } | undefined;
448
- capabilities?: {
449
- web?: {
450
- basePort?: number | undefined;
451
- } | undefined;
452
- database?: {
453
- databaseUrlEnvVarName: string;
454
- } | undefined;
455
- capabilities?: ("cli" | "web")[] | undefined;
456
- } | undefined;
457
552
  mainBranch?: string | undefined;
458
553
  worktreePrefix?: string | undefined;
459
554
  protectedBranches?: string[] | undefined;
@@ -487,18 +582,20 @@ declare const IloomSettingsSchema: z.ZodObject<{
487
582
  noVerify?: boolean | undefined;
488
583
  } | undefined;
489
584
  } | undefined;
490
- agents?: Record<string, {
491
- model?: "opus" | "sonnet" | "haiku" | undefined;
492
- enabled?: boolean | undefined;
493
- providers?: Partial<Record<"claude" | "gemini" | "codex", string>> | undefined;
494
- review?: boolean | undefined;
495
- }> | null | undefined;
496
585
  spin?: {
497
586
  model: "opus" | "sonnet" | "haiku";
498
587
  } | undefined;
499
588
  summary?: {
500
589
  model: "opus" | "sonnet" | "haiku";
501
590
  } | undefined;
591
+ capabilities?: {
592
+ web?: {
593
+ basePort?: number | undefined;
594
+ } | undefined;
595
+ database?: {
596
+ databaseUrlEnvVarName: string;
597
+ } | undefined;
598
+ } | undefined;
502
599
  databaseProviders?: {
503
600
  neon?: {
504
601
  projectId: string;
@@ -506,7 +603,7 @@ declare const IloomSettingsSchema: z.ZodObject<{
506
603
  } | undefined;
507
604
  } | undefined;
508
605
  issueManagement?: {
509
- provider: "github" | "linear";
606
+ provider: "github" | "linear" | "jira";
510
607
  github?: {
511
608
  remote: string;
512
609
  } | undefined;
@@ -515,9 +612,21 @@ declare const IloomSettingsSchema: z.ZodObject<{
515
612
  branchFormat?: string | undefined;
516
613
  apiToken?: string | undefined;
517
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;
518
626
  } | undefined;
519
627
  mergeBehavior?: {
520
628
  mode: "local" | "github-pr" | "github-draft-pr";
629
+ openBrowserOnFinish: boolean;
521
630
  remote?: string | undefined;
522
631
  autoCommitPush?: boolean | undefined;
523
632
  } | undefined;
@@ -529,20 +638,23 @@ declare const IloomSettingsSchema: z.ZodObject<{
529
638
  vscode: boolean;
530
639
  } | undefined;
531
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;
532
653
  plan?: {
533
654
  model?: "opus" | "sonnet" | "haiku" | undefined;
534
655
  planner?: "claude" | "gemini" | "codex" | undefined;
535
656
  reviewer?: "claude" | "gemini" | "codex" | "none" | undefined;
536
657
  } | undefined;
537
- capabilities?: {
538
- web?: {
539
- basePort?: number | undefined;
540
- } | undefined;
541
- database?: {
542
- databaseUrlEnvVarName?: string | undefined;
543
- } | undefined;
544
- capabilities?: ("cli" | "web")[] | undefined;
545
- } | undefined;
546
658
  mainBranch?: string | undefined;
547
659
  sourceEnvOnStart?: boolean | undefined;
548
660
  worktreePrefix?: string | undefined;
@@ -577,18 +689,20 @@ declare const IloomSettingsSchema: z.ZodObject<{
577
689
  generateSummary?: boolean | undefined;
578
690
  } | undefined;
579
691
  } | undefined;
580
- agents?: Record<string, {
581
- model?: "opus" | "sonnet" | "haiku" | undefined;
582
- enabled?: boolean | undefined;
583
- providers?: Partial<Record<"claude" | "gemini" | "codex", string>> | undefined;
584
- review?: boolean | undefined;
585
- }> | null | undefined;
586
692
  spin?: {
587
693
  model?: "opus" | "sonnet" | "haiku" | undefined;
588
694
  } | undefined;
589
695
  summary?: {
590
696
  model?: "opus" | "sonnet" | "haiku" | undefined;
591
697
  } | undefined;
698
+ capabilities?: {
699
+ web?: {
700
+ basePort?: number | undefined;
701
+ } | undefined;
702
+ database?: {
703
+ databaseUrlEnvVarName?: string | undefined;
704
+ } | undefined;
705
+ } | undefined;
592
706
  databaseProviders?: {
593
707
  neon?: {
594
708
  projectId: string;
@@ -604,12 +718,24 @@ declare const IloomSettingsSchema: z.ZodObject<{
604
718
  branchFormat?: string | undefined;
605
719
  apiToken?: string | undefined;
606
720
  } | undefined;
607
- 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;
608
733
  } | undefined;
609
734
  mergeBehavior?: {
610
735
  remote?: string | undefined;
611
736
  mode?: "local" | "github-pr" | "github-draft-pr" | undefined;
612
737
  autoCommitPush?: boolean | undefined;
738
+ openBrowserOnFinish?: boolean | undefined;
613
739
  } | undefined;
614
740
  ide?: {
615
741
  type?: "vscode" | "cursor" | "webstorm" | "sublime" | "intellij" | "windsurf" | "antigravity" | undefined;
@@ -619,6 +745,9 @@ declare const IloomSettingsSchema: z.ZodObject<{
619
745
  vscode?: boolean | undefined;
620
746
  } | undefined;
621
747
  attribution?: "off" | "upstreamOnly" | "on" | undefined;
748
+ git?: {
749
+ commitTimeout?: number | undefined;
750
+ } | undefined;
622
751
  }>;
623
752
  /**
624
753
  * TypeScript type for iloom settings derived from Zod schema
@@ -901,6 +1030,13 @@ interface ResourceCleanupOptions {
901
1030
  checkMergeSafety?: boolean;
902
1031
  /** Check if branch exists on remote before allowing cleanup (useful for GitHub-PR mode) */
903
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;
904
1040
  }
905
1041
  /**
906
1042
  * Result of a cleanup operation
@@ -1041,7 +1177,7 @@ interface Loom {
1041
1177
  id: string;
1042
1178
  path: string;
1043
1179
  branch: string;
1044
- type: 'issue' | 'pr' | 'branch';
1180
+ type: 'issue' | 'pr' | 'branch' | 'epic';
1045
1181
  identifier: string | number;
1046
1182
  port: number;
1047
1183
  databaseBranch?: string;
@@ -1059,12 +1195,12 @@ interface Loom {
1059
1195
  cliSymlinks?: string[];
1060
1196
  }
1061
1197
  interface CreateLoomInput {
1062
- type: 'issue' | 'pr' | 'branch';
1198
+ type: 'issue' | 'pr' | 'branch' | 'epic';
1063
1199
  identifier: string | number;
1064
1200
  originalInput: string;
1065
1201
  baseBranch?: string;
1066
1202
  parentLoom?: {
1067
- type: 'issue' | 'pr' | 'branch';
1203
+ type: 'issue' | 'pr' | 'branch' | 'epic';
1068
1204
  identifier: string | number;
1069
1205
  branchName: string;
1070
1206
  worktreePath: string;
@@ -1082,12 +1218,20 @@ interface CreateLoomInput {
1082
1218
  setArguments?: string[];
1083
1219
  executablePath?: string;
1084
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[]>;
1085
1229
  };
1086
1230
  }
1087
1231
  type LaunchMode = 'editor' | 'terminal' | 'both';
1088
1232
  interface LoomSummary {
1089
1233
  id: string;
1090
- type: 'issue' | 'pr' | 'branch';
1234
+ type: 'issue' | 'pr' | 'branch' | 'epic';
1091
1235
  identifier: string | number;
1092
1236
  title?: string;
1093
1237
  branch: string;
@@ -1112,6 +1256,98 @@ interface ProcessInfo {
1112
1256
  isDevServer: boolean;
1113
1257
  }
1114
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
+
1115
1351
  interface Workspace {
1116
1352
  id: string;
1117
1353
  path: string;
@@ -1173,6 +1409,7 @@ interface PullRequest {
1173
1409
  baseBranch: string;
1174
1410
  url: string;
1175
1411
  isDraft: boolean;
1412
+ isFork?: boolean;
1176
1413
  }
1177
1414
  /**
1178
1415
  * Generic input detection result for issue trackers
@@ -1229,6 +1466,7 @@ interface StartOptions {
1229
1466
  devServer?: boolean;
1230
1467
  terminal?: boolean;
1231
1468
  childLoom?: boolean;
1469
+ epic?: boolean;
1232
1470
  oneShot?: OneShotMode;
1233
1471
  body?: string;
1234
1472
  json?: boolean;
@@ -1252,6 +1490,8 @@ interface FinishOptions {
1252
1490
  noBrowser?: boolean;
1253
1491
  cleanup?: boolean;
1254
1492
  json?: boolean;
1493
+ skipToPr?: boolean;
1494
+ review?: boolean;
1255
1495
  }
1256
1496
  /**
1257
1497
  * Options for the cleanup command
@@ -1272,6 +1512,8 @@ interface CleanupOptions {
1272
1512
  json?: boolean;
1273
1513
  /** Wait specified milliseconds before cleanup execution */
1274
1514
  defer?: number;
1515
+ /** Archive metadata instead of deleting (preserves loom in il list --finished) */
1516
+ archive?: boolean;
1275
1517
  }
1276
1518
  interface ListOptions {
1277
1519
  json?: boolean;
@@ -1294,14 +1536,15 @@ interface StartResult {
1294
1536
  path: string;
1295
1537
  branch: string;
1296
1538
  port?: number;
1297
- type: 'issue' | 'pr' | 'branch';
1539
+ type: 'issue' | 'pr' | 'branch' | 'epic';
1298
1540
  identifier: string | number;
1299
1541
  title?: string;
1300
1542
  capabilities?: string[];
1543
+ childIssueNumbers?: string[];
1301
1544
  }
1302
1545
  interface FinishResult {
1303
1546
  success: boolean;
1304
- type: 'issue' | 'pr' | 'branch';
1547
+ type: 'issue' | 'pr' | 'branch' | 'epic';
1305
1548
  identifier: string | number;
1306
1549
  /** Whether this was a dry-run operation */
1307
1550
  dryRun?: boolean;
@@ -1319,7 +1562,7 @@ interface SummaryResult {
1319
1562
  sessionId: string;
1320
1563
  issueNumber?: string | number;
1321
1564
  branchName: string;
1322
- loomType: 'issue' | 'pr' | 'branch';
1565
+ loomType: 'issue' | 'pr' | 'branch' | 'epic';
1323
1566
  }
1324
1567
  interface MockOptions {
1325
1568
  scenario: 'empty' | 'existing' | 'conflicts' | 'error';
@@ -1365,6 +1608,7 @@ interface CommitOptions {
1365
1608
  skipVerify?: boolean;
1366
1609
  skipVerifySilent?: boolean;
1367
1610
  trailerType?: 'Refs' | 'Fixes';
1611
+ timeout?: number;
1368
1612
  }
1369
1613
  /**
1370
1614
  * Error thrown when user aborts a commit operation
@@ -1418,10 +1662,18 @@ interface IssueTracker {
1418
1662
  url: string;
1419
1663
  }>;
1420
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
+ }>>;
1421
1671
  fetchPR?(identifier: string | number, repo?: string): Promise<PullRequest>;
1422
1672
  isValidPR?(identifier: string | number, repo?: string): Promise<PullRequest | false>;
1423
1673
  validatePRState?(pr: PullRequest): Promise<void>;
1424
1674
  moveIssueToInProgress?(identifier: string | number): Promise<void>;
1675
+ moveIssueToReadyForReview?(identifier: string | number): Promise<void>;
1676
+ normalizeIdentifier(identifier: string | number): string;
1425
1677
  extractContext(entity: Issue | PullRequest): string;
1426
1678
  }
1427
1679
 
@@ -1451,15 +1703,23 @@ declare class GitHubService implements IssueTracker {
1451
1703
  url: string;
1452
1704
  }>;
1453
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
+ }>>;
1454
1712
  moveIssueToInProgress(issueNumber: number): Promise<void>;
1713
+ moveIssueToReadyForReview(issueNumber: number): Promise<void>;
1455
1714
  private updateIssueStatusInProject;
1715
+ normalizeIdentifier(identifier: string | number): string;
1456
1716
  extractContext(entity: Issue | PullRequest): string;
1457
1717
  private mapGitHubIssueToIssue;
1458
1718
  private mapGitHubPRToPullRequest;
1459
1719
  private promptUserConfirmation;
1460
1720
  }
1461
1721
 
1462
- type IssueTrackerProviderType = 'github' | 'linear';
1722
+ type IssueTrackerProviderType = 'github' | 'linear' | 'jira';
1463
1723
  /**
1464
1724
  * Factory for creating IssueTracker instances based on settings
1465
1725
  * Provides a single point of provider instantiation
@@ -1634,6 +1894,7 @@ interface TemplateVariables {
1634
1894
  AUTO_COMMIT_PUSH?: boolean;
1635
1895
  STANDARD_ISSUE_MODE?: boolean;
1636
1896
  STANDARD_BRANCH_MODE?: boolean;
1897
+ DIRECT_PROMPT_MODE?: boolean;
1637
1898
  IS_VSCODE_MODE?: boolean;
1638
1899
  HAS_PACKAGE_JSON?: boolean;
1639
1900
  NO_PACKAGE_JSON?: boolean;
@@ -1674,6 +1935,15 @@ interface TemplateVariables {
1674
1935
  USE_CODEX_REVIEWER?: boolean;
1675
1936
  HAS_REVIEWER?: boolean;
1676
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;
1677
1947
  }
1678
1948
  declare class PromptTemplateManager {
1679
1949
  private templateDir;
@@ -1681,7 +1951,7 @@ declare class PromptTemplateManager {
1681
1951
  /**
1682
1952
  * Load a template file by name
1683
1953
  */
1684
- 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>;
1685
1955
  /**
1686
1956
  * Substitute variables in a template string using Handlebars
1687
1957
  */
@@ -1689,7 +1959,7 @@ declare class PromptTemplateManager {
1689
1959
  /**
1690
1960
  * Get a fully processed prompt for a workflow type
1691
1961
  */
1692
- 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>;
1693
1963
  }
1694
1964
 
1695
1965
  interface ClaudeWorkflowOptions {
@@ -1749,6 +2019,48 @@ declare class ClaudeContextManager {
1749
2019
  launchWithContext(context: ClaudeContext, headless?: boolean): Promise<string | void>;
1750
2020
  }
1751
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
+ }
1752
2064
  /**
1753
2065
  * Input for writing metadata (all fields except version and created_at)
1754
2066
  * Note: issueTracker is required because every loom should have an associated
@@ -1758,7 +2070,8 @@ interface WriteMetadataInput {
1758
2070
  description: string;
1759
2071
  branchName: string;
1760
2072
  worktreePath: string;
1761
- issueType: 'branch' | 'issue' | 'pr';
2073
+ issueType: 'branch' | 'issue' | 'pr' | 'epic';
2074
+ issueKey?: string;
1762
2075
  issue_numbers: string[];
1763
2076
  pr_numbers: string[];
1764
2077
  issueTracker: string;
@@ -1770,13 +2083,23 @@ interface WriteMetadataInput {
1770
2083
  draftPrNumber?: number;
1771
2084
  oneShot?: OneShotMode;
1772
2085
  capabilities: ProjectCapability[];
2086
+ state?: SwarmState;
2087
+ childIssueNumbers?: string[];
1773
2088
  parentLoom?: {
1774
- type: 'issue' | 'pr' | 'branch';
2089
+ type: 'issue' | 'pr' | 'branch' | 'epic';
1775
2090
  identifier: string | number;
1776
2091
  branchName: string;
1777
2092
  worktreePath: string;
1778
2093
  databaseBranch?: string;
1779
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;
1780
2103
  }
1781
2104
  /**
1782
2105
  * Result of reading metadata for a worktree
@@ -1788,7 +2111,8 @@ interface LoomMetadata {
1788
2111
  created_at: string | null;
1789
2112
  branchName: string | null;
1790
2113
  worktreePath: string | null;
1791
- issueType: 'branch' | 'issue' | 'pr' | null;
2114
+ issueType: 'branch' | 'issue' | 'pr' | 'epic' | null;
2115
+ issueKey: string | null;
1792
2116
  issue_numbers: string[];
1793
2117
  pr_numbers: string[];
1794
2118
  issueTracker: string | null;
@@ -1800,13 +2124,23 @@ interface LoomMetadata {
1800
2124
  draftPrNumber: number | null;
1801
2125
  oneShot: OneShotMode | null;
1802
2126
  capabilities: ProjectCapability[];
2127
+ state: SwarmState | null;
2128
+ childIssueNumbers: string[];
1803
2129
  parentLoom: {
1804
- type: 'issue' | 'pr' | 'branch';
2130
+ type: 'issue' | 'pr' | 'branch' | 'epic';
1805
2131
  identifier: string | number;
1806
2132
  branchName: string;
1807
2133
  worktreePath: string;
1808
2134
  databaseBranch?: string;
1809
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;
1810
2144
  }
1811
2145
  /**
1812
2146
  * MetadataManager: Manage loom metadata persistence
@@ -1874,6 +2208,16 @@ declare class MetadataManager {
1874
2208
  * @returns Array of LoomMetadata objects from all stored files
1875
2209
  */
1876
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>;
1877
2221
  /**
1878
2222
  * Delete metadata for a worktree (spec section 3.3)
1879
2223
  *
@@ -2388,4 +2732,4 @@ declare class TableFormatter {
2388
2732
  static previewFormatting(headers: string[], options?: TableFormatterOptions): string;
2389
2733
  }
2390
2734
 
2391
- 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 };