DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins

@playform/ets-plugin-dsh-workspace-reflect

Ets Plugin Dsh Workspace Reflect

The workspace-reflect service: a DeepSeek Harness plugin providing the LATER-STAGE code-block reflective API - the AST-aware rename/connect/replace bundled as ONE call each, over the managed representations (the family map's reflect role; the workspace re

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add @playform/ets-plugin-dsh-workspace-reflect@0.2.1
READMECompatibilityVersions

Compatibility and provenance

Ets Plugin Dsh Workspace Reflect is published as @playform/ets-plugin-dsh-workspace-reflect and currently resolves to version 0.2.1. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
any
Release source
npm
Registry updated
11/4/2026

Versions

0.2.1stable
10/28/2026
0.2.0stable
10/25/2026
0.1.0stable
10/25/2026

Related plugins

Loading related plugins…

Latest
0.2.1
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
48.2 kB
Files
56
Surface
any
License
CC0-1.0
Source
npm
GitHub
★ 2
Weekly downloads
280
Security scan
✓ v0.2.1 scan passed
Last push
11/4/2026
View source ↗Project homepage ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue

Related plugins

More verified plugins in developer-tools.

Better Sidebardsh-better-sidebarBetter Sidebar for DSH — file tree, editor, changes, tasks and side chat in one column, separate for every conversation. Also exposes a service other plugins use to register sidebar tabs and file viewers.Client Ui Git Graph@linxin666/dsh-client-ui-git-graphExternal dsh web GUI plugin: a blank-session git branch selector + Git graph, with real host-side git operations and guards, as a dsh profile bundleSsh@linxin666/dsh-sshRemote SSH operations for the dsh web GUI: host config store (~/.dsh/dsh-ssh.json, import from ~/.ssh/config), a persistent ssh2 connection pool with jump-host support, exec / PTY web terminal / SFTP transfer / local port-forward tunnels / cluster executiUpdate@linxin666/dsh-updateSelf-update plugin for the dsh web GUI: probes npm for newer family releases and runs the owning profile's pnpm update in place, from a sidebar trigger beside the settings seat with a release-notes panel

README

@playform/plugin-dsh-workspace-reflect

v0.1.0 - UNPUBLISHED - plan: Workspace-Family/REFLECT

The role

The workspace-reflect service serves the DeepSeek Harness plugin family (the Classic release).

It fills the later stage service-provider role: the code-block reflective ops, the AST-aware rename/connect/replace from a single call each, over the managed representations.

The one-call semantics

Each operation bundles the whole transformation, so one call replaces a tool choreography.

The spans are 1-based and inclusive (the span grammar of the graph).

OpRequestBehavior
renamepath, startLine, endLine, oldName, newName, scope?The semantics service's scope-resolved plan first (its edits filtered to the operation's scope); the whole-word textual engine as the fallback. Zero occurrences is rejected.
connectfromPath, toPath, symbol?Inserts an import of symbol from the relative specifier of toPath into fromPath; without a symbol, a reference comment. Already-connected is rejected.
replacepath, startLine?, endLine?, text, node?, fingerprint?A graph NODE target (the AST source) with its content fingerprint verified before the write; or a plain span (the textual form). The span guard rejects a span outside the file or wider than maxBlockLines.

The AST-aware targeting

A replace may name the frozen node id of the workspace graph (node: "Block:<path>:<line>:body") and the content-derived fingerprint of the node.

The graph (ctx.workspaceGraph, probed and never injected) supplies the span, and the plugin verifies the fingerprint against the current text with the formula of the graph and rewrites only that span.

A mismatch refuses with rejected <path> (fingerprint mismatch) and writes nothing.

With the graph absent the explicit span of the caller is the fallback, and the plugin still verifies the fingerprint.

A rename asks the workspace-semantics service (ctx.workspaceSemantics, probed and never injected) for the scope-resolved plan, which the service may deepen through the harness LSP seam, and it applies the edits of the plan inside the scope of the operation.

The textual whole-word engine is the fallback when the service is absent, refuses, or has no edit in scope.

The reply is part of the type

Every operation returns the CommitReply union (Interface/Reply.ts) and never a boolean or a thrown error:

status: "applied" | "conflict" | "denied" | "rejected" | "recovery-required" | "outcome-unknown";
  • applied.

    The operation is written, and the new version travels with the reply.

  • conflict.

    The version fence failed, so the file moved under the operation and nothing was overwritten.

  • denied.

    The plugin is disabled, so the cold mount answers denied.

  • rejected.

    The plugin refused before any write: a malformed request, an oversized file or span, no matches, an already connected path, a stale fingerprint, or an absent graph.

  • outcome-unknown.

    The write failed in a way that is neither a version conflict nor a confirmed failure.

The publish path and the carry

Writes go only through the guarded write of the factory (the replaceIfVersion fence, the P4 sandbox policy, the stash pre-registration), never through a raw fs write.

After an applied operation the plugin probes the optional workspaceGraph sibling service (never injected) and asks it to re-index the changed file (the reflective carry), and an absent graph is an honest skip.

Service surface (ctx.workspaceReflect)

The surface is rename(op), connect(op), replace(op), and act(op) (the dispatch by kind), all async and all returning the reply union.

The configuration

Every knob is volatile and hot-editable without remounting: logFile (~/.dsh/playform/ets-plugin-dsh-workspace-reflect.log), log, enabled (false - the IDLE-forever posture), propagate (block | file, default block), maxFileBytes (1000000), and maxBlockLines (5000).

The plugin ships disabled and enables only by an explicit ACTIVATE.

The plugin adds no new knob, because the graph and the semantics service are optional siblings.

The policy block (D6) - the write gate

The config carries the shared per-action allowlist (policy: Policy(), composed from the factory's block) and maps it to State.Allow:

actiondefaultactiondefault
readautowriteapprove
indexautocommitapprove
recordautospawnapprove
suggestautomessageauto

The reflective WRITES are the gated actions, so replace and rename consult the write verdict before the plugin reads or writes the file.

An approve verdict (the shipped default) refuses the operation with the byte-exact replace held <path> (policy write=approve) or rename held <path> (policy write=approve) line, the reply is rejected with the policy holds the replace|rename (write=approve), and zero writes reach the filesystem.

The fingerprint targeting is unchanged: the policy is the OUTER check, and the fingerprint verification is the inner one.

Flip policy.write to auto (or let a resolved pack override it) to let the next operation reach the write path.

The block is one volatile object, so a policy flip is hot-editable without a remount.

The policy section of a resolved pack overrides the defaults for each action (the wiring is the next refinement).

The ledger

Ledger lines (module-owned, prefixed reflect:): activated, disabled, rename, connect, replace, deepened, denied, rejected, conflict, carried, failed, and the two policy holds replace held <path> (policy write=approve) / rename held <path> (policy write=approve).

The new rejected reasons (fingerprint required for a node target, fingerprint without a node target, fingerprint mismatch, node path mismatch, node not targetable, node not found, graph absent) are documented in SCHEME.md section 5.

The plan

  • Workspace-Family/REFLECT - the reflective ops.

License

CC0-1.0.