@iloom/cli 0.8.1 → 0.8.3

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 (54) hide show
  1. package/README.md +3 -0
  2. package/dist/{PRManager-H4TUZTZL.js → PRManager-A63LT3NF.js} +3 -3
  3. package/dist/README.md +3 -0
  4. package/dist/{build-H4DK3DMQ.js → build-Z3WCIKPD.js} +3 -3
  5. package/dist/{chunk-A4UQY3M2.js → chunk-3FC3VNEX.js} +2 -2
  6. package/dist/{chunk-EQOFNPEY.js → chunk-44Y5IF7P.js} +4 -4
  7. package/dist/{chunk-ECP77QGE.js → chunk-A7XHHUEV.js} +4 -4
  8. package/dist/{chunk-RODL2HVY.js → chunk-FPNSFP6K.js} +6 -6
  9. package/dist/{chunk-NR64HNF7.js → chunk-GWONJE3X.js} +6 -6
  10. package/dist/{chunk-BCQDYAOJ.js → chunk-O6LECMT6.js} +4 -4
  11. package/dist/{cleanup-OGE7V7AD.js → cleanup-NWNKWPUY.js} +3 -3
  12. package/dist/cli.js +55 -37
  13. package/dist/cli.js.map +1 -1
  14. package/dist/{compile-ZOAODFN2.js → compile-UANHMNTS.js} +3 -3
  15. package/dist/{dev-server-TYYJM3XA.js → dev-server-TO7RLYJI.js} +5 -5
  16. package/dist/{feedback-HZVLOTQJ.js → feedback-7ZZI6RC5.js} +2 -2
  17. package/dist/{ignite-ZO7SGUKP.js → ignite-JBX3BUDE.js} +25 -4
  18. package/dist/ignite-JBX3BUDE.js.map +1 -0
  19. package/dist/{init-MZBIXQ7V.js → init-XXDIB2UJ.js} +4 -4
  20. package/dist/{lint-MDVUV3W2.js → lint-XPODLDVA.js} +3 -3
  21. package/dist/{open-2LPZ7XXW.js → open-M2SUR74Y.js} +5 -5
  22. package/dist/{plan-PIME6UNY.js → plan-FB4AOJ2Q.js} +6 -6
  23. package/dist/prompts/issue-prompt.txt +5 -5
  24. package/dist/prompts/regular-prompt.txt +5 -5
  25. package/dist/{rebase-7YS3N274.js → rebase-4FNRBW3H.js} +3 -3
  26. package/dist/{run-XPGCMFFO.js → run-GZNHRJB2.js} +5 -5
  27. package/dist/{summary-C5VVSJAJ.js → summary-Z4F7YFXE.js} +3 -3
  28. package/dist/{test-N2725YRI.js → test-LBSPYIJW.js} +3 -3
  29. package/dist/vscode-LH3VSQ2W.js +164 -0
  30. package/dist/vscode-LH3VSQ2W.js.map +1 -0
  31. package/dist/vscode-announcement-EQ2SKK3T.js +46 -0
  32. package/dist/vscode-announcement-EQ2SKK3T.js.map +1 -0
  33. package/package.json +2 -1
  34. package/dist/ignite-ZO7SGUKP.js.map +0 -1
  35. /package/dist/{PRManager-H4TUZTZL.js.map → PRManager-A63LT3NF.js.map} +0 -0
  36. /package/dist/{build-H4DK3DMQ.js.map → build-Z3WCIKPD.js.map} +0 -0
  37. /package/dist/{chunk-A4UQY3M2.js.map → chunk-3FC3VNEX.js.map} +0 -0
  38. /package/dist/{chunk-EQOFNPEY.js.map → chunk-44Y5IF7P.js.map} +0 -0
  39. /package/dist/{chunk-ECP77QGE.js.map → chunk-A7XHHUEV.js.map} +0 -0
  40. /package/dist/{chunk-RODL2HVY.js.map → chunk-FPNSFP6K.js.map} +0 -0
  41. /package/dist/{chunk-NR64HNF7.js.map → chunk-GWONJE3X.js.map} +0 -0
  42. /package/dist/{chunk-BCQDYAOJ.js.map → chunk-O6LECMT6.js.map} +0 -0
  43. /package/dist/{cleanup-OGE7V7AD.js.map → cleanup-NWNKWPUY.js.map} +0 -0
  44. /package/dist/{compile-ZOAODFN2.js.map → compile-UANHMNTS.js.map} +0 -0
  45. /package/dist/{dev-server-TYYJM3XA.js.map → dev-server-TO7RLYJI.js.map} +0 -0
  46. /package/dist/{feedback-HZVLOTQJ.js.map → feedback-7ZZI6RC5.js.map} +0 -0
  47. /package/dist/{init-MZBIXQ7V.js.map → init-XXDIB2UJ.js.map} +0 -0
  48. /package/dist/{lint-MDVUV3W2.js.map → lint-XPODLDVA.js.map} +0 -0
  49. /package/dist/{open-2LPZ7XXW.js.map → open-M2SUR74Y.js.map} +0 -0
  50. /package/dist/{plan-PIME6UNY.js.map → plan-FB4AOJ2Q.js.map} +0 -0
  51. /package/dist/{rebase-7YS3N274.js.map → rebase-4FNRBW3H.js.map} +0 -0
  52. /package/dist/{run-XPGCMFFO.js.map → run-GZNHRJB2.js.map} +0 -0
  53. /package/dist/{summary-C5VVSJAJ.js.map → summary-Z4F7YFXE.js.map} +0 -0
  54. /package/dist/{test-N2725YRI.js.map → test-LBSPYIJW.js.map} +0 -0
package/README.md CHANGED
@@ -9,6 +9,8 @@ iloom
9
9
 
10
10
  </div>
11
11
 
12
+ > **VS Code extension now available!** Run `il vscode` to install. Get the recap panel to see AI decisions, risks, and assumptions in real-time, plus the loom explorer to manage and switch between active projects and tasks.
13
+
12
14
  <div align="center">
13
15
  <img width="600" alt="iloom-ai-screenshot" src="https://raw.githubusercontent.com/iloom-ai/iloom-cli/main/assets/iloom-screenshot.png" />
14
16
  <div>iloom in action: Scale understanding, not just output.</div>
@@ -146,6 +148,7 @@ Command Reference
146
148
  | `il projects` | | List configured projects (JSON output). |
147
149
  | `il spin` | | Launch Claude inside the current loom with context auto-detected. |
148
150
  | `il open` | `run` | Open loom in browser (web) or run your CLI tool. |
151
+ | `il vscode` | | Install iloom VS Code extension and open workspace in VS Code. |
149
152
  | `il dev-server` | `dev` | Start dev server in foreground for a workspace. |
150
153
  | `il build` | | Run the build script for a workspace. |
151
154
  | `il lint` | | Run the lint script for a workspace. |
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  PRManager
4
- } from "./chunk-EQOFNPEY.js";
5
- import "./chunk-YETJNRQM.js";
4
+ } from "./chunk-44Y5IF7P.js";
6
5
  import "./chunk-UDZCTLD6.js";
7
6
  import "./chunk-RNBIISBZ.js";
7
+ import "./chunk-YETJNRQM.js";
8
8
  import "./chunk-FXDYIV3K.js";
9
9
  import "./chunk-THS5L54H.js";
10
10
  import "./chunk-IGKPPACU.js";
@@ -13,4 +13,4 @@ import "./chunk-VT4PDUYT.js";
13
13
  export {
14
14
  PRManager
15
15
  };
16
- //# sourceMappingURL=PRManager-H4TUZTZL.js.map
16
+ //# sourceMappingURL=PRManager-A63LT3NF.js.map
package/dist/README.md CHANGED
@@ -9,6 +9,8 @@ iloom
9
9
 
10
10
  </div>
11
11
 
12
+ > **VS Code extension now available!** Run `il vscode` to install. Get the recap panel to see AI decisions, risks, and assumptions in real-time, plus the loom explorer to manage and switch between active projects and tasks.
13
+
12
14
  <div align="center">
13
15
  <img width="600" alt="iloom-ai-screenshot" src="https://raw.githubusercontent.com/iloom-ai/iloom-cli/main/assets/iloom-screenshot.png" />
14
16
  <div>iloom in action: Scale understanding, not just output.</div>
@@ -146,6 +148,7 @@ Command Reference
146
148
  | `il projects` | | List configured projects (JSON output). |
147
149
  | `il spin` | | Launch Claude inside the current loom with context auto-detected. |
148
150
  | `il open` | `run` | Open loom in browser (web) or run your CLI tool. |
151
+ | `il vscode` | | Install iloom VS Code extension and open workspace in VS Code. |
149
152
  | `il dev-server` | `dev` | Start dev server in foreground for a workspace. |
150
153
  | `il build` | | Run the build script for a workspace. |
151
154
  | `il lint` | | Run the lint script for a workspace. |
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ScriptCommandBase
4
- } from "./chunk-BCQDYAOJ.js";
5
- import "./chunk-TVH67KEO.js";
4
+ } from "./chunk-O6LECMT6.js";
6
5
  import "./chunk-RD7I2Q2F.js";
6
+ import "./chunk-TVH67KEO.js";
7
7
  import "./chunk-HSGZW3ID.js";
8
8
  import "./chunk-XPKN3QWY.js";
9
9
  import "./chunk-GDS2HXSW.js";
@@ -24,4 +24,4 @@ var BuildCommand = class extends ScriptCommandBase {
24
24
  export {
25
25
  BuildCommand
26
26
  };
27
- //# sourceMappingURL=build-H4DK3DMQ.js.map
27
+ //# sourceMappingURL=build-Z3WCIKPD.js.map
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  InitCommand
4
- } from "./chunk-RODL2HVY.js";
4
+ } from "./chunk-FPNSFP6K.js";
5
5
  import {
6
6
  FirstRunManager
7
7
  } from "./chunk-Q7POFB5Q.js";
@@ -72,4 +72,4 @@ export {
72
72
  needsFirstRunSetup,
73
73
  launchFirstRunSetup
74
74
  };
75
- //# sourceMappingURL=chunk-A4UQY3M2.js.map
75
+ //# sourceMappingURL=chunk-3FC3VNEX.js.map
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
- import {
3
- openBrowser
4
- } from "./chunk-YETJNRQM.js";
5
2
  import {
6
3
  IssueManagementProviderFactory
7
4
  } from "./chunk-UDZCTLD6.js";
5
+ import {
6
+ openBrowser
7
+ } from "./chunk-YETJNRQM.js";
8
8
  import {
9
9
  getConfiguredRepoFromSettings,
10
10
  getEffectivePRTargetRemote,
@@ -358,4 +358,4 @@ Then retry: il start`
358
358
  export {
359
359
  PRManager
360
360
  };
361
- //# sourceMappingURL=chunk-EQOFNPEY.js.map
361
+ //# sourceMappingURL=chunk-44Y5IF7P.js.map
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
- import {
3
- ProjectCapabilityDetector
4
- } from "./chunk-7GLZVDPQ.js";
5
2
  import {
6
3
  detectPackageManager,
7
4
  runScript
8
5
  } from "./chunk-RD7I2Q2F.js";
6
+ import {
7
+ ProjectCapabilityDetector
8
+ } from "./chunk-7GLZVDPQ.js";
9
9
  import {
10
10
  getPackageConfig,
11
11
  hasScript
@@ -469,4 +469,4 @@ export {
469
469
  MergeManager,
470
470
  BuildRunner
471
471
  };
472
- //# sourceMappingURL=chunk-ECP77QGE.js.map
472
+ //# sourceMappingURL=chunk-A7XHHUEV.js.map
@@ -1,16 +1,16 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
- FirstRunManager
4
- } from "./chunk-Q7POFB5Q.js";
3
+ GitWorktreeManager
4
+ } from "./chunk-HSGZW3ID.js";
5
5
  import {
6
6
  SettingsMigrationManager
7
7
  } from "./chunk-BYUMEDDD.js";
8
+ import {
9
+ FirstRunManager
10
+ } from "./chunk-Q7POFB5Q.js";
8
11
  import {
9
12
  AgentManager
10
13
  } from "./chunk-4BSXZ5YZ.js";
11
- import {
12
- GitWorktreeManager
13
- } from "./chunk-HSGZW3ID.js";
14
14
  import {
15
15
  parseGitRemotes
16
16
  } from "./chunk-FXDYIV3K.js";
@@ -712,4 +712,4 @@ export {
712
712
  ShellCompletion,
713
713
  InitCommand
714
714
  };
715
- //# sourceMappingURL=chunk-RODL2HVY.js.map
715
+ //# sourceMappingURL=chunk-FPNSFP6K.js.map
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
- import {
3
- calculatePortForBranch,
4
- calculatePortFromIdentifier
5
- } from "./chunk-52MVUK5V.js";
6
2
  import {
7
3
  installDependencies,
8
4
  runScript
9
5
  } from "./chunk-RD7I2Q2F.js";
6
+ import {
7
+ calculatePortForBranch,
8
+ calculatePortFromIdentifier
9
+ } from "./chunk-52MVUK5V.js";
10
10
  import {
11
11
  getPackageConfig,
12
12
  hasScript
@@ -341,7 +341,7 @@ var LoomManager = class {
341
341
  getLogger().debug("Placeholder commit created");
342
342
  getLogger().info("Pushing branch to remote for draft PR...");
343
343
  await pushBranchToRemote(branchName, worktreePath, { dryRun: false });
344
- const { PRManager } = await import("./PRManager-H4TUZTZL.js");
344
+ const { PRManager } = await import("./PRManager-A63LT3NF.js");
345
345
  const prManager = new PRManager(settingsData);
346
346
  const prTitle = (issueData == null ? void 0 : issueData.title) ?? `Work on ${branchName}`;
347
347
  const prBody = `PR for issue #${input.identifier}
@@ -2441,4 +2441,4 @@ export {
2441
2441
  DatabaseManager,
2442
2442
  ResourceCleanup
2443
2443
  };
2444
- //# sourceMappingURL=chunk-NR64HNF7.js.map
2444
+ //# sourceMappingURL=chunk-GWONJE3X.js.map
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
- import {
3
- IdentifierParser
4
- } from "./chunk-TVH67KEO.js";
5
2
  import {
6
3
  runScript
7
4
  } from "./chunk-RD7I2Q2F.js";
5
+ import {
6
+ IdentifierParser
7
+ } from "./chunk-TVH67KEO.js";
8
8
  import {
9
9
  GitWorktreeManager
10
10
  } from "./chunk-HSGZW3ID.js";
@@ -156,4 +156,4 @@ var ScriptCommandBase = class {
156
156
  export {
157
157
  ScriptCommandBase
158
158
  };
159
- //# sourceMappingURL=chunk-BCQDYAOJ.js.map
159
+ //# sourceMappingURL=chunk-O6LECMT6.js.map
@@ -5,10 +5,11 @@ import {
5
5
  EnvironmentManager,
6
6
  LoomManager,
7
7
  ResourceCleanup
8
- } from "./chunk-NR64HNF7.js";
8
+ } from "./chunk-GWONJE3X.js";
9
9
  import {
10
10
  ProcessManager
11
11
  } from "./chunk-XHNACIHO.js";
12
+ import "./chunk-RD7I2Q2F.js";
12
13
  import "./chunk-52MVUK5V.js";
13
14
  import {
14
15
  IdentifierParser
@@ -16,7 +17,6 @@ import {
16
17
  import {
17
18
  createNeonProviderFromSettings
18
19
  } from "./chunk-7ZEHSSUP.js";
19
- import "./chunk-RD7I2Q2F.js";
20
20
  import {
21
21
  GitWorktreeManager
22
22
  } from "./chunk-HSGZW3ID.js";
@@ -484,4 +484,4 @@ var CleanupCommand = class {
484
484
  export {
485
485
  CleanupCommand
486
486
  };
487
- //# sourceMappingURL=cleanup-OGE7V7AD.js.map
487
+ //# sourceMappingURL=cleanup-NWNKWPUY.js.map
package/dist/cli.js CHANGED
@@ -9,21 +9,29 @@ import {
9
9
  EnvironmentManager,
10
10
  LoomManager,
11
11
  ResourceCleanup
12
- } from "./chunk-NR64HNF7.js";
12
+ } from "./chunk-GWONJE3X.js";
13
13
  import {
14
14
  launchFirstRunSetup,
15
15
  needsFirstRunSetup
16
- } from "./chunk-A4UQY3M2.js";
16
+ } from "./chunk-3FC3VNEX.js";
17
+ import {
18
+ CommitManager,
19
+ UserAbortedCommitError,
20
+ ValidationRunner
21
+ } from "./chunk-SSASIBDJ.js";
17
22
  import {
18
23
  BuildRunner,
19
24
  MergeManager
20
- } from "./chunk-ECP77QGE.js";
25
+ } from "./chunk-A7XHHUEV.js";
21
26
  import {
22
27
  IssueTrackerFactory
23
28
  } from "./chunk-SC6X5EBG.js";
24
29
  import {
25
30
  ProcessManager
26
31
  } from "./chunk-XHNACIHO.js";
32
+ import {
33
+ installDependencies
34
+ } from "./chunk-RD7I2Q2F.js";
27
35
  import "./chunk-52MVUK5V.js";
28
36
  import {
29
37
  IdentifierParser,
@@ -34,9 +42,12 @@ import {
34
42
  } from "./chunk-7ZEHSSUP.js";
35
43
  import {
36
44
  ShellCompletion
37
- } from "./chunk-RODL2HVY.js";
38
- import "./chunk-Q7POFB5Q.js";
45
+ } from "./chunk-FPNSFP6K.js";
46
+ import {
47
+ GitWorktreeManager
48
+ } from "./chunk-HSGZW3ID.js";
39
49
  import "./chunk-BYUMEDDD.js";
50
+ import "./chunk-Q7POFB5Q.js";
40
51
  import {
41
52
  IssueEnhancementService,
42
53
  capitalizeFirstLetter
@@ -45,33 +56,22 @@ import "./chunk-XJHQVOT6.js";
45
56
  import {
46
57
  ProjectCapabilityDetector
47
58
  } from "./chunk-7GLZVDPQ.js";
59
+ import "./chunk-XPKN3QWY.js";
48
60
  import {
49
61
  AgentManager
50
62
  } from "./chunk-4BSXZ5YZ.js";
51
- import {
52
- CommitManager,
53
- UserAbortedCommitError,
54
- ValidationRunner
55
- } from "./chunk-SSASIBDJ.js";
56
- import {
57
- installDependencies
58
- } from "./chunk-RD7I2Q2F.js";
59
- import {
60
- GitWorktreeManager
61
- } from "./chunk-HSGZW3ID.js";
62
- import "./chunk-XPKN3QWY.js";
63
63
  import {
64
64
  PRManager
65
- } from "./chunk-EQOFNPEY.js";
66
- import {
67
- openBrowser
68
- } from "./chunk-YETJNRQM.js";
65
+ } from "./chunk-44Y5IF7P.js";
69
66
  import {
70
67
  IssueManagementProviderFactory
71
68
  } from "./chunk-UDZCTLD6.js";
72
69
  import {
73
70
  getLinearChildIssues
74
71
  } from "./chunk-RNBIISBZ.js";
72
+ import {
73
+ openBrowser
74
+ } from "./chunk-YETJNRQM.js";
75
75
  import {
76
76
  getConfiguredRepoFromSettings,
77
77
  hasMultipleRemotes
@@ -355,7 +355,7 @@ var StartCommand = class {
355
355
  throw new Error("Missing required argument: identifier");
356
356
  }
357
357
  const spaceCount = (trimmedIdentifier.match(/ /g) ?? []).length;
358
- if (trimmedIdentifier.length > 25 && spaceCount >= 1) {
358
+ if (trimmedIdentifier.length > 15 && spaceCount >= 1) {
359
359
  return {
360
360
  type: "description",
361
361
  originalInput: hasLeadingSpace ? " " + trimmedIdentifier : trimmedIdentifier
@@ -2260,6 +2260,15 @@ program.name("iloom").description(packageJson.description).version(packageJson.v
2260
2260
  await validateSettingsForCommand(actionCommand);
2261
2261
  await validateGhCliForCommand(actionCommand);
2262
2262
  await validateIdeForStartCommand(actionCommand);
2263
+ }).hook("postAction", async (_thisCommand, actionCommand) => {
2264
+ try {
2265
+ const { showVSCodeAnnouncementIfNeeded } = await import("./vscode-announcement-EQ2SKK3T.js");
2266
+ const jsonMode = actionCommand.opts().json === true;
2267
+ if (!jsonMode) {
2268
+ await showVSCodeAnnouncementIfNeeded(actionCommand.name());
2269
+ }
2270
+ } catch {
2271
+ }
2263
2272
  });
2264
2273
  async function validateSettingsForCommand(command) {
2265
2274
  var _a, _b;
@@ -2386,7 +2395,7 @@ async function autoLaunchInitForMultipleRemotes() {
2386
2395
  await waitForKeypress2("Press any key to start configuration...");
2387
2396
  logger.info("");
2388
2397
  try {
2389
- const { InitCommand } = await import("./init-MZBIXQ7V.js");
2398
+ const { InitCommand } = await import("./init-XXDIB2UJ.js");
2390
2399
  const initCommand = new InitCommand();
2391
2400
  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.";
2392
2401
  await initCommand.execute(customInitialMessage);
@@ -2487,7 +2496,7 @@ program.command("add-issue").alias("a").description("Create and enhance GitHub i
2487
2496
  });
2488
2497
  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) => {
2489
2498
  try {
2490
- const { FeedbackCommand } = await import("./feedback-HZVLOTQJ.js");
2499
+ const { FeedbackCommand } = await import("./feedback-7ZZI6RC5.js");
2491
2500
  const command = new FeedbackCommand();
2492
2501
  const feedbackOptions = {};
2493
2502
  if (options.body !== void 0) {
@@ -2607,7 +2616,7 @@ program.command("commit").alias("c").description("Commit all uncommitted files w
2607
2616
  });
2608
2617
  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) => {
2609
2618
  try {
2610
- const { RebaseCommand } = await import("./rebase-7YS3N274.js");
2619
+ const { RebaseCommand } = await import("./rebase-4FNRBW3H.js");
2611
2620
  const command = new RebaseCommand();
2612
2621
  await command.execute(options);
2613
2622
  } catch (error) {
@@ -2619,7 +2628,7 @@ program.command("spin").alias("ignite").description("Launch Claude with auto-det
2619
2628
  new Option("--one-shot <mode>", "One-shot automation mode").choices(["default", "noReview", "bypassPermissions"])
2620
2629
  ).action(async (options) => {
2621
2630
  try {
2622
- const { IgniteCommand } = await import("./ignite-ZO7SGUKP.js");
2631
+ const { IgniteCommand } = await import("./ignite-JBX3BUDE.js");
2623
2632
  const command = new IgniteCommand();
2624
2633
  await command.execute(options.oneShot);
2625
2634
  } catch (error) {
@@ -2630,7 +2639,7 @@ program.command("spin").alias("ignite").description("Launch Claude with auto-det
2630
2639
  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) => {
2631
2640
  try {
2632
2641
  const args = (command == null ? void 0 : command.args) ? command.args.slice(identifier ? 1 : 0) : [];
2633
- const { OpenCommand } = await import("./open-2LPZ7XXW.js");
2642
+ const { OpenCommand } = await import("./open-M2SUR74Y.js");
2634
2643
  const cmd = new OpenCommand();
2635
2644
  const input = identifier ? { identifier, args } : { args };
2636
2645
  await cmd.execute(input);
@@ -2642,7 +2651,7 @@ program.command("open").description("Open workspace in browser or run CLI tool")
2642
2651
  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) => {
2643
2652
  try {
2644
2653
  const args = (command == null ? void 0 : command.args) ? command.args.slice(identifier ? 1 : 0) : [];
2645
- const { RunCommand } = await import("./run-XPGCMFFO.js");
2654
+ const { RunCommand } = await import("./run-GZNHRJB2.js");
2646
2655
  const cmd = new RunCommand();
2647
2656
  const input = identifier ? { identifier, args } : { args };
2648
2657
  await cmd.execute(input);
@@ -2651,9 +2660,18 @@ program.command("run").description("Run CLI tool or open workspace in browser").
2651
2660
  process.exit(1);
2652
2661
  }
2653
2662
  });
2663
+ program.command("vscode").description("Install iloom VS Code extension and open workspace in VS Code").argument("[identifier]", "Issue number, PR number, or branch name (auto-detected if omitted)").option("--no-wait", "Skip keypress prompt and open immediately").action(async (identifier, options) => {
2664
+ try {
2665
+ const { VSCodeCommand } = await import("./vscode-LH3VSQ2W.js");
2666
+ const cmd = new VSCodeCommand();
2667
+ await cmd.execute({ identifier, wait: options == null ? void 0 : options.wait });
2668
+ } catch (error) {
2669
+ throw new Error(`Failed to open VS Code: ${error instanceof Error ? error.message : "Unknown error"}`);
2670
+ }
2671
+ });
2654
2672
  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) => {
2655
2673
  try {
2656
- const { DevServerCommand } = await import("./dev-server-TYYJM3XA.js");
2674
+ const { DevServerCommand } = await import("./dev-server-TO7RLYJI.js");
2657
2675
  const cmd = new DevServerCommand();
2658
2676
  await cmd.execute({ identifier, json: options == null ? void 0 : options.json });
2659
2677
  } catch (error) {
@@ -2673,7 +2691,7 @@ program.command("shell").alias("terminal").description("Open interactive shell w
2673
2691
  });
2674
2692
  program.command("build").description("Run the build script").argument("[identifier]", "Issue number, PR number, or branch name (auto-detected if omitted)").action(async (identifier) => {
2675
2693
  try {
2676
- const { BuildCommand } = await import("./build-H4DK3DMQ.js");
2694
+ const { BuildCommand } = await import("./build-Z3WCIKPD.js");
2677
2695
  const cmd = new BuildCommand();
2678
2696
  await cmd.execute(identifier ? { identifier } : {});
2679
2697
  } catch (error) {
@@ -2683,7 +2701,7 @@ program.command("build").description("Run the build script").argument("[identifi
2683
2701
  });
2684
2702
  program.command("lint").description("Run the lint script").argument("[identifier]", "Issue number, PR number, or branch name (auto-detected if omitted)").action(async (identifier) => {
2685
2703
  try {
2686
- const { LintCommand } = await import("./lint-MDVUV3W2.js");
2704
+ const { LintCommand } = await import("./lint-XPODLDVA.js");
2687
2705
  const cmd = new LintCommand();
2688
2706
  await cmd.execute(identifier ? { identifier } : {});
2689
2707
  } catch (error) {
@@ -2693,7 +2711,7 @@ program.command("lint").description("Run the lint script").argument("[identifier
2693
2711
  });
2694
2712
  program.command("test").description("Run the test script").argument("[identifier]", "Issue number, PR number, or branch name (auto-detected if omitted)").action(async (identifier) => {
2695
2713
  try {
2696
- const { TestCommand } = await import("./test-N2725YRI.js");
2714
+ const { TestCommand } = await import("./test-LBSPYIJW.js");
2697
2715
  const cmd = new TestCommand();
2698
2716
  await cmd.execute(identifier ? { identifier } : {});
2699
2717
  } catch (error) {
@@ -2703,7 +2721,7 @@ program.command("test").description("Run the test script").argument("[identifier
2703
2721
  });
2704
2722
  program.command("compile").alias("typecheck").description("Run the compile or typecheck script (prefers compile if both exist)").argument("[identifier]", "Issue number, PR number, or branch name (auto-detected if omitted)").action(async (identifier) => {
2705
2723
  try {
2706
- const { CompileCommand } = await import("./compile-ZOAODFN2.js");
2724
+ const { CompileCommand } = await import("./compile-UANHMNTS.js");
2707
2725
  const cmd = new CompileCommand();
2708
2726
  await cmd.execute(identifier ? { identifier } : {});
2709
2727
  } catch (error) {
@@ -2714,7 +2732,7 @@ program.command("compile").alias("typecheck").description("Run the compile or ty
2714
2732
  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").option("--defer <ms>", "Wait specified milliseconds before cleanup", parseInt).action(async (identifier, options) => {
2715
2733
  const executeAction = async () => {
2716
2734
  try {
2717
- const { CleanupCommand } = await import("./cleanup-OGE7V7AD.js");
2735
+ const { CleanupCommand } = await import("./cleanup-NWNKWPUY.js");
2718
2736
  const command = new CleanupCommand();
2719
2737
  const input = {
2720
2738
  options: options ?? {}
@@ -3041,7 +3059,7 @@ program.command("projects").description("List configured iloom projects").option
3041
3059
  });
3042
3060
  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) => {
3043
3061
  try {
3044
- const { InitCommand } = await import("./init-MZBIXQ7V.js");
3062
+ const { InitCommand } = await import("./init-XXDIB2UJ.js");
3045
3063
  const command = new InitCommand();
3046
3064
  const trimmedPrompt = prompt == null ? void 0 : prompt.trim();
3047
3065
  const customPrompt = trimmedPrompt && trimmedPrompt.length > 0 ? trimmedPrompt : void 0;
@@ -3053,7 +3071,7 @@ program.command("init").alias("config").description("Initialize iloom configurat
3053
3071
  });
3054
3072
  program.command("plan").description("Launch interactive planning session with Architect persona").argument("[prompt]", "Initial planning prompt or topic").option("--model <model>", "Model to use (default: opus)").option("--yolo", "Enable autonomous mode - Claude proceeds without user interaction").option("--planner <provider>", "AI provider for planning: claude, gemini, codex (default: claude)").option("--reviewer <provider>", "AI provider for review: claude, gemini, codex, none (default: none)").action(async (prompt, options) => {
3055
3073
  try {
3056
- const { PlanCommand } = await import("./plan-PIME6UNY.js");
3074
+ const { PlanCommand } = await import("./plan-FB4AOJ2Q.js");
3057
3075
  const command = new PlanCommand();
3058
3076
  await command.execute(prompt, options == null ? void 0 : options.model, options == null ? void 0 : options.yolo, options == null ? void 0 : options.planner, options == null ? void 0 : options.reviewer);
3059
3077
  } catch (error) {
@@ -3333,7 +3351,7 @@ program.command("test-prefix").description("Test worktree prefix configuration -
3333
3351
  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) => {
3334
3352
  const executeAction = async () => {
3335
3353
  try {
3336
- const { SummaryCommand } = await import("./summary-C5VVSJAJ.js");
3354
+ const { SummaryCommand } = await import("./summary-Z4F7YFXE.js");
3337
3355
  const command = new SummaryCommand();
3338
3356
  const result = await command.execute({ identifier, options });
3339
3357
  if (options.json && result) {