@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.
- package/LICENSE +1 -1
- package/README.md +21 -2
- package/dist/{ClaudeContextManager-X2Y72GRL.js → ClaudeContextManager-HR5JQKAI.js} +4 -4
- package/dist/{ClaudeService-7P32TTES.js → ClaudeService-TK7FMC2X.js} +3 -3
- package/dist/{GitHubService-ACZVNTJE.js → GitHubService-TGWJN4V4.js} +3 -3
- package/dist/{LoomLauncher-3I47SUPV.js → LoomLauncher-73NXL2CL.js} +4 -4
- package/dist/README.md +21 -2
- package/dist/{SettingsManager-QR7V2IW2.js → SettingsManager-AW3JTJHD.js} +2 -2
- package/dist/{build-IC4CJRMP.js → build-THZI572G.js} +6 -6
- package/dist/{chunk-Z6F5CUS6.js → chunk-3I4ONZRT.js} +3 -3
- package/dist/{chunk-THS5L54H.js → chunk-4CO6KG5S.js} +50 -3
- package/dist/chunk-4CO6KG5S.js.map +1 -0
- package/dist/{chunk-MZPRBNYC.js → chunk-6IIL5M2L.js} +2 -2
- package/dist/{chunk-2JPXGGP4.js → chunk-A7NJF73J.js} +2 -2
- package/dist/{chunk-H6ST2TGP.js → chunk-AR5QKYNE.js} +3 -3
- package/dist/{chunk-PL2FDYEK.js → chunk-CWRI4JC3.js} +2 -2
- package/dist/{chunk-I23OQB4Y.js → chunk-DGG2VY7B.js} +6 -5
- package/dist/chunk-DGG2VY7B.js.map +1 -0
- package/dist/{chunk-RNBIISBZ.js → chunk-FJDRTVJX.js} +50 -5
- package/dist/chunk-FJDRTVJX.js.map +1 -0
- package/dist/{chunk-NTTSUAVM.js → chunk-IZIYLYPK.js} +2 -2
- package/dist/{chunk-TGRK3CHF.js → chunk-KJTVU3HZ.js} +4 -4
- package/dist/{chunk-SC6X5EBG.js → chunk-KXGQYLFZ.js} +3 -3
- package/dist/{chunk-USSL2X4A.js → chunk-NUACL52E.js} +2 -2
- package/dist/{chunk-JT5LZRMI.js → chunk-NWMORW3U.js} +2 -2
- package/dist/{chunk-PVW6JE7E.js → chunk-OFDN5NKS.js} +4 -3
- package/dist/{chunk-PVW6JE7E.js.map → chunk-OFDN5NKS.js.map} +1 -1
- package/dist/{chunk-HZXBHMVM.js → chunk-R4YWBGY6.js} +3 -3
- package/dist/{chunk-XFEK2X2D.js → chunk-RI2YL6TK.js} +9 -3
- package/dist/chunk-RI2YL6TK.js.map +1 -0
- package/dist/{chunk-6Y3FTRJL.js → chunk-SOSQILHO.js} +102 -51
- package/dist/chunk-SOSQILHO.js.map +1 -0
- package/dist/{chunk-4GAJJUYS.js → chunk-TC7APDKU.js} +2 -2
- package/dist/{chunk-UDZCTLD6.js → chunk-ULSWCPQG.js} +3 -3
- package/dist/{chunk-5LVVQGB3.js → chunk-VPTAX5TR.js} +7 -7
- package/dist/chunk-VPTAX5TR.js.map +1 -0
- package/dist/{chunk-RD7OPXZK.js → chunk-W6DP5RVR.js} +3 -3
- package/dist/{chunk-XJHQVOT6.js → chunk-WHI5KEOX.js} +2 -2
- package/dist/{chunk-2HZX6AMR.js → chunk-YKFCCV6S.js} +2 -2
- package/dist/{chunk-OAVJR4PM.js → chunk-Z2TWEXR7.js} +2 -2
- package/dist/{cleanup-M6N7KV7E.js → cleanup-PJRIFFU4.js} +16 -16
- package/dist/cli.js +79 -62
- package/dist/cli.js.map +1 -1
- package/dist/{commit-ORHR53KW.js → commit-IVP3M4HG.js} +10 -9
- package/dist/commit-IVP3M4HG.js.map +1 -0
- package/dist/{compile-EOWJORKO.js → compile-R2J65HBQ.js} +6 -6
- package/dist/{contribute-4KCEOHSH.js → contribute-VDZXHK5Y.js} +4 -4
- package/dist/{dev-server-Q6M62ATG.js → dev-server-7F622OEO.js} +8 -8
- package/dist/{feedback-XRI7SGYX.js → feedback-E7VET7CL.js} +6 -6
- package/dist/{git-W3XUIFTR.js → git-2QDQ2X2S.js} +3 -3
- package/dist/{ignite-3FHQY23X.js → ignite-IW35CDBD.js} +10 -10
- package/dist/index.d.ts +18 -0
- package/dist/index.js +14 -6
- package/dist/index.js.map +1 -1
- package/dist/{init-ALYWKNWG.js → init-676DHF6R.js} +5 -5
- package/dist/issues-PJSOLOBJ.js +138 -0
- package/dist/issues-PJSOLOBJ.js.map +1 -0
- package/dist/{lint-IHUH45OC.js → lint-CJM7BAIM.js} +6 -6
- package/dist/mcp/issue-management-server.js +5 -4
- package/dist/mcp/issue-management-server.js.map +1 -1
- package/dist/{open-KWOV2OFO.js → open-544H7JF5.js} +8 -8
- package/dist/{plan-P6MXL7AU.js → plan-Q7ELXDLC.js} +12 -12
- package/dist/prompts/init-prompt.txt +39 -21
- package/dist/{rebase-AJOJOZUG.js → rebase-YND35CIE.js} +5 -5
- package/dist/{recap-GKJXMDXW.js → recap-3W7COH7D.js} +5 -5
- package/dist/{run-QEUVZF7J.js → run-QUXJKDQQ.js} +8 -8
- package/dist/schema/settings.schema.json +15 -0
- package/dist/{shell-DAAVG4YN.js → shell-QGECBLST.js} +5 -5
- package/dist/{summary-WNEYCO4S.js → summary-G2T4452H.js} +9 -9
- package/dist/{test-5GPWWO3P.js → test-EA5NQFDC.js} +6 -6
- package/dist/{test-git-EJUKDB7F.js → test-git-M7LSLEFL.js} +3 -3
- package/dist/{test-prefix-23TOBUXY.js → test-prefix-64NAAUON.js} +3 -3
- package/dist/{test-webserver-CKROHFBQ.js → test-webserver-OK6Z5FJM.js} +5 -5
- package/dist/{vscode-6TOLFCI2.js → vscode-AR5NNXXI.js} +5 -5
- package/package.json +1 -1
- package/dist/chunk-5LVVQGB3.js.map +0 -1
- package/dist/chunk-6Y3FTRJL.js.map +0 -1
- package/dist/chunk-I23OQB4Y.js.map +0 -1
- package/dist/chunk-RNBIISBZ.js.map +0 -1
- package/dist/chunk-THS5L54H.js.map +0 -1
- package/dist/chunk-XFEK2X2D.js.map +0 -1
- package/dist/commit-ORHR53KW.js.map +0 -1
- /package/dist/{ClaudeContextManager-X2Y72GRL.js.map → ClaudeContextManager-HR5JQKAI.js.map} +0 -0
- /package/dist/{ClaudeService-7P32TTES.js.map → ClaudeService-TK7FMC2X.js.map} +0 -0
- /package/dist/{GitHubService-ACZVNTJE.js.map → GitHubService-TGWJN4V4.js.map} +0 -0
- /package/dist/{LoomLauncher-3I47SUPV.js.map → LoomLauncher-73NXL2CL.js.map} +0 -0
- /package/dist/{SettingsManager-QR7V2IW2.js.map → SettingsManager-AW3JTJHD.js.map} +0 -0
- /package/dist/{build-IC4CJRMP.js.map → build-THZI572G.js.map} +0 -0
- /package/dist/{chunk-Z6F5CUS6.js.map → chunk-3I4ONZRT.js.map} +0 -0
- /package/dist/{chunk-MZPRBNYC.js.map → chunk-6IIL5M2L.js.map} +0 -0
- /package/dist/{chunk-2JPXGGP4.js.map → chunk-A7NJF73J.js.map} +0 -0
- /package/dist/{chunk-H6ST2TGP.js.map → chunk-AR5QKYNE.js.map} +0 -0
- /package/dist/{chunk-PL2FDYEK.js.map → chunk-CWRI4JC3.js.map} +0 -0
- /package/dist/{chunk-NTTSUAVM.js.map → chunk-IZIYLYPK.js.map} +0 -0
- /package/dist/{chunk-TGRK3CHF.js.map → chunk-KJTVU3HZ.js.map} +0 -0
- /package/dist/{chunk-SC6X5EBG.js.map → chunk-KXGQYLFZ.js.map} +0 -0
- /package/dist/{chunk-USSL2X4A.js.map → chunk-NUACL52E.js.map} +0 -0
- /package/dist/{chunk-JT5LZRMI.js.map → chunk-NWMORW3U.js.map} +0 -0
- /package/dist/{chunk-HZXBHMVM.js.map → chunk-R4YWBGY6.js.map} +0 -0
- /package/dist/{chunk-4GAJJUYS.js.map → chunk-TC7APDKU.js.map} +0 -0
- /package/dist/{chunk-UDZCTLD6.js.map → chunk-ULSWCPQG.js.map} +0 -0
- /package/dist/{chunk-RD7OPXZK.js.map → chunk-W6DP5RVR.js.map} +0 -0
- /package/dist/{chunk-XJHQVOT6.js.map → chunk-WHI5KEOX.js.map} +0 -0
- /package/dist/{chunk-2HZX6AMR.js.map → chunk-YKFCCV6S.js.map} +0 -0
- /package/dist/{chunk-OAVJR4PM.js.map → chunk-Z2TWEXR7.js.map} +0 -0
- /package/dist/{cleanup-M6N7KV7E.js.map → cleanup-PJRIFFU4.js.map} +0 -0
- /package/dist/{compile-EOWJORKO.js.map → compile-R2J65HBQ.js.map} +0 -0
- /package/dist/{contribute-4KCEOHSH.js.map → contribute-VDZXHK5Y.js.map} +0 -0
- /package/dist/{dev-server-Q6M62ATG.js.map → dev-server-7F622OEO.js.map} +0 -0
- /package/dist/{feedback-XRI7SGYX.js.map → feedback-E7VET7CL.js.map} +0 -0
- /package/dist/{git-W3XUIFTR.js.map → git-2QDQ2X2S.js.map} +0 -0
- /package/dist/{ignite-3FHQY23X.js.map → ignite-IW35CDBD.js.map} +0 -0
- /package/dist/{init-ALYWKNWG.js.map → init-676DHF6R.js.map} +0 -0
- /package/dist/{lint-IHUH45OC.js.map → lint-CJM7BAIM.js.map} +0 -0
- /package/dist/{open-KWOV2OFO.js.map → open-544H7JF5.js.map} +0 -0
- /package/dist/{plan-P6MXL7AU.js.map → plan-Q7ELXDLC.js.map} +0 -0
- /package/dist/{rebase-AJOJOZUG.js.map → rebase-YND35CIE.js.map} +0 -0
- /package/dist/{recap-GKJXMDXW.js.map → recap-3W7COH7D.js.map} +0 -0
- /package/dist/{run-QEUVZF7J.js.map → run-QUXJKDQQ.js.map} +0 -0
- /package/dist/{shell-DAAVG4YN.js.map → shell-QGECBLST.js.map} +0 -0
- /package/dist/{summary-WNEYCO4S.js.map → summary-G2T4452H.js.map} +0 -0
- /package/dist/{test-5GPWWO3P.js.map → test-EA5NQFDC.js.map} +0 -0
- /package/dist/{test-git-EJUKDB7F.js.map → test-git-M7LSLEFL.js.map} +0 -0
- /package/dist/{test-prefix-23TOBUXY.js.map → test-prefix-64NAAUON.js.map} +0 -0
- /package/dist/{test-webserver-CKROHFBQ.js.map → test-webserver-OK6Z5FJM.js.map} +0 -0
- /package/dist/{vscode-6TOLFCI2.js.map → vscode-AR5NNXXI.js.map} +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
PRManager
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-DGG2VY7B.js";
|
|
5
5
|
import {
|
|
6
6
|
calculatePortForBranch,
|
|
7
7
|
calculatePortFromIdentifier
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-NUACL52E.js";
|
|
9
9
|
import {
|
|
10
10
|
installDependencies,
|
|
11
11
|
runScript
|
|
@@ -31,16 +31,16 @@ import {
|
|
|
31
31
|
isBranchMergedIntoMain,
|
|
32
32
|
isFileTrackedByGit,
|
|
33
33
|
pushBranchToRemote
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-AR5QKYNE.js";
|
|
35
35
|
import {
|
|
36
36
|
SettingsManager
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-RI2YL6TK.js";
|
|
38
38
|
import {
|
|
39
39
|
MetadataManager
|
|
40
40
|
} from "./chunk-KBEIQP4G.js";
|
|
41
41
|
import {
|
|
42
42
|
GitHubService
|
|
43
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-OFDN5NKS.js";
|
|
44
44
|
import {
|
|
45
45
|
calculateForegroundColor,
|
|
46
46
|
generateColorFromBranchName,
|
|
@@ -244,7 +244,7 @@ var LoomManager = class {
|
|
|
244
244
|
* NEW: Checks for existing worktrees and reuses them if found
|
|
245
245
|
*/
|
|
246
246
|
async createIloom(input) {
|
|
247
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;
|
|
247
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o;
|
|
248
248
|
getLogger().info("Fetching issue data...");
|
|
249
249
|
const issueData = await this.fetchIssueData(input);
|
|
250
250
|
if (input.type === "issue" || input.type === "pr" || input.type === "branch") {
|
|
@@ -259,7 +259,7 @@ var LoomManager = class {
|
|
|
259
259
|
getLogger().info("Preparing branch name...");
|
|
260
260
|
const branchName = await this.prepareBranchName(input, issueData);
|
|
261
261
|
getLogger().info("Creating git worktree...");
|
|
262
|
-
const worktreePath = await this.createWorktreeOnly(input, branchName);
|
|
262
|
+
const worktreePath = await this.createWorktreeOnly(input, branchName, issueData);
|
|
263
263
|
this.loadMainEnvFile();
|
|
264
264
|
const { capabilities, binEntries } = await this.capabilityDetector.detectCapabilities(worktreePath);
|
|
265
265
|
await this.copyEnvironmentFiles(worktreePath);
|
|
@@ -375,16 +375,30 @@ var LoomManager = class {
|
|
|
375
375
|
getLogger().success(`Found existing PR: ${existingPR.url}`);
|
|
376
376
|
} else {
|
|
377
377
|
const prTitle = (issueData == null ? void 0 : issueData.title) ?? `Work on ${branchName}`;
|
|
378
|
-
|
|
378
|
+
let prBody;
|
|
379
|
+
if (input.type === "issue") {
|
|
380
|
+
const issueBody = (issueData == null ? void 0 : issueData.body) ? `
|
|
379
381
|
|
|
380
|
-
|
|
382
|
+
## ${issueData.title}
|
|
381
383
|
|
|
382
|
-
|
|
384
|
+
${issueData.body}` : "";
|
|
385
|
+
prBody = `Fixes ${prManager.issuePrefix}${input.identifier}${issueBody}
|
|
386
|
+
|
|
387
|
+
---
|
|
388
|
+
*This PR was created automatically by iloom.*`;
|
|
389
|
+
} else {
|
|
390
|
+
prBody = `Branch: ${branchName}
|
|
391
|
+
|
|
392
|
+
---
|
|
393
|
+
*This PR was created automatically by iloom.*`;
|
|
394
|
+
}
|
|
395
|
+
const draftBaseBranch = ((_e = input.parentLoom) == null ? void 0 : _e.branchName) ?? settingsData.mainBranch ?? "main";
|
|
383
396
|
getLogger().info("Creating draft PR...");
|
|
384
397
|
const prResult = await prManager.createDraftPR(
|
|
385
398
|
branchName,
|
|
386
399
|
prTitle,
|
|
387
400
|
prBody,
|
|
401
|
+
draftBaseBranch,
|
|
388
402
|
worktreePath
|
|
389
403
|
);
|
|
390
404
|
draftPrNumber = prResult.number;
|
|
@@ -418,16 +432,16 @@ This PR was created automatically by iloom.`;
|
|
|
418
432
|
);
|
|
419
433
|
}
|
|
420
434
|
}
|
|
421
|
-
const enableClaude = ((
|
|
422
|
-
const enableCode = ((
|
|
423
|
-
const enableDevServer = ((
|
|
424
|
-
const enableTerminal = ((
|
|
425
|
-
const oneShot = ((
|
|
426
|
-
const setArguments = (
|
|
427
|
-
const executablePath = (
|
|
435
|
+
const enableClaude = ((_f = input.options) == null ? void 0 : _f.enableClaude) !== false;
|
|
436
|
+
const enableCode = ((_g = input.options) == null ? void 0 : _g.enableCode) !== false;
|
|
437
|
+
const enableDevServer = ((_h = input.options) == null ? void 0 : _h.enableDevServer) !== false;
|
|
438
|
+
const enableTerminal = ((_i = input.options) == null ? void 0 : _i.enableTerminal) ?? false;
|
|
439
|
+
const oneShot = ((_j = input.options) == null ? void 0 : _j.oneShot) ?? "default";
|
|
440
|
+
const setArguments = (_k = input.options) == null ? void 0 : _k.setArguments;
|
|
441
|
+
const executablePath = (_l = input.options) == null ? void 0 : _l.executablePath;
|
|
428
442
|
if (enableClaude || enableCode || enableDevServer || enableTerminal) {
|
|
429
|
-
const { LoomLauncher } = await import("./LoomLauncher-
|
|
430
|
-
const { ClaudeContextManager } = await import("./ClaudeContextManager-
|
|
443
|
+
const { LoomLauncher } = await import("./LoomLauncher-73NXL2CL.js");
|
|
444
|
+
const { ClaudeContextManager } = await import("./ClaudeContextManager-HR5JQKAI.js");
|
|
431
445
|
const claudeContext = new ClaudeContextManager(void 0, void 0, this.settings);
|
|
432
446
|
const launcher = new LoomLauncher(claudeContext, this.settings);
|
|
433
447
|
await launcher.launchLoom({
|
|
@@ -446,7 +460,7 @@ This PR was created automatically by iloom.`;
|
|
|
446
460
|
...setArguments && { setArguments },
|
|
447
461
|
...executablePath && { executablePath },
|
|
448
462
|
sourceEnvOnStart: settingsData.sourceEnvOnStart ?? false,
|
|
449
|
-
colorTerminal: ((
|
|
463
|
+
colorTerminal: ((_m = input.options) == null ? void 0 : _m.colorTerminal) ?? ((_n = settingsData.colors) == null ? void 0 : _n.terminal) ?? true,
|
|
450
464
|
colorHex: colorData.hex
|
|
451
465
|
});
|
|
452
466
|
}
|
|
@@ -489,7 +503,7 @@ This PR was created automatically by iloom.`;
|
|
|
489
503
|
prUrls,
|
|
490
504
|
capabilities,
|
|
491
505
|
...draftPrNumber && { draftPrNumber },
|
|
492
|
-
...((
|
|
506
|
+
...((_o = input.options) == null ? void 0 : _o.oneShot) && { oneShot: input.options.oneShot },
|
|
493
507
|
...input.parentLoom && { parentLoom: input.parentLoom }
|
|
494
508
|
};
|
|
495
509
|
await this.metadataManager.writeMetadata(worktreePath, metadataInput);
|
|
@@ -578,7 +592,7 @@ This PR was created automatically by iloom.`;
|
|
|
578
592
|
async checkAndWarnChildLooms(branchName) {
|
|
579
593
|
let targetBranch = branchName;
|
|
580
594
|
if (!targetBranch) {
|
|
581
|
-
const { getCurrentBranch } = await import("./git-
|
|
595
|
+
const { getCurrentBranch } = await import("./git-2QDQ2X2S.js");
|
|
582
596
|
targetBranch = await getCurrentBranch();
|
|
583
597
|
}
|
|
584
598
|
if (!targetBranch) {
|
|
@@ -646,7 +660,7 @@ This PR was created automatically by iloom.`;
|
|
|
646
660
|
/**
|
|
647
661
|
* Create worktree for the loom (without dependency installation)
|
|
648
662
|
*/
|
|
649
|
-
async createWorktreeOnly(input, branchName) {
|
|
663
|
+
async createWorktreeOnly(input, branchName, issueData) {
|
|
650
664
|
var _a;
|
|
651
665
|
getLogger().info("Ensuring repository has initial commit...");
|
|
652
666
|
await ensureRepositoryHasCommits(this.gitWorktree.workingDirectory);
|
|
@@ -666,15 +680,31 @@ This PR was created automatically by iloom.`;
|
|
|
666
680
|
void 0,
|
|
667
681
|
pathOptions
|
|
668
682
|
);
|
|
683
|
+
const isForkPR = input.type === "pr" && issueData && "isFork" in issueData && issueData.isFork === true;
|
|
669
684
|
if (input.type === "pr") {
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
685
|
+
if (isForkPR) {
|
|
686
|
+
getLogger().info(`Fetching PR #${input.identifier} ref from origin...`);
|
|
687
|
+
try {
|
|
688
|
+
await executeGitCommand(
|
|
689
|
+
["fetch", "origin", `refs/pull/${input.identifier}/head`],
|
|
690
|
+
{ cwd: this.gitWorktree.workingDirectory }
|
|
691
|
+
);
|
|
692
|
+
getLogger().success("Successfully fetched PR ref from remote");
|
|
693
|
+
} catch (error) {
|
|
694
|
+
throw new Error(
|
|
695
|
+
`Failed to fetch PR ref: ${error instanceof Error ? error.message : "Unknown error"}. Make sure you have access to the repository.`
|
|
696
|
+
);
|
|
697
|
+
}
|
|
698
|
+
} else {
|
|
699
|
+
getLogger().info("Fetching all remote branches...");
|
|
700
|
+
try {
|
|
701
|
+
await executeGitCommand(["fetch", "origin"], { cwd: this.gitWorktree.workingDirectory });
|
|
702
|
+
getLogger().success("Successfully fetched from remote");
|
|
703
|
+
} catch (error) {
|
|
704
|
+
throw new Error(
|
|
705
|
+
`Failed to fetch from remote: ${error instanceof Error ? error.message : "Unknown error"}. Make sure you have access to the repository.`
|
|
706
|
+
);
|
|
707
|
+
}
|
|
678
708
|
}
|
|
679
709
|
}
|
|
680
710
|
const branchExistedLocally = await branchExists(branchName, process.cwd(), false);
|
|
@@ -698,21 +728,33 @@ This PR was created automatically by iloom.`;
|
|
|
698
728
|
} else {
|
|
699
729
|
baseBranch = input.baseBranch;
|
|
700
730
|
}
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
731
|
+
if (isForkPR) {
|
|
732
|
+
if (branchExistedLocally) {
|
|
733
|
+
await executeGitCommand(["branch", "-D", branchName], { cwd: this.gitWorktree.workingDirectory });
|
|
734
|
+
}
|
|
735
|
+
await this.gitWorktree.createWorktree({
|
|
736
|
+
path: worktreePath,
|
|
737
|
+
branch: branchName,
|
|
738
|
+
createBranch: true,
|
|
739
|
+
baseBranch: "FETCH_HEAD"
|
|
740
|
+
});
|
|
741
|
+
} else {
|
|
742
|
+
await this.gitWorktree.createWorktree({
|
|
743
|
+
path: worktreePath,
|
|
744
|
+
branch: branchName,
|
|
745
|
+
createBranch: input.type !== "pr",
|
|
746
|
+
// PRs use existing branches
|
|
747
|
+
...baseBranch && { baseBranch }
|
|
748
|
+
});
|
|
749
|
+
if (input.type === "pr" && !branchExistedLocally) {
|
|
750
|
+
getLogger().info("Resetting new PR branch to match remote exactly...");
|
|
751
|
+
try {
|
|
752
|
+
await executeGitCommand(["reset", "--hard", `origin/${branchName}`], { cwd: worktreePath });
|
|
753
|
+
await executeGitCommand(["branch", "--set-upstream-to", `origin/${branchName}`], { cwd: worktreePath });
|
|
754
|
+
getLogger().success("Successfully reset to match remote");
|
|
755
|
+
} catch (error) {
|
|
756
|
+
getLogger().warn(`Failed to reset to match remote: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
757
|
+
}
|
|
716
758
|
}
|
|
717
759
|
}
|
|
718
760
|
return worktreePath;
|
|
@@ -1098,8 +1140,8 @@ This PR was created automatically by iloom.`;
|
|
|
1098
1140
|
const executablePath = (_i = input.options) == null ? void 0 : _i.executablePath;
|
|
1099
1141
|
if (enableClaude || enableCode || enableDevServer || enableTerminal) {
|
|
1100
1142
|
getLogger().info("Launching workspace components...");
|
|
1101
|
-
const { LoomLauncher } = await import("./LoomLauncher-
|
|
1102
|
-
const { ClaudeContextManager } = await import("./ClaudeContextManager-
|
|
1143
|
+
const { LoomLauncher } = await import("./LoomLauncher-73NXL2CL.js");
|
|
1144
|
+
const { ClaudeContextManager } = await import("./ClaudeContextManager-HR5JQKAI.js");
|
|
1103
1145
|
const claudeContext = new ClaudeContextManager(void 0, void 0, this.settings);
|
|
1104
1146
|
const launcher = new LoomLauncher(claudeContext, this.settings);
|
|
1105
1147
|
await launcher.launchLoom({
|
|
@@ -1950,6 +1992,7 @@ var ResourceCleanup = class {
|
|
|
1950
1992
|
rollbackRequired: false
|
|
1951
1993
|
};
|
|
1952
1994
|
}
|
|
1995
|
+
let safetyCheckPassed = false;
|
|
1953
1996
|
if (!options.force) {
|
|
1954
1997
|
const shouldCheckMergeSafety = options.checkMergeSafety ?? options.deleteBranch === true;
|
|
1955
1998
|
const shouldCheckRemoteBranch = options.checkRemoteBranch ?? false;
|
|
@@ -1960,6 +2003,7 @@ var ResourceCleanup = class {
|
|
|
1960
2003
|
|
|
1961
2004
|
${blockerMessage}`);
|
|
1962
2005
|
}
|
|
2006
|
+
safetyCheckPassed = true;
|
|
1963
2007
|
if (safety.warnings.length > 0) {
|
|
1964
2008
|
safety.warnings.forEach((warning) => {
|
|
1965
2009
|
getLogger().warn(warning);
|
|
@@ -2073,7 +2117,8 @@ ${blockerMessage}`);
|
|
|
2073
2117
|
} else {
|
|
2074
2118
|
try {
|
|
2075
2119
|
const branchOptions = {
|
|
2076
|
-
dryRun: false
|
|
2120
|
+
dryRun: false,
|
|
2121
|
+
safetyVerified: safetyCheckPassed
|
|
2077
2122
|
};
|
|
2078
2123
|
if (mergeTargetBranch !== null) {
|
|
2079
2124
|
branchOptions.mergeTargetBranch = mergeTargetBranch;
|
|
@@ -2316,9 +2361,9 @@ ${blockerMessage}`);
|
|
|
2316
2361
|
getLogger().info(`[DRY RUN] Would delete branch: ${branchName}`);
|
|
2317
2362
|
return true;
|
|
2318
2363
|
}
|
|
2364
|
+
let deleteCwd = workingDir;
|
|
2319
2365
|
try {
|
|
2320
2366
|
let deleteFlag = "-d";
|
|
2321
|
-
let deleteCwd = workingDir;
|
|
2322
2367
|
if (options.force) {
|
|
2323
2368
|
deleteFlag = "-D";
|
|
2324
2369
|
} else if (options.mergeTargetBranch) {
|
|
@@ -2373,6 +2418,12 @@ ${blockerMessage}`);
|
|
|
2373
2418
|
throw error;
|
|
2374
2419
|
}
|
|
2375
2420
|
if (errorMessage.includes("not fully merged")) {
|
|
2421
|
+
if (options.safetyVerified) {
|
|
2422
|
+
getLogger().info(`Branch '${branchName}' not merged into HEAD but safety verified - using force delete`);
|
|
2423
|
+
await executeGitCommand(["branch", "-D", branchName], { cwd: deleteCwd });
|
|
2424
|
+
getLogger().info(`Branch deleted: ${branchName}`);
|
|
2425
|
+
return true;
|
|
2426
|
+
}
|
|
2376
2427
|
throw new Error(
|
|
2377
2428
|
`Cannot delete unmerged branch '${branchName}'. Use --force to delete anyway.`
|
|
2378
2429
|
);
|
|
@@ -2582,4 +2633,4 @@ export {
|
|
|
2582
2633
|
DatabaseManager,
|
|
2583
2634
|
ResourceCleanup
|
|
2584
2635
|
};
|
|
2585
|
-
//# sourceMappingURL=chunk-
|
|
2636
|
+
//# sourceMappingURL=chunk-SOSQILHO.js.map
|