@cerbur/clutch-dsh-worktree 0.1.7 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -32
- package/README.zh.md +39 -25
- package/lib/client/WorktreeContext.d.ts +1 -1
- package/lib/client/WorktreeContext.d.ts.map +1 -1
- package/lib/client/WorktreeContext.js +1 -1
- package/lib/client/WorktreeContext.js.map +1 -1
- package/lib/client/WorktreeHeroContext.d.ts.map +1 -1
- package/lib/client/WorktreeHeroContext.js +1 -1
- package/lib/client/WorktreeHeroContext.js.map +1 -1
- package/lib/client/WorktreeModeAction.d.ts.map +1 -1
- package/lib/client/WorktreeModeAction.js.map +1 -1
- package/lib/client/WorktreeSurface.d.ts +1 -1
- package/lib/client/WorktreeSurface.d.ts.map +1 -1
- package/lib/client/WorktreeSurface.js +245 -53
- package/lib/client/WorktreeSurface.js.map +1 -1
- package/lib/client/dsh-rc1-slot-contract.d.ts +43 -0
- package/lib/client/dsh-rc1-slot-contract.d.ts.map +1 -0
- package/lib/client/dsh-rc1-slot-contract.js +2 -0
- package/lib/client/dsh-rc1-slot-contract.js.map +1 -0
- package/lib/client/dsh-slot-contract.d.ts +43 -0
- package/lib/client/dsh-slot-contract.d.ts.map +1 -0
- package/lib/client/dsh-slot-contract.js +2 -0
- package/lib/client/dsh-slot-contract.js.map +1 -0
- package/lib/client/entry.d.ts +2 -2
- package/lib/client/entry.d.ts.map +1 -1
- package/lib/client/entry.js +144 -26
- package/lib/client/entry.js.map +1 -1
- package/lib/client/locales.d.ts +12 -0
- package/lib/client/locales.d.ts.map +1 -1
- package/lib/client/locales.js +12 -0
- package/lib/client/locales.js.map +1 -1
- package/lib/client/view-mode-store.d.ts +1 -1
- package/lib/client/view-mode-store.d.ts.map +1 -1
- package/lib/client/view-mode-store.js +1 -1
- package/lib/client/view-mode-store.js.map +1 -1
- package/lib/client/view-mode.d.ts +20 -6
- package/lib/client/view-mode.d.ts.map +1 -1
- package/lib/client/view-mode.js +35 -10
- package/lib/client/view-mode.js.map +1 -1
- package/lib/client/virtual-workspace-membership.d.ts +12 -10
- package/lib/client/virtual-workspace-membership.d.ts.map +1 -1
- package/lib/client/virtual-workspace-membership.js +82 -57
- package/lib/client/virtual-workspace-membership.js.map +1 -1
- package/lib/client/worktree-context-store.d.ts +7 -15
- package/lib/client/worktree-context-store.d.ts.map +1 -1
- package/lib/client/worktree-context-store.js +20 -13
- package/lib/client/worktree-context-store.js.map +1 -1
- package/lib/client/worktree-context.js +1 -1
- package/lib/client/worktree-context.js.map +1 -1
- package/lib/client/worktree-error-copy.d.ts.map +1 -1
- package/lib/client/worktree-error-copy.js +8 -0
- package/lib/client/worktree-error-copy.js.map +1 -1
- package/lib/client/worktree-expand-state.d.ts +5 -4
- package/lib/client/worktree-expand-state.d.ts.map +1 -1
- package/lib/client/worktree-expand-state.js.map +1 -1
- package/lib/client/worktree-session-fork.d.ts +18 -3
- package/lib/client/worktree-session-fork.d.ts.map +1 -1
- package/lib/client/worktree-session-fork.js +125 -36
- package/lib/client/worktree-session-fork.js.map +1 -1
- package/lib/client/worktree-session-order.d.ts +2 -2
- package/lib/client/worktree-session-order.d.ts.map +1 -1
- package/lib/client/worktree-session.d.ts.map +1 -1
- package/lib/client/worktree-session.js +3 -1
- package/lib/client/worktree-session.js.map +1 -1
- package/lib/client/worktree-surface-rows.d.ts.map +1 -1
- package/lib/client/worktree-surface-rows.js +8 -1
- package/lib/client/worktree-surface-rows.js.map +1 -1
- package/lib/client/worktree-surface-types.d.ts +19 -1
- package/lib/client/worktree-surface-types.d.ts.map +1 -1
- package/lib/client/worktree-view-read.d.ts +18 -8
- package/lib/client/worktree-view-read.d.ts.map +1 -1
- package/lib/client/worktree-view-read.js +75 -10
- package/lib/client/worktree-view-read.js.map +1 -1
- package/lib/client.js +1404 -178
- package/lib/client.js.map +1 -1
- package/lib/contract/index.d.ts +6 -2
- package/lib/contract/index.d.ts.map +1 -1
- package/lib/contract/index.js +4 -0
- package/lib/contract/index.js.map +1 -1
- package/lib/host/dsh-read-adapter.d.ts +1 -0
- package/lib/host/dsh-read-adapter.d.ts.map +1 -1
- package/lib/host/dsh-read-adapter.js +6 -0
- package/lib/host/dsh-read-adapter.js.map +1 -1
- package/lib/host/service.d.ts +2 -0
- package/lib/host/service.d.ts.map +1 -1
- package/lib/host/service.js +6 -1
- package/lib/host/service.js.map +1 -1
- package/lib/host/worktree-permission-manager.d.ts.map +1 -1
- package/lib/host/worktree-permission-manager.js +3 -1
- package/lib/host/worktree-permission-manager.js.map +1 -1
- package/lib/host/worktree-permission.d.ts +3 -2
- package/lib/host/worktree-permission.d.ts.map +1 -1
- package/lib/host/worktree-permission.js +29 -5
- package/lib/host/worktree-permission.js.map +1 -1
- package/lib/index.d.ts +2 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/manage/manager-context.d.ts +2 -0
- package/lib/manage/manager-context.d.ts.map +1 -1
- package/lib/manage/manager-worktrees.d.ts +5 -0
- package/lib/manage/manager-worktrees.d.ts.map +1 -1
- package/lib/manage/manager-worktrees.js +130 -39
- package/lib/manage/manager-worktrees.js.map +1 -1
- package/lib/manage/manager.d.ts +20 -0
- package/lib/manage/manager.d.ts.map +1 -1
- package/lib/manage/manager.js +93 -13
- package/lib/manage/manager.js.map +1 -1
- package/lib/manage/types.d.ts +9 -1
- package/lib/manage/types.d.ts.map +1 -1
- package/lib/provider/git.d.ts +37 -9
- package/lib/provider/git.d.ts.map +1 -1
- package/lib/provider/git.js +166 -61
- package/lib/provider/git.js.map +1 -1
- package/lib/provider/index.d.ts +5 -1
- package/lib/provider/index.d.ts.map +1 -1
- package/lib/provider/index.js +4 -0
- package/lib/provider/index.js.map +1 -1
- package/lib/provider/mutation-lock.d.ts +37 -0
- package/lib/provider/mutation-lock.d.ts.map +1 -0
- package/lib/provider/mutation-lock.js +270 -0
- package/lib/provider/mutation-lock.js.map +1 -0
- package/lib/provider/mutation-token.d.ts +8 -0
- package/lib/provider/mutation-token.d.ts.map +1 -0
- package/lib/provider/mutation-token.js +20 -0
- package/lib/provider/mutation-token.js.map +1 -0
- package/lib/provider/repository-fingerprint.d.ts +8 -0
- package/lib/provider/repository-fingerprint.d.ts.map +1 -0
- package/lib/provider/repository-fingerprint.js +13 -0
- package/lib/provider/repository-fingerprint.js.map +1 -0
- package/lib/provider/sidecar-persistence.d.ts +7 -3
- package/lib/provider/sidecar-persistence.d.ts.map +1 -1
- package/lib/provider/sidecar-persistence.js +118 -44
- package/lib/provider/sidecar-persistence.js.map +1 -1
- package/lib/provider/sidecar-schema.d.ts +1 -1
- package/lib/provider/sidecar-schema.d.ts.map +1 -1
- package/lib/provider/sidecar-schema.js +140 -8
- package/lib/provider/sidecar-schema.js.map +1 -1
- package/lib/provider/sidecar.d.ts +3 -1
- package/lib/provider/sidecar.d.ts.map +1 -1
- package/lib/provider/sidecar.js +7 -2
- package/lib/provider/sidecar.js.map +1 -1
- package/lib/provider/subprocess.d.ts +37 -0
- package/lib/provider/subprocess.d.ts.map +1 -0
- package/lib/provider/subprocess.js +327 -0
- package/lib/provider/subprocess.js.map +1 -0
- package/lib/provider/transaction.d.ts +65 -0
- package/lib/provider/transaction.d.ts.map +1 -0
- package/lib/provider/transaction.js +1011 -0
- package/lib/provider/transaction.js.map +1 -0
- package/lib/provider/types.d.ts +98 -7
- package/lib/provider/types.d.ts.map +1 -1
- package/lib/provider/types.js +1 -1
- package/lib/provider/types.js.map +1 -1
- package/lib/typert.host.js +29 -25
- package/lib/typert.remote-client.d.ts +2 -2
- package/lib/typert.remote-client.d.ts.map +1 -1
- package/lib/typert.remote-client.js +29 -25
- package/package.json +48 -32
package/README.md
CHANGED
|
@@ -65,6 +65,7 @@ the adjacent Import tab, and a standard dropdown containing safe example branch/
|
|
|
65
65
|
- Highlight the DSH current Session in Worktree view; entering Worktree mode or switching the current Session temporarily reveals its Workspace/Main/Worktree path, expands Session overflow only when the row is outside the first five, clears a hiding search, and scrolls the row into view; this browser-local behavior does not change persisted expansion choices.
|
|
66
66
|
- Keep the current local branch or Worktree branch visible as read-only context in the existing
|
|
67
67
|
Conversation title row and in the blank-session Hero.
|
|
68
|
+
- Copy the ID of any non-blank Worktree Session from its Session actions menu.
|
|
68
69
|
- Keep Conversation and Hero context stable across same-Session snapshot updates and Session
|
|
69
70
|
switches, while retaining the last valid context during replacement reads.
|
|
70
71
|
- Truncate long branch labels to fit their chips and reveal the complete value through a native
|
|
@@ -79,22 +80,14 @@ the adjacent Import tab, and a standard dropdown containing safe example branch/
|
|
|
79
80
|
|
|
80
81
|
### Compatibility and prerequisites
|
|
81
82
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
`conversation.session.header.actions` seat.
|
|
91
|
-
- Git must be installed and available on `PATH` for Worktree operations. A Workspace must be
|
|
92
|
-
inside a Git repository with an initial commit and at least one local branch. A missing Git
|
|
93
|
-
executable shows install guidance and no command block; a missing repository, initial commit,
|
|
94
|
-
or local branch shows copyable setup commands. The plugin does not run setup or installation
|
|
95
|
-
commands or modify Workspace files.
|
|
96
|
-
- The package declares an installable `dsh.bundle` and provides `cordis.patch.yml`; its browser
|
|
97
|
-
UI is declared through the `dsh.client` metadata.
|
|
83
|
+
The supported compatibility facts are:
|
|
84
|
+
|
|
85
|
+
| Component | Min Version | Notes |
|
|
86
|
+
| --- | --- | --- |
|
|
87
|
+
| DSH Client | `>=0.1.2-rc.1` | Requires the Session/Workspace Controllers and Client Store |
|
|
88
|
+
| DSH Host | `>=0.1.2-rc.1` | Requires the Typert Gateway `/api` protocol and subprocess capability |
|
|
89
|
+
| Git | `>=2.20.0` | Requires worktree core commands and branch discovery |
|
|
90
|
+
| Node.js | `>=20.0.0` | LTS is recommended |
|
|
98
91
|
|
|
99
92
|
## Installation
|
|
100
93
|
|
|
@@ -130,12 +123,13 @@ npm view @cerbur/clutch-dsh-worktree version --registry=https://registry.npmjs.o
|
|
|
130
123
|
|
|
131
124
|
For source-based development or validation, prepare the upstream checkout first. The current
|
|
132
125
|
upstream default branch is `master`; follow the repository's default branch if it changes later.
|
|
126
|
+
For the minimum rc.1 compatibility validation path, check out `dsh-v0.1.2-rc.1`:
|
|
133
127
|
|
|
134
128
|
```bash
|
|
135
129
|
git clone https://github.com/deepseek-ai/deepseek-harness.git
|
|
136
130
|
cd deepseek-harness
|
|
137
131
|
git fetch origin
|
|
138
|
-
git
|
|
132
|
+
git checkout dsh-v0.1.2-rc.1
|
|
139
133
|
pnpm install
|
|
140
134
|
pnpm run build
|
|
141
135
|
```
|
|
@@ -238,8 +232,8 @@ blank-session Hero. The displayed language follows DSH's current language settin
|
|
|
238
232
|
chooses the next available numeric suffix for the name; existing names are skipped.
|
|
239
233
|
3. The target Worktree path must be absolute, belong to the same Project, and differ from the
|
|
240
234
|
Project root. Relative paths, a different Project, or the Project root are rejected.
|
|
241
|
-
4. Git must be installed and available on `PATH`. A missing Git executable shows install guidance
|
|
242
|
-
|
|
235
|
+
4. Git must be installed and available on `PATH`. A missing Git executable shows install guidance and no command block;
|
|
236
|
+
install Git, restart DSH, and retry. If the repository, initial commit,
|
|
243
237
|
or local branch is missing, follow the copyable setup commands in the dialog. The plugin only
|
|
244
238
|
renders this guidance; it does not run setup or installation commands or edit business files.
|
|
245
239
|
|
|
@@ -264,9 +258,10 @@ blank-session Hero. The displayed language follows DSH's current language settin
|
|
|
264
258
|
|
|
265
259
|
- Use Main's `+` to create a normal DSH Session in the Project-root view.
|
|
266
260
|
- Use a Worktree's `+` to create or reuse a Session with that Worktree as its runtime cwd. The
|
|
267
|
-
plugin calls the
|
|
268
|
-
external binding and opens the Session. The browser-local `{ workspaceId, sessionId }`
|
|
269
|
-
projection is refreshed afterward, so the newly created Session does not briefly
|
|
261
|
+
plugin calls the DSH Session Controller with `ctx.sessions.create({ cwd: worktreePath })`, then
|
|
262
|
+
saves the external binding and opens the Session. The browser-local `{ workspaceId, sessionId }`
|
|
263
|
+
membership projection is refreshed afterward, so the newly created Session does not briefly
|
|
264
|
+
appear in Main.
|
|
270
265
|
- The connector reuses an unarchived blank Session with the exact target cwd when possible. An
|
|
271
266
|
already-bound Session opens directly; an unbound candidate is bound before projection and
|
|
272
267
|
opening. Otherwise the new-Session flow is `create → bind → open → refresh`, and concurrent
|
|
@@ -324,6 +319,7 @@ blank-session Hero. The displayed language follows DSH's current language settin
|
|
|
324
319
|
|
|
325
320
|
- Drag Worktrees within their owning Workspace. The ordered `worktrees` array is persisted in
|
|
326
321
|
the plugin sidecar; Main is a fixed first row and Worktrees cannot move across Workspaces.
|
|
322
|
+
- Newly created or imported Worktrees are inserted at the head of their Workspace's Worktree list; existing Worktree order is preserved and Main remains fixed first.
|
|
327
323
|
- Open the shared Main and Worktree options menu to copy the selected row's absolute path. Main
|
|
328
324
|
and detached/removed Worktrees show only `Copy path`; active Worktrees also show `Remove
|
|
329
325
|
Worktree` with a confirmation dialog.
|
|
@@ -354,9 +350,10 @@ blank-session Hero. The displayed language follows DSH's current language settin
|
|
|
354
350
|
### Understand status and recovery messages
|
|
355
351
|
|
|
356
352
|
- `ready` means the Worktree is available. `repair` identifies a missing or invalid Worktree,
|
|
357
|
-
Session, binding, or cwd. `
|
|
358
|
-
|
|
359
|
-
|
|
353
|
+
Session, binding, or cwd. `recovery-needed` means a Git/sidecar operation or identity check is
|
|
354
|
+
unresolved and destructive actions are blocked. `detached` means the Git Worktree was removed
|
|
355
|
+
while the relationship was retained. An active binding pointing to a missing Worktree produces
|
|
356
|
+
an explicit repair warning or error; it never silently falls back to another Worktree.
|
|
360
357
|
- Worktree health is a runtime Git projection and is not written to the sidecar. Git readiness
|
|
361
358
|
failures are shown per Workspace: a missing Git executable shows installation guidance without
|
|
362
359
|
commands, while repository, initial commit, or local branch failures show copyable setup
|
|
@@ -398,19 +395,37 @@ store a copy of `projectRoot` or any Session content. If the sidecar is unavaila
|
|
|
398
395
|
the native Project/Session view remains readable and the plugin becomes degraded/read-only; an
|
|
399
396
|
empty index must never overwrite the native DSH lists.
|
|
400
397
|
|
|
398
|
+
The sidecar accepts v1 and v2 snapshots for backwards-compatible reads. Legacy records are
|
|
399
|
+
normalized in memory, and the first successful mutation atomically upgrades the shard to v3.
|
|
400
|
+
New v3 snapshots use a revision, an opaque repository fingerprint, and durable pending-operation
|
|
401
|
+
metadata for Git create/remove. A transitional v3 snapshot containing an older raw repository
|
|
402
|
+
field is read and cleaned on its next stable write. Invalid JSON, unknown schema versions, and
|
|
403
|
+
invariant violations are reported as corruption rather than reset to an empty index.
|
|
404
|
+
|
|
401
405
|
Each Session has at most one active Worktree binding, while a Worktree may have multiple bound
|
|
402
406
|
Sessions. Rebinding the same Session to the same Worktree is idempotent; binding it to two active
|
|
403
407
|
Worktrees is a conflict. A Session with no binding, a Main binding, or a detached binding runs
|
|
404
408
|
with the Project root as cwd. An active Worktree binding runs with that Worktree path. The cwd is
|
|
405
409
|
derived for each execution and is never persisted back into DSH Session metadata.
|
|
406
410
|
|
|
407
|
-
Worktree creation creates the Git Worktree before recording its external relationship.
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
411
|
+
Worktree creation creates the Git Worktree before recording its external relationship. Git
|
|
412
|
+
create/remove mutations are serialized across Host processes per Workspace and repository,
|
|
413
|
+
record a durable pending operation, and verify the actual Git result before publishing stable
|
|
414
|
+
sidecar state. If a create cannot be reconciled or a path/repository identity changes, the
|
|
415
|
+
operation remains explicitly recoverable; the plugin never uses force removal or deletes an
|
|
416
|
+
unknown directory. If a sidecar write fails, the new Git Worktree is cleaned up when possible. A
|
|
417
|
+
failed Worktree deletion does not silently change the relation, so it remains retryable or is
|
|
418
|
+
marked `recovery-needed`. Session creation uses the native DSH API before binding; a binding
|
|
419
|
+
failure never deletes or modifies the already-created Session.
|
|
420
|
+
|
|
421
|
+
On Host startup, the plugin performs a best-effort safe recovery for known DSH Workspaces. It may
|
|
422
|
+
finalize a pending create/remove only when Git path and repository identity are certain; otherwise
|
|
423
|
+
it retains the marker and surfaces `WORKTREE_RECOVERY_REQUIRED` or
|
|
424
|
+
`WORKTREE_IDENTITY_CHANGED`. It never guesses at destructive cleanup. A destructive action may
|
|
425
|
+
also carry an opaque mutation token from the latest Worktree projection so a stale UI cannot act
|
|
426
|
+
on a changed record.
|
|
427
|
+
|
|
428
|
+
The Worktree session flow sends the independent Worktree cwd through the DSH Session Controller and
|
|
414
429
|
keeps `{ workspaceId, sessionId }` as a browser-local membership projection rather than a
|
|
415
430
|
persistent DSH attach. It does not modify DSH source, Session metadata, or native Workspace
|
|
416
431
|
storage. The projection is replayed after native list refreshes and removed when the binding
|
package/README.zh.md
CHANGED
|
@@ -58,6 +58,7 @@ Session 元数据、原生列表和会话历史的唯一事实来源。插件只
|
|
|
58
58
|
- 在 Worktree view 高亮 DSH 当前 Session;进入 Worktree 模式或切换当前会话时,临时展开其 Workspace/Main/Worktree 路径;只有当前行不在前五行时才展开 Session 五行溢出,随后清空隐藏它的搜索并滚动定位;这一浏览器本地行为不改变已保存的展开选择。
|
|
59
59
|
- 在已有 Conversation 的标题行以及新会话空白 Hero 中,以只读方式显示当前 local branch 或
|
|
60
60
|
Worktree branch 上下文。
|
|
61
|
+
- 在普通 Worktree Session 的 Session 操作菜单中复制 Session ID。
|
|
61
62
|
- 在同一个 Session 的 snapshot 更新以及 Session 切换期间保持 Conversation 和 Hero 上下文
|
|
62
63
|
稳定;替换读取进行时保留上一次有效上下文。
|
|
63
64
|
- 过长的 branch 名称在 chip 中折叠,并通过原生 hover card 展示完整值;Sidebar footer action
|
|
@@ -70,20 +71,14 @@ Session 元数据、原生列表和会话历史的唯一事实来源。插件只
|
|
|
70
71
|
|
|
71
72
|
### 兼容性与前置条件
|
|
72
73
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
- Worktree 操作要求 Git 已安装且可在 PATH 中使用。Workspace 必须位于 Git repository 中,
|
|
82
|
-
且至少有一个初始 commit 和本地 branch。Git 可执行文件缺失时显示安装提示且不显示命令块;
|
|
83
|
-
缺少 repository、初始 commit 或本地 branch 时显示可复制的 setup 命令。插件不会执行 setup
|
|
84
|
-
或安装命令,也不会修改 Workspace 文件。
|
|
85
|
-
- package 声明了可安装的 `dsh.bundle` 并提供 `cordis.patch.yml`;浏览器 UI 通过
|
|
86
|
-
`dsh.client` metadata 声明。
|
|
74
|
+
兼容性事实表如下:
|
|
75
|
+
|
|
76
|
+
| 组件 / Component | 最低版本 / Min Version | 说明 / Notes |
|
|
77
|
+
| --- | --- | --- |
|
|
78
|
+
| DSH Client | `>=0.1.2-rc.1` | 依赖 Session/Workspace Controller 及 Client Store |
|
|
79
|
+
| DSH Host | `>=0.1.2-rc.1` | 依赖 Typert Gateway `/api` 协议与 subprocess capability |
|
|
80
|
+
| Git | `>=2.20.0` | 要求支持 worktree 核心命令与 branch 发现 |
|
|
81
|
+
| Node.js | `>=20.0.0` | 推荐使用 LTS 版本 |
|
|
87
82
|
|
|
88
83
|
## 安装
|
|
89
84
|
|
|
@@ -117,13 +112,14 @@ npm view @cerbur/clutch-dsh-worktree version --registry=https://registry.npmjs.o
|
|
|
117
112
|
### 准备当前 upstream DSH checkout
|
|
118
113
|
|
|
119
114
|
进行源码开发或验证时,先准备 upstream checkout。当前 upstream 默认分支是 `master`;如果仓库
|
|
120
|
-
|
|
115
|
+
未来切换默认分支,应跟随仓库的当前默认分支。最小 rc.1 兼容性验证路径切换到
|
|
116
|
+
`dsh-v0.1.2-rc.1`:
|
|
121
117
|
|
|
122
118
|
```bash
|
|
123
119
|
git clone https://github.com/deepseek-ai/deepseek-harness.git
|
|
124
120
|
cd deepseek-harness
|
|
125
121
|
git fetch origin
|
|
126
|
-
git
|
|
122
|
+
git checkout dsh-v0.1.2-rc.1
|
|
127
123
|
pnpm install
|
|
128
124
|
pnpm run build
|
|
129
125
|
```
|
|
@@ -246,10 +242,10 @@ pnpm dsh plugin --profile web remove @cerbur/clutch-dsh-worktree
|
|
|
246
242
|
### 创建 Main 和 Worktree Session
|
|
247
243
|
|
|
248
244
|
- 使用 Main 的 `+`,在 Project 根目录视角中创建普通 DSH Session。
|
|
249
|
-
- 使用 Worktree 的 `+`,创建或复用 runtime cwd 指向该 Worktree 的 Session。插件通过
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
Session 不会短暂出现在 Main 中。
|
|
245
|
+
- 使用 Worktree 的 `+`,创建或复用 runtime cwd 指向该 Worktree 的 Session。插件通过 DSH
|
|
246
|
+
Session Controller 调用 `ctx.sessions.create({ cwd: worktreePath })`,随后保存外部 binding
|
|
247
|
+
并打开该 Session。当前浏览器内的 `{ workspaceId, sessionId }` membership projection 会在
|
|
248
|
+
之后刷新,因此新建 Session 不会短暂出现在 Main 中。
|
|
253
249
|
- 如果存在目标 cwd 完全匹配的未归档 blank Session,连接器会优先复用它。已绑定的 Session
|
|
254
250
|
会直接打开;未绑定的候选会先 binding,再 projection 和打开。否则执行
|
|
255
251
|
新建路径执行 `create → bind → open → refresh`,同一个 Worktree 的并发点击会合并。
|
|
@@ -297,6 +293,7 @@ pnpm dsh plugin --profile web remove @cerbur/clutch-dsh-worktree
|
|
|
297
293
|
|
|
298
294
|
- 在所属 Workspace 内拖动 Worktree。排序持久化在 plugin sidecar 的有序 `worktrees` 数组中;
|
|
299
295
|
Main 是固定的第一行,Worktree 不能跨 Workspace 移动。
|
|
296
|
+
- 新创建或新导入的 Worktree 会插入所属 Workspace 的 Worktree 列表队头;已有 Worktree 顺序保持不变,Main 固定在第一位。
|
|
300
297
|
- 打开 Main 和 Worktree 共用的选项菜单复制所选行的绝对路径。Main 和 detached/removed Worktree
|
|
301
298
|
只显示“复制路径”;active Worktree 还显示“移除 Worktree”并要求确认。
|
|
302
299
|
- 导入的 Worktree 与 plugin 创建的 Worktree 显示相同的 active 选项菜单。两种来源都执行真实
|
|
@@ -324,6 +321,7 @@ pnpm dsh plugin --profile web remove @cerbur/clutch-dsh-worktree
|
|
|
324
321
|
### 理解状态与恢复提示
|
|
325
322
|
|
|
326
323
|
- `ready` 表示 Worktree 可用。`repair` 表示 Worktree、Session、binding 或 cwd 缺失/无效。
|
|
324
|
+
`recovery-needed` 表示 Git/sidecar 操作或身份校验尚未解决,破坏性操作会被阻止。
|
|
327
325
|
`detached` 表示 Git Worktree 已被移除,但关系仍然保留。active binding 指向缺失
|
|
328
326
|
Worktree 时会显示明确的 repair 警告或错误,不会静默切换到其他 Worktree。
|
|
329
327
|
- Worktree health 是 Git 的运行时 projection,不写入 sidecar。Git 前置条件失败按
|
|
@@ -361,16 +359,32 @@ DSH 管理原始 Project/Workspace 身份和根目录、Session 身份和元数
|
|
|
361
359
|
Session 内容。如果 sidecar 不可用或损坏,原生 Project/Session 视角仍然可读,插件进入
|
|
362
360
|
degraded/read-only 状态;不能用空索引覆盖 DSH 原生列表。
|
|
363
361
|
|
|
362
|
+
sidecar 兼容读取 v1 和 v2 snapshot。旧记录会先在内存中归一化,第一次成功 mutation 会
|
|
363
|
+
以原子方式将 shard 升级为 v3。新的 v3 snapshot 使用 revision、不可逆向还原的 repository
|
|
364
|
+
fingerprint,以及为 Git create/remove 保存的 durable pending-operation metadata。早期 v3
|
|
365
|
+
实现可能写入的 raw repository 字段也可以读取,并会在下一次稳定写入时清理。无效 JSON、
|
|
366
|
+
未知 schema version 和关系不变量错误都会报告为 corruption,不会静默重置为空索引。
|
|
367
|
+
|
|
364
368
|
一个 Session 最多绑定一个 active Worktree,一个 Worktree 可以绑定多个 Session。Session
|
|
365
369
|
重复绑定同一个 Worktree 是幂等的,绑定两个 active Worktree 会产生 conflict。没有 binding、
|
|
366
370
|
使用 Main binding 或处于 detached binding 的 Session 使用 Project 根目录作为 cwd;active
|
|
367
371
|
Worktree binding 使用对应的 Worktree 路径。cwd 在每次执行时派生,不会写回 DSH Session 元数据。
|
|
368
372
|
|
|
369
|
-
创建 Worktree 时先创建 Git Worktree,再记录外部关系。
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
373
|
+
创建 Worktree 时先创建 Git Worktree,再记录外部关系。Git create/remove mutation 会按
|
|
374
|
+
Workspace 和 repository 串行化跨 Host 进程执行,写入 durable pending operation,并在确认
|
|
375
|
+
实际 Git 结果后才发布稳定 sidecar 状态。如果 create 无法对账,或 path/repository identity
|
|
376
|
+
发生变化,操作会明确保留为可恢复状态;插件不会使用 force remove,也不会删除未知目录。
|
|
377
|
+
sidecar 写入失败时会尽可能清理刚创建的 Git Worktree。删除 Worktree 失败时不会静默改变
|
|
378
|
+
关系,因此关系仍可重试,或会标记为 `recovery-needed`。创建 Session 时先调用 DSH 原生
|
|
379
|
+
API,再写入 binding;binding 失败不会删除或修改已创建的 Session。
|
|
380
|
+
|
|
381
|
+
Host 启动时,插件会针对已知 DSH Workspace 执行一次尽力而为的安全恢复。只有在 Git path
|
|
382
|
+
和 repository identity 都能确认时,才会完成 pending create/remove;否则保留 marker,并
|
|
383
|
+
显示 `WORKTREE_RECOVERY_REQUIRED` 或 `WORKTREE_IDENTITY_CHANGED`。它不会猜测性清理破坏性
|
|
384
|
+
状态。破坏性操作还可以携带最新 Worktree projection 生成的 opaque mutation token,避免
|
|
385
|
+
过期 UI 对已变化的记录执行操作。
|
|
386
|
+
|
|
387
|
+
Worktree Session 流程将独立的 Worktree cwd 交给 DSH Session Controller,并将
|
|
374
388
|
`{ workspaceId, sessionId }` 保持为浏览器本地 membership projection,而不是持久化的 DSH
|
|
375
389
|
attach。它不会修改 DSH 源码、Session metadata 或原生 Workspace 存储。native list 刷新后会
|
|
376
390
|
重放 projection;binding 消失或 Client dispose 时会移除 projection。
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { SnapshotStore } from '@deepseek-ai/dsh-client-
|
|
1
|
+
import type { SnapshotStore } from '@deepseek-ai/dsh-client-store';
|
|
2
2
|
import type { InjectFace, PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots';
|
|
3
3
|
import type { WorktreeContextState } from './worktree-context-store.js';
|
|
4
4
|
import { WORKTREE_NS } from './locales.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorktreeContext.d.ts","sourceRoot":"","sources":["../../src/client/WorktreeContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"WorktreeContext.d.ts","sourceRoot":"","sources":["../../src/client/WorktreeContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,YAAY,EAEb,MAAM,kCAAkC,CAAC;AAO1C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,mEAAmE;AACnE,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;KAC/D,CAAC;CACH;AAID,0DAA0D;AAC1D,MAAM,MAAM,0BAA0B,GACpC,YAAY,CAAC,qCAAqC,CAAC,GACnD,WAAW,CAAC,OAAO,WAAW,CAAC,GAC/B,UAAU,CAAC,uBAAuB,CAAC,CAAC;AA6BtC,oFAAoF;AACpF,wBAAgB,qBAAqB,CAAC,EACpC,SAAS,EACT,kBAAkB,EAClB,CAAC,GACF,EAAE,0BAA0B,sCAI5B"}
|
|
@@ -7,7 +7,7 @@ function WorktreeContextLabel({ value, t, }) {
|
|
|
7
7
|
const ariaLabel = value.kind === 'main'
|
|
8
8
|
? t('context.main', { name: value.label })
|
|
9
9
|
: t('context.worktree', { name: value.label });
|
|
10
|
-
return (_jsx(HoverCard, { anchor: _jsxs("span", { className: styles.headerContext, title: value.label, "aria-label": ariaLabel, children: [_jsx(IconBranchOutline16, { size: 14, className: styles.contextIcon, "aria-hidden": "true" }), _jsx("span", { className: styles.contextLabel, children: value.label })] }), content: _jsx("div", { className: styles.contextHoverTitle, children: value.label }), openDelayMs: 500 }));
|
|
10
|
+
return (_jsx(HoverCard, { anchor: _jsxs("span", { className: styles.headerContext, title: value.label, "aria-label": ariaLabel, children: [_jsx(IconBranchOutline16, { size: 14, className: styles.contextIcon, "aria-hidden": "true" }), _jsx("span", { className: styles.contextLabel, children: value.label })] }), content: _jsx("div", { className: styles.contextHoverTitle, children: value.label }), openDelayMs: 500, copyLabel: t('copy'), copiedLabel: t('hover.copied') }));
|
|
11
11
|
}
|
|
12
12
|
/** Render the current branch or active Worktree branch beside the Session title. */
|
|
13
13
|
export function WorktreeHeaderContext({ sessionId, useWorktreeContext, t, }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorktreeContext.js","sourceRoot":"","sources":["../../src/client/WorktreeContext.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"WorktreeContext.js","sourceRoot":"","sources":["../../src/client/WorktreeContext.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAQvF,OAAO,MAAM,MAAM,wBAAwB,CAAC;AAiB5C,SAAS,oBAAoB,CAAC,EAC5B,KAAK,EACL,CAAC,GAIF;IACC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACvC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,KAAK,MAAM;QACrC,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;QAC1C,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IACjD,OAAO,CACL,KAAC,SAAS,IACR,MAAM,EACJ,gBAAM,SAAS,EAAE,MAAM,CAAC,aAAa,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,gBAAc,SAAS,aAC9E,KAAC,mBAAmB,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,WAAW,iBAAc,MAAM,GAAG,EACnF,eAAM,SAAS,EAAE,MAAM,CAAC,YAAY,YAAG,KAAK,CAAC,KAAK,GAAQ,IACrD,EAET,OAAO,EAAE,cAAK,SAAS,EAAE,MAAM,CAAC,iBAAiB,YAAG,KAAK,CAAC,KAAK,GAAO,EACtE,WAAW,EAAE,GAAG,EAChB,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,EACpB,WAAW,EAAE,CAAC,CAAC,cAAc,CAAC,GAC9B,CACH,CAAC;AACJ,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,qBAAqB,CAAC,EACpC,SAAS,EACT,kBAAkB,EAClB,CAAC,GAC0B;IAC3B,MAAM,KAAK,GAAG,kBAAkB,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;IACzD,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC/C,OAAO,KAAC,oBAAoB,IAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,GAAI,CAAC;AAC5D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorktreeHeroContext.d.ts","sourceRoot":"","sources":["../../src/client/WorktreeHeroContext.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,YAAY,EAEb,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"WorktreeHeroContext.d.ts","sourceRoot":"","sources":["../../src/client/WorktreeHeroContext.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,YAAY,EAEb,MAAM,kCAAkC,CAAC;AAI1C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAK3C,MAAM,MAAM,wBAAwB,GAClC,YAAY,CAAC,eAAe,CAAC,GAC7B,WAAW,CAAC,OAAO,WAAW,CAAC,GAC/B,UAAU,CAAC,uBAAuB,CAAC,CAAC;AAgFtC;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,kBAAkB,EAClB,CAAC,GACF,EAAE,wBAAwB,sCAkF1B"}
|
|
@@ -128,6 +128,6 @@ export function WorktreeHeroContext({ useWorktreeContext, t, }) {
|
|
|
128
128
|
return (_jsx("span", { className: styles.heroContextHost, "data-worktree-hero-host": true, style: placement === null ? { visibility: 'hidden' } : {
|
|
129
129
|
left: `${placement.left}px`,
|
|
130
130
|
top: `${placement.top}px`,
|
|
131
|
-
}, children: _jsx(HoverCard, { anchor: (_jsx("span", { ref: measure, className: styles.heroContext, "data-worktree-hero-context": true, "aria-label": ariaLabel, title: label, children: label })), content: _jsx("div", { className: styles.contextHoverTitle, children: label }), openDelayMs: 500 }) }));
|
|
131
|
+
}, children: _jsx(HoverCard, { anchor: (_jsx("span", { ref: measure, className: styles.heroContext, "data-worktree-hero-context": true, "aria-label": ariaLabel, title: label, children: label })), content: _jsx("div", { className: styles.contextHoverTitle, children: label }), openDelayMs: 500, copyLabel: t('copy'), copiedLabel: t('hover.copied') }) }));
|
|
132
132
|
}
|
|
133
133
|
//# sourceMappingURL=WorktreeHeroContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorktreeHeroContext.js","sourceRoot":"","sources":["../../src/client/WorktreeHeroContext.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAO/D,OAAO,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"WorktreeHeroContext.js","sourceRoot":"","sources":["../../src/client/WorktreeHeroContext.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorktreeModeAction.d.ts","sourceRoot":"","sources":["../../src/client/WorktreeModeAction.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"WorktreeModeAction.d.ts","sourceRoot":"","sources":["../../src/client/WorktreeModeAction.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAI9F,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAGpE,kEAAkE;AAClE,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED,wFAAwF;AACxF,MAAM,MAAM,uBAAuB,GAAG,YAAY,CAAC,uBAAuB,CAAC,GACzE,UAAU,CAAC,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC,GACtD,WAAW,CAAC,OAAO,WAAW,CAAC,GAC/B,0BAA0B,CAAC;AAE7B,yEAAyE;AACzE,wBAAgB,kBAAkB,CAAC,EACjC,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,CAAC,EACD,SAAS,GACV,EAAE,uBAAuB,sCAsBzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorktreeModeAction.js","sourceRoot":"","sources":["../../src/client/WorktreeModeAction.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"WorktreeModeAction.js","sourceRoot":"","sources":["../../src/client/WorktreeModeAction.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAG5E,OAAO,MAAM,MAAM,gBAAgB,CAAC;AAapC,yEAAyE;AACzE,MAAM,UAAU,kBAAkB,CAAC,EACjC,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,CAAC,EACD,SAAS,GACe;IACxB,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,IAAI,KAAK,UAAU,CAAC;IACnC,OAAO,CACL,kBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,MAAM,CAAC,MAAM,oDAEX,MAAM,IAAI,SAAS,oBAChB,CAAC,IAAI,IAAI,SAAS,gBACtB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,kBACtC,MAAM,EACpB,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAChD,OAAO,EAAE,GAAG,EAAE;YACZ,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QACjE,CAAC,aAED,KAAC,mBAAmB,IAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAI,EAC5C,IAAI,IAAI,eAAM,SAAS,EAAE,MAAM,CAAC,WAAW,YAAG,CAAC,CAAC,YAAY,CAAC,GAAQ,IAC/D,CACV,CAAC;AACJ,CAAC"}
|
|
@@ -4,5 +4,5 @@ export type { WorktreeSurfaceInjected, WorktreeSurfaceProps } from './worktree-s
|
|
|
4
4
|
* Peer Worktree navigation surface. It keeps the original DSH Workspace mode
|
|
5
5
|
* intact and renders a browser-local Workspace → Worktree → Session projection.
|
|
6
6
|
*/
|
|
7
|
-
export declare function WorktreeSurface({ useStore, actions, useSessions, useWorkspaces, t, available, expandState, sessionOrder, manager, permission, confirmFullAccess, fullAccessConfirmation, onPermissionResult, onPermissionNotice, permissionNotice, invalidateWorktreeContext, createWorkspace, createSessionForWorktree: createSessionCallback, createMainSession, renameWorkspace, deleteWorkspace, insertWorkspaceBefore, insertSessionBefore, insertWorktreeBefore, renameSession, forkSession, archiveSession, forkRecovery, retryForkSession, ensureSessionWorkspace, syncSessionWorkspaces, openSession, }: WorktreeSurfaceProps): import("react").JSX.Element | null;
|
|
7
|
+
export declare function WorktreeSurface({ useStore, actions, useSessions, useWorkspaces, t, available, expandState, sessionOrder, manager, viewReader, permission, confirmFullAccess, fullAccessConfirmation, onPermissionResult, onPermissionNotice, permissionNotice, invalidateWorktreeContext, createWorkspace, createSessionForWorktree: createSessionCallback, createMainSession, renameWorkspace, deleteWorkspace, insertWorkspaceBefore, insertSessionBefore, insertWorktreeBefore, renameSession, forkSession, archiveSession, forkRecovery, retryForkSession, ensureSessionWorkspace, syncSessionWorkspaces, openSession, }: WorktreeSurfaceProps): import("react").JSX.Element | null;
|
|
8
8
|
//# sourceMappingURL=WorktreeSurface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorktreeSurface.d.ts","sourceRoot":"","sources":["../../src/client/WorktreeSurface.tsx"],"names":[],"mappings":"AAiEA,OAAO,KAAK,EAQV,oBAAoB,EASrB,MAAM,6BAA6B,CAAC;AA6BrC,YAAY,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"WorktreeSurface.d.ts","sourceRoot":"","sources":["../../src/client/WorktreeSurface.tsx"],"names":[],"mappings":"AAiEA,OAAO,KAAK,EAQV,oBAAoB,EASrB,MAAM,6BAA6B,CAAC;AA6BrC,YAAY,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAwEjG;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,OAAO,EACP,WAAW,EACX,aAAa,EACb,CAAC,EACD,SAAS,EACT,WAAW,EACX,YAAY,EACZ,OAAO,EACP,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,yBAAyB,EACzB,eAAe,EACf,wBAAwB,EAAE,qBAAqB,EAC/C,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,WAAW,EACX,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,sBAAsB,EACtB,qBAAqB,EACrB,WAAW,GACZ,EAAE,oBAAoB,sCA66DtB"}
|