@iloom/cli 0.7.6 → 0.8.1
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/LICENSE +1 -1
- package/README.md +32 -3
- package/dist/{ClaudeContextManager-Y2YJC6BU.js → ClaudeContextManager-RDP6CLK6.js} +5 -5
- package/dist/{ClaudeService-NDVFQRKC.js → ClaudeService-FKPOQRA4.js} +4 -4
- package/dist/GitHubService-ACZVNTJE.js +12 -0
- package/dist/{LoomLauncher-U2B3VHPC.js → LoomLauncher-NHZMEVTQ.js} +5 -5
- package/dist/{MetadataManager-XJ2YB762.js → MetadataManager-W3C54UYT.js} +2 -2
- package/dist/{PRManager-7F3AAY66.js → PRManager-H4TUZTZL.js} +5 -5
- package/dist/{PromptTemplateManager-7L3HJQQU.js → PromptTemplateManager-OUYDHOPI.js} +2 -2
- package/dist/README.md +32 -3
- package/dist/{SettingsManager-YU4VYPTW.js → SettingsManager-VCVLL32H.js} +4 -2
- package/dist/{SettingsMigrationManager-KZKDG66H.js → SettingsMigrationManager-LEBMJP3B.js} +3 -3
- package/dist/agents/iloom-code-reviewer.md +735 -0
- package/dist/agents/iloom-framework-detector.md +1 -1
- package/dist/agents/iloom-issue-analyze-and-plan.md +2 -2
- package/dist/agents/iloom-issue-analyzer.md +2 -2
- package/dist/agents/iloom-issue-complexity-evaluator.md +1 -1
- package/dist/agents/iloom-issue-enhancer.md +2 -2
- package/dist/agents/iloom-issue-implementer.md +3 -3
- package/dist/agents/iloom-issue-planner.md +2 -2
- package/dist/{build-HQ5HGA3T.js → build-H4DK3DMQ.js} +7 -7
- package/dist/{chunk-N7FVXZNI.js → chunk-4BSXZ5YZ.js} +31 -9
- package/dist/chunk-4BSXZ5YZ.js.map +1 -0
- package/dist/{chunk-VYKKWU36.js → chunk-4KGRPHM6.js} +3 -3
- package/dist/{chunk-CFQVOTHO.js → chunk-52MVUK5V.js} +2 -2
- package/dist/{chunk-TIYJEEVO.js → chunk-66QOCD5N.js} +1 -1
- package/dist/chunk-66QOCD5N.js.map +1 -0
- package/dist/chunk-7JDMYTFZ.js +251 -0
- package/dist/chunk-7JDMYTFZ.js.map +1 -0
- package/dist/{chunk-7LSSNB7Y.js → chunk-7ZEHSSUP.js} +2 -2
- package/dist/chunk-A4UQY3M2.js +75 -0
- package/dist/chunk-A4UQY3M2.js.map +1 -0
- package/dist/{chunk-ELJKYFSH.js → chunk-BCQDYAOJ.js} +4 -4
- package/dist/{chunk-F2PWIRV4.js → chunk-BYUMEDDD.js} +2 -2
- package/dist/{chunk-CAXFWFV6.js → chunk-ECP77QGE.js} +4 -4
- package/dist/{chunk-6YAMWLCP.js → chunk-EQOFNPEY.js} +3 -3
- package/dist/{chunk-ZA575VLF.js → chunk-GDS2HXSW.js} +4 -4
- package/dist/{chunk-UDRZY65Y.js → chunk-HSGZW3ID.js} +2 -2
- package/dist/{chunk-WFQ5CLTR.js → chunk-IWIIOFEB.js} +56 -5
- package/dist/chunk-IWIIOFEB.js.map +1 -0
- package/dist/{chunk-VWGKGNJP.js → chunk-KBEIQP4G.js} +3 -1
- package/dist/chunk-KBEIQP4G.js.map +1 -0
- package/dist/{chunk-ETY2SBW5.js → chunk-NR64HNF7.js} +17 -15
- package/dist/chunk-NR64HNF7.js.map +1 -0
- package/dist/{chunk-WT4UGBE2.js → chunk-PBSHQVCT.js} +5 -5
- package/dist/{chunk-64HCHVJM.js → chunk-PLI3JQWT.js} +2 -2
- package/dist/{chunk-USJSNHGG.js → chunk-PVW6JE7E.js} +3 -3
- package/dist/{chunk-HBJITKSZ.js → chunk-RNBIISBZ.js} +161 -3
- package/dist/chunk-RNBIISBZ.js.map +1 -0
- package/dist/{chunk-C7YW5IMS.js → chunk-RODL2HVY.js} +17 -6
- package/dist/{chunk-C7YW5IMS.js.map → chunk-RODL2HVY.js.map} +1 -1
- package/dist/{chunk-3K3WY3BN.js → chunk-SC6X5EBG.js} +4 -4
- package/dist/{chunk-NEPH2O4C.js → chunk-SSASIBDJ.js} +3 -3
- package/dist/{chunk-GCPAZSGV.js → chunk-THS5L54H.js} +150 -3
- package/dist/chunk-THS5L54H.js.map +1 -0
- package/dist/{chunk-5V74K5ZA.js → chunk-TVH67KEO.js} +25 -2
- package/dist/chunk-TVH67KEO.js.map +1 -0
- package/dist/{chunk-NPEMVE27.js → chunk-UDZCTLD6.js} +115 -3
- package/dist/chunk-UDZCTLD6.js.map +1 -0
- package/dist/{chunk-ENMTWE74.js → chunk-VZYSM7N7.js} +2 -2
- package/dist/{chunk-WZYBHD7P.js → chunk-XHNACIHO.js} +2 -2
- package/dist/{chunk-XAMBIVXE.js → chunk-XJHQVOT6.js} +2 -2
- package/dist/{chunk-O36JLYNW.js → chunk-XU5A6BWA.js} +4 -7
- package/dist/chunk-XU5A6BWA.js.map +1 -0
- package/dist/{cleanup-IO4KV2DL.js → cleanup-OGE7V7AD.js} +16 -16
- package/dist/cli.js +317 -164
- package/dist/cli.js.map +1 -1
- package/dist/{commit-3ULFKXNB.js → commit-534QIRHY.js} +10 -10
- package/dist/{compile-CT7IR7O2.js → compile-ZOAODFN2.js} +7 -7
- package/dist/{contribute-GXKOIA42.js → contribute-7USRBWRM.js} +6 -6
- package/dist/{dev-server-OAP3RZC6.js → dev-server-TYYJM3XA.js} +9 -9
- package/dist/{feedback-ZLAX3BVL.js → feedback-HZVLOTQJ.js} +9 -9
- package/dist/{git-ENLT2VNI.js → git-GUNOPP4Q.js} +4 -4
- package/dist/hooks/iloom-hook.js +75 -3
- package/dist/{ignite-HA2OJF6Z.js → ignite-ZO7SGUKP.js} +85 -25
- package/dist/ignite-ZO7SGUKP.js.map +1 -0
- package/dist/index.d.ts +85 -2
- package/dist/index.js +133 -73
- package/dist/index.js.map +1 -1
- package/dist/init-MZBIXQ7V.js +21 -0
- package/dist/{lint-HAVU4U34.js → lint-MDVUV3W2.js} +7 -7
- package/dist/mcp/issue-management-server.js +569 -2
- package/dist/mcp/issue-management-server.js.map +1 -1
- package/dist/{neon-helpers-3KBC4A3Y.js → neon-helpers-VVFFTLXE.js} +3 -3
- package/dist/{open-IN3LUZXX.js → open-2LPZ7XXW.js} +9 -9
- package/dist/plan-PIME6UNY.js +371 -0
- package/dist/plan-PIME6UNY.js.map +1 -0
- package/dist/{projects-CTRTTMSK.js → projects-325GEEGJ.js} +2 -2
- package/dist/{prompt-3SAZYRUN.js → prompt-ONNPSNKM.js} +2 -2
- package/dist/prompts/init-prompt.txt +83 -3
- package/dist/prompts/issue-prompt.txt +51 -3
- package/dist/prompts/plan-prompt.txt +435 -0
- package/dist/prompts/pr-prompt.txt +38 -0
- package/dist/prompts/regular-prompt.txt +53 -3
- package/dist/{rebase-RLEVFHWN.js → rebase-7YS3N274.js} +6 -6
- package/dist/{recap-ZKGHZCX6.js → recap-GSXFEOD6.js} +6 -6
- package/dist/{run-QEIS2EH2.js → run-XPGCMFFO.js} +9 -9
- package/dist/schema/settings.schema.json +57 -1
- package/dist/{shell-2NNSIU34.js → shell-2SPM3Z5O.js} +6 -6
- package/dist/{summary-MPOOQIOX.js → summary-C5VVSJAJ.js} +11 -11
- package/dist/{test-75WAA6DU.js → test-N2725YRI.js} +7 -7
- package/dist/{test-git-E2BLXR6M.js → test-git-ZPSPA2TP.js} +4 -4
- package/dist/{test-prefix-A7JGGYAA.js → test-prefix-6DLB2BHE.js} +4 -4
- package/dist/{test-webserver-J6SMNLU2.js → test-webserver-XLJ2TZFP.js} +6 -6
- package/package.json +1 -1
- package/dist/GitHubService-O7U4UQ7N.js +0 -12
- package/dist/agents/iloom-issue-reviewer.md +0 -139
- package/dist/chunk-5V74K5ZA.js.map +0 -1
- package/dist/chunk-ETY2SBW5.js.map +0 -1
- package/dist/chunk-GCPAZSGV.js.map +0 -1
- package/dist/chunk-HBJITKSZ.js.map +0 -1
- package/dist/chunk-N7FVXZNI.js.map +0 -1
- package/dist/chunk-NPEMVE27.js.map +0 -1
- package/dist/chunk-O36JLYNW.js.map +0 -1
- package/dist/chunk-TIYJEEVO.js.map +0 -1
- package/dist/chunk-VWGKGNJP.js.map +0 -1
- package/dist/chunk-WFQ5CLTR.js.map +0 -1
- package/dist/chunk-ZX3GTM7O.js +0 -119
- package/dist/chunk-ZX3GTM7O.js.map +0 -1
- package/dist/ignite-HA2OJF6Z.js.map +0 -1
- package/dist/init-S6IEGRSX.js +0 -21
- /package/dist/{ClaudeContextManager-Y2YJC6BU.js.map → ClaudeContextManager-RDP6CLK6.js.map} +0 -0
- /package/dist/{ClaudeService-NDVFQRKC.js.map → ClaudeService-FKPOQRA4.js.map} +0 -0
- /package/dist/{GitHubService-O7U4UQ7N.js.map → GitHubService-ACZVNTJE.js.map} +0 -0
- /package/dist/{LoomLauncher-U2B3VHPC.js.map → LoomLauncher-NHZMEVTQ.js.map} +0 -0
- /package/dist/{MetadataManager-XJ2YB762.js.map → MetadataManager-W3C54UYT.js.map} +0 -0
- /package/dist/{PRManager-7F3AAY66.js.map → PRManager-H4TUZTZL.js.map} +0 -0
- /package/dist/{PromptTemplateManager-7L3HJQQU.js.map → PromptTemplateManager-OUYDHOPI.js.map} +0 -0
- /package/dist/{SettingsManager-YU4VYPTW.js.map → SettingsManager-VCVLL32H.js.map} +0 -0
- /package/dist/{SettingsMigrationManager-KZKDG66H.js.map → SettingsMigrationManager-LEBMJP3B.js.map} +0 -0
- /package/dist/{build-HQ5HGA3T.js.map → build-H4DK3DMQ.js.map} +0 -0
- /package/dist/{chunk-VYKKWU36.js.map → chunk-4KGRPHM6.js.map} +0 -0
- /package/dist/{chunk-CFQVOTHO.js.map → chunk-52MVUK5V.js.map} +0 -0
- /package/dist/{chunk-7LSSNB7Y.js.map → chunk-7ZEHSSUP.js.map} +0 -0
- /package/dist/{chunk-ELJKYFSH.js.map → chunk-BCQDYAOJ.js.map} +0 -0
- /package/dist/{chunk-F2PWIRV4.js.map → chunk-BYUMEDDD.js.map} +0 -0
- /package/dist/{chunk-CAXFWFV6.js.map → chunk-ECP77QGE.js.map} +0 -0
- /package/dist/{chunk-6YAMWLCP.js.map → chunk-EQOFNPEY.js.map} +0 -0
- /package/dist/{chunk-ZA575VLF.js.map → chunk-GDS2HXSW.js.map} +0 -0
- /package/dist/{chunk-UDRZY65Y.js.map → chunk-HSGZW3ID.js.map} +0 -0
- /package/dist/{chunk-WT4UGBE2.js.map → chunk-PBSHQVCT.js.map} +0 -0
- /package/dist/{chunk-64HCHVJM.js.map → chunk-PLI3JQWT.js.map} +0 -0
- /package/dist/{chunk-USJSNHGG.js.map → chunk-PVW6JE7E.js.map} +0 -0
- /package/dist/{chunk-3K3WY3BN.js.map → chunk-SC6X5EBG.js.map} +0 -0
- /package/dist/{chunk-NEPH2O4C.js.map → chunk-SSASIBDJ.js.map} +0 -0
- /package/dist/{chunk-ENMTWE74.js.map → chunk-VZYSM7N7.js.map} +0 -0
- /package/dist/{chunk-WZYBHD7P.js.map → chunk-XHNACIHO.js.map} +0 -0
- /package/dist/{chunk-XAMBIVXE.js.map → chunk-XJHQVOT6.js.map} +0 -0
- /package/dist/{cleanup-IO4KV2DL.js.map → cleanup-OGE7V7AD.js.map} +0 -0
- /package/dist/{commit-3ULFKXNB.js.map → commit-534QIRHY.js.map} +0 -0
- /package/dist/{compile-CT7IR7O2.js.map → compile-ZOAODFN2.js.map} +0 -0
- /package/dist/{contribute-GXKOIA42.js.map → contribute-7USRBWRM.js.map} +0 -0
- /package/dist/{dev-server-OAP3RZC6.js.map → dev-server-TYYJM3XA.js.map} +0 -0
- /package/dist/{feedback-ZLAX3BVL.js.map → feedback-HZVLOTQJ.js.map} +0 -0
- /package/dist/{git-ENLT2VNI.js.map → git-GUNOPP4Q.js.map} +0 -0
- /package/dist/{init-S6IEGRSX.js.map → init-MZBIXQ7V.js.map} +0 -0
- /package/dist/{lint-HAVU4U34.js.map → lint-MDVUV3W2.js.map} +0 -0
- /package/dist/{neon-helpers-3KBC4A3Y.js.map → neon-helpers-VVFFTLXE.js.map} +0 -0
- /package/dist/{open-IN3LUZXX.js.map → open-2LPZ7XXW.js.map} +0 -0
- /package/dist/{projects-CTRTTMSK.js.map → projects-325GEEGJ.js.map} +0 -0
- /package/dist/{prompt-3SAZYRUN.js.map → prompt-ONNPSNKM.js.map} +0 -0
- /package/dist/{rebase-RLEVFHWN.js.map → rebase-7YS3N274.js.map} +0 -0
- /package/dist/{recap-ZKGHZCX6.js.map → recap-GSXFEOD6.js.map} +0 -0
- /package/dist/{run-QEIS2EH2.js.map → run-XPGCMFFO.js.map} +0 -0
- /package/dist/{shell-2NNSIU34.js.map → shell-2SPM3Z5O.js.map} +0 -0
- /package/dist/{summary-MPOOQIOX.js.map → summary-C5VVSJAJ.js.map} +0 -0
- /package/dist/{test-75WAA6DU.js.map → test-N2725YRI.js.map} +0 -0
- /package/dist/{test-git-E2BLXR6M.js.map → test-git-ZPSPA2TP.js.map} +0 -0
- /package/dist/{test-prefix-A7JGGYAA.js.map → test-prefix-6DLB2BHE.js.map} +0 -0
- /package/dist/{test-webserver-J6SMNLU2.js.map → test-webserver-XLJ2TZFP.js.map} +0 -0
|
@@ -4,13 +4,13 @@ import {
|
|
|
4
4
|
} from "./chunk-NXMDEL3F.js";
|
|
5
5
|
import {
|
|
6
6
|
IdentifierParser
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-TVH67KEO.js";
|
|
8
8
|
import {
|
|
9
9
|
GitWorktreeManager
|
|
10
|
-
} from "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
10
|
+
} from "./chunk-HSGZW3ID.js";
|
|
11
|
+
import "./chunk-GDS2HXSW.js";
|
|
12
|
+
import "./chunk-IWIIOFEB.js";
|
|
13
|
+
import "./chunk-KBEIQP4G.js";
|
|
14
14
|
import "./chunk-6MLEBAYZ.js";
|
|
15
15
|
import "./chunk-VT4PDUYT.js";
|
|
16
16
|
|
|
@@ -107,4 +107,4 @@ var RecapCommand = class {
|
|
|
107
107
|
export {
|
|
108
108
|
RecapCommand
|
|
109
109
|
};
|
|
110
|
-
//# sourceMappingURL=recap-
|
|
110
|
+
//# sourceMappingURL=recap-GSXFEOD6.js.map
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
DevServerManager
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-VZYSM7N7.js";
|
|
5
|
+
import "./chunk-XHNACIHO.js";
|
|
6
6
|
import {
|
|
7
7
|
getWorkspacePort
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-52MVUK5V.js";
|
|
9
9
|
import {
|
|
10
10
|
IdentifierParser
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-TVH67KEO.js";
|
|
12
12
|
import {
|
|
13
13
|
ProjectCapabilityDetector
|
|
14
14
|
} from "./chunk-7GLZVDPQ.js";
|
|
15
15
|
import "./chunk-RD7I2Q2F.js";
|
|
16
16
|
import {
|
|
17
17
|
GitWorktreeManager
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-HSGZW3ID.js";
|
|
19
19
|
import "./chunk-XPKN3QWY.js";
|
|
20
20
|
import {
|
|
21
21
|
openBrowser
|
|
@@ -25,11 +25,11 @@ import {
|
|
|
25
25
|
} from "./chunk-GYCR2LOU.js";
|
|
26
26
|
import {
|
|
27
27
|
extractIssueNumber
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-GDS2HXSW.js";
|
|
29
29
|
import {
|
|
30
30
|
SettingsManager
|
|
31
|
-
} from "./chunk-
|
|
32
|
-
import "./chunk-
|
|
31
|
+
} from "./chunk-IWIIOFEB.js";
|
|
32
|
+
import "./chunk-KBEIQP4G.js";
|
|
33
33
|
import "./chunk-6MLEBAYZ.js";
|
|
34
34
|
import {
|
|
35
35
|
logger
|
|
@@ -238,4 +238,4 @@ Make sure the project is built (run 'il start' first)`
|
|
|
238
238
|
export {
|
|
239
239
|
RunCommand
|
|
240
240
|
};
|
|
241
|
-
//# sourceMappingURL=run-
|
|
241
|
+
//# sourceMappingURL=run-XPGCMFFO.js.map
|
|
@@ -196,6 +196,24 @@
|
|
|
196
196
|
"haiku"
|
|
197
197
|
],
|
|
198
198
|
"description": "Claude model shorthand: sonnet, opus, or haiku"
|
|
199
|
+
},
|
|
200
|
+
"enabled": {
|
|
201
|
+
"type": "boolean",
|
|
202
|
+
"description": "Whether this agent is enabled. Defaults to true."
|
|
203
|
+
},
|
|
204
|
+
"providers": {
|
|
205
|
+
"type": "object",
|
|
206
|
+
"additionalProperties": {
|
|
207
|
+
"type": "string"
|
|
208
|
+
},
|
|
209
|
+
"propertyNames": {
|
|
210
|
+
"enum": [
|
|
211
|
+
"claude",
|
|
212
|
+
"gemini",
|
|
213
|
+
"codex"
|
|
214
|
+
]
|
|
215
|
+
},
|
|
216
|
+
"description": "Map of review providers to model names. Keys: claude, gemini, codex. Values: model name strings (e.g., \"sonnet\", \"gemini-3-pro-preview\", \"gpt-5.2-codex\")"
|
|
199
217
|
}
|
|
200
218
|
},
|
|
201
219
|
"additionalProperties": false
|
|
@@ -207,7 +225,7 @@
|
|
|
207
225
|
"type": "null"
|
|
208
226
|
}
|
|
209
227
|
],
|
|
210
|
-
"description": "Per-agent configuration overrides. Available agents: iloom-issue-analyzer (analyzes issues), iloom-issue-planner (creates implementation plans), iloom-issue-analyze-and-plan (combined analysis and planning), iloom-issue-complexity-evaluator (evaluates complexity), iloom-issue-enhancer (enhances issue descriptions), iloom-issue-implementer (implements code changes), iloom-
|
|
228
|
+
"description": "Per-agent configuration overrides. Available agents: iloom-issue-analyzer (analyzes issues), iloom-issue-planner (creates implementation plans), iloom-issue-analyze-and-plan (combined analysis and planning), iloom-issue-complexity-evaluator (evaluates complexity), iloom-issue-enhancer (enhances issue descriptions), iloom-issue-implementer (implements code changes), iloom-code-reviewer (reviews code changes against requirements)"
|
|
211
229
|
},
|
|
212
230
|
"spin": {
|
|
213
231
|
"type": "object",
|
|
@@ -226,6 +244,44 @@
|
|
|
226
244
|
"additionalProperties": false,
|
|
227
245
|
"description": "Spin orchestrator configuration. Model defaults to opus when not configured."
|
|
228
246
|
},
|
|
247
|
+
"plan": {
|
|
248
|
+
"type": "object",
|
|
249
|
+
"properties": {
|
|
250
|
+
"model": {
|
|
251
|
+
"type": "string",
|
|
252
|
+
"enum": [
|
|
253
|
+
"sonnet",
|
|
254
|
+
"opus",
|
|
255
|
+
"haiku"
|
|
256
|
+
],
|
|
257
|
+
"default": "opus",
|
|
258
|
+
"description": "Claude model shorthand for plan command"
|
|
259
|
+
},
|
|
260
|
+
"planner": {
|
|
261
|
+
"type": "string",
|
|
262
|
+
"enum": [
|
|
263
|
+
"claude",
|
|
264
|
+
"gemini",
|
|
265
|
+
"codex"
|
|
266
|
+
],
|
|
267
|
+
"default": "claude",
|
|
268
|
+
"description": "AI provider for creating the plan"
|
|
269
|
+
},
|
|
270
|
+
"reviewer": {
|
|
271
|
+
"type": "string",
|
|
272
|
+
"enum": [
|
|
273
|
+
"claude",
|
|
274
|
+
"gemini",
|
|
275
|
+
"codex",
|
|
276
|
+
"none"
|
|
277
|
+
],
|
|
278
|
+
"default": "none",
|
|
279
|
+
"description": "AI provider for reviewing the plan (none to skip review)"
|
|
280
|
+
}
|
|
281
|
+
},
|
|
282
|
+
"additionalProperties": false,
|
|
283
|
+
"description": "Plan command configuration. Model defaults to opus, planner to claude, reviewer to none when not configured."
|
|
284
|
+
},
|
|
229
285
|
"summary": {
|
|
230
286
|
"type": "object",
|
|
231
287
|
"properties": {
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
IdentifierParser
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-TVH67KEO.js";
|
|
5
5
|
import {
|
|
6
6
|
GitWorktreeManager
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-HSGZW3ID.js";
|
|
8
8
|
import {
|
|
9
9
|
extractIssueNumber
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-GDS2HXSW.js";
|
|
11
11
|
import {
|
|
12
12
|
SettingsManager
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import "./chunk-
|
|
13
|
+
} from "./chunk-IWIIOFEB.js";
|
|
14
|
+
import "./chunk-KBEIQP4G.js";
|
|
15
15
|
import "./chunk-6MLEBAYZ.js";
|
|
16
16
|
import {
|
|
17
17
|
getDotenvFlowFiles,
|
|
@@ -235,4 +235,4 @@ var ShellCommand = class {
|
|
|
235
235
|
export {
|
|
236
236
|
ShellCommand
|
|
237
237
|
};
|
|
238
|
-
//# sourceMappingURL=shell-
|
|
238
|
+
//# sourceMappingURL=shell-2SPM3Z5O.js.map
|
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
SessionSummaryService
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-PBSHQVCT.js";
|
|
5
5
|
import "./chunk-NXMDEL3F.js";
|
|
6
6
|
import {
|
|
7
7
|
GitWorktreeManager
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-HSGZW3ID.js";
|
|
9
9
|
import {
|
|
10
10
|
PRManager
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-EQOFNPEY.js";
|
|
12
12
|
import "./chunk-YETJNRQM.js";
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
13
|
+
import "./chunk-UDZCTLD6.js";
|
|
14
|
+
import "./chunk-RNBIISBZ.js";
|
|
15
15
|
import "./chunk-FXDYIV3K.js";
|
|
16
|
-
import "./chunk-
|
|
16
|
+
import "./chunk-66QOCD5N.js";
|
|
17
17
|
import {
|
|
18
18
|
extractIssueNumber
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-GDS2HXSW.js";
|
|
20
20
|
import {
|
|
21
21
|
SettingsManager
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-IWIIOFEB.js";
|
|
23
23
|
import {
|
|
24
24
|
MetadataManager
|
|
25
|
-
} from "./chunk-
|
|
26
|
-
import "./chunk-
|
|
25
|
+
} from "./chunk-KBEIQP4G.js";
|
|
26
|
+
import "./chunk-THS5L54H.js";
|
|
27
27
|
import "./chunk-IGKPPACU.js";
|
|
28
28
|
import {
|
|
29
29
|
getLogger
|
|
@@ -280,4 +280,4 @@ Please provide an issue number, PR number, or branch name.`
|
|
|
280
280
|
export {
|
|
281
281
|
SummaryCommand
|
|
282
282
|
};
|
|
283
|
-
//# sourceMappingURL=summary-
|
|
283
|
+
//# sourceMappingURL=summary-C5VVSJAJ.js.map
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
ScriptCommandBase
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-BCQDYAOJ.js";
|
|
5
|
+
import "./chunk-TVH67KEO.js";
|
|
6
6
|
import "./chunk-RD7I2Q2F.js";
|
|
7
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-HSGZW3ID.js";
|
|
8
8
|
import "./chunk-XPKN3QWY.js";
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
9
|
+
import "./chunk-GDS2HXSW.js";
|
|
10
|
+
import "./chunk-IWIIOFEB.js";
|
|
11
|
+
import "./chunk-KBEIQP4G.js";
|
|
12
12
|
import "./chunk-6MLEBAYZ.js";
|
|
13
13
|
import "./chunk-VT4PDUYT.js";
|
|
14
14
|
|
|
@@ -24,4 +24,4 @@ var TestCommand = class extends ScriptCommandBase {
|
|
|
24
24
|
export {
|
|
25
25
|
TestCommand
|
|
26
26
|
};
|
|
27
|
-
//# sourceMappingURL=test-
|
|
27
|
+
//# sourceMappingURL=test-N2725YRI.js.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
findMainWorktreePath
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-GDS2HXSW.js";
|
|
5
5
|
import {
|
|
6
6
|
SettingsManager
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-IWIIOFEB.js";
|
|
8
|
+
import "./chunk-KBEIQP4G.js";
|
|
9
9
|
import "./chunk-6MLEBAYZ.js";
|
|
10
10
|
import {
|
|
11
11
|
logger
|
|
@@ -51,4 +51,4 @@ var TestGitCommand = class {
|
|
|
51
51
|
export {
|
|
52
52
|
TestGitCommand
|
|
53
53
|
};
|
|
54
|
-
//# sourceMappingURL=test-git-
|
|
54
|
+
//# sourceMappingURL=test-git-ZPSPA2TP.js.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
generateWorktreePath
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-GDS2HXSW.js";
|
|
5
5
|
import {
|
|
6
6
|
SettingsManager
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-IWIIOFEB.js";
|
|
8
|
+
import "./chunk-KBEIQP4G.js";
|
|
9
9
|
import "./chunk-6MLEBAYZ.js";
|
|
10
10
|
import {
|
|
11
11
|
logger
|
|
@@ -67,4 +67,4 @@ var TestPrefixCommand = class {
|
|
|
67
67
|
export {
|
|
68
68
|
TestPrefixCommand
|
|
69
69
|
};
|
|
70
|
-
//# sourceMappingURL=test-prefix-
|
|
70
|
+
//# sourceMappingURL=test-prefix-6DLB2BHE.js.map
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
ProcessManager
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-XHNACIHO.js";
|
|
5
|
+
import "./chunk-52MVUK5V.js";
|
|
6
|
+
import "./chunk-GDS2HXSW.js";
|
|
7
7
|
import {
|
|
8
8
|
SettingsManager
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-IWIIOFEB.js";
|
|
10
|
+
import "./chunk-KBEIQP4G.js";
|
|
11
11
|
import "./chunk-6MLEBAYZ.js";
|
|
12
12
|
import {
|
|
13
13
|
logger
|
|
@@ -81,4 +81,4 @@ var TestWebserverCommand = class {
|
|
|
81
81
|
export {
|
|
82
82
|
TestWebserverCommand
|
|
83
83
|
};
|
|
84
|
-
//# sourceMappingURL=test-webserver-
|
|
84
|
+
//# sourceMappingURL=test-webserver-XLJ2TZFP.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@iloom/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.1",
|
|
4
4
|
"description": "Control plane for maintaining alignment between you and Claude Code as you work across multiple issues using isolated environments, visible context, and multi-agent workflows to scale understanding, not just output",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
GitHubService
|
|
4
|
-
} from "./chunk-USJSNHGG.js";
|
|
5
|
-
import "./chunk-GCPAZSGV.js";
|
|
6
|
-
import "./chunk-ZX3GTM7O.js";
|
|
7
|
-
import "./chunk-6MLEBAYZ.js";
|
|
8
|
-
import "./chunk-VT4PDUYT.js";
|
|
9
|
-
export {
|
|
10
|
-
GitHubService
|
|
11
|
-
};
|
|
12
|
-
//# sourceMappingURL=GitHubService-O7U4UQ7N.js.map
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: iloom-issue-reviewer
|
|
3
|
-
description: Use this agent when you need to review uncommitted code changes against a specific issue to verify completeness and quality. The agent will analyze the issue requirements, examine the code changes, and post a detailed review comment directly on the issue. Examples:\n\n<example>\nContext: The user has made code changes to address an issue and wants to verify the implementation before committing.\nuser: "I've finished implementing the fix for issue #42, can you review it?"\nassistant: "I'll use the Task tool to launch the iloom-issue-reviewer agent to analyze your changes against issue #42."\n<commentary>\nSince the user has completed work on an issue and wants a review, use the iloom-issue-reviewer agent to verify the implementation.\n</commentary>\n</example>\n\n<example>\nContext: The user wants to ensure their changes fully address all requirements in an issue.\nuser: "Check if my changes properly solve issue #15"\nassistant: "Let me use the iloom-issue-reviewer agent to verify your implementation against issue #15's requirements."\n<commentary>\nThe user is asking for verification that their code changes meet the issue requirements, so use the iloom-issue-reviewer agent.\n</commentary>\n</example>
|
|
4
|
-
tools: Bash, Glob, Grep, Read, Edit, Write, NotebookEdit, WebFetch, TodoWrite, WebSearch, BashOutput, SlashCommand, ListMcpResourcesTool, ReadMcpResourceTool, mcp__context7__resolve-library-id, mcp__context7__get-library-docs, mcp__issue_management__get_issue, mcp__issue_management__get_pr, mcp__issue_management__get_comment, mcp__issue_management__create_comment, mcp__issue_management__update_comment, mcp__recap__get_recap, mcp__recap__add_entry, mcp__recap__add_artifact
|
|
5
|
-
model: sonnet
|
|
6
|
-
color: cyan
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
You are an expert code reviewer specializing in issue verification. Your primary responsibility is to thoroughly analyze uncommitted code changes against their corresponding issue requirements and provide comprehensive feedback. Ultrathink as you execute the following.
|
|
10
|
-
|
|
11
|
-
## Loom Recap
|
|
12
|
-
|
|
13
|
-
After creating or updating any issue comment, use the Recap MCP tools:
|
|
14
|
-
- `recap.add_artifact` - Log comments with type='comment', primaryUrl (full URL with comment ID), and description. Re-calling with the same primaryUrl will update the existing entry.
|
|
15
|
-
|
|
16
|
-
This enables the recap panel to show quick-reference links to artifacts created during the session.
|
|
17
|
-
|
|
18
|
-
**Core Responsibilities:**
|
|
19
|
-
|
|
20
|
-
1. **Issue Analysis**: You will first retrieve and carefully read the entire issue using the MCP tool `mcp__issue_management__get_issue` with parameters `{ number: {{ISSUE_NUMBER}}, includeComments: true }`. Extract all requirements, acceptance criteria, and context from both the issue body and all comments. Pay special attention to any clarifications or requirement changes mentioned in the comment thread. If no issue number has been provided, use the current branch name to look for an issue number (i.e issue-NN). If there is a pr_NN suffix, look at both the PR and the issue (if one is also referenced in the branch name).
|
|
21
|
-
|
|
22
|
-
2. **Code Review Process**: You will examine the uncommitted changes using `git diff` and `git status`. Analyze each change against the issue requirements with deep critical thinking. Consider:
|
|
23
|
-
- Does the implementation fully address all stated requirements?
|
|
24
|
-
- Are there any edge cases mentioned in the issue that aren't handled?
|
|
25
|
-
- Is the code quality appropriate (following project patterns from any CLAUDE.md context)?
|
|
26
|
-
- Are there any unintended side effects or regressions?
|
|
27
|
-
- Does the solution align with the architectural decisions discussed in the issue?
|
|
28
|
-
|
|
29
|
-
3. **Verification Methodology**: You will:
|
|
30
|
-
- Create a mental checklist of all requirements from the issue
|
|
31
|
-
- Map each requirement to specific code changes
|
|
32
|
-
- Identify any gaps between requirements and implementation
|
|
33
|
-
- Assess code quality, maintainability, and adherence to project standards
|
|
34
|
-
- Consider performance implications if relevant to the issue
|
|
35
|
-
|
|
36
|
-
4. **Comment Composition**: You will write your review as a structured issue comment that includes:
|
|
37
|
-
- A summary verdict (e.g., "✅ Implementation Complete" or "⚠️ Partial Implementation")
|
|
38
|
-
- A requirement-by-requirement breakdown showing what was addressed
|
|
39
|
-
- Specific observations about code quality and implementation choices
|
|
40
|
-
- Any concerns, missing pieces, or suggestions for improvement
|
|
41
|
-
- Positive acknowledgment of well-implemented aspects
|
|
42
|
-
- IMPORTANT: When including code excerpts or diffs >5 lines, wrap in `<details>/<summary>` tags with format: "Click to expand [type] ([N] lines) - [context]"
|
|
43
|
-
|
|
44
|
-
5. **Technical Execution**: To post your comment, you will use the MCP tool `mcp__issue_management__create_comment` with parameters `{ number: {{ISSUE_NUMBER}}, body: "your review content", type: "issue" }`. This approach properly handles markdown content and works across different issue tracking systems.
|
|
45
|
-
|
|
46
|
-
<comment_tool_info>
|
|
47
|
-
IMPORTANT: You have been provided with MCP tools for issue management during this workflow.
|
|
48
|
-
|
|
49
|
-
Available Tools:
|
|
50
|
-
- mcp__issue_management__get_issue: Fetch issue details
|
|
51
|
-
Parameters: { number: string, includeComments?: boolean }
|
|
52
|
-
Returns: { title, body, comments, labels, assignees, state, ... }
|
|
53
|
-
|
|
54
|
-
- mcp__issue_management__get_comment: Fetch a specific comment
|
|
55
|
-
Parameters: { commentId: string, number: string }
|
|
56
|
-
Returns: { id, body, author, created_at, ... }
|
|
57
|
-
|
|
58
|
-
{{#if DRAFT_PR_MODE}}- mcp__issue_management__create_comment: Create a new comment on PR {{DRAFT_PR_NUMBER}}
|
|
59
|
-
Parameters: { number: string, body: "markdown content", type: "pr" }{{/if}}{{#if STANDARD_ISSUE_MODE}}- mcp__issue_management__create_comment: Create a new comment on issue {{ISSUE_NUMBER}}
|
|
60
|
-
Parameters: { number: string, body: "markdown content", type: "issue" }{{/if}}
|
|
61
|
-
Returns: { id: string, url: string, created_at: string }
|
|
62
|
-
|
|
63
|
-
- mcp__issue_management__update_comment: Update an existing comment
|
|
64
|
-
Parameters: { commentId: string, number: string, body: "updated markdown content" }
|
|
65
|
-
Returns: { id: string, url: string, updated_at: string }
|
|
66
|
-
|
|
67
|
-
Workflow Comment Strategy:
|
|
68
|
-
1. When beginning review, create a NEW comment informing the user you are working on reviewing the issue.
|
|
69
|
-
2. Store the returned comment ID and URL. After creating the comment, call `mcp__recap__add_artifact` to log it with type='comment', primaryUrl=[comment URL], and a brief description (e.g., "Code review comment").
|
|
70
|
-
3. Once you have formulated your review tasks in a todo format, update the comment using mcp__issue_management__update_comment with your tasks formatted as checklists using markdown:
|
|
71
|
-
- [ ] for incomplete tasks (which should be all of them at this point)
|
|
72
|
-
4. After you complete every todo item, update the comment using mcp__issue_management__update_comment with your progress - you may add todo items if you need:
|
|
73
|
-
- [ ] for incomplete tasks
|
|
74
|
-
- [x] for completed tasks
|
|
75
|
-
|
|
76
|
-
* Include relevant context (current step, progress, blockers) and a **very aggressive** estimated time to completion of this step and the whole task in each update after the comment's todo list
|
|
77
|
-
5. When you have finished your task, update the same comment as before - MAKE SURE YOU DO NOT ERASE THE "details" section, then let the calling process know the full web URL of the issue comment, including the comment ID. NEVER ATTEMPT CONCURRENT UPDATES OF THE COMMENT. DATA WILL BE LOST.
|
|
78
|
-
6. CONSTRAINT: After you create the initial comment, you may not create another comment. You must always update the initial comment instead.
|
|
79
|
-
|
|
80
|
-
Example Usage:
|
|
81
|
-
```
|
|
82
|
-
// Start
|
|
83
|
-
{{#if DRAFT_PR_MODE}}const comment = await mcp__issue_management__create_comment({
|
|
84
|
-
number: {{DRAFT_PR_NUMBER}},
|
|
85
|
-
body: "# Code Review Phase\n\n- [ ] Fetch issue details\n- [ ] Analyze requirements\n- [ ] Review code changes",
|
|
86
|
-
type: "pr"
|
|
87
|
-
}){{/if}}{{#if STANDARD_ISSUE_MODE}}const comment = await mcp__issue_management__create_comment({
|
|
88
|
-
number: {{ISSUE_NUMBER}},
|
|
89
|
-
body: "# Code Review Phase\n\n- [ ] Fetch issue details\n- [ ] Analyze requirements\n- [ ] Review code changes",
|
|
90
|
-
type: "issue"
|
|
91
|
-
}){{/if}}
|
|
92
|
-
|
|
93
|
-
// Log the comment as an artifact
|
|
94
|
-
await mcp__recap__add_artifact({
|
|
95
|
-
type: "comment",
|
|
96
|
-
primaryUrl: comment.url,
|
|
97
|
-
description: "Code review comment"
|
|
98
|
-
})
|
|
99
|
-
|
|
100
|
-
// Update as you progress
|
|
101
|
-
{{#if DRAFT_PR_MODE}}await mcp__issue_management__update_comment({
|
|
102
|
-
commentId: comment.id,
|
|
103
|
-
number: {{DRAFT_PR_NUMBER}},
|
|
104
|
-
body: "# Code Review Phase\n\n- [x] Fetch issue details\n- [ ] Analyze requirements\n- [ ] Review code changes"
|
|
105
|
-
}){{/if}}{{#if STANDARD_ISSUE_MODE}}await mcp__issue_management__update_comment({
|
|
106
|
-
commentId: comment.id,
|
|
107
|
-
number: {{ISSUE_NUMBER}},
|
|
108
|
-
body: "# Code Review Phase\n\n- [x] Fetch issue details\n- [ ] Analyze requirements\n- [ ] Review code changes"
|
|
109
|
-
}){{/if}}
|
|
110
|
-
```
|
|
111
|
-
</comment_tool_info>
|
|
112
|
-
|
|
113
|
-
**Quality Standards:**
|
|
114
|
-
- Be thorough but concise - every observation should add value
|
|
115
|
-
- Use specific code references when pointing out issues
|
|
116
|
-
- Maintain a constructive, professional tone
|
|
117
|
-
- Acknowledge good implementation decisions, not just problems
|
|
118
|
-
- If the implementation is incomplete, clearly state what remains to be done
|
|
119
|
-
- If you notice improvements beyond the issue scope, mention them as "future considerations"
|
|
120
|
-
|
|
121
|
-
**Decision Framework:**
|
|
122
|
-
When evaluating completeness:
|
|
123
|
-
- ✅ Complete: All requirements met, code quality good, no significant issues
|
|
124
|
-
- ⚠️ Mostly Complete: Core requirements met but minor items missing or quality concerns
|
|
125
|
-
- ❌ Incomplete: Major requirements unaddressed or significant issues present
|
|
126
|
-
|
|
127
|
-
**Important Notes:**
|
|
128
|
-
- Always think critically and deeply about the context before making judgments
|
|
129
|
-
- If the issue references other issues or PRs, consider checking those for additional context
|
|
130
|
-
- Never assume implementation details not explicitly shown in the diff
|
|
131
|
-
- If you cannot access the issue or code, clearly state this limitation
|
|
132
|
-
- Focus on uncommitted changes only - do not review the entire codebase unless specifically requested
|
|
133
|
-
|
|
134
|
-
## HOW TO UPDATE THE USER OF YOUR PROGRESS
|
|
135
|
-
* AS SOON AS YOU CAN, once you have formulated an initial plan/todo list for your review task, you should create a comment as described in the <comment_tool_info> section above.
|
|
136
|
-
* AFTER YOU COMPLETE EACH ITEM ON YOUR TODO LIST - update the same comment with your progress as described in the <comment_tool_info> section above.
|
|
137
|
-
* When the whole task is complete, update the SAME comment with the results of your work including your complete review. DO NOT include comments like "see previous comment for details" - this represents a failure of your task. NEVER ATTEMPT CONCURRENT UPDATES OF THE COMMENT. DATA WILL BE LOST.
|
|
138
|
-
|
|
139
|
-
Your review should help the developer understand exactly where their implementation stands relative to the issue requirements and what, if anything, needs additional work.
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/IdentifierParser.ts"],"sourcesContent":["import type { ParsedInput } from '../commands/start.js'\nimport type { GitWorktreeManager } from '../lib/GitWorktreeManager.js'\nimport { extractIssueNumber, extractPRNumber } from './git.js'\n\n/**\n * IdentifierParser provides consistent identifier parsing across commands\n * using pattern-based detection without GitHub API calls.\n *\n * Detection Strategy:\n * 1. For numeric input (e.g., \"42\", \"#66\"):\n * - Check for PR worktree first (_pr_N pattern in path)\n * - Then check for issue worktree (issue-N pattern in branch)\n * 2. For alphanumeric input (e.g., \"ENG-123\"):\n * - Check for issue worktree with alphanumeric identifier\n * 3. For branch-style input (e.g., \"feat/issue-42__description\", \"pr/123\"):\n * - Find matching worktree by branch name\n * - Extract PR number from branch name if present (priority)\n * - Extract issue number from branch name if present\n * - Return as PR/issue type if number found, otherwise branch type\n *\n * This ensures:\n * - No unnecessary GitHub API calls\n * - Consistent behavior across finish/cleanup commands\n * - PR detection takes priority over issue detection\n * - Issue numbers are extracted from branch names for \"Fixes #N\" commit trailers\n */\nexport class IdentifierParser {\n\tconstructor(private gitWorktreeManager: GitWorktreeManager) {}\n\n\t/**\n\t * Parse identifier using pattern-based detection on existing worktrees.\n\t * Does NOT make GitHub API calls - only checks local worktree patterns.\n\t *\n\t * @param identifier - The identifier to parse (e.g., \"42\", \"#66\", \"ENG-123\", \"my-branch\")\n\t * @returns ParsedInput with type, number/branchName, and originalInput\n\t * @throws Error if no matching worktree is found\n\t */\n\tasync parseForPatternDetection(identifier: string): Promise<ParsedInput> {\n\t\t// Remove # prefix if present and trim whitespace\n\t\tconst cleanId = identifier.replace(/^#/, '').trim()\n\t\tconst originalInput = identifier\n\n\t\t// Check if input is numeric (GitHub-style issue/PR numbers)\n\t\tconst numericMatch = cleanId.match(/^(\\d+)$/)\n\n\t\tif (numericMatch?.[1]) {\n\t\t\tconst number = parseInt(numericMatch[1], 10)\n\n\t\t\t// Priority 1: Check for PR worktree (_pr_N pattern)\n\t\t\t// Pass empty string for branch name since we don't know it yet\n\t\t\tconst prWorktree = await this.gitWorktreeManager.findWorktreeForPR(number, '')\n\t\t\tif (prWorktree) {\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'pr',\n\t\t\t\t\tnumber,\n\t\t\t\t\toriginalInput,\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Priority 2: Check for issue worktree (issue-N pattern)\n\t\t\tconst issueWorktree = await this.gitWorktreeManager.findWorktreeForIssue(number)\n\t\t\tif (issueWorktree) {\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'issue',\n\t\t\t\t\tnumber,\n\t\t\t\t\toriginalInput,\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// No matching worktree found for numeric input\n\t\t\tthrow new Error(`No worktree found for identifier: ${identifier}`)\n\t\t}\n\n\t\t// Check if input is alphanumeric issue identifier (Linear/Jira-style: ABC-123, ENG-42)\n\t\tconst alphanumericMatch = cleanId.match(/^([A-Za-z]+-\\d+)$/)\n\n\t\tif (alphanumericMatch?.[1]) {\n\t\t\tconst alphanumericId = alphanumericMatch[1]\n\n\t\t\t// Check for issue worktree with alphanumeric identifier\n\t\t\tconst issueWorktree = await this.gitWorktreeManager.findWorktreeForIssue(alphanumericId)\n\t\t\tif (issueWorktree) {\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'issue',\n\t\t\t\t\tnumber: alphanumericId,\n\t\t\t\t\toriginalInput,\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// No matching worktree found for alphanumeric identifier\n\t\t\tthrow new Error(`No worktree found for identifier: ${identifier}`)\n\t\t}\n\n\t\t// Non-numeric/non-alphanumeric input: treat as branch name\n\t\tconst branchWorktree = await this.gitWorktreeManager.findWorktreeForBranch(cleanId)\n\t\tif (branchWorktree) {\n\t\t\t// Priority 1: Check for PR pattern in the input\n\t\t\tconst prFromBranch = extractPRNumber(cleanId)\n\t\t\tif (prFromBranch !== null) {\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'pr',\n\t\t\t\t\tnumber: prFromBranch,\n\t\t\t\t\toriginalInput,\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Priority 2: Try to extract issue number from branch name\n\t\t\t// This handles cases like \"feat/issue-42__description\" passed as explicit input\n\t\t\tconst issueFromBranch = extractIssueNumber(cleanId)\n\t\t\tif (issueFromBranch !== null) {\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'issue',\n\t\t\t\t\tnumber: issueFromBranch,\n\t\t\t\t\toriginalInput,\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ttype: 'branch',\n\t\t\t\tbranchName: cleanId,\n\t\t\t\toriginalInput,\n\t\t\t}\n\t\t}\n\n\t\t// No matching worktree found for branch name\n\t\tthrow new Error(`No worktree found for identifier: ${identifier}`)\n\t}\n}\n"],"mappings":";;;;;;;AA0BO,IAAM,mBAAN,MAAuB;AAAA,EAC7B,YAAoB,oBAAwC;AAAxC;AAAA,EAAyC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAU7D,MAAM,yBAAyB,YAA0C;AAExE,UAAM,UAAU,WAAW,QAAQ,MAAM,EAAE,EAAE,KAAK;AAClD,UAAM,gBAAgB;AAGtB,UAAM,eAAe,QAAQ,MAAM,SAAS;AAE5C,QAAI,6CAAe,IAAI;AACtB,YAAM,SAAS,SAAS,aAAa,CAAC,GAAG,EAAE;AAI3C,YAAM,aAAa,MAAM,KAAK,mBAAmB,kBAAkB,QAAQ,EAAE;AAC7E,UAAI,YAAY;AACf,eAAO;AAAA,UACN,MAAM;AAAA,UACN;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAGA,YAAM,gBAAgB,MAAM,KAAK,mBAAmB,qBAAqB,MAAM;AAC/E,UAAI,eAAe;AAClB,eAAO;AAAA,UACN,MAAM;AAAA,UACN;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAGA,YAAM,IAAI,MAAM,qCAAqC,UAAU,EAAE;AAAA,IAClE;AAGA,UAAM,oBAAoB,QAAQ,MAAM,mBAAmB;AAE3D,QAAI,uDAAoB,IAAI;AAC3B,YAAM,iBAAiB,kBAAkB,CAAC;AAG1C,YAAM,gBAAgB,MAAM,KAAK,mBAAmB,qBAAqB,cAAc;AACvF,UAAI,eAAe;AAClB,eAAO;AAAA,UACN,MAAM;AAAA,UACN,QAAQ;AAAA,UACR;AAAA,QACD;AAAA,MACD;AAGA,YAAM,IAAI,MAAM,qCAAqC,UAAU,EAAE;AAAA,IAClE;AAGA,UAAM,iBAAiB,MAAM,KAAK,mBAAmB,sBAAsB,OAAO;AAClF,QAAI,gBAAgB;AAEnB,YAAM,eAAe,gBAAgB,OAAO;AAC5C,UAAI,iBAAiB,MAAM;AAC1B,eAAO;AAAA,UACN,MAAM;AAAA,UACN,QAAQ;AAAA,UACR;AAAA,QACD;AAAA,MACD;AAIA,YAAM,kBAAkB,mBAAmB,OAAO;AAClD,UAAI,oBAAoB,MAAM;AAC7B,eAAO;AAAA,UACN,MAAM;AAAA,UACN,QAAQ;AAAA,UACR;AAAA,QACD;AAAA,MACD;AAEA,aAAO;AAAA,QACN,MAAM;AAAA,QACN,YAAY;AAAA,QACZ;AAAA,MACD;AAAA,IACD;AAGA,UAAM,IAAI,MAAM,qCAAqC,UAAU,EAAE;AAAA,EAClE;AACD;","names":[]}
|