@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.
- package/README.md +13 -3
- package/dist/{BranchNamingService-A77VI6AI.js → BranchNamingService-TOM2KAUT.js} +4 -3
- package/dist/ClaudeContextManager-VEGJTS5E.js +16 -0
- package/dist/ClaudeService-ICSHJMQ5.js +15 -0
- package/dist/GitHubService-RPM27GWD.js +12 -0
- package/dist/{LoomLauncher-ZV3ZZIBA.js → LoomLauncher-SJBZFZXE.js} +25 -22
- package/dist/LoomLauncher-SJBZFZXE.js.map +1 -0
- package/dist/PromptTemplateManager-2TDZAUC6.js +9 -0
- package/dist/README.md +13 -3
- package/dist/{SettingsManager-I2LRCW2A.js → SettingsManager-FJFU6JJD.js} +7 -3
- package/dist/SettingsMigrationManager-EH3J2TCN.js +10 -0
- package/dist/{chunk-UJL4HI2R.js → chunk-3NFBZRPR.js} +2 -2
- package/dist/chunk-6UIGZD2N.js +20 -0
- package/dist/chunk-6UIGZD2N.js.map +1 -0
- package/dist/{chunk-RIEO2WML.js → chunk-74VMN2KC.js} +26 -2
- package/dist/chunk-74VMN2KC.js.map +1 -0
- package/dist/{chunk-OYF4VIFI.js → chunk-75B2HZZ5.js} +147 -22
- package/dist/chunk-75B2HZZ5.js.map +1 -0
- package/dist/{chunk-PGPI5LR4.js → chunk-ADDNFQJ4.js} +7 -21
- package/dist/chunk-ADDNFQJ4.js.map +1 -0
- package/dist/{chunk-AKUJXDNW.js → chunk-F4J6KEL6.js} +3 -3
- package/dist/{chunk-DLHA5VQ3.js → chunk-HD5SUKI2.js} +36 -179
- package/dist/chunk-HD5SUKI2.js.map +1 -0
- package/dist/chunk-HHDSIE72.js +667 -0
- package/dist/chunk-HHDSIE72.js.map +1 -0
- package/dist/{chunk-OXAM2WVC.js → chunk-HVGQP44L.js} +21 -1
- package/dist/chunk-HVGQP44L.js.map +1 -0
- package/dist/{chunk-RW54ZMBM.js → chunk-JJUPY5MM.js} +2 -2
- package/dist/{chunk-UAN4A3YU.js → chunk-KM3W7YQX.js} +11 -11
- package/dist/{chunk-3RUPPQRG.js → chunk-KO2FOMHL.js} +43 -2
- package/dist/{chunk-3RUPPQRG.js.map → chunk-KO2FOMHL.js.map} +1 -1
- package/dist/{chunk-2MAIX45J.js → chunk-LTNDJMTH.js} +104 -43
- package/dist/chunk-LTNDJMTH.js.map +1 -0
- package/dist/{chunk-2CXREBLZ.js → chunk-M5XUCTTJ.js} +8 -6
- package/dist/chunk-M5XUCTTJ.js.map +1 -0
- package/dist/{chunk-4XIDC3NF.js → chunk-MD6HA5IK.js} +2 -2
- package/dist/chunk-MLS5FAV7.js +189 -0
- package/dist/chunk-MLS5FAV7.js.map +1 -0
- package/dist/{chunk-2IJEMXOB.js → chunk-NFVFVYAP.js} +419 -427
- package/dist/chunk-NFVFVYAP.js.map +1 -0
- package/dist/{chunk-OC4H6HJD.js → chunk-O7WHXLCB.js} +2 -2
- package/dist/{chunk-M7JJCX53.js → chunk-OEGECBFS.js} +20 -20
- package/dist/chunk-OEGECBFS.js.map +1 -0
- package/dist/{chunk-MKWYLDFK.js → chunk-OF7BNW4D.js} +43 -3
- package/dist/chunk-OF7BNW4D.js.map +1 -0
- package/dist/{chunk-SUOXY5WJ.js → chunk-P2WZIDF3.js} +5 -5
- package/dist/chunk-P2WZIDF3.js.map +1 -0
- package/dist/{chunk-PA6Q6AWM.js → chunk-PSFVTBM7.js} +2 -2
- package/dist/chunk-QHA67Q7A.js +281 -0
- package/dist/chunk-QHA67Q7A.js.map +1 -0
- package/dist/{chunk-ZM3CFL5L.js → chunk-QRBOPFAA.js} +3 -3
- package/dist/{chunk-IFB4Z76W.js → chunk-S44CHE3G.js} +13 -12
- package/dist/chunk-S44CHE3G.js.map +1 -0
- package/dist/{chunk-CE26YH2U.js → chunk-SJ2GZ6RF.js} +48 -50
- package/dist/chunk-SJ2GZ6RF.js.map +1 -0
- package/dist/{chunk-SSCQCCJ7.js → chunk-THF25ICZ.js} +2 -2
- package/dist/{chunk-5Q3NDNNV.js → chunk-TR5MC2U6.js} +153 -6
- package/dist/chunk-TR5MC2U6.js.map +1 -0
- package/dist/{chunk-5VK4NRSF.js → chunk-UNXRACJ7.js} +35 -36
- package/dist/chunk-UNXRACJ7.js.map +1 -0
- package/dist/{chunk-GEHQXLEI.js → chunk-UYVWLISQ.js} +18 -35
- package/dist/chunk-UYVWLISQ.js.map +1 -0
- package/dist/{chunk-OSCLCMDG.js → chunk-UYWAESOT.js} +3 -3
- package/dist/{chunk-ZT3YZB4K.js → chunk-VBFDVGAE.js} +12 -12
- package/dist/chunk-VBFDVGAE.js.map +1 -0
- package/dist/{chunk-CDZERT7Z.js → chunk-VWNS6DH5.js} +48 -4
- package/dist/chunk-VWNS6DH5.js.map +1 -0
- package/dist/{chunk-CFFQ2Z7A.js → chunk-WUQQNE63.js} +2 -2
- package/dist/{claude-W52VKI6L.js → claude-X7EBJRB2.js} +8 -5
- package/dist/{cleanup-H4VXU3C3.js → cleanup-7QVPYBJJ.js} +133 -122
- package/dist/cleanup-7QVPYBJJ.js.map +1 -0
- package/dist/cli.js +901 -425
- package/dist/cli.js.map +1 -1
- package/dist/{color-F7RU6B6Z.js → color-ZPIIUADB.js} +3 -3
- package/dist/{contribute-Y7IQV5QY.js → contribute-RZYCYUDX.js} +8 -6
- package/dist/{contribute-Y7IQV5QY.js.map → contribute-RZYCYUDX.js.map} +1 -1
- package/dist/dev-server-LOY7YWCP.js +298 -0
- package/dist/dev-server-LOY7YWCP.js.map +1 -0
- package/dist/{feedback-XTUCKJNT.js → feedback-562KPG5U.js} +13 -12
- package/dist/{feedback-XTUCKJNT.js.map → feedback-562KPG5U.js.map} +1 -1
- package/dist/{git-IYA53VIC.js → git-OXJACVAU.js} +16 -4
- package/dist/hooks/iloom-hook.js +258 -0
- package/dist/{ignite-T74RYXCA.js → ignite-VSIPGKKG.js} +245 -39
- package/dist/ignite-VSIPGKKG.js.map +1 -0
- package/dist/index.d.ts +459 -124
- package/dist/index.js +740 -210
- package/dist/index.js.map +1 -1
- package/dist/init-SCR2LQ4A.js +21 -0
- package/dist/{installation-detector-VARGFFRZ.js → installation-detector-6R6YOFVZ.js} +3 -3
- package/dist/mcp/issue-management-server.js +2 -1
- package/dist/mcp/issue-management-server.js.map +1 -1
- package/dist/neon-helpers-L5CXQ5CT.js +11 -0
- package/dist/{open-UMXANW5S.js → open-CX7HUE26.js} +12 -10
- package/dist/{open-UMXANW5S.js.map → open-CX7HUE26.js.map} +1 -1
- package/dist/projects-6DTNDVLH.js +73 -0
- package/dist/projects-6DTNDVLH.js.map +1 -0
- package/dist/{prompt-QALMYTVC.js → prompt-A7GGRHSY.js} +3 -3
- package/dist/prompts/init-prompt.txt +49 -0
- package/dist/prompts/issue-prompt.txt +110 -8
- package/dist/prompts/regular-prompt.txt +463 -14
- package/dist/prompts/session-summary-prompt.txt +82 -0
- package/dist/{rebase-VJ2VKR6R.js → rebase-55URTXZC.js} +11 -9
- package/dist/{rebase-VJ2VKR6R.js.map → rebase-55URTXZC.js.map} +1 -1
- package/dist/{remote-VUNCQZ6J.js → remote-73TZ2ADI.js} +3 -3
- package/dist/{run-MJYY4PUT.js → run-DP2U2CA2.js} +12 -10
- package/dist/{run-MJYY4PUT.js.map → run-DP2U2CA2.js.map} +1 -1
- package/dist/schema/settings.schema.json +49 -0
- package/dist/summary-J3CJSM7L.js +244 -0
- package/dist/summary-J3CJSM7L.js.map +1 -0
- package/dist/{test-git-IT5EWQ5C.js → test-git-QLAIBJLX.js} +6 -4
- package/dist/{test-git-IT5EWQ5C.js.map → test-git-QLAIBJLX.js.map} +1 -1
- package/dist/{test-prefix-NPWDPUUH.js → test-prefix-6YM2ZOON.js} +6 -4
- package/dist/{test-prefix-NPWDPUUH.js.map → test-prefix-6YM2ZOON.js.map} +1 -1
- package/dist/{test-tabs-PRMRSHKI.js → test-tabs-JGO3VOXJ.js} +4 -4
- package/dist/{test-webserver-DAHONWCS.js → test-webserver-VPNLAFZ3.js} +2 -2
- package/dist/{update-4TDDUR5K.js → update-LETF5ASC.js} +4 -4
- package/dist/{update-notifier-QEX3CJHA.js → update-notifier-H55ZK7NU.js} +3 -3
- package/package.json +6 -6
- package/dist/ClaudeContextManager-BN7RE5ZQ.js +0 -15
- package/dist/ClaudeService-DLYLJUPA.js +0 -14
- package/dist/GitHubService-FZHHBOFG.js +0 -11
- package/dist/LoomLauncher-ZV3ZZIBA.js.map +0 -1
- package/dist/PromptTemplateManager-6HH3PVXV.js +0 -9
- package/dist/SettingsMigrationManager-TJ7UWZG5.js +0 -10
- package/dist/chunk-2CXREBLZ.js.map +0 -1
- package/dist/chunk-2IJEMXOB.js.map +0 -1
- package/dist/chunk-2MAIX45J.js.map +0 -1
- package/dist/chunk-5Q3NDNNV.js.map +0 -1
- package/dist/chunk-5VK4NRSF.js.map +0 -1
- package/dist/chunk-CDZERT7Z.js.map +0 -1
- package/dist/chunk-CE26YH2U.js.map +0 -1
- package/dist/chunk-DLHA5VQ3.js.map +0 -1
- package/dist/chunk-GEHQXLEI.js.map +0 -1
- package/dist/chunk-IFB4Z76W.js.map +0 -1
- package/dist/chunk-M7JJCX53.js.map +0 -1
- package/dist/chunk-MKWYLDFK.js.map +0 -1
- package/dist/chunk-OXAM2WVC.js.map +0 -1
- package/dist/chunk-OYF4VIFI.js.map +0 -1
- package/dist/chunk-PGPI5LR4.js.map +0 -1
- package/dist/chunk-RIEO2WML.js.map +0 -1
- package/dist/chunk-SUOXY5WJ.js.map +0 -1
- package/dist/chunk-ZT3YZB4K.js.map +0 -1
- package/dist/cleanup-H4VXU3C3.js.map +0 -1
- package/dist/ignite-T74RYXCA.js.map +0 -1
- package/dist/init-4FHTAM3F.js +0 -19
- package/dist/logger-MKYH4UDV.js +0 -12
- package/dist/neon-helpers-77PBPGJ5.js +0 -10
- package/dist/update-notifier-QEX3CJHA.js.map +0 -1
- /package/dist/{BranchNamingService-A77VI6AI.js.map → BranchNamingService-TOM2KAUT.js.map} +0 -0
- /package/dist/{ClaudeContextManager-BN7RE5ZQ.js.map → ClaudeContextManager-VEGJTS5E.js.map} +0 -0
- /package/dist/{ClaudeService-DLYLJUPA.js.map → ClaudeService-ICSHJMQ5.js.map} +0 -0
- /package/dist/{GitHubService-FZHHBOFG.js.map → GitHubService-RPM27GWD.js.map} +0 -0
- /package/dist/{PromptTemplateManager-6HH3PVXV.js.map → PromptTemplateManager-2TDZAUC6.js.map} +0 -0
- /package/dist/{SettingsManager-I2LRCW2A.js.map → SettingsManager-FJFU6JJD.js.map} +0 -0
- /package/dist/{SettingsMigrationManager-TJ7UWZG5.js.map → SettingsMigrationManager-EH3J2TCN.js.map} +0 -0
- /package/dist/{chunk-UJL4HI2R.js.map → chunk-3NFBZRPR.js.map} +0 -0
- /package/dist/{chunk-AKUJXDNW.js.map → chunk-F4J6KEL6.js.map} +0 -0
- /package/dist/{chunk-RW54ZMBM.js.map → chunk-JJUPY5MM.js.map} +0 -0
- /package/dist/{chunk-UAN4A3YU.js.map → chunk-KM3W7YQX.js.map} +0 -0
- /package/dist/{chunk-4XIDC3NF.js.map → chunk-MD6HA5IK.js.map} +0 -0
- /package/dist/{chunk-OC4H6HJD.js.map → chunk-O7WHXLCB.js.map} +0 -0
- /package/dist/{chunk-PA6Q6AWM.js.map → chunk-PSFVTBM7.js.map} +0 -0
- /package/dist/{chunk-ZM3CFL5L.js.map → chunk-QRBOPFAA.js.map} +0 -0
- /package/dist/{chunk-SSCQCCJ7.js.map → chunk-THF25ICZ.js.map} +0 -0
- /package/dist/{chunk-OSCLCMDG.js.map → chunk-UYWAESOT.js.map} +0 -0
- /package/dist/{chunk-CFFQ2Z7A.js.map → chunk-WUQQNE63.js.map} +0 -0
- /package/dist/{claude-W52VKI6L.js.map → claude-X7EBJRB2.js.map} +0 -0
- /package/dist/{color-F7RU6B6Z.js.map → color-ZPIIUADB.js.map} +0 -0
- /package/dist/{git-IYA53VIC.js.map → git-OXJACVAU.js.map} +0 -0
- /package/dist/{init-4FHTAM3F.js.map → init-SCR2LQ4A.js.map} +0 -0
- /package/dist/{installation-detector-VARGFFRZ.js.map → installation-detector-6R6YOFVZ.js.map} +0 -0
- /package/dist/{logger-MKYH4UDV.js.map → neon-helpers-L5CXQ5CT.js.map} +0 -0
- /package/dist/{neon-helpers-77PBPGJ5.js.map → prompt-A7GGRHSY.js.map} +0 -0
- /package/dist/{prompt-QALMYTVC.js.map → remote-73TZ2ADI.js.map} +0 -0
- /package/dist/{test-tabs-PRMRSHKI.js.map → test-tabs-JGO3VOXJ.js.map} +0 -0
- /package/dist/{test-webserver-DAHONWCS.js.map → test-webserver-VPNLAFZ3.js.map} +0 -0
- /package/dist/{update-4TDDUR5K.js.map → update-LETF5ASC.js.map} +0 -0
- /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
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
-
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
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-
|
|
4
|
+
} from "./chunk-LTNDJMTH.js";
|
|
5
5
|
import {
|
|
6
6
|
GitWorktreeManager
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-M5XUCTTJ.js";
|
|
8
8
|
import {
|
|
9
9
|
getWorktreeRoot,
|
|
10
10
|
isValidGitRepo
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-TR5MC2U6.js";
|
|
12
|
+
import "./chunk-MLS5FAV7.js";
|
|
12
13
|
import {
|
|
13
14
|
SettingsManager
|
|
14
|
-
} from "./chunk-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
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-
|
|
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-
|
|
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":"
|
|
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-
|
|
9
|
-
import "./chunk-
|
|
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-
|
|
17
|
+
//# sourceMappingURL=remote-73TZ2ADI.js.map
|