@iloom/cli 0.5.3 → 0.5.5

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 (81) hide show
  1. package/README.md +41 -0
  2. package/dist/{ClaudeContextManager-PQ46VILL.js → ClaudeContextManager-7WX7DUNI.js} +4 -4
  3. package/dist/{ClaudeService-6OMO552H.js → ClaudeService-LQLN2GP4.js} +3 -3
  4. package/dist/{LoomLauncher-ZHDTPKED.js → LoomLauncher-5QU42LOM.js} +4 -4
  5. package/dist/README.md +41 -0
  6. package/dist/{SettingsManager-CNYBGXDT.js → SettingsManager-35F5RUJH.js} +2 -2
  7. package/dist/{chunk-Z5BM4JWB.js → chunk-46JVEGUW.js} +65 -9
  8. package/dist/chunk-46JVEGUW.js.map +1 -0
  9. package/dist/{chunk-66BMJ25W.js → chunk-6YSFTPKW.js} +8 -192
  10. package/dist/chunk-6YSFTPKW.js.map +1 -0
  11. package/dist/{chunk-HMMO2LDS.js → chunk-EK3XCAAS.js} +2 -2
  12. package/dist/{chunk-IDUICCZY.js → chunk-F6WVM437.js} +3 -1
  13. package/dist/chunk-F6WVM437.js.map +1 -0
  14. package/dist/{chunk-FXJKNVZW.js → chunk-FO2H3YXI.js} +2 -2
  15. package/dist/{chunk-53OMUNUN.js → chunk-GEXP5IOF.js} +9 -4
  16. package/dist/chunk-GEXP5IOF.js.map +1 -0
  17. package/dist/chunk-NKRQNER7.js +197 -0
  18. package/dist/chunk-NKRQNER7.js.map +1 -0
  19. package/dist/{chunk-J7GHNTYK.js → chunk-SJIMVKK7.js} +2 -2
  20. package/dist/{chunk-YU5HVI6B.js → chunk-UQIXZ3BA.js} +2 -2
  21. package/dist/{chunk-QPS6TZUW.js → chunk-VXMY22TP.js} +2 -2
  22. package/dist/{chunk-XNNXAAZT.js → chunk-WIJWIKAN.js} +3 -3
  23. package/dist/{chunk-VV66DH6T.js → chunk-WZHBRKLN.js} +26 -7
  24. package/dist/chunk-WZHBRKLN.js.map +1 -0
  25. package/dist/{cleanup-Y5W3CNUV.js → cleanup-WTZZ74VS.js} +8 -8
  26. package/dist/cli.js +39 -39
  27. package/dist/cli.js.map +1 -1
  28. package/dist/{contribute-SMIPMWCH.js → contribute-T7ENST5N.js} +3 -3
  29. package/dist/{dev-server-HNBRWGCD.js → dev-server-S5QG5SBZ.js} +5 -5
  30. package/dist/{feedback-567ZH2O7.js → feedback-PDMCKYOT.js} +2 -2
  31. package/dist/{git-OV6ADVO7.js → git-FVMGBHC2.js} +3 -3
  32. package/dist/{ignite-3HB3ZBEW.js → ignite-YF4Q5RA7.js} +8 -6
  33. package/dist/{ignite-3HB3ZBEW.js.map → ignite-YF4Q5RA7.js.map} +1 -1
  34. package/dist/index.d.ts +3 -0
  35. package/dist/index.js +8 -1
  36. package/dist/index.js.map +1 -1
  37. package/dist/{init-CMIRHFSR.js → init-XQQGC6DN.js} +6 -5
  38. package/dist/{open-AXE225Z5.js → open-AIZG5756.js} +5 -5
  39. package/dist/{projects-GVEMCN5R.js → projects-SA76I4TZ.js} +14 -7
  40. package/dist/projects-SA76I4TZ.js.map +1 -0
  41. package/dist/prompts/init-prompt.txt +8 -0
  42. package/dist/prompts/issue-prompt.txt +12 -6
  43. package/dist/{rebase-6UIHMUWS.js → rebase-5EY3Q6XP.js} +5 -5
  44. package/dist/{recap-XTBNMEMO.js → recap-VOOUXOGP.js} +5 -5
  45. package/dist/{run-H375EYRB.js → run-CMZUYZVG.js} +5 -5
  46. package/dist/schema/settings.schema.json +8 -0
  47. package/dist/{shell-33FJCWJQ.js → shell-SBLXVOVJ.js} +5 -5
  48. package/dist/{summary-JUMOCNLR.js → summary-5YXUGPRN.js} +5 -5
  49. package/dist/{test-git-CO3BA4BV.js → test-git-ZB6AGGRW.js} +3 -3
  50. package/dist/{test-prefix-HZYSDQYT.js → test-prefix-FBGXKMPA.js} +3 -3
  51. package/package.json +2 -1
  52. package/dist/chunk-53OMUNUN.js.map +0 -1
  53. package/dist/chunk-66BMJ25W.js.map +0 -1
  54. package/dist/chunk-IDUICCZY.js.map +0 -1
  55. package/dist/chunk-VV66DH6T.js.map +0 -1
  56. package/dist/chunk-Z5BM4JWB.js.map +0 -1
  57. package/dist/projects-GVEMCN5R.js.map +0 -1
  58. /package/dist/{ClaudeContextManager-PQ46VILL.js.map → ClaudeContextManager-7WX7DUNI.js.map} +0 -0
  59. /package/dist/{ClaudeService-6OMO552H.js.map → ClaudeService-LQLN2GP4.js.map} +0 -0
  60. /package/dist/{LoomLauncher-ZHDTPKED.js.map → LoomLauncher-5QU42LOM.js.map} +0 -0
  61. /package/dist/{SettingsManager-CNYBGXDT.js.map → SettingsManager-35F5RUJH.js.map} +0 -0
  62. /package/dist/{chunk-HMMO2LDS.js.map → chunk-EK3XCAAS.js.map} +0 -0
  63. /package/dist/{chunk-FXJKNVZW.js.map → chunk-FO2H3YXI.js.map} +0 -0
  64. /package/dist/{chunk-J7GHNTYK.js.map → chunk-SJIMVKK7.js.map} +0 -0
  65. /package/dist/{chunk-YU5HVI6B.js.map → chunk-UQIXZ3BA.js.map} +0 -0
  66. /package/dist/{chunk-QPS6TZUW.js.map → chunk-VXMY22TP.js.map} +0 -0
  67. /package/dist/{chunk-XNNXAAZT.js.map → chunk-WIJWIKAN.js.map} +0 -0
  68. /package/dist/{cleanup-Y5W3CNUV.js.map → cleanup-WTZZ74VS.js.map} +0 -0
  69. /package/dist/{contribute-SMIPMWCH.js.map → contribute-T7ENST5N.js.map} +0 -0
  70. /package/dist/{dev-server-HNBRWGCD.js.map → dev-server-S5QG5SBZ.js.map} +0 -0
  71. /package/dist/{feedback-567ZH2O7.js.map → feedback-PDMCKYOT.js.map} +0 -0
  72. /package/dist/{git-OV6ADVO7.js.map → git-FVMGBHC2.js.map} +0 -0
  73. /package/dist/{init-CMIRHFSR.js.map → init-XQQGC6DN.js.map} +0 -0
  74. /package/dist/{open-AXE225Z5.js.map → open-AIZG5756.js.map} +0 -0
  75. /package/dist/{rebase-6UIHMUWS.js.map → rebase-5EY3Q6XP.js.map} +0 -0
  76. /package/dist/{recap-XTBNMEMO.js.map → recap-VOOUXOGP.js.map} +0 -0
  77. /package/dist/{run-H375EYRB.js.map → run-CMZUYZVG.js.map} +0 -0
  78. /package/dist/{shell-33FJCWJQ.js.map → shell-SBLXVOVJ.js.map} +0 -0
  79. /package/dist/{summary-JUMOCNLR.js.map → summary-5YXUGPRN.js.map} +0 -0
  80. /package/dist/{test-git-CO3BA4BV.js.map → test-git-ZB6AGGRW.js.map} +0 -0
  81. /package/dist/{test-prefix-HZYSDQYT.js.map → test-prefix-FBGXKMPA.js.map} +0 -0
package/README.md CHANGED
@@ -232,6 +232,47 @@ This example shows how to configure a project-wide default (e.g., GitHub remote)
232
232
  }
233
233
  ```
234
234
 
235
+ ### Copying Gitignored Files to Looms
236
+
237
+ By default, looms only contain files tracked by Git. If you have local files that are gitignored (like SQLite databases, test data, or sensitive configuration), they won't be available in your looms.
238
+
239
+ **Automatically copied:** Some gitignored files are always copied to looms without configuration:
240
+ - dotenv-flow files: `.env`, `.env.local`, `.env.development`, `.env.development.local`
241
+ - `.iloom/settings.local.json`
242
+ - `.claude/settings.local.json`
243
+
244
+ For other gitignored files, use `copyGitIgnoredPatterns` to specify glob patterns for files that should be copied from your main repo to each loom.
245
+
246
+ **When to use:**
247
+ - **Local databases:** SQLite files (`*.db`, `*.sqlite`) for local development
248
+ - **Test data:** Large test fixtures that are too big to commit to git
249
+ - **Sensitive files:** Configuration files with credentials that shouldn't be in version control
250
+
251
+ **.iloom/settings.json**
252
+
253
+ ```json
254
+ {
255
+ "copyGitIgnoredPatterns": [
256
+ "*.db",
257
+ "*.sqlite",
258
+ "data/**/*.json",
259
+ "{data,fixtures}/*.sql"
260
+ ]
261
+ }
262
+ ```
263
+
264
+ **Supported patterns:**
265
+ - `*.db` - Match files with .db extension in root
266
+ - `**/*.db` - Recursively match all .db files in any directory
267
+ - `data/**/*.sqlite` - Match .sqlite files anywhere under data/
268
+ - `{data,backup}/*.db` - Match .db files in either data/ or backup/
269
+ - `*.{db,sqlite}` - Match files with either .db or .sqlite extension
270
+
271
+ **Notes:**
272
+ - Files are copied from your main workspace to each loom during `il start`
273
+ - Files are NOT copied back during `il finish` (one-way copy only)
274
+ - The patterns use [fast-glob](https://github.com/mrmlnc/fast-glob) syntax
275
+
235
276
  ### Merge Behavior
236
277
 
237
278
  Control how `il finish` handles your work. Configure in `.iloom/settings.json`:
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ClaudeContextManager
4
- } from "./chunk-QPS6TZUW.js";
5
- import "./chunk-FXJKNVZW.js";
4
+ } from "./chunk-VXMY22TP.js";
5
+ import "./chunk-FO2H3YXI.js";
6
6
  import "./chunk-K5G5SFWY.js";
7
- import "./chunk-IDUICCZY.js";
7
+ import "./chunk-F6WVM437.js";
8
8
  import "./chunk-AEIMYF4P.js";
9
9
  import "./chunk-6MLEBAYZ.js";
10
10
  import "./chunk-VT4PDUYT.js";
11
11
  export {
12
12
  ClaudeContextManager
13
13
  };
14
- //# sourceMappingURL=ClaudeContextManager-PQ46VILL.js.map
14
+ //# sourceMappingURL=ClaudeContextManager-7WX7DUNI.js.map
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ClaudeService
4
- } from "./chunk-FXJKNVZW.js";
4
+ } from "./chunk-FO2H3YXI.js";
5
5
  import "./chunk-K5G5SFWY.js";
6
- import "./chunk-IDUICCZY.js";
6
+ import "./chunk-F6WVM437.js";
7
7
  import "./chunk-AEIMYF4P.js";
8
8
  import "./chunk-6MLEBAYZ.js";
9
9
  import "./chunk-VT4PDUYT.js";
10
10
  export {
11
11
  ClaudeService
12
12
  };
13
- //# sourceMappingURL=ClaudeService-6OMO552H.js.map
13
+ //# sourceMappingURL=ClaudeService-LQLN2GP4.js.map
@@ -4,13 +4,13 @@ import {
4
4
  } from "./chunk-O7VL5N6S.js";
5
5
  import {
6
6
  ClaudeContextManager
7
- } from "./chunk-QPS6TZUW.js";
8
- import "./chunk-FXJKNVZW.js";
7
+ } from "./chunk-VXMY22TP.js";
8
+ import "./chunk-FO2H3YXI.js";
9
9
  import "./chunk-K5G5SFWY.js";
10
10
  import {
11
11
  getExecutablePath
12
12
  } from "./chunk-GYCR2LOU.js";
13
- import "./chunk-IDUICCZY.js";
13
+ import "./chunk-F6WVM437.js";
14
14
  import {
15
15
  generateColorFromBranchName,
16
16
  hexToRgb
@@ -252,4 +252,4 @@ var LoomLauncher = class {
252
252
  export {
253
253
  LoomLauncher
254
254
  };
255
- //# sourceMappingURL=LoomLauncher-ZHDTPKED.js.map
255
+ //# sourceMappingURL=LoomLauncher-5QU42LOM.js.map
package/dist/README.md CHANGED
@@ -232,6 +232,47 @@ This example shows how to configure a project-wide default (e.g., GitHub remote)
232
232
  }
233
233
  ```
234
234
 
235
+ ### Copying Gitignored Files to Looms
236
+
237
+ By default, looms only contain files tracked by Git. If you have local files that are gitignored (like SQLite databases, test data, or sensitive configuration), they won't be available in your looms.
238
+
239
+ **Automatically copied:** Some gitignored files are always copied to looms without configuration:
240
+ - dotenv-flow files: `.env`, `.env.local`, `.env.development`, `.env.development.local`
241
+ - `.iloom/settings.local.json`
242
+ - `.claude/settings.local.json`
243
+
244
+ For other gitignored files, use `copyGitIgnoredPatterns` to specify glob patterns for files that should be copied from your main repo to each loom.
245
+
246
+ **When to use:**
247
+ - **Local databases:** SQLite files (`*.db`, `*.sqlite`) for local development
248
+ - **Test data:** Large test fixtures that are too big to commit to git
249
+ - **Sensitive files:** Configuration files with credentials that shouldn't be in version control
250
+
251
+ **.iloom/settings.json**
252
+
253
+ ```json
254
+ {
255
+ "copyGitIgnoredPatterns": [
256
+ "*.db",
257
+ "*.sqlite",
258
+ "data/**/*.json",
259
+ "{data,fixtures}/*.sql"
260
+ ]
261
+ }
262
+ ```
263
+
264
+ **Supported patterns:**
265
+ - `*.db` - Match files with .db extension in root
266
+ - `**/*.db` - Recursively match all .db files in any directory
267
+ - `data/**/*.sqlite` - Match .sqlite files anywhere under data/
268
+ - `{data,backup}/*.db` - Match .db files in either data/ or backup/
269
+ - `*.{db,sqlite}` - Match files with either .db or .sqlite extension
270
+
271
+ **Notes:**
272
+ - Files are copied from your main workspace to each loom during `il start`
273
+ - Files are NOT copied back during `il finish` (one-way copy only)
274
+ - The patterns use [fast-glob](https://github.com/mrmlnc/fast-glob) syntax
275
+
235
276
  ### Merge Behavior
236
277
 
237
278
  Control how `il finish` handles your work. Configure in `.iloom/settings.json`:
@@ -14,7 +14,7 @@ import {
14
14
  WorkflowPermissionSchemaNoDefaults,
15
15
  WorkflowsSettingsSchema,
16
16
  WorkflowsSettingsSchemaNoDefaults
17
- } from "./chunk-IDUICCZY.js";
17
+ } from "./chunk-F6WVM437.js";
18
18
  import "./chunk-VT4PDUYT.js";
19
19
  export {
20
20
  AgentSettingsSchema,
@@ -32,4 +32,4 @@ export {
32
32
  WorkflowsSettingsSchema,
33
33
  WorkflowsSettingsSchemaNoDefaults
34
34
  };
35
- //# sourceMappingURL=SettingsManager-CNYBGXDT.js.map
35
+ //# sourceMappingURL=SettingsManager-35F5RUJH.js.map
@@ -23,10 +23,10 @@ import {
23
23
  hasUncommittedChanges,
24
24
  isBranchMergedIntoMain,
25
25
  isFileTrackedByGit
26
- } from "./chunk-53OMUNUN.js";
26
+ } from "./chunk-GEXP5IOF.js";
27
27
  import {
28
28
  SettingsManager
29
- } from "./chunk-IDUICCZY.js";
29
+ } from "./chunk-F6WVM437.js";
30
30
  import {
31
31
  MetadataManager
32
32
  } from "./chunk-CFUWQHCJ.js";
@@ -59,6 +59,7 @@ import {
59
59
  // src/lib/LoomManager.ts
60
60
  import path2 from "path";
61
61
  import fs2 from "fs-extra";
62
+ import fg from "fast-glob";
62
63
 
63
64
  // src/lib/VSCodeIntegration.ts
64
65
  import fs from "fs-extra";
@@ -252,6 +253,7 @@ var LoomManager = class {
252
253
  await this.copyEnvironmentFiles(worktreePath);
253
254
  await this.copyIloomSettings(worktreePath);
254
255
  await this.copyClaudeSettings(worktreePath);
256
+ await this.copyGitIgnoredFiles(worktreePath);
255
257
  const settingsData = await this.settings.loadSettings();
256
258
  const basePort = ((_b = (_a = settingsData.capabilities) == null ? void 0 : _a.web) == null ? void 0 : _b.basePort) ?? 3e3;
257
259
  let port = basePort;
@@ -324,7 +326,7 @@ var LoomManager = class {
324
326
  );
325
327
  }
326
328
  getLogger().info("Creating placeholder commit for draft PR...");
327
- const { executeGitCommand: executeGitCommand2, PLACEHOLDER_COMMIT_PREFIX, pushBranchToRemote } = await import("./git-OV6ADVO7.js");
329
+ const { executeGitCommand: executeGitCommand2, PLACEHOLDER_COMMIT_PREFIX, pushBranchToRemote } = await import("./git-FVMGBHC2.js");
328
330
  await executeGitCommand2(
329
331
  [
330
332
  "commit",
@@ -391,8 +393,8 @@ This PR was created automatically by iloom.`;
391
393
  const setArguments = (_j = input.options) == null ? void 0 : _j.setArguments;
392
394
  const executablePath = (_k = input.options) == null ? void 0 : _k.executablePath;
393
395
  if (enableClaude || enableCode || enableDevServer || enableTerminal) {
394
- const { LoomLauncher } = await import("./LoomLauncher-ZHDTPKED.js");
395
- const { ClaudeContextManager } = await import("./ClaudeContextManager-PQ46VILL.js");
396
+ const { LoomLauncher } = await import("./LoomLauncher-5QU42LOM.js");
397
+ const { ClaudeContextManager } = await import("./ClaudeContextManager-7WX7DUNI.js");
396
398
  const claudeContext = new ClaudeContextManager(void 0, void 0, this.settings);
397
399
  const launcher = new LoomLauncher(claudeContext, this.settings);
398
400
  await launcher.launchLoom({
@@ -538,7 +540,7 @@ This PR was created automatically by iloom.`;
538
540
  async checkAndWarnChildLooms(branchName) {
539
541
  let targetBranch = branchName;
540
542
  if (!targetBranch) {
541
- const { getCurrentBranch } = await import("./git-OV6ADVO7.js");
543
+ const { getCurrentBranch } = await import("./git-FVMGBHC2.js");
542
544
  targetBranch = await getCurrentBranch();
543
545
  }
544
546
  if (!targetBranch) {
@@ -737,6 +739,59 @@ This PR was created automatically by iloom.`;
737
739
  getLogger().warn(`Warning: Failed to copy .claude/settings.local.json: ${error instanceof Error ? error.message : "Unknown error"}`);
738
740
  }
739
741
  }
742
+ /**
743
+ * Copy gitignored files matching configured patterns from main repo to worktree
744
+ * Uses copyGitIgnoredPatterns from settings to determine which files to copy
745
+ * Only copies files that exist and are NOT tracked by git
746
+ *
747
+ * @param worktreePath Path to the worktree
748
+ */
749
+ async copyGitIgnoredFiles(worktreePath) {
750
+ const settingsData = await this.settings.loadSettings();
751
+ const patterns = settingsData.copyGitIgnoredPatterns;
752
+ if (!patterns || patterns.length === 0) {
753
+ getLogger().debug("No copyGitIgnoredPatterns configured, skipping gitignored file copy");
754
+ return;
755
+ }
756
+ const mainWorkspacePath = this.gitWorktree.workingDirectory;
757
+ try {
758
+ const allMatches = await fg.glob(patterns, {
759
+ cwd: mainWorkspacePath,
760
+ onlyFiles: true,
761
+ dot: true
762
+ });
763
+ if (allMatches.length === 0) {
764
+ getLogger().debug(`No files matched copyGitIgnoredPatterns: ${patterns.join(", ")}`);
765
+ return;
766
+ }
767
+ getLogger().info(`Copying ${allMatches.length} gitignored file(s) matching: ${patterns.join(", ")}`);
768
+ let copiedCount = 0;
769
+ for (const relativePath of allMatches) {
770
+ const mainFilePath = path2.join(mainWorkspacePath, relativePath);
771
+ const worktreeFilePath = path2.join(worktreePath, relativePath);
772
+ if (!await fs2.pathExists(mainFilePath)) {
773
+ continue;
774
+ }
775
+ if (await isFileTrackedByGit(relativePath, mainWorkspacePath)) {
776
+ getLogger().debug(`Skipping ${relativePath} (tracked by git, already in worktree)`);
777
+ continue;
778
+ }
779
+ if (await fs2.pathExists(worktreeFilePath)) {
780
+ getLogger().debug(`Skipping ${relativePath} (already exists in worktree)`);
781
+ continue;
782
+ }
783
+ await fs2.ensureDir(path2.dirname(worktreeFilePath));
784
+ await this.environment.copyIfExists(mainFilePath, worktreeFilePath);
785
+ getLogger().debug(`Copied gitignored file: ${relativePath}`);
786
+ copiedCount++;
787
+ }
788
+ if (copiedCount > 0) {
789
+ getLogger().debug(`Copied ${copiedCount} gitignored file(s) to loom`);
790
+ }
791
+ } catch (error) {
792
+ getLogger().warn(`Warning: Failed to copy gitignored files: ${error instanceof Error ? error.message : "Unknown error"}`);
793
+ }
794
+ }
740
795
  /**
741
796
  * Setup PORT environment variable for web projects
742
797
  * Only called when project has web capabilities
@@ -914,6 +969,7 @@ This PR was created automatically by iloom.`;
914
969
  await this.copyEnvironmentFiles(worktreePath);
915
970
  await this.copyIloomSettings(worktreePath);
916
971
  await this.copyClaudeSettings(worktreePath);
972
+ await this.copyGitIgnoredFiles(worktreePath);
917
973
  const settingsData = await this.settings.loadSettings();
918
974
  const basePort = ((_b = (_a = settingsData.capabilities) == null ? void 0 : _a.web) == null ? void 0 : _b.basePort) ?? 3e3;
919
975
  let port = basePort;
@@ -964,8 +1020,8 @@ This PR was created automatically by iloom.`;
964
1020
  const executablePath = (_i = input.options) == null ? void 0 : _i.executablePath;
965
1021
  if (enableClaude || enableCode || enableDevServer || enableTerminal) {
966
1022
  getLogger().info("Launching workspace components...");
967
- const { LoomLauncher } = await import("./LoomLauncher-ZHDTPKED.js");
968
- const { ClaudeContextManager } = await import("./ClaudeContextManager-PQ46VILL.js");
1023
+ const { LoomLauncher } = await import("./LoomLauncher-5QU42LOM.js");
1024
+ const { ClaudeContextManager } = await import("./ClaudeContextManager-7WX7DUNI.js");
969
1025
  const claudeContext = new ClaudeContextManager(void 0, void 0, this.settings);
970
1026
  const launcher = new LoomLauncher(claudeContext, this.settings);
971
1027
  await launcher.launchLoom({
@@ -2371,4 +2427,4 @@ export {
2371
2427
  DatabaseManager,
2372
2428
  ResourceCleanup
2373
2429
  };
2374
- //# sourceMappingURL=chunk-Z5BM4JWB.js.map
2430
+ //# sourceMappingURL=chunk-46JVEGUW.js.map