@cerbur/clutch-dsh-worktree 0.1.6 → 0.1.8

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 (178) hide show
  1. package/README.md +135 -23
  2. package/README.zh.md +107 -13
  3. package/cordis.patch.yml +21 -0
  4. package/lib/client/WorktreeContext.d.ts.map +1 -1
  5. package/lib/client/WorktreeContext.js +2 -2
  6. package/lib/client/WorktreeContext.js.map +1 -1
  7. package/lib/client/WorktreeSurface.d.ts +2 -2
  8. package/lib/client/WorktreeSurface.d.ts.map +1 -1
  9. package/lib/client/WorktreeSurface.js +291 -70
  10. package/lib/client/WorktreeSurface.js.map +1 -1
  11. package/lib/client/entry.d.ts.map +1 -1
  12. package/lib/client/entry.js +84 -2
  13. package/lib/client/entry.js.map +1 -1
  14. package/lib/client/index.d.ts +3 -0
  15. package/lib/client/index.d.ts.map +1 -1
  16. package/lib/client/index.js +2 -0
  17. package/lib/client/index.js.map +1 -1
  18. package/lib/client/locales.d.ts +70 -0
  19. package/lib/client/locales.d.ts.map +1 -1
  20. package/lib/client/locales.js +70 -0
  21. package/lib/client/locales.js.map +1 -1
  22. package/lib/client/session-view.d.ts +34 -0
  23. package/lib/client/session-view.d.ts.map +1 -1
  24. package/lib/client/session-view.js +119 -1
  25. package/lib/client/session-view.js.map +1 -1
  26. package/lib/client/worktree-connection.d.ts +4 -2
  27. package/lib/client/worktree-connection.d.ts.map +1 -1
  28. package/lib/client/worktree-connection.js +4 -0
  29. package/lib/client/worktree-connection.js.map +1 -1
  30. package/lib/client/worktree-context.js +1 -1
  31. package/lib/client/worktree-context.js.map +1 -1
  32. package/lib/client/worktree-error-copy.d.ts +2 -0
  33. package/lib/client/worktree-error-copy.d.ts.map +1 -1
  34. package/lib/client/worktree-error-copy.js +24 -0
  35. package/lib/client/worktree-error-copy.js.map +1 -1
  36. package/lib/client/worktree-permission-icon.d.ts +7 -0
  37. package/lib/client/worktree-permission-icon.d.ts.map +1 -0
  38. package/lib/client/worktree-permission-icon.js +119 -0
  39. package/lib/client/worktree-permission-icon.js.map +1 -0
  40. package/lib/client/worktree-permission.d.ts +21 -0
  41. package/lib/client/worktree-permission.d.ts.map +1 -0
  42. package/lib/client/worktree-permission.js +70 -0
  43. package/lib/client/worktree-permission.js.map +1 -0
  44. package/lib/client/worktree-session-fork.d.ts +65 -0
  45. package/lib/client/worktree-session-fork.d.ts.map +1 -0
  46. package/lib/client/worktree-session-fork.js +174 -0
  47. package/lib/client/worktree-session-fork.js.map +1 -0
  48. package/lib/client/worktree-session-order.d.ts +36 -0
  49. package/lib/client/worktree-session-order.d.ts.map +1 -0
  50. package/lib/client/worktree-session-order.js +215 -0
  51. package/lib/client/worktree-session-order.js.map +1 -0
  52. package/lib/client/worktree-session.d.ts +34 -1
  53. package/lib/client/worktree-session.d.ts.map +1 -1
  54. package/lib/client/worktree-session.js +101 -3
  55. package/lib/client/worktree-session.js.map +1 -1
  56. package/lib/client/worktree-surface-rows.d.ts +4 -4
  57. package/lib/client/worktree-surface-rows.d.ts.map +1 -1
  58. package/lib/client/worktree-surface-rows.js +139 -47
  59. package/lib/client/worktree-surface-rows.js.map +1 -1
  60. package/lib/client/worktree-surface-selectors.d.ts +2 -0
  61. package/lib/client/worktree-surface-selectors.d.ts.map +1 -1
  62. package/lib/client/worktree-surface-selectors.js +8 -0
  63. package/lib/client/worktree-surface-selectors.js.map +1 -1
  64. package/lib/client/worktree-surface-types.d.ts +46 -3
  65. package/lib/client/worktree-surface-types.d.ts.map +1 -1
  66. package/lib/client/worktree-view-actions.d.ts +8 -3
  67. package/lib/client/worktree-view-actions.d.ts.map +1 -1
  68. package/lib/client/worktree-view-actions.js +28 -2
  69. package/lib/client/worktree-view-actions.js.map +1 -1
  70. package/lib/client/worktree-view-errors.d.ts +10 -0
  71. package/lib/client/worktree-view-errors.d.ts.map +1 -1
  72. package/lib/client/worktree-view-errors.js +22 -1
  73. package/lib/client/worktree-view-errors.js.map +1 -1
  74. package/lib/client.js +1515 -207
  75. package/lib/client.js.map +1 -1
  76. package/lib/contract/index.contract.js +2 -0
  77. package/lib/contract/index.contract.js.map +1 -1
  78. package/lib/contract/index.d.ts +11 -3
  79. package/lib/contract/index.d.ts.map +1 -1
  80. package/lib/contract/index.js +8 -0
  81. package/lib/contract/index.js.map +1 -1
  82. package/lib/contract/worktree-permission.d.ts +73 -0
  83. package/lib/contract/worktree-permission.d.ts.map +1 -0
  84. package/lib/contract/worktree-permission.js +32 -0
  85. package/lib/contract/worktree-permission.js.map +1 -0
  86. package/lib/host/dsh-read-adapter.d.ts +1 -0
  87. package/lib/host/dsh-read-adapter.d.ts.map +1 -1
  88. package/lib/host/dsh-read-adapter.js +6 -0
  89. package/lib/host/dsh-read-adapter.js.map +1 -1
  90. package/lib/host/index.d.ts +4 -0
  91. package/lib/host/index.d.ts.map +1 -1
  92. package/lib/host/index.js +2 -0
  93. package/lib/host/index.js.map +1 -1
  94. package/lib/host/remote.d.ts +2 -2
  95. package/lib/host/remote.d.ts.map +1 -1
  96. package/lib/host/remote.js +7 -1
  97. package/lib/host/remote.js.map +1 -1
  98. package/lib/host/service.d.ts +5 -1
  99. package/lib/host/service.d.ts.map +1 -1
  100. package/lib/host/service.js +42 -3
  101. package/lib/host/service.js.map +1 -1
  102. package/lib/host/worktree-permission-manager.d.ts +14 -0
  103. package/lib/host/worktree-permission-manager.d.ts.map +1 -0
  104. package/lib/host/worktree-permission-manager.js +113 -0
  105. package/lib/host/worktree-permission-manager.js.map +1 -0
  106. package/lib/host/worktree-permission.d.ts +38 -0
  107. package/lib/host/worktree-permission.d.ts.map +1 -0
  108. package/lib/host/worktree-permission.js +156 -0
  109. package/lib/host/worktree-permission.js.map +1 -0
  110. package/lib/index.d.ts +6 -4
  111. package/lib/index.d.ts.map +1 -1
  112. package/lib/index.js +3 -1
  113. package/lib/index.js.map +1 -1
  114. package/lib/manage/manager-context.d.ts +2 -0
  115. package/lib/manage/manager-context.d.ts.map +1 -1
  116. package/lib/manage/manager-worktrees.d.ts +5 -0
  117. package/lib/manage/manager-worktrees.d.ts.map +1 -1
  118. package/lib/manage/manager-worktrees.js +125 -37
  119. package/lib/manage/manager-worktrees.js.map +1 -1
  120. package/lib/manage/manager.d.ts +20 -0
  121. package/lib/manage/manager.d.ts.map +1 -1
  122. package/lib/manage/manager.js +91 -13
  123. package/lib/manage/manager.js.map +1 -1
  124. package/lib/manage/types.d.ts +9 -1
  125. package/lib/manage/types.d.ts.map +1 -1
  126. package/lib/manage/worktree-permission.d.ts +3 -0
  127. package/lib/manage/worktree-permission.d.ts.map +1 -0
  128. package/lib/manage/worktree-permission.js +3 -0
  129. package/lib/manage/worktree-permission.js.map +1 -0
  130. package/lib/provider/git.d.ts +37 -9
  131. package/lib/provider/git.d.ts.map +1 -1
  132. package/lib/provider/git.js +162 -61
  133. package/lib/provider/git.js.map +1 -1
  134. package/lib/provider/index.d.ts +5 -1
  135. package/lib/provider/index.d.ts.map +1 -1
  136. package/lib/provider/index.js +4 -0
  137. package/lib/provider/index.js.map +1 -1
  138. package/lib/provider/mutation-lock.d.ts +37 -0
  139. package/lib/provider/mutation-lock.d.ts.map +1 -0
  140. package/lib/provider/mutation-lock.js +270 -0
  141. package/lib/provider/mutation-lock.js.map +1 -0
  142. package/lib/provider/mutation-token.d.ts +8 -0
  143. package/lib/provider/mutation-token.d.ts.map +1 -0
  144. package/lib/provider/mutation-token.js +20 -0
  145. package/lib/provider/mutation-token.js.map +1 -0
  146. package/lib/provider/repository-fingerprint.d.ts +8 -0
  147. package/lib/provider/repository-fingerprint.d.ts.map +1 -0
  148. package/lib/provider/repository-fingerprint.js +13 -0
  149. package/lib/provider/repository-fingerprint.js.map +1 -0
  150. package/lib/provider/sidecar-persistence.d.ts +7 -3
  151. package/lib/provider/sidecar-persistence.d.ts.map +1 -1
  152. package/lib/provider/sidecar-persistence.js +118 -44
  153. package/lib/provider/sidecar-persistence.js.map +1 -1
  154. package/lib/provider/sidecar-schema.d.ts +1 -1
  155. package/lib/provider/sidecar-schema.d.ts.map +1 -1
  156. package/lib/provider/sidecar-schema.js +140 -8
  157. package/lib/provider/sidecar-schema.js.map +1 -1
  158. package/lib/provider/sidecar.d.ts +3 -1
  159. package/lib/provider/sidecar.d.ts.map +1 -1
  160. package/lib/provider/sidecar.js +6 -1
  161. package/lib/provider/sidecar.js.map +1 -1
  162. package/lib/provider/subprocess.d.ts +37 -0
  163. package/lib/provider/subprocess.d.ts.map +1 -0
  164. package/lib/provider/subprocess.js +319 -0
  165. package/lib/provider/subprocess.js.map +1 -0
  166. package/lib/provider/transaction.d.ts +65 -0
  167. package/lib/provider/transaction.d.ts.map +1 -0
  168. package/lib/provider/transaction.js +1011 -0
  169. package/lib/provider/transaction.js.map +1 -0
  170. package/lib/provider/types.d.ts +98 -7
  171. package/lib/provider/types.d.ts.map +1 -1
  172. package/lib/provider/types.js +1 -1
  173. package/lib/provider/types.js.map +1 -1
  174. package/lib/typert.host.js +133 -30
  175. package/lib/typert.remote-client.d.ts +7 -3
  176. package/lib/typert.remote-client.d.ts.map +1 -1
  177. package/lib/typert.remote-client.js +133 -30
  178. package/package.json +3 -1
@@ -21,6 +21,8 @@ const expectedRemoteKeys = [
21
21
  'insertWorktreeBefore',
22
22
  'listBindings',
23
23
  'bindSession',
24
+ 'ensureWorktreePermission',
25
+ 'normalizeDetachedWorktreePermissions',
24
26
  ];
25
27
  const managerKeysMatchSpec = true;
26
28
  const remoteKeysMatchSpec = true;
@@ -1 +1 @@
1
- {"version":3,"file":"index.contract.js","sourceRoot":"","sources":["../../src/contract/index.contract.ts"],"names":[],"mappings":"AASA,iDAAiD;AACjD,2HAA2H;AAC3H,MAAM,mBAAmB,GAAG;IAC1B,eAAe;IACf,sBAAsB;IACtB,cAAc;IACd,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,sBAAsB;IACtB,cAAc;IACd,aAAa;CACL,CAAC;AACX,MAAM,kBAAkB,GAAG;IACzB,eAAe;IACf,sBAAsB;IACtB,cAAc;IACd,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,sBAAsB;IACtB,cAAc;IACd,aAAa;CACL,CAAC;AA6BX,MAAM,oBAAoB,GAAyB,IAAI,CAAC;AACxD,MAAM,mBAAmB,GAAwB,IAAI,CAAC;AACtD,MAAM,+BAA+B,GAAoC,IAAI,CAAC;AAC9E,MAAM,8BAA8B,GAAmC,IAAI,CAAC;AAE5E,4DAA4D;AAC5D,6IAA6I;AAC7I,MAAM,QAAQ,GAAmB;IAC/B,UAAU,EAAE,YAAY;IACxB,WAAW,EAAE,YAAY;IACzB,YAAY,EAAE,8BAA8B;IAC5C,MAAM,EAAE,iBAAiB;IACzB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;CACjB,CAAC;AACF,MAAM,eAAe,GAA4B;IAC/C,YAAY,EAAE,wBAAwB;IACtC,MAAM,EAAE,kBAAkB;CAC3B,CAAC;AACF,MAAM,MAAM,GAAiB;IAC3B,IAAI,EAAE,iBAAiB;IACvB,SAAS,EAAE,KAAK;IAChB,UAAU,EAAE,KAAK;CAClB,CAAC;AACF,MAAM,OAAO,GAAmB;IAC9B,WAAW,EAAE,YAAY;IACzB,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,iBAAiB;IAC5B,MAAM,EAAE,QAAQ;CACjB,CAAC;AAEF,8CAA8C;AAC9C,8FAA8F;AAC9F,KAAK,oBAAoB,CAAC;AAC1B,KAAK,mBAAmB,CAAC;AACzB,KAAK,+BAA+B,CAAC;AACrC,KAAK,8BAA8B,CAAC;AACpC,KAAK,mBAAmB,CAAC;AACzB,KAAK,kBAAkB,CAAC;AACxB,KAAK,QAAQ,CAAC;AACd,KAAK,eAAe,CAAC;AACrB,KAAK,MAAM,CAAC;AACZ,KAAK,OAAO,CAAC"}
1
+ {"version":3,"file":"index.contract.js","sourceRoot":"","sources":["../../src/contract/index.contract.ts"],"names":[],"mappings":"AASA,iDAAiD;AACjD,2HAA2H;AAC3H,MAAM,mBAAmB,GAAG;IAC1B,eAAe;IACf,sBAAsB;IACtB,cAAc;IACd,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,sBAAsB;IACtB,cAAc;IACd,aAAa;CACL,CAAC;AACX,MAAM,kBAAkB,GAAG;IACzB,eAAe;IACf,sBAAsB;IACtB,cAAc;IACd,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,sBAAsB;IACtB,cAAc;IACd,aAAa;IACb,0BAA0B;IAC1B,sCAAsC;CAC9B,CAAC;AA6BX,MAAM,oBAAoB,GAAyB,IAAI,CAAC;AACxD,MAAM,mBAAmB,GAAwB,IAAI,CAAC;AACtD,MAAM,+BAA+B,GAAoC,IAAI,CAAC;AAC9E,MAAM,8BAA8B,GAAmC,IAAI,CAAC;AAE5E,4DAA4D;AAC5D,6IAA6I;AAC7I,MAAM,QAAQ,GAAmB;IAC/B,UAAU,EAAE,YAAY;IACxB,WAAW,EAAE,YAAY;IACzB,YAAY,EAAE,8BAA8B;IAC5C,MAAM,EAAE,iBAAiB;IACzB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;CACjB,CAAC;AACF,MAAM,eAAe,GAA4B;IAC/C,YAAY,EAAE,wBAAwB;IACtC,MAAM,EAAE,kBAAkB;CAC3B,CAAC;AACF,MAAM,MAAM,GAAiB;IAC3B,IAAI,EAAE,iBAAiB;IACvB,SAAS,EAAE,KAAK;IAChB,UAAU,EAAE,KAAK;CAClB,CAAC;AACF,MAAM,OAAO,GAAmB;IAC9B,WAAW,EAAE,YAAY;IACzB,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,iBAAiB;IAC5B,MAAM,EAAE,QAAQ;CACjB,CAAC;AAEF,8CAA8C;AAC9C,8FAA8F;AAC9F,KAAK,oBAAoB,CAAC;AAC1B,KAAK,mBAAmB,CAAC;AACzB,KAAK,+BAA+B,CAAC;AACrC,KAAK,8BAA8B,CAAC;AACpC,KAAK,mBAAmB,CAAC;AACzB,KAAK,kBAAkB,CAAC;AACxB,KAAK,QAAQ,CAAC;AACd,KAAK,eAAe,CAAC;AACrB,KAAK,MAAM,CAAC;AACZ,KAAK,OAAO,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { WorktreePermissionNormalizationRequest, WorktreePermissionRequest, WorktreePermissionResult } from './worktree-permission.js';
1
2
  /**
2
3
  * 插件的稳定、浏览器安全契约层;这里只定义领域值与服务形状,不依赖 Git、sidecar 或 Node runtime。
3
4
  * Stable, browser-safe contract layer for the plugin; it defines domain values and service shapes without Git, sidecar, or Node runtime dependencies.
@@ -8,7 +9,7 @@
8
9
  * 跨 Host/浏览器边界保持稳定的领域错误码;新增、删除或重命名成员都属于公开契约变更。
9
10
  * Stable domain error codes shared across the Host/browser boundary; adding, removing, or renaming a member is a public contract change.
10
11
  */
11
- export declare const WORKTREE_ERROR_CODES: readonly ["WORKSPACE_NOT_FOUND", "WORKSPACE_NOT_GIT_REPOSITORY", "GIT_NOT_INSTALLED", "WORKTREE_REQUIRES_INITIAL_COMMIT", "WORKTREE_BRANCH_CONFLICT", "WORKTREE_NOT_FOUND", "WORKTREE_ORDER_INVALID", "WORKTREE_REMOVED", "WORKTREE_IMPORT_INVALID", "WORKTREE_ALREADY_MANAGED", "SESSION_NOT_FOUND", "SESSION_CWD_MISMATCH", "SESSION_ALREADY_BOUND", "SIDECAR_UNAVAILABLE", "SIDECAR_CORRUPT", "SIDECAR_SYNC_REQUIRED", "GIT_OPERATION_FAILED"];
12
+ export declare const WORKTREE_ERROR_CODES: readonly ["WORKSPACE_NOT_FOUND", "WORKSPACE_NOT_GIT_REPOSITORY", "GIT_NOT_INSTALLED", "WORKTREE_REQUIRES_INITIAL_COMMIT", "WORKTREE_BRANCH_CONFLICT", "WORKTREE_NOT_FOUND", "WORKTREE_ORDER_INVALID", "WORKTREE_REMOVED", "WORKTREE_IMPORT_INVALID", "WORKTREE_ALREADY_MANAGED", "SESSION_NOT_FOUND", "SESSION_CWD_MISMATCH", "SESSION_ALREADY_BOUND", "SIDECAR_UNAVAILABLE", "SIDECAR_CORRUPT", "SIDECAR_SYNC_REQUIRED", "GIT_OPERATION_FAILED", "WORKTREE_MUTATION_BUSY", "WORKTREE_STATE_CONFLICT", "WORKTREE_RECOVERY_REQUIRED", "WORKTREE_IDENTITY_CHANGED", "WORKTREE_PERMISSION_BINDING_REQUIRED"];
12
13
  export type WorktreeErrorCode = (typeof WORKTREE_ERROR_CODES)[number];
13
14
  export type WorkspaceId = string;
14
15
  export type WorktreeId = string;
@@ -19,8 +20,9 @@ export type SessionId = string;
19
20
  */
20
21
  export type WorktreeStatus = 'active' | 'removed';
21
22
  export type WorktreeSource = 'plugin' | 'external';
23
+ export * from './worktree-permission.js';
22
24
  /** Runtime-only Git health projection; this value is never persisted in the sidecar. */
23
- export type WorktreeHealth = 'ready' | 'repair';
25
+ export type WorktreeHealth = 'ready' | 'repair' | 'recovery-needed';
24
26
  /**
25
27
  * Session 与 Worktree 的关系状态;删除 Worktree 只会将关系转为 `detached`,不会删除 Session。
26
28
  * Session-to-Worktree relation state; removing a Worktree only detaches the relation and never deletes the Session.
@@ -39,6 +41,8 @@ export interface WorktreeRecord {
39
41
  readonly status: WorktreeStatus;
40
42
  /** Runtime-only; never written to the sidecar. */
41
43
  readonly health?: WorktreeHealth;
44
+ /** Opaque runtime-only snapshot token for destructive-action stale-state checks. */
45
+ readonly mutationToken?: string;
42
46
  }
43
47
  export interface WorktreeImportCandidate {
44
48
  readonly absolutePath: string;
@@ -127,6 +131,7 @@ export interface WorktreeManager {
127
131
  removeWorktree(input: {
128
132
  workspaceId: WorkspaceId;
129
133
  worktreeId: WorktreeId;
134
+ mutationToken: string;
130
135
  }): Promise<void>;
131
136
  /**
132
137
  * Move one Worktree within the Workspace's durable order. With an anchor it
@@ -159,7 +164,7 @@ export interface WorktreeManager {
159
164
  * Browser Remote 可调用的方法白名单;runtime cwd 解析刻意不进入该边界。
160
165
  * Allowlist of Browser Remote methods; runtime cwd resolution is intentionally excluded from this boundary.
161
166
  */
162
- export declare const WORKTREE_REMOTE_METHODS: readonly ["listWorktrees", "listImportCandidates", "listBranches", "createWorktree", "importWorktree", "removeWorktree", "insertWorktreeBefore", "listBindings", "bindSession"];
167
+ export declare const WORKTREE_REMOTE_METHODS: readonly ["listWorktrees", "listImportCandidates", "listBranches", "createWorktree", "importWorktree", "removeWorktree", "insertWorktreeBefore", "listBindings", "bindSession", "ensureWorktreePermission", "normalizeDetachedWorktreePermissions"];
163
168
  export type WorktreeRemoteMethod = (typeof WORKTREE_REMOTE_METHODS)[number];
164
169
  /**
165
170
  * Remote 的可辨识结果:已知领域失败作为数据返回,未知或未分类异常仍由 Host 抛出。
@@ -198,6 +203,7 @@ export interface WorktreeRemoteManager {
198
203
  removeWorktree(input: {
199
204
  workspaceId: WorkspaceId;
200
205
  worktreeId: WorktreeId;
206
+ mutationToken: string;
201
207
  }): Promise<WorktreeRemoteResult<null>>;
202
208
  insertWorktreeBefore(input: {
203
209
  workspaceId: WorkspaceId;
@@ -212,5 +218,7 @@ export interface WorktreeRemoteManager {
212
218
  worktreeId: WorktreeId;
213
219
  sessionId: SessionId;
214
220
  }): Promise<WorktreeRemoteResult<SessionBinding>>;
221
+ ensureWorktreePermission(input: WorktreePermissionRequest): Promise<WorktreeRemoteResult<WorktreePermissionResult>>;
222
+ normalizeDetachedWorktreePermissions(input: WorktreePermissionNormalizationRequest): Promise<WorktreeRemoteResult<WorktreePermissionResult>>;
215
223
  }
216
224
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contract/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contract/index.ts"],"names":[],"mappings":"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"}
@@ -26,7 +26,13 @@ export const WORKTREE_ERROR_CODES = Object.freeze([
26
26
  'SIDECAR_CORRUPT',
27
27
  'SIDECAR_SYNC_REQUIRED',
28
28
  'GIT_OPERATION_FAILED',
29
+ 'WORKTREE_MUTATION_BUSY',
30
+ 'WORKTREE_STATE_CONFLICT',
31
+ 'WORKTREE_RECOVERY_REQUIRED',
32
+ 'WORKTREE_IDENTITY_CHANGED',
33
+ 'WORKTREE_PERMISSION_BINDING_REQUIRED',
29
34
  ]);
35
+ export * from './worktree-permission.js';
30
36
  /**
31
37
  * 创建错误 DTO 而不抛出异常,供 Host 将已识别的领域失败投影到 Remote result。
32
38
  * Creates an error DTO without throwing, allowing the Host to project recognized domain failures into a Remote result.
@@ -48,5 +54,7 @@ export const WORKTREE_REMOTE_METHODS = Object.freeze([
48
54
  'insertWorktreeBefore',
49
55
  'listBindings',
50
56
  'bindSession',
57
+ 'ensureWorktreePermission',
58
+ 'normalizeDetachedWorktreePermissions',
51
59
  ]);
52
60
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/contract/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC;IAChD,qBAAqB;IACrB,8BAA8B;IAC9B,mBAAmB;IACnB,kCAAkC;IAClC,0BAA0B;IAC1B,oBAAoB;IACpB,wBAAwB;IACxB,kBAAkB;IAClB,yBAAyB;IACzB,0BAA0B;IAC1B,mBAAmB;IACnB,sBAAsB;IACtB,uBAAuB;IACvB,qBAAqB;IACrB,iBAAiB;IACjB,uBAAuB;IACvB,sBAAsB;CACd,CAAC,CAAC;AAiFZ;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAuB,EACvB,OAAe,EACf,UAAgC,EAAE;IAElC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACpC,CAAC;AA2ED;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,MAAM,CAAC;IACnD,eAAe;IACf,sBAAsB;IACtB,cAAc;IACd,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,sBAAsB;IACtB,cAAc;IACd,aAAa;CACL,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/contract/index.ts"],"names":[],"mappings":"AAMA;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC;IAChD,qBAAqB;IACrB,8BAA8B;IAC9B,mBAAmB;IACnB,kCAAkC;IAClC,0BAA0B;IAC1B,oBAAoB;IACpB,wBAAwB;IACxB,kBAAkB;IAClB,yBAAyB;IACzB,0BAA0B;IAC1B,mBAAmB;IACnB,sBAAsB;IACtB,uBAAuB;IACvB,qBAAqB;IACrB,iBAAiB;IACjB,uBAAuB;IACvB,sBAAsB;IACtB,wBAAwB;IACxB,yBAAyB;IACzB,4BAA4B;IAC5B,2BAA2B;IAC3B,sCAAsC;CAC9B,CAAC,CAAC;AAgBZ,cAAc,0BAA0B,CAAC;AAqEzC;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAuB,EACvB,OAAe,EACf,UAAgC,EAAE;IAElC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACpC,CAAC;AA+ED;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,MAAM,CAAC;IACnD,eAAe;IACf,sBAAsB;IACtB,cAAc;IACd,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,sBAAsB;IACtB,cAAc;IACd,aAAa;IACb,0BAA0B;IAC1B,sCAAsC;CAC9B,CAAC,CAAC"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Browser-safe Worktree permission vocabulary. DSH runtime services are
3
+ * intentionally absent; the Host adapts them to these plain values.
4
+ */
5
+ export declare const WORKTREE_FULL_ACCESS_PRESET: "worktree-full-access";
6
+ export type WorktreePermissionBinding = 'active' | 'detached' | 'main' | 'unbound';
7
+ export type WorktreePermissionSandboxMode = 'read-only' | 'workspace-write' | 'danger-full-access';
8
+ export type WorktreePermissionApprovalPolicy = 'ask' | 'never';
9
+ export interface WorktreePermissionCurrentState {
10
+ readonly preset?: string;
11
+ readonly sandboxMode?: WorktreePermissionSandboxMode;
12
+ readonly approvalPolicy?: WorktreePermissionApprovalPolicy;
13
+ /** True when the current process has observed an explicit native UI choice. */
14
+ readonly explicitUserOverride: boolean;
15
+ }
16
+ export interface WorktreePermissionCapability {
17
+ readonly permissionService: boolean;
18
+ readonly fullPreset: boolean;
19
+ readonly workspaceWrite: boolean;
20
+ }
21
+ export interface WorktreePermissionDecisionInput {
22
+ readonly binding: WorktreePermissionBinding;
23
+ readonly current: WorktreePermissionCurrentState;
24
+ readonly capability: WorktreePermissionCapability;
25
+ }
26
+ export type WorktreePermissionDecision = {
27
+ readonly kind: 'apply-full';
28
+ readonly preset: typeof WORKTREE_FULL_ACCESS_PRESET;
29
+ } | {
30
+ readonly kind: 'preserve-user-restriction';
31
+ } | {
32
+ readonly kind: 'unverified';
33
+ } | {
34
+ readonly kind: 'fallback-workspace-write';
35
+ } | {
36
+ readonly kind: 'normalize-workspace-write';
37
+ } | {
38
+ readonly kind: 'no-op';
39
+ };
40
+ export type WorktreePermissionStatus = 'full-applied' | 'already-full' | 'confirmation-required' | 'fallback-workspace-write' | 'user-restricted' | 'unverified' | 'normalized-workspace-write' | 'no-op';
41
+ export interface WorktreePermissionResult {
42
+ readonly status: WorktreePermissionStatus;
43
+ readonly preset?: string;
44
+ readonly sandboxMode?: WorktreePermissionSandboxMode;
45
+ readonly approvalPolicy?: WorktreePermissionApprovalPolicy;
46
+ /** Session IDs considered by a detached-worktree normalization batch. */
47
+ readonly sessionIds?: readonly string[];
48
+ readonly retryable: boolean;
49
+ }
50
+ export interface WorktreePermissionRequest {
51
+ readonly workspaceId: string;
52
+ readonly worktreeId: string;
53
+ readonly sessionId: string;
54
+ readonly binding?: WorktreePermissionBinding;
55
+ readonly confirmed?: boolean;
56
+ }
57
+ export interface WorktreePermissionNormalizationRequest {
58
+ readonly workspaceId: string;
59
+ readonly worktreeId: string;
60
+ }
61
+ /** Browser-facing permission operation; it accepts no arbitrary DSH policy. */
62
+ export interface WorktreePermissionManager {
63
+ ensureWorktreePermission(input: WorktreePermissionRequest): Promise<WorktreePermissionResult>;
64
+ normalizeDetachedWorktreePermissions(input: WorktreePermissionNormalizationRequest): Promise<WorktreePermissionResult>;
65
+ }
66
+ /** Host-only adapter used by the Host composition layer. */
67
+ export interface WorktreePermissionPort {
68
+ ensure(input: WorktreePermissionRequest): Promise<WorktreePermissionResult>;
69
+ normalize(input: WorktreePermissionRequest): Promise<WorktreePermissionResult>;
70
+ }
71
+ /** Decide one permission transition without reading or mutating DSH state. */
72
+ export declare function decideWorktreePermission(input: WorktreePermissionDecisionInput): WorktreePermissionDecision;
73
+ //# sourceMappingURL=worktree-permission.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree-permission.d.ts","sourceRoot":"","sources":["../../src/contract/worktree-permission.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Browser-safe Worktree permission vocabulary. DSH runtime services are
3
+ * intentionally absent; the Host adapts them to these plain values.
4
+ */
5
+ export const WORKTREE_FULL_ACCESS_PRESET = 'worktree-full-access';
6
+ function isFullAccess(current) {
7
+ return (current.preset === WORKTREE_FULL_ACCESS_PRESET ||
8
+ current.sandboxMode === 'danger-full-access');
9
+ }
10
+ /** Decide one permission transition without reading or mutating DSH state. */
11
+ export function decideWorktreePermission(input) {
12
+ if (input.binding === 'main' || input.binding === 'unbound')
13
+ return { kind: 'no-op' };
14
+ if (input.binding === 'detached') {
15
+ return isFullAccess(input.current)
16
+ ? { kind: 'normalize-workspace-write' }
17
+ : { kind: 'no-op' };
18
+ }
19
+ if (input.current.explicitUserOverride)
20
+ return { kind: 'preserve-user-restriction' };
21
+ if (isFullAccess(input.current))
22
+ return { kind: 'no-op' };
23
+ if (!input.capability.permissionService)
24
+ return { kind: 'unverified' };
25
+ if (input.capability.fullPreset) {
26
+ return { kind: 'apply-full', preset: WORKTREE_FULL_ACCESS_PRESET };
27
+ }
28
+ if (input.capability.workspaceWrite)
29
+ return { kind: 'fallback-workspace-write' };
30
+ return { kind: 'unverified' };
31
+ }
32
+ //# sourceMappingURL=worktree-permission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree-permission.js","sourceRoot":"","sources":["../../src/contract/worktree-permission.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAA+B,CAAC;AAsF3E,SAAS,YAAY,CAAC,OAAuC;IAC3D,OAAO,CACL,OAAO,CAAC,MAAM,KAAK,2BAA2B;QAC9C,OAAO,CAAC,WAAW,KAAK,oBAAoB,CAC7C,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,wBAAwB,CACtC,KAAsC;IAEtC,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAEtF,IAAI,KAAK,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;QACjC,OAAO,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC;YAChC,CAAC,CAAC,EAAE,IAAI,EAAE,2BAA2B,EAAE;YACvC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,oBAAoB;QAAE,OAAO,EAAE,IAAI,EAAE,2BAA2B,EAAE,CAAC;IACrF,IAAI,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC1D,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,iBAAiB;QAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;IACvE,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QAChC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,2BAA2B,EAAE,CAAC;IACrE,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,CAAC,cAAc;QAAE,OAAO,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC;IACjF,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;AAChC,CAAC"}
@@ -50,6 +50,7 @@ export declare class DshHostReadAdapter implements DshReadAdapter {
50
50
  private readonly ctx;
51
51
  constructor(ctx: DshHostReadContext);
52
52
  getWorkspace(workspaceId: string): Promise<DshWorkspaceSummary | undefined>;
53
+ listWorkspaces(): Promise<readonly DshWorkspaceSummary[]>;
53
54
  getSession(sessionId: string): Promise<DshSessionSummary | undefined>;
54
55
  listSessions(): Promise<readonly DshSessionSummary[]>;
55
56
  private sessionSummary;
@@ -1 +1 @@
1
- {"version":3,"file":"dsh-read-adapter.d.ts","sourceRoot":"","sources":["../../src/host/dsh-read-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAE/E,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAE9B,UAAU,gBAAgB;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,CAAC;CAC3C;AACD,KAAK,oBAAoB,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC;AAC9D,UAAU,cAAc;IACtB,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;CACvC;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,kBAAkB;IACjC,kFAAkF;IAClF,QAAQ,CAAC,iBAAiB,EAAE;QAC1B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAAC;QAC9C,IAAI,IAAI,SAAS,gBAAgB,EAAE,CAAC;KACrC,CAAC;IACF,uEAAuE;IACvE,QAAQ,CAAC,QAAQ,EAAE;QACjB,GAAG,CAAC,EAAE,EAAE,SAAS,GAAG,cAAc,GAAG,SAAS,CAAC;QAC/C,IAAI,IAAI,SAAS,cAAc,EAAE,CAAC;KACnC,CAAC;IACF;;;OAGG;IACH,QAAQ,CAAC,kBAAkB,EAAE;QAC3B,IAAI,IAAI,OAAO,CAAC,SAAS,oBAAoB,EAAE,CAAC,CAAC;KAClD,CAAC;CACH;AAED;;;;;;GAMG;AACH,qBAAa,kBAAmB,YAAW,cAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,kBAAkB;IAE9C,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAM3E,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;IAYrE,YAAY,IAAI,OAAO,CAAC,SAAS,iBAAiB,EAAE,CAAC;IAe3D,OAAO,CAAC,cAAc;CAcvB"}
1
+ {"version":3,"file":"dsh-read-adapter.d.ts","sourceRoot":"","sources":["../../src/host/dsh-read-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAE/E,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAE9B,UAAU,gBAAgB;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,CAAC;CAC3C;AACD,KAAK,oBAAoB,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC;AAC9D,UAAU,cAAc;IACtB,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;CACvC;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,kBAAkB;IACjC,kFAAkF;IAClF,QAAQ,CAAC,iBAAiB,EAAE;QAC1B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAAC;QAC9C,IAAI,IAAI,SAAS,gBAAgB,EAAE,CAAC;KACrC,CAAC;IACF,uEAAuE;IACvE,QAAQ,CAAC,QAAQ,EAAE;QACjB,GAAG,CAAC,EAAE,EAAE,SAAS,GAAG,cAAc,GAAG,SAAS,CAAC;QAC/C,IAAI,IAAI,SAAS,cAAc,EAAE,CAAC;KACnC,CAAC;IACF;;;OAGG;IACH,QAAQ,CAAC,kBAAkB,EAAE;QAC3B,IAAI,IAAI,OAAO,CAAC,SAAS,oBAAoB,EAAE,CAAC,CAAC;KAClD,CAAC;CACH;AAED;;;;;;GAMG;AACH,qBAAa,kBAAmB,YAAW,cAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,kBAAkB;IAE9C,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAM3E,cAAc,IAAI,OAAO,CAAC,SAAS,mBAAmB,EAAE,CAAC;IAOzD,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;IAYrE,YAAY,IAAI,OAAO,CAAC,SAAS,iBAAiB,EAAE,CAAC;IAe3D,OAAO,CAAC,cAAc;CAcvB"}
@@ -16,6 +16,12 @@ export class DshHostReadAdapter {
16
16
  return undefined;
17
17
  return { workspaceId: workspace.id, rootPath: workspace.path };
18
18
  }
19
+ async listWorkspaces() {
20
+ return this.ctx.workspaceRegistry.list().map((workspace) => ({
21
+ workspaceId: workspace.id,
22
+ rootPath: workspace.path,
23
+ }));
24
+ }
19
25
  async getSession(sessionId) {
20
26
  // live header 优先,持久化列表只补齐未加载的 Session;两条路径都不读取 transcript。
21
27
  // Live headers win; the persistence list only fills unloaded Sessions, and neither
@@ -1 +1 @@
1
- {"version":3,"file":"dsh-read-adapter.js","sourceRoot":"","sources":["../../src/host/dsh-read-adapter.ts"],"names":[],"mappings":"AAiDA;;;;;;GAMG;AACH,MAAM,OAAO,kBAAkB;IACA;IAA7B,YAA6B,GAAuB;QAAvB,QAAG,GAAH,GAAG,CAAoB;IAAG,CAAC;IAExD,KAAK,CAAC,YAAY,CAAC,WAAmB;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC9D,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC9C,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAiB;QAChC,2DAA2D;QAC3D,mFAAmF;QACnF,0BAA0B;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAsB,CAAC,CAAC;QAC3D,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAC5D,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,SAAS,CAC1C,CAAC;QACF,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,yDAAyD;QACzD,8BAA8B;QAC9B,kFAAkF;QAClF,wDAAwD;QACxD,MAAM,SAAS,GAAG,IAAI,GAAG,EAA6B,CAAC;QACvD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;YAC/C,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QACjE,CAAC;QACD,KAAK,MAAM,MAAM,IAAI,MAAM,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,CAAC;YAC9D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAAE,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;QACvF,CAAC;QACD,OAAO,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IACjC,CAAC;IAEO,cAAc,CAAC,MAA4B;QACjD,2DAA2D;QAC3D,mCAAmC;QACnC,mFAAmF;QACnF,yFAAyF;QACzF,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB;aAC3C,IAAI,EAAE;aACN,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;QACrE,OAAO;YACL,SAAS,EAAE,MAAM,CAAC,EAAE;YACpB,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;YACrD,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,EAAE;SACtB,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"dsh-read-adapter.js","sourceRoot":"","sources":["../../src/host/dsh-read-adapter.ts"],"names":[],"mappings":"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"}
@@ -13,4 +13,8 @@ export type { DshHostReadContext } from './dsh-read-adapter.js';
13
13
  export { createWorktreeRemoteProjection } from './remote.js';
14
14
  export { WorktreeRemoteService } from './service.js';
15
15
  export type { WorktreeHostConfig } from './service.js';
16
+ export { createDshWorktreePermissionAdapter, } from './worktree-permission.js';
17
+ export type { DshWorktreePermissionAdapterOptions } from './worktree-permission.js';
18
+ export { createWorktreePermissionManager, } from './worktree-permission-manager.js';
19
+ export type { WorktreePermissionManagerOptions } from './worktree-permission-manager.js';
16
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/host/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,YAAY,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/host/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,YAAY,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EACL,kCAAkC,GACnC,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,mCAAmC,EAAE,MAAM,0BAA0B,CAAC;AACpF,OAAO,EACL,+BAA+B,GAChC,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EAAE,gCAAgC,EAAE,MAAM,kCAAkC,CAAC"}
package/lib/host/index.js CHANGED
@@ -11,4 +11,6 @@
11
11
  export { DshHostReadAdapter } from './dsh-read-adapter.js';
12
12
  export { createWorktreeRemoteProjection } from './remote.js';
13
13
  export { WorktreeRemoteService } from './service.js';
14
+ export { createDshWorktreePermissionAdapter, } from './worktree-permission.js';
15
+ export { createWorktreePermissionManager, } from './worktree-permission-manager.js';
14
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/host/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/host/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,OAAO,EACL,kCAAkC,GACnC,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,+BAA+B,GAChC,MAAM,kCAAkC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { type WorktreeManager, type WorktreeRemoteManager } from '../contract/index.js';
1
+ import { type WorktreeManager, type WorktreePermissionManager, type WorktreeRemoteManager } from '../contract/index.js';
2
2
  /**
3
3
  * 将 Host 内的 Manage 能力投影为 DSH Remote 可传输的 plain-JSON contract。
4
4
  *
@@ -12,5 +12,5 @@ import { type WorktreeManager, type WorktreeRemoteManager } from '../contract/in
12
12
  * @param manager - Host 内已组合完成的用例接口。 / Fully composed Host use-case port.
13
13
  * @returns 可供生成 Remote 暴露的安全投影。 / Safe projection for generated Remote export.
14
14
  */
15
- export declare function createWorktreeRemoteProjection(manager: WorktreeManager): WorktreeRemoteManager;
15
+ export declare function createWorktreeRemoteProjection(manager: WorktreeManager, permissions?: WorktreePermissionManager): WorktreeRemoteManager;
16
16
  //# sourceMappingURL=remote.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../../src/host/remote.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAE3B,MAAM,sBAAsB,CAAC;AAkC9B;;;;;;;;;;;;GAYG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,eAAe,GAAG,qBAAqB,CAmB9F"}
1
+ {"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../../src/host/remote.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAE3B,MAAM,sBAAsB,CAAC;AAkC9B;;;;;;;;;;;;GAYG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,eAAe,EACxB,WAAW,CAAC,EAAE,yBAAyB,GACtC,qBAAqB,CA+BvB"}
@@ -42,7 +42,7 @@ async function project(operation) {
42
42
  * @param manager - Host 内已组合完成的用例接口。 / Fully composed Host use-case port.
43
43
  * @returns 可供生成 Remote 暴露的安全投影。 / Safe projection for generated Remote export.
44
44
  */
45
- export function createWorktreeRemoteProjection(manager) {
45
+ export function createWorktreeRemoteProjection(manager, permissions) {
46
46
  return {
47
47
  listWorktrees: (input) => project(() => manager.listWorktrees(input)),
48
48
  listImportCandidates: (input) => project(() => manager.listImportCandidates(input)),
@@ -59,6 +59,12 @@ export function createWorktreeRemoteProjection(manager) {
59
59
  insertWorktreeBefore: (input) => project(() => manager.insertWorktreeBefore(input)),
60
60
  listBindings: (input) => project(() => manager.listBindings(input)),
61
61
  bindSession: (input) => project(() => manager.bindSession(input)),
62
+ ensureWorktreePermission: (input) => project(() => permissions === undefined
63
+ ? Promise.resolve({ status: 'unverified', retryable: true })
64
+ : permissions.ensureWorktreePermission(input)),
65
+ normalizeDetachedWorktreePermissions: (input) => project(() => permissions === undefined
66
+ ? Promise.resolve({ status: 'unverified', sessionIds: [], retryable: true })
67
+ : permissions.normalizeDetachedWorktreePermissions(input)),
62
68
  };
63
69
  }
64
70
  //# sourceMappingURL=remote.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"remote.js","sourceRoot":"","sources":["../../src/host/remote.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remote.js","sourceRoot":"","sources":["../../src/host/remote.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { Context } from '@deepseek-ai/cordis';
2
2
  import { TypertRemoteService } from '@deepseek-ai/dsh-typert-protocol';
3
- import type { BranchRecord, SessionBinding, WorktreeId, WorktreeRecord, WorktreeImportCandidate, WorkspaceId, WorktreeRemoteResult } from '../contract/index.js';
3
+ import type { BranchRecord, SessionBinding, WorktreeId, WorktreeRecord, WorktreeImportCandidate, WorktreePermissionRequest, WorktreePermissionNormalizationRequest, WorktreePermissionResult, WorkspaceId, WorktreeRemoteResult } from '../contract/index.js';
4
4
  /**
5
5
  * Host composition 所需且由 DSH bundle 注入的配置。
6
6
  * Configuration supplied by the DSH bundle to the Host composition.
@@ -23,6 +23,7 @@ export interface WorktreeHostConfig {
23
23
  */
24
24
  export declare class WorktreeRemoteService extends TypertRemoteService {
25
25
  static inject: string[];
26
+ private readonly manager;
26
27
  private readonly remote;
27
28
  /**
28
29
  * 为当前 Cordis fiber 建立一次 Host 组合,并复用同一个 Remote projection 处理调用。
@@ -51,6 +52,7 @@ export declare class WorktreeRemoteService extends TypertRemoteService {
51
52
  removeWorktree(input: {
52
53
  readonly workspaceId: string;
53
54
  readonly worktreeId: string;
55
+ readonly mutationToken: string;
54
56
  }): Promise<WorktreeRemoteResult<null>>;
55
57
  insertWorktreeBefore(input: {
56
58
  readonly workspaceId: string;
@@ -65,6 +67,8 @@ export declare class WorktreeRemoteService extends TypertRemoteService {
65
67
  readonly worktreeId: string;
66
68
  readonly sessionId: string;
67
69
  }): Promise<WorktreeRemoteResult<SessionBinding>>;
70
+ ensureWorktreePermission(input: WorktreePermissionRequest): Promise<WorktreeRemoteResult<WorktreePermissionResult>>;
71
+ normalizeDetachedWorktreePermissions(input: WorktreePermissionNormalizationRequest): Promise<WorktreeRemoteResult<WorktreePermissionResult>>;
68
72
  }
69
73
  export default WorktreeRemoteService;
70
74
  //# sourceMappingURL=service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/host/service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAU,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAE/E,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,UAAU,EACV,cAAc,EACd,uBAAuB,EACvB,WAAW,EAEX,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAQ9B;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,sEAAsE;IACtE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,qBAAsB,SAAQ,mBAAmB;IAI5D,MAAM,CAAC,MAAM,WAA2D;IAExE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAE/C;;;;OAIG;gBACS,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,kBAAkB;IAgBpD,aAAa,CAAC,KAAK,EAAE;QACnB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,GAAG,OAAO,CAAC,oBAAoB,CAAC,SAAS,cAAc,EAAE,CAAC,CAAC;IAK5D,oBAAoB,CAAC,KAAK,EAAE;QAC1B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;KACnC,GAAG,OAAO,CAAC,oBAAoB,CAAC,SAAS,uBAAuB,EAAE,CAAC,CAAC;IAKrE,YAAY,CAAC,KAAK,EAAE;QAClB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,GAAG,OAAO,CAAC,oBAAoB,CAAC,SAAS,YAAY,EAAE,CAAC,CAAC;IAK1D,cAAc,CAAC,KAAK,EAAE;QACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;KAC7B,GAAG,OAAO,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;IAKjD,cAAc,CAAC,KAAK,EAAE;QACpB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;QAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;KAC/B,GAAG,OAAO,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;IAKjD,cAAc,CAAC,KAAK,EAAE;QACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;KAC7B,GAAG,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAKvC,oBAAoB,CAAC,KAAK,EAAE;QAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;KACpC,GAAG,OAAO,CAAC,oBAAoB,CAAC,SAAS,UAAU,EAAE,CAAC,CAAC;IAKxD,YAAY,CAAC,KAAK,EAAE;QAClB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,GAAG,OAAO,CAAC,oBAAoB,CAAC,SAAS,cAAc,EAAE,CAAC,CAAC;IAK5D,WAAW,CAAC,KAAK,EAAE;QACjB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;KAC5B,GAAG,OAAO,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;CAGlD;AAED,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/host/service.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,8 @@ import { Remote, TypertRemoteService } from '@deepseek-ai/dsh-typert-protocol';
36
36
  import { createWorktreeManager } from '../manage/index.js';
37
37
  import { DshHostReadAdapter, } from './dsh-read-adapter.js';
38
38
  import { createWorktreeRemoteProjection } from './remote.js';
39
+ import { createDshWorktreePermissionAdapter, } from './worktree-permission.js';
40
+ import { createWorktreePermissionManager } from './worktree-permission-manager.js';
39
41
  /**
40
42
  * Worktree plugin 的真实 composition root。
41
43
  *
@@ -60,6 +62,8 @@ let WorktreeRemoteService = (() => {
60
62
  let _insertWorktreeBefore_decorators;
61
63
  let _listBindings_decorators;
62
64
  let _bindSession_decorators;
65
+ let _ensureWorktreePermission_decorators;
66
+ let _normalizeDetachedWorktreePermissions_decorators;
63
67
  return class WorktreeRemoteService extends _classSuper {
64
68
  static {
65
69
  const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
@@ -72,6 +76,8 @@ let WorktreeRemoteService = (() => {
72
76
  _insertWorktreeBefore_decorators = [Remote];
73
77
  _listBindings_decorators = [Remote];
74
78
  _bindSession_decorators = [Remote];
79
+ _ensureWorktreePermission_decorators = [Remote];
80
+ _normalizeDetachedWorktreePermissions_decorators = [Remote];
75
81
  __esDecorate(this, null, _listWorktrees_decorators, { kind: "method", name: "listWorktrees", static: false, private: false, access: { has: obj => "listWorktrees" in obj, get: obj => obj.listWorktrees }, metadata: _metadata }, null, _instanceExtraInitializers);
76
82
  __esDecorate(this, null, _listImportCandidates_decorators, { kind: "method", name: "listImportCandidates", static: false, private: false, access: { has: obj => "listImportCandidates" in obj, get: obj => obj.listImportCandidates }, metadata: _metadata }, null, _instanceExtraInitializers);
77
83
  __esDecorate(this, null, _listBranches_decorators, { kind: "method", name: "listBranches", static: false, private: false, access: { has: obj => "listBranches" in obj, get: obj => obj.listBranches }, metadata: _metadata }, null, _instanceExtraInitializers);
@@ -81,13 +87,16 @@ let WorktreeRemoteService = (() => {
81
87
  __esDecorate(this, null, _insertWorktreeBefore_decorators, { kind: "method", name: "insertWorktreeBefore", static: false, private: false, access: { has: obj => "insertWorktreeBefore" in obj, get: obj => obj.insertWorktreeBefore }, metadata: _metadata }, null, _instanceExtraInitializers);
82
88
  __esDecorate(this, null, _listBindings_decorators, { kind: "method", name: "listBindings", static: false, private: false, access: { has: obj => "listBindings" in obj, get: obj => obj.listBindings }, metadata: _metadata }, null, _instanceExtraInitializers);
83
89
  __esDecorate(this, null, _bindSession_decorators, { kind: "method", name: "bindSession", static: false, private: false, access: { has: obj => "bindSession" in obj, get: obj => obj.bindSession }, metadata: _metadata }, null, _instanceExtraInitializers);
90
+ __esDecorate(this, null, _ensureWorktreePermission_decorators, { kind: "method", name: "ensureWorktreePermission", static: false, private: false, access: { has: obj => "ensureWorktreePermission" in obj, get: obj => obj.ensureWorktreePermission }, metadata: _metadata }, null, _instanceExtraInitializers);
91
+ __esDecorate(this, null, _normalizeDetachedWorktreePermissions_decorators, { kind: "method", name: "normalizeDetachedWorktreePermissions", static: false, private: false, access: { has: obj => "normalizeDetachedWorktreePermissions" in obj, get: obj => obj.normalizeDetachedWorktreePermissions }, metadata: _metadata }, null, _instanceExtraInitializers);
84
92
  if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
85
93
  }
86
94
  // Cordis 在实例化前保证这三个只读 Host 服务可用;这里不注入任何 DSH mutation API。
87
95
  // Cordis ensures these three read-only Host services exist before instantiation; no
88
96
  // DSH mutation API is injected here.
89
97
  static inject = ['workspaceRegistry', 'sessions', 'sessionPersistence'];
90
- remote = __runInitializers(this, _instanceExtraInitializers);
98
+ manager = __runInitializers(this, _instanceExtraInitializers);
99
+ remote;
91
100
  /**
92
101
  * 为当前 Cordis fiber 建立一次 Host 组合,并复用同一个 Remote projection 处理调用。
93
102
  * Builds the Host composition once for the current Cordis fiber and reuses one Remote
@@ -95,9 +104,33 @@ let WorktreeRemoteService = (() => {
95
104
  */
96
105
  constructor(ctx, config) {
97
106
  super(ctx, 'worktreeManager');
98
- this.remote = createWorktreeRemoteProjection(createWorktreeManager({
99
- dsh: new DshHostReadAdapter(ctx),
107
+ const dsh = new DshHostReadAdapter(ctx);
108
+ const subprocess = ctx.get('subprocess');
109
+ const manager = createWorktreeManager({
110
+ dsh,
100
111
  dshHome: config.dshHome,
112
+ subprocess,
113
+ });
114
+ this.manager = manager;
115
+ ctx.effect(() => () => this.manager.close(), 'clutch-dsh-worktree: Host manager cleanup');
116
+ // Permission presets are an optional DSH capability. Read them through a
117
+ // structural seam so an older profile can still mount this plugin and
118
+ // report `unverified` instead of failing during composition.
119
+ const optionalServices = {
120
+ permissionPresets: ctx.get('permissionPresets'),
121
+ sandboxPolicy: ctx.get('sandboxPolicy'),
122
+ };
123
+ const permissionAdapter = createDshWorktreePermissionAdapter({
124
+ sessions: {
125
+ get: (sessionId) => ctx.sessions.get(sessionId),
126
+ },
127
+ permissionPresets: optionalServices.permissionPresets,
128
+ sandboxPolicy: optionalServices.sandboxPolicy,
129
+ });
130
+ this.remote = createWorktreeRemoteProjection(manager, createWorktreePermissionManager({
131
+ manager,
132
+ dsh,
133
+ permissions: permissionAdapter,
101
134
  }));
102
135
  }
103
136
  // 这些方法保持为薄边界,生成的 Typert 描述符只看到 contract-safe 签名;错误归一化
@@ -132,6 +165,12 @@ let WorktreeRemoteService = (() => {
132
165
  bindSession(input) {
133
166
  return this.remote.bindSession(input);
134
167
  }
168
+ ensureWorktreePermission(input) {
169
+ return this.remote.ensureWorktreePermission(input);
170
+ }
171
+ normalizeDetachedWorktreePermissions(input) {
172
+ return this.remote.normalizeDetachedWorktreePermissions(input);
173
+ }
135
174
  };
136
175
  })();
137
176
  export { WorktreeRemoteService };
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/host/service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAY/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EACL,kBAAkB,GAEnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAW7D;;;;;;;;;;;GAWG;IACU,qBAAqB;sBAAS,mBAAmB;;;;;;;;;;;iBAAjD,qBAAsB,SAAQ,WAAmB;;;yCA4B3D,MAAM;gDAON,MAAM;wCAON,MAAM;0CAON,MAAM;0CASN,MAAM;0CAQN,MAAM;gDAQN,MAAM;wCASN,MAAM;uCAON,MAAM;YA7DP,0LAAA,aAAa,6DAIZ;YAGD,+MAAA,oBAAoB,6DAInB;YAGD,uLAAA,YAAY,6DAIX;YAGD,6LAAA,cAAc,6DAMb;YAGD,6LAAA,cAAc,6DAKb;YAGD,6LAAA,cAAc,6DAKb;YAGD,+MAAA,oBAAoB,6DAMnB;YAGD,uLAAA,YAAY,6DAIX;YAGD,oLAAA,WAAW,6DAMV;;;QAhGD,0DAA0D;QAC1D,oFAAoF;QACpF,qCAAqC;QACrC,MAAM,CAAC,MAAM,GAAG,CAAC,mBAAmB,EAAE,UAAU,EAAE,oBAAoB,CAAC,CAAC;QAEvD,MAAM,GANZ,mDAAqB,CAMe;QAE/C;;;;WAIG;QACH,YAAY,GAAY,EAAE,MAA0B;YAClD,KAAK,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;YAC9B,IAAI,CAAC,MAAM,GAAG,8BAA8B,CAC1C,qBAAqB,CAAC;gBACpB,GAAG,EAAE,IAAI,kBAAkB,CAAC,GAAmC,CAAC;gBAChE,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC,CACH,CAAC;QACJ,CAAC;QAED,sDAAsD;QACtD,oDAAoD;QACpD,gFAAgF;QAChF,uFAAuF;QACvF,uCAAuC;QAEvC,aAAa,CAAC,KAEb;YACC,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;QAGD,oBAAoB,CAAC,KAEpB;YACC,OAAO,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACjD,CAAC;QAGD,YAAY,CAAC,KAEZ;YACC,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;QAGD,cAAc,CAAC,KAId;YACC,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;QAGD,cAAc,CAAC,KAGd;YACC,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;QAGD,cAAc,CAAC,KAGd;YACC,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;QAGD,oBAAoB,CAAC,KAIpB;YACC,OAAO,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACjD,CAAC;QAGD,YAAY,CAAC,KAEZ;YACC,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;QAGD,WAAW,CAAC,KAIX;YACC,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;;;SAjGU,qBAAqB;AAoGlC,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/host/service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { WorktreeManager, WorktreePermissionManager, WorktreePermissionPort } from '../contract/index.js';
2
+ import type { DshReadAdapter } from '../provider/types.js';
3
+ export interface WorktreePermissionManagerOptions {
4
+ readonly manager: Pick<WorktreeManager, 'listWorktrees' | 'listBindings'>;
5
+ readonly dsh: DshReadAdapter;
6
+ readonly permissions?: WorktreePermissionPort;
7
+ }
8
+ /**
9
+ * Compose the browser-facing permission operation with authoritative Worktree/Session
10
+ * facts. The caller cannot turn this into a general Session permission endpoint because
11
+ * the Host re-checks the active relation on every invocation.
12
+ */
13
+ export declare function createWorktreePermissionManager(options: WorktreePermissionManagerOptions): WorktreePermissionManager;
14
+ //# sourceMappingURL=worktree-permission-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree-permission-manager.d.ts","sourceRoot":"","sources":["../../src/host/worktree-permission-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,yBAAyB,EAEzB,sBAAsB,EAGvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,eAAe,GAAG,cAAc,CAAC,CAAC;IAC1E,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,sBAAsB,CAAC;CAC/C;AAyBD;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,gCAAgC,GACxC,yBAAyB,CAiJ3B"}