@iloom/cli 0.5.0 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. package/dist/{BranchNamingService-GCCWB3LK.js → BranchNamingService-B5PVRR7F.js} +4 -4
  2. package/dist/ClaudeContextManager-PQ46VILL.js +14 -0
  3. package/dist/ClaudeService-6OMO552H.js +13 -0
  4. package/dist/GitHubService-S2OGUTDR.js +12 -0
  5. package/dist/{LoomLauncher-4UG2E4CD.js → LoomLauncher-ZHDTPKED.js} +15 -79
  6. package/dist/LoomLauncher-ZHDTPKED.js.map +1 -0
  7. package/dist/MetadataManager-DFI73J3G.js +10 -0
  8. package/dist/PRManager-OCSB2HPT.js +14 -0
  9. package/dist/PromptTemplateManager-5GNF7FCP.js +9 -0
  10. package/dist/{SettingsManager-XPR4TEQL.js → SettingsManager-CNYBGXDT.js} +3 -3
  11. package/dist/SettingsMigrationManager-KZKDG66H.js +10 -0
  12. package/dist/{chunk-OEGECBFS.js → chunk-3PT7RKL5.js} +4 -4
  13. package/dist/{chunk-WUQQNE63.js → chunk-433MOLAU.js} +44 -7
  14. package/dist/chunk-433MOLAU.js.map +1 -0
  15. package/dist/{chunk-LN4H3A6A.js → chunk-53OMUNUN.js} +5 -5
  16. package/dist/{chunk-THF25ICZ.js → chunk-5F6IWWRS.js} +2 -2
  17. package/dist/{chunk-P2ZQ5LKB.js → chunk-5IWU3HXE.js} +5 -5
  18. package/dist/{chunk-QIUJPPJQ.js → chunk-5TXLVEXT.js} +3 -3
  19. package/dist/{chunk-RFUOIUQF.js → chunk-66BMJ25W.js} +13 -7
  20. package/dist/chunk-66BMJ25W.js.map +1 -0
  21. package/dist/{chunk-6UIGZD2N.js → chunk-6MLEBAYZ.js} +2 -2
  22. package/dist/{chunk-VTXCGKV5.js → chunk-7HIRPCKU.js} +14 -6
  23. package/dist/chunk-7HIRPCKU.js.map +1 -0
  24. package/dist/{chunk-UNXRACJ7.js → chunk-7LSSNB7Y.js} +3 -3
  25. package/dist/{chunk-QHA67Q7A.js → chunk-7Q66W4OH.js} +2 -2
  26. package/dist/{chunk-RUC7OULH.js → chunk-AEIMYF4P.js} +6 -8
  27. package/dist/{chunk-RUC7OULH.js.map → chunk-AEIMYF4P.js.map} +1 -1
  28. package/dist/{chunk-MD6HA5IK.js → chunk-B2UO6EYE.js} +2 -2
  29. package/dist/{chunk-YZTDGPFB.js → chunk-CFUWQHCJ.js} +2 -2
  30. package/dist/{chunk-UYWAESOT.js → chunk-F2PWIRV4.js} +3 -3
  31. package/dist/{chunk-PSFVTBM7.js → chunk-FXDYIV3K.js} +2 -2
  32. package/dist/{chunk-CDQEK2WD.js → chunk-FXJKNVZW.js} +5 -5
  33. package/dist/{chunk-3CMGCRB5.js → chunk-HMMO2LDS.js} +3 -3
  34. package/dist/{chunk-OOU3DKNT.js → chunk-IDUICCZY.js} +2 -2
  35. package/dist/{chunk-HABINPX2.js → chunk-J7GHNTYK.js} +67 -11
  36. package/dist/chunk-J7GHNTYK.js.map +1 -0
  37. package/dist/{chunk-DKQ4SUII.js → chunk-K5G5SFWY.js} +2 -2
  38. package/dist/chunk-K5G5SFWY.js.map +1 -0
  39. package/dist/{chunk-KO2FOMHL.js → chunk-LT3SGBR7.js} +2 -2
  40. package/dist/{chunk-VBFDVGAE.js → chunk-LVLRMP7V.js} +2 -2
  41. package/dist/{chunk-RNZMHJK7.js → chunk-N4ZJVATC.js} +3 -3
  42. package/dist/chunk-NXMDEL3F.js +54 -0
  43. package/dist/chunk-NXMDEL3F.js.map +1 -0
  44. package/dist/chunk-O7VL5N6S.js +72 -0
  45. package/dist/chunk-O7VL5N6S.js.map +1 -0
  46. package/dist/{chunk-S65T4O6I.js → chunk-QPS6TZUW.js} +3 -3
  47. package/dist/{chunk-RJKMF6BC.js → chunk-SHVB3EFE.js} +3 -3
  48. package/dist/chunk-VT4PDUYT.js +578 -0
  49. package/dist/chunk-VT4PDUYT.js.map +1 -0
  50. package/dist/{chunk-4YTILIIH.js → chunk-VV66DH6T.js} +8 -8
  51. package/dist/{chunk-GVRO4PWE.js → chunk-XNNXAAZT.js} +6 -6
  52. package/dist/{chunk-AS2IRKLU.js → chunk-YU5HVI6B.js} +2 -2
  53. package/dist/{chunk-T5IIUG4Z.js → chunk-Z5BM4JWB.js} +25 -24
  54. package/dist/chunk-Z5BM4JWB.js.map +1 -0
  55. package/dist/{chunk-SJ2GZ6RF.js → chunk-ZX3GTM7O.js} +2 -2
  56. package/dist/{claude-ACVXNB6N.js → claude-H33OQMXO.js} +4 -6
  57. package/dist/{cleanup-MIDJVSIU.js → cleanup-Y5W3CNUV.js} +20 -22
  58. package/dist/{cleanup-MIDJVSIU.js.map → cleanup-Y5W3CNUV.js.map} +1 -1
  59. package/dist/cli.js +125 -81
  60. package/dist/cli.js.map +1 -1
  61. package/dist/{color-ZPIIUADB.js → color-4TJ4P5EY.js} +5 -3
  62. package/dist/{contribute-RS3DO3WP.js → contribute-K7UXBOML.js} +8 -8
  63. package/dist/{dev-server-ASH7HJVI.js → dev-server-HNBRWGCD.js} +11 -13
  64. package/dist/{dev-server-ASH7HJVI.js.map → dev-server-HNBRWGCD.js.map} +1 -1
  65. package/dist/{feedback-RVIGHBJG.js → feedback-567ZH2O7.js} +16 -14
  66. package/dist/{feedback-RVIGHBJG.js.map → feedback-567ZH2O7.js.map} +1 -1
  67. package/dist/{git-OQAPUPLP.js → git-OV6ADVO7.js} +6 -6
  68. package/dist/{ignite-XJALWFAT.js → ignite-3HB3ZBEW.js} +15 -17
  69. package/dist/{ignite-XJALWFAT.js.map → ignite-3HB3ZBEW.js.map} +1 -1
  70. package/dist/index.d.ts +54 -35
  71. package/dist/index.js +377 -276
  72. package/dist/index.js.map +1 -1
  73. package/dist/init-CMIRHFSR.js +19 -0
  74. package/dist/{installation-detector-6R6YOFVZ.js → installation-detector-VXZOCL6P.js} +3 -3
  75. package/dist/mcp/issue-management-server.js +62 -7
  76. package/dist/mcp/issue-management-server.js.map +1 -1
  77. package/dist/neon-helpers-3KBC4A3Y.js +11 -0
  78. package/dist/{open-KW4NTLXH.js → open-AXE225Z5.js} +11 -13
  79. package/dist/{open-KW4NTLXH.js.map → open-AXE225Z5.js.map} +1 -1
  80. package/dist/{projects-QEAEBAT2.js → projects-GVEMCN5R.js} +4 -4
  81. package/dist/{prompt-A7GGRHSY.js → prompt-3SAZYRUN.js} +3 -3
  82. package/dist/prompts/session-summary-prompt.txt +58 -4
  83. package/dist/{rebase-WZHHE5LU.js → rebase-6UIHMUWS.js} +9 -11
  84. package/dist/{rebase-WZHHE5LU.js.map → rebase-6UIHMUWS.js.map} +1 -1
  85. package/dist/{recap-33NPZ3ZO.js → recap-XTBNMEMO.js} +12 -19
  86. package/dist/recap-XTBNMEMO.js.map +1 -0
  87. package/dist/{remote-73TZ2ADI.js → remote-IJAMOEAP.js} +3 -3
  88. package/dist/{run-HRYQ7TR7.js → run-H375EYRB.js} +11 -13
  89. package/dist/{run-HRYQ7TR7.js.map → run-H375EYRB.js.map} +1 -1
  90. package/dist/{shell-JMU5XTHW.js → shell-33FJCWJQ.js} +9 -11
  91. package/dist/{shell-JMU5XTHW.js.map → shell-33FJCWJQ.js.map} +1 -1
  92. package/dist/{summary-4SSGGH7N.js → summary-JUMOCNLR.js} +14 -15
  93. package/dist/{summary-4SSGGH7N.js.map → summary-JUMOCNLR.js.map} +1 -1
  94. package/dist/{test-git-6SAIRBUD.js → test-git-CO3BA4BV.js} +6 -6
  95. package/dist/{test-prefix-RLVRK5ZD.js → test-prefix-HZYSDQYT.js} +6 -6
  96. package/dist/{test-tabs-3SCJWRKT.js → test-tabs-D3POYOJ5.js} +3 -6
  97. package/dist/{test-tabs-3SCJWRKT.js.map → test-tabs-D3POYOJ5.js.map} +1 -1
  98. package/dist/{test-webserver-VPNLAFZ3.js → test-webserver-YVQD42W6.js} +2 -2
  99. package/dist/{update-LETF5ASC.js → update-5NOHT4SG.js} +4 -4
  100. package/dist/{update-notifier-H55ZK7NU.js → update-notifier-ARA5SPUW.js} +3 -3
  101. package/package.json +1 -1
  102. package/dist/ClaudeContextManager-DQFKIMEP.js +0 -16
  103. package/dist/ClaudeService-CJS32WG2.js +0 -15
  104. package/dist/GitHubService-RPM27GWD.js +0 -12
  105. package/dist/LoomLauncher-4UG2E4CD.js.map +0 -1
  106. package/dist/MetadataManager-WXUVXKUS.js +0 -10
  107. package/dist/PRManager-7DSIMCAD.js +0 -16
  108. package/dist/PromptTemplateManager-72FEOGT6.js +0 -9
  109. package/dist/SettingsMigrationManager-EH3J2TCN.js +0 -10
  110. package/dist/chunk-DKQ4SUII.js.map +0 -1
  111. package/dist/chunk-HABINPX2.js.map +0 -1
  112. package/dist/chunk-RFUOIUQF.js.map +0 -1
  113. package/dist/chunk-T5IIUG4Z.js.map +0 -1
  114. package/dist/chunk-UYVWLISQ.js +0 -113
  115. package/dist/chunk-UYVWLISQ.js.map +0 -1
  116. package/dist/chunk-VAYGNQTE.js +0 -234
  117. package/dist/chunk-VAYGNQTE.js.map +0 -1
  118. package/dist/chunk-VTXCGKV5.js.map +0 -1
  119. package/dist/chunk-WUQQNE63.js.map +0 -1
  120. package/dist/chunk-Z5NXYJIG.js +0 -207
  121. package/dist/chunk-Z5NXYJIG.js.map +0 -1
  122. package/dist/init-F6PFMSU5.js +0 -21
  123. package/dist/neon-helpers-L5CXQ5CT.js +0 -11
  124. package/dist/recap-33NPZ3ZO.js.map +0 -1
  125. /package/dist/{BranchNamingService-GCCWB3LK.js.map → BranchNamingService-B5PVRR7F.js.map} +0 -0
  126. /package/dist/{ClaudeContextManager-DQFKIMEP.js.map → ClaudeContextManager-PQ46VILL.js.map} +0 -0
  127. /package/dist/{ClaudeService-CJS32WG2.js.map → ClaudeService-6OMO552H.js.map} +0 -0
  128. /package/dist/{GitHubService-RPM27GWD.js.map → GitHubService-S2OGUTDR.js.map} +0 -0
  129. /package/dist/{MetadataManager-WXUVXKUS.js.map → MetadataManager-DFI73J3G.js.map} +0 -0
  130. /package/dist/{PRManager-7DSIMCAD.js.map → PRManager-OCSB2HPT.js.map} +0 -0
  131. /package/dist/{PromptTemplateManager-72FEOGT6.js.map → PromptTemplateManager-5GNF7FCP.js.map} +0 -0
  132. /package/dist/{SettingsManager-XPR4TEQL.js.map → SettingsManager-CNYBGXDT.js.map} +0 -0
  133. /package/dist/{SettingsMigrationManager-EH3J2TCN.js.map → SettingsMigrationManager-KZKDG66H.js.map} +0 -0
  134. /package/dist/{chunk-OEGECBFS.js.map → chunk-3PT7RKL5.js.map} +0 -0
  135. /package/dist/{chunk-LN4H3A6A.js.map → chunk-53OMUNUN.js.map} +0 -0
  136. /package/dist/{chunk-THF25ICZ.js.map → chunk-5F6IWWRS.js.map} +0 -0
  137. /package/dist/{chunk-P2ZQ5LKB.js.map → chunk-5IWU3HXE.js.map} +0 -0
  138. /package/dist/{chunk-QIUJPPJQ.js.map → chunk-5TXLVEXT.js.map} +0 -0
  139. /package/dist/{chunk-6UIGZD2N.js.map → chunk-6MLEBAYZ.js.map} +0 -0
  140. /package/dist/{chunk-UNXRACJ7.js.map → chunk-7LSSNB7Y.js.map} +0 -0
  141. /package/dist/{chunk-QHA67Q7A.js.map → chunk-7Q66W4OH.js.map} +0 -0
  142. /package/dist/{chunk-MD6HA5IK.js.map → chunk-B2UO6EYE.js.map} +0 -0
  143. /package/dist/{chunk-YZTDGPFB.js.map → chunk-CFUWQHCJ.js.map} +0 -0
  144. /package/dist/{chunk-UYWAESOT.js.map → chunk-F2PWIRV4.js.map} +0 -0
  145. /package/dist/{chunk-PSFVTBM7.js.map → chunk-FXDYIV3K.js.map} +0 -0
  146. /package/dist/{chunk-CDQEK2WD.js.map → chunk-FXJKNVZW.js.map} +0 -0
  147. /package/dist/{chunk-3CMGCRB5.js.map → chunk-HMMO2LDS.js.map} +0 -0
  148. /package/dist/{chunk-OOU3DKNT.js.map → chunk-IDUICCZY.js.map} +0 -0
  149. /package/dist/{chunk-KO2FOMHL.js.map → chunk-LT3SGBR7.js.map} +0 -0
  150. /package/dist/{chunk-VBFDVGAE.js.map → chunk-LVLRMP7V.js.map} +0 -0
  151. /package/dist/{chunk-RNZMHJK7.js.map → chunk-N4ZJVATC.js.map} +0 -0
  152. /package/dist/{chunk-S65T4O6I.js.map → chunk-QPS6TZUW.js.map} +0 -0
  153. /package/dist/{chunk-RJKMF6BC.js.map → chunk-SHVB3EFE.js.map} +0 -0
  154. /package/dist/{chunk-4YTILIIH.js.map → chunk-VV66DH6T.js.map} +0 -0
  155. /package/dist/{chunk-GVRO4PWE.js.map → chunk-XNNXAAZT.js.map} +0 -0
  156. /package/dist/{chunk-AS2IRKLU.js.map → chunk-YU5HVI6B.js.map} +0 -0
  157. /package/dist/{chunk-SJ2GZ6RF.js.map → chunk-ZX3GTM7O.js.map} +0 -0
  158. /package/dist/{claude-ACVXNB6N.js.map → claude-H33OQMXO.js.map} +0 -0
  159. /package/dist/{color-ZPIIUADB.js.map → color-4TJ4P5EY.js.map} +0 -0
  160. /package/dist/{contribute-RS3DO3WP.js.map → contribute-K7UXBOML.js.map} +0 -0
  161. /package/dist/{git-OQAPUPLP.js.map → git-OV6ADVO7.js.map} +0 -0
  162. /package/dist/{init-F6PFMSU5.js.map → init-CMIRHFSR.js.map} +0 -0
  163. /package/dist/{installation-detector-6R6YOFVZ.js.map → installation-detector-VXZOCL6P.js.map} +0 -0
  164. /package/dist/{neon-helpers-L5CXQ5CT.js.map → neon-helpers-3KBC4A3Y.js.map} +0 -0
  165. /package/dist/{projects-QEAEBAT2.js.map → projects-GVEMCN5R.js.map} +0 -0
  166. /package/dist/{prompt-A7GGRHSY.js.map → prompt-3SAZYRUN.js.map} +0 -0
  167. /package/dist/{remote-73TZ2ADI.js.map → remote-IJAMOEAP.js.map} +0 -0
  168. /package/dist/{test-git-6SAIRBUD.js.map → test-git-CO3BA4BV.js.map} +0 -0
  169. /package/dist/{test-prefix-RLVRK5ZD.js.map → test-prefix-HZYSDQYT.js.map} +0 -0
  170. /package/dist/{test-webserver-VPNLAFZ3.js.map → test-webserver-YVQD42W6.js.map} +0 -0
  171. /package/dist/{update-LETF5ASC.js.map → update-5NOHT4SG.js.map} +0 -0
  172. /package/dist/{update-notifier-H55ZK7NU.js.map → update-notifier-ARA5SPUW.js.map} +0 -0
package/dist/cli.js CHANGED
@@ -1,46 +1,47 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  SessionSummaryService
4
- } from "./chunk-HABINPX2.js";
4
+ } from "./chunk-J7GHNTYK.js";
5
+ import "./chunk-NXMDEL3F.js";
5
6
  import {
6
7
  FirstRunManager,
7
8
  IssueTrackerFactory,
8
9
  generateIssueManagementMcpConfig
9
- } from "./chunk-RFUOIUQF.js";
10
- import "./chunk-QHA67Q7A.js";
10
+ } from "./chunk-66BMJ25W.js";
11
+ import "./chunk-7Q66W4OH.js";
11
12
  import {
12
13
  CLIIsolationManager,
13
14
  DatabaseManager,
14
15
  EnvironmentManager,
15
16
  LoomManager,
16
17
  ResourceCleanup
17
- } from "./chunk-T5IIUG4Z.js";
18
+ } from "./chunk-Z5BM4JWB.js";
18
19
  import {
19
20
  detectPackageManager,
20
21
  installDependencies,
21
22
  runScript
22
- } from "./chunk-VBFDVGAE.js";
23
+ } from "./chunk-LVLRMP7V.js";
23
24
  import {
24
25
  ProcessManager
25
26
  } from "./chunk-VU3QMIP2.js";
26
27
  import {
27
28
  IdentifierParser
28
- } from "./chunk-AS2IRKLU.js";
29
+ } from "./chunk-YU5HVI6B.js";
29
30
  import {
30
31
  createNeonProviderFromSettings
31
- } from "./chunk-UNXRACJ7.js";
32
+ } from "./chunk-7LSSNB7Y.js";
32
33
  import {
33
34
  InitCommand,
34
35
  ShellCompletion
35
- } from "./chunk-4YTILIIH.js";
36
- import "./chunk-UYWAESOT.js";
36
+ } from "./chunk-VV66DH6T.js";
37
+ import "./chunk-F2PWIRV4.js";
37
38
  import {
38
39
  IssueEnhancementService,
39
40
  capitalizeFirstLetter
40
- } from "./chunk-VTXCGKV5.js";
41
+ } from "./chunk-7HIRPCKU.js";
41
42
  import {
42
43
  AgentManager
43
- } from "./chunk-RNZMHJK7.js";
44
+ } from "./chunk-N4ZJVATC.js";
44
45
  import {
45
46
  ProjectCapabilityDetector
46
47
  } from "./chunk-EBISESAP.js";
@@ -50,31 +51,36 @@ import {
50
51
  } from "./chunk-2ZPFJQ3B.js";
51
52
  import {
52
53
  MergeManager
53
- } from "./chunk-GVRO4PWE.js";
54
+ } from "./chunk-XNNXAAZT.js";
54
55
  import {
55
56
  GitWorktreeManager
56
- } from "./chunk-3CMGCRB5.js";
57
+ } from "./chunk-HMMO2LDS.js";
57
58
  import {
58
59
  PRManager
59
- } from "./chunk-P2ZQ5LKB.js";
60
+ } from "./chunk-5IWU3HXE.js";
60
61
  import {
61
62
  openBrowser
62
63
  } from "./chunk-YETJNRQM.js";
63
64
  import {
64
65
  getConfiguredRepoFromSettings,
65
66
  hasMultipleRemotes
66
- } from "./chunk-PSFVTBM7.js";
67
+ } from "./chunk-FXDYIV3K.js";
68
+ import {
69
+ getIdeConfig,
70
+ getInstallHint,
71
+ isIdeAvailable
72
+ } from "./chunk-O7VL5N6S.js";
67
73
  import {
68
74
  ClaudeContextManager
69
- } from "./chunk-S65T4O6I.js";
70
- import "./chunk-CDQEK2WD.js";
71
- import "./chunk-DKQ4SUII.js";
75
+ } from "./chunk-QPS6TZUW.js";
76
+ import "./chunk-FXJKNVZW.js";
77
+ import "./chunk-K5G5SFWY.js";
72
78
  import {
73
79
  extractSettingsOverrides
74
80
  } from "./chunk-GYCR2LOU.js";
75
81
  import {
76
82
  DefaultBranchNamingService
77
- } from "./chunk-QIUJPPJQ.js";
83
+ } from "./chunk-5TXLVEXT.js";
78
84
  import {
79
85
  executeGitCommand,
80
86
  extractIssueNumber,
@@ -86,39 +92,36 @@ import {
86
92
  pushBranchToRemote,
87
93
  removePlaceholderCommitFromHead,
88
94
  removePlaceholderCommitFromHistory
89
- } from "./chunk-LN4H3A6A.js";
95
+ } from "./chunk-53OMUNUN.js";
90
96
  import {
91
97
  SettingsManager
92
- } from "./chunk-OOU3DKNT.js";
98
+ } from "./chunk-IDUICCZY.js";
93
99
  import {
94
100
  MetadataManager
95
- } from "./chunk-YZTDGPFB.js";
101
+ } from "./chunk-CFUWQHCJ.js";
96
102
  import {
97
103
  GitHubService
98
- } from "./chunk-OEGECBFS.js";
99
- import "./chunk-KO2FOMHL.js";
104
+ } from "./chunk-3PT7RKL5.js";
105
+ import "./chunk-LT3SGBR7.js";
100
106
  import {
101
107
  promptCommitAction,
102
108
  promptConfirmation,
103
109
  waitForKeypress
104
- } from "./chunk-SJ2GZ6RF.js";
105
- import "./chunk-WUQQNE63.js";
110
+ } from "./chunk-ZX3GTM7O.js";
111
+ import "./chunk-433MOLAU.js";
106
112
  import {
107
113
  detectClaudeCli,
108
114
  launchClaude
109
- } from "./chunk-RUC7OULH.js";
110
- import "./chunk-VAYGNQTE.js";
111
- import {
112
- loadEnvIntoProcess
113
- } from "./chunk-Z5NXYJIG.js";
115
+ } from "./chunk-AEIMYF4P.js";
114
116
  import {
115
117
  getLogger,
116
118
  withLogger
117
- } from "./chunk-6UIGZD2N.js";
119
+ } from "./chunk-6MLEBAYZ.js";
118
120
  import {
119
121
  createStderrLogger,
122
+ loadEnvIntoProcess,
120
123
  logger
121
- } from "./chunk-UYVWLISQ.js";
124
+ } from "./chunk-VT4PDUYT.js";
122
125
 
123
126
  // src/cli.ts
124
127
  import { program, Option } from "commander";
@@ -173,7 +176,7 @@ async function launchFirstRunSetup() {
173
176
  logger.info(
174
177
  "iloom will now launch an interactive configuration session with Claude."
175
178
  );
176
- const { waitForKeypress: waitForKeypress2 } = await import("./prompt-A7GGRHSY.js");
179
+ const { waitForKeypress: waitForKeypress2 } = await import("./prompt-3SAZYRUN.js");
177
180
  await waitForKeypress2("Press any key to start configuration...");
178
181
  const initCommand = new InitCommand();
179
182
  await initCommand.execute(
@@ -266,7 +269,7 @@ var StartCommand = class {
266
269
  const parsed = await this.parseInput(input.identifier, repo);
267
270
  await this.validateInput(parsed, repo);
268
271
  if (parentLoom) {
269
- const { isInteractiveEnvironment, promptConfirmation: promptConfirmation2 } = await import("./prompt-A7GGRHSY.js");
272
+ const { isInteractiveEnvironment, promptConfirmation: promptConfirmation2 } = await import("./prompt-3SAZYRUN.js");
270
273
  const parentDisplay = parentLoom.type === "issue" ? `issue #${parentLoom.identifier}` : parentLoom.type === "pr" ? `PR #${parentLoom.identifier}` : `branch ${parentLoom.identifier}`;
271
274
  if (input.options.childLoom === true) {
272
275
  getLogger().info(`Creating as child loom of ${parentDisplay} (--child-loom flag)`);
@@ -314,7 +317,7 @@ var StartCommand = class {
314
317
  if (isJsonMode) {
315
318
  throw new Error("JSON mode does not support bypassPermissions confirmation prompt");
316
319
  }
317
- const { promptConfirmation: promptConfirmation2 } = await import("./prompt-A7GGRHSY.js");
320
+ const { promptConfirmation: promptConfirmation2 } = await import("./prompt-3SAZYRUN.js");
318
321
  const confirmed = await promptConfirmation2(
319
322
  "WARNING: bypassPermissions mode will allow Claude to execute all tool calls without confirmation. This can be dangerous. Do you want to proceed?"
320
323
  );
@@ -608,7 +611,11 @@ var AddIssueCommand = class {
608
611
  getLogger().info(`Using GitHub repository: ${repo}`);
609
612
  }
610
613
  }
611
- if (!description || !this.enhancementService.validateDescription(description)) {
614
+ const hasBody = !!body;
615
+ if (!description || !this.enhancementService.validateDescription(description, hasBody)) {
616
+ if (hasBody) {
617
+ throw new Error("Description is required and cannot be empty");
618
+ }
612
619
  throw new Error("Description is required and must be more than 30 characters with at least 3 words");
613
620
  }
614
621
  const issueBody = body ?? await this.enhancementService.enhanceDescription(description);
@@ -1707,7 +1714,7 @@ var FinishCommand = class {
1707
1714
  const neonProvider = createNeonProviderFromSettings(settings);
1708
1715
  const databaseManager = new DatabaseManager(neonProvider, environmentManager, databaseUrlEnvVarName);
1709
1716
  const cliIsolationManager = new CLIIsolationManager();
1710
- const { DefaultBranchNamingService: DefaultBranchNamingService2 } = await import("./BranchNamingService-GCCWB3LK.js");
1717
+ const { DefaultBranchNamingService: DefaultBranchNamingService2 } = await import("./BranchNamingService-B5PVRR7F.js");
1711
1718
  this.loomManager ??= new LoomManager(
1712
1719
  this.gitWorktreeManager,
1713
1720
  this.issueTracker,
@@ -2140,7 +2147,7 @@ var FinishCommand = class {
2140
2147
  `The 'github-draft-pr' merge mode requires a GitHub-compatible issue tracker. Your provider (${this.issueTracker.providerName}) does not support pull requests.`
2141
2148
  );
2142
2149
  }
2143
- const { MetadataManager: MetadataManager2 } = await import("./MetadataManager-WXUVXKUS.js");
2150
+ const { MetadataManager: MetadataManager2 } = await import("./MetadataManager-DFI73J3G.js");
2144
2151
  const metadataManager = new MetadataManager2();
2145
2152
  const metadata = await metadataManager.readMetadata(worktree.path);
2146
2153
  getLogger().debug(`Draft PR mode: worktree=${worktree.path}, draftPrNumber=${(metadata == null ? void 0 : metadata.draftPrNumber) ?? "none"}`);
@@ -2842,7 +2849,7 @@ function parseIssueIdentifier(value) {
2842
2849
  const parsed = parseInt(value, 10);
2843
2850
  return !isNaN(parsed) && String(parsed) === value ? parsed : value;
2844
2851
  }
2845
- program.name("iloom").description(packageJson.description).version(packageJson.version).option("--debug", "Enable debug output (default: based on ILOOM_DEBUG env var)").option("--completion", "Output shell completion script for current shell").option("--set <key=value>", "Override any setting using dot notation (repeatable, e.g., --set workflows.issue.startIde=false)").allowUnknownOption().hook("preAction", async (thisCommand) => {
2852
+ program.name("iloom").description(packageJson.description).version(packageJson.version).option("--debug", "Enable debug output (default: based on ILOOM_DEBUG env var)").option("--completion", "Output shell completion script for current shell").option("--set <key=value>", "Override any setting using dot notation (repeatable, e.g., --set workflows.issue.startIde=false)").allowUnknownOption().hook("preAction", async (thisCommand, actionCommand) => {
2846
2853
  const options = thisCommand.opts();
2847
2854
  const envDebug = process.env.ILOOM_DEBUG === "true";
2848
2855
  const debugEnabled = options.debug !== void 0 ? options.debug : envDebug;
@@ -2853,25 +2860,26 @@ program.name("iloom").description(packageJson.description).version(packageJson.v
2853
2860
  process.exit(0);
2854
2861
  }
2855
2862
  try {
2856
- const { checkAndNotifyUpdate } = await import("./update-notifier-H55ZK7NU.js");
2857
- const { detectInstallationMethod } = await import("./installation-detector-6R6YOFVZ.js");
2863
+ const { checkAndNotifyUpdate } = await import("./update-notifier-ARA5SPUW.js");
2864
+ const { detectInstallationMethod } = await import("./installation-detector-VXZOCL6P.js");
2858
2865
  const installMethod = detectInstallationMethod(__filename);
2859
2866
  await checkAndNotifyUpdate(packageJson.version, packageJson.name, installMethod);
2860
2867
  } catch {
2861
2868
  }
2862
2869
  try {
2863
- const { SettingsMigrationManager } = await import("./SettingsMigrationManager-EH3J2TCN.js");
2870
+ const { SettingsMigrationManager } = await import("./SettingsMigrationManager-KZKDG66H.js");
2864
2871
  const migrationManager = new SettingsMigrationManager();
2865
2872
  await migrationManager.migrateSettingsIfNeeded();
2866
2873
  } catch (error) {
2867
2874
  logger.debug(`Settings migration failed: ${error instanceof Error ? error.message : "Unknown"}`);
2868
2875
  }
2869
- await validateSettingsForCommand(thisCommand);
2870
- await validateGhCliForCommand(thisCommand);
2876
+ await validateSettingsForCommand(actionCommand);
2877
+ await validateGhCliForCommand(actionCommand);
2878
+ await validateIdeForStartCommand(thisCommand);
2871
2879
  });
2872
2880
  async function validateSettingsForCommand(command) {
2873
2881
  var _a, _b;
2874
- const commandName = command.args[0] ?? "";
2882
+ const commandName = command.name();
2875
2883
  const bypassCommands = ["help", "init", "update", "contribute"];
2876
2884
  if (bypassCommands.includes(commandName)) {
2877
2885
  return;
@@ -2897,7 +2905,7 @@ async function validateSettingsForCommand(command) {
2897
2905
  }
2898
2906
  async function validateGhCliForCommand(command) {
2899
2907
  var _a, _b;
2900
- const commandName = command.args[0] ?? "";
2908
+ const commandName = command.name();
2901
2909
  const alwaysRequireGh = ["feedback", "contribute"];
2902
2910
  const conditionallyRequireGh = ["start", "finish", "enhance", "add-issue", "ignite", "spin"];
2903
2911
  const warnOnly = ["init", "list", "rebase", "cleanup", "run", "update", "open"];
@@ -2948,6 +2956,41 @@ async function validateGhCliForCommand(command) {
2948
2956
  }
2949
2957
  }
2950
2958
  }
2959
+ async function validateIdeForStartCommand(command) {
2960
+ var _a, _b;
2961
+ const commandName = command.args[0] ?? "";
2962
+ if (commandName !== "start") {
2963
+ return;
2964
+ }
2965
+ const codeOption = command.opts()["code"];
2966
+ if (codeOption === false) {
2967
+ return;
2968
+ }
2969
+ const settingsManager = new SettingsManager();
2970
+ let settings;
2971
+ try {
2972
+ settings = await settingsManager.loadSettings();
2973
+ } catch {
2974
+ return;
2975
+ }
2976
+ const workflowConfig = (_a = settings.workflows) == null ? void 0 : _a.issue;
2977
+ if ((workflowConfig == null ? void 0 : workflowConfig.startIde) === false && codeOption !== true) {
2978
+ return;
2979
+ }
2980
+ const ideConfig = getIdeConfig(settings.ide);
2981
+ const available = await isIdeAvailable(ideConfig.command);
2982
+ if (!available) {
2983
+ const hint = getInstallHint(((_b = settings.ide) == null ? void 0 : _b.type) ?? "vscode");
2984
+ logger.error(
2985
+ `${ideConfig.name} is configured as your IDE but "${ideConfig.command}" command was not found.`
2986
+ );
2987
+ logger.info("");
2988
+ logger.info(hint);
2989
+ logger.info("");
2990
+ logger.info("Alternatively, use --no-code to skip IDE launch or configure a different IDE in settings.");
2991
+ process.exit(1);
2992
+ }
2993
+ }
2951
2994
  async function autoLaunchInitForMultipleRemotes() {
2952
2995
  var _a, _b;
2953
2996
  logger.info("Multiple git remotes detected, but no GitHub remote is configured.");
@@ -2955,21 +2998,21 @@ async function autoLaunchInitForMultipleRemotes() {
2955
2998
  logger.info("iloom will now launch an interactive configuration session with Claude");
2956
2999
  logger.info("to help you select which remote to use for GitHub operations.");
2957
3000
  logger.info("");
2958
- const { waitForKeypress: waitForKeypress2 } = await import("./prompt-A7GGRHSY.js");
3001
+ const { waitForKeypress: waitForKeypress2 } = await import("./prompt-3SAZYRUN.js");
2959
3002
  await waitForKeypress2("Press any key to start configuration...");
2960
3003
  logger.info("");
2961
3004
  try {
2962
- const { InitCommand: InitCommand2 } = await import("./init-F6PFMSU5.js");
3005
+ const { InitCommand: InitCommand2 } = await import("./init-CMIRHFSR.js");
2963
3006
  const initCommand = new InitCommand2();
2964
3007
  const customInitialMessage = "Help me configure which git remote iloom should use for GitHub operations. I have multiple remotes and need to select the correct one.";
2965
3008
  await initCommand.execute(customInitialMessage);
2966
3009
  logger.info("");
2967
3010
  logger.info("Configuration complete! Continuing with your original command...");
2968
3011
  logger.info("");
2969
- const { SettingsManager: SettingsManager2 } = await import("./SettingsManager-XPR4TEQL.js");
3012
+ const { SettingsManager: SettingsManager2 } = await import("./SettingsManager-CNYBGXDT.js");
2970
3013
  const settingsManager = new SettingsManager2();
2971
3014
  const settings = await settingsManager.loadSettings();
2972
- const { hasMultipleRemotes: hasMultipleRemotes2 } = await import("./remote-73TZ2ADI.js");
3015
+ const { hasMultipleRemotes: hasMultipleRemotes2 } = await import("./remote-IJAMOEAP.js");
2973
3016
  const multipleRemotes = await hasMultipleRemotes2();
2974
3017
  if (multipleRemotes && !((_b = (_a = settings.issueManagement) == null ? void 0 : _a.github) == null ? void 0 : _b.remote)) {
2975
3018
  logger.error("Configuration incomplete: GitHub remote is still not configured.");
@@ -2996,7 +3039,7 @@ program.command("start").alias("new").alias("create").alias("up").description("C
2996
3039
  logger.error("JSON mode requires identifier argument");
2997
3040
  process.exit(1);
2998
3041
  }
2999
- const { promptInput } = await import("./prompt-A7GGRHSY.js");
3042
+ const { promptInput } = await import("./prompt-3SAZYRUN.js");
3000
3043
  finalIdentifier = await promptInput("Enter issue number, PR number (pr/123), or branch name");
3001
3044
  if (!(finalIdentifier == null ? void 0 : finalIdentifier.trim())) {
3002
3045
  logger.error("Identifier is required");
@@ -3024,7 +3067,7 @@ program.command("start").alias("new").alias("create").alias("up").description("C
3024
3067
  await executeAction();
3025
3068
  }
3026
3069
  });
3027
- program.command("add-issue").alias("a").description("Create and enhance GitHub issue without starting workspace").argument("<description>", "Natural language description of the issue (>50 chars, >2 spaces)").option("--body <text>", "Body text for issue (skips AI enhancement)").option("--json", "Output result as JSON").action(async (description, options) => {
3070
+ program.command("add-issue").alias("a").description("Create and enhance GitHub issue without starting workspace").argument("<description>", "Issue title (>30 chars, >2 spaces; or any non-empty text when --body provided)").option("--body <text>", "Body text for issue (skips AI enhancement)").option("--json", "Output result as JSON").action(async (description, options) => {
3028
3071
  const executeAction = async () => {
3029
3072
  try {
3030
3073
  const settingsManager = new SettingsManager();
@@ -3058,9 +3101,9 @@ program.command("add-issue").alias("a").description("Create and enhance GitHub i
3058
3101
  await executeAction();
3059
3102
  }
3060
3103
  });
3061
- program.command("feedback").alias("f").description("Submit feedback/bug report to iloom-cli repository").argument("<description>", "Natural language description of feedback (>50 chars, >2 spaces)").option("--body <text>", "Body text for feedback (added after diagnostics)").action(async (description, options) => {
3104
+ program.command("feedback").alias("f").description("Submit feedback/bug report to iloom-cli repository").argument("<description>", "Feedback title (>30 chars, >2 spaces; or any non-empty text when --body provided)").option("--body <text>", "Body text for feedback (added after diagnostics)").action(async (description, options) => {
3062
3105
  try {
3063
- const { FeedbackCommand } = await import("./feedback-RVIGHBJG.js");
3106
+ const { FeedbackCommand } = await import("./feedback-567ZH2O7.js");
3064
3107
  const command = new FeedbackCommand();
3065
3108
  const feedbackOptions = {};
3066
3109
  if (options.body !== void 0) {
@@ -3140,7 +3183,7 @@ program.command("finish").alias("dn").description("Merge work and cleanup worksp
3140
3183
  });
3141
3184
  program.command("rebase").description("Rebase current branch on main with Claude-assisted conflict resolution").option("-f, --force", "Skip confirmation prompts").option("-n, --dry-run", "Preview actions without executing").action(async (options) => {
3142
3185
  try {
3143
- const { RebaseCommand } = await import("./rebase-WZHHE5LU.js");
3186
+ const { RebaseCommand } = await import("./rebase-6UIHMUWS.js");
3144
3187
  const command = new RebaseCommand();
3145
3188
  await command.execute(options);
3146
3189
  } catch (error) {
@@ -3152,7 +3195,7 @@ program.command("spin").alias("ignite").description("Launch Claude with auto-det
3152
3195
  new Option("--one-shot <mode>", "One-shot automation mode").choices(["default", "noReview", "bypassPermissions"]).default("default")
3153
3196
  ).action(async (options) => {
3154
3197
  try {
3155
- const { IgniteCommand } = await import("./ignite-XJALWFAT.js");
3198
+ const { IgniteCommand } = await import("./ignite-3HB3ZBEW.js");
3156
3199
  const command = new IgniteCommand();
3157
3200
  await command.execute(options.oneShot ?? "default");
3158
3201
  } catch (error) {
@@ -3163,7 +3206,7 @@ program.command("spin").alias("ignite").description("Launch Claude with auto-det
3163
3206
  program.command("open").description("Open workspace in browser or run CLI tool").argument("[identifier]", "Issue number, PR number, or branch name (auto-detected if omitted)").allowUnknownOption().action(async (identifier, _options, command) => {
3164
3207
  try {
3165
3208
  const args = (command == null ? void 0 : command.args) ? command.args.slice(identifier ? 1 : 0) : [];
3166
- const { OpenCommand } = await import("./open-KW4NTLXH.js");
3209
+ const { OpenCommand } = await import("./open-AXE225Z5.js");
3167
3210
  const cmd = new OpenCommand();
3168
3211
  const input = identifier ? { identifier, args } : { args };
3169
3212
  await cmd.execute(input);
@@ -3175,7 +3218,7 @@ program.command("open").description("Open workspace in browser or run CLI tool")
3175
3218
  program.command("run").description("Run CLI tool or open workspace in browser").argument("[identifier]", "Issue number, PR number, or branch name (auto-detected if omitted)").allowUnknownOption().action(async (identifier, _options, command) => {
3176
3219
  try {
3177
3220
  const args = (command == null ? void 0 : command.args) ? command.args.slice(identifier ? 1 : 0) : [];
3178
- const { RunCommand } = await import("./run-HRYQ7TR7.js");
3221
+ const { RunCommand } = await import("./run-H375EYRB.js");
3179
3222
  const cmd = new RunCommand();
3180
3223
  const input = identifier ? { identifier, args } : { args };
3181
3224
  await cmd.execute(input);
@@ -3186,7 +3229,7 @@ program.command("run").description("Run CLI tool or open workspace in browser").
3186
3229
  });
3187
3230
  program.command("dev-server").alias("dev").description("Start dev server for workspace (foreground)").argument("[identifier]", "Issue number, PR number, or branch name (auto-detected if omitted)").option("--json", "Output as JSON").action(async (identifier, options) => {
3188
3231
  try {
3189
- const { DevServerCommand } = await import("./dev-server-ASH7HJVI.js");
3232
+ const { DevServerCommand } = await import("./dev-server-HNBRWGCD.js");
3190
3233
  const cmd = new DevServerCommand();
3191
3234
  await cmd.execute({ identifier, json: options == null ? void 0 : options.json });
3192
3235
  } catch (error) {
@@ -3196,7 +3239,7 @@ program.command("dev-server").alias("dev").description("Start dev server for wor
3196
3239
  });
3197
3240
  program.command("shell").alias("terminal").description("Open interactive shell with workspace environment").argument("[identifier]", "Issue number, PR number, or branch name (auto-detected if omitted)").action(async (identifier) => {
3198
3241
  try {
3199
- const { ShellCommand } = await import("./shell-JMU5XTHW.js");
3242
+ const { ShellCommand } = await import("./shell-33FJCWJQ.js");
3200
3243
  const cmd = new ShellCommand();
3201
3244
  await cmd.execute({ identifier });
3202
3245
  } catch (error) {
@@ -3207,7 +3250,7 @@ program.command("shell").alias("terminal").description("Open interactive shell w
3207
3250
  program.command("cleanup").alias("remove").alias("clean").description("Remove workspaces").argument("[identifier]", "Branch name or issue number to cleanup (auto-detected)").option("-l, --list", "List all worktrees").option("-a, --all", "Remove all worktrees (interactive confirmation)").option("-i, --issue <number>", "Cleanup by issue number", parseInt).option("-f, --force", "Skip confirmations and force removal").option("--dry-run", "Show what would be done without doing it").option("--json", "Output result as JSON").action(async (identifier, options) => {
3208
3251
  const executeAction = async () => {
3209
3252
  try {
3210
- const { CleanupCommand } = await import("./cleanup-MIDJVSIU.js");
3253
+ const { CleanupCommand } = await import("./cleanup-Y5W3CNUV.js");
3211
3254
  const command = new CleanupCommand();
3212
3255
  const input = {
3213
3256
  options: options ?? {}
@@ -3285,7 +3328,7 @@ program.command("list").description("Show active workspaces").option("--json", "
3285
3328
  });
3286
3329
  program.command("projects").description("List configured iloom projects").option("--json", "Output as JSON (default behavior)").action(async (options) => {
3287
3330
  try {
3288
- const { ProjectsCommand } = await import("./projects-QEAEBAT2.js");
3331
+ const { ProjectsCommand } = await import("./projects-GVEMCN5R.js");
3289
3332
  const command = new ProjectsCommand();
3290
3333
  const result = await command.execute(options);
3291
3334
  console.log(JSON.stringify(result, null, 2));
@@ -3296,7 +3339,7 @@ program.command("projects").description("List configured iloom projects").option
3296
3339
  });
3297
3340
  program.command("init").alias("config").description("Initialize iloom configuration").argument("[prompt]", 'Custom initial message to send to Claude (defaults to "Help me configure iloom settings.")').action(async (prompt) => {
3298
3341
  try {
3299
- const { InitCommand: InitCommand2 } = await import("./init-F6PFMSU5.js");
3342
+ const { InitCommand: InitCommand2 } = await import("./init-CMIRHFSR.js");
3300
3343
  const command = new InitCommand2();
3301
3344
  const trimmedPrompt = prompt == null ? void 0 : prompt.trim();
3302
3345
  const customPrompt = trimmedPrompt && trimmedPrompt.length > 0 ? trimmedPrompt : void 0;
@@ -3308,7 +3351,7 @@ program.command("init").alias("config").description("Initialize iloom configurat
3308
3351
  });
3309
3352
  program.command("contribute").description("Set up local development environment for contributing to iloom").action(async () => {
3310
3353
  try {
3311
- const { ContributeCommand } = await import("./contribute-RS3DO3WP.js");
3354
+ const { ContributeCommand } = await import("./contribute-K7UXBOML.js");
3312
3355
  const command = new ContributeCommand();
3313
3356
  await command.execute();
3314
3357
  } catch (error) {
@@ -3318,7 +3361,7 @@ program.command("contribute").description("Set up local development environment
3318
3361
  });
3319
3362
  program.command("update").description("Update iloom-cli to the latest version").option("--dry-run", "Show what would be done without actually updating").action(async (options) => {
3320
3363
  try {
3321
- const { UpdateCommand } = await import("./update-LETF5ASC.js");
3364
+ const { UpdateCommand } = await import("./update-5NOHT4SG.js");
3322
3365
  const command = new UpdateCommand();
3323
3366
  await command.execute(options);
3324
3367
  } catch (error) {
@@ -3328,8 +3371,8 @@ program.command("update").description("Update iloom-cli to the latest version").
3328
3371
  });
3329
3372
  program.command("test-github").description("Test GitHub integration (Issue #3)").argument("<identifier>", "Issue number or PR number").option("--no-claude", "Skip Claude for branch name generation").action(async (identifier, options) => {
3330
3373
  try {
3331
- const { GitHubService: GitHubService2 } = await import("./GitHubService-RPM27GWD.js");
3332
- const { DefaultBranchNamingService: DefaultBranchNamingService2 } = await import("./BranchNamingService-GCCWB3LK.js");
3374
+ const { GitHubService: GitHubService2 } = await import("./GitHubService-S2OGUTDR.js");
3375
+ const { DefaultBranchNamingService: DefaultBranchNamingService2 } = await import("./BranchNamingService-B5PVRR7F.js");
3333
3376
  logger.info("Testing GitHub Integration\n");
3334
3377
  const service = new GitHubService2();
3335
3378
  const branchNaming = new DefaultBranchNamingService2({ useClaude: options.claude !== false });
@@ -3387,10 +3430,10 @@ program.command("test-github").description("Test GitHub integration (Issue #3)")
3387
3430
  });
3388
3431
  program.command("test-claude").description("Test Claude integration (Issue #10)").option("--detect", "Test Claude CLI detection").option("--version", "Get Claude CLI version").option("--branch <title>", "Test branch name generation with given title").option("--issue <number>", "Issue number for branch generation", "123").option("--launch <prompt>", "Launch Claude with a prompt (headless)").option("--interactive", "Launch Claude interactively (requires --launch)").option("--template <name>", "Test template loading").action(async (options) => {
3389
3432
  try {
3390
- const { detectClaudeCli: detectClaudeCli2, getClaudeVersion, generateBranchName, launchClaude: launchClaude2 } = await import("./claude-ACVXNB6N.js");
3391
- const { PromptTemplateManager } = await import("./PromptTemplateManager-72FEOGT6.js");
3392
- const { ClaudeService } = await import("./ClaudeService-CJS32WG2.js");
3393
- const { ClaudeContextManager: ClaudeContextManager2 } = await import("./ClaudeContextManager-DQFKIMEP.js");
3433
+ const { detectClaudeCli: detectClaudeCli2, getClaudeVersion, generateBranchName, launchClaude: launchClaude2 } = await import("./claude-H33OQMXO.js");
3434
+ const { PromptTemplateManager } = await import("./PromptTemplateManager-5GNF7FCP.js");
3435
+ const { ClaudeService } = await import("./ClaudeService-6OMO552H.js");
3436
+ const { ClaudeContextManager: ClaudeContextManager2 } = await import("./ClaudeContextManager-PQ46VILL.js");
3394
3437
  logger.info("Testing Claude Integration\n");
3395
3438
  if (options.detect) {
3396
3439
  logger.info("Detecting Claude CLI...");
@@ -3525,7 +3568,7 @@ program.command("test-claude").description("Test Claude integration (Issue #10)"
3525
3568
  });
3526
3569
  program.command("test-webserver").description("Test if a web server is running on a workspace port").argument("<issue-number>", "Issue number (port will be calculated as 3000 + issue number)", parseInt).option("--kill", "Kill the web server if detected").action(async (issueNumber, options) => {
3527
3570
  try {
3528
- const { TestWebserverCommand } = await import("./test-webserver-VPNLAFZ3.js");
3571
+ const { TestWebserverCommand } = await import("./test-webserver-YVQD42W6.js");
3529
3572
  const command = new TestWebserverCommand();
3530
3573
  await command.execute({ issueNumber, options });
3531
3574
  } catch (error) {
@@ -3538,7 +3581,7 @@ program.command("test-webserver").description("Test if a web server is running o
3538
3581
  });
3539
3582
  program.command("test-git").description("Test Git integration - findMainWorktreePath() function (reads .iloom/settings.json)").action(async () => {
3540
3583
  try {
3541
- const { TestGitCommand } = await import("./test-git-6SAIRBUD.js");
3584
+ const { TestGitCommand } = await import("./test-git-CO3BA4BV.js");
3542
3585
  const command = new TestGitCommand();
3543
3586
  await command.execute();
3544
3587
  } catch (error) {
@@ -3551,7 +3594,7 @@ program.command("test-git").description("Test Git integration - findMainWorktree
3551
3594
  });
3552
3595
  program.command("test-tabs").description("Test iTerm2 dual tab functionality - opens two tabs with test commands").action(async () => {
3553
3596
  try {
3554
- const { TestTabsCommand } = await import("./test-tabs-3SCJWRKT.js");
3597
+ const { TestTabsCommand } = await import("./test-tabs-D3POYOJ5.js");
3555
3598
  const command = new TestTabsCommand();
3556
3599
  await command.execute();
3557
3600
  } catch (error) {
@@ -3564,7 +3607,7 @@ program.command("test-tabs").description("Test iTerm2 dual tab functionality - o
3564
3607
  });
3565
3608
  program.command("test-prefix").description("Test worktree prefix configuration - preview worktree paths (reads .iloom/settings.json)").action(async () => {
3566
3609
  try {
3567
- const { TestPrefixCommand } = await import("./test-prefix-RLVRK5ZD.js");
3610
+ const { TestPrefixCommand } = await import("./test-prefix-HZYSDQYT.js");
3568
3611
  const command = new TestPrefixCommand();
3569
3612
  await command.execute();
3570
3613
  } catch (error) {
@@ -3578,7 +3621,7 @@ program.command("test-prefix").description("Test worktree prefix configuration -
3578
3621
  program.command("summary").description("Generate Claude session summary for a loom").argument("[identifier]", "Issue number, PR number (pr/123), or branch name (auto-detected if omitted)").option("--with-comment", "Post summary as a comment to the issue/PR").option("--json", "Output result as JSON").action(async (identifier, options) => {
3579
3622
  const executeAction = async () => {
3580
3623
  try {
3581
- const { SummaryCommand } = await import("./summary-4SSGGH7N.js");
3624
+ const { SummaryCommand } = await import("./summary-JUMOCNLR.js");
3582
3625
  const command = new SummaryCommand();
3583
3626
  const result = await command.execute({ identifier, options });
3584
3627
  if (options.json && result) {
@@ -3607,7 +3650,7 @@ program.command("summary").description("Generate Claude session summary for a lo
3607
3650
  program.command("recap").description("Get recap for a loom (defaults to current directory)").argument("[identifier]", "Issue number, PR number (pr/123), or branch name (auto-detected if omitted)").option("--json", "Output as JSON with filePath for file watching").action(async (identifier, options) => {
3608
3651
  const executeAction = async () => {
3609
3652
  try {
3610
- const { RecapCommand } = await import("./recap-33NPZ3ZO.js");
3653
+ const { RecapCommand } = await import("./recap-XTBNMEMO.js");
3611
3654
  const command = new RecapCommand();
3612
3655
  const result = await command.execute({ identifier, json: options.json });
3613
3656
  if (options.json && result) {
@@ -3636,8 +3679,8 @@ program.command("recap").description("Get recap for a loom (defaults to current
3636
3679
  program.command("test-neon").description("Test Neon integration and debug configuration").action(async () => {
3637
3680
  var _a;
3638
3681
  try {
3639
- const { SettingsManager: SettingsManager2 } = await import("./SettingsManager-XPR4TEQL.js");
3640
- const { createNeonProviderFromSettings: createNeonProviderFromSettings2 } = await import("./neon-helpers-L5CXQ5CT.js");
3682
+ const { SettingsManager: SettingsManager2 } = await import("./SettingsManager-CNYBGXDT.js");
3683
+ const { createNeonProviderFromSettings: createNeonProviderFromSettings2 } = await import("./neon-helpers-3KBC4A3Y.js");
3641
3684
  logger.info("Testing Neon Integration\n");
3642
3685
  logger.info("1. Settings Configuration:");
3643
3686
  const settingsManager = new SettingsManager2();
@@ -3735,6 +3778,7 @@ if (isRunDirectly) {
3735
3778
  }
3736
3779
  }
3737
3780
  export {
3738
- validateGhCliForCommand
3781
+ validateGhCliForCommand,
3782
+ validateIdeForStartCommand
3739
3783
  };
3740
3784
  //# sourceMappingURL=cli.js.map