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/plugin-dsh-workspace-reflect

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/plugin-dsh-workspace-reflect@0.2.1
READMECompatibilityVersions

Compatibility and provenance

Plugin Dsh Workspace Reflect is published as @playform/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
47.7 kB
Files
56
Surface
any
License
CC0-1.0
Source
npm
GitHub
★ 2
Weekly downloads
294
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 for the DeepSeek Harness plugin family (the Classic release).

The later stage service-provider role provides the code-block reflective operations: an AST-aware rename, connect, or replace from a single call each, over the managed representations.

The one-call semantics

Each operation carries the whole transformation in one call, instead of a choreography of tools.

The spans use 1-based inclusive numbering, which is the graph's span grammar.

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 can name the frozen node id of the workspace graph (node: "Block:<path>:<line>:body") together with the content-derived fingerprint of the node.

The graph (ctx.workspaceGraph, probed and never injected) supplies the span, the check compares the fingerprint with the current text through the formula of the graph, and only that span is rewritten, so a mismatch refuses with rejected <path> (fingerprint mismatch) and writes nothing.

When the graph is absent, the explicit span from the caller is the fallback, and the check still compares 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 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), never a boolean or a thrown error:

status: "applied" | "conflict" | "denied" | "rejected" | "recovery-required" | "outcome-unknown";
  • applied - written, and the new version travels with the reply.
  • conflict - the version fence failed, the file moved under the operation, and nothing was overwritten.
  • denied - the plugin is disabled, and the cold mount answers denied.
  • rejected - refused before any write (malformed request, oversized file or span, no matches, already connected, a stale fingerprint, 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) and 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, which is the reflective carry, and an absent graph is an honest skip.

The surfaces

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 a remount: logFile (~/.dsh/playform/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 through an explicit ACTIVATE.

The package 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 block of the factory) 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 file is read or written.

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, with the policy as the OUTER check and the fingerprint verification as the inner one.

Set policy.write to auto, or let a resolved pack override it, so the next operation reaches the write path.

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

A policy section of a resolved pack overrides the defaults per action, and that wiring is the next refinement.

The ledger

The module owns the ledger and prefixes it with 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 build and the tests

The build runs pnpm prepublishOnly (Source/prepublishOnly.sh), which does the plugin build (ESM Target/, with the Test tree excluded), the Test build, the harness selfcheck, and the Test type-check.

The plan

  • Workspace-Family/REFLECT - the reflective ops.

License

CC0-1.0.