The worktree service now records each checkout it creates as a `plugin:worktree/created` record, folds them in its own `worktree` projection with fork-aware ownership, and reclaims a clean, unreferenced checkout when the Session that created it is archived. The Forge panel reads the service's record and forwards its cleanup state; it no longer writes a `created` record, owns a retention projection, or gates every Session's directory access. Admission registers the attempt inside the Workspace write queue and returns; inspection runs afterwards, reading cold Sessions through the projection cache when mounted and from their log otherwise, with subagent children of an archived ancestor counted as archived. Only a path being removed holds `working-directory/access`, whose request now carries the access's `signal`, and listeners withdraw before the drain. Ignored files no longer retain a checkout, matching Git's non-force removal; processes and terminals are not consulted. The Forge bundle mounts one `worktree` service: the `forge-worktree` row and the `optional-forge-panel` group that isolated a second service are gone, and `forge-panel` is a top-level row. `canRemove`, `remove`, the `forgeWorktreeRetention` projection, and `ForgeWorktreeCleanup` are removed; `WorktreeService.cleanupOf`, `WorktreeCleanup`, and the `worktree/cleanup` Host event replace them. The upgrade guide moves to the current version directory and covers the id removals.
2.7 KiB
2.7 KiB
Experimental Plugin Record Catalog
English | 中文
These current-source PluginRecordMap declarations describe ignorable, log-only records owned by experimental packages. Payload annotations link to their owning source without expanding referenced types. Records stay outside the known-event set, persistence schema fingerprints, and compatibility history; format migrations retain them on a best-effort basis.
Run pnpm run gen-persistence-catalog to regenerate both persistence catalogs, their language pairs, and associated artifacts. pnpm run verify-persistence-catalog checks all generated files.
Shared Session event declarations and resolved schemas appear in the Session persistence event catalog.
| Record | Owner | Purpose | Payload and source |
|---|---|---|---|
plugin:action-cards/decision |
@deepseek-ai/dsh-action-cards |
Dismissals and kind-defined progress of action cards. | ActionCardDecision · packages/experimental/action-cards/src/types.ts |
plugin:client-ui-forge/worktree |
@deepseek-ai/dsh-experimental-client-ui-forge |
A request, withdrawal, or creation of the worktree a Session starts in. | WorktreeRecord · packages/experimental/client-ui-forge/src/types.ts |
plugin:forge-session/binding |
@deepseek-ai/dsh-experimental-forge-session |
A caller or discovery action that binds, restores, or hides one change request. | BindingRecord · packages/experimental/forge-session/src/types.ts |
plugin:translator/request |
@deepseek-ai/dsh-experimental-translator |
Provider-independent translation input, retained before dispatch. | TranslationRequestRecord · packages/experimental/translator/src/types.ts |
plugin:translator/result |
@deepseek-ai/dsh-experimental-translator |
Successful translation, retained before it is returned to the consumer. | TranslationResultRecord · packages/experimental/translator/src/types.ts |
plugin:worktree/created |
@deepseek-ai/dsh-experimental-worktree |
A checkout the worktree service created for the Session, which entered it in the same operation. | CreatedWorktree · packages/experimental/worktree/src/projection.ts |