sync-worktrees 4.1.0 → 5.0.0
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 +135 -55
- package/dist/components/App.d.ts.map +1 -1
- package/dist/components/BranchCreationWizard.d.ts.map +1 -1
- package/dist/components/OpenEditorWizard.d.ts.map +1 -1
- package/dist/components/StatusBar.d.ts +1 -0
- package/dist/components/StatusBar.d.ts.map +1 -1
- package/dist/components/WorktreeStatusView.d.ts.map +1 -1
- package/dist/constants.d.ts +22 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/errors/index.d.ts +7 -0
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2201 -510
- package/dist/index.js.map +4 -4
- package/dist/mcp/context.d.ts +1 -1
- package/dist/mcp/context.d.ts.map +1 -1
- package/dist/mcp/handlers.d.ts +0 -5
- package/dist/mcp/handlers.d.ts.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/worktree-summary.d.ts.map +1 -1
- package/dist/mcp-server.js +2117 -519
- package/dist/mcp-server.js.map +4 -4
- package/dist/services/InteractiveUIService.d.ts.map +1 -1
- package/dist/services/clone-sync.service.d.ts +13 -2
- package/dist/services/clone-sync.service.d.ts.map +1 -1
- package/dist/services/config-loader.service.d.ts +2 -0
- package/dist/services/config-loader.service.d.ts.map +1 -1
- package/dist/services/git-maintenance.service.d.ts +44 -0
- package/dist/services/git-maintenance.service.d.ts.map +1 -0
- package/dist/services/git.service.d.ts +19 -1
- package/dist/services/git.service.d.ts.map +1 -1
- package/dist/services/removal-audit.service.d.ts +19 -0
- package/dist/services/removal-audit.service.d.ts.map +1 -0
- package/dist/services/sync-outcome.d.ts +1 -1
- package/dist/services/sync-outcome.d.ts.map +1 -1
- package/dist/services/trash-migration.service.d.ts +18 -0
- package/dist/services/trash-migration.service.d.ts.map +1 -0
- package/dist/services/trash-reaper.service.d.ts +18 -0
- package/dist/services/trash-reaper.service.d.ts.map +1 -0
- package/dist/services/trash.service.d.ts +91 -0
- package/dist/services/trash.service.d.ts.map +1 -0
- package/dist/services/worktree-metadata.service.d.ts +7 -0
- package/dist/services/worktree-metadata.service.d.ts.map +1 -1
- package/dist/services/worktree-mode-sync-runner.d.ts +11 -1
- package/dist/services/worktree-mode-sync-runner.d.ts.map +1 -1
- package/dist/services/worktree-status.service.d.ts +5 -2
- package/dist/services/worktree-status.service.d.ts.map +1 -1
- package/dist/services/worktree-sync.service.d.ts +21 -2
- package/dist/services/worktree-sync.service.d.ts.map +1 -1
- package/dist/types/index.d.ts +60 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/sync-metadata.d.ts +6 -0
- package/dist/types/sync-metadata.d.ts.map +1 -1
- package/dist/utils/atomic-write.d.ts +2 -0
- package/dist/utils/atomic-write.d.ts.map +1 -0
- package/dist/utils/file-exists.d.ts +2 -0
- package/dist/utils/file-exists.d.ts.map +1 -1
- package/dist/utils/filename-timestamp.d.ts +2 -0
- package/dist/utils/filename-timestamp.d.ts.map +1 -0
- package/dist/utils/lock-path.d.ts +1 -0
- package/dist/utils/lock-path.d.ts.map +1 -1
- package/dist/utils/quarantine.d.ts +2 -0
- package/dist/utils/quarantine.d.ts.map +1 -0
- package/package.json +28 -27
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InteractiveUIService.d.ts","sourceRoot":"","sources":["../../src/services/InteractiveUIService.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAMlC,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAS9D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAOtD,OAAO,KAAK,EAEV,WAAW,EACX,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,UAAU,CAAC;AAKlB,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,GAAG,CAAyB;IACpC,OAAO,CAAC,YAAY,CAAwB;IAC5C,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,SAAS,CAAoE;IACrF,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,oBAAoB,CAA8B;IAC1D,OAAO,CAAC,oBAAoB,CAAqC;IACjE,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,oBAAoB,CAAyB;IACrD,OAAO,CAAC,qBAAqB,CAAyB;gBAGpD,YAAY,EAAE,mBAAmB,EAAE,EACnC,UAAU,CAAC,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,eAAe;IA0BnB,SAAS,IAAI,eAAe;IAInC,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,yBAAyB;IAcjC,OAAO,CAAC,0BAA0B;IAqB3B,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,GAAG,MAAM,GAAG,OAAgB,GAAG,IAAI;IAS/E,OAAO,CAAC,cAAc;IAOf,aAAa,IAAI,IAAI;IAsB5B,OAAO,CAAC,cAAc;IAOf,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI;IAIrD,OAAO,CAAC,QAAQ;
|
|
1
|
+
{"version":3,"file":"InteractiveUIService.d.ts","sourceRoot":"","sources":["../../src/services/InteractiveUIService.tsx"],"names":[],"mappings":"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"}
|
|
@@ -69,9 +69,9 @@ export declare class CloneSyncService {
|
|
|
69
69
|
private clientFor;
|
|
70
70
|
private buildGitEnv;
|
|
71
71
|
private buildCloneArgs;
|
|
72
|
+
private getBranchRefspec;
|
|
72
73
|
private buildFetchArgs;
|
|
73
|
-
private
|
|
74
|
-
private isOriginRemoteBranchTrackingRefspec;
|
|
74
|
+
private configureSingleBranchRemote;
|
|
75
75
|
private recordMissingRemoteRefSkip;
|
|
76
76
|
private fetchWithRecovery;
|
|
77
77
|
private hasRemoteBranch;
|
|
@@ -80,6 +80,17 @@ export declare class CloneSyncService {
|
|
|
80
80
|
private getDeepenTargets;
|
|
81
81
|
private deepenShallowHistoryToDepth;
|
|
82
82
|
resolveBranch(): Promise<string>;
|
|
83
|
+
private parseLsRemoteHeads;
|
|
84
|
+
getRemoteBranches(): Promise<string[]>;
|
|
85
|
+
private localBranchExists;
|
|
86
|
+
private localBranchCanFastForward;
|
|
87
|
+
private deleteRemoteTrackingRef;
|
|
88
|
+
private deleteStaleRemoteTrackingRefs;
|
|
89
|
+
private restoreBranchAfterCheckoutFailure;
|
|
90
|
+
checkoutBranch(branch: string, options?: {
|
|
91
|
+
allowConfigDrift?: boolean;
|
|
92
|
+
}): Promise<void>;
|
|
93
|
+
private warnConfigDriftAfterCheckout;
|
|
83
94
|
initialize(outcome?: SyncOutcomeAccumulator): Promise<void>;
|
|
84
95
|
private initializeInternal;
|
|
85
96
|
private evaluateOriginMatch;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clone-sync.service.d.ts","sourceRoot":"","sources":["../../src/services/clone-sync.service.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAG/E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAoB,MAAM,UAAU,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAoB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"clone-sync.service.d.ts","sourceRoot":"","sources":["../../src/services/clone-sync.service.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAG/E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAoB,MAAM,UAAU,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAoB,MAAM,uBAAuB,CAAC;AAKlF,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAClG;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAClE;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,GAAG,mBAAmB,CAAA;CAAE,GAC3F;IAAE,IAAI,EAAE,uBAAuB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC5E;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAElE,MAAM,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;AAElE,qBAAa,gBAAgB;IAazB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IAdhB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,oBAAoB,CAA8B;IAC1D,OAAO,CAAC,eAAe,CAAC,CAAqB;IAC7C,OAAO,CAAC,MAAM,CAAC,CAAoB;IACnC,OAAO,CAAC,kBAAkB,CAAC,CAAyB;IAIpD,OAAO,CAAC,eAAe,CAAgC;gBAG7C,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EACtB,OAAO,GAAE;QACP,oBAAoB,CAAC,EAAE,2BAA2B,CAAC;QACnD,eAAe,CAAC,EAAE,kBAAkB,CAAC;QACrC,MAAM,CAAC,EAAE,iBAAiB,CAAC;KACvB;IAOR,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIlC,aAAa,IAAI,OAAO;IAIxB,oBAAoB,IAAI,IAAI;IAItB,YAAY,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAiBtE,OAAO,KAAK,QAAQ,GAEnB;IAED,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,YAAY;YAQN,WAAW;IAezB,OAAO,CAAC,UAAU;IAyBlB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,gBAAgB;YAIV,cAAc;YASd,2BAA2B;IAMzC,OAAO,CAAC,0BAA0B;YAQpB,iBAAiB;YA+CjB,eAAe;YAYf,mBAAmB;YASnB,uBAAuB;IAWrC,OAAO,CAAC,gBAAgB;YAQV,2BAA2B;IAoBnC,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAetC,OAAO,CAAC,kBAAkB;IAWpB,iBAAiB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YAW9B,iBAAiB;YASjB,yBAAyB;YAsBzB,uBAAuB;YAQvB,6BAA6B;YAmB7B,iCAAiC;IAgBzC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAsGjG,OAAO,CAAC,4BAA4B;IAS9B,UAAU,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;YAInD,kBAAkB;YAwFlB,mBAAmB;YAyBnB,qBAAqB;YA2CrB,wBAAwB;IAkCtC,OAAO,CAAC,iBAAiB;YAIX,kBAAkB;IAuB1B,cAAc,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;YAIvD,sBAAsB;CAuKrC"}
|
|
@@ -4,6 +4,8 @@ export declare class ConfigLoaderService {
|
|
|
4
4
|
loadConfigFile(configPath: string): Promise<ConfigFile>;
|
|
5
5
|
private validateConfigFile;
|
|
6
6
|
private validateDepth;
|
|
7
|
+
private validateMaintenanceConfig;
|
|
8
|
+
private validateTrashConfig;
|
|
7
9
|
private validateRetryConfig;
|
|
8
10
|
private validateParallelismConfig;
|
|
9
11
|
private validateFilesToCopyConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-loader.service.d.ts","sourceRoot":"","sources":["../../src/services/config-loader.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config-loader.service.d.ts","sourceRoot":"","sources":["../../src/services/config-loader.service.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAkB,MAAM,UAAU,CAAC;AAWrF,qBAAa,mBAAmB;IACxB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAkB1D,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IA4B7D,OAAO,CAAC,kBAAkB;IA0K1B,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,yBAAyB;IAuBjC,OAAO,CAAC,mBAAmB;IA0B3B,OAAO,CAAC,mBAAmB;IA+C3B,OAAO,CAAC,yBAAyB;IA2CjC,OAAO,CAAC,yBAAyB;IAejC,OAAO,CAAC,4BAA4B;IAyCpC,OAAO,CAAC,uBAAuB;IAoB/B,OAAO,CAAC,sBAAsB;IAyD9B,OAAO,CAAC,mBAAmB;IAuB3B,uBAAuB,CACrB,IAAI,EAAE,gBAAgB,EACtB,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAC1B,SAAS,CAAC,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,EAC7B,eAAe,CAAC,EAAE,gBAAgB,EAAE,GACnC,gBAAgB;IAwGnB,OAAO,CAAC,kBAAkB;IAS1B,2BAA2B,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,IAAI;IAiBnE,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,WAAW;IAQnB,kBAAkB,CAAC,YAAY,EAAE,gBAAgB,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAYnF,iBAAiB,CACrB,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9B,OAAO,CAAC;QAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC;QAAC,UAAU,EAAE,UAAU,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAgB5F"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Logger } from "./logger.service";
|
|
2
|
+
import type { Config } from "../types";
|
|
3
|
+
import type { GitService } from "./git.service";
|
|
4
|
+
import type { SimpleGit } from "simple-git";
|
|
5
|
+
export interface MaintenanceState {
|
|
6
|
+
lastAttemptAt?: string;
|
|
7
|
+
lastSuccessAt?: string;
|
|
8
|
+
lastFailureAt?: string;
|
|
9
|
+
lastError?: string;
|
|
10
|
+
}
|
|
11
|
+
export type GitFactory = (cwd: string) => SimpleGit;
|
|
12
|
+
/**
|
|
13
|
+
* Periodic `git gc` for the repository object store. Reclaims unreachable
|
|
14
|
+
* objects (e.g. left by clone-mode single-branch ref narrowing and branch
|
|
15
|
+
* churn) and consolidates pack files. Throttled by a persisted timestamp so a
|
|
16
|
+
* daemon restart or repeated `runOnce` invocations don't re-run it every tick.
|
|
17
|
+
*
|
|
18
|
+
* Callers MUST already hold the repository operation lock — `runIfDueUnlocked`
|
|
19
|
+
* mirrors `WorktreeSyncService.initializeUnlocked` and never re-acquires it.
|
|
20
|
+
*/
|
|
21
|
+
export declare class GitMaintenanceService {
|
|
22
|
+
private config;
|
|
23
|
+
private gitService;
|
|
24
|
+
private logger;
|
|
25
|
+
private gitFactory;
|
|
26
|
+
constructor(config: Config, gitService: GitService, logger?: Logger, gitFactory?: GitFactory);
|
|
27
|
+
updateLogger(logger: Logger): void;
|
|
28
|
+
isEnabled(): boolean;
|
|
29
|
+
private getIntervalMs;
|
|
30
|
+
private resolveTarget;
|
|
31
|
+
private getStatePath;
|
|
32
|
+
private readState;
|
|
33
|
+
private writeState;
|
|
34
|
+
isDue(state: MaintenanceState, now: number): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Run `git gc` if maintenance is enabled and due. MUST be called while the
|
|
37
|
+
* repository operation lock is already held. Never throws: a gc failure is
|
|
38
|
+
* recorded and warned so it cannot fail the surrounding sync. The attempt
|
|
39
|
+
* timestamp is persisted even on failure, so a perpetually-failing gc is
|
|
40
|
+
* throttled instead of retried every tick.
|
|
41
|
+
*/
|
|
42
|
+
runIfDueUnlocked(now?: number): Promise<void>;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=git-maintenance.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-maintenance.service.d.ts","sourceRoot":"","sources":["../../src/services/git-maintenance.service.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,WAAW,gBAAgB;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AASD,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,SAAS,CAAC;AAEpD;;;;;;;;GAQG;AACH,qBAAa,qBAAqB;IAK9B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IALpB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAa;gBAGrB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EAC9B,MAAM,CAAC,EAAE,MAAM,EACf,UAAU,GAAE,UAAoC;IAMlD,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIlC,SAAS,IAAI,OAAO;IAIpB,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,YAAY;YAIN,SAAS;YAeT,UAAU;IAQxB,KAAK,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IAWpD;;;;;;OAMG;IACG,gBAAgB,CAAC,GAAG,GAAE,MAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CA8ChE"}
|
|
@@ -51,13 +51,31 @@ export declare class GitService {
|
|
|
51
51
|
private runWorktreeAddByMatrix;
|
|
52
52
|
private runSparseStepWithRollback;
|
|
53
53
|
private wrapUpstreamFailure;
|
|
54
|
-
removeWorktree(worktreePath: string
|
|
54
|
+
removeWorktree(worktreePath: string, options?: {
|
|
55
|
+
force?: boolean;
|
|
56
|
+
}): Promise<void>;
|
|
55
57
|
pruneWorktrees(): Promise<void>;
|
|
58
|
+
updateRef(refName: string, sha: string): Promise<void>;
|
|
59
|
+
deleteRef(refName: string): Promise<void>;
|
|
60
|
+
listRefs(prefix: string): Promise<string[]>;
|
|
61
|
+
localBranchExists(branchName: string): Promise<boolean>;
|
|
62
|
+
getLocalBranchCommit(branchName: string): Promise<string | null>;
|
|
63
|
+
createBranchAt(branchName: string, sha: string): Promise<void>;
|
|
64
|
+
deleteLocalBranch(branchName: string): Promise<void>;
|
|
65
|
+
createBundleFromRef(bundlePath: string, refName: string): Promise<boolean>;
|
|
66
|
+
addWorktreeNoCheckout(branchName: string, worktreePath: string): Promise<void>;
|
|
67
|
+
resetWorktreeIndex(worktreePath: string): Promise<void>;
|
|
68
|
+
private staleDirectoryTrasher;
|
|
69
|
+
setStaleDirectoryTrasher(trasher: (dirPath: string) => Promise<string>): void;
|
|
70
|
+
private clearStaleWorktreeDirectory;
|
|
56
71
|
checkWorktreeStatus(worktreePath: string): Promise<boolean>;
|
|
57
72
|
hasUnpushedCommits(worktreePath: string): Promise<boolean>;
|
|
58
73
|
hasUpstreamGone(worktreePath: string): Promise<boolean>;
|
|
59
74
|
hasStashedChanges(worktreePath: string): Promise<boolean>;
|
|
60
75
|
getFullWorktreeStatus(worktreePath: string, includeDetails?: boolean): Promise<WorktreeStatusResult>;
|
|
76
|
+
/** Map of remote branch name (without "origin/") → tip oid, from the bare repo. */
|
|
77
|
+
getRemoteBranchTips(): Promise<Map<string, string>>;
|
|
78
|
+
recordRemoteTip(worktreePath: string, branchName: string, oid: string): Promise<void>;
|
|
61
79
|
hasModifiedSubmodules(worktreePath: string): Promise<boolean>;
|
|
62
80
|
hasOperationInProgress(worktreePath: string): Promise<boolean>;
|
|
63
81
|
getCurrentBranch(): Promise<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.service.d.ts","sourceRoot":"","sources":["../../src/services/git.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"git.service.d.ts","sourceRoot":"","sources":["../../src/services/git.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { WorktreeStatusResult } from "./worktree-status.service";
|
|
2
|
+
export type RemovalAuditAction = "prune_remove" | "orphan_delete" | "orphan_quarantine" | "diverged_replace" | "manual_remove" | "trash_create" | "trash_adopt" | "trash_restore" | "trash_reap";
|
|
3
|
+
export interface RemovalAuditEntry {
|
|
4
|
+
action: RemovalAuditAction;
|
|
5
|
+
result: "attempt" | "success" | "failure";
|
|
6
|
+
path: string;
|
|
7
|
+
branch?: string;
|
|
8
|
+
status?: WorktreeStatusResult;
|
|
9
|
+
quarantinePath?: string;
|
|
10
|
+
trashId?: string;
|
|
11
|
+
trashPath?: string;
|
|
12
|
+
error?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare class RemovalAuditService {
|
|
15
|
+
private readonly logFilePath;
|
|
16
|
+
constructor(logFilePath: string);
|
|
17
|
+
record(entry: RemovalAuditEntry): Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=removal-audit.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"removal-audit.service.d.ts","sourceRoot":"","sources":["../../src/services/removal-audit.service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,MAAM,MAAM,kBAAkB,GAC1B,cAAc,GACd,eAAe,GACf,mBAAmB,GACnB,kBAAkB,GAClB,eAAe,GACf,cAAc,GACd,aAAa,GACb,eAAe,GACf,YAAY,CAAC;AAEjB,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID,qBAAa,mBAAmB;IAClB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,MAAM;IAE1C,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;CAatD"}
|
|
@@ -10,7 +10,7 @@ export declare class SyncOutcomeAccumulator {
|
|
|
10
10
|
});
|
|
11
11
|
add(action: SyncOutcomeAction): void;
|
|
12
12
|
recordCreated(branch: string, path: string): void;
|
|
13
|
-
recordRemoved(branch: string, path: string): void;
|
|
13
|
+
recordRemoved(branch: string, path: string, warning?: string): void;
|
|
14
14
|
recordUpdated(branch: string, path: string, reason?: string): void;
|
|
15
15
|
recordNoop(scope: SyncOutcomeScope, reason: string, details: {
|
|
16
16
|
branch?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-outcome.d.ts","sourceRoot":"","sources":["../../src/services/sync-outcome.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AA2CrH,qBAAa,sBAAsB;IAK/B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJ1B,OAAO,CAAC,MAAM,CAAgD;IAC9D,OAAO,CAAC,OAAO,CAA2B;gBAGvB,OAAO,EAAE;QACxB,IAAI,EAAE,eAAe,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;IAGH,GAAG,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAKpC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAIjD,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"sync-outcome.d.ts","sourceRoot":"","sources":["../../src/services/sync-outcome.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AA2CrH,qBAAa,sBAAsB;IAK/B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJ1B,OAAO,CAAC,MAAM,CAAgD;IAC9D,OAAO,CAAC,OAAO,CAA2B;gBAGvB,OAAO,EAAE;QACxB,IAAI,EAAE,eAAe,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;IAGH,GAAG,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAKpC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAIjD,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAInE,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAIlE,UAAU,CACR,KAAK,EAAE,gBAAgB,EACvB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5D,IAAI;IAIP,aAAa,CACX,KAAK,EAAE,gBAAgB,EACvB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5D,IAAI;IAIP,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI;IAIlF,YAAY,CACV,KAAK,EAAE,gBAAgB,EACvB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAO,GAChE,IAAI;IAIP,SAAS,IAAI,iBAAiB;IAI9B,QAAQ,IAAI;QAAE,MAAM,EAAE,iBAAiB,CAAC;QAAC,OAAO,EAAE,iBAAiB,EAAE,CAAA;KAAE;IAOvE,OAAO,CAAC,QAAQ,EAAE;QAAE,MAAM,EAAE,iBAAiB,CAAC;QAAC,OAAO,EAAE,iBAAiB,EAAE,CAAA;KAAE,GAAG,IAAI;IAKpF,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,WAAW;CAU5C;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,WAAW,CASjH;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,eAAe,EACvB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/C,iBAAiB,CAanB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Logger } from "./logger.service";
|
|
2
|
+
import type { TrashService } from "./trash.service";
|
|
3
|
+
import type { Config } from "../types";
|
|
4
|
+
export declare class TrashMigrationService {
|
|
5
|
+
private readonly config;
|
|
6
|
+
private readonly trashService;
|
|
7
|
+
private logger;
|
|
8
|
+
constructor(config: Config, trashService: TrashService, logger: Logger);
|
|
9
|
+
updateLogger(logger: Logger): void;
|
|
10
|
+
isEnabled(): boolean;
|
|
11
|
+
migrateLegacyUnlocked(): Promise<void>;
|
|
12
|
+
private migrateRemovedDir;
|
|
13
|
+
private migrateDivergedDir;
|
|
14
|
+
private listDirectories;
|
|
15
|
+
private readDivergedInfo;
|
|
16
|
+
private parseQuarantineTimestamp;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=trash-migration.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trash-migration.service.d.ts","sourceRoot":"","sources":["../../src/services/trash-migration.service.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAgBvC,qBAAa,qBAAqB;IAE9B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,MAAM;gBAFG,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EACnC,MAAM,EAAE,MAAM;IAGxB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIlC,SAAS,IAAI,OAAO;IAId,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;YAM9B,iBAAiB;YAkCjB,kBAAkB;YAmDlB,eAAe;YAYf,gBAAgB;IAU9B,OAAO,CAAC,wBAAwB;CAMjC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { GitService } from "./git.service";
|
|
2
|
+
import type { Logger } from "./logger.service";
|
|
3
|
+
import type { RemovalAuditService } from "./removal-audit.service";
|
|
4
|
+
import type { TrashService } from "./trash.service";
|
|
5
|
+
import type { Config } from "../types";
|
|
6
|
+
export declare class TrashReaperService {
|
|
7
|
+
private readonly config;
|
|
8
|
+
private readonly trashService;
|
|
9
|
+
private logger;
|
|
10
|
+
private readonly removalAudit;
|
|
11
|
+
private readonly gitService;
|
|
12
|
+
constructor(config: Config, trashService: TrashService, logger: Logger, removalAudit: RemovalAuditService, gitService: GitService);
|
|
13
|
+
updateLogger(logger: Logger): void;
|
|
14
|
+
reapExpiredUnlocked(now?: Date): Promise<void>;
|
|
15
|
+
private reapOrphanedPinRefs;
|
|
16
|
+
private warnIfOverThreshold;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=trash-reaper.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trash-reaper.service.d.ts","sourceRoot":"","sources":["../../src/services/trash-reaper.service.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAc,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAMvC,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAJV,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EACnC,MAAM,EAAE,MAAM,EACL,YAAY,EAAE,mBAAmB,EACjC,UAAU,EAAE,UAAU;IAGzC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM5B,mBAAmB,CAAC,GAAG,GAAE,IAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;YAkJlD,mBAAmB;IA2BjC,OAAO,CAAC,mBAAmB;CAY5B"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import type { GitService } from "./git.service";
|
|
2
|
+
import type { Logger } from "./logger.service";
|
|
3
|
+
import type { RemovalAuditService } from "./removal-audit.service";
|
|
4
|
+
import type { Config } from "../types";
|
|
5
|
+
export type TrashReason = "prune" | "orphan" | "diverged-replace" | "manual" | "legacy-adopt";
|
|
6
|
+
export interface TrashManifest {
|
|
7
|
+
schemaVersion: number;
|
|
8
|
+
id: string;
|
|
9
|
+
deletedAt: string;
|
|
10
|
+
expiresAt: string;
|
|
11
|
+
originalPath: string;
|
|
12
|
+
branch: string | null;
|
|
13
|
+
reason: TrashReason;
|
|
14
|
+
sizeBytes: number | null;
|
|
15
|
+
headOid: string | null;
|
|
16
|
+
pinRef: string | null;
|
|
17
|
+
/** Bundle of the pinned commits not on any remote, relative to the container; null when nothing to bundle. */
|
|
18
|
+
bundleFile?: string | null;
|
|
19
|
+
source: "worktree" | ".removed" | ".diverged";
|
|
20
|
+
legacyOriginalName: string | null;
|
|
21
|
+
/** When the legacy quarantine flow originally preserved this entry; retention still counts from adoption. */
|
|
22
|
+
legacyQuarantinedAt?: string | null;
|
|
23
|
+
keepPinOnReap?: boolean;
|
|
24
|
+
}
|
|
25
|
+
export interface TrashEntry {
|
|
26
|
+
manifest: TrashManifest;
|
|
27
|
+
containerPath: string;
|
|
28
|
+
payloadPath: string;
|
|
29
|
+
}
|
|
30
|
+
export interface TrashSummary {
|
|
31
|
+
itemCount: number;
|
|
32
|
+
totalSizeBytes: number;
|
|
33
|
+
unknownSizeCount: number;
|
|
34
|
+
soonestExpiresAt: string | null;
|
|
35
|
+
}
|
|
36
|
+
export declare function isWorktreeRestorable(manifest: Pick<TrashManifest, "branch" | "headOid" | "pinRef">): boolean;
|
|
37
|
+
export declare function summarizeTrashEntries(entries: TrashEntry[]): TrashSummary;
|
|
38
|
+
export interface TrashDirectoryOptions {
|
|
39
|
+
dirPath: string;
|
|
40
|
+
reason: TrashReason;
|
|
41
|
+
branch?: string | null;
|
|
42
|
+
source?: TrashManifest["source"];
|
|
43
|
+
legacyOriginalName?: string | null;
|
|
44
|
+
/** When the legacy flow originally quarantined the directory. Forensic only —
|
|
45
|
+
* retention always counts from adoption time so a just-adopted entry can
|
|
46
|
+
* never be reaped in the same tick. */
|
|
47
|
+
legacyQuarantinedAt?: Date;
|
|
48
|
+
/** Explicit HEAD oid (legacy adoption); `undefined` resolves from dirPath when branch is set. */
|
|
49
|
+
headOid?: string | null;
|
|
50
|
+
/** Where restore should put the payload back; defaults to dirPath. */
|
|
51
|
+
originalPath?: string;
|
|
52
|
+
auditAction?: "trash_create" | "trash_adopt";
|
|
53
|
+
keepPinOnReap?: boolean;
|
|
54
|
+
}
|
|
55
|
+
export declare class TrashService {
|
|
56
|
+
private readonly config;
|
|
57
|
+
private readonly gitService;
|
|
58
|
+
private logger;
|
|
59
|
+
private readonly removalAudit;
|
|
60
|
+
constructor(config: Config, gitService: GitService, logger: Logger, removalAudit: RemovalAuditService);
|
|
61
|
+
updateLogger(logger: Logger): void;
|
|
62
|
+
isEnabled(): boolean;
|
|
63
|
+
getTrashRoot(): string;
|
|
64
|
+
getRetentionDays(): number;
|
|
65
|
+
trashDirectory(options: TrashDirectoryOptions): Promise<TrashEntry>;
|
|
66
|
+
listEntries(): Promise<{
|
|
67
|
+
entries: TrashEntry[];
|
|
68
|
+
invalid: string[];
|
|
69
|
+
}>;
|
|
70
|
+
trashAndUnregisterWorktree(options: {
|
|
71
|
+
dirPath: string;
|
|
72
|
+
branch: string | null;
|
|
73
|
+
reason: TrashReason;
|
|
74
|
+
keepPinOnReap?: boolean;
|
|
75
|
+
}): Promise<{
|
|
76
|
+
entry: TrashEntry;
|
|
77
|
+
branchRefError?: string;
|
|
78
|
+
}>;
|
|
79
|
+
restore(id: string): Promise<TrashManifest>;
|
|
80
|
+
deleteTrashedBranchRef(manifest: Pick<TrashManifest, "branch" | "id" | "pinRef">): Promise<void>;
|
|
81
|
+
private restoreAsWorktree;
|
|
82
|
+
private copyPayloadOver;
|
|
83
|
+
private resolveHeadOid;
|
|
84
|
+
private createPinRef;
|
|
85
|
+
private writeManifest;
|
|
86
|
+
private readManifest;
|
|
87
|
+
private undoPartialTrash;
|
|
88
|
+
private createContainer;
|
|
89
|
+
private generateId;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=trash.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trash.service.d.ts","sourceRoot":"","sources":["../../src/services/trash.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,13 @@ export declare class WorktreeMetadataService {
|
|
|
18
18
|
deleteMetadataFromPath(bareRepoPath: string, worktreePath: string): Promise<void>;
|
|
19
19
|
updateLastSync(bareRepoPath: string, worktreeName: string, commit: string, action?: "created" | "updated" | "fetched"): Promise<void>;
|
|
20
20
|
updateLastSyncFromPath(bareRepoPath: string, worktreePath: string, commit: string, action?: "created" | "updated" | "fetched", defaultBranch?: string): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Records the upstream tip observed during this sync. This is what later
|
|
23
|
+
* proves "HEAD was fully pushed" after the remote branch is deleted, so it
|
|
24
|
+
* must only ever be overwritten with a live observation — callers must not
|
|
25
|
+
* invoke this once the upstream ref is gone.
|
|
26
|
+
*/
|
|
27
|
+
recordRemoteTip(bareRepoPath: string, worktreePath: string, ref: string, oid: string): Promise<void>;
|
|
21
28
|
createInitialMetadata(bareRepoPath: string, worktreeName: string, commit: string, upstreamBranch: string, parentBranch: string, parentCommit: string): Promise<void>;
|
|
22
29
|
createInitialMetadataFromPath(bareRepoPath: string, worktreePath: string, commit: string, upstreamBranch: string, parentBranch: string, parentCommit: string): Promise<void>;
|
|
23
30
|
validateMetadata(metadata: SyncMetadata): Promise<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worktree-metadata.service.d.ts","sourceRoot":"","sources":["../../src/services/worktree-metadata.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"worktree-metadata.service.d.ts","sourceRoot":"","sources":["../../src/services/worktree-metadata.service.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,qBAAa,uBAAuB;IAClC,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,CAAC,EAAE,MAAM;IAI3B;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;IAI1B,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAc5E,+BAA+B,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAM5F,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/F,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAYtF,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAkB9F,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAazE,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAajF,cAAc,CAClB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,SAAS,GAAG,SAAS,GAAG,SAAqB,GACpD,OAAO,CAAC,IAAI,CAAC;IA0BV,sBAAsB,CAC1B,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,SAAS,GAAG,SAAS,GAAG,SAAqB,EACrD,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC;IAqEhB;;;;;OAKG;IACG,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBpG,qBAAqB,CACzB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC;IAqBV,6BAA6B,CACjC,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC;IAsBV,gBAAgB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;CAejE"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { RemovalAuditService } from "./removal-audit.service";
|
|
2
|
+
import { TrashService } from "./trash.service";
|
|
1
3
|
import type { GitService } from "./git.service";
|
|
2
4
|
import type { Logger } from "./logger.service";
|
|
3
5
|
import type { ProgressEmitter } from "./progress-emitter";
|
|
@@ -11,7 +13,12 @@ export declare class WorktreeModeSyncRunner {
|
|
|
11
13
|
private logger;
|
|
12
14
|
private progressEmitter;
|
|
13
15
|
private pathResolution;
|
|
14
|
-
|
|
16
|
+
private removalAudit;
|
|
17
|
+
private trashService;
|
|
18
|
+
constructor(config: Config, gitService: GitService, logger: Logger, progressEmitter: ProgressEmitter, services?: {
|
|
19
|
+
trashService: TrashService;
|
|
20
|
+
removalAudit: RemovalAuditService;
|
|
21
|
+
});
|
|
15
22
|
updateLogger(logger: Logger): void;
|
|
16
23
|
runSyncAttempt(phaseTimer: PhaseTimer, syncContext: SyncRetryContext, outcome: SyncOutcomeAccumulator): Promise<void>;
|
|
17
24
|
private reapplySparseCheckout;
|
|
@@ -22,6 +29,8 @@ export declare class WorktreeModeSyncRunner {
|
|
|
22
29
|
private finalizeSyncAttempt;
|
|
23
30
|
private createNewWorktreesWithTiming;
|
|
24
31
|
private createNewWorktrees;
|
|
32
|
+
private recordRemoteBranchTips;
|
|
33
|
+
private blockedByDisabledTrash;
|
|
25
34
|
private pruneOldWorktreesWithTiming;
|
|
26
35
|
private pruneOldWorktrees;
|
|
27
36
|
private logDebugDetails;
|
|
@@ -32,5 +41,6 @@ export declare class WorktreeModeSyncRunner {
|
|
|
32
41
|
private handleDivergedBranch;
|
|
33
42
|
private hasLocalChangesSinceLastSync;
|
|
34
43
|
private divergeWorktree;
|
|
44
|
+
private writeDivergedInfoFile;
|
|
35
45
|
}
|
|
36
46
|
//# sourceMappingURL=worktree-mode-sync-runner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worktree-mode-sync-runner.d.ts","sourceRoot":"","sources":["../../src/services/worktree-mode-sync-runner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"worktree-mode-sync-runner.d.ts","sourceRoot":"","sources":["../../src/services/worktree-mode-sync-runner.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAI5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,qBAAa,sBAAsB;IAM/B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,eAAe;IARzB,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,YAAY,CAAe;gBAGzB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe,EACxC,QAAQ,CAAC,EAAE;QAAE,YAAY,EAAE,YAAY,CAAC;QAAC,YAAY,EAAE,mBAAmB,CAAA;KAAE;IAM9E,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK5B,cAAc,CAClB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,gBAAgB,EAC7B,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC;YAyCF,qBAAqB;YA2DrB,qBAAqB;YAwBrB,mBAAmB;YAcnB,mCAAmC;YAiCnC,+BAA+B;YAa/B,mBAAmB;YAQnB,4BAA4B;YAgB5B,kBAAkB;YA8DlB,sBAAsB;IA4BpC,OAAO,CAAC,sBAAsB;YAIhB,2BAA2B;YAe3B,iBAAiB;IAmN/B,OAAO,CAAC,eAAe;YA4CT,mBAAmB;YAwCnB,iCAAiC;YAgBjC,uBAAuB;YAkMvB,0BAA0B;YAkF1B,oBAAoB;YA8EpB,4BAA4B;YAc5B,eAAe;YA2Cf,qBAAqB;CA0BpC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Logger } from "./logger.service";
|
|
2
|
+
import type { LastKnownRemoteTip } from "../types/sync-metadata";
|
|
2
3
|
export interface WorktreeStatusDetails {
|
|
3
4
|
modifiedFiles: number;
|
|
4
5
|
deletedFiles: number;
|
|
@@ -27,6 +28,7 @@ export interface WorktreeStatusResult {
|
|
|
27
28
|
hasOperationInProgress: boolean;
|
|
28
29
|
hasModifiedSubmodules: boolean;
|
|
29
30
|
upstreamGone: boolean;
|
|
31
|
+
fullyPushedUpstreamDeleted: boolean;
|
|
30
32
|
canRemove: boolean;
|
|
31
33
|
reasons: string[];
|
|
32
34
|
details?: WorktreeStatusDetails;
|
|
@@ -39,8 +41,9 @@ export declare class WorktreeStatusService {
|
|
|
39
41
|
skipLfs?: boolean;
|
|
40
42
|
}, logger?: Logger);
|
|
41
43
|
checkWorktreeStatus(worktreePath: string): Promise<boolean>;
|
|
42
|
-
getFullWorktreeStatus(worktreePath: string, includeDetails?: boolean, lastSyncCommit?: string): Promise<WorktreeStatusResult>;
|
|
44
|
+
getFullWorktreeStatus(worktreePath: string, includeDetails?: boolean, lastSyncCommit?: string, lastKnownRemoteTip?: LastKnownRemoteTip): Promise<WorktreeStatusResult>;
|
|
43
45
|
private collectSnapshot;
|
|
46
|
+
private parseCount;
|
|
44
47
|
private deriveIsClean;
|
|
45
48
|
private deriveModifiedSubmodules;
|
|
46
49
|
private buildStatusDetails;
|
|
@@ -51,7 +54,7 @@ export declare class WorktreeStatusService {
|
|
|
51
54
|
hasStashedChanges(worktreePath: string): Promise<boolean>;
|
|
52
55
|
hasModifiedSubmodules(worktreePath: string): Promise<boolean>;
|
|
53
56
|
hasOperationInProgress(worktreePath: string): Promise<boolean>;
|
|
54
|
-
validateWorktreeForRemoval(worktreePath: string, lastSyncCommit?: string): Promise<void>;
|
|
57
|
+
validateWorktreeForRemoval(worktreePath: string, lastSyncCommit?: string, lastKnownRemoteTip?: LastKnownRemoteTip): Promise<void>;
|
|
55
58
|
private filterUntrackedFiles;
|
|
56
59
|
private isDetachedHead;
|
|
57
60
|
private resolveGitDir;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worktree-status.service.d.ts","sourceRoot":"","sources":["../../src/services/worktree-status.service.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"worktree-status.service.d.ts","sourceRoot":"","sources":["../../src/services/worktree-status.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import { GitService } from "./git.service";
|
|
|
3
3
|
import { Logger } from "./logger.service";
|
|
4
4
|
import { SyncOutcomeAccumulator } from "./sync-outcome";
|
|
5
5
|
import type { ProgressListener } from "./progress-emitter";
|
|
6
|
+
import type { TrashEntry, TrashManifest } from "./trash.service";
|
|
6
7
|
import type { Config, SyncOutcome, SyncResult } from "../types";
|
|
7
8
|
export type { ProgressEvent, ProgressListener } from "./progress-emitter";
|
|
8
9
|
export type { SyncOutcome, SyncOutcomeAction, SyncOutcomeCounts, SyncResult } from "../types";
|
|
@@ -18,11 +19,15 @@ export declare class WorktreeSyncService {
|
|
|
18
19
|
private gitService;
|
|
19
20
|
private cloneSyncService;
|
|
20
21
|
private logger;
|
|
21
|
-
private
|
|
22
|
+
private repoMutex;
|
|
22
23
|
private progressEmitter;
|
|
23
24
|
private repoOperationLock;
|
|
25
|
+
private maintenanceService;
|
|
24
26
|
private retryPolicy;
|
|
25
27
|
private worktreeModeSyncRunner;
|
|
28
|
+
private trashService;
|
|
29
|
+
private trashReaper;
|
|
30
|
+
private trashMigration;
|
|
26
31
|
private skipsAccumulator;
|
|
27
32
|
private lastOutcome;
|
|
28
33
|
constructor(config: Config);
|
|
@@ -35,14 +40,28 @@ export declare class WorktreeSyncService {
|
|
|
35
40
|
path: string;
|
|
36
41
|
branch: string;
|
|
37
42
|
}>>;
|
|
43
|
+
getRemoteBranches(): Promise<string[]>;
|
|
44
|
+
checkoutBranch(branchName: string, options?: {
|
|
45
|
+
allowConfigDrift?: boolean;
|
|
46
|
+
}): Promise<void>;
|
|
38
47
|
initialize(): Promise<void>;
|
|
39
48
|
initializeUnlocked(outcome?: SyncOutcomeAccumulator): Promise<void>;
|
|
40
49
|
isInitialized(): boolean;
|
|
41
50
|
isSyncInProgress(): boolean;
|
|
42
51
|
getGitService(): GitService;
|
|
52
|
+
restoreFromTrash(id: string): Promise<TrashManifest>;
|
|
53
|
+
listTrashEntries(): Promise<{
|
|
54
|
+
entries: TrashEntry[];
|
|
55
|
+
invalid: string[];
|
|
56
|
+
}>;
|
|
43
57
|
updateLogger(logger: Logger): void;
|
|
58
|
+
private runMaintenanceIfDueUnlocked;
|
|
59
|
+
private runTrashMaintenanceUnlocked;
|
|
44
60
|
onProgress(listener: ProgressListener): () => void;
|
|
45
|
-
runExclusiveRepoOperation<T>(operation: () => Promise<T
|
|
61
|
+
runExclusiveRepoOperation<T>(operation: () => Promise<T>, options?: {
|
|
62
|
+
wait?: boolean;
|
|
63
|
+
}): Promise<ExclusiveRepoOperationResult<T>>;
|
|
64
|
+
runQueuedRepoOperation<T>(operation: () => Promise<T>): Promise<ExclusiveRepoOperationResult<T>>;
|
|
46
65
|
private emitProgress;
|
|
47
66
|
sync(): Promise<SyncResult>;
|
|
48
67
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worktree-sync.service.d.ts","sourceRoot":"","sources":["../../src/services/worktree-sync.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"worktree-sync.service.d.ts","sourceRoot":"","sources":["../../src/services/worktree-sync.service.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,eAAe,EAAoB,MAAM,sBAAsB,CAAC;AAE9E,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAI1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAOxD,OAAO,KAAK,EAAiB,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE1E,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGhE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE9F,MAAM,MAAM,4BAA4B,CAAC,CAAC,IACtC;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAC3B;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,aAAa,GAAG,QAAQ,CAAA;CAAE,CAAC;AAEzD,qBAAa,mBAAmB;aAoBF,MAAM,EAAE,MAAM;IAnB1C,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,MAAM,CAAS;IAKvB,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,eAAe,CAAyB;IAChD,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,kBAAkB,CAAwB;IAClD,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,sBAAsB,CAAyB;IACvD,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,cAAc,CAAwB;IAC9C,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,WAAW,CAA4B;gBAEnB,MAAM,EAAE,MAAM;IAmCnC,gBAAgB,IAAI,SAAS,eAAe,EAAE;IAI9C,kBAAkB,IAAI,IAAI;IAI1B,oBAAoB,IAAI,IAAI;IAI5B,cAAc,IAAI,WAAW,GAAG,IAAI;IAI3C,WAAW,IAAI,OAAO;IAIhB,YAAY,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAOhE,iBAAiB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAOtC,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/F,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAS3B,kBAAkB,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAUzE,aAAa,IAAI,OAAO;IAOxB,gBAAgB,IAAI,OAAO;IAI3B,aAAa,IAAI,UAAU;IAQrB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAWpD,gBAAgB,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,UAAU,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAI/E,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;YAiBpB,2BAA2B;YAU3B,2BAA2B;IAezC,UAAU,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,IAAI;IAI5C,yBAAyB,CAAC,CAAC,EAC/B,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,OAAO,GAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAO,GAC/B,OAAO,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC;IA+BrC,sBAAsB,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC;IAItG,OAAO,CAAC,YAAY;IAId,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC;CAwElC"}
|