@iloom/cli 0.9.0 → 0.9.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 (126) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +21 -2
  3. package/dist/{ClaudeContextManager-X2Y72GRL.js → ClaudeContextManager-HR5JQKAI.js} +4 -4
  4. package/dist/{ClaudeService-7P32TTES.js → ClaudeService-TK7FMC2X.js} +3 -3
  5. package/dist/{GitHubService-ACZVNTJE.js → GitHubService-TGWJN4V4.js} +3 -3
  6. package/dist/{LoomLauncher-3I47SUPV.js → LoomLauncher-73NXL2CL.js} +4 -4
  7. package/dist/README.md +21 -2
  8. package/dist/{SettingsManager-QR7V2IW2.js → SettingsManager-AW3JTJHD.js} +2 -2
  9. package/dist/{build-IC4CJRMP.js → build-THZI572G.js} +6 -6
  10. package/dist/{chunk-Z6F5CUS6.js → chunk-3I4ONZRT.js} +3 -3
  11. package/dist/{chunk-THS5L54H.js → chunk-4CO6KG5S.js} +50 -3
  12. package/dist/chunk-4CO6KG5S.js.map +1 -0
  13. package/dist/{chunk-MZPRBNYC.js → chunk-6IIL5M2L.js} +2 -2
  14. package/dist/{chunk-2JPXGGP4.js → chunk-A7NJF73J.js} +2 -2
  15. package/dist/{chunk-H6ST2TGP.js → chunk-AR5QKYNE.js} +3 -3
  16. package/dist/{chunk-PL2FDYEK.js → chunk-CWRI4JC3.js} +2 -2
  17. package/dist/{chunk-I23OQB4Y.js → chunk-DGG2VY7B.js} +6 -5
  18. package/dist/chunk-DGG2VY7B.js.map +1 -0
  19. package/dist/{chunk-RNBIISBZ.js → chunk-FJDRTVJX.js} +50 -5
  20. package/dist/chunk-FJDRTVJX.js.map +1 -0
  21. package/dist/{chunk-NTTSUAVM.js → chunk-IZIYLYPK.js} +2 -2
  22. package/dist/{chunk-TGRK3CHF.js → chunk-KJTVU3HZ.js} +4 -4
  23. package/dist/{chunk-SC6X5EBG.js → chunk-KXGQYLFZ.js} +3 -3
  24. package/dist/{chunk-USSL2X4A.js → chunk-NUACL52E.js} +2 -2
  25. package/dist/{chunk-JT5LZRMI.js → chunk-NWMORW3U.js} +2 -2
  26. package/dist/{chunk-PVW6JE7E.js → chunk-OFDN5NKS.js} +4 -3
  27. package/dist/{chunk-PVW6JE7E.js.map → chunk-OFDN5NKS.js.map} +1 -1
  28. package/dist/{chunk-HZXBHMVM.js → chunk-R4YWBGY6.js} +3 -3
  29. package/dist/{chunk-XFEK2X2D.js → chunk-RI2YL6TK.js} +9 -3
  30. package/dist/chunk-RI2YL6TK.js.map +1 -0
  31. package/dist/{chunk-6Y3FTRJL.js → chunk-SOSQILHO.js} +102 -51
  32. package/dist/chunk-SOSQILHO.js.map +1 -0
  33. package/dist/{chunk-4GAJJUYS.js → chunk-TC7APDKU.js} +2 -2
  34. package/dist/{chunk-UDZCTLD6.js → chunk-ULSWCPQG.js} +3 -3
  35. package/dist/{chunk-5LVVQGB3.js → chunk-VPTAX5TR.js} +7 -7
  36. package/dist/chunk-VPTAX5TR.js.map +1 -0
  37. package/dist/{chunk-RD7OPXZK.js → chunk-W6DP5RVR.js} +3 -3
  38. package/dist/{chunk-XJHQVOT6.js → chunk-WHI5KEOX.js} +2 -2
  39. package/dist/{chunk-2HZX6AMR.js → chunk-YKFCCV6S.js} +2 -2
  40. package/dist/{chunk-OAVJR4PM.js → chunk-Z2TWEXR7.js} +2 -2
  41. package/dist/{cleanup-M6N7KV7E.js → cleanup-PJRIFFU4.js} +16 -16
  42. package/dist/cli.js +79 -62
  43. package/dist/cli.js.map +1 -1
  44. package/dist/{commit-ORHR53KW.js → commit-IVP3M4HG.js} +10 -9
  45. package/dist/commit-IVP3M4HG.js.map +1 -0
  46. package/dist/{compile-EOWJORKO.js → compile-R2J65HBQ.js} +6 -6
  47. package/dist/{contribute-4KCEOHSH.js → contribute-VDZXHK5Y.js} +4 -4
  48. package/dist/{dev-server-Q6M62ATG.js → dev-server-7F622OEO.js} +8 -8
  49. package/dist/{feedback-XRI7SGYX.js → feedback-E7VET7CL.js} +6 -6
  50. package/dist/{git-W3XUIFTR.js → git-2QDQ2X2S.js} +3 -3
  51. package/dist/{ignite-3FHQY23X.js → ignite-IW35CDBD.js} +10 -10
  52. package/dist/index.d.ts +18 -0
  53. package/dist/index.js +14 -6
  54. package/dist/index.js.map +1 -1
  55. package/dist/{init-ALYWKNWG.js → init-676DHF6R.js} +5 -5
  56. package/dist/issues-PJSOLOBJ.js +138 -0
  57. package/dist/issues-PJSOLOBJ.js.map +1 -0
  58. package/dist/{lint-IHUH45OC.js → lint-CJM7BAIM.js} +6 -6
  59. package/dist/mcp/issue-management-server.js +5 -4
  60. package/dist/mcp/issue-management-server.js.map +1 -1
  61. package/dist/{open-KWOV2OFO.js → open-544H7JF5.js} +8 -8
  62. package/dist/{plan-P6MXL7AU.js → plan-Q7ELXDLC.js} +12 -12
  63. package/dist/prompts/init-prompt.txt +39 -21
  64. package/dist/{rebase-AJOJOZUG.js → rebase-YND35CIE.js} +5 -5
  65. package/dist/{recap-GKJXMDXW.js → recap-3W7COH7D.js} +5 -5
  66. package/dist/{run-QEUVZF7J.js → run-QUXJKDQQ.js} +8 -8
  67. package/dist/schema/settings.schema.json +15 -0
  68. package/dist/{shell-DAAVG4YN.js → shell-QGECBLST.js} +5 -5
  69. package/dist/{summary-WNEYCO4S.js → summary-G2T4452H.js} +9 -9
  70. package/dist/{test-5GPWWO3P.js → test-EA5NQFDC.js} +6 -6
  71. package/dist/{test-git-EJUKDB7F.js → test-git-M7LSLEFL.js} +3 -3
  72. package/dist/{test-prefix-23TOBUXY.js → test-prefix-64NAAUON.js} +3 -3
  73. package/dist/{test-webserver-CKROHFBQ.js → test-webserver-OK6Z5FJM.js} +5 -5
  74. package/dist/{vscode-6TOLFCI2.js → vscode-AR5NNXXI.js} +5 -5
  75. package/package.json +1 -1
  76. package/dist/chunk-5LVVQGB3.js.map +0 -1
  77. package/dist/chunk-6Y3FTRJL.js.map +0 -1
  78. package/dist/chunk-I23OQB4Y.js.map +0 -1
  79. package/dist/chunk-RNBIISBZ.js.map +0 -1
  80. package/dist/chunk-THS5L54H.js.map +0 -1
  81. package/dist/chunk-XFEK2X2D.js.map +0 -1
  82. package/dist/commit-ORHR53KW.js.map +0 -1
  83. /package/dist/{ClaudeContextManager-X2Y72GRL.js.map → ClaudeContextManager-HR5JQKAI.js.map} +0 -0
  84. /package/dist/{ClaudeService-7P32TTES.js.map → ClaudeService-TK7FMC2X.js.map} +0 -0
  85. /package/dist/{GitHubService-ACZVNTJE.js.map → GitHubService-TGWJN4V4.js.map} +0 -0
  86. /package/dist/{LoomLauncher-3I47SUPV.js.map → LoomLauncher-73NXL2CL.js.map} +0 -0
  87. /package/dist/{SettingsManager-QR7V2IW2.js.map → SettingsManager-AW3JTJHD.js.map} +0 -0
  88. /package/dist/{build-IC4CJRMP.js.map → build-THZI572G.js.map} +0 -0
  89. /package/dist/{chunk-Z6F5CUS6.js.map → chunk-3I4ONZRT.js.map} +0 -0
  90. /package/dist/{chunk-MZPRBNYC.js.map → chunk-6IIL5M2L.js.map} +0 -0
  91. /package/dist/{chunk-2JPXGGP4.js.map → chunk-A7NJF73J.js.map} +0 -0
  92. /package/dist/{chunk-H6ST2TGP.js.map → chunk-AR5QKYNE.js.map} +0 -0
  93. /package/dist/{chunk-PL2FDYEK.js.map → chunk-CWRI4JC3.js.map} +0 -0
  94. /package/dist/{chunk-NTTSUAVM.js.map → chunk-IZIYLYPK.js.map} +0 -0
  95. /package/dist/{chunk-TGRK3CHF.js.map → chunk-KJTVU3HZ.js.map} +0 -0
  96. /package/dist/{chunk-SC6X5EBG.js.map → chunk-KXGQYLFZ.js.map} +0 -0
  97. /package/dist/{chunk-USSL2X4A.js.map → chunk-NUACL52E.js.map} +0 -0
  98. /package/dist/{chunk-JT5LZRMI.js.map → chunk-NWMORW3U.js.map} +0 -0
  99. /package/dist/{chunk-HZXBHMVM.js.map → chunk-R4YWBGY6.js.map} +0 -0
  100. /package/dist/{chunk-4GAJJUYS.js.map → chunk-TC7APDKU.js.map} +0 -0
  101. /package/dist/{chunk-UDZCTLD6.js.map → chunk-ULSWCPQG.js.map} +0 -0
  102. /package/dist/{chunk-RD7OPXZK.js.map → chunk-W6DP5RVR.js.map} +0 -0
  103. /package/dist/{chunk-XJHQVOT6.js.map → chunk-WHI5KEOX.js.map} +0 -0
  104. /package/dist/{chunk-2HZX6AMR.js.map → chunk-YKFCCV6S.js.map} +0 -0
  105. /package/dist/{chunk-OAVJR4PM.js.map → chunk-Z2TWEXR7.js.map} +0 -0
  106. /package/dist/{cleanup-M6N7KV7E.js.map → cleanup-PJRIFFU4.js.map} +0 -0
  107. /package/dist/{compile-EOWJORKO.js.map → compile-R2J65HBQ.js.map} +0 -0
  108. /package/dist/{contribute-4KCEOHSH.js.map → contribute-VDZXHK5Y.js.map} +0 -0
  109. /package/dist/{dev-server-Q6M62ATG.js.map → dev-server-7F622OEO.js.map} +0 -0
  110. /package/dist/{feedback-XRI7SGYX.js.map → feedback-E7VET7CL.js.map} +0 -0
  111. /package/dist/{git-W3XUIFTR.js.map → git-2QDQ2X2S.js.map} +0 -0
  112. /package/dist/{ignite-3FHQY23X.js.map → ignite-IW35CDBD.js.map} +0 -0
  113. /package/dist/{init-ALYWKNWG.js.map → init-676DHF6R.js.map} +0 -0
  114. /package/dist/{lint-IHUH45OC.js.map → lint-CJM7BAIM.js.map} +0 -0
  115. /package/dist/{open-KWOV2OFO.js.map → open-544H7JF5.js.map} +0 -0
  116. /package/dist/{plan-P6MXL7AU.js.map → plan-Q7ELXDLC.js.map} +0 -0
  117. /package/dist/{rebase-AJOJOZUG.js.map → rebase-YND35CIE.js.map} +0 -0
  118. /package/dist/{recap-GKJXMDXW.js.map → recap-3W7COH7D.js.map} +0 -0
  119. /package/dist/{run-QEUVZF7J.js.map → run-QUXJKDQQ.js.map} +0 -0
  120. /package/dist/{shell-DAAVG4YN.js.map → shell-QGECBLST.js.map} +0 -0
  121. /package/dist/{summary-WNEYCO4S.js.map → summary-G2T4452H.js.map} +0 -0
  122. /package/dist/{test-5GPWWO3P.js.map → test-EA5NQFDC.js.map} +0 -0
  123. /package/dist/{test-git-EJUKDB7F.js.map → test-git-M7LSLEFL.js.map} +0 -0
  124. /package/dist/{test-prefix-23TOBUXY.js.map → test-prefix-64NAAUON.js.map} +0 -0
  125. /package/dist/{test-webserver-CKROHFBQ.js.map → test-webserver-OK6Z5FJM.js.map} +0 -0
  126. /package/dist/{vscode-6TOLFCI2.js.map → vscode-AR5NNXXI.js.map} +0 -0
@@ -1,21 +1,21 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  DevServerManager
4
- } from "./chunk-2JPXGGP4.js";
5
- import "./chunk-NTTSUAVM.js";
4
+ } from "./chunk-A7NJF73J.js";
5
+ import "./chunk-IZIYLYPK.js";
6
6
  import {
7
7
  getWorkspacePort
8
- } from "./chunk-USSL2X4A.js";
8
+ } from "./chunk-NUACL52E.js";
9
9
  import {
10
10
  IdentifierParser
11
- } from "./chunk-2HZX6AMR.js";
11
+ } from "./chunk-YKFCCV6S.js";
12
12
  import {
13
13
  openBrowser
14
14
  } from "./chunk-YETJNRQM.js";
15
15
  import "./chunk-4LKGCFGG.js";
16
16
  import {
17
17
  GitWorktreeManager
18
- } from "./chunk-4GAJJUYS.js";
18
+ } from "./chunk-TC7APDKU.js";
19
19
  import {
20
20
  extractSettingsOverrides
21
21
  } from "./chunk-GYCR2LOU.js";
@@ -25,10 +25,10 @@ import {
25
25
  import "./chunk-VOGGLPG5.js";
26
26
  import {
27
27
  extractIssueNumber
28
- } from "./chunk-H6ST2TGP.js";
28
+ } from "./chunk-AR5QKYNE.js";
29
29
  import {
30
30
  SettingsManager
31
- } from "./chunk-XFEK2X2D.js";
31
+ } from "./chunk-RI2YL6TK.js";
32
32
  import "./chunk-KBEIQP4G.js";
33
33
  import "./chunk-6MLEBAYZ.js";
34
34
  import {
@@ -238,4 +238,4 @@ Make sure the project is built (run 'il start' first)`
238
238
  export {
239
239
  OpenCommand
240
240
  };
241
- //# sourceMappingURL=open-KWOV2OFO.js.map
241
+ //# sourceMappingURL=open-544H7JF5.js.map
@@ -2,32 +2,32 @@
2
2
  import {
3
3
  launchFirstRunSetup,
4
4
  needsFirstRunSetup
5
- } from "./chunk-RD7OPXZK.js";
5
+ } from "./chunk-W6DP5RVR.js";
6
6
  import {
7
7
  IssueTrackerFactory
8
- } from "./chunk-SC6X5EBG.js";
8
+ } from "./chunk-KXGQYLFZ.js";
9
9
  import {
10
10
  matchIssueIdentifier
11
- } from "./chunk-2HZX6AMR.js";
11
+ } from "./chunk-YKFCCV6S.js";
12
12
  import "./chunk-Q7POFB5Q.js";
13
13
  import {
14
14
  generateIssueManagementMcpConfig
15
- } from "./chunk-XJHQVOT6.js";
15
+ } from "./chunk-WHI5KEOX.js";
16
16
  import {
17
17
  IssueManagementProviderFactory
18
- } from "./chunk-UDZCTLD6.js";
19
- import "./chunk-RNBIISBZ.js";
18
+ } from "./chunk-ULSWCPQG.js";
19
+ import "./chunk-FJDRTVJX.js";
20
20
  import {
21
21
  PromptTemplateManager
22
22
  } from "./chunk-QN47QVBX.js";
23
- import "./chunk-H6ST2TGP.js";
23
+ import "./chunk-AR5QKYNE.js";
24
24
  import {
25
25
  PlanCommandSettingsSchema,
26
26
  SettingsManager
27
- } from "./chunk-XFEK2X2D.js";
27
+ } from "./chunk-RI2YL6TK.js";
28
28
  import "./chunk-KBEIQP4G.js";
29
- import "./chunk-PVW6JE7E.js";
30
- import "./chunk-THS5L54H.js";
29
+ import "./chunk-OFDN5NKS.js";
30
+ import "./chunk-4CO6KG5S.js";
31
31
  import {
32
32
  isInteractiveEnvironment,
33
33
  promptConfirmation
@@ -205,7 +205,7 @@ var PlanCommand = class {
205
205
  );
206
206
  if (shouldRunInit) {
207
207
  logger.info(chalk.bold("Launching iloom init..."));
208
- const { InitCommand } = await import("./init-ALYWKNWG.js");
208
+ const { InitCommand } = await import("./init-676DHF6R.js");
209
209
  const initCommand = new InitCommand();
210
210
  await initCommand.execute(
211
211
  "Help the user set up a GitHub repository or Linear project for this project so they can use issue management features. When complete tell the user they can exit to continue the planning session."
@@ -400,4 +400,4 @@ ${initialMessage}`;
400
400
  export {
401
401
  PlanCommand
402
402
  };
403
- //# sourceMappingURL=plan-P6MXL7AU.js.map
403
+ //# sourceMappingURL=plan-Q7ELXDLC.js.map
@@ -604,6 +604,21 @@ The following JSON Schema defines valid iloom settings:
604
604
  ],
605
605
  "default": "upstreamOnly",
606
606
  "description": "Controls when iloom attribution appears in session summaries. \"off\" - never show attribution. \"upstreamOnly\" - only show for contributions to external repositories (e.g., open source). \"on\" - always show attribution."
607
+ },
608
+ "git": {
609
+ "type": "object",
610
+ "properties": {
611
+ "commitTimeout": {
612
+ "type": "number",
613
+ "minimum": 1000,
614
+ "maximum": 600000,
615
+ "default": 60000,
616
+ "description": "Timeout in milliseconds for git commit operations. Increase for long-running pre-commit hooks."
617
+ }
618
+ },
619
+ "additionalProperties": false,
620
+ "default": {},
621
+ "description": "Git operation settings"
607
622
  }
608
623
  },
609
624
  "additionalProperties": false
@@ -698,7 +713,6 @@ Parse both settings.json and settings.local.json. Merge them with local taking p
698
713
 
699
714
  Extract these current values if they exist:
700
715
  - `currentMainBranch` from `mainBranch` field (default: "main")
701
- - `currentWorktreePrefix` from `worktreePrefix` field (default: null which means use default - NOTE: "" does not mean default)
702
716
  - `currentPermissionMode` from `workflows.issue.permissionMode` field (default: "acceptEdits")
703
717
  - `currentBasePort` from `capabilities.web.basePort` field (default: 3000)
704
718
  - `currentMergeMode` from `mergeBehavior.mode` field (default: "local")
@@ -713,7 +727,6 @@ Extract these current values if they exist:
713
727
  Current Configuration:
714
728
  ━━━━━━━━━━━━━━━━━━━━━
715
729
  Main Branch: [currentMainBranch or "main (default)"]
716
- Worktree Prefix: [currentWorktreePrefix or "default (repo-name-looms)"]
717
730
  Permission Mode (Issues): [currentPermissionMode or "acceptEdits (default)"]
718
731
  Base Port: [currentBasePort or "3000 (default)"]
719
732
  IDE: [currentIdeType or "vscode (default)"]
@@ -758,18 +771,7 @@ Use AskUserQuestion to ask ALL local development settings questions **IN A SINGL
758
771
  - Validation: Non-empty string
759
772
  - Store answer as: `mainBranch`
760
773
 
761
- 2. **Worktree Prefix**
762
- - Question format: "What prefix should iloom use for worktree directories?{{#if currentWorktreePrefix}} (Currently: [currentWorktreePrefix]){{/if}} Leave empty to use default (<repo-name>-looms)."
763
- - Options (as examples):
764
- - Use default prefix (recommened)
765
- - "looms" - Simple 'looms-' prefix
766
- - Empty - each loom will be a sibling of this directory
767
- - Default: currentWorktreePrefix or default (NOTE: empty does NOT mean use default)
768
- - Validation: If not empty, only alphanumeric characters, hyphens, underscores, and forward slashes allowed
769
- - Store answer as: `worktreePrefix`
770
- - Note: If user specifies default, omit this field from settings, it they say empty, add an empty string to the settings
771
-
772
- 3. **Permission Mode for Issue Workflows**
774
+ 2. **Permission Mode for Issue Workflows**
773
775
  - Question format: "What permission mode should Claude use when working on issues?{{#if currentPermissionMode}} (Currently: [currentPermissionMode]){{/if}}"
774
776
  - Options:
775
777
  - "default" - Use Claude Code's default behavior
@@ -780,7 +782,7 @@ Use AskUserQuestion to ask ALL local development settings questions **IN A SINGL
780
782
  - Validation: Must be one of: default, plan, acceptEdits, bypassPermissions
781
783
  - Store answer as: `workflows.issue.permissionMode` - NOTE: this is a personal preference - recommend it be stored in the gitignored local settings file.
782
784
 
783
- 4. **Base Port**
785
+ 3. **Base Port**
784
786
  - Question format: "What base port should web development servers use?{{#if currentBasePort}} (Currently: [currentBasePort]){{/if}}"
785
787
  - Options (as examples):
786
788
  - "3000" - Common Node.js default
@@ -1030,7 +1032,6 @@ Configuration Summary:
1030
1032
 
1031
1033
  Local Development Settings (Phase 1):
1032
1034
  Main Branch: [value]
1033
- Worktree Prefix: [value or "default (repo-name-looms)"]
1034
1035
  Permission Mode (Issues): [value]
1035
1036
  Base Port: [value]
1036
1037
 
@@ -1398,15 +1399,25 @@ Here's how to get started:
1398
1399
  • Run `iloom finish` when you're done working to merge changes and clean up
1399
1400
 
1400
1401
  Need more advanced configuration? I can help you set up:
1402
+ • Merge Behavior - Choose between local merge, GitHub PR, or draft PR workflows
1403
+ • Copy Gitignored Files - Automatically copy local databases, test fixtures, or other gitignored files to new looms
1404
+ • Multi-Provider Code Review - Get code reviews from Gemini or Codex alongside Claude
1405
+ • Plan Configuration - Use different AI providers for planning and plan review
1401
1406
  • Agent Models - Use different Claude models for different tasks
1402
1407
  • Database Settings - Configure database branching for isolated development
1408
+ • Skip Pre-Commit Hooks - Bypass slow or failing hooks during commit and finish workflows
1403
1409
  • Workflow Behavior - Control permissions, IDE launching, dev servers, and terminal behavior
1404
1410
  • Protected Branches - Prevent iloom from creating worktrees for certain branches
1405
1411
  • Custom Scripts - Override package.json scripts with custom commands
1406
1412
 
1407
1413
  You can ask me questions like:
1414
+ "How do I set up GitHub PR mode instead of local merge?"
1415
+ "How do I copy my local SQLite database to new looms?"
1416
+ "Can I get code reviews from Gemini as well as Claude?"
1417
+ "How do I use Codex for planning?"
1408
1418
  "Is it possible to have the analysis agent use a different model?"
1409
1419
  "How do I configure database branching?"
1420
+ "How do I skip pre-commit hooks?"
1410
1421
  "Can I disable the IDE from launching automatically?"
1411
1422
  "How do I protect my main branch from worktree creation?"
1412
1423
  "What models are available for the different agents?"
@@ -1462,19 +1473,26 @@ When configuring agents, use these model identifiers:
1462
1473
  }
1463
1474
  ```
1464
1475
 
1465
- 4. **Protected Branches:**
1476
+ 4. **Copy Gitignored Files:**
1477
+ ```json
1478
+ "copyGitIgnoredPatterns": ["*.db", "data/*.sqlite", "tmp/fixtures/**"]
1479
+ ```
1480
+
1481
+ Glob patterns for gitignored files that should be copied to new looms. Useful for local databases, large test fixtures, or generated files that are too big to commit. Note: `.env` files and iloom/claude local settings are automatically copied and don't need to be listed here.
1482
+
1483
+ 5. **Protected Branches:**
1466
1484
  ```json
1467
1485
  "protectedBranches": ["main", "production", "release/*"]
1468
1486
  ```
1469
1487
 
1470
- 5. **IDE Configuration:**
1488
+ 6. **IDE Configuration:**
1471
1489
  ```json
1472
1490
  "ide": {
1473
1491
  "type": "cursor"
1474
1492
  }
1475
1493
  ```
1476
1494
 
1477
- 6. **Code Review with Multiple Providers:**
1495
+ 7. **Code Review with Multiple Providers:**
1478
1496
  ```json
1479
1497
  "agents": {
1480
1498
  "iloom-code-reviewer": {
@@ -1488,7 +1506,7 @@ When configuring agents, use these model identifiers:
1488
1506
 
1489
1507
  This configures the code reviewer to use both Claude and Gemini for reviews. Multiple providers can be configured to get reviews from different AI models.
1490
1508
 
1491
- 7. **Custom Script Configuration (package.iloom.json):**
1509
+ 8. **Custom Script Configuration (package.iloom.json):**
1492
1510
 
1493
1511
  If users want to override or supplement npm scripts with custom commands, help them create `.iloom/package.iloom.json`:
1494
1512
  ```json
@@ -1554,7 +1572,7 @@ When configuring agents, use these model identifiers:
1554
1572
  - **For existing users** - Ask what they want to do (modify, add advanced config, start fresh, or exit) instead of forcing them through the entire flow
1555
1573
  - **For new users** - Skip directly to Phase 1 (Local Development Settings) and proceed through Phase 2 (Tooling Configuration)
1556
1574
  - **ALWAYS use the question formats** specified in Phase 1 and Phase 2 that include "(Currently: [value])" when current values exist
1557
- - **Phase 1 = Local dev settings** (main branch, worktree prefix, permission mode, base port)
1575
+ - **Phase 1 = Local dev settings** (main branch, permission mode, base port)
1558
1576
  - **Phase 2 = Tooling integrations** (issue tracker provider, provider-specific config, IDE, merge mode)
1559
1577
  - **Keep configuration minimal** - only include non-default values
1560
1578
  - **Honor recommendations/requirements of where to save certain settings - this may mean you have to create/update multiple settings files. (e.g when adding API keys for permissions mode settings)
@@ -2,22 +2,22 @@
2
2
  import {
3
3
  BuildRunner,
4
4
  MergeManager
5
- } from "./chunk-HZXBHMVM.js";
5
+ } from "./chunk-R4YWBGY6.js";
6
6
  import {
7
7
  installDependencies
8
8
  } from "./chunk-4LKGCFGG.js";
9
9
  import {
10
10
  GitWorktreeManager
11
- } from "./chunk-4GAJJUYS.js";
11
+ } from "./chunk-TC7APDKU.js";
12
12
  import "./chunk-TL72BGP6.js";
13
13
  import "./chunk-VOGGLPG5.js";
14
14
  import {
15
15
  getWorktreeRoot,
16
16
  isValidGitRepo
17
- } from "./chunk-H6ST2TGP.js";
17
+ } from "./chunk-AR5QKYNE.js";
18
18
  import {
19
19
  SettingsManager
20
- } from "./chunk-XFEK2X2D.js";
20
+ } from "./chunk-RI2YL6TK.js";
21
21
  import "./chunk-KBEIQP4G.js";
22
22
  import "./chunk-FO5GGFOV.js";
23
23
  import "./chunk-6MLEBAYZ.js";
@@ -139,4 +139,4 @@ export {
139
139
  RebaseCommand,
140
140
  WorktreeValidationError
141
141
  };
142
- //# sourceMappingURL=rebase-AJOJOZUG.js.map
142
+ //# sourceMappingURL=rebase-YND35CIE.js.map
@@ -4,12 +4,12 @@ import {
4
4
  } from "./chunk-NXMDEL3F.js";
5
5
  import {
6
6
  IdentifierParser
7
- } from "./chunk-2HZX6AMR.js";
7
+ } from "./chunk-YKFCCV6S.js";
8
8
  import {
9
9
  GitWorktreeManager
10
- } from "./chunk-4GAJJUYS.js";
11
- import "./chunk-H6ST2TGP.js";
12
- import "./chunk-XFEK2X2D.js";
10
+ } from "./chunk-TC7APDKU.js";
11
+ import "./chunk-AR5QKYNE.js";
12
+ import "./chunk-RI2YL6TK.js";
13
13
  import "./chunk-KBEIQP4G.js";
14
14
  import "./chunk-6MLEBAYZ.js";
15
15
  import "./chunk-VT4PDUYT.js";
@@ -107,4 +107,4 @@ var RecapCommand = class {
107
107
  export {
108
108
  RecapCommand
109
109
  };
110
- //# sourceMappingURL=recap-GKJXMDXW.js.map
110
+ //# sourceMappingURL=recap-3W7COH7D.js.map
@@ -1,21 +1,21 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  DevServerManager
4
- } from "./chunk-2JPXGGP4.js";
5
- import "./chunk-NTTSUAVM.js";
4
+ } from "./chunk-A7NJF73J.js";
5
+ import "./chunk-IZIYLYPK.js";
6
6
  import {
7
7
  getWorkspacePort
8
- } from "./chunk-USSL2X4A.js";
8
+ } from "./chunk-NUACL52E.js";
9
9
  import {
10
10
  IdentifierParser
11
- } from "./chunk-2HZX6AMR.js";
11
+ } from "./chunk-YKFCCV6S.js";
12
12
  import {
13
13
  openBrowser
14
14
  } from "./chunk-YETJNRQM.js";
15
15
  import "./chunk-4LKGCFGG.js";
16
16
  import {
17
17
  GitWorktreeManager
18
- } from "./chunk-4GAJJUYS.js";
18
+ } from "./chunk-TC7APDKU.js";
19
19
  import {
20
20
  extractSettingsOverrides
21
21
  } from "./chunk-GYCR2LOU.js";
@@ -25,10 +25,10 @@ import {
25
25
  import "./chunk-VOGGLPG5.js";
26
26
  import {
27
27
  extractIssueNumber
28
- } from "./chunk-H6ST2TGP.js";
28
+ } from "./chunk-AR5QKYNE.js";
29
29
  import {
30
30
  SettingsManager
31
- } from "./chunk-XFEK2X2D.js";
31
+ } from "./chunk-RI2YL6TK.js";
32
32
  import "./chunk-KBEIQP4G.js";
33
33
  import "./chunk-6MLEBAYZ.js";
34
34
  import {
@@ -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-QEUVZF7J.js.map
241
+ //# sourceMappingURL=run-QUXJKDQQ.js.map
@@ -497,6 +497,21 @@
497
497
  ],
498
498
  "default": "upstreamOnly",
499
499
  "description": "Controls when iloom attribution appears in session summaries. \"off\" - never show attribution. \"upstreamOnly\" - only show for contributions to external repositories (e.g., open source). \"on\" - always show attribution."
500
+ },
501
+ "git": {
502
+ "type": "object",
503
+ "properties": {
504
+ "commitTimeout": {
505
+ "type": "number",
506
+ "minimum": 1000,
507
+ "maximum": 600000,
508
+ "default": 60000,
509
+ "description": "Timeout in milliseconds for git commit operations. Increase for long-running pre-commit hooks."
510
+ }
511
+ },
512
+ "additionalProperties": false,
513
+ "default": {},
514
+ "description": "Git operation settings"
500
515
  }
501
516
  },
502
517
  "additionalProperties": false
@@ -1,16 +1,16 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  IdentifierParser
4
- } from "./chunk-2HZX6AMR.js";
4
+ } from "./chunk-YKFCCV6S.js";
5
5
  import {
6
6
  GitWorktreeManager
7
- } from "./chunk-4GAJJUYS.js";
7
+ } from "./chunk-TC7APDKU.js";
8
8
  import {
9
9
  extractIssueNumber
10
- } from "./chunk-H6ST2TGP.js";
10
+ } from "./chunk-AR5QKYNE.js";
11
11
  import {
12
12
  SettingsManager
13
- } from "./chunk-XFEK2X2D.js";
13
+ } from "./chunk-RI2YL6TK.js";
14
14
  import "./chunk-KBEIQP4G.js";
15
15
  import "./chunk-6MLEBAYZ.js";
16
16
  import {
@@ -235,4 +235,4 @@ var ShellCommand = class {
235
235
  export {
236
236
  ShellCommand
237
237
  };
238
- //# sourceMappingURL=shell-DAAVG4YN.js.map
238
+ //# sourceMappingURL=shell-QGECBLST.js.map
@@ -1,29 +1,29 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  SessionSummaryService
4
- } from "./chunk-Z6F5CUS6.js";
4
+ } from "./chunk-3I4ONZRT.js";
5
5
  import "./chunk-NXMDEL3F.js";
6
6
  import {
7
7
  PRManager
8
- } from "./chunk-I23OQB4Y.js";
8
+ } from "./chunk-DGG2VY7B.js";
9
9
  import "./chunk-YETJNRQM.js";
10
- import "./chunk-UDZCTLD6.js";
11
- import "./chunk-RNBIISBZ.js";
10
+ import "./chunk-ULSWCPQG.js";
11
+ import "./chunk-FJDRTVJX.js";
12
12
  import {
13
13
  GitWorktreeManager
14
- } from "./chunk-4GAJJUYS.js";
14
+ } from "./chunk-TC7APDKU.js";
15
15
  import "./chunk-FXDYIV3K.js";
16
16
  import "./chunk-QN47QVBX.js";
17
17
  import {
18
18
  extractIssueNumber
19
- } from "./chunk-H6ST2TGP.js";
19
+ } from "./chunk-AR5QKYNE.js";
20
20
  import {
21
21
  SettingsManager
22
- } from "./chunk-XFEK2X2D.js";
22
+ } from "./chunk-RI2YL6TK.js";
23
23
  import {
24
24
  MetadataManager
25
25
  } from "./chunk-KBEIQP4G.js";
26
- import "./chunk-THS5L54H.js";
26
+ import "./chunk-4CO6KG5S.js";
27
27
  import "./chunk-FO5GGFOV.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-WNEYCO4S.js.map
283
+ //# sourceMappingURL=summary-G2T4452H.js.map
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ScriptCommandBase
4
- } from "./chunk-TGRK3CHF.js";
5
- import "./chunk-2HZX6AMR.js";
4
+ } from "./chunk-KJTVU3HZ.js";
5
+ import "./chunk-YKFCCV6S.js";
6
6
  import "./chunk-4LKGCFGG.js";
7
- import "./chunk-4GAJJUYS.js";
7
+ import "./chunk-TC7APDKU.js";
8
8
  import "./chunk-VOGGLPG5.js";
9
- import "./chunk-H6ST2TGP.js";
10
- import "./chunk-XFEK2X2D.js";
9
+ import "./chunk-AR5QKYNE.js";
10
+ import "./chunk-RI2YL6TK.js";
11
11
  import "./chunk-KBEIQP4G.js";
12
12
  import "./chunk-6MLEBAYZ.js";
13
13
  import "./chunk-VT4PDUYT.js";
@@ -24,4 +24,4 @@ var TestCommand = class extends ScriptCommandBase {
24
24
  export {
25
25
  TestCommand
26
26
  };
27
- //# sourceMappingURL=test-5GPWWO3P.js.map
27
+ //# sourceMappingURL=test-EA5NQFDC.js.map
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  findMainWorktreePath
4
- } from "./chunk-H6ST2TGP.js";
4
+ } from "./chunk-AR5QKYNE.js";
5
5
  import {
6
6
  SettingsManager
7
- } from "./chunk-XFEK2X2D.js";
7
+ } from "./chunk-RI2YL6TK.js";
8
8
  import "./chunk-KBEIQP4G.js";
9
9
  import "./chunk-6MLEBAYZ.js";
10
10
  import {
@@ -51,4 +51,4 @@ var TestGitCommand = class {
51
51
  export {
52
52
  TestGitCommand
53
53
  };
54
- //# sourceMappingURL=test-git-EJUKDB7F.js.map
54
+ //# sourceMappingURL=test-git-M7LSLEFL.js.map
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  generateWorktreePath
4
- } from "./chunk-H6ST2TGP.js";
4
+ } from "./chunk-AR5QKYNE.js";
5
5
  import {
6
6
  SettingsManager
7
- } from "./chunk-XFEK2X2D.js";
7
+ } from "./chunk-RI2YL6TK.js";
8
8
  import "./chunk-KBEIQP4G.js";
9
9
  import "./chunk-6MLEBAYZ.js";
10
10
  import {
@@ -67,4 +67,4 @@ var TestPrefixCommand = class {
67
67
  export {
68
68
  TestPrefixCommand
69
69
  };
70
- //# sourceMappingURL=test-prefix-23TOBUXY.js.map
70
+ //# sourceMappingURL=test-prefix-64NAAUON.js.map
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ProcessManager
4
- } from "./chunk-NTTSUAVM.js";
5
- import "./chunk-USSL2X4A.js";
6
- import "./chunk-H6ST2TGP.js";
4
+ } from "./chunk-IZIYLYPK.js";
5
+ import "./chunk-NUACL52E.js";
6
+ import "./chunk-AR5QKYNE.js";
7
7
  import {
8
8
  SettingsManager
9
- } from "./chunk-XFEK2X2D.js";
9
+ } from "./chunk-RI2YL6TK.js";
10
10
  import "./chunk-KBEIQP4G.js";
11
11
  import "./chunk-6MLEBAYZ.js";
12
12
  import {
@@ -81,4 +81,4 @@ var TestWebserverCommand = class {
81
81
  export {
82
82
  TestWebserverCommand
83
83
  };
84
- //# sourceMappingURL=test-webserver-CKROHFBQ.js.map
84
+ //# sourceMappingURL=test-webserver-OK6Z5FJM.js.map
@@ -1,18 +1,18 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  IdentifierParser
4
- } from "./chunk-2HZX6AMR.js";
4
+ } from "./chunk-YKFCCV6S.js";
5
5
  import {
6
6
  GitWorktreeManager
7
- } from "./chunk-4GAJJUYS.js";
7
+ } from "./chunk-TC7APDKU.js";
8
8
  import {
9
9
  getInstallHint,
10
10
  isIdeAvailable
11
11
  } from "./chunk-O7VL5N6S.js";
12
12
  import {
13
13
  extractIssueNumber
14
- } from "./chunk-H6ST2TGP.js";
15
- import "./chunk-XFEK2X2D.js";
14
+ } from "./chunk-AR5QKYNE.js";
15
+ import "./chunk-RI2YL6TK.js";
16
16
  import "./chunk-KBEIQP4G.js";
17
17
  import {
18
18
  waitForKeypress
@@ -161,4 +161,4 @@ var VSCodeCommand = class {
161
161
  export {
162
162
  VSCodeCommand
163
163
  };
164
- //# sourceMappingURL=vscode-6TOLFCI2.js.map
164
+ //# sourceMappingURL=vscode-AR5NNXXI.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iloom/cli",
3
- "version": "0.9.0",
3
+ "version": "0.9.2",
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",