@iloom/cli 0.3.2 → 0.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/{BranchNamingService-JYO746H7.js → BranchNamingService-A77VI6AI.js} +2 -2
- package/dist/ClaudeContextManager-BN7RE5ZQ.js +15 -0
- package/dist/ClaudeService-DLYLJUPA.js +14 -0
- package/dist/{GitHubService-UAMH7DMF.js → GitHubService-FZHHBOFG.js} +3 -3
- package/dist/{LoomLauncher-FVZECY3C.js → LoomLauncher-ZV3ZZIBA.js} +23 -20
- package/dist/LoomLauncher-ZV3ZZIBA.js.map +1 -0
- package/dist/{PromptTemplateManager-A52RUAMS.js → PromptTemplateManager-6HH3PVXV.js} +2 -2
- package/dist/README.md +3 -3
- package/dist/{SettingsManager-MTVX57WR.js → SettingsManager-I2LRCW2A.js} +2 -2
- package/dist/{SettingsMigrationManager-AGIIIPDQ.js → SettingsMigrationManager-TJ7UWZG5.js} +3 -3
- package/dist/agents/iloom-issue-complexity-evaluator.md +18 -3
- package/dist/agents/iloom-issue-enhancer.md +1 -1
- package/dist/{chunk-OAP6SASD.js → chunk-2CXREBLZ.js} +2 -2
- package/dist/{chunk-KG343GSG.js → chunk-2IJEMXOB.js} +359 -99
- package/dist/chunk-2IJEMXOB.js.map +1 -0
- package/dist/{chunk-FOV7RRQ2.js → chunk-2MAIX45J.js} +4 -4
- package/dist/{chunk-5NTD4MCZ.js → chunk-5Q3NDNNV.js} +29 -5
- package/dist/chunk-5Q3NDNNV.js.map +1 -0
- package/dist/{chunk-GVICXJHW.js → chunk-5VK4NRSF.js} +2 -2
- package/dist/{chunk-C7ASXK6J.js → chunk-AKUJXDNW.js} +2 -2
- package/dist/{chunk-UCZ24SUE.js → chunk-CDZERT7Z.js} +21 -9
- package/dist/chunk-CDZERT7Z.js.map +1 -0
- package/dist/{chunk-JKXJ7BGL.js → chunk-CE26YH2U.js} +42 -3
- package/dist/chunk-CE26YH2U.js.map +1 -0
- package/dist/{chunk-ZZZWQGTS.js → chunk-CFFQ2Z7A.js} +74 -75
- package/dist/chunk-CFFQ2Z7A.js.map +1 -0
- package/dist/{chunk-FXMLNKLT.js → chunk-DLHA5VQ3.js} +174 -5
- package/dist/chunk-DLHA5VQ3.js.map +1 -0
- package/dist/{chunk-GOG3ZB7O.js → chunk-IFB4Z76W.js} +23 -4
- package/dist/chunk-IFB4Z76W.js.map +1 -0
- package/dist/{chunk-F4ENT6AC.js → chunk-M7JJCX53.js} +2 -2
- package/dist/{chunk-KLBYVHPK.js → chunk-OSCLCMDG.js} +2 -2
- package/dist/{chunk-ZLIHIUDQ.js → chunk-OYF4VIFI.js} +2 -2
- package/dist/{chunk-A2P7NZTB.js → chunk-PGPI5LR4.js} +4 -4
- package/dist/{chunk-WEN5C5DM.js → chunk-RIEO2WML.js} +4 -1
- package/dist/chunk-RIEO2WML.js.map +1 -0
- package/dist/{chunk-UERERX6M.js → chunk-SUOXY5WJ.js} +2 -2
- package/dist/{init-7IIM35LQ.js → chunk-UAN4A3YU.js} +343 -46
- package/dist/chunk-UAN4A3YU.js.map +1 -0
- package/dist/{claude-KIZYXTSG.js → claude-W52VKI6L.js} +2 -2
- package/dist/{cleanup-6WYUD5SN.js → cleanup-H4VXU3C3.js} +12 -12
- package/dist/cli.js +188 -91
- package/dist/cli.js.map +1 -1
- package/dist/{color-ZVALX37U.js → color-F7RU6B6Z.js} +10 -4
- package/dist/{contribute-7YJHZTO7.js → contribute-Y7IQV5QY.js} +4 -4
- package/dist/{feedback-752MGDPG.js → feedback-XTUCKJNT.js} +11 -9
- package/dist/{feedback-752MGDPG.js.map → feedback-XTUCKJNT.js.map} +1 -1
- package/dist/{git-TAFVDB3J.js → git-IYA53VIC.js} +7 -3
- package/dist/{ignite-OAMDUN27.js → ignite-T74RYXCA.js} +19 -71
- package/dist/ignite-T74RYXCA.js.map +1 -0
- package/dist/index.d.ts +52 -8
- package/dist/index.js +132 -84
- package/dist/index.js.map +1 -1
- package/dist/init-4FHTAM3F.js +19 -0
- package/dist/{neon-helpers-5HBYO2VP.js → neon-helpers-77PBPGJ5.js} +3 -3
- package/dist/{open-FCHKQ77R.js → open-UMXANW5S.js} +4 -4
- package/dist/{prompt-7INJ7YRU.js → prompt-QALMYTVC.js} +4 -2
- package/dist/prompt-QALMYTVC.js.map +1 -0
- package/dist/prompts/init-prompt.txt +82 -8
- package/dist/prompts/issue-prompt.txt +18 -11
- package/dist/prompts/regular-prompt.txt +373 -14
- package/dist/{rebase-Q7WXK566.js → rebase-VJ2VKR6R.js} +11 -11
- package/dist/rebase-VJ2VKR6R.js.map +1 -0
- package/dist/{run-SJPM6YRI.js → run-MJYY4PUT.js} +4 -4
- package/dist/schema/settings.schema.json +21 -3
- package/dist/{test-git-DEUE656D.js → test-git-IT5EWQ5C.js} +3 -3
- package/dist/{test-prefix-Y6Z6ZHSF.js → test-prefix-NPWDPUUH.js} +3 -3
- package/package.json +2 -1
- package/dist/ClaudeContextManager-5WPRJIIW.js +0 -15
- package/dist/ClaudeService-Z4KA7QOW.js +0 -14
- package/dist/LoomLauncher-FVZECY3C.js.map +0 -1
- package/dist/chunk-5NTD4MCZ.js.map +0 -1
- package/dist/chunk-FXMLNKLT.js.map +0 -1
- package/dist/chunk-GOG3ZB7O.js.map +0 -1
- package/dist/chunk-JKXJ7BGL.js.map +0 -1
- package/dist/chunk-KG343GSG.js.map +0 -1
- package/dist/chunk-PRE7KTM4.js +0 -302
- package/dist/chunk-PRE7KTM4.js.map +0 -1
- package/dist/chunk-UCZ24SUE.js.map +0 -1
- package/dist/chunk-WEN5C5DM.js.map +0 -1
- package/dist/chunk-ZZZWQGTS.js.map +0 -1
- package/dist/ignite-OAMDUN27.js.map +0 -1
- package/dist/init-7IIM35LQ.js.map +0 -1
- package/dist/rebase-Q7WXK566.js.map +0 -1
- /package/dist/{BranchNamingService-JYO746H7.js.map → BranchNamingService-A77VI6AI.js.map} +0 -0
- /package/dist/{ClaudeContextManager-5WPRJIIW.js.map → ClaudeContextManager-BN7RE5ZQ.js.map} +0 -0
- /package/dist/{ClaudeService-Z4KA7QOW.js.map → ClaudeService-DLYLJUPA.js.map} +0 -0
- /package/dist/{GitHubService-UAMH7DMF.js.map → GitHubService-FZHHBOFG.js.map} +0 -0
- /package/dist/{PromptTemplateManager-A52RUAMS.js.map → PromptTemplateManager-6HH3PVXV.js.map} +0 -0
- /package/dist/{SettingsManager-MTVX57WR.js.map → SettingsManager-I2LRCW2A.js.map} +0 -0
- /package/dist/{SettingsMigrationManager-AGIIIPDQ.js.map → SettingsMigrationManager-TJ7UWZG5.js.map} +0 -0
- /package/dist/{chunk-OAP6SASD.js.map → chunk-2CXREBLZ.js.map} +0 -0
- /package/dist/{chunk-FOV7RRQ2.js.map → chunk-2MAIX45J.js.map} +0 -0
- /package/dist/{chunk-GVICXJHW.js.map → chunk-5VK4NRSF.js.map} +0 -0
- /package/dist/{chunk-C7ASXK6J.js.map → chunk-AKUJXDNW.js.map} +0 -0
- /package/dist/{chunk-F4ENT6AC.js.map → chunk-M7JJCX53.js.map} +0 -0
- /package/dist/{chunk-KLBYVHPK.js.map → chunk-OSCLCMDG.js.map} +0 -0
- /package/dist/{chunk-ZLIHIUDQ.js.map → chunk-OYF4VIFI.js.map} +0 -0
- /package/dist/{chunk-A2P7NZTB.js.map → chunk-PGPI5LR4.js.map} +0 -0
- /package/dist/{chunk-UERERX6M.js.map → chunk-SUOXY5WJ.js.map} +0 -0
- /package/dist/{claude-KIZYXTSG.js.map → claude-W52VKI6L.js.map} +0 -0
- /package/dist/{cleanup-6WYUD5SN.js.map → cleanup-H4VXU3C3.js.map} +0 -0
- /package/dist/{color-ZVALX37U.js.map → color-F7RU6B6Z.js.map} +0 -0
- /package/dist/{contribute-7YJHZTO7.js.map → contribute-Y7IQV5QY.js.map} +0 -0
- /package/dist/{git-TAFVDB3J.js.map → git-IYA53VIC.js.map} +0 -0
- /package/dist/{neon-helpers-5HBYO2VP.js.map → init-4FHTAM3F.js.map} +0 -0
- /package/dist/{prompt-7INJ7YRU.js.map → neon-helpers-77PBPGJ5.js.map} +0 -0
- /package/dist/{open-FCHKQ77R.js.map → open-UMXANW5S.js.map} +0 -0
- /package/dist/{run-SJPM6YRI.js.map → run-MJYY4PUT.js.map} +0 -0
- /package/dist/{test-git-DEUE656D.js.map → test-git-IT5EWQ5C.js.map} +0 -0
- /package/dist/{test-prefix-Y6Z6ZHSF.js.map → test-prefix-NPWDPUUH.js.map} +0 -0
package/dist/index.js
CHANGED
|
@@ -272,12 +272,18 @@ var init_SettingsManager = __esm({
|
|
|
272
272
|
remote: z.string().optional()
|
|
273
273
|
}).optional().describe("Merge behavior configuration: local (merge locally) or github-pr (create PR)"),
|
|
274
274
|
ide: z.object({
|
|
275
|
-
type: z.enum(["vscode", "cursor", "webstorm", "sublime", "intellij", "windsurf"]).default("vscode").describe(
|
|
276
|
-
"IDE to launch when starting a loom. Options: vscode (Visual Studio Code), cursor (Cursor AI editor), webstorm (JetBrains WebStorm), sublime (Sublime Text), intellij (JetBrains IntelliJ IDEA), windsurf (Windsurf editor)."
|
|
275
|
+
type: z.enum(["vscode", "cursor", "webstorm", "sublime", "intellij", "windsurf", "antigravity"]).default("vscode").describe(
|
|
276
|
+
"IDE to launch when starting a loom. Options: vscode (Visual Studio Code), cursor (Cursor AI editor), webstorm (JetBrains WebStorm), sublime (Sublime Text), intellij (JetBrains IntelliJ IDEA), windsurf (Windsurf editor), antigravity (Antigravity IDE)."
|
|
277
277
|
)
|
|
278
278
|
}).optional().describe(
|
|
279
|
-
"IDE configuration for workspace launches. Controls which editor opens when you start a loom. Supports VSCode, Cursor, WebStorm, Sublime Text, IntelliJ, and
|
|
280
|
-
)
|
|
279
|
+
"IDE configuration for workspace launches. Controls which editor opens when you start a loom. Supports VSCode, Cursor, WebStorm, Sublime Text, IntelliJ, Windsurf, and Antigravity. Note: Color synchronization (title bar colors) only works with VSCode-compatible editors (vscode, cursor, windsurf, antigravity)."
|
|
280
|
+
),
|
|
281
|
+
colors: z.object({
|
|
282
|
+
terminal: z.boolean().default(true).describe("Apply terminal background colors based on branch name (macOS only)"),
|
|
283
|
+
vscode: z.boolean().default(false).describe(
|
|
284
|
+
"Apply VSCode/Cursor title bar colors based on branch name. Note: This modifies .vscode/settings.json which may be in source control. Default is false for safety; enable via init or explicitly if .vscode is gitignored."
|
|
285
|
+
)
|
|
286
|
+
}).optional().describe("Color synchronization settings for workspace identification")
|
|
281
287
|
});
|
|
282
288
|
IloomSettingsSchemaNoDefaults = z.object({
|
|
283
289
|
mainBranch: z.string().min(1, "Settings 'mainBranch' cannot be empty").optional().describe("Name of the main/primary branch for the repository"),
|
|
@@ -328,12 +334,18 @@ var init_SettingsManager = __esm({
|
|
|
328
334
|
remote: z.string().optional()
|
|
329
335
|
}).optional().describe("Merge behavior configuration: local (merge locally) or github-pr (create PR)"),
|
|
330
336
|
ide: z.object({
|
|
331
|
-
type: z.enum(["vscode", "cursor", "webstorm", "sublime", "intellij", "windsurf"]).optional().describe(
|
|
332
|
-
"IDE to launch when starting a loom. Options: vscode (Visual Studio Code), cursor (Cursor AI editor), webstorm (JetBrains WebStorm), sublime (Sublime Text), intellij (JetBrains IntelliJ IDEA), windsurf (Windsurf editor)."
|
|
337
|
+
type: z.enum(["vscode", "cursor", "webstorm", "sublime", "intellij", "windsurf", "antigravity"]).optional().describe(
|
|
338
|
+
"IDE to launch when starting a loom. Options: vscode (Visual Studio Code), cursor (Cursor AI editor), webstorm (JetBrains WebStorm), sublime (Sublime Text), intellij (JetBrains IntelliJ IDEA), windsurf (Windsurf editor), antigravity (Antigravity IDE)."
|
|
333
339
|
)
|
|
334
340
|
}).optional().describe(
|
|
335
|
-
"IDE configuration for workspace launches. Controls which editor opens when you start a loom. Supports VSCode, Cursor, WebStorm, Sublime Text, IntelliJ, and
|
|
336
|
-
)
|
|
341
|
+
"IDE configuration for workspace launches. Controls which editor opens when you start a loom. Supports VSCode, Cursor, WebStorm, Sublime Text, IntelliJ, Windsurf, and Antigravity. Note: Color synchronization (title bar colors) only works with VSCode-compatible editors (vscode, cursor, windsurf, antigravity)."
|
|
342
|
+
),
|
|
343
|
+
colors: z.object({
|
|
344
|
+
terminal: z.boolean().optional().describe("Apply terminal background colors based on branch name (macOS only)"),
|
|
345
|
+
vscode: z.boolean().optional().describe(
|
|
346
|
+
"Apply VSCode/Cursor title bar colors based on branch name. Note: This modifies .vscode/settings.json which may be in source control."
|
|
347
|
+
)
|
|
348
|
+
}).optional().describe("Color synchronization settings for workspace identification")
|
|
337
349
|
});
|
|
338
350
|
SettingsManager = class {
|
|
339
351
|
/**
|
|
@@ -543,99 +555,52 @@ ${errorMessages.join("\n")}`
|
|
|
543
555
|
// src/utils/color.ts
|
|
544
556
|
var color_exports = {};
|
|
545
557
|
__export(color_exports, {
|
|
558
|
+
MIN_COLOR_DISTANCE: () => MIN_COLOR_DISTANCE,
|
|
546
559
|
calculateForegroundColor: () => calculateForegroundColor,
|
|
560
|
+
colorDistance: () => colorDistance,
|
|
547
561
|
generateColorFromBranchName: () => generateColorFromBranchName,
|
|
548
562
|
getColorPalette: () => getColorPalette,
|
|
549
563
|
hexToRgb: () => hexToRgb,
|
|
550
564
|
lightenColor: () => lightenColor,
|
|
551
565
|
rgbToHex: () => rgbToHex,
|
|
552
|
-
saturateColor: () => saturateColor
|
|
566
|
+
saturateColor: () => saturateColor,
|
|
567
|
+
selectDistinctColor: () => selectDistinctColor
|
|
553
568
|
});
|
|
554
569
|
import { createHash as createHash2 } from "crypto";
|
|
555
570
|
function getColorPalette() {
|
|
556
571
|
return [
|
|
557
|
-
|
|
558
|
-
{ r: 220, g: 235, b: 248 },
|
|
572
|
+
{ r: 220, g: 235, b: 255 },
|
|
559
573
|
// 0: Soft blue
|
|
560
|
-
{ r:
|
|
574
|
+
{ r: 255, g: 220, b: 235 },
|
|
561
575
|
// 1: Soft pink
|
|
562
|
-
{ r: 220, g:
|
|
576
|
+
{ r: 220, g: 255, b: 235 },
|
|
563
577
|
// 2: Soft green
|
|
564
|
-
{ r:
|
|
578
|
+
{ r: 255, g: 245, b: 220 },
|
|
565
579
|
// 3: Soft cream
|
|
566
|
-
{ r:
|
|
580
|
+
{ r: 245, g: 220, b: 255 },
|
|
567
581
|
// 4: Soft lavender
|
|
568
|
-
{ r: 220, g:
|
|
582
|
+
{ r: 220, g: 245, b: 255 },
|
|
569
583
|
// 5: Soft cyan
|
|
570
584
|
{ r: 235, g: 235, b: 235 },
|
|
571
585
|
// 6: Soft grey
|
|
572
|
-
{ r:
|
|
573
|
-
// 7: Soft
|
|
574
|
-
{ r:
|
|
575
|
-
// 8: Soft
|
|
576
|
-
{ r:
|
|
577
|
-
// 9: Soft
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
// 15: Pale sage
|
|
591
|
-
{ r: 245, g: 250, b: 235 },
|
|
592
|
-
// 16: Pale lemon
|
|
593
|
-
{ r: 245, g: 235, b: 235 },
|
|
594
|
-
// 17: Pale blush
|
|
595
|
-
{ r: 235, g: 235, b: 250 },
|
|
596
|
-
// 18: Pale lavender blue
|
|
597
|
-
{ r: 250, g: 235, b: 235 },
|
|
598
|
-
// 19: Pale coral
|
|
599
|
-
{ r: 235, g: 250, b: 250 },
|
|
600
|
-
// 20: Pale aqua
|
|
601
|
-
{ r: 240, g: 248, b: 255 },
|
|
602
|
-
// 21: Alice blue
|
|
603
|
-
{ r: 255, g: 240, b: 248 },
|
|
604
|
-
// 22: Lavender blush
|
|
605
|
-
{ r: 240, g: 255, b: 248 },
|
|
606
|
-
// 23: Honeydew tint
|
|
607
|
-
{ r: 255, g: 248, b: 240 },
|
|
608
|
-
// 24: Antique white
|
|
609
|
-
{ r: 248, g: 240, b: 255 },
|
|
610
|
-
// 25: Magnolia
|
|
611
|
-
{ r: 240, g: 248, b: 240 },
|
|
612
|
-
// 26: Mint cream tint
|
|
613
|
-
{ r: 248, g: 255, b: 240 },
|
|
614
|
-
// 27: Ivory tint
|
|
615
|
-
{ r: 248, g: 240, b: 240 },
|
|
616
|
-
// 28: Misty rose tint
|
|
617
|
-
{ r: 240, g: 240, b: 255 },
|
|
618
|
-
// 29: Ghost white tint
|
|
619
|
-
{ r: 255, g: 245, b: 238 },
|
|
620
|
-
// 30: Seashell
|
|
621
|
-
{ r: 245, g: 255, b: 250 },
|
|
622
|
-
// 31: Azure mist
|
|
623
|
-
{ r: 250, g: 245, b: 255 },
|
|
624
|
-
// 32: Lilac mist
|
|
625
|
-
{ r: 255, g: 250, b: 245 },
|
|
626
|
-
// 33: Snow peach
|
|
627
|
-
{ r: 238, g: 245, b: 255 },
|
|
628
|
-
// 34: Powder blue
|
|
629
|
-
{ r: 255, g: 238, b: 245 },
|
|
630
|
-
// 35: Pink lace
|
|
631
|
-
{ r: 245, g: 255, b: 238 },
|
|
632
|
-
// 36: Pale lime
|
|
633
|
-
{ r: 238, g: 255, b: 245 },
|
|
634
|
-
// 37: Pale turquoise
|
|
635
|
-
{ r: 245, g: 238, b: 255 },
|
|
636
|
-
// 38: Pale violet
|
|
637
|
-
{ r: 255, g: 245, b: 255 }
|
|
638
|
-
// 39: Pale magenta
|
|
586
|
+
{ r: 255, g: 230, b: 230 },
|
|
587
|
+
// 7: Soft coral
|
|
588
|
+
{ r: 230, g: 255, b: 230 },
|
|
589
|
+
// 8: Soft mint
|
|
590
|
+
{ r: 255, g: 245, b: 230 },
|
|
591
|
+
// 9: Soft peach
|
|
592
|
+
{ r: 220, g: 255, b: 255 },
|
|
593
|
+
// 10: Soft aqua
|
|
594
|
+
{ r: 255, g: 220, b: 255 },
|
|
595
|
+
// 11: Soft magenta
|
|
596
|
+
{ r: 255, g: 255, b: 220 },
|
|
597
|
+
// 12: Soft yellow
|
|
598
|
+
{ r: 235, g: 220, b: 255 },
|
|
599
|
+
// 13: Soft violet
|
|
600
|
+
{ r: 220, g: 255, b: 245 },
|
|
601
|
+
// 14: Soft sea green
|
|
602
|
+
{ r: 255, g: 235, b: 220 }
|
|
603
|
+
// 15: Soft salmon
|
|
639
604
|
];
|
|
640
605
|
}
|
|
641
606
|
function rgbToHex(r, g, b) {
|
|
@@ -675,6 +640,51 @@ function generateColorFromBranchName(branchName) {
|
|
|
675
640
|
index
|
|
676
641
|
};
|
|
677
642
|
}
|
|
643
|
+
function colorDistance(a, b) {
|
|
644
|
+
return Math.sqrt(
|
|
645
|
+
Math.pow(a.r - b.r, 2) + Math.pow(a.g - b.g, 2) + Math.pow(a.b - b.b, 2)
|
|
646
|
+
);
|
|
647
|
+
}
|
|
648
|
+
function selectDistinctColor(branchName, usedHexColors) {
|
|
649
|
+
const palette = getColorPalette();
|
|
650
|
+
const hashBasedColor = generateColorFromBranchName(branchName);
|
|
651
|
+
if (usedHexColors.length === 0) {
|
|
652
|
+
return hashBasedColor;
|
|
653
|
+
}
|
|
654
|
+
const usedRgbColors = [];
|
|
655
|
+
for (const hex of usedHexColors) {
|
|
656
|
+
try {
|
|
657
|
+
usedRgbColors.push(hexToRgb(hex));
|
|
658
|
+
} catch {
|
|
659
|
+
logger_default.debug(`[selectDistinctColor] Skipping invalid hex color: ${hex}`);
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
if (usedRgbColors.length === 0) {
|
|
663
|
+
return hashBasedColor;
|
|
664
|
+
}
|
|
665
|
+
const isTooSimilar = usedRgbColors.some(
|
|
666
|
+
(usedRgb) => colorDistance(hashBasedColor.rgb, usedRgb) < MIN_COLOR_DISTANCE
|
|
667
|
+
);
|
|
668
|
+
if (!isTooSimilar) {
|
|
669
|
+
return hashBasedColor;
|
|
670
|
+
}
|
|
671
|
+
for (let i = 0; i < palette.length; i++) {
|
|
672
|
+
const candidateRgb = palette[i];
|
|
673
|
+
if (!candidateRgb) continue;
|
|
674
|
+
const isDistinct = usedRgbColors.every(
|
|
675
|
+
(usedRgb) => colorDistance(candidateRgb, usedRgb) >= MIN_COLOR_DISTANCE
|
|
676
|
+
);
|
|
677
|
+
if (isDistinct) {
|
|
678
|
+
return {
|
|
679
|
+
rgb: candidateRgb,
|
|
680
|
+
hex: rgbToHex(candidateRgb.r, candidateRgb.g, candidateRgb.b),
|
|
681
|
+
index: i
|
|
682
|
+
};
|
|
683
|
+
}
|
|
684
|
+
}
|
|
685
|
+
logger_default.debug(`[selectDistinctColor] No distinct color found, falling back to hash-based for ${branchName}`);
|
|
686
|
+
return hashBasedColor;
|
|
687
|
+
}
|
|
678
688
|
function lightenColor(rgb, amount) {
|
|
679
689
|
const clamp = (value) => Math.min(255, Math.max(0, Math.round(value)));
|
|
680
690
|
return {
|
|
@@ -703,10 +713,12 @@ function calculateForegroundColor(rgb) {
|
|
|
703
713
|
const luminance = 0.2126 * r + 0.7152 * g + 0.0722 * b;
|
|
704
714
|
return luminance > 0.5 ? "#000000" : "#ffffff";
|
|
705
715
|
}
|
|
716
|
+
var MIN_COLOR_DISTANCE;
|
|
706
717
|
var init_color = __esm({
|
|
707
718
|
"src/utils/color.ts"() {
|
|
708
719
|
"use strict";
|
|
709
720
|
init_logger();
|
|
721
|
+
MIN_COLOR_DISTANCE = 20;
|
|
710
722
|
}
|
|
711
723
|
});
|
|
712
724
|
|
|
@@ -959,7 +971,7 @@ async function branchExists(branchName, path6 = process.cwd(), includeRemote = t
|
|
|
959
971
|
return false;
|
|
960
972
|
}
|
|
961
973
|
}
|
|
962
|
-
async function
|
|
974
|
+
async function getWorktreeRoot(path6 = process.cwd()) {
|
|
963
975
|
try {
|
|
964
976
|
const result = await executeGitCommand(["rev-parse", "--show-toplevel"], { cwd: path6 });
|
|
965
977
|
return result.trim();
|
|
@@ -967,6 +979,20 @@ async function getRepoRoot(path6 = process.cwd()) {
|
|
|
967
979
|
return null;
|
|
968
980
|
}
|
|
969
981
|
}
|
|
982
|
+
async function getRepoRoot(path6 = process.cwd()) {
|
|
983
|
+
try {
|
|
984
|
+
const gitCommonDir = await executeGitCommand(
|
|
985
|
+
["rev-parse", "--path-format=absolute", "--git-common-dir"],
|
|
986
|
+
{ cwd: path6 }
|
|
987
|
+
);
|
|
988
|
+
const trimmedPath = gitCommonDir.trim();
|
|
989
|
+
const repoRoot = trimmedPath.replace(/\/\.git\/worktrees\/[^/]+$/, "").replace(/\/\.git$/, "");
|
|
990
|
+
return repoRoot;
|
|
991
|
+
} catch (error) {
|
|
992
|
+
logger.warn(`Failed to determine repo root from git-common-dir: ${path6}`, error instanceof Error ? error.message : String(error));
|
|
993
|
+
return null;
|
|
994
|
+
}
|
|
995
|
+
}
|
|
970
996
|
async function findMainWorktreePath(path6 = process.cwd(), options) {
|
|
971
997
|
try {
|
|
972
998
|
const output = await executeGitCommand(["worktree", "list", "--porcelain"], { cwd: path6 });
|
|
@@ -1165,6 +1191,14 @@ async function isFileTrackedByGit(filePath, cwd = process.cwd()) {
|
|
|
1165
1191
|
throw error;
|
|
1166
1192
|
}
|
|
1167
1193
|
}
|
|
1194
|
+
async function isFileGitignored(filePath, cwd = process.cwd()) {
|
|
1195
|
+
try {
|
|
1196
|
+
await executeGitCommand(["check-ignore", "-q", filePath], { cwd });
|
|
1197
|
+
return true;
|
|
1198
|
+
} catch {
|
|
1199
|
+
return false;
|
|
1200
|
+
}
|
|
1201
|
+
}
|
|
1168
1202
|
|
|
1169
1203
|
// src/lib/GitWorktreeManager.ts
|
|
1170
1204
|
var GitWorktreeManager = class {
|
|
@@ -3382,6 +3416,9 @@ var PromptTemplateManager = class {
|
|
|
3382
3416
|
if (variables.SETTINGS_SCHEMA_CONTENT !== void 0) {
|
|
3383
3417
|
result = result.replace(/SETTINGS_SCHEMA_CONTENT/g, variables.SETTINGS_SCHEMA_CONTENT);
|
|
3384
3418
|
}
|
|
3419
|
+
if (variables.VSCODE_SETTINGS_GITIGNORED !== void 0) {
|
|
3420
|
+
result = result.replace(/VSCODE_SETTINGS_GITIGNORED/g, variables.VSCODE_SETTINGS_GITIGNORED);
|
|
3421
|
+
}
|
|
3385
3422
|
return result;
|
|
3386
3423
|
}
|
|
3387
3424
|
/**
|
|
@@ -3627,6 +3664,14 @@ var ClaudeContextManager = class {
|
|
|
3627
3664
|
}
|
|
3628
3665
|
};
|
|
3629
3666
|
|
|
3667
|
+
// src/types/index.ts
|
|
3668
|
+
var UserAbortedCommitError = class extends Error {
|
|
3669
|
+
constructor(message = "User aborted the commit") {
|
|
3670
|
+
super(message);
|
|
3671
|
+
this.name = "UserAbortedCommitError";
|
|
3672
|
+
}
|
|
3673
|
+
};
|
|
3674
|
+
|
|
3630
3675
|
// src/utils/index.ts
|
|
3631
3676
|
init_logger();
|
|
3632
3677
|
|
|
@@ -3939,6 +3984,7 @@ export {
|
|
|
3939
3984
|
IssueTrackerFactory,
|
|
3940
3985
|
LinearMarkupConverter,
|
|
3941
3986
|
TableFormatter,
|
|
3987
|
+
UserAbortedCommitError,
|
|
3942
3988
|
WorkspaceManager,
|
|
3943
3989
|
branchExists,
|
|
3944
3990
|
createLogger,
|
|
@@ -3953,8 +3999,10 @@ export {
|
|
|
3953
3999
|
getCurrentBranch,
|
|
3954
4000
|
getDefaultBranch,
|
|
3955
4001
|
getRepoRoot,
|
|
4002
|
+
getWorktreeRoot,
|
|
3956
4003
|
hasUncommittedChanges,
|
|
3957
4004
|
isEmptyRepository,
|
|
4005
|
+
isFileGitignored,
|
|
3958
4006
|
isFileTrackedByGit,
|
|
3959
4007
|
isPRBranch,
|
|
3960
4008
|
isValidGitRepo,
|