@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
@@ -10,6 +10,8 @@ const JsonValueRemoteCodec$schema6 = z.union([z.literal(null), z.string(), z.num
10
10
  const JsonValueRemoteCodec$schema7 = z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema7)), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema7)).readonly()])
11
11
  const JsonValueRemoteCodec$schema8 = z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema8)), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema8)).readonly()])
12
12
  const JsonValueRemoteCodec$schema9 = z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema9)), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema9)).readonly()])
13
+ const JsonValueRemoteCodec$schema10 = z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema10)), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema10)).readonly()])
14
+ const JsonValueRemoteCodec$schema11 = z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema11)), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema11)).readonly()])
13
15
  const _cerbur_clutch_dsh_worktree_worktreeManager_bindSession_parameter_0$schema = z.object({
14
16
  'workspaceId': z.string().readonly(),
15
17
  'worktreeId': z.string().readonly(),
@@ -18,9 +20,9 @@ const _cerbur_clutch_dsh_worktree_worktreeManager_bindSession_parameter_0$schema
18
20
  const _cerbur_clutch_dsh_worktree_worktreeManager_bindSession_result$schema = z.union([z.object({
19
21
  'ok': z.literal(false).readonly(),
20
22
  'error': z.object({
21
- 'code': z.union([z.literal("WORKSPACE_NOT_FOUND"), z.literal("WORKSPACE_NOT_GIT_REPOSITORY"), z.literal("GIT_NOT_INSTALLED"), z.literal("WORKTREE_REQUIRES_INITIAL_COMMIT"), z.literal("WORKTREE_BRANCH_CONFLICT"), z.literal("WORKTREE_NOT_FOUND"), z.literal("WORKTREE_ORDER_INVALID"), z.literal("WORKTREE_REMOVED"), z.literal("WORKTREE_IMPORT_INVALID"), z.literal("WORKTREE_ALREADY_MANAGED"), z.literal("SESSION_NOT_FOUND"), z.literal("SESSION_CWD_MISMATCH"), z.literal("SESSION_ALREADY_BOUND"), z.literal("SIDECAR_UNAVAILABLE"), z.literal("SIDECAR_CORRUPT"), z.literal("SIDECAR_SYNC_REQUIRED"), z.literal("GIT_OPERATION_FAILED")]).readonly(),
23
+ 'code': z.union([z.literal("WORKSPACE_NOT_FOUND"), z.literal("WORKSPACE_NOT_GIT_REPOSITORY"), z.literal("GIT_NOT_INSTALLED"), z.literal("WORKTREE_REQUIRES_INITIAL_COMMIT"), z.literal("WORKTREE_BRANCH_CONFLICT"), z.literal("WORKTREE_NOT_FOUND"), z.literal("WORKTREE_ORDER_INVALID"), z.literal("WORKTREE_REMOVED"), z.literal("WORKTREE_IMPORT_INVALID"), z.literal("WORKTREE_ALREADY_MANAGED"), z.literal("SESSION_NOT_FOUND"), z.literal("SESSION_CWD_MISMATCH"), z.literal("SESSION_ALREADY_BOUND"), z.literal("SIDECAR_UNAVAILABLE"), z.literal("SIDECAR_CORRUPT"), z.literal("SIDECAR_SYNC_REQUIRED"), z.literal("GIT_OPERATION_FAILED"), z.literal("WORKTREE_MUTATION_BUSY"), z.literal("WORKTREE_STATE_CONFLICT"), z.literal("WORKTREE_RECOVERY_REQUIRED"), z.literal("WORKTREE_IDENTITY_CHANGED"), z.literal("WORKTREE_PERMISSION_BINDING_REQUIRED")]).readonly(),
22
24
  'message': z.string().readonly(),
23
- 'details': z.record(z.string(), z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema5)), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema5)).readonly()])).readonly().readonly(),
25
+ 'details': z.record(z.string(), z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema9)), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema9)).readonly()])).readonly().readonly(),
24
26
  }).readonly(),
25
27
  }), z.object({
26
28
  'ok': z.literal(true).readonly(),
@@ -39,9 +41,9 @@ const _cerbur_clutch_dsh_worktree_worktreeManager_createWorktree_parameter_0$sch
39
41
  const _cerbur_clutch_dsh_worktree_worktreeManager_createWorktree_result$schema = z.union([z.object({
40
42
  'ok': z.literal(false).readonly(),
41
43
  'error': z.object({
42
- 'code': z.union([z.literal("WORKSPACE_NOT_FOUND"), z.literal("WORKSPACE_NOT_GIT_REPOSITORY"), z.literal("GIT_NOT_INSTALLED"), z.literal("WORKTREE_REQUIRES_INITIAL_COMMIT"), z.literal("WORKTREE_BRANCH_CONFLICT"), z.literal("WORKTREE_NOT_FOUND"), z.literal("WORKTREE_ORDER_INVALID"), z.literal("WORKTREE_REMOVED"), z.literal("WORKTREE_IMPORT_INVALID"), z.literal("WORKTREE_ALREADY_MANAGED"), z.literal("SESSION_NOT_FOUND"), z.literal("SESSION_CWD_MISMATCH"), z.literal("SESSION_ALREADY_BOUND"), z.literal("SIDECAR_UNAVAILABLE"), z.literal("SIDECAR_CORRUPT"), z.literal("SIDECAR_SYNC_REQUIRED"), z.literal("GIT_OPERATION_FAILED")]).readonly(),
44
+ 'code': z.union([z.literal("WORKSPACE_NOT_FOUND"), z.literal("WORKSPACE_NOT_GIT_REPOSITORY"), z.literal("GIT_NOT_INSTALLED"), z.literal("WORKTREE_REQUIRES_INITIAL_COMMIT"), z.literal("WORKTREE_BRANCH_CONFLICT"), z.literal("WORKTREE_NOT_FOUND"), z.literal("WORKTREE_ORDER_INVALID"), z.literal("WORKTREE_REMOVED"), z.literal("WORKTREE_IMPORT_INVALID"), z.literal("WORKTREE_ALREADY_MANAGED"), z.literal("SESSION_NOT_FOUND"), z.literal("SESSION_CWD_MISMATCH"), z.literal("SESSION_ALREADY_BOUND"), z.literal("SIDECAR_UNAVAILABLE"), z.literal("SIDECAR_CORRUPT"), z.literal("SIDECAR_SYNC_REQUIRED"), z.literal("GIT_OPERATION_FAILED"), z.literal("WORKTREE_MUTATION_BUSY"), z.literal("WORKTREE_STATE_CONFLICT"), z.literal("WORKTREE_RECOVERY_REQUIRED"), z.literal("WORKTREE_IDENTITY_CHANGED"), z.literal("WORKTREE_PERMISSION_BINDING_REQUIRED")]).readonly(),
43
45
  'message': z.string().readonly(),
44
- 'details': z.record(z.string(), z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema9)), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema9)).readonly()])).readonly().readonly(),
46
+ 'details': z.record(z.string(), z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema4)), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema4)).readonly()])).readonly().readonly(),
45
47
  }).readonly(),
46
48
  }), z.object({
47
49
  'ok': z.literal(true).readonly(),
@@ -52,7 +54,33 @@ const _cerbur_clutch_dsh_worktree_worktreeManager_createWorktree_result$schema =
52
54
  'branch': z.string().readonly(),
53
55
  'source': z.union([z.literal("plugin"), z.literal("external")]).readonly(),
54
56
  'status': z.union([z.literal("active"), z.literal("removed")]).readonly(),
55
- 'health': z.union([z.undefined(), z.literal("ready"), z.literal("repair")]).readonly().optional(),
57
+ 'health': z.union([z.undefined(), z.literal("ready"), z.literal("repair"), z.literal("recovery-needed")]).readonly().optional(),
58
+ 'mutationToken': z.union([z.undefined(), z.string()]).readonly().optional(),
59
+ }).readonly(),
60
+ })])
61
+ const _cerbur_clutch_dsh_worktree_worktreeManager_ensureWorktreePermission_parameter_0$schema = z.object({
62
+ 'workspaceId': z.string().readonly(),
63
+ 'worktreeId': z.string().readonly(),
64
+ 'sessionId': z.string().readonly(),
65
+ 'binding': z.union([z.undefined(), z.literal("active"), z.literal("detached"), z.literal("main"), z.literal("unbound")]).readonly().optional(),
66
+ 'confirmed': z.union([z.undefined(), z.literal(false), z.literal(true)]).readonly().optional(),
67
+ })
68
+ const _cerbur_clutch_dsh_worktree_worktreeManager_ensureWorktreePermission_result$schema = z.union([z.object({
69
+ 'ok': z.literal(false).readonly(),
70
+ 'error': z.object({
71
+ 'code': z.union([z.literal("WORKSPACE_NOT_FOUND"), z.literal("WORKSPACE_NOT_GIT_REPOSITORY"), z.literal("GIT_NOT_INSTALLED"), z.literal("WORKTREE_REQUIRES_INITIAL_COMMIT"), z.literal("WORKTREE_BRANCH_CONFLICT"), z.literal("WORKTREE_NOT_FOUND"), z.literal("WORKTREE_ORDER_INVALID"), z.literal("WORKTREE_REMOVED"), z.literal("WORKTREE_IMPORT_INVALID"), z.literal("WORKTREE_ALREADY_MANAGED"), z.literal("SESSION_NOT_FOUND"), z.literal("SESSION_CWD_MISMATCH"), z.literal("SESSION_ALREADY_BOUND"), z.literal("SIDECAR_UNAVAILABLE"), z.literal("SIDECAR_CORRUPT"), z.literal("SIDECAR_SYNC_REQUIRED"), z.literal("GIT_OPERATION_FAILED"), z.literal("WORKTREE_MUTATION_BUSY"), z.literal("WORKTREE_STATE_CONFLICT"), z.literal("WORKTREE_RECOVERY_REQUIRED"), z.literal("WORKTREE_IDENTITY_CHANGED"), z.literal("WORKTREE_PERMISSION_BINDING_REQUIRED")]).readonly(),
72
+ 'message': z.string().readonly(),
73
+ 'details': z.record(z.string(), z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema10)), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema10)).readonly()])).readonly().readonly(),
74
+ }).readonly(),
75
+ }), z.object({
76
+ 'ok': z.literal(true).readonly(),
77
+ 'value': z.object({
78
+ 'status': z.union([z.literal("full-applied"), z.literal("already-full"), z.literal("confirmation-required"), z.literal("fallback-workspace-write"), z.literal("user-restricted"), z.literal("unverified"), z.literal("normalized-workspace-write"), z.literal("no-op")]).readonly(),
79
+ 'preset': z.union([z.undefined(), z.string()]).readonly().optional(),
80
+ 'sandboxMode': z.union([z.undefined(), z.literal("read-only"), z.literal("workspace-write"), z.literal("danger-full-access")]).readonly().optional(),
81
+ 'approvalPolicy': z.union([z.undefined(), z.literal("ask"), z.literal("never")]).readonly().optional(),
82
+ 'sessionIds': z.union([z.undefined(), z.array(z.string())]).readonly().optional(),
83
+ 'retryable': z.boolean().readonly(),
56
84
  }).readonly(),
57
85
  })])
58
86
  const _cerbur_clutch_dsh_worktree_worktreeManager_importWorktree_parameter_0$schema = z.object({
@@ -62,9 +90,9 @@ const _cerbur_clutch_dsh_worktree_worktreeManager_importWorktree_parameter_0$sch
62
90
  const _cerbur_clutch_dsh_worktree_worktreeManager_importWorktree_result$schema = z.union([z.object({
63
91
  'ok': z.literal(false).readonly(),
64
92
  'error': z.object({
65
- 'code': z.union([z.literal("WORKSPACE_NOT_FOUND"), z.literal("WORKSPACE_NOT_GIT_REPOSITORY"), z.literal("GIT_NOT_INSTALLED"), z.literal("WORKTREE_REQUIRES_INITIAL_COMMIT"), z.literal("WORKTREE_BRANCH_CONFLICT"), z.literal("WORKTREE_NOT_FOUND"), z.literal("WORKTREE_ORDER_INVALID"), z.literal("WORKTREE_REMOVED"), z.literal("WORKTREE_IMPORT_INVALID"), z.literal("WORKTREE_ALREADY_MANAGED"), z.literal("SESSION_NOT_FOUND"), z.literal("SESSION_CWD_MISMATCH"), z.literal("SESSION_ALREADY_BOUND"), z.literal("SIDECAR_UNAVAILABLE"), z.literal("SIDECAR_CORRUPT"), z.literal("SIDECAR_SYNC_REQUIRED"), z.literal("GIT_OPERATION_FAILED")]).readonly(),
93
+ 'code': z.union([z.literal("WORKSPACE_NOT_FOUND"), z.literal("WORKSPACE_NOT_GIT_REPOSITORY"), z.literal("GIT_NOT_INSTALLED"), z.literal("WORKTREE_REQUIRES_INITIAL_COMMIT"), z.literal("WORKTREE_BRANCH_CONFLICT"), z.literal("WORKTREE_NOT_FOUND"), z.literal("WORKTREE_ORDER_INVALID"), z.literal("WORKTREE_REMOVED"), z.literal("WORKTREE_IMPORT_INVALID"), z.literal("WORKTREE_ALREADY_MANAGED"), z.literal("SESSION_NOT_FOUND"), z.literal("SESSION_CWD_MISMATCH"), z.literal("SESSION_ALREADY_BOUND"), z.literal("SIDECAR_UNAVAILABLE"), z.literal("SIDECAR_CORRUPT"), z.literal("SIDECAR_SYNC_REQUIRED"), z.literal("GIT_OPERATION_FAILED"), z.literal("WORKTREE_MUTATION_BUSY"), z.literal("WORKTREE_STATE_CONFLICT"), z.literal("WORKTREE_RECOVERY_REQUIRED"), z.literal("WORKTREE_IDENTITY_CHANGED"), z.literal("WORKTREE_PERMISSION_BINDING_REQUIRED")]).readonly(),
66
94
  'message': z.string().readonly(),
67
- 'details': z.record(z.string(), z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema)), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema)).readonly()])).readonly().readonly(),
95
+ 'details': z.record(z.string(), z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema5)), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema5)).readonly()])).readonly().readonly(),
68
96
  }).readonly(),
69
97
  }), z.object({
70
98
  'ok': z.literal(true).readonly(),
@@ -75,7 +103,8 @@ const _cerbur_clutch_dsh_worktree_worktreeManager_importWorktree_result$schema =
75
103
  'branch': z.string().readonly(),
76
104
  'source': z.union([z.literal("plugin"), z.literal("external")]).readonly(),
77
105
  'status': z.union([z.literal("active"), z.literal("removed")]).readonly(),
78
- 'health': z.union([z.undefined(), z.literal("ready"), z.literal("repair")]).readonly().optional(),
106
+ 'health': z.union([z.undefined(), z.literal("ready"), z.literal("repair"), z.literal("recovery-needed")]).readonly().optional(),
107
+ 'mutationToken': z.union([z.undefined(), z.string()]).readonly().optional(),
79
108
  }).readonly(),
80
109
  })])
81
110
  const _cerbur_clutch_dsh_worktree_worktreeManager_insertWorktreeBefore_parameter_0$schema = z.object({
@@ -86,9 +115,9 @@ const _cerbur_clutch_dsh_worktree_worktreeManager_insertWorktreeBefore_parameter
86
115
  const _cerbur_clutch_dsh_worktree_worktreeManager_insertWorktreeBefore_result$schema = z.union([z.object({
87
116
  'ok': z.literal(false).readonly(),
88
117
  'error': z.object({
89
- 'code': z.union([z.literal("WORKSPACE_NOT_FOUND"), z.literal("WORKSPACE_NOT_GIT_REPOSITORY"), z.literal("GIT_NOT_INSTALLED"), z.literal("WORKTREE_REQUIRES_INITIAL_COMMIT"), z.literal("WORKTREE_BRANCH_CONFLICT"), z.literal("WORKTREE_NOT_FOUND"), z.literal("WORKTREE_ORDER_INVALID"), z.literal("WORKTREE_REMOVED"), z.literal("WORKTREE_IMPORT_INVALID"), z.literal("WORKTREE_ALREADY_MANAGED"), z.literal("SESSION_NOT_FOUND"), z.literal("SESSION_CWD_MISMATCH"), z.literal("SESSION_ALREADY_BOUND"), z.literal("SIDECAR_UNAVAILABLE"), z.literal("SIDECAR_CORRUPT"), z.literal("SIDECAR_SYNC_REQUIRED"), z.literal("GIT_OPERATION_FAILED")]).readonly(),
118
+ 'code': z.union([z.literal("WORKSPACE_NOT_FOUND"), z.literal("WORKSPACE_NOT_GIT_REPOSITORY"), z.literal("GIT_NOT_INSTALLED"), z.literal("WORKTREE_REQUIRES_INITIAL_COMMIT"), z.literal("WORKTREE_BRANCH_CONFLICT"), z.literal("WORKTREE_NOT_FOUND"), z.literal("WORKTREE_ORDER_INVALID"), z.literal("WORKTREE_REMOVED"), z.literal("WORKTREE_IMPORT_INVALID"), z.literal("WORKTREE_ALREADY_MANAGED"), z.literal("SESSION_NOT_FOUND"), z.literal("SESSION_CWD_MISMATCH"), z.literal("SESSION_ALREADY_BOUND"), z.literal("SIDECAR_UNAVAILABLE"), z.literal("SIDECAR_CORRUPT"), z.literal("SIDECAR_SYNC_REQUIRED"), z.literal("GIT_OPERATION_FAILED"), z.literal("WORKTREE_MUTATION_BUSY"), z.literal("WORKTREE_STATE_CONFLICT"), z.literal("WORKTREE_RECOVERY_REQUIRED"), z.literal("WORKTREE_IDENTITY_CHANGED"), z.literal("WORKTREE_PERMISSION_BINDING_REQUIRED")]).readonly(),
90
119
  'message': z.string().readonly(),
91
- 'details': z.record(z.string(), z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema3)), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema3)).readonly()])).readonly().readonly(),
120
+ 'details': z.record(z.string(), z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema7)), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema7)).readonly()])).readonly().readonly(),
92
121
  }).readonly(),
93
122
  }), z.object({
94
123
  'ok': z.literal(true).readonly(),
@@ -100,9 +129,9 @@ const _cerbur_clutch_dsh_worktree_worktreeManager_listBindings_parameter_0$schem
100
129
  const _cerbur_clutch_dsh_worktree_worktreeManager_listBindings_result$schema = z.union([z.object({
101
130
  'ok': z.literal(false).readonly(),
102
131
  'error': z.object({
103
- 'code': z.union([z.literal("WORKSPACE_NOT_FOUND"), z.literal("WORKSPACE_NOT_GIT_REPOSITORY"), z.literal("GIT_NOT_INSTALLED"), z.literal("WORKTREE_REQUIRES_INITIAL_COMMIT"), z.literal("WORKTREE_BRANCH_CONFLICT"), z.literal("WORKTREE_NOT_FOUND"), z.literal("WORKTREE_ORDER_INVALID"), z.literal("WORKTREE_REMOVED"), z.literal("WORKTREE_IMPORT_INVALID"), z.literal("WORKTREE_ALREADY_MANAGED"), z.literal("SESSION_NOT_FOUND"), z.literal("SESSION_CWD_MISMATCH"), z.literal("SESSION_ALREADY_BOUND"), z.literal("SIDECAR_UNAVAILABLE"), z.literal("SIDECAR_CORRUPT"), z.literal("SIDECAR_SYNC_REQUIRED"), z.literal("GIT_OPERATION_FAILED")]).readonly(),
132
+ 'code': z.union([z.literal("WORKSPACE_NOT_FOUND"), z.literal("WORKSPACE_NOT_GIT_REPOSITORY"), z.literal("GIT_NOT_INSTALLED"), z.literal("WORKTREE_REQUIRES_INITIAL_COMMIT"), z.literal("WORKTREE_BRANCH_CONFLICT"), z.literal("WORKTREE_NOT_FOUND"), z.literal("WORKTREE_ORDER_INVALID"), z.literal("WORKTREE_REMOVED"), z.literal("WORKTREE_IMPORT_INVALID"), z.literal("WORKTREE_ALREADY_MANAGED"), z.literal("SESSION_NOT_FOUND"), z.literal("SESSION_CWD_MISMATCH"), z.literal("SESSION_ALREADY_BOUND"), z.literal("SIDECAR_UNAVAILABLE"), z.literal("SIDECAR_CORRUPT"), z.literal("SIDECAR_SYNC_REQUIRED"), z.literal("GIT_OPERATION_FAILED"), z.literal("WORKTREE_MUTATION_BUSY"), z.literal("WORKTREE_STATE_CONFLICT"), z.literal("WORKTREE_RECOVERY_REQUIRED"), z.literal("WORKTREE_IDENTITY_CHANGED"), z.literal("WORKTREE_PERMISSION_BINDING_REQUIRED")]).readonly(),
104
133
  'message': z.string().readonly(),
105
- 'details': z.record(z.string(), z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema4)), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema4)).readonly()])).readonly().readonly(),
134
+ 'details': z.record(z.string(), z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema8)), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema8)).readonly()])).readonly().readonly(),
106
135
  }).readonly(),
107
136
  }), z.object({
108
137
  'ok': z.literal(true).readonly(),
@@ -119,9 +148,9 @@ const _cerbur_clutch_dsh_worktree_worktreeManager_listBranches_parameter_0$schem
119
148
  const _cerbur_clutch_dsh_worktree_worktreeManager_listBranches_result$schema = z.union([z.object({
120
149
  'ok': z.literal(false).readonly(),
121
150
  'error': z.object({
122
- 'code': z.union([z.literal("WORKSPACE_NOT_FOUND"), z.literal("WORKSPACE_NOT_GIT_REPOSITORY"), z.literal("GIT_NOT_INSTALLED"), z.literal("WORKTREE_REQUIRES_INITIAL_COMMIT"), z.literal("WORKTREE_BRANCH_CONFLICT"), z.literal("WORKTREE_NOT_FOUND"), z.literal("WORKTREE_ORDER_INVALID"), z.literal("WORKTREE_REMOVED"), z.literal("WORKTREE_IMPORT_INVALID"), z.literal("WORKTREE_ALREADY_MANAGED"), z.literal("SESSION_NOT_FOUND"), z.literal("SESSION_CWD_MISMATCH"), z.literal("SESSION_ALREADY_BOUND"), z.literal("SIDECAR_UNAVAILABLE"), z.literal("SIDECAR_CORRUPT"), z.literal("SIDECAR_SYNC_REQUIRED"), z.literal("GIT_OPERATION_FAILED")]).readonly(),
151
+ 'code': z.union([z.literal("WORKSPACE_NOT_FOUND"), z.literal("WORKSPACE_NOT_GIT_REPOSITORY"), z.literal("GIT_NOT_INSTALLED"), z.literal("WORKTREE_REQUIRES_INITIAL_COMMIT"), z.literal("WORKTREE_BRANCH_CONFLICT"), z.literal("WORKTREE_NOT_FOUND"), z.literal("WORKTREE_ORDER_INVALID"), z.literal("WORKTREE_REMOVED"), z.literal("WORKTREE_IMPORT_INVALID"), z.literal("WORKTREE_ALREADY_MANAGED"), z.literal("SESSION_NOT_FOUND"), z.literal("SESSION_CWD_MISMATCH"), z.literal("SESSION_ALREADY_BOUND"), z.literal("SIDECAR_UNAVAILABLE"), z.literal("SIDECAR_CORRUPT"), z.literal("SIDECAR_SYNC_REQUIRED"), z.literal("GIT_OPERATION_FAILED"), z.literal("WORKTREE_MUTATION_BUSY"), z.literal("WORKTREE_STATE_CONFLICT"), z.literal("WORKTREE_RECOVERY_REQUIRED"), z.literal("WORKTREE_IDENTITY_CHANGED"), z.literal("WORKTREE_PERMISSION_BINDING_REQUIRED")]).readonly(),
123
152
  'message': z.string().readonly(),
124
- 'details': z.record(z.string(), z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema8)), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema8)).readonly()])).readonly().readonly(),
153
+ 'details': z.record(z.string(), z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema3)), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema3)).readonly()])).readonly().readonly(),
125
154
  }).readonly(),
126
155
  }), z.object({
127
156
  'ok': z.literal(true).readonly(),
@@ -137,9 +166,9 @@ const _cerbur_clutch_dsh_worktree_worktreeManager_listImportCandidates_parameter
137
166
  const _cerbur_clutch_dsh_worktree_worktreeManager_listImportCandidates_result$schema = z.union([z.object({
138
167
  'ok': z.literal(false).readonly(),
139
168
  'error': z.object({
140
- 'code': z.union([z.literal("WORKSPACE_NOT_FOUND"), z.literal("WORKSPACE_NOT_GIT_REPOSITORY"), z.literal("GIT_NOT_INSTALLED"), z.literal("WORKTREE_REQUIRES_INITIAL_COMMIT"), z.literal("WORKTREE_BRANCH_CONFLICT"), z.literal("WORKTREE_NOT_FOUND"), z.literal("WORKTREE_ORDER_INVALID"), z.literal("WORKTREE_REMOVED"), z.literal("WORKTREE_IMPORT_INVALID"), z.literal("WORKTREE_ALREADY_MANAGED"), z.literal("SESSION_NOT_FOUND"), z.literal("SESSION_CWD_MISMATCH"), z.literal("SESSION_ALREADY_BOUND"), z.literal("SIDECAR_UNAVAILABLE"), z.literal("SIDECAR_CORRUPT"), z.literal("SIDECAR_SYNC_REQUIRED"), z.literal("GIT_OPERATION_FAILED")]).readonly(),
169
+ 'code': z.union([z.literal("WORKSPACE_NOT_FOUND"), z.literal("WORKSPACE_NOT_GIT_REPOSITORY"), z.literal("GIT_NOT_INSTALLED"), z.literal("WORKTREE_REQUIRES_INITIAL_COMMIT"), z.literal("WORKTREE_BRANCH_CONFLICT"), z.literal("WORKTREE_NOT_FOUND"), z.literal("WORKTREE_ORDER_INVALID"), z.literal("WORKTREE_REMOVED"), z.literal("WORKTREE_IMPORT_INVALID"), z.literal("WORKTREE_ALREADY_MANAGED"), z.literal("SESSION_NOT_FOUND"), z.literal("SESSION_CWD_MISMATCH"), z.literal("SESSION_ALREADY_BOUND"), z.literal("SIDECAR_UNAVAILABLE"), z.literal("SIDECAR_CORRUPT"), z.literal("SIDECAR_SYNC_REQUIRED"), z.literal("GIT_OPERATION_FAILED"), z.literal("WORKTREE_MUTATION_BUSY"), z.literal("WORKTREE_STATE_CONFLICT"), z.literal("WORKTREE_RECOVERY_REQUIRED"), z.literal("WORKTREE_IDENTITY_CHANGED"), z.literal("WORKTREE_PERMISSION_BINDING_REQUIRED")]).readonly(),
141
170
  'message': z.string().readonly(),
142
- 'details': z.record(z.string(), z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema7)), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema7)).readonly()])).readonly().readonly(),
171
+ 'details': z.record(z.string(), z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema2)), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema2)).readonly()])).readonly().readonly(),
143
172
  }).readonly(),
144
173
  }), z.object({
145
174
  'ok': z.literal(true).readonly(),
@@ -154,9 +183,9 @@ const _cerbur_clutch_dsh_worktree_worktreeManager_listWorktrees_parameter_0$sche
154
183
  const _cerbur_clutch_dsh_worktree_worktreeManager_listWorktrees_result$schema = z.union([z.object({
155
184
  'ok': z.literal(false).readonly(),
156
185
  'error': z.object({
157
- 'code': z.union([z.literal("WORKSPACE_NOT_FOUND"), z.literal("WORKSPACE_NOT_GIT_REPOSITORY"), z.literal("GIT_NOT_INSTALLED"), z.literal("WORKTREE_REQUIRES_INITIAL_COMMIT"), z.literal("WORKTREE_BRANCH_CONFLICT"), z.literal("WORKTREE_NOT_FOUND"), z.literal("WORKTREE_ORDER_INVALID"), z.literal("WORKTREE_REMOVED"), z.literal("WORKTREE_IMPORT_INVALID"), z.literal("WORKTREE_ALREADY_MANAGED"), z.literal("SESSION_NOT_FOUND"), z.literal("SESSION_CWD_MISMATCH"), z.literal("SESSION_ALREADY_BOUND"), z.literal("SIDECAR_UNAVAILABLE"), z.literal("SIDECAR_CORRUPT"), z.literal("SIDECAR_SYNC_REQUIRED"), z.literal("GIT_OPERATION_FAILED")]).readonly(),
186
+ 'code': z.union([z.literal("WORKSPACE_NOT_FOUND"), z.literal("WORKSPACE_NOT_GIT_REPOSITORY"), z.literal("GIT_NOT_INSTALLED"), z.literal("WORKTREE_REQUIRES_INITIAL_COMMIT"), z.literal("WORKTREE_BRANCH_CONFLICT"), z.literal("WORKTREE_NOT_FOUND"), z.literal("WORKTREE_ORDER_INVALID"), z.literal("WORKTREE_REMOVED"), z.literal("WORKTREE_IMPORT_INVALID"), z.literal("WORKTREE_ALREADY_MANAGED"), z.literal("SESSION_NOT_FOUND"), z.literal("SESSION_CWD_MISMATCH"), z.literal("SESSION_ALREADY_BOUND"), z.literal("SIDECAR_UNAVAILABLE"), z.literal("SIDECAR_CORRUPT"), z.literal("SIDECAR_SYNC_REQUIRED"), z.literal("GIT_OPERATION_FAILED"), z.literal("WORKTREE_MUTATION_BUSY"), z.literal("WORKTREE_STATE_CONFLICT"), z.literal("WORKTREE_RECOVERY_REQUIRED"), z.literal("WORKTREE_IDENTITY_CHANGED"), z.literal("WORKTREE_PERMISSION_BINDING_REQUIRED")]).readonly(),
158
187
  'message': z.string().readonly(),
159
- 'details': z.record(z.string(), z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema6)), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema6)).readonly()])).readonly().readonly(),
188
+ 'details': z.record(z.string(), z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema)), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema)).readonly()])).readonly().readonly(),
160
189
  }).readonly(),
161
190
  }), z.object({
162
191
  'ok': z.literal(true).readonly(),
@@ -167,19 +196,43 @@ const _cerbur_clutch_dsh_worktree_worktreeManager_listWorktrees_result$schema =
167
196
  'branch': z.string().readonly(),
168
197
  'source': z.union([z.literal("plugin"), z.literal("external")]).readonly(),
169
198
  'status': z.union([z.literal("active"), z.literal("removed")]).readonly(),
170
- 'health': z.union([z.undefined(), z.literal("ready"), z.literal("repair")]).readonly().optional(),
199
+ 'health': z.union([z.undefined(), z.literal("ready"), z.literal("repair"), z.literal("recovery-needed")]).readonly().optional(),
200
+ 'mutationToken': z.union([z.undefined(), z.string()]).readonly().optional(),
171
201
  })).readonly(),
172
202
  })])
203
+ const _cerbur_clutch_dsh_worktree_worktreeManager_normalizeDetachedWorktreePermissions_parameter_0$schema = z.object({
204
+ 'workspaceId': z.string().readonly(),
205
+ 'worktreeId': z.string().readonly(),
206
+ })
207
+ const _cerbur_clutch_dsh_worktree_worktreeManager_normalizeDetachedWorktreePermissions_result$schema = z.union([z.object({
208
+ 'ok': z.literal(false).readonly(),
209
+ 'error': z.object({
210
+ 'code': z.union([z.literal("WORKSPACE_NOT_FOUND"), z.literal("WORKSPACE_NOT_GIT_REPOSITORY"), z.literal("GIT_NOT_INSTALLED"), z.literal("WORKTREE_REQUIRES_INITIAL_COMMIT"), z.literal("WORKTREE_BRANCH_CONFLICT"), z.literal("WORKTREE_NOT_FOUND"), z.literal("WORKTREE_ORDER_INVALID"), z.literal("WORKTREE_REMOVED"), z.literal("WORKTREE_IMPORT_INVALID"), z.literal("WORKTREE_ALREADY_MANAGED"), z.literal("SESSION_NOT_FOUND"), z.literal("SESSION_CWD_MISMATCH"), z.literal("SESSION_ALREADY_BOUND"), z.literal("SIDECAR_UNAVAILABLE"), z.literal("SIDECAR_CORRUPT"), z.literal("SIDECAR_SYNC_REQUIRED"), z.literal("GIT_OPERATION_FAILED"), z.literal("WORKTREE_MUTATION_BUSY"), z.literal("WORKTREE_STATE_CONFLICT"), z.literal("WORKTREE_RECOVERY_REQUIRED"), z.literal("WORKTREE_IDENTITY_CHANGED"), z.literal("WORKTREE_PERMISSION_BINDING_REQUIRED")]).readonly(),
211
+ 'message': z.string().readonly(),
212
+ 'details': z.record(z.string(), z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema11)), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema11)).readonly()])).readonly().readonly(),
213
+ }).readonly(),
214
+ }), z.object({
215
+ 'ok': z.literal(true).readonly(),
216
+ 'value': z.object({
217
+ 'status': z.union([z.literal("full-applied"), z.literal("already-full"), z.literal("confirmation-required"), z.literal("fallback-workspace-write"), z.literal("user-restricted"), z.literal("unverified"), z.literal("normalized-workspace-write"), z.literal("no-op")]).readonly(),
218
+ 'preset': z.union([z.undefined(), z.string()]).readonly().optional(),
219
+ 'sandboxMode': z.union([z.undefined(), z.literal("read-only"), z.literal("workspace-write"), z.literal("danger-full-access")]).readonly().optional(),
220
+ 'approvalPolicy': z.union([z.undefined(), z.literal("ask"), z.literal("never")]).readonly().optional(),
221
+ 'sessionIds': z.union([z.undefined(), z.array(z.string())]).readonly().optional(),
222
+ 'retryable': z.boolean().readonly(),
223
+ }).readonly(),
224
+ })])
173
225
  const _cerbur_clutch_dsh_worktree_worktreeManager_removeWorktree_parameter_0$schema = z.object({
174
226
  'workspaceId': z.string().readonly(),
175
227
  'worktreeId': z.string().readonly(),
228
+ 'mutationToken': z.string().readonly(),
176
229
  })
177
230
  const _cerbur_clutch_dsh_worktree_worktreeManager_removeWorktree_result$schema = z.union([z.object({
178
231
  'ok': z.literal(false).readonly(),
179
232
  'error': z.object({
180
- 'code': z.union([z.literal("WORKSPACE_NOT_FOUND"), z.literal("WORKSPACE_NOT_GIT_REPOSITORY"), z.literal("GIT_NOT_INSTALLED"), z.literal("WORKTREE_REQUIRES_INITIAL_COMMIT"), z.literal("WORKTREE_BRANCH_CONFLICT"), z.literal("WORKTREE_NOT_FOUND"), z.literal("WORKTREE_ORDER_INVALID"), z.literal("WORKTREE_REMOVED"), z.literal("WORKTREE_IMPORT_INVALID"), z.literal("WORKTREE_ALREADY_MANAGED"), z.literal("SESSION_NOT_FOUND"), z.literal("SESSION_CWD_MISMATCH"), z.literal("SESSION_ALREADY_BOUND"), z.literal("SIDECAR_UNAVAILABLE"), z.literal("SIDECAR_CORRUPT"), z.literal("SIDECAR_SYNC_REQUIRED"), z.literal("GIT_OPERATION_FAILED")]).readonly(),
233
+ 'code': z.union([z.literal("WORKSPACE_NOT_FOUND"), z.literal("WORKSPACE_NOT_GIT_REPOSITORY"), z.literal("GIT_NOT_INSTALLED"), z.literal("WORKTREE_REQUIRES_INITIAL_COMMIT"), z.literal("WORKTREE_BRANCH_CONFLICT"), z.literal("WORKTREE_NOT_FOUND"), z.literal("WORKTREE_ORDER_INVALID"), z.literal("WORKTREE_REMOVED"), z.literal("WORKTREE_IMPORT_INVALID"), z.literal("WORKTREE_ALREADY_MANAGED"), z.literal("SESSION_NOT_FOUND"), z.literal("SESSION_CWD_MISMATCH"), z.literal("SESSION_ALREADY_BOUND"), z.literal("SIDECAR_UNAVAILABLE"), z.literal("SIDECAR_CORRUPT"), z.literal("SIDECAR_SYNC_REQUIRED"), z.literal("GIT_OPERATION_FAILED"), z.literal("WORKTREE_MUTATION_BUSY"), z.literal("WORKTREE_STATE_CONFLICT"), z.literal("WORKTREE_RECOVERY_REQUIRED"), z.literal("WORKTREE_IDENTITY_CHANGED"), z.literal("WORKTREE_PERMISSION_BINDING_REQUIRED")]).readonly(),
181
234
  'message': z.string().readonly(),
182
- 'details': z.record(z.string(), z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema2)), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema2)).readonly()])).readonly().readonly(),
235
+ 'details': z.record(z.string(), z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema6)), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema6)).readonly()])).readonly().readonly(),
183
236
  }).readonly(),
184
237
  }), z.object({
185
238
  'ok': z.literal(true).readonly(),
@@ -215,7 +268,7 @@ export const TYPERT = {
215
268
  typeSymbol: '@cerbur/clutch-dsh-worktree/contract#WorktreeRemoteResult',
216
269
  schema: _cerbur_clutch_dsh_worktree_worktreeManager_bindSession_result$schema,
217
270
  },
218
- sourceLocation: {"file":"packages/clutch-dsh-worktree/src/host/service.ts","line":133,"column":3},
271
+ sourceLocation: {"file":"packages/clutch-dsh-worktree/src/host/service.ts","line":178,"column":3},
219
272
  },
220
273
  {
221
274
  id: '@cerbur/clutch-dsh-worktree#worktreeManager/createWorktree',
@@ -240,7 +293,32 @@ export const TYPERT = {
240
293
  typeSymbol: '@cerbur/clutch-dsh-worktree/contract#WorktreeRemoteResult',
241
294
  schema: _cerbur_clutch_dsh_worktree_worktreeManager_createWorktree_result$schema,
242
295
  },
243
- sourceLocation: {"file":"packages/clutch-dsh-worktree/src/host/service.ts","line":92,"column":3},
296
+ sourceLocation: {"file":"packages/clutch-dsh-worktree/src/host/service.ts","line":136,"column":3},
297
+ },
298
+ {
299
+ id: '@cerbur/clutch-dsh-worktree#worktreeManager/ensureWorktreePermission',
300
+ service: 'worktreeManager',
301
+ namespace: 'worktreeManager',
302
+ method: 'ensureWorktreePermission',
303
+ invocation: { kind: 'direct' },
304
+ parameters: [
305
+ {
306
+ name: 'input',
307
+ wire: 'input',
308
+ source: 'json',
309
+ codec: {
310
+ mode: 'strict',
311
+ typeSymbol: '@cerbur/clutch-dsh-worktree/contract#WorktreePermissionRequest',
312
+ schema: _cerbur_clutch_dsh_worktree_worktreeManager_ensureWorktreePermission_parameter_0$schema,
313
+ },
314
+ },
315
+ ],
316
+ result: {
317
+ mode: 'strict',
318
+ typeSymbol: '@cerbur/clutch-dsh-worktree/contract#WorktreeRemoteResult',
319
+ schema: _cerbur_clutch_dsh_worktree_worktreeManager_ensureWorktreePermission_result$schema,
320
+ },
321
+ sourceLocation: {"file":"packages/clutch-dsh-worktree/src/host/service.ts","line":187,"column":3},
244
322
  },
245
323
  {
246
324
  id: '@cerbur/clutch-dsh-worktree#worktreeManager/importWorktree',
@@ -265,7 +343,7 @@ export const TYPERT = {
265
343
  typeSymbol: '@cerbur/clutch-dsh-worktree/contract#WorktreeRemoteResult',
266
344
  schema: _cerbur_clutch_dsh_worktree_worktreeManager_importWorktree_result$schema,
267
345
  },
268
- sourceLocation: {"file":"packages/clutch-dsh-worktree/src/host/service.ts","line":101,"column":3},
346
+ sourceLocation: {"file":"packages/clutch-dsh-worktree/src/host/service.ts","line":145,"column":3},
269
347
  },
270
348
  {
271
349
  id: '@cerbur/clutch-dsh-worktree#worktreeManager/insertWorktreeBefore',
@@ -290,7 +368,7 @@ export const TYPERT = {
290
368
  typeSymbol: '@cerbur/clutch-dsh-worktree/contract#WorktreeRemoteResult',
291
369
  schema: _cerbur_clutch_dsh_worktree_worktreeManager_insertWorktreeBefore_result$schema,
292
370
  },
293
- sourceLocation: {"file":"packages/clutch-dsh-worktree/src/host/service.ts","line":117,"column":3},
371
+ sourceLocation: {"file":"packages/clutch-dsh-worktree/src/host/service.ts","line":162,"column":3},
294
372
  },
295
373
  {
296
374
  id: '@cerbur/clutch-dsh-worktree#worktreeManager/listBindings',
@@ -315,7 +393,7 @@ export const TYPERT = {
315
393
  typeSymbol: '@cerbur/clutch-dsh-worktree/contract#WorktreeRemoteResult',
316
394
  schema: _cerbur_clutch_dsh_worktree_worktreeManager_listBindings_result$schema,
317
395
  },
318
- sourceLocation: {"file":"packages/clutch-dsh-worktree/src/host/service.ts","line":126,"column":3},
396
+ sourceLocation: {"file":"packages/clutch-dsh-worktree/src/host/service.ts","line":171,"column":3},
319
397
  },
320
398
  {
321
399
  id: '@cerbur/clutch-dsh-worktree#worktreeManager/listBranches',
@@ -340,7 +418,7 @@ export const TYPERT = {
340
418
  typeSymbol: '@cerbur/clutch-dsh-worktree/contract#WorktreeRemoteResult',
341
419
  schema: _cerbur_clutch_dsh_worktree_worktreeManager_listBranches_result$schema,
342
420
  },
343
- sourceLocation: {"file":"packages/clutch-dsh-worktree/src/host/service.ts","line":85,"column":3},
421
+ sourceLocation: {"file":"packages/clutch-dsh-worktree/src/host/service.ts","line":129,"column":3},
344
422
  },
345
423
  {
346
424
  id: '@cerbur/clutch-dsh-worktree#worktreeManager/listImportCandidates',
@@ -365,7 +443,7 @@ export const TYPERT = {
365
443
  typeSymbol: '@cerbur/clutch-dsh-worktree/contract#WorktreeRemoteResult',
366
444
  schema: _cerbur_clutch_dsh_worktree_worktreeManager_listImportCandidates_result$schema,
367
445
  },
368
- sourceLocation: {"file":"packages/clutch-dsh-worktree/src/host/service.ts","line":78,"column":3},
446
+ sourceLocation: {"file":"packages/clutch-dsh-worktree/src/host/service.ts","line":122,"column":3},
369
447
  },
370
448
  {
371
449
  id: '@cerbur/clutch-dsh-worktree#worktreeManager/listWorktrees',
@@ -390,7 +468,32 @@ export const TYPERT = {
390
468
  typeSymbol: '@cerbur/clutch-dsh-worktree/contract#WorktreeRemoteResult',
391
469
  schema: _cerbur_clutch_dsh_worktree_worktreeManager_listWorktrees_result$schema,
392
470
  },
393
- sourceLocation: {"file":"packages/clutch-dsh-worktree/src/host/service.ts","line":71,"column":3},
471
+ sourceLocation: {"file":"packages/clutch-dsh-worktree/src/host/service.ts","line":115,"column":3},
472
+ },
473
+ {
474
+ id: '@cerbur/clutch-dsh-worktree#worktreeManager/normalizeDetachedWorktreePermissions',
475
+ service: 'worktreeManager',
476
+ namespace: 'worktreeManager',
477
+ method: 'normalizeDetachedWorktreePermissions',
478
+ invocation: { kind: 'direct' },
479
+ parameters: [
480
+ {
481
+ name: 'input',
482
+ wire: 'input',
483
+ source: 'json',
484
+ codec: {
485
+ mode: 'strict',
486
+ typeSymbol: '@cerbur/clutch-dsh-worktree/contract#WorktreePermissionNormalizationRequest',
487
+ schema: _cerbur_clutch_dsh_worktree_worktreeManager_normalizeDetachedWorktreePermissions_parameter_0$schema,
488
+ },
489
+ },
490
+ ],
491
+ result: {
492
+ mode: 'strict',
493
+ typeSymbol: '@cerbur/clutch-dsh-worktree/contract#WorktreeRemoteResult',
494
+ schema: _cerbur_clutch_dsh_worktree_worktreeManager_normalizeDetachedWorktreePermissions_result$schema,
495
+ },
496
+ sourceLocation: {"file":"packages/clutch-dsh-worktree/src/host/service.ts","line":194,"column":3},
394
497
  },
395
498
  {
396
499
  id: '@cerbur/clutch-dsh-worktree#worktreeManager/removeWorktree',
@@ -415,7 +518,7 @@ export const TYPERT = {
415
518
  typeSymbol: '@cerbur/clutch-dsh-worktree/contract#WorktreeRemoteResult',
416
519
  schema: _cerbur_clutch_dsh_worktree_worktreeManager_removeWorktree_result$schema,
417
520
  },
418
- sourceLocation: {"file":"packages/clutch-dsh-worktree/src/host/service.ts","line":109,"column":3},
521
+ sourceLocation: {"file":"packages/clutch-dsh-worktree/src/host/service.ts","line":153,"column":3},
419
522
  },
420
523
  ],
421
524
  model: {
@@ -3,30 +3,34 @@ import type {
3
3
  RemoteResult,
4
4
  TypertRemoteContribution,
5
5
  } from '@deepseek-ai/dsh-typert-protocol'
6
- import type { BranchRecord, SessionBinding, WorkspaceId, WorktreeId, WorktreeImportCandidate, WorktreeRecord, WorktreeRemoteResult } from '@cerbur/clutch-dsh-worktree/contract'
6
+ import type { BranchRecord, SessionBinding, WorkspaceId, WorktreeId, WorktreeImportCandidate, WorktreePermissionNormalizationRequest, WorktreePermissionRequest, WorktreePermissionResult, WorktreeRecord, WorktreeRemoteResult } from '@cerbur/clutch-dsh-worktree/contract'
7
7
 
8
8
  declare module '@deepseek-ai/dsh-typert-protocol' {
9
9
  interface TypertRemoteNamespace$776f726b747265654d616e61676572 {
10
10
  bindSession: (input: { readonly workspaceId: string; readonly worktreeId: string; readonly sessionId: string; }) => Promise<RemoteResult<WorktreeRemoteResult<SessionBinding>>>
11
11
  createWorktree: (input: { readonly workspaceId: string; readonly branch: string; readonly newBranch?: string; }) => Promise<RemoteResult<WorktreeRemoteResult<WorktreeRecord>>>
12
+ ensureWorktreePermission: (input: WorktreePermissionRequest) => Promise<RemoteResult<WorktreeRemoteResult<WorktreePermissionResult>>>
12
13
  importWorktree: (input: { readonly workspaceId: WorkspaceId; readonly absolutePath: string; }) => Promise<RemoteResult<WorktreeRemoteResult<WorktreeRecord>>>
13
14
  insertWorktreeBefore: (input: { readonly workspaceId: string; readonly worktreeId: string; readonly beforeWorktreeId?: string; }) => Promise<RemoteResult<WorktreeRemoteResult<readonly WorktreeId[]>>>
14
15
  listBindings: (input: { readonly workspaceId: string; }) => Promise<RemoteResult<WorktreeRemoteResult<readonly SessionBinding[]>>>
15
16
  listBranches: (input: { readonly workspaceId: string; }) => Promise<RemoteResult<WorktreeRemoteResult<readonly BranchRecord[]>>>
16
17
  listImportCandidates: (input: { readonly workspaceId: WorkspaceId; }) => Promise<RemoteResult<WorktreeRemoteResult<readonly WorktreeImportCandidate[]>>>
17
18
  listWorktrees: (input: { readonly workspaceId: string; }) => Promise<RemoteResult<WorktreeRemoteResult<readonly WorktreeRecord[]>>>
18
- removeWorktree: (input: { readonly workspaceId: string; readonly worktreeId: string; }) => Promise<RemoteResult<WorktreeRemoteResult<null>>>
19
+ normalizeDetachedWorktreePermissions: (input: WorktreePermissionNormalizationRequest) => Promise<RemoteResult<WorktreeRemoteResult<WorktreePermissionResult>>>
20
+ removeWorktree: (input: { readonly workspaceId: string; readonly worktreeId: string; readonly mutationToken: string; }) => Promise<RemoteResult<WorktreeRemoteResult<null>>>
19
21
  }
20
22
  interface TypertRemoteMap {
21
23
  'worktreeManager/bindSession': (input: { readonly workspaceId: string; readonly worktreeId: string; readonly sessionId: string; }) => Promise<RemoteResult<WorktreeRemoteResult<SessionBinding>>>
22
24
  'worktreeManager/createWorktree': (input: { readonly workspaceId: string; readonly branch: string; readonly newBranch?: string; }) => Promise<RemoteResult<WorktreeRemoteResult<WorktreeRecord>>>
25
+ 'worktreeManager/ensureWorktreePermission': (input: WorktreePermissionRequest) => Promise<RemoteResult<WorktreeRemoteResult<WorktreePermissionResult>>>
23
26
  'worktreeManager/importWorktree': (input: { readonly workspaceId: WorkspaceId; readonly absolutePath: string; }) => Promise<RemoteResult<WorktreeRemoteResult<WorktreeRecord>>>
24
27
  'worktreeManager/insertWorktreeBefore': (input: { readonly workspaceId: string; readonly worktreeId: string; readonly beforeWorktreeId?: string; }) => Promise<RemoteResult<WorktreeRemoteResult<readonly WorktreeId[]>>>
25
28
  'worktreeManager/listBindings': (input: { readonly workspaceId: string; }) => Promise<RemoteResult<WorktreeRemoteResult<readonly SessionBinding[]>>>
26
29
  'worktreeManager/listBranches': (input: { readonly workspaceId: string; }) => Promise<RemoteResult<WorktreeRemoteResult<readonly BranchRecord[]>>>
27
30
  'worktreeManager/listImportCandidates': (input: { readonly workspaceId: WorkspaceId; }) => Promise<RemoteResult<WorktreeRemoteResult<readonly WorktreeImportCandidate[]>>>
28
31
  'worktreeManager/listWorktrees': (input: { readonly workspaceId: string; }) => Promise<RemoteResult<WorktreeRemoteResult<readonly WorktreeRecord[]>>>
29
- 'worktreeManager/removeWorktree': (input: { readonly workspaceId: string; readonly worktreeId: string; }) => Promise<RemoteResult<WorktreeRemoteResult<null>>>
32
+ 'worktreeManager/normalizeDetachedWorktreePermissions': (input: WorktreePermissionNormalizationRequest) => Promise<RemoteResult<WorktreeRemoteResult<WorktreePermissionResult>>>
33
+ 'worktreeManager/removeWorktree': (input: { readonly workspaceId: string; readonly worktreeId: string; readonly mutationToken: string; }) => Promise<RemoteResult<WorktreeRemoteResult<null>>>
30
34
  }
31
35
  interface TypertRemoteNamespaceMap {
32
36
  'worktreeManager': TypertRemoteNamespace$776f726b747265654d616e61676572
@@ -1 +1 @@
1
- {"version":3,"file":"typert.remote-client.d.ts","names":["bindSession","createWorktree","importWorktree","insertWorktreeBefore","listBindings","listBranches","listImportCandidates","listWorktrees","removeWorktree"],"sources":["../src/host/service.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;IAoIEA,W;IAzCAC,c;IASAC,c;IAgBAC,oB;IASAC,Y;IAzCAC,Y;IAPAC,oB;IAPAC,a;IAsCAC,c;;;IAwBAR,6B;IAzCAC,gC;IASAC,gC;IAgBAC,sC;IASAC,8B;IAzCAC,8B;IAPAC,sC;IAPAC,+B;IAsCAC,gC","ignoreList":[]}
1
+ {"version":3,"file":"typert.remote-client.d.ts","names":["bindSession","createWorktree","ensureWorktreePermission","importWorktree","insertWorktreeBefore","listBindings","listBranches","listImportCandidates","listWorktrees","normalizeDetachedWorktreePermissions","removeWorktree"],"sources":["../src/host/service.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;IAiLEA,W;IA1CAC,c;IAmDAC,wB;IA1CAC,c;IAiBAC,oB;IASAC,Y;IA1CAC,Y;IAPAC,oB;IAPAC,a;IA+EAC,oC;IAzCAC,c;;;IAyBAV,6B;IA1CAC,gC;IAmDAC,0C;IA1CAC,gC;IAiBAC,sC;IASAC,8B;IA1CAC,8B;IAPAC,sC;IAPAC,+B;IA+EAC,sD;IAzCAC,gC","ignoreList":[]}