@ricsam/r5d-worker 0.0.136 → 0.0.138

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 (240) hide show
  1. package/README.md +4 -94
  2. package/dist/cjs/package.json +1 -1
  3. package/dist/mjs/main.mjs +46 -7537
  4. package/dist/mjs/package.json +1 -1
  5. package/dist/mjs/personal/action-scheduler.mjs +31 -0
  6. package/dist/mjs/personal/client.mjs +215 -0
  7. package/dist/mjs/personal/runtime.mjs +328 -0
  8. package/dist/mjs/personal/tcp.mjs +217 -0
  9. package/dist/mjs/runtime/adapter.mjs +42 -0
  10. package/dist/mjs/runtime/client.mjs +95 -0
  11. package/dist/mjs/runtime/daemon.mjs +131 -0
  12. package/dist/mjs/runtime/executor.mjs +436 -0
  13. package/dist/mjs/runtime/index.mjs +15 -0
  14. package/dist/mjs/runtime/protocol.mjs +139 -0
  15. package/dist/mjs/runtime/pty-host.mjs +156 -0
  16. package/dist/mjs/runtime/pty.mjs +127 -0
  17. package/dist/mjs/runtime/releases/artifacts.mjs +201 -0
  18. package/dist/mjs/runtime/releases/grants.mjs +93 -0
  19. package/dist/mjs/runtime/releases/main.mjs +101 -0
  20. package/dist/mjs/runtime/releases/manager.mjs +541 -0
  21. package/dist/mjs/runtime/releases/process.mjs +88 -0
  22. package/dist/mjs/runtime/releases/retirement.mjs +18 -0
  23. package/dist/mjs/runtime/releases/rpc-client.mjs +184 -0
  24. package/dist/mjs/runtime/releases/rpc-main.mjs +213 -0
  25. package/dist/mjs/runtime/releases/rpc-protocol.mjs +103 -0
  26. package/dist/mjs/runtime/storage.mjs +156 -0
  27. package/dist/mjs/runtime/workspace/artifacts.mjs +121 -0
  28. package/dist/mjs/runtime/workspace/authority.mjs +1355 -0
  29. package/dist/mjs/runtime/workspace/contracts.mjs +60 -0
  30. package/dist/mjs/runtime/workspace/file-write.mjs +23 -0
  31. package/dist/mjs/runtime/workspace/files.mjs +308 -0
  32. package/dist/mjs/runtime/workspace/http-body.mjs +45 -0
  33. package/dist/mjs/runtime/workspace/storage-client.mjs +59 -0
  34. package/dist/mjs/runtime/workspace/storage-wire.mjs +53 -0
  35. package/dist/types/main.d.ts +0 -1167
  36. package/dist/types/personal/action-scheduler.d.ts +23 -0
  37. package/dist/types/personal/client.d.ts +14 -0
  38. package/dist/types/personal/runtime.d.ts +121 -0
  39. package/dist/types/personal/tcp.d.ts +14 -0
  40. package/dist/types/runtime/client.d.ts +17 -0
  41. package/dist/types/runtime/daemon.d.ts +8 -0
  42. package/dist/types/runtime/executor.d.ts +35 -0
  43. package/dist/types/runtime/index.d.ts +5 -0
  44. package/dist/types/runtime/protocol.d.ts +544 -0
  45. package/dist/types/runtime/pty.d.ts +30 -0
  46. package/dist/types/runtime/releases/artifacts.d.ts +51 -0
  47. package/dist/types/runtime/releases/grants.d.ts +16 -0
  48. package/dist/types/runtime/releases/manager.d.ts +145 -0
  49. package/dist/types/runtime/releases/process.d.ts +14 -0
  50. package/dist/types/runtime/releases/retirement.d.ts +15 -0
  51. package/dist/types/runtime/releases/rpc-client.d.ts +52 -0
  52. package/dist/types/runtime/releases/rpc-main.d.ts +10 -0
  53. package/dist/types/runtime/releases/rpc-protocol.d.ts +1139 -0
  54. package/dist/types/runtime/storage.d.ts +21 -0
  55. package/dist/types/runtime/test-harness.d.ts +53 -0
  56. package/dist/types/runtime/workspace/artifacts.d.ts +30 -0
  57. package/dist/types/runtime/workspace/authority.d.ts +338 -0
  58. package/dist/types/runtime/workspace/contracts.d.ts +86 -0
  59. package/dist/types/runtime/workspace/file-write.d.ts +14 -0
  60. package/dist/types/runtime/workspace/files.d.ts +21 -0
  61. package/dist/types/runtime/workspace/http-body.d.ts +9 -0
  62. package/dist/types/runtime/workspace/storage-client.d.ts +23 -0
  63. package/dist/types/runtime/workspace/storage-wire.d.ts +138 -0
  64. package/package.json +8 -6
  65. package/dist/cjs/atomic-rename.cjs +0 -303
  66. package/dist/cjs/browser-upload.cjs +0 -73
  67. package/dist/cjs/cli-update.cjs +0 -108
  68. package/dist/cjs/command-launcher.cjs +0 -423
  69. package/dist/cjs/control-command-policy.cjs +0 -177
  70. package/dist/cjs/git-blob-hash.cjs +0 -41
  71. package/dist/cjs/git-identity.cjs +0 -39
  72. package/dist/cjs/git-process-environment.cjs +0 -133
  73. package/dist/cjs/inline-output.cjs +0 -62
  74. package/dist/cjs/main.cjs +0 -7511
  75. package/dist/cjs/managed-paths.cjs +0 -215
  76. package/dist/cjs/plan-lint.cjs +0 -165
  77. package/dist/cjs/plan-parser.cjs +0 -127
  78. package/dist/cjs/plan-paths.cjs +0 -53
  79. package/dist/cjs/port-forward-client.cjs +0 -206
  80. package/dist/cjs/process-tree.cjs +0 -117
  81. package/dist/cjs/project-checkout-garbage.cjs +0 -219
  82. package/dist/cjs/project-mirror-fetch-policy.cjs +0 -82
  83. package/dist/cjs/project-mirror-refs-token.cjs +0 -85
  84. package/dist/cjs/project-workspace-state.cjs +0 -972
  85. package/dist/cjs/project-worktrees.cjs +0 -1713
  86. package/dist/cjs/pty-output-coalescer.cjs +0 -87
  87. package/dist/cjs/recovery-journal-protocol.cjs +0 -56
  88. package/dist/cjs/recovery-journal-runtime.cjs +0 -133
  89. package/dist/cjs/recovery-journal-thread.cjs +0 -9
  90. package/dist/cjs/recovery-journal.cjs +0 -742
  91. package/dist/cjs/recovery-output-window.cjs +0 -77
  92. package/dist/cjs/recovery-protocol.cjs +0 -31
  93. package/dist/cjs/recovery-store.cjs +0 -252
  94. package/dist/cjs/registry-auth.cjs +0 -310
  95. package/dist/cjs/repository-transition-policy.cjs +0 -49
  96. package/dist/cjs/runtime-version.cjs +0 -88
  97. package/dist/cjs/session-file-mutations.cjs +0 -61
  98. package/dist/cjs/supervisor.cjs +0 -147
  99. package/dist/cjs/three-way-merge.cjs +0 -346
  100. package/dist/cjs/working-tree-mirror.cjs +0 -1872
  101. package/dist/cjs/workspace-automatic-sync-policy.cjs +0 -79
  102. package/dist/cjs/workspace-branch-incarnation-policy.cjs +0 -37
  103. package/dist/cjs/workspace-command-sync-policy.cjs +0 -112
  104. package/dist/cjs/workspace-command-targets.cjs +0 -63
  105. package/dist/cjs/workspace-filesystem-executor-thread.cjs +0 -36
  106. package/dist/cjs/workspace-filesystem-executor.cjs +0 -327
  107. package/dist/cjs/workspace-filesystem-job-types.cjs +0 -144
  108. package/dist/cjs/workspace-filesystem-jobs.cjs +0 -59
  109. package/dist/cjs/workspace-git-sync.cjs +0 -3450
  110. package/dist/cjs/workspace-hydration-ledger.cjs +0 -66
  111. package/dist/cjs/workspace-hydration-merge.cjs +0 -433
  112. package/dist/cjs/workspace-hydration-recovery-state.cjs +0 -53
  113. package/dist/cjs/workspace-incident-state.cjs +0 -37
  114. package/dist/cjs/workspace-merge-projection.cjs +0 -467
  115. package/dist/cjs/workspace-mount-boundary.cjs +0 -71
  116. package/dist/cjs/workspace-mount-hold-fence.cjs +0 -120
  117. package/dist/cjs/workspace-mutation-gate.cjs +0 -127
  118. package/dist/cjs/workspace-path-move.cjs +0 -195
  119. package/dist/cjs/workspace-preserve-only-policy.cjs +0 -36
  120. package/dist/cjs/workspace-project-config-policy.cjs +0 -53
  121. package/dist/cjs/workspace-projection-ledger.cjs +0 -81
  122. package/dist/cjs/workspace-publication-evidence.cjs +0 -46
  123. package/dist/cjs/workspace-sync-coalescer.cjs +0 -58
  124. package/dist/mjs/atomic-rename.mjs +0 -261
  125. package/dist/mjs/browser-upload.mjs +0 -42
  126. package/dist/mjs/command-launcher.mjs +0 -393
  127. package/dist/mjs/control-command-policy.mjs +0 -146
  128. package/dist/mjs/git-blob-hash.mjs +0 -16
  129. package/dist/mjs/git-identity.mjs +0 -15
  130. package/dist/mjs/git-process-environment.mjs +0 -105
  131. package/dist/mjs/inline-output.mjs +0 -37
  132. package/dist/mjs/managed-paths.mjs +0 -174
  133. package/dist/mjs/plan-lint.mjs +0 -129
  134. package/dist/mjs/plan-parser.mjs +0 -94
  135. package/dist/mjs/plan-paths.mjs +0 -25
  136. package/dist/mjs/port-forward-client.mjs +0 -172
  137. package/dist/mjs/project-checkout-garbage.mjs +0 -178
  138. package/dist/mjs/project-mirror-fetch-policy.mjs +0 -56
  139. package/dist/mjs/project-mirror-refs-token.mjs +0 -53
  140. package/dist/mjs/project-workspace-state.mjs +0 -937
  141. package/dist/mjs/project-worktrees.mjs +0 -1657
  142. package/dist/mjs/pty-output-coalescer.mjs +0 -61
  143. package/dist/mjs/recovery-journal-protocol.mjs +0 -30
  144. package/dist/mjs/recovery-journal-runtime.mjs +0 -112
  145. package/dist/mjs/recovery-journal-thread.mjs +0 -8
  146. package/dist/mjs/recovery-journal.mjs +0 -694
  147. package/dist/mjs/recovery-output-window.mjs +0 -53
  148. package/dist/mjs/recovery-protocol.mjs +0 -6
  149. package/dist/mjs/recovery-store.mjs +0 -217
  150. package/dist/mjs/registry-auth.mjs +0 -269
  151. package/dist/mjs/repository-transition-policy.mjs +0 -22
  152. package/dist/mjs/runtime-version.mjs +0 -54
  153. package/dist/mjs/session-file-mutations.mjs +0 -37
  154. package/dist/mjs/supervisor.mjs +0 -114
  155. package/dist/mjs/three-way-merge.mjs +0 -318
  156. package/dist/mjs/working-tree-mirror.mjs +0 -1817
  157. package/dist/mjs/workspace-automatic-sync-policy.mjs +0 -48
  158. package/dist/mjs/workspace-branch-incarnation-policy.mjs +0 -13
  159. package/dist/mjs/workspace-command-sync-policy.mjs +0 -84
  160. package/dist/mjs/workspace-command-targets.mjs +0 -37
  161. package/dist/mjs/workspace-filesystem-executor-thread.mjs +0 -38
  162. package/dist/mjs/workspace-filesystem-executor.mjs +0 -287
  163. package/dist/mjs/workspace-filesystem-job-types.mjs +0 -116
  164. package/dist/mjs/workspace-filesystem-jobs.mjs +0 -55
  165. package/dist/mjs/workspace-git-sync.mjs +0 -3407
  166. package/dist/mjs/workspace-hydration-ledger.mjs +0 -42
  167. package/dist/mjs/workspace-hydration-merge.mjs +0 -399
  168. package/dist/mjs/workspace-hydration-recovery-state.mjs +0 -29
  169. package/dist/mjs/workspace-incident-state.mjs +0 -12
  170. package/dist/mjs/workspace-merge-projection.mjs +0 -433
  171. package/dist/mjs/workspace-mount-boundary.mjs +0 -37
  172. package/dist/mjs/workspace-mount-hold-fence.mjs +0 -95
  173. package/dist/mjs/workspace-mutation-gate.mjs +0 -103
  174. package/dist/mjs/workspace-path-move.mjs +0 -160
  175. package/dist/mjs/workspace-preserve-only-policy.mjs +0 -11
  176. package/dist/mjs/workspace-project-config-policy.mjs +0 -27
  177. package/dist/mjs/workspace-projection-ledger.mjs +0 -57
  178. package/dist/mjs/workspace-publication-evidence.mjs +0 -21
  179. package/dist/mjs/workspace-sync-coalescer.mjs +0 -34
  180. package/dist/types/atomic-rename.d.ts +0 -78
  181. package/dist/types/browser-upload.d.ts +0 -7
  182. package/dist/types/command-launcher.d.ts +0 -104
  183. package/dist/types/control-command-policy.d.ts +0 -53
  184. package/dist/types/git-blob-hash.d.ts +0 -10
  185. package/dist/types/git-identity.d.ts +0 -9
  186. package/dist/types/git-process-environment.d.ts +0 -9
  187. package/dist/types/inline-output.d.ts +0 -3
  188. package/dist/types/managed-paths.d.ts +0 -19
  189. package/dist/types/plan-lint.d.ts +0 -16
  190. package/dist/types/plan-parser.d.ts +0 -38
  191. package/dist/types/plan-paths.d.ts +0 -36
  192. package/dist/types/port-forward-client.d.ts +0 -8
  193. package/dist/types/project-checkout-garbage.d.ts +0 -86
  194. package/dist/types/project-mirror-fetch-policy.d.ts +0 -84
  195. package/dist/types/project-mirror-refs-token.d.ts +0 -53
  196. package/dist/types/project-workspace-state.d.ts +0 -188
  197. package/dist/types/project-worktrees.d.ts +0 -397
  198. package/dist/types/pty-output-coalescer.d.ts +0 -20
  199. package/dist/types/recovery-journal-protocol.d.ts +0 -35
  200. package/dist/types/recovery-journal-runtime.d.ts +0 -12
  201. package/dist/types/recovery-journal-thread.d.ts +0 -1
  202. package/dist/types/recovery-journal.d.ts +0 -248
  203. package/dist/types/recovery-output-window.d.ts +0 -19
  204. package/dist/types/recovery-protocol.d.ts +0 -59
  205. package/dist/types/recovery-store.d.ts +0 -52
  206. package/dist/types/registry-auth.d.ts +0 -47
  207. package/dist/types/repository-transition-policy.d.ts +0 -26
  208. package/dist/types/runtime-version.d.ts +0 -1
  209. package/dist/types/session-file-mutations.d.ts +0 -22
  210. package/dist/types/supervisor-daemonized-fixture.d.ts +0 -1
  211. package/dist/types/supervisor-launcher-cleanup-fixture.d.ts +0 -1
  212. package/dist/types/supervisor-signal-fixture.d.ts +0 -1
  213. package/dist/types/supervisor.d.ts +0 -23
  214. package/dist/types/three-way-merge.d.ts +0 -77
  215. package/dist/types/working-tree-mirror.d.ts +0 -424
  216. package/dist/types/workspace-automatic-sync-policy.d.ts +0 -57
  217. package/dist/types/workspace-branch-incarnation-policy.d.ts +0 -14
  218. package/dist/types/workspace-command-sync-policy.d.ts +0 -57
  219. package/dist/types/workspace-command-targets.d.ts +0 -37
  220. package/dist/types/workspace-filesystem-executor-thread.d.ts +0 -1
  221. package/dist/types/workspace-filesystem-executor.d.ts +0 -123
  222. package/dist/types/workspace-filesystem-job-types.d.ts +0 -288
  223. package/dist/types/workspace-filesystem-jobs.d.ts +0 -7
  224. package/dist/types/workspace-git-sync.d.ts +0 -495
  225. package/dist/types/workspace-hydration-ledger.d.ts +0 -43
  226. package/dist/types/workspace-hydration-merge.d.ts +0 -95
  227. package/dist/types/workspace-hydration-recovery-state.d.ts +0 -10
  228. package/dist/types/workspace-incident-state.d.ts +0 -19
  229. package/dist/types/workspace-merge-projection.d.ts +0 -60
  230. package/dist/types/workspace-mount-boundary.d.ts +0 -10
  231. package/dist/types/workspace-mount-hold-fence.d.ts +0 -42
  232. package/dist/types/workspace-mutation-gate.d.ts +0 -42
  233. package/dist/types/workspace-path-move.d.ts +0 -21
  234. package/dist/types/workspace-preserve-only-policy.d.ts +0 -15
  235. package/dist/types/workspace-project-config-policy.d.ts +0 -48
  236. package/dist/types/workspace-projection-ledger.d.ts +0 -59
  237. package/dist/types/workspace-publication-evidence.d.ts +0 -17
  238. package/dist/types/workspace-sync-coalescer.d.ts +0 -28
  239. /package/dist/types/{credential-authority-lock-fixture.d.ts → runtime/adapter.d.ts} +0 -0
  240. /package/dist/types/{recovery-journal-stall-fixture.d.ts → runtime/releases/main.d.ts} +0 -0
@@ -1,60 +0,0 @@
1
- import { type ProjectedWorkingTreeEntry, type WorkingTreeSourceMode } from "./working-tree-mirror";
2
- export type WorkspaceMergeProjectionSupport = {
3
- supported: true;
4
- } | {
5
- supported: false;
6
- error: string;
7
- };
8
- export type WorkspaceMergeProjectionMount = {
9
- id: string;
10
- sourcePath: string;
11
- workspaceRelativePath: string;
12
- sourceMode: WorkingTreeSourceMode;
13
- };
14
- /**
15
- * `projectedFiles` records what the synthesis read for every visible entry
16
- * (merge hydration's basis for "changed since projection"). A `stale_rewrite`
17
- * result means the checkout holds, at the listed paths, exactly the bytes the
18
- * last hydration replaced; nothing was merged and the mount must stay pinned.
19
- */
20
- export type WorkspaceMergeProjectionResult = {
21
- kind: "clean";
22
- resultTree: string;
23
- oursCommit: string;
24
- projectedFiles: Record<string, ProjectedWorkingTreeEntry>;
25
- readAtMs: number;
26
- /** Ledger paths whose checkout content moved on from both the replaced and the basis bytes (or that are gone). */
27
- staleRewriteCleared: string[];
28
- } | {
29
- kind: "conflict";
30
- oursCommit: string;
31
- conflictPaths: string[];
32
- error: string;
33
- projectedFiles: Record<string, ProjectedWorkingTreeEntry>;
34
- readAtMs: number;
35
- staleRewriteCleared: string[];
36
- } | {
37
- kind: "stale_rewrite";
38
- paths: string[];
39
- staleRewriteCleared: string[];
40
- };
41
- declare function gitVersionIsSupported(version: string): boolean;
42
- export declare function workspaceMergeProjectionSupport(): WorkspaceMergeProjectionSupport;
43
- export declare function mergeWorkspaceProjectionMount(input: {
44
- workspacePath: string;
45
- mount: WorkspaceMergeProjectionMount;
46
- basisHead: string;
47
- currentHead: string;
48
- attemptId: string;
49
- staleRewriteBlobs?: Readonly<Record<string, string>>;
50
- }): WorkspaceMergeProjectionResult;
51
- export declare function materializeWorkspaceProjectionTree(input: {
52
- workspacePath: string;
53
- workspaceRelativePath: string;
54
- resultTree: string;
55
- }): void;
56
- export declare const workspaceMergeProjectionTestHarness: {
57
- gitVersionIsSupported: typeof gitVersionIsSupported;
58
- resetSupportProbe(): void;
59
- };
60
- export {};
@@ -1,10 +0,0 @@
1
- /**
2
- * Validate every existing path component from a trusted root to a managed
3
- * directory without following symlinks. Missing suffixes are allowed because
4
- * hydration and path moves create them after this check.
5
- */
6
- export declare function assertManagedDirectoryPath(input: {
7
- trustedRoot: string;
8
- candidate: string;
9
- label: string;
10
- }): void;
@@ -1,42 +0,0 @@
1
- /**
2
- * Tracks the mounts whose bytes a workspace filesystem job is reading or
3
- * writing on the executor thread. The sync engine takes a hold immediately
4
- * after the busy observation that selected a mount, in the same synchronous
5
- * stretch, and releases it when the job's result or failure arrives. Command
6
- * admission waits on the fence before reserving a mount, so no tracked
7
- * process, PTY or file operation can start in a mount while a job owns it,
8
- * and no job can start on a mount a command already reserved (that mount was
9
- * busy at the observation). Holds are counted per mount; overlapping holds
10
- * (a recovery pass and a projection of the same mount cannot overlap under the
11
- * mutation gate, but counting keeps the fence correct regardless) release in
12
- * any order.
13
- */
14
- export type WorkspaceMountHoldRelease = () => void;
15
- export declare class WorkspaceMountHoldAbortedError extends Error {
16
- constructor(reason: string);
17
- }
18
- export declare class WorkspaceMountHoldFence {
19
- private readonly holds;
20
- private readonly waiters;
21
- private readonly now;
22
- constructor(options?: {
23
- now?: () => number;
24
- });
25
- /** Take one hold on every listed mount; the returned release is idempotent. */
26
- hold(mountIds: readonly string[], description: string): WorkspaceMountHoldRelease;
27
- isHeld(mountIds: readonly string[]): boolean;
28
- /** Human-readable holder of the first held mount among `mountIds`, for diagnostics. */
29
- describeHold(mountIds: readonly string[]): string | null;
30
- /** Every held mount id, sorted, for status reporting. */
31
- heldMountIds(): string[];
32
- /**
33
- * Resolves in the same turn as the release that leaves none of `mountIds`
34
- * held, so the caller can re-check and reserve without an interleaving
35
- * hold. Resolves immediately when nothing is held. Rejects with
36
- * WorkspaceMountHoldAbortedError when `signal` aborts first.
37
- */
38
- waitForRelease(mountIds: readonly string[], options?: {
39
- signal?: AbortSignal;
40
- }): Promise<void>;
41
- private wake;
42
- }
@@ -1,42 +0,0 @@
1
- export type WorkspaceMutationLease = () => void;
2
- /**
3
- * Coordinates project worktrees with the outer workspace Git clone.
4
- *
5
- * Ordinary worktree activity may overlap other ordinary activity, but a sync
6
- * gets exclusive access. Once a sync is queued, later ordinary mutations wait
7
- * behind it so a queued sync cannot be starved by later short mutations.
8
- *
9
- * Branch creation and deletion use their own lane: a branch mutation never
10
- * waits behind a queued sync, only behind a sync that is already running.
11
- * Every sync still gets exclusive access, so hydration cannot overlap a
12
- * worktree being created or removed; the lane only decides ordering between
13
- * cycles. Branch operations are short and rare, so the queued sync they
14
- * step in front of waits at most their own duration. Without the lane a
15
- * branch operation queued behind a backlog of syncs waited for every one of
16
- * them, outlived the server's operation timeout, and then ran anyway against
17
- * a request the server had already rolled back.
18
- *
19
- * Long-running project commands do not enter this gate; outer-workspace
20
- * remediation commands do because they operate on the sync clone itself.
21
- */
22
- export declare class WorkspaceMutationGate {
23
- private activeMutations;
24
- private syncActive;
25
- private readonly waiters;
26
- acquireMutation(): Promise<WorkspaceMutationLease>;
27
- runMutation<T>(operation: () => Promise<T> | T): Promise<T>;
28
- runSync<T>(operation: () => Promise<T> | T): Promise<T>;
29
- /** A worktree create/delete lease; see the branch lane in the class comment. */
30
- acquireBranchMutation(): Promise<WorkspaceMutationLease>;
31
- runBranchMutation<T>(operation: () => Promise<T> | T): Promise<T>;
32
- /**
33
- * Operations a branch mutation requested now would wait for: the running
34
- * sync, if any, plus branch mutations queued behind it. Zero means it runs
35
- * at once. Ordinary waiters are not counted because the branch lane admits
36
- * ahead of them.
37
- */
38
- branchMutationQueuePosition(): number;
39
- private drain;
40
- private releaseMutation;
41
- private releaseSync;
42
- }
@@ -1,21 +0,0 @@
1
- export type ProjectCheckoutPathMoveBranch = {
2
- branchName: string;
3
- outerWorkspaceRelativePath: string;
4
- };
5
- export declare function checkoutPathMovePublicationComplete(requiredMountIds: readonly string[], activeMountIds: ReadonlySet<string>): boolean;
6
- /**
7
- * Move the project checkout location without making its old root the only copy
8
- * of dirty or ignored working state. The canonical outer tree receives the
9
- * Git-visible projection, while the new root receives every non-.git byte so
10
- * repository activation can reconstruct Git metadata without losing local
11
- * files. Both copies are stable before the obsolete worktree root is removed.
12
- */
13
- export declare function preserveProjectCheckoutPathMove(input: {
14
- oldProjectRoot: string;
15
- newProjectRoot: string;
16
- projectsDurabilityRoot: string;
17
- outerWorkspaceRoot: string;
18
- branches: readonly ProjectCheckoutPathMoveBranch[];
19
- }): {
20
- preservedBranchNames: string[];
21
- };
@@ -1,15 +0,0 @@
1
- export type WorkerProjectBranchDisposition = "active" | "creator_local" | "preserve_only";
2
- /** Name equality never grants creator authority across branch incarnations. */
3
- export declare function creatorLocalProjectBranchIsAuthorized(input: {
4
- pendingBranchId: string | undefined;
5
- preserveOnlyBranchId: string | undefined;
6
- }): boolean;
7
- /**
8
- * A globally pending branch is executable only on the worker that durably
9
- * recorded its local creation. Every other worker treats the same protocol
10
- * entry as preservation metadata, never as a checkout target.
11
- */
12
- export declare function workerProjectBranchDisposition(input: {
13
- activeConfigured: boolean;
14
- locallyPendingCreated: boolean;
15
- }): WorkerProjectBranchDisposition;
@@ -1,48 +0,0 @@
1
- type ProjectTarget = {
2
- type: "project";
3
- projectId: string;
4
- };
5
- type WorkspaceTarget = {
6
- type: "workspace";
7
- rootProfile: "visible_projects" | "canonical_sync";
8
- };
9
- type ProjectConfiguration = {
10
- projectId: string;
11
- };
12
- type ProjectConfigurationWithBranches = ProjectConfiguration & {
13
- executionDisabled?: boolean;
14
- branches: readonly {
15
- branchName: string;
16
- }[];
17
- };
18
- /**
19
- * Every executable checkout of a configuration whose reconciliation did not
20
- * run. Frozen projects expose neither ready nor pending execution targets, so
21
- * the report stays inside the server's executable checkout ledger.
22
- */
23
- export declare function deferredProjectConfigurationPendingBranches(projects: readonly ProjectConfigurationWithBranches[]): Array<{
24
- projectId: string;
25
- branchName: string;
26
- }>;
27
- export type BusyProjectConfigurationChangeReason = "added" | "removed" | "initializing" | "changed";
28
- export type BusyProjectConfigurationChange = {
29
- projectId: string;
30
- reason: BusyProjectConfigurationChangeReason;
31
- };
32
- /**
33
- * Identify configuration changes that would touch a project while visible
34
- * checkout activity is active or reserved. A visible-projects target covers
35
- * every project; canonical-sync activity is isolated in the outer clone. The
36
- * reason names why the busy project cannot take the configuration now, so a
37
- * deferral can be diagnosed without reconstructing both generations.
38
- */
39
- export declare function busyProjectConfigurationChanges<TProject extends ProjectConfiguration>(input: {
40
- currentProjects: readonly TProject[];
41
- incomingProjects: readonly TProject[];
42
- activeTargets: Iterable<ProjectTarget | WorkspaceTarget>;
43
- currentFingerprint: (project: TProject) => string;
44
- incomingFingerprint: (project: TProject) => string;
45
- currentProjectReady: (project: TProject) => boolean;
46
- }): BusyProjectConfigurationChange[];
47
- export declare function describeBusyProjectConfigurationChanges(changes: readonly BusyProjectConfigurationChange[]): string;
48
- export {};
@@ -1,59 +0,0 @@
1
- export type WorkspaceProjectionLedgerMount = {
2
- id: string;
3
- /** Durable logical incarnation; a re-created branch never matches its predecessor's record. */
4
- hydrationIncarnationKey: string;
5
- mutationToken?: () => string;
6
- };
7
- /**
8
- * Remembers, per mount incarnation, the visible-mutation token observed when
9
- * the mount was last projected into the outer clone by a completed cycle,
10
- * together with that cycle's result.
11
- *
12
- * Two decisions read it. A cycle skips mirroring a mount whose token is
13
- * unchanged, because its outer subtree already carries those bytes. A
14
- * request that targets a project checkout is answered with the previous
15
- * cycle's result, without running a cycle, when no mount's token moved since
16
- * that cycle. Both are cross-cycle skips only; the within-cycle busy and
17
- * token re-checks in the sync engine stay as they are.
18
- *
19
- * The ledger is reset whenever something other than a recorded visible
20
- * mutation can change checkout bytes: workspace configuration, canonical
21
- * reset, outer remediation, branch creation or deletion, and any cycle that
22
- * failed or ended in a conflict.
23
- */
24
- export declare class WorkspaceProjectionLedger<Result extends {
25
- outcome: string;
26
- }> {
27
- private readonly projectedTokens;
28
- private lastCycle;
29
- private static recordKey;
30
- get lastCycleResult(): Result | null;
31
- lastProjectedToken(mount: {
32
- id: string;
33
- hydrationIncarnationKey: string;
34
- }): string | undefined;
35
- /**
36
- * Record a completed cycle. `projectedMutationTokens` names the token each
37
- * active mount carried when the cycle projected it; a mount absent from it
38
- * keeps its earlier record. Any outcome that leaves the outer clone without
39
- * a trustworthy projection clears the ledger.
40
- */
41
- recordCycle(input: {
42
- result: Result;
43
- mounts: readonly WorkspaceProjectionLedgerMount[];
44
- projectedMutationTokens: Readonly<Record<string, string>> | undefined;
45
- }): void;
46
- reset(): void;
47
- /**
48
- * The previous cycle's result when every request targets a configured
49
- * mount and no mount's token moved since its recorded projection. A request
50
- * without a target (a workspace-rooted command may touch any checkout), a
51
- * mount without a token (a pending deletion), or pending deletion work all
52
- * require a real cycle.
53
- */
54
- answerFromLastCycle(input: {
55
- targetMountIds: ReadonlyArray<string | null>;
56
- mounts: readonly WorkspaceProjectionLedgerMount[];
57
- pendingDeletions: boolean;
58
- }): Result | null;
59
- }
@@ -1,17 +0,0 @@
1
- export type ProjectBranchPublicationEvidence = {
2
- branchId: string;
3
- projectId: string;
4
- branchName: string;
5
- };
6
- /** Select only branch mounts that completed this synchronization cycle. */
7
- export declare function activeProjectBranchNames(projectId: string, branchNames: readonly string[], activeMountIds: readonly string[]): string[];
8
- /** Bind physical active mounts to the exact configured branch-row snapshot. */
9
- export declare function activeProjectBranchPublicationEvidence(projects: readonly {
10
- projectId: string;
11
- executionDisabled?: boolean;
12
- mirrorWritesDisabled?: boolean;
13
- branches: readonly {
14
- branchId: string;
15
- branchName: string;
16
- }[];
17
- }[], activeMountIds: readonly string[]): ProjectBranchPublicationEvidence[];
@@ -1,28 +0,0 @@
1
- /**
2
- * Batches ordinary workspace synchronization requests into one exclusive
3
- * cycle each. A request that arrives while a batch is queued but not yet
4
- * running joins that batch; a request that arrives while a batch is running
5
- * opens the next one, because the running cycle may have selected its mounts
6
- * before the request's command finished. Every request in a batch receives
7
- * the same settlement, and the caller fans that out per attempt.
8
- *
9
- * Before this, every finished command queued its own full cycle behind every
10
- * earlier one, so queue time grew without bound under a steady arrival rate
11
- * even though each cycle finished in seconds.
12
- */
13
- export declare class WorkspaceSyncCoalescer<Request, Settlement> {
14
- private readonly options;
15
- private pendingBatch;
16
- private batchesStarted;
17
- constructor(options: {
18
- /** The exclusive sync lease; the batch body runs inside it. */
19
- runExclusive: <T>(operation: () => Promise<T>) => Promise<T>;
20
- /** Runs (or answers without running) one cycle for the whole batch. */
21
- runBatch: (requests: readonly Request[]) => Promise<Settlement>;
22
- });
23
- /** Requests attached to the batch that has not started yet. */
24
- get queuedRequestCount(): number;
25
- /** Batches whose body has been entered, whether or not they ran a cycle. */
26
- get startedBatchCount(): number;
27
- request(request: Request): Promise<Settlement>;
28
- }