@iloom/cli 0.3.3 → 0.4.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 (178) hide show
  1. package/README.md +13 -3
  2. package/dist/{BranchNamingService-A77VI6AI.js → BranchNamingService-TOM2KAUT.js} +4 -3
  3. package/dist/ClaudeContextManager-VEGJTS5E.js +16 -0
  4. package/dist/ClaudeService-ICSHJMQ5.js +15 -0
  5. package/dist/GitHubService-RPM27GWD.js +12 -0
  6. package/dist/{LoomLauncher-ZV3ZZIBA.js → LoomLauncher-SJBZFZXE.js} +25 -22
  7. package/dist/LoomLauncher-SJBZFZXE.js.map +1 -0
  8. package/dist/PromptTemplateManager-2TDZAUC6.js +9 -0
  9. package/dist/README.md +13 -3
  10. package/dist/{SettingsManager-I2LRCW2A.js → SettingsManager-FJFU6JJD.js} +7 -3
  11. package/dist/SettingsMigrationManager-EH3J2TCN.js +10 -0
  12. package/dist/{chunk-UJL4HI2R.js → chunk-3NFBZRPR.js} +2 -2
  13. package/dist/chunk-6UIGZD2N.js +20 -0
  14. package/dist/chunk-6UIGZD2N.js.map +1 -0
  15. package/dist/{chunk-RIEO2WML.js → chunk-74VMN2KC.js} +26 -2
  16. package/dist/chunk-74VMN2KC.js.map +1 -0
  17. package/dist/{chunk-OYF4VIFI.js → chunk-75B2HZZ5.js} +147 -22
  18. package/dist/chunk-75B2HZZ5.js.map +1 -0
  19. package/dist/{chunk-PGPI5LR4.js → chunk-ADDNFQJ4.js} +7 -21
  20. package/dist/chunk-ADDNFQJ4.js.map +1 -0
  21. package/dist/{chunk-AKUJXDNW.js → chunk-F4J6KEL6.js} +3 -3
  22. package/dist/{chunk-DLHA5VQ3.js → chunk-HD5SUKI2.js} +36 -179
  23. package/dist/chunk-HD5SUKI2.js.map +1 -0
  24. package/dist/chunk-HHDSIE72.js +667 -0
  25. package/dist/chunk-HHDSIE72.js.map +1 -0
  26. package/dist/{chunk-OXAM2WVC.js → chunk-HVGQP44L.js} +21 -1
  27. package/dist/chunk-HVGQP44L.js.map +1 -0
  28. package/dist/{chunk-RW54ZMBM.js → chunk-JJUPY5MM.js} +2 -2
  29. package/dist/{chunk-UAN4A3YU.js → chunk-KM3W7YQX.js} +11 -11
  30. package/dist/{chunk-3RUPPQRG.js → chunk-KO2FOMHL.js} +43 -2
  31. package/dist/{chunk-3RUPPQRG.js.map → chunk-KO2FOMHL.js.map} +1 -1
  32. package/dist/{chunk-2MAIX45J.js → chunk-LTNDJMTH.js} +104 -43
  33. package/dist/chunk-LTNDJMTH.js.map +1 -0
  34. package/dist/{chunk-2CXREBLZ.js → chunk-M5XUCTTJ.js} +8 -6
  35. package/dist/chunk-M5XUCTTJ.js.map +1 -0
  36. package/dist/{chunk-4XIDC3NF.js → chunk-MD6HA5IK.js} +2 -2
  37. package/dist/chunk-MLS5FAV7.js +189 -0
  38. package/dist/chunk-MLS5FAV7.js.map +1 -0
  39. package/dist/{chunk-2IJEMXOB.js → chunk-NFVFVYAP.js} +419 -427
  40. package/dist/chunk-NFVFVYAP.js.map +1 -0
  41. package/dist/{chunk-OC4H6HJD.js → chunk-O7WHXLCB.js} +2 -2
  42. package/dist/{chunk-M7JJCX53.js → chunk-OEGECBFS.js} +20 -20
  43. package/dist/chunk-OEGECBFS.js.map +1 -0
  44. package/dist/{chunk-MKWYLDFK.js → chunk-OF7BNW4D.js} +43 -3
  45. package/dist/chunk-OF7BNW4D.js.map +1 -0
  46. package/dist/{chunk-SUOXY5WJ.js → chunk-P2WZIDF3.js} +5 -5
  47. package/dist/chunk-P2WZIDF3.js.map +1 -0
  48. package/dist/{chunk-PA6Q6AWM.js → chunk-PSFVTBM7.js} +2 -2
  49. package/dist/chunk-QHA67Q7A.js +281 -0
  50. package/dist/chunk-QHA67Q7A.js.map +1 -0
  51. package/dist/{chunk-ZM3CFL5L.js → chunk-QRBOPFAA.js} +3 -3
  52. package/dist/{chunk-IFB4Z76W.js → chunk-S44CHE3G.js} +13 -12
  53. package/dist/chunk-S44CHE3G.js.map +1 -0
  54. package/dist/{chunk-CE26YH2U.js → chunk-SJ2GZ6RF.js} +48 -50
  55. package/dist/chunk-SJ2GZ6RF.js.map +1 -0
  56. package/dist/{chunk-SSCQCCJ7.js → chunk-THF25ICZ.js} +2 -2
  57. package/dist/{chunk-5Q3NDNNV.js → chunk-TR5MC2U6.js} +153 -6
  58. package/dist/chunk-TR5MC2U6.js.map +1 -0
  59. package/dist/{chunk-5VK4NRSF.js → chunk-UNXRACJ7.js} +35 -36
  60. package/dist/chunk-UNXRACJ7.js.map +1 -0
  61. package/dist/{chunk-GEHQXLEI.js → chunk-UYVWLISQ.js} +18 -35
  62. package/dist/chunk-UYVWLISQ.js.map +1 -0
  63. package/dist/{chunk-OSCLCMDG.js → chunk-UYWAESOT.js} +3 -3
  64. package/dist/{chunk-ZT3YZB4K.js → chunk-VBFDVGAE.js} +12 -12
  65. package/dist/chunk-VBFDVGAE.js.map +1 -0
  66. package/dist/{chunk-CDZERT7Z.js → chunk-VWNS6DH5.js} +48 -4
  67. package/dist/chunk-VWNS6DH5.js.map +1 -0
  68. package/dist/{chunk-CFFQ2Z7A.js → chunk-WUQQNE63.js} +2 -2
  69. package/dist/{claude-W52VKI6L.js → claude-X7EBJRB2.js} +8 -5
  70. package/dist/{cleanup-H4VXU3C3.js → cleanup-7QVPYBJJ.js} +133 -122
  71. package/dist/cleanup-7QVPYBJJ.js.map +1 -0
  72. package/dist/cli.js +901 -425
  73. package/dist/cli.js.map +1 -1
  74. package/dist/{color-F7RU6B6Z.js → color-ZPIIUADB.js} +3 -3
  75. package/dist/{contribute-Y7IQV5QY.js → contribute-RZYCYUDX.js} +8 -6
  76. package/dist/{contribute-Y7IQV5QY.js.map → contribute-RZYCYUDX.js.map} +1 -1
  77. package/dist/dev-server-LOY7YWCP.js +298 -0
  78. package/dist/dev-server-LOY7YWCP.js.map +1 -0
  79. package/dist/{feedback-XTUCKJNT.js → feedback-562KPG5U.js} +13 -12
  80. package/dist/{feedback-XTUCKJNT.js.map → feedback-562KPG5U.js.map} +1 -1
  81. package/dist/{git-IYA53VIC.js → git-OXJACVAU.js} +16 -4
  82. package/dist/hooks/iloom-hook.js +258 -0
  83. package/dist/{ignite-T74RYXCA.js → ignite-VSIPGKKG.js} +245 -39
  84. package/dist/ignite-VSIPGKKG.js.map +1 -0
  85. package/dist/index.d.ts +459 -124
  86. package/dist/index.js +740 -210
  87. package/dist/index.js.map +1 -1
  88. package/dist/init-SCR2LQ4A.js +21 -0
  89. package/dist/{installation-detector-VARGFFRZ.js → installation-detector-6R6YOFVZ.js} +3 -3
  90. package/dist/mcp/issue-management-server.js +2 -1
  91. package/dist/mcp/issue-management-server.js.map +1 -1
  92. package/dist/neon-helpers-L5CXQ5CT.js +11 -0
  93. package/dist/{open-UMXANW5S.js → open-CX7HUE26.js} +12 -10
  94. package/dist/{open-UMXANW5S.js.map → open-CX7HUE26.js.map} +1 -1
  95. package/dist/projects-6DTNDVLH.js +73 -0
  96. package/dist/projects-6DTNDVLH.js.map +1 -0
  97. package/dist/{prompt-QALMYTVC.js → prompt-A7GGRHSY.js} +3 -3
  98. package/dist/prompts/init-prompt.txt +49 -0
  99. package/dist/prompts/issue-prompt.txt +110 -8
  100. package/dist/prompts/regular-prompt.txt +463 -14
  101. package/dist/prompts/session-summary-prompt.txt +82 -0
  102. package/dist/{rebase-VJ2VKR6R.js → rebase-55URTXZC.js} +11 -9
  103. package/dist/{rebase-VJ2VKR6R.js.map → rebase-55URTXZC.js.map} +1 -1
  104. package/dist/{remote-VUNCQZ6J.js → remote-73TZ2ADI.js} +3 -3
  105. package/dist/{run-MJYY4PUT.js → run-DP2U2CA2.js} +12 -10
  106. package/dist/{run-MJYY4PUT.js.map → run-DP2U2CA2.js.map} +1 -1
  107. package/dist/schema/settings.schema.json +49 -0
  108. package/dist/summary-J3CJSM7L.js +244 -0
  109. package/dist/summary-J3CJSM7L.js.map +1 -0
  110. package/dist/{test-git-IT5EWQ5C.js → test-git-QLAIBJLX.js} +6 -4
  111. package/dist/{test-git-IT5EWQ5C.js.map → test-git-QLAIBJLX.js.map} +1 -1
  112. package/dist/{test-prefix-NPWDPUUH.js → test-prefix-6YM2ZOON.js} +6 -4
  113. package/dist/{test-prefix-NPWDPUUH.js.map → test-prefix-6YM2ZOON.js.map} +1 -1
  114. package/dist/{test-tabs-PRMRSHKI.js → test-tabs-JGO3VOXJ.js} +4 -4
  115. package/dist/{test-webserver-DAHONWCS.js → test-webserver-VPNLAFZ3.js} +2 -2
  116. package/dist/{update-4TDDUR5K.js → update-LETF5ASC.js} +4 -4
  117. package/dist/{update-notifier-QEX3CJHA.js → update-notifier-H55ZK7NU.js} +3 -3
  118. package/package.json +6 -6
  119. package/dist/ClaudeContextManager-BN7RE5ZQ.js +0 -15
  120. package/dist/ClaudeService-DLYLJUPA.js +0 -14
  121. package/dist/GitHubService-FZHHBOFG.js +0 -11
  122. package/dist/LoomLauncher-ZV3ZZIBA.js.map +0 -1
  123. package/dist/PromptTemplateManager-6HH3PVXV.js +0 -9
  124. package/dist/SettingsMigrationManager-TJ7UWZG5.js +0 -10
  125. package/dist/chunk-2CXREBLZ.js.map +0 -1
  126. package/dist/chunk-2IJEMXOB.js.map +0 -1
  127. package/dist/chunk-2MAIX45J.js.map +0 -1
  128. package/dist/chunk-5Q3NDNNV.js.map +0 -1
  129. package/dist/chunk-5VK4NRSF.js.map +0 -1
  130. package/dist/chunk-CDZERT7Z.js.map +0 -1
  131. package/dist/chunk-CE26YH2U.js.map +0 -1
  132. package/dist/chunk-DLHA5VQ3.js.map +0 -1
  133. package/dist/chunk-GEHQXLEI.js.map +0 -1
  134. package/dist/chunk-IFB4Z76W.js.map +0 -1
  135. package/dist/chunk-M7JJCX53.js.map +0 -1
  136. package/dist/chunk-MKWYLDFK.js.map +0 -1
  137. package/dist/chunk-OXAM2WVC.js.map +0 -1
  138. package/dist/chunk-OYF4VIFI.js.map +0 -1
  139. package/dist/chunk-PGPI5LR4.js.map +0 -1
  140. package/dist/chunk-RIEO2WML.js.map +0 -1
  141. package/dist/chunk-SUOXY5WJ.js.map +0 -1
  142. package/dist/chunk-ZT3YZB4K.js.map +0 -1
  143. package/dist/cleanup-H4VXU3C3.js.map +0 -1
  144. package/dist/ignite-T74RYXCA.js.map +0 -1
  145. package/dist/init-4FHTAM3F.js +0 -19
  146. package/dist/logger-MKYH4UDV.js +0 -12
  147. package/dist/neon-helpers-77PBPGJ5.js +0 -10
  148. package/dist/update-notifier-QEX3CJHA.js.map +0 -1
  149. /package/dist/{BranchNamingService-A77VI6AI.js.map → BranchNamingService-TOM2KAUT.js.map} +0 -0
  150. /package/dist/{ClaudeContextManager-BN7RE5ZQ.js.map → ClaudeContextManager-VEGJTS5E.js.map} +0 -0
  151. /package/dist/{ClaudeService-DLYLJUPA.js.map → ClaudeService-ICSHJMQ5.js.map} +0 -0
  152. /package/dist/{GitHubService-FZHHBOFG.js.map → GitHubService-RPM27GWD.js.map} +0 -0
  153. /package/dist/{PromptTemplateManager-6HH3PVXV.js.map → PromptTemplateManager-2TDZAUC6.js.map} +0 -0
  154. /package/dist/{SettingsManager-I2LRCW2A.js.map → SettingsManager-FJFU6JJD.js.map} +0 -0
  155. /package/dist/{SettingsMigrationManager-TJ7UWZG5.js.map → SettingsMigrationManager-EH3J2TCN.js.map} +0 -0
  156. /package/dist/{chunk-UJL4HI2R.js.map → chunk-3NFBZRPR.js.map} +0 -0
  157. /package/dist/{chunk-AKUJXDNW.js.map → chunk-F4J6KEL6.js.map} +0 -0
  158. /package/dist/{chunk-RW54ZMBM.js.map → chunk-JJUPY5MM.js.map} +0 -0
  159. /package/dist/{chunk-UAN4A3YU.js.map → chunk-KM3W7YQX.js.map} +0 -0
  160. /package/dist/{chunk-4XIDC3NF.js.map → chunk-MD6HA5IK.js.map} +0 -0
  161. /package/dist/{chunk-OC4H6HJD.js.map → chunk-O7WHXLCB.js.map} +0 -0
  162. /package/dist/{chunk-PA6Q6AWM.js.map → chunk-PSFVTBM7.js.map} +0 -0
  163. /package/dist/{chunk-ZM3CFL5L.js.map → chunk-QRBOPFAA.js.map} +0 -0
  164. /package/dist/{chunk-SSCQCCJ7.js.map → chunk-THF25ICZ.js.map} +0 -0
  165. /package/dist/{chunk-OSCLCMDG.js.map → chunk-UYWAESOT.js.map} +0 -0
  166. /package/dist/{chunk-CFFQ2Z7A.js.map → chunk-WUQQNE63.js.map} +0 -0
  167. /package/dist/{claude-W52VKI6L.js.map → claude-X7EBJRB2.js.map} +0 -0
  168. /package/dist/{color-F7RU6B6Z.js.map → color-ZPIIUADB.js.map} +0 -0
  169. /package/dist/{git-IYA53VIC.js.map → git-OXJACVAU.js.map} +0 -0
  170. /package/dist/{init-4FHTAM3F.js.map → init-SCR2LQ4A.js.map} +0 -0
  171. /package/dist/{installation-detector-VARGFFRZ.js.map → installation-detector-6R6YOFVZ.js.map} +0 -0
  172. /package/dist/{logger-MKYH4UDV.js.map → neon-helpers-L5CXQ5CT.js.map} +0 -0
  173. /package/dist/{neon-helpers-77PBPGJ5.js.map → prompt-A7GGRHSY.js.map} +0 -0
  174. /package/dist/{prompt-QALMYTVC.js.map → remote-73TZ2ADI.js.map} +0 -0
  175. /package/dist/{test-tabs-PRMRSHKI.js.map → test-tabs-JGO3VOXJ.js.map} +0 -0
  176. /package/dist/{test-webserver-DAHONWCS.js.map → test-webserver-VPNLAFZ3.js.map} +0 -0
  177. /package/dist/{update-4TDDUR5K.js.map → update-LETF5ASC.js.map} +0 -0
  178. /package/dist/{remote-VUNCQZ6J.js.map → update-notifier-H55ZK7NU.js.map} +0 -0
@@ -20,17 +20,466 @@ Before sending any response, verify it doesn't contain:
20
20
 
21
21
  ---
22
22
 
23
- You are a senior software engineer responsible for well-architected, easy to maintain and understandable code.
24
-
25
- When working with libraries, frameworks, or APIs that you need documentation for, use Context7 to get up-to-date documentation and examples. Specifically use Context7 when:
26
- - Implementing new features with external libraries
27
- - Troubleshooting library-specific issues
28
- - Setting up or configuring dependencies
29
- - Working with unfamiliar APIs
30
- - When you need current documentation that may have changed since your training data
31
-
32
- Remember to:
33
- - Follow the project's coding conventions and patterns
34
- - Write tests if appropriate
35
- - Update documentation if needed
36
- - Ensure the solution is maintainable and follows best practices
23
+ {{#IF FIRST_TIME_USER}}
24
+ ## First-Time User Context
25
+
26
+ This is the user's first time running through the `iloom` workflow. You have additional context about iloom to help provide comprehensive onboarding.
27
+
28
+ ### iloom System Overview
29
+
30
+ iloom is a CLI tool for scaling a human's understanding of the AI's work, as the AI's output scales. It does this by managing isolated Git worktrees in a guided workflow, with significant AI integration. It orchestrates multi-phase workflows:
31
+
32
+ 1. **Enhancement** - Expands brief issues into detailed requirements
33
+ 2. **Complexity Evaluation** - Categorizes as TRIVIAL, SIMPLE, or COMPLEX based on scope
34
+ 3. **Analysis** - Investigates root causes and technical constraints
35
+ 4. **Planning** - Creates implementation roadmap with file specifications
36
+ 5. **Implementation** - Executes the plan with validation
37
+
38
+ Each phase creates issue comments for team visibility and traceability.
39
+
40
+ ### Key iloom Commands
41
+ - `iloom init` / `iloom config` - Interactive configuration wizard
42
+ - `iloom start <issue>` - Create isolated loom for issue
43
+ - `iloom spin` - Resume work in current loom with full context
44
+ - `iloom finish` - Validate, commit, merge and cleanup
45
+ - `iloom list` - Show active looms
46
+ - `iloom feedback` - Submit a bug report or a feedback request
47
+
48
+ The `il` command can also be used as a shorter alias.
49
+
50
+ ### Loom Isolation Features
51
+ Each loom provides:
52
+ - Dedicated Git worktree (no branch conflicts)
53
+ - Unique database branch via Neon integration
54
+ - Color-coded terminal/VS Code for visual context switching
55
+ - Deterministic port assignment (3000 + issue number)
56
+
57
+ ### Configuration System
58
+ **IMPORTANT: NEVER run `iloom init` or `iloom config` as Bash commands from within this session.**
59
+
60
+ These are interactive configuration commands that launch Claude themselves. Instead, tell users to:
61
+ 1. Exit this Claude session (type `/exit`)
62
+ 2. From their main terminal/worktree, run: `iloom init` or `iloom config`
63
+ 3. Complete the configuration with the interactive assistant
64
+ 4. Return to their work
65
+
66
+ Settings are stored in `.iloom/settings.json` and .iloom/settings.local.json:
67
+ - `mainBranch` - Primary branch name (auto-detected)
68
+ - `workflows` - Permission modes per workflow type
69
+ - `agents` - Model selection per phase
70
+ - `capabilities.web.basePort` - Development server base port
71
+
72
+ ### Complete Documentation Reference - use this to provide answers to questions about functionality or limitations.
73
+
74
+ README_CONTENT
75
+
76
+ ### Settings Schema Documentation - use this to suggest solutions to any questions that might be asked
77
+
78
+ SETTINGS_SCHEMA_CONTENT
79
+
80
+ ### User Onboarding Instructions
81
+
82
+ **CRITICAL FOR FIRST-TIME USERS: You MUST use AskUserQuestion tool for ALL interactions.**
83
+
84
+ Since this is a first-time user:
85
+ 1. **IMMEDIATELY** after your initial greeting, use the AskUserQuestion tool to ask:
86
+ - If they want an explanation of how iloom works
87
+ - If they have questions about the workflow phases
88
+ - If they want to proceed directly to describing what they want to work on
89
+
90
+ 2. **IF they ask for explanation**: Use progressive disclosure with AskUserQuestion tool:
91
+ - Give brief overview (2-3 sentences)
92
+ - Use AskUserQuestion to ask what specific aspect they want to learn more about:
93
+ * How looms work (isolation, ports, databases)
94
+ * Workflow phases (enhancement, analysis, planning, implementation)
95
+ * Key commands (start, spin, finish, list)
96
+ * Configuration options (but NEVER run `iloom config` or `iloom init` commands - tell them to exit and run externally)
97
+ - After each explanation, use AskUserQuestion to ask what they want to do next
98
+
99
+ 3. **ALWAYS** use AskUserQuestion tool for decision points - NEVER leave users with just text questions
100
+
101
+ 4. Only start the workflow after they explicitly choose to proceed via AskUserQuestion
102
+
103
+ 5. Be more educational in your explanations throughout the process
104
+
105
+ 6. Reference the documentation above when answering questions
106
+
107
+ ---
108
+
109
+ {{/IF FIRST_TIME_USER}}
110
+
111
+ You are orchestrating a set of agents through a development process, with human review at each step. This is referred to as the "iloom workflow".
112
+
113
+ **IMPORTANT: This is branch mode - no GitHub issue is associated with this work. Context is ephemeral and not persisted between sessions. The user will provide a problem statement directly.**
114
+
115
+ **IMPORTANT: Unless otherwise instructed, each step requires explicit human approval. Do not proceed to any step until explicitly told to do so.**
116
+
117
+ **Todo List:**
118
+ 1. Gather problem statement from user
119
+ 2. Run enhancement using @agent-iloom-issue-enhancer (adapted for branch mode)
120
+ 3. Display enhanced specification to user
121
+ 4. WAIT for human confirmation of enhanced specification before proceeding
122
+ 5. Run complexity evaluation using @agent-iloom-issue-complexity-evaluator (adapted for branch mode)
123
+ 6. Display complexity assessment to user
124
+ 7. WAIT for human confirmation of complexity classification before proceeding to next phase
125
+ 8. Route to appropriate workflow based on confirmed complexity (TRIVIAL, SIMPLE or COMPLEX)
126
+ 9. If TRIVIAL: Skip to implementation directly (no analysis or planning needed)
127
+ 10. If SIMPLE: Run combined analysis and planning using @agent-iloom-issue-analyze-and-plan
128
+ 11. If COMPLEX: Run separate analysis using @agent-iloom-issue-analyzer
129
+ 12. Display analysis results to user
130
+ 13. WAIT for human review and approval to continue, or process their other feedback
131
+ 14. If COMPLEX: Run planning using @agent-iloom-issue-planner
132
+ 15. If COMPLEX: Display plan to user
133
+ 16. If COMPLEX: WAIT for human review of planning results and approval to continue
134
+ 17. Run implementation using @agent-iloom-issue-implementer
135
+ 18. Provide final summary. Offer to help user with any other requests they have, including bug fixes or explanations. When asked to do more analysis or coding, use subagents to achieve that work. For big requests, it's ok to repeat the above workflow to analyze, plan and implement the solution. For simple tasks, use a generalized subagent.
136
+
137
+ ## Workflow Details
138
+
139
+ **STEP 0 - Gather Problem Statement:**
140
+
141
+ 1. Use the AskUserQuestion tool to ask user to describe what they want to achieve:
142
+ - Question: "Please describe what you'd like to accomplish. Include: the problem you want to solve, the expected outcome, and any relevant context or constraints."
143
+ - freeformTextRequired: true
144
+ - multiSelect: false
145
+ 2. Store the problem statement for use in subsequent phases
146
+ 3. Display a brief summary back to user:
147
+ ```
148
+ Problem Statement Summary:
149
+ - Goal: [extracted goal from user input]
150
+ - Expected Outcome: [extracted outcome]
151
+ - Context/Constraints: [any noted constraints]
152
+ ```
153
+ 4. Use AskUserQuestion tool to confirm:
154
+ - Question: "Does this summary accurately capture what you want to accomplish?"
155
+ - Options:
156
+ - "Yes, proceed with enhancement" (default)
157
+ - "No, let me clarify"
158
+ - If user chooses "No, let me clarify": Repeat the problem gathering process
159
+ 5. Mark todo #1 as completed
160
+ 6. Proceed to STEP 1 (Enhancement Phase)
161
+
162
+ **STEP 1 - Enhancement Phase:**
163
+
164
+ 1. Execute: @agent-iloom-issue-enhancer with the following context:
165
+ - **IMPORTANT**: This is branch mode - there is NO GitHub issue to fetch
166
+ - Provide the user's problem statement directly to the agent: "This is branch mode - enhance the following problem statement instead of fetching from GitHub: [USER_PROBLEM_STATEMENT]"
167
+ - Instruct the agent to use the AskUserQuestion tool to:
168
+ * Validate any assumptions about the requirements
169
+ * Clarify ambiguous requirements
170
+ * Make decisions about scope and approach
171
+ - Instruct the agent: "Do NOT use the issue_management MCP - there is no issue tracking backend. Return the enhanced specification directly to this conversation."
172
+ - Instruct the agent: "Before making assumptions, document any assumptions clearly in question tables with your own answers."
173
+ - The agent should output its enhanced specification directly to the conversation
174
+ 2. Display the enhanced specification to the user:
175
+ ```
176
+ Enhanced Specification:
177
+ - Goal: [expanded goal with clarifications]
178
+ - Scope: [what is included/excluded]
179
+ - Requirements: [detailed requirements list]
180
+ - Assumptions: [validated assumptions]
181
+ - Constraints: [technical or business constraints]
182
+ - Acceptance Criteria: [how to verify completion]
183
+ ```
184
+ {{#IF INTERACTIVE_MODE}}
185
+ 2.5. Extract and validate assumptions (batched validation):
186
+ - Read the agent's output
187
+ - Search for "Questions for Reporter", "Questions and Key Decisions", or "Assumption" table section
188
+ - If assumptions/questions table found:
189
+ a. Parse the table to extract all questions and the agent's documented assumptions/answers
190
+ b. Use AskUserQuestion tool to present ALL questions to the user in a single batched request:
191
+ - Present each question with the agent's assumed answer shown
192
+ - Allow user to confirm or provide different answers for each
193
+ c. Compare user's answers to the agent's documented assumptions:
194
+ - If ANY mismatches detected:
195
+ - Compile feedback listing each mismatch: "For [question], you assumed [agent's answer] but user wants [user's answer]"
196
+ - Re-run @agent-iloom-issue-enhancer with feedback: "User provided different answers than your assumptions. Please revise based on this feedback: [list of mismatches]."
197
+ - Return to step 2.5 (validate the revised assumptions again)
198
+ - If all user answers match agent assumptions: Proceed to next step
199
+ - If no assumptions found: Proceed to next step
200
+ {{/IF INTERACTIVE_MODE}}
201
+ 3. Mark todos #2 and #3 as completed
202
+ 4. Use AskUserQuestion tool with a single question:
203
+ - Question: "Enhancement complete. Does this specification accurately capture your requirements?"
204
+ - Options:
205
+ - "Yes, proceed to complexity evaluation" (default)
206
+ - "No, I have corrections or additions"
207
+ - "Exit workflow"
208
+ - multiSelect: false
209
+ - If user chooses "No, I have corrections or additions": Process their feedback, update the specification, and ask again
210
+ - If user chooses "Exit workflow": End workflow gracefully
211
+ 5. Mark todo #4 as completed
212
+ 6. Proceed to STEP 2 (Complexity Evaluation Phase)
213
+
214
+ ---
215
+
216
+ **STEP 2 - Complexity Evaluation Phase:**
217
+
218
+ 1. Execute: @agent-iloom-issue-complexity-evaluator with the following context:
219
+ - **IMPORTANT**: This is branch mode - there is NO GitHub issue to fetch
220
+ - Provide the enhanced specification directly to the agent: "This is branch mode - analyze complexity based on the following enhanced specification instead of fetching from GitHub: [ENHANCED_SPECIFICATION]"
221
+ - Instruct the agent to use the AskUserQuestion tool to validate any assumptions about scope or complexity
222
+ - Instruct the agent: "Do NOT use the issue_management MCP - there is no issue tracking backend. Return the complexity assessment directly to this conversation."
223
+ - Instruct the agent: "Before making assumptions, document any assumptions clearly in question tables with your own answers."
224
+ - The agent should analyze complexity based on the enhanced specification scope
225
+ {{#IF INTERACTIVE_MODE}}
226
+ 2.5. Extract and validate assumptions (batched validation):
227
+ - Read the agent's output
228
+ - Search for "Questions for Reporter", "Questions and Key Decisions", or "Assumption" table section
229
+ - If assumptions/questions table found:
230
+ a. Parse the table to extract all questions and the agent's documented assumptions/answers
231
+ b. Use AskUserQuestion tool to present ALL questions to the user in a single batched request:
232
+ - Present each question with the agent's assumed answer shown
233
+ - Allow user to confirm or provide different answers for each
234
+ c. Compare user's answers to the agent's documented assumptions:
235
+ - If ANY mismatches detected:
236
+ - Compile feedback listing each mismatch: "For [question], you assumed [agent's answer] but user wants [user's answer]"
237
+ - Re-run @agent-iloom-issue-complexity-evaluator with feedback: "User provided different answers than your assumptions. Please revise based on this feedback: [list of mismatches]."
238
+ - Return to step 2.5 (validate the revised assumptions again)
239
+ - If all user answers match agent assumptions: Proceed to next step
240
+ - If no assumptions found: Proceed to next step
241
+ {{/IF INTERACTIVE_MODE}}
242
+ 2. Extract complexity classification from evaluator output:
243
+ - Search the evaluator's output for the "Complexity Assessment" section
244
+ - Extract: Classification (TRIVIAL/SIMPLE/COMPLEX), Metrics (files, LOC, breaking changes, DB migrations, risk level), and Reasoning
245
+ 3. Display complexity assessment to user:
246
+ Display the extracted assessment in this format:
247
+ ```
248
+ Complexity Assessment from Evaluator:
249
+ - Classification: [TRIVIAL/SIMPLE/COMPLEX]
250
+ - Estimated files: [N]
251
+ - Estimated LOC: [N]
252
+ - Breaking changes: [Yes/No]
253
+ - Database migrations: [Yes/No]
254
+ - Risk level: [Low/Medium/High]
255
+
256
+ Reasoning: [reasoning text from evaluator]
257
+ ```
258
+ 4. Mark todos #5 and #6 as completed
259
+ 5. Use AskUserQuestion tool with a single question:
260
+ - Question: "Complexity evaluated as [TRIVIAL/SIMPLE/COMPLEX]. Do you agree with this classification?"
261
+ - Options:
262
+ - "Yes, proceed with [TRIVIAL/SIMPLE/COMPLEX] workflow" (default)
263
+ - "No, reclassify as TRIVIAL"
264
+ - "No, reclassify as SIMPLE"
265
+ - "No, reclassify as COMPLEX"
266
+ - "Provide feedback before deciding"
267
+ - "Exit workflow"
268
+ - multiSelect: false
269
+ - If user reclassifies: Update confirmed complexity accordingly
270
+ - If user chooses "Provide feedback before deciding": Process and re-evaluate if needed
271
+ - If user chooses "Exit workflow": End workflow gracefully
272
+ 6. Mark todos #7 and #8 as completed
273
+ 7. Proceed to ROUTING DECISION POINT with confirmed complexity
274
+
275
+ ---
276
+
277
+ **ROUTING DECISION POINT - Complexity-Based Workflow Selection:**
278
+
279
+ After STEP 2 (Complexity Evaluation) completes and complexity is confirmed, determine which workflow path to follow:
280
+
281
+ **Check the confirmed complexity:**
282
+
283
+ **IF TRIVIAL complexity confirmed:**
284
+ 1. Display to user: "Using TRIVIAL workflow: Skipping analysis and planning, proceeding directly to implementation"
285
+ 2. Mark todos #9, #10, #11, #12, #13, #14, #15, and #16 as completed (analysis and planning steps that will not execute)
286
+ 3. Skip directly to **STEP 5** (Implementation Phase)
287
+ 4. Note: TRIVIAL tasks are straightforward enough that they don't need analysis or planning
288
+
289
+ **IF SIMPLE complexity confirmed:**
290
+ 1. Display to user: "Using SIMPLE workflow: Combined analysis and planning via @agent-iloom-issue-analyze-and-plan, then implementation"
291
+ 2. Mark todos #9, #11, #12, #13, #14, #15, and #16 as completed (TRIVIAL and COMPLEX workflow steps that will not execute)
292
+ 3. Skip to **STEP 3-SIMPLE** (Combined Analysis and Planning Phase)
293
+ 4. Note: After STEP 3-SIMPLE completes, skip separate analysis and planning phases, go directly to implementation
294
+
295
+ **IF COMPLEX complexity confirmed:**
296
+ 1. Display to user: "Using COMPLEX workflow: Separate analysis, planning, and implementation phases"
297
+ 2. Mark todos #9 and #10 as completed (TRIVIAL and SIMPLE workflow steps that will not execute)
298
+ 3. Continue to **STEP 3** (Analysis Phase)
299
+ 4. Follow normal workflow through STEP 3, STEP 4, and STEP 5
300
+
301
+ ---
302
+
303
+ **STEP 3-SIMPLE - Combined Analysis and Planning Phase (SIMPLE workflow only):**
304
+
305
+ **IMPORTANT: Only execute this step if SIMPLE complexity was confirmed in STEP 2**
306
+
307
+ Execute combined analyze-and-plan agent:
308
+ 1. Display: "Executing combined analyze-and-plan agent for SIMPLE task..."
309
+ 2. Execute: @agent-iloom-issue-analyze-and-plan with the following context:
310
+ - **IMPORTANT**: This is branch mode - there is NO GitHub issue to fetch
311
+ - Provide the enhanced specification directly to the agent: "This is branch mode - analyze and plan based on the following enhanced specification instead of fetching from GitHub: [ENHANCED_SPECIFICATION]"
312
+ - Instruct the agent to use the AskUserQuestion tool to validate any assumptions or make decisions about the approach
313
+ - Instruct the agent: "Do NOT use the issue_management MCP - there is no issue tracking backend. Return the analysis and plan directly to this conversation."
314
+ - Instruct the agent: "Before making assumptions, document any assumptions clearly in question tables with your own answers."
315
+ - The agent should output its analysis and plan directly to the conversation
316
+ 3. Display the analysis and plan results to the user
317
+ {{#IF INTERACTIVE_MODE}}
318
+ 3.5. Extract and validate assumptions (batched validation):
319
+ - Read the agent's output
320
+ - Search for "Questions for Reporter", "Questions and Key Decisions", or "Assumption" table section
321
+ - If assumptions/questions table found:
322
+ a. Parse the table to extract all questions and the agent's documented assumptions/answers
323
+ b. Use AskUserQuestion tool to present ALL questions to the user in a single batched request:
324
+ - Present each question with the agent's assumed answer shown
325
+ - Allow user to confirm or provide different answers for each
326
+ c. Compare user's answers to the agent's documented assumptions:
327
+ - If ANY mismatches detected:
328
+ - Compile feedback listing each mismatch: "For [question], you assumed [agent's answer] but user wants [user's answer]"
329
+ - Re-run @agent-iloom-issue-analyze-and-plan with feedback: "User provided different answers than your assumptions. Please revise based on this feedback: [list of mismatches]."
330
+ - Return to step 3.5 (validate the revised assumptions again)
331
+ - If all user answers match agent assumptions: Proceed to next step
332
+ - If no assumptions found: Proceed to next step
333
+ {{/IF INTERACTIVE_MODE}}
334
+ 4. Mark todo #10 as completed (COMPLEX todos #11-16 were already marked at routing decision point)
335
+ 5. Use AskUserQuestion tool with a single question:
336
+ - Question: "Combined analysis and planning complete. How would you like to proceed?"
337
+ - Options:
338
+ - "Continue to implementation" (default)
339
+ - "Provide feedback on plan"
340
+ - "Exit workflow"
341
+ - multiSelect: false
342
+ - If user chooses "Provide feedback on plan": Process their input and re-run planning if needed
343
+ - If user chooses "Exit workflow": End workflow gracefully
344
+ - If user chooses "Continue to implementation": Proceed to STEP 5 (Implementation Phase)
345
+
346
+ ---
347
+
348
+ **STEP 3 - Analysis Phase (COMPLEX workflow only):**
349
+
350
+ **IMPORTANT: Only execute this step if COMPLEX complexity was confirmed**
351
+
352
+ 1. Execute: @agent-iloom-issue-analyzer with the following context:
353
+ - **IMPORTANT**: This is branch mode - there is NO GitHub issue to fetch
354
+ - Provide the enhanced specification directly to the agent: "This is branch mode - analyze the following enhanced specification instead of fetching from GitHub: [ENHANCED_SPECIFICATION]"
355
+ - Instruct the agent to use the AskUserQuestion tool to validate any assumptions or clarify requirements during analysis
356
+ - Instruct the agent: "Do NOT use the issue_management MCP - there is no issue tracking backend. Return the analysis directly to this conversation."
357
+ - Instruct the agent: "Before making assumptions, document any assumptions clearly in question tables with your own answers."
358
+ - The agent should output its analysis directly to the conversation
359
+ 2. Display the analysis results to the user
360
+ {{#IF INTERACTIVE_MODE}}
361
+ 2.5. Extract and validate assumptions (batched validation):
362
+ - Read the agent's output
363
+ - Search for "Questions for Reporter", "Questions and Key Decisions", or "Assumption" table section
364
+ - If assumptions/questions table found:
365
+ a. Parse the table to extract all questions and the agent's documented assumptions/answers
366
+ b. Use AskUserQuestion tool to present ALL questions to the user in a single batched request:
367
+ - Present each question with the agent's assumed answer shown
368
+ - Allow user to confirm or provide different answers for each
369
+ c. Compare user's answers to the agent's documented assumptions:
370
+ - If ANY mismatches detected:
371
+ - Compile feedback listing each mismatch: "For [question], you assumed [agent's answer] but user wants [user's answer]"
372
+ - Re-run @agent-iloom-issue-analyzer with feedback: "User provided different answers than your assumptions. Please revise based on this feedback: [list of mismatches]."
373
+ - Return to step 2.5 (validate the revised assumptions again)
374
+ - If all user answers match agent assumptions: Proceed to next step
375
+ - If no assumptions found: Proceed to next step
376
+ {{/IF INTERACTIVE_MODE}}
377
+ 3. Mark todos #11 and #12 as completed
378
+ 4. Use AskUserQuestion tool with a single question:
379
+ - Question: "Analysis complete. How would you like to proceed?"
380
+ - Options:
381
+ - "Continue to planning phase" (default)
382
+ - "Provide feedback on analysis"
383
+ - "Exit workflow"
384
+ - multiSelect: false
385
+ - If user chooses "Provide feedback on analysis": Process their input and re-run analysis if needed
386
+ - If user chooses "Exit workflow": End workflow gracefully
387
+ - If user chooses "Continue to planning phase": Proceed to STEP 4 (Planning Phase)
388
+ 5. Mark todo #13 as completed
389
+
390
+ ---
391
+
392
+ **STEP 4 - Planning Phase (COMPLEX workflow only):**
393
+
394
+ **IMPORTANT: Only execute this step if COMPLEX workflow is being followed (not SIMPLE)**
395
+
396
+ 1. Execute: @agent-iloom-issue-planner with the following context:
397
+ - **IMPORTANT**: This is branch mode - there is NO GitHub issue to fetch
398
+ - Provide the enhanced specification AND analysis results directly to the agent: "This is branch mode - create an implementation plan based on the following enhanced specification and analysis instead of fetching from GitHub: [ENHANCED_SPECIFICATION] [ANALYSIS_RESULTS]"
399
+ - Instruct the agent to use the AskUserQuestion tool to validate any assumptions or make decisions about implementation approach
400
+ - Instruct the agent: "Do NOT use the issue_management MCP - there is no issue tracking backend. Return the implementation plan directly to this conversation."
401
+ - Instruct the agent: "Before making assumptions, document any assumptions clearly in question tables with your own answers."
402
+ - The agent should output its plan directly to the conversation
403
+ 2. Display the implementation plan to the user
404
+ {{#IF INTERACTIVE_MODE}}
405
+ 2.5. Extract and validate assumptions (batched validation):
406
+ - Read the agent's output
407
+ - Search for "Questions for Reporter", "Questions and Key Decisions", or "Assumption" table section
408
+ - If assumptions/questions table found:
409
+ a. Parse the table to extract all questions and the agent's documented assumptions/answers
410
+ b. Use AskUserQuestion tool to present ALL questions to the user in a single batched request:
411
+ - Present each question with the agent's assumed answer shown
412
+ - Allow user to confirm or provide different answers for each
413
+ c. Compare user's answers to the agent's documented assumptions:
414
+ - If ANY mismatches detected:
415
+ - Compile feedback listing each mismatch: "For [question], you assumed [agent's answer] but user wants [user's answer]"
416
+ - Re-run @agent-iloom-issue-planner with feedback: "User provided different answers than your assumptions. Please revise based on this feedback: [list of mismatches]."
417
+ - Return to step 2.5 (validate the revised assumptions again)
418
+ - If all user answers match agent assumptions: Proceed to next step
419
+ - If no assumptions found: Proceed to next step
420
+ {{/IF INTERACTIVE_MODE}}
421
+ 3. Mark todos #14 and #15 as completed
422
+ 4. Use AskUserQuestion tool with a single question:
423
+ - Question: "Planning complete. How would you like to proceed?"
424
+ - Options:
425
+ - "Continue to implementation" (default)
426
+ - "Provide feedback on plan"
427
+ - "Exit workflow"
428
+ - multiSelect: false
429
+ - If user chooses "Provide feedback on plan": Process their input and re-run planning if needed
430
+ - If user chooses "Exit workflow": End workflow gracefully
431
+ - If user chooses "Continue to implementation": Proceed to STEP 5 (Implementation Phase)
432
+ 5. Mark todo #16 as completed
433
+
434
+ ---
435
+
436
+ **STEP 5 - Implementation Phase:**
437
+
438
+ **Execute for TRIVIAL, SIMPLE, and COMPLEX workflows**
439
+
440
+ 1. Execute: @agent-iloom-issue-implementer with the following context:
441
+ - **IMPORTANT**: This is branch mode - there is NO GitHub issue to fetch
442
+ - Provide the enhanced specification AND the implementation plan (if available) directly to the agent: "This is branch mode - implement based on the following enhanced specification and plan instead of fetching from GitHub: [ENHANCED_SPECIFICATION] [IMPLEMENTATION_PLAN]"
443
+ - For TRIVIAL tasks: provide only the enhanced specification (no plan available)
444
+ - Instruct the agent to use the AskUserQuestion tool to validate any assumptions or make decisions during implementation
445
+ - Instruct the agent: "Do NOT use the issue_management MCP - there is no issue tracking backend. Return the implementation summary directly to this conversation."
446
+ - The agent should output its implementation summary directly to the conversation
447
+ - **CRITICAL**: If an implementation plan is provided, it contains exact file paths and line numbers. The agent MUST use these exact locations - DO NOT search for files when the plan specifies them.
448
+ 2. Display implementation summary to user
449
+ 3. Mark todos #17 and #18 as completed
450
+ 4. Provide final summary
451
+
452
+ ---
453
+
454
+ ## Wrapping Up Instructions
455
+
456
+ After completing the workflow, provide these wrap-up instructions to the user:
457
+
458
+ "## Wrapping Up
459
+
460
+ Your changes have been implemented in the current branch.
461
+
462
+ **Note: This was branch mode - no GitHub issue is associated with this work. Context from this session is ephemeral and not persisted.**
463
+
464
+ To complete the workflow:
465
+
466
+ 1. Review and test the changes made in this session
467
+ 2. Feel free to run run tests, lints, compilation steps to verify correctness.
468
+
469
+ If you want to track this work formally:
470
+ - Create a GitHub issue to document the changes
471
+ - Or create a pull request directly from this branch
472
+
473
+ To finish and merge this branch:
474
+ 1. Exit this Claude session (type `/exit`)
475
+ 2. Run:
476
+ ```bash
477
+ iloom finish
478
+ ```
479
+
480
+ This will automatically:
481
+ - Stop any running web servers
482
+ - Merge your changes back to the main branch
483
+ - Clean up the worktree
484
+ - Delete the database branch (if applicable)
485
+ - Remove the workspace"
@@ -0,0 +1,82 @@
1
+ You are generating a summary of THIS conversation - the development session you just completed.
2
+
3
+ ## Context
4
+ - Issue/PR: #ISSUE_NUMBER
5
+ - Branch: BRANCH_NAME
6
+ - Loom Type: LOOM_TYPE
7
+
8
+
9
+ {{#IF COMPACT_SUMMARIES}}
10
+
11
+ **CRITICAL: How to use the following section:** The summaries below are from earlier in this session, before the conversation was compacted to save context space. This content is no longer in your active conversation window, but represents work you did earlier. Use this to:
12
+ - Recall what was discussed, decided, and implemented before compaction
13
+ - Ensure your summary covers the FULL session, not just recent messages
14
+ - Avoid contradicting or repeating earlier decisions
15
+ - FAILURE TO USE THE "Previous Conversation Context" SECTION REPRESENTS A FAILURE OF YOUR TASK
16
+
17
+ ## Previous Conversation Context - THIS SECTION CONTAINS CRITICAL INFO
18
+ ------- BEGIN PREVIOUS CONTEXT ------
19
+
20
+ COMPACT_SUMMARIES
21
+
22
+ ------- END PREVIOUS CONTEXT ------
23
+ {{/IF COMPACT_SUMMARIES}}
24
+
25
+ ## Your Task
26
+
27
+ Reflect on THIS conversation (the one you're currently in){{#IF COMPACT_SUMMARIES}} AND the previous context above (THIS IS VERY IMPORTANT){{/IF COMPACT_SUMMARIES}}, and generate a concise summary focused on:
28
+
29
+ 1. **Key Insights**: What important learnings emerged during implementation{{#IF COMPACT_SUMMARIES}} INCLUDING the previous context above (THIS IS VERY IMPORTANT){{/IF COMPACT_SUMMARIES}}?
30
+ 2. **Decisions Made**: What significant technical decisions were made and why?
31
+ 3. **Challenges Encountered**: What obstacles were faced and how were they resolved?
32
+ 4. **Mistakes and Corrections**: What mistakes were made and what was learned from them?
33
+
34
+ ## Output Format
35
+
36
+ **CRITICAL: Your entire output will be posted DIRECTLY as a comment on the issue. Do NOT include:**
37
+ - Any meta-commentary about the summary (e.g., "This summary is ready to be posted...")
38
+ - Any preamble or introduction before the markdown
39
+ - Any explanation of what you're doing
40
+ - Any text after the closing `</details>` tag
41
+
42
+ **Output ONLY the markdown content below, starting with `## iloom Session Summary` and ending with `</details>`.**
43
+
44
+ Structure it with key themes visible at the top, then detailed sections wrapped in collapsible tags:
45
+
46
+ ```markdown
47
+ ## iloom Session Summary
48
+
49
+ **Key Themes:**
50
+ - [Theme 1 - one sentence]
51
+ - [Theme 2 - one sentence]
52
+ - [Theme 3 - one sentence]
53
+
54
+ ---
55
+
56
+ <details>
57
+ <summary>Session Details (click to expand)</summary>
58
+
59
+ ### Key Insights
60
+ - [Insight 1]
61
+ - [Insight 2]
62
+
63
+ ### Decisions Made
64
+ - [Decision and rationale]
65
+
66
+ ### Challenges Resolved
67
+ - [Challenge and resolution]
68
+
69
+ ### Lessons Learned
70
+ - [What could be done better next time]
71
+
72
+ </details>
73
+ ```
74
+
75
+ Keep the visible themes section brief (3-5 bullet points, one sentence each). The detailed sections inside the collapsible can be more comprehensive. Focus on information that would help future developers or AI agents working on similar tasks.
76
+
77
+ **REMINDER: Output ONLY the markdown. No commentary before or after. Your response IS the comment.**
78
+
79
+ ## VALIDATION CHECKLIST - FAILING THIS LIST MEANS FAILING THE TASK:
80
+ * Did you ouput ONLY the markdown with no commentary before or after?
81
+ {{#IF COMPACT_SUMMARIES}}* Did you use the information in the "Previous Conversation Context" section?{{/IF COMPACT_SUMMARIES}}
82
+
@@ -1,23 +1,25 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  MergeManager
4
- } from "./chunk-2MAIX45J.js";
4
+ } from "./chunk-LTNDJMTH.js";
5
5
  import {
6
6
  GitWorktreeManager
7
- } from "./chunk-2CXREBLZ.js";
7
+ } from "./chunk-M5XUCTTJ.js";
8
8
  import {
9
9
  getWorktreeRoot,
10
10
  isValidGitRepo
11
- } from "./chunk-5Q3NDNNV.js";
11
+ } from "./chunk-TR5MC2U6.js";
12
+ import "./chunk-MLS5FAV7.js";
12
13
  import {
13
14
  SettingsManager
14
- } from "./chunk-CDZERT7Z.js";
15
- import "./chunk-OYF4VIFI.js";
16
- import "./chunk-RW54ZMBM.js";
17
- import "./chunk-UJL4HI2R.js";
15
+ } from "./chunk-VWNS6DH5.js";
16
+ import "./chunk-75B2HZZ5.js";
17
+ import "./chunk-JJUPY5MM.js";
18
+ import "./chunk-3NFBZRPR.js";
19
+ import "./chunk-6UIGZD2N.js";
18
20
  import {
19
21
  logger
20
- } from "./chunk-GEHQXLEI.js";
22
+ } from "./chunk-UYVWLISQ.js";
21
23
 
22
24
  // src/commands/rebase.ts
23
25
  var WorktreeValidationError = class extends Error {
@@ -94,4 +96,4 @@ export {
94
96
  RebaseCommand,
95
97
  WorktreeValidationError
96
98
  };
97
- //# sourceMappingURL=rebase-VJ2VKR6R.js.map
99
+ //# sourceMappingURL=rebase-55URTXZC.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/rebase.ts"],"sourcesContent":["import { logger } from '../utils/logger.js'\nimport { MergeManager } from '../lib/MergeManager.js'\nimport { GitWorktreeManager } from '../lib/GitWorktreeManager.js'\nimport { SettingsManager } from '../lib/SettingsManager.js'\nimport { isValidGitRepo, getWorktreeRoot } from '../utils/git.js'\nimport type { MergeOptions } from '../types/index.js'\n\nexport interface RebaseOptions {\n\tforce?: boolean\n\tdryRun?: boolean\n}\n\n/**\n * Error thrown when the rebase command is run from an invalid location\n */\nexport class WorktreeValidationError extends Error {\n\tconstructor(\n\t\tmessage: string,\n\t\tpublic readonly suggestion: string\n\t) {\n\t\tsuper(message)\n\t\tthis.name = 'WorktreeValidationError'\n\t}\n}\n\n/**\n * RebaseCommand: Rebase current branch on main with Claude-assisted conflict resolution\n *\n * This command:\n * 1. Validates the current directory is an iloom-managed worktree\n * 2. Detects the worktree root (supports running from subdirectories)\n * 3. Delegates to MergeManager.rebaseOnMain() which handles:\n * - Checking main branch exists\n * - Detecting uncommitted changes (throws if found)\n * - Checking if already up-to-date\n * - Executing rebase\n * - Claude-assisted conflict resolution\n * 4. Reports success\n */\nexport class RebaseCommand {\n\tprivate mergeManager: MergeManager\n\tprivate gitWorktreeManager: GitWorktreeManager\n\tprivate settingsManager: SettingsManager\n\n\tconstructor(mergeManager?: MergeManager, gitWorktreeManager?: GitWorktreeManager, settingsManager?: SettingsManager) {\n\t\tthis.mergeManager = mergeManager ?? new MergeManager()\n\t\tthis.gitWorktreeManager = gitWorktreeManager ?? new GitWorktreeManager()\n\t\tthis.settingsManager = settingsManager ?? new SettingsManager()\n\t}\n\n\t/**\n\t * Validate that the current directory is within an iloom-managed worktree\n\t * Returns the worktree root path if valid\n\t * @throws WorktreeValidationError if validation fails\n\t */\n\tprivate async validateWorktreeContext(): Promise<string> {\n\t\tconst currentDir = process.cwd()\n\n\t\t// Step 1: Check if we're in a git repository at all\n\t\tconst isGitRepo = await isValidGitRepo(currentDir)\n\t\tif (!isGitRepo) {\n\t\t\tthrow new WorktreeValidationError(\n\t\t\t\t'Not a git repository.',\n\t\t\t\t\"Run 'il rebase' from within an iloom worktree created by 'il start'.\"\n\t\t\t)\n\t\t}\n\n\t\t// Step 2: Get the worktree root (handles subdirectories)\n\t\tconst worktreeRoot = await getWorktreeRoot(currentDir)\n\t\tif (!worktreeRoot) {\n\t\t\tthrow new WorktreeValidationError(\n\t\t\t\t'Could not determine repository root.',\n\t\t\t\t\"Run 'il rebase' from within an iloom worktree created by 'il start'.\"\n\t\t\t)\n\t\t}\n\n\t\t// Step 3: Check if this path is a registered git worktree\n\t\tconst worktrees = await this.gitWorktreeManager.listWorktrees()\n\t\tconst currentWorktree = worktrees.find(wt => wt.path === worktreeRoot)\n\n\t\tif (!currentWorktree) {\n\t\t\tthrow new WorktreeValidationError(\n\t\t\t\t'This directory is not an iloom worktree.',\n\t\t\t\t\"Run 'il rebase' from within a worktree created by 'il start <issue>'. Use 'il list' to see available worktrees.\"\n\t\t\t)\n\t\t}\n\n\t\t// Step 4: Check if this is the main worktree (we shouldn't rebase from main)\n\t\tconst isMain = await this.gitWorktreeManager.isMainWorktree(currentWorktree, this.settingsManager)\n\t\tif (isMain) {\n\t\t\tthrow new WorktreeValidationError(\n\t\t\t\t'Cannot rebase from the main worktree.',\n\t\t\t\t\"Navigate to a feature worktree created by 'il start <issue>' and run 'il rebase' from there.\"\n\t\t\t)\n\t\t}\n\n\t\treturn worktreeRoot\n\t}\n\n\tasync execute(options: RebaseOptions = {}): Promise<void> {\n\t\t// Step 1: Validate we're in a valid iloom worktree\n\t\tlet worktreePath: string\n\t\ttry {\n\t\t\tworktreePath = await this.validateWorktreeContext()\n\t\t} catch (error) {\n\t\t\tif (error instanceof WorktreeValidationError) {\n\t\t\t\tlogger.error(error.message)\n\t\t\t\tlogger.info(error.suggestion)\n\t\t\t\tthrow error\n\t\t\t}\n\t\t\tthrow error\n\t\t}\n\n\t\tconst mergeOptions: MergeOptions = {\n\t\t\tdryRun: options.dryRun ?? false,\n\t\t\tforce: options.force ?? false,\n\t\t}\n\n\t\t// MergeManager.rebaseOnMain() handles:\n\t\t// - Checking main branch exists\n\t\t// - Detecting uncommitted changes (throws if found)\n\t\t// - Checking if already up-to-date\n\t\t// - Executing rebase\n\t\t// - Claude-assisted conflict resolution\n\t\tawait this.mergeManager.rebaseOnMain(worktreePath, mergeOptions)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAeO,IAAM,0BAAN,cAAsC,MAAM;AAAA,EAClD,YACC,SACgB,YACf;AACD,UAAM,OAAO;AAFG;AAGhB,SAAK,OAAO;AAAA,EACb;AACD;AAgBO,IAAM,gBAAN,MAAoB;AAAA,EAK1B,YAAY,cAA6B,oBAAyC,iBAAmC;AACpH,SAAK,eAAe,gBAAgB,IAAI,aAAa;AACrD,SAAK,qBAAqB,sBAAsB,IAAI,mBAAmB;AACvE,SAAK,kBAAkB,mBAAmB,IAAI,gBAAgB;AAAA,EAC/D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAc,0BAA2C;AACxD,UAAM,aAAa,QAAQ,IAAI;AAG/B,UAAM,YAAY,MAAM,eAAe,UAAU;AACjD,QAAI,CAAC,WAAW;AACf,YAAM,IAAI;AAAA,QACT;AAAA,QACA;AAAA,MACD;AAAA,IACD;AAGA,UAAM,eAAe,MAAM,gBAAgB,UAAU;AACrD,QAAI,CAAC,cAAc;AAClB,YAAM,IAAI;AAAA,QACT;AAAA,QACA;AAAA,MACD;AAAA,IACD;AAGA,UAAM,YAAY,MAAM,KAAK,mBAAmB,cAAc;AAC9D,UAAM,kBAAkB,UAAU,KAAK,QAAM,GAAG,SAAS,YAAY;AAErE,QAAI,CAAC,iBAAiB;AACrB,YAAM,IAAI;AAAA,QACT;AAAA,QACA;AAAA,MACD;AAAA,IACD;AAGA,UAAM,SAAS,MAAM,KAAK,mBAAmB,eAAe,iBAAiB,KAAK,eAAe;AACjG,QAAI,QAAQ;AACX,YAAM,IAAI;AAAA,QACT;AAAA,QACA;AAAA,MACD;AAAA,IACD;AAEA,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,QAAQ,UAAyB,CAAC,GAAkB;AAEzD,QAAI;AACJ,QAAI;AACH,qBAAe,MAAM,KAAK,wBAAwB;AAAA,IACnD,SAAS,OAAO;AACf,UAAI,iBAAiB,yBAAyB;AAC7C,eAAO,MAAM,MAAM,OAAO;AAC1B,eAAO,KAAK,MAAM,UAAU;AAC5B,cAAM;AAAA,MACP;AACA,YAAM;AAAA,IACP;AAEA,UAAM,eAA6B;AAAA,MAClC,QAAQ,QAAQ,UAAU;AAAA,MAC1B,OAAO,QAAQ,SAAS;AAAA,IACzB;AAQA,UAAM,KAAK,aAAa,aAAa,cAAc,YAAY;AAAA,EAChE;AACD;","names":[]}
1
+ {"version":3,"sources":["../src/commands/rebase.ts"],"sourcesContent":["import { logger } from '../utils/logger.js'\nimport { MergeManager } from '../lib/MergeManager.js'\nimport { GitWorktreeManager } from '../lib/GitWorktreeManager.js'\nimport { SettingsManager } from '../lib/SettingsManager.js'\nimport { isValidGitRepo, getWorktreeRoot } from '../utils/git.js'\nimport type { MergeOptions } from '../types/index.js'\n\nexport interface RebaseOptions {\n\tforce?: boolean\n\tdryRun?: boolean\n}\n\n/**\n * Error thrown when the rebase command is run from an invalid location\n */\nexport class WorktreeValidationError extends Error {\n\tconstructor(\n\t\tmessage: string,\n\t\tpublic readonly suggestion: string\n\t) {\n\t\tsuper(message)\n\t\tthis.name = 'WorktreeValidationError'\n\t}\n}\n\n/**\n * RebaseCommand: Rebase current branch on main with Claude-assisted conflict resolution\n *\n * This command:\n * 1. Validates the current directory is an iloom-managed worktree\n * 2. Detects the worktree root (supports running from subdirectories)\n * 3. Delegates to MergeManager.rebaseOnMain() which handles:\n * - Checking main branch exists\n * - Detecting uncommitted changes (throws if found)\n * - Checking if already up-to-date\n * - Executing rebase\n * - Claude-assisted conflict resolution\n * 4. Reports success\n */\nexport class RebaseCommand {\n\tprivate mergeManager: MergeManager\n\tprivate gitWorktreeManager: GitWorktreeManager\n\tprivate settingsManager: SettingsManager\n\n\tconstructor(mergeManager?: MergeManager, gitWorktreeManager?: GitWorktreeManager, settingsManager?: SettingsManager) {\n\t\tthis.mergeManager = mergeManager ?? new MergeManager()\n\t\tthis.gitWorktreeManager = gitWorktreeManager ?? new GitWorktreeManager()\n\t\tthis.settingsManager = settingsManager ?? new SettingsManager()\n\t}\n\n\t/**\n\t * Validate that the current directory is within an iloom-managed worktree\n\t * Returns the worktree root path if valid\n\t * @throws WorktreeValidationError if validation fails\n\t */\n\tprivate async validateWorktreeContext(): Promise<string> {\n\t\tconst currentDir = process.cwd()\n\n\t\t// Step 1: Check if we're in a git repository at all\n\t\tconst isGitRepo = await isValidGitRepo(currentDir)\n\t\tif (!isGitRepo) {\n\t\t\tthrow new WorktreeValidationError(\n\t\t\t\t'Not a git repository.',\n\t\t\t\t\"Run 'il rebase' from within an iloom worktree created by 'il start'.\"\n\t\t\t)\n\t\t}\n\n\t\t// Step 2: Get the worktree root (handles subdirectories)\n\t\tconst worktreeRoot = await getWorktreeRoot(currentDir)\n\t\tif (!worktreeRoot) {\n\t\t\tthrow new WorktreeValidationError(\n\t\t\t\t'Could not determine repository root.',\n\t\t\t\t\"Run 'il rebase' from within an iloom worktree created by 'il start'.\"\n\t\t\t)\n\t\t}\n\n\t\t// Step 3: Check if this path is a registered git worktree\n\t\tconst worktrees = await this.gitWorktreeManager.listWorktrees()\n\t\tconst currentWorktree = worktrees.find(wt => wt.path === worktreeRoot)\n\n\t\tif (!currentWorktree) {\n\t\t\tthrow new WorktreeValidationError(\n\t\t\t\t'This directory is not an iloom worktree.',\n\t\t\t\t\"Run 'il rebase' from within a worktree created by 'il start <issue>'. Use 'il list' to see available worktrees.\"\n\t\t\t)\n\t\t}\n\n\t\t// Step 4: Check if this is the main worktree (we shouldn't rebase from main)\n\t\tconst isMain = await this.gitWorktreeManager.isMainWorktree(currentWorktree, this.settingsManager)\n\t\tif (isMain) {\n\t\t\tthrow new WorktreeValidationError(\n\t\t\t\t'Cannot rebase from the main worktree.',\n\t\t\t\t\"Navigate to a feature worktree created by 'il start <issue>' and run 'il rebase' from there.\"\n\t\t\t)\n\t\t}\n\n\t\treturn worktreeRoot\n\t}\n\n\tasync execute(options: RebaseOptions = {}): Promise<void> {\n\t\t// Step 1: Validate we're in a valid iloom worktree\n\t\tlet worktreePath: string\n\t\ttry {\n\t\t\tworktreePath = await this.validateWorktreeContext()\n\t\t} catch (error) {\n\t\t\tif (error instanceof WorktreeValidationError) {\n\t\t\t\tlogger.error(error.message)\n\t\t\t\tlogger.info(error.suggestion)\n\t\t\t\tthrow error\n\t\t\t}\n\t\t\tthrow error\n\t\t}\n\n\t\tconst mergeOptions: MergeOptions = {\n\t\t\tdryRun: options.dryRun ?? false,\n\t\t\tforce: options.force ?? false,\n\t\t}\n\n\t\t// MergeManager.rebaseOnMain() handles:\n\t\t// - Checking main branch exists\n\t\t// - Detecting uncommitted changes (throws if found)\n\t\t// - Checking if already up-to-date\n\t\t// - Executing rebase\n\t\t// - Claude-assisted conflict resolution\n\t\tawait this.mergeManager.rebaseOnMain(worktreePath, mergeOptions)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAeO,IAAM,0BAAN,cAAsC,MAAM;AAAA,EAClD,YACC,SACgB,YACf;AACD,UAAM,OAAO;AAFG;AAGhB,SAAK,OAAO;AAAA,EACb;AACD;AAgBO,IAAM,gBAAN,MAAoB;AAAA,EAK1B,YAAY,cAA6B,oBAAyC,iBAAmC;AACpH,SAAK,eAAe,gBAAgB,IAAI,aAAa;AACrD,SAAK,qBAAqB,sBAAsB,IAAI,mBAAmB;AACvE,SAAK,kBAAkB,mBAAmB,IAAI,gBAAgB;AAAA,EAC/D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAc,0BAA2C;AACxD,UAAM,aAAa,QAAQ,IAAI;AAG/B,UAAM,YAAY,MAAM,eAAe,UAAU;AACjD,QAAI,CAAC,WAAW;AACf,YAAM,IAAI;AAAA,QACT;AAAA,QACA;AAAA,MACD;AAAA,IACD;AAGA,UAAM,eAAe,MAAM,gBAAgB,UAAU;AACrD,QAAI,CAAC,cAAc;AAClB,YAAM,IAAI;AAAA,QACT;AAAA,QACA;AAAA,MACD;AAAA,IACD;AAGA,UAAM,YAAY,MAAM,KAAK,mBAAmB,cAAc;AAC9D,UAAM,kBAAkB,UAAU,KAAK,QAAM,GAAG,SAAS,YAAY;AAErE,QAAI,CAAC,iBAAiB;AACrB,YAAM,IAAI;AAAA,QACT;AAAA,QACA;AAAA,MACD;AAAA,IACD;AAGA,UAAM,SAAS,MAAM,KAAK,mBAAmB,eAAe,iBAAiB,KAAK,eAAe;AACjG,QAAI,QAAQ;AACX,YAAM,IAAI;AAAA,QACT;AAAA,QACA;AAAA,MACD;AAAA,IACD;AAEA,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,QAAQ,UAAyB,CAAC,GAAkB;AAEzD,QAAI;AACJ,QAAI;AACH,qBAAe,MAAM,KAAK,wBAAwB;AAAA,IACnD,SAAS,OAAO;AACf,UAAI,iBAAiB,yBAAyB;AAC7C,eAAO,MAAM,MAAM,OAAO;AAC1B,eAAO,KAAK,MAAM,UAAU;AAC5B,cAAM;AAAA,MACP;AACA,YAAM;AAAA,IACP;AAEA,UAAM,eAA6B;AAAA,MAClC,QAAQ,QAAQ,UAAU;AAAA,MAC1B,OAAO,QAAQ,SAAS;AAAA,IACzB;AAQA,UAAM,KAAK,aAAa,aAAa,cAAc,YAAY;AAAA,EAChE;AACD;","names":[]}
@@ -5,8 +5,8 @@ import {
5
5
  hasMultipleRemotes,
6
6
  parseGitRemotes,
7
7
  validateConfiguredRemote
8
- } from "./chunk-PA6Q6AWM.js";
9
- import "./chunk-GEHQXLEI.js";
8
+ } from "./chunk-PSFVTBM7.js";
9
+ import "./chunk-UYVWLISQ.js";
10
10
  export {
11
11
  getConfiguredRepoFromSettings,
12
12
  getEffectivePRTargetRemote,
@@ -14,4 +14,4 @@ export {
14
14
  parseGitRemotes,
15
15
  validateConfiguredRemote
16
16
  };
17
- //# sourceMappingURL=remote-VUNCQZ6J.js.map
17
+ //# sourceMappingURL=remote-73TZ2ADI.js.map