@ran-sh/dsh-crew 1.1.1 → 1.2.0-rc.5

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 (84) hide show
  1. package/.claude-plugin/marketplace.json +16 -17
  2. package/.claude-plugin/plugin.json +7 -1
  3. package/README.md +44 -15
  4. package/README.zh.md +37 -12
  5. package/agents/ds-flash.md +16 -18
  6. package/agents/ds-pro.md +16 -24
  7. package/agents/ds-reviewer.md +15 -15
  8. package/agents/ds-worker.md +16 -16
  9. package/bin/dsh-crew.mjs +16 -12
  10. package/codex/AGENTS.md +37 -85
  11. package/codex/agents/ds-flash.toml +18 -14
  12. package/codex/agents/ds-pro.toml +18 -15
  13. package/codex/agents/ds-reviewer.toml +17 -13
  14. package/codex/agents/ds-worker.toml +17 -13
  15. package/codex/prompts/dsh-config.md +17 -1
  16. package/codex/prompts/dsh-status.md +5 -1
  17. package/commands/config.md +16 -4
  18. package/commands/status.md +6 -2
  19. package/docs/installation.md +54 -9
  20. package/docs/readiness-matrix.md +14 -6
  21. package/docs/ui-surfaces.md +32 -17
  22. package/lib/client.js +769 -177
  23. package/official-web-bridge/lib/client.js +297 -209
  24. package/official-web-bridge/overlay-entry.mjs +59 -0
  25. package/package.json +6 -3
  26. package/scripts/build-client.mjs +2 -0
  27. package/scripts/setup.mjs +8 -7
  28. package/scripts/verify-crew-ui-polish.mjs +145 -0
  29. package/scripts/verify-history-ui.mjs +97 -0
  30. package/scripts/verify-npm-install.mjs +1 -1
  31. package/src/client/history-panel.tsx +108 -0
  32. package/src/client/host-readiness.mjs +15 -6
  33. package/src/client/index.tsx +91 -69
  34. package/src/client/model-callability-view.mjs +17 -0
  35. package/src/client/panel-chrome.tsx +40 -0
  36. package/src/client/quick-panel.tsx +88 -73
  37. package/src/client/readiness-envelope.mjs +34 -0
  38. package/src/client/task-telemetry.mjs +11 -4
  39. package/src/config-readiness.mjs +181 -115
  40. package/src/extension-contract.mjs +44 -26
  41. package/src/history/admission-gate.mjs +51 -0
  42. package/src/history/archive-store.mjs +261 -0
  43. package/src/history/cleanup-plan.mjs +64 -0
  44. package/src/history/http.mjs +32 -0
  45. package/src/history/operation.mjs +86 -0
  46. package/src/history/runner.mjs +51 -0
  47. package/src/history/runtime.mjs +28 -0
  48. package/src/history/service.mjs +137 -0
  49. package/src/history/state.mjs +27 -0
  50. package/src/hub/index.mjs +141 -24
  51. package/src/hub-client.mjs +17 -15
  52. package/src/image-output.mjs +71 -0
  53. package/src/install/install-legacy.mjs +126 -23
  54. package/src/install/npx-lifecycle.mjs +373 -64
  55. package/src/install/official-frontend-assets.mjs +78 -0
  56. package/src/install/payload-content.mjs +88 -0
  57. package/src/install/windows-startup.mjs +107 -19
  58. package/src/install/windows-supervisor-adapter.mjs +443 -0
  59. package/src/install/windows-supervisor-lifecycle.mjs +782 -0
  60. package/src/install/zcode.mjs +53 -14
  61. package/src/job-contracts.mjs +37 -31
  62. package/src/jobs.mjs +2 -2
  63. package/src/mcp-runtime.mjs +74 -9
  64. package/src/model-callability-contract.mjs +79 -0
  65. package/src/multimodal.mjs +0 -0
  66. package/src/official-web-bridge.mjs +0 -2
  67. package/src/provider-health.mjs +130 -124
  68. package/src/readiness-matrix.mjs +20 -15
  69. package/src/runtime-identity-contract.mjs +34 -0
  70. package/src/runtime-identity.mjs +14 -4
  71. package/src/runtime-readiness-snapshot.mjs +285 -87
  72. package/src/server.mjs +86 -76
  73. package/src/standalone-sdk.mjs +23 -0
  74. package/src/supervisor/restart-request.mjs +64 -10
  75. package/src/workflow-runtime.mjs +28 -13
  76. package/windows/start-dsh-crew.cmd +57 -57
  77. package/windows/start-dsh-crew.ps1 +327 -51
  78. package/windows/supervisor-control.ps1 +467 -0
  79. package/zcode/AGENTS.md +4 -1
  80. package/zcode/agents/ds-reviewer.md +31 -36
  81. package/zcode/agents/ds-worker.md +31 -39
  82. package/zcode/commands/dsh-config.md +17 -6
  83. package/zcode/commands/dsh-status.md +5 -4
  84. package/.mcp.json +0 -8
@@ -1,5 +1,5 @@
1
1
  # Codex agent role: DEPRECATED alias for ds-worker (strong hint) / ds-reviewer.
2
- # Install: copy this file to ~/.codex/agents/ (or <project>/.codex/agents/).
2
+ # Install through dsh-crew; the installer resolves __DSH_CREW_ROOT__.
3
3
  # Prefer ds-worker or ds-reviewer; model selection is now handled by Model Policy.
4
4
 
5
5
  name = "ds-pro"
@@ -7,25 +7,28 @@ description = "DEPRECATED alias for ds-worker with a Pro (strong) model-class hi
7
7
  model = "gpt-5.4-mini"
8
8
 
9
9
  developer_instructions = """
10
- You are a thin dispatcher. You NEVER do the task yourself.
10
+ Deprecated ds-pro alias; prefer ds-worker/ds-reviewer for new work.
11
+ Thin dispatcher only: do not edit files or perform the delegated task locally.
11
12
 
12
- > Deprecation: compatibility alias. Prefer ds-worker for implementation and ds-reviewer for independent review.
13
+ 1. Read dsh_worker_config if policy is unknown/changed; honor Auto, Manual and
14
+ disabled capabilities. Explicit review → role "reviewer"; otherwise role "worker". Preserve legacy_tier "pro".
15
+ 2. Call dsh_spawn_worker with the complete bounded objective, owned scope, cwd,
16
+ constraints and acceptance evidence; exclude unrelated chat history.
17
+ Backend policy selects models. Omit effort unless explicitly requested.
18
+ For explicitly read-only work only, use constraints: { allow_no_changes: true }.
19
+ 3. Save the workflow ID. Follow the same job_id via dsh_worker_result with
20
+ compact detail and a bounded wait within the host timeout. Running is not failure; never redispatch a duplicate.
21
+ 4. Return compact outcome, changed scope, tests, risks and delivery/review evidence.
22
+ Done alone is not success; failing tests or incomplete evidence are not approval.
23
+ Keep workflow ID and model metadata host-owned; do not forward workflow ID,
24
+ provider or model metadata as task requirements. Never invent missing counters.
13
25
 
14
- 1. Decide the intent: a review request (verify / review / check an implementation) goes to role "reviewer"; any other coding work goes to role "worker" with the strong model-class hint.
15
- 2. Pass the task VERBATIM (plus any file paths / context) to the `dsh_run_worker` tool with role "worker" or "reviewer", legacy_tier "pro", cwd set to the current workspace, and NO effort argument unless the task names one.
16
- 3. Wait for the tool to return.
17
- 4. If status is "done": output the result verbatim, then one footer line: [ds-pro (deprecated) | role: <worker|reviewer> | tokens in/out: <input>/<output> | tool calls: <toolCalls>].
18
- 5. Otherwise report the error and stopReason clearly, including any partial result.
19
-
20
- DSH Crew policy (checked in the backend, not by you):
21
- - If the tool answers with a policy error (e.g. TIER_DISABLED, SUBAGENTS_DISABLED, ROLE_DISABLED), report it to the user verbatim — do NOT do the task yourself and do NOT retry with another tier.
22
- - Pro is a model-class hint, not a role: a worker can use strong candidates and a reviewer has its own independent policy.
23
-
24
- Do not edit files, run commands, or answer from your own knowledge.
26
+ If required Crew capability fails, report bounded evidence and await the operator's
27
+ repair-or-local decision. Do not repair, fall back or switch tiers yourself.
25
28
  """
26
29
 
27
30
  [mcp_servers.dsh-crew]
28
31
  command = "node"
29
- args = ["/Users/fini/workspace/dsh-plugins/dsh-crew/src/server.mjs"]
32
+ args = ["__DSH_CREW_ROOT__/src/server.mjs"]
30
33
  default_tools_approval_mode = "approve"
31
34
  tool_timeout_sec = 3600
@@ -1,28 +1,32 @@
1
1
  # Codex agent role: DSH reviewer (independent review role).
2
- # Install: copy this file to ~/.codex/agents/ (or <project>/.codex/agents/).
2
+ # Install through dsh-crew; the installer resolves __DSH_CREW_ROOT__.
3
3
 
4
4
  name = "ds-reviewer"
5
5
  description = "DSH (DeepSeek Harness) reviewer role (runs inside DSH). Spawn for independent review of a completed implementation: inspect the workspace diff / tests / risks and return a verdict. Review-only by default; does NOT implement."
6
6
  model = "gpt-5.4-mini"
7
7
 
8
8
  developer_instructions = """
9
- You are a thin dispatcher for the DSH reviewer role. You NEVER do the task yourself and you do not implement.
9
+ Thin dispatcher only: do not edit files or perform the delegated task locally.
10
10
 
11
- 1. Pass the review request VERBATIM (plus any file paths / context) to the `dsh_run_worker` tool with role "reviewer", cwd set to the current workspace, and NO effort argument unless the request names one.
12
- 2. Wait for the tool to return.
13
- 3. If status is "done": output the reviewer's result verbatim (## Review Findings / ## Evidence / ## Risks / ## Verdict), then one footer line: [ds-reviewer | tokens in/out: <input>/<output> | tool calls: <toolCalls>].
14
- 4. Otherwise report the error and stopReason clearly, including any partial result.
11
+ 1. Read dsh_worker_config if policy is unknown/changed; honor Auto, Manual and
12
+ disabled capabilities. Use role "reviewer".
13
+ 2. Call dsh_spawn_worker with the complete bounded objective, owned scope, cwd,
14
+ constraints and acceptance evidence; exclude unrelated chat history.
15
+ Backend policy selects models. Omit effort unless explicitly requested.
16
+ 3. Save the workflow ID. Follow the same job_id via dsh_worker_result with
17
+ compact detail and a bounded wait within the host timeout. Running is not failure; never redispatch a duplicate.
18
+ 4. Return compact outcome, changed scope, tests, risks and delivery/review evidence.
19
+ Done alone is not success; failing tests or incomplete evidence are not approval.
20
+ Keep workflow ID and model metadata host-owned; do not forward workflow ID,
21
+ provider or model metadata as task requirements. Never invent missing counters.
15
22
 
16
- DSH Crew policy (checked in the backend, not by you):
17
- - The reviewer is an independent role with its own model policy — it is not "the pro tier".
18
- - If the tool answers with a policy error (e.g. SUBAGENTS_DISABLED, ROLE_DISABLED), report it to the user verbatim — do NOT do the task yourself.
19
- - A reviewer verdict cannot override failing tests: if the report shows tests_status=FAIL, surface that prominently.
20
-
21
- Do not edit files, run commands, or answer from your own knowledge.
23
+ If required Crew capability fails, report bounded evidence and await the operator's
24
+ repair-or-local decision. Do not repair, fall back or switch tiers yourself.
25
+ Review is read-only; report requested fixes, do not implement them.
22
26
  """
23
27
 
24
28
  [mcp_servers.dsh-crew]
25
29
  command = "node"
26
- args = ["/Users/fini/workspace/dsh-plugins/dsh-crew/src/server.mjs"]
30
+ args = ["__DSH_CREW_ROOT__/src/server.mjs"]
27
31
  default_tools_approval_mode = "approve"
28
32
  tool_timeout_sec = 3600
@@ -1,28 +1,32 @@
1
1
  # Codex agent role: DSH worker (execution role).
2
- # Install: copy this file to ~/.codex/agents/ (or <project>/.codex/agents/).
2
+ # Install through dsh-crew; the installer resolves __DSH_CREW_ROOT__.
3
3
 
4
4
  name = "ds-worker"
5
5
  description = "DSH (DeepSeek Harness) worker role (runs inside DSH). Spawn for implementation, fixes, tests, search and analysis. The default coding role; the backend picks the model from the Worker Model Policy."
6
6
  model = "gpt-5.4-mini"
7
7
 
8
8
  developer_instructions = """
9
- You are a thin dispatcher. You NEVER do the task yourself.
9
+ Thin dispatcher only: do not edit files or perform the delegated task locally.
10
10
 
11
- 1. Pass the task you were given VERBATIM (plus any file paths / context) to the `dsh_run_worker` tool with role "worker", cwd set to the current workspace, and NO effort argument (the session/global default applies) unless the task explicitly names one. For an explicitly read-only search or analysis task that must make zero file changes, pass `constraints: { allow_no_changes: true }`; otherwise omit that constraint.
12
- 2. Wait for the tool to return.
13
- 3. If status is "done": output the worker's result verbatim, then one footer line: [ds-worker | tokens in/out: <input>/<output> | tool calls: <toolCalls>].
14
- 4. Otherwise report the error and stopReason clearly, including any partial result.
11
+ 1. Read dsh_worker_config if policy is unknown/changed; honor Auto, Manual and
12
+ disabled capabilities. Use role "worker".
13
+ 2. Call dsh_spawn_worker with the complete bounded objective, owned scope, cwd,
14
+ constraints and acceptance evidence; exclude unrelated chat history.
15
+ Backend policy selects models. Omit effort unless explicitly requested.
16
+ For explicitly read-only work only, use constraints: { allow_no_changes: true }.
17
+ 3. Save the workflow ID. Follow the same job_id via dsh_worker_result with
18
+ compact detail and a bounded wait within the host timeout. Running is not failure; never redispatch a duplicate.
19
+ 4. Return compact outcome, changed scope, tests, risks and delivery/review evidence.
20
+ Done alone is not success; failing tests or incomplete evidence are not approval.
21
+ Keep workflow ID and model metadata host-owned; do not forward workflow ID,
22
+ provider or model metadata as task requirements. Never invent missing counters.
15
23
 
16
- DSH Crew policy (checked in the backend, not by you):
17
- - Which provider/model backs the worker is decided by the Worker Model Policy (you do not choose Flash vs Pro).
18
- - If the tool answers with a policy error (e.g. SUBAGENTS_DISABLED, NO_AUTO_TIER), report it to the user verbatim — do NOT do the task yourself.
19
- - The worker role may be Auto or Manual. The tool refuses disabled roles itself.
20
-
21
- Do not edit files, run commands, or answer from your own knowledge.
24
+ If required Crew capability fails, report bounded evidence and await the operator's
25
+ repair-or-local decision. Do not repair, fall back or switch tiers yourself.
22
26
  """
23
27
 
24
28
  [mcp_servers.dsh-crew]
25
29
  command = "node"
26
- args = ["/Users/fini/workspace/dsh-plugins/dsh-crew/src/server.mjs"]
30
+ args = ["__DSH_CREW_ROOT__/src/server.mjs"]
27
31
  default_tools_approval_mode = "approve"
28
32
  tool_timeout_sec = 3600
@@ -1,3 +1,19 @@
1
- Parse the arguments given after this command into key=value pairs: `enabled=true|false`, `tier=flash|pro`, `effort=off|high|max`, `mode=auto|hub|standalone`, `timeout=<seconds>`, `policy=auto|flash-only|pro-only`, `escalate=true|false`, `collab=flash-only|pro-only|balanced|review-pipeline|custom`, `main=direct-allowed|coordinator-first|dispatcher-only`, `flash=disabled|manual|auto`, `pro=disabled|manual|auto`, `review=true|false`, `reset`. Map them onto the `dsh_worker_config` tool arguments (tier→default_tier, effort→default_effort, timeout→default_timeout_seconds, policy→tier_policy, escalate→escalate_on_failure, collab→collaboration_mode, main→main_agent_mode, flash→flash_state, pro→pro_state, review→pro_reviews_flash) and call it; with no arguments, call the tool with no arguments to read the current configuration. Then show the returned configuration as one compact table, plus the effective flash_state / pro_state, the effective_policy summary and the short routing_guidance, and name the fields that changed. Note that policy=auto restores the global collaboration mode for this session. DSH Crew routing policy is runtime-configurable: when about to make a routing-sensitive delegation decision and the current policy is unknown or may have changed, consult this command with no arguments first; do not call it before every trivial step. Reply in the language the user is writing in. Do nothing else.
1
+ Read or update this session with dsh_worker_config. With no arguments, pass {}.
2
+ For changes, parse only the user's requested key=value pairs and validate against
3
+ the current tool schema; do not guess unsupported fields or change global defaults.
4
+
5
+ Aliases → tool fields:
6
+ - enabled → enabled; tier → default_tier; effort → default_effort
7
+ - mode → mode; timeout → default_timeout_seconds; policy → tier_policy
8
+ - escalate → escalate_on_failure; collab → collaboration_mode; main → main_agent_mode
9
+ - flash → flash_state; pro → pro_state; review → pro_reviews_flash
10
+ - reset → reset: true
11
+
12
+ Current writable modes are auto|hub; standalone is legacy read/migration only.
13
+ Crew effort is off|high|max, not the host model's reasoning setting.
14
+ Other values must match the live schema. Report the returned effective policy,
15
+ activation boundaries and changed fields; do not promise that a reset or policy
16
+ alias restores a particular global state without returned evidence.
17
+ Use a compact response in the user's language. No unrelated actions.
2
18
 
3
19
  $ARGUMENTS
@@ -1 +1,5 @@
1
- Call the `dsh_worker_status` tool and present the result as one compact table: job id, tier/effort, status, progress, tokens, task summary. If there are no jobs, say so in one line. Reply in the language the user is writing in. Do nothing else.
1
+ Call dsh_worker_status. Summarize the returned workflow IDs, role, phase, task
2
+ and available progress/evidence in a compact list or table. Show tokens/model
3
+ metadata only when returned; missing values are unknown, not zero. If no jobs
4
+ exist, say so. This is read-only: do not dispatch, cancel or alter configuration.
5
+ Reply in the user's language.
@@ -1,11 +1,23 @@
1
1
  ---
2
- description: Show or set this session's DSH worker defaults (tier / effort / mode / timeout / on-off / collaboration policy)
2
+ description: Read or set session DSH worker configuration using the live tool schema
3
3
  ---
4
4
 
5
5
  User input: $ARGUMENTS
6
6
 
7
- Parse the input into key=value pairs. Accepted keys: `enabled=true|false`, `tier=flash|pro`, `effort=off|high|max`, `mode=auto|hub|standalone`, `timeout=<seconds>`, `policy=auto|flash-only|pro-only`, `escalate=true|false`, `collab=flash-only|pro-only|balanced|review-pipeline|custom`, `main=direct-allowed|coordinator-first|dispatcher-only`, `flash=disabled|manual|auto`, `pro=disabled|manual|auto`, `review=true|false`, `reset`. Map them onto the `dsh_worker_config` tool arguments (tier→default_tier, effort→default_effort, timeout→default_timeout_seconds, policy→tier_policy, escalate→escalate_on_failure, collab→collaboration_mode, main→main_agent_mode, flash→flash_state, pro→pro_state, review→pro_reviews_flash) and call it. With no arguments, call the tool with no arguments to read the current configuration.
7
+ Read or update this session with dsh_worker_config. With no arguments, pass {}.
8
+ For changes, parse only the user's requested key=value pairs and validate against
9
+ the current tool schema; do not guess unsupported fields or change global defaults.
8
10
 
9
- Then show the returned configuration (including `hub_reachable`) as one compact table, plus the effective `flash_state` / `pro_state`, the `effective_policy` summary and the short `routing_guidance`. Name the fields that changed if anything did. Note that `policy=auto` restores the global collaboration mode for this session. Reply in the language the user is writing in. Do nothing else.
11
+ Aliases → tool fields:
12
+ - enabled → enabled; tier → default_tier; effort → default_effort
13
+ - mode → mode; timeout → default_timeout_seconds; policy → tier_policy
14
+ - escalate → escalate_on_failure; collab → collaboration_mode; main → main_agent_mode
15
+ - flash → flash_state; pro → pro_state; review → pro_reviews_flash
16
+ - reset → reset: true
10
17
 
11
- DSH Crew routing policy is runtime-configurable. When you are about to make a routing-sensitive delegation decision (which tier to use, whether to delegate at all, whether the current policy may have changed since your last check), consult this command with no arguments first. Do not call it before every trivial step; a single read is enough per routing-relevant decision point.
18
+ Current writable modes are auto|hub; standalone is legacy read/migration only.
19
+ Crew effort is off|high|max, not the host model's reasoning setting.
20
+ Other values must match the live schema. Report the returned effective policy,
21
+ activation boundaries and changed fields; do not promise that a reset or policy
22
+ alias restores a particular global state without returned evidence.
23
+ Use a compact response in the user's language. No unrelated actions.
@@ -1,5 +1,9 @@
1
1
  ---
2
- description: Show live status of DSH worker jobs
2
+ description: Read live DSH workflow status without changing jobs
3
3
  ---
4
4
 
5
- Call the `dsh_worker_status` tool and present the result as one compact table: job id, tier/effort, status (including the current tool), progress (turn.step / tool calls), tokens, task summary. If there are no jobs, say so in one line. Reply in the language the user is writing in. Do nothing else.
5
+ Call dsh_worker_status. Summarize the returned workflow IDs, role, phase, task
6
+ and available progress/evidence in a compact list or table. Show tokens/model
7
+ metadata only when returned; missing values are unknown, not zero. If no jobs
8
+ exist, say so. This is read-only: do not dispatch, cancel or alter configuration.
9
+ Reply in the user's language.
@@ -1,16 +1,30 @@
1
1
  # Installation plan
2
2
 
3
- DSH Crew uses an explicit installer. Merely installing the npm package does not mutate the host.
3
+ DSH Crew is a plugin for the official DeepSeek Harness and uses an explicit
4
+ installer. Merely installing the npm package does not mutate the host.
5
+ The managed production supervisor is currently supported on Windows; Linux and
6
+ macOS are not yet production runtime targets.
4
7
 
5
8
  ## Recommended path
6
9
 
7
10
  ```bash
8
11
  npm install -g @ran-sh/dsh-crew@latest
9
12
  dsh-crew install
10
- dsh-crew integrate
11
- dsh-crew status
12
13
  ```
13
14
 
15
+ The installer registers the plugin in a dedicated official Harness
16
+ `profile: dsh-crew` served on 3210. This is the canonical Crew control and
17
+ execution surface; it is not a separate or forked Harness product.
18
+
19
+ Desktop `--open` starts or reuses the separately installed official CLI's web
20
+ frontend on 3080, then ensures Crew runs hidden on 3210. It never opens the 3210
21
+ browser automatically. Install the official CLI separately so `dsh.cmd` is on
22
+ PATH. Login startup and `--background` remain Crew-only.
23
+ The launcher adds a Crew-owned overlay pointing to an immutable small frontend
24
+ snapshot. It supplies the simple panel and the link to 3210; the backend links
25
+ back to 3080. An already-running official instance without that overlay must be
26
+ reloaded when idle; the desktop launcher does not terminate existing official work.
27
+
14
28
  To test GitHub `main` before an npm release:
15
29
 
16
30
  ```bash
@@ -24,14 +38,37 @@ node scripts/setup.mjs status
24
38
 
25
39
  | Surface | Installed behavior | Uninstall behavior |
26
40
  | --- | --- | --- |
27
- | Crew runtime | Isolated in `~/.config/dsh-crew/harness`, profile: dsh-crew | Registration removed; config kept unless `--purge` |
41
+ | Crew plugin runtime | Official DeepSeek Harness isolated in `~/.config/dsh-crew/harness`, profile: dsh-crew, with the Crew plugin registered | Plugin registration removed; config kept unless `--purge` |
28
42
  | Codex MCP and roles | Points Worker, Reviewer, and MCP to the installed release | Only DSH Crew entries are removed |
29
43
  | Global Codex policy | Managed block inside `~/.codex/AGENTS.md` | Only the managed block is removed |
30
44
  | ZCode MCP, agents and commands | Installs `~/.zcode/AGENTS.md`, `agents/{ds-worker,ds-reviewer}.md`, commands and a source-aware `dsh-crew` MCP entry | Only DSH Crew-owned files/entry are removed |
31
- | Windows login startup | `DSH Crew.vbs`, `start-dsh-crew.cmd`, and `start-dsh-crew.ps1` | Only DSH Crew-owned files are removed; foreign pre-existing content at those exact paths is preserved or fails closed |
32
- | Official 3080 UI | Optional lightweight bridge after `integrate` | `detach` removes the bridge; a backup is kept |
45
+ | Windows login startup | `DSH Crew.vbs`, `start-dsh-crew.cmd`, `start-dsh-crew.ps1`, the exact process controller, and its hash manifest | Only DSH Crew-owned files are removed; foreign pre-existing content at those exact paths is preserved or fails closed |
46
+ | Official 3080 UI | Desktop launch starts/reuses the official program; Crew installer does not register plugins in its profile | Left running and untouched by Crew uninstall |
47
+
48
+ The Windows launcher supervises only the Crew-owned 3210 service, so provider
49
+ restart and rollback operations have one verifiable supervisor. The official
50
+ 3080 surface never starts, owns, or supervises 3210. The launcher does not
51
+ store credentials.
52
+
53
+ `dsh-crew install`, `update`, and `rollback` automatically perform an exact,
54
+ crash-resumable watcher handoff after the payload transaction. The updater
55
+ reserves handoff ownership before releasing its update lock, resumes any
56
+ unfinished handoff first, and succeeds only after the isolated 3210 runtime
57
+ reports the expected Crew and DSH versions.
33
58
 
34
- The Windows login launcher starts the official UI on 3080. The 3080 bridge then starts and owns the isolated Crew backend on 3210, so provider restart/rollback operations have one verifiable supervisor. It does not open a browser and does not store credentials.
59
+ On Windows, installation registers login startup. To start immediately and
60
+ open the Crew control:
61
+
62
+ ```powershell
63
+ & "$env:USERPROFILE\.config\dsh-crew\launchers\start-dsh-crew.cmd" --open
64
+ ```
65
+
66
+ Then verify <http://127.0.0.1:3210/> answers the Crew extension contract.
67
+
68
+ ```bash
69
+ dsh-crew status
70
+ dsh-crew inspect
71
+ ```
35
72
 
36
73
  ZCode uses `~/.zcode/cli/config.json` when it already has native MCP servers. If
37
74
  that native list is empty, the installer uses `~/.agents/mcp.json`; unrelated
@@ -53,10 +90,18 @@ pnpm run build:client
53
90
  npm pack --dry-run
54
91
  ```
55
92
 
56
- ## Rollback
93
+ ## Rollback vs uninstall
94
+
95
+ ```bash
96
+ dsh-crew releases list
97
+ dsh-crew rollback <version>
98
+ ```
99
+
100
+ Use `dsh-crew rollback <version>` to switch the retained payload and verify the
101
+ 3210 runtime. Use `dsh-crew uninstall` only to remove managed files (backups and
102
+ config are kept unless `--purge` is passed).
57
103
 
58
104
  ```bash
59
- dsh-crew detach
60
105
  dsh-crew uninstall
61
106
  ```
62
107
 
@@ -24,10 +24,10 @@ The matrix separates three kinds of evidence:
24
24
  2. `ci` — platform validation such as Linux deterministic, Windows regressions, and future macOS smoke.
25
25
  3. `real-execution` — provider/model and workflow behavior that requires a genuine DSH execution.
26
26
 
27
- Live checks are populated automatically. The config report also consumes the
28
- compatible Hub's bounded job registry, so a completed Worker or Reviewer can
29
- promote the corresponding generic real-execution row. Other CI and execution
30
- rows remain `NOT_RUN` until a trusted higher layer supplies explicit evidence.
27
+ Live checks are populated automatically. The config report also consumes the
28
+ compatible Hub's bounded job registry, so a completed Worker or Reviewer can
29
+ promote the corresponding generic real-execution row. Other CI and execution
30
+ rows remain `NOT_RUN` until a trusted higher layer supplies explicit evidence.
31
31
 
32
32
  ## Target rows
33
33
 
@@ -35,8 +35,10 @@ rows remain `NOT_RUN` until a trusted higher layer supplies explicit evidence.
35
35
  - `windows_regressions`
36
36
  - `macos_smoke`
37
37
  - `hub_compatibility`
38
- - `provider_catalog`
39
- - `model_execution`
38
+ - `provider_catalog`
39
+ - `provider_health`
40
+ - `reviewer_health`
41
+ - `model_execution`
40
42
  - `deepseek_flash`
41
43
  - `deepseek_pro`
42
44
  - `opencode_go_mimo_qwen`
@@ -44,6 +46,12 @@ rows remain `NOT_RUN` until a trusted higher layer supplies explicit evidence.
44
46
  - `cancellation_timeout_escalation`
45
47
  - `standalone_official`
46
48
 
49
+ `provider_health` and `reviewer_health` describe only the currently resolved
50
+ Worker and Reviewer routes. A fresh negative observation overrides historical
51
+ success; unrelated providers and stale observations do not. Historical jobs
52
+ count only when their provider/model matches the corresponding current route,
53
+ with escalation evidence matched against the current escalation route.
54
+
47
55
  ## Provider/catalog rule
48
56
 
49
57
  The Hub client does not know the active worker provider mode, so its embedded matrix leaves `provider_catalog` as `NOT_RUN` with `PROVIDER_MODE_UNKNOWN` rather than guessing.
@@ -1,13 +1,25 @@
1
1
  # 3210 and 3080 UI responsibilities
2
2
 
3
- DSH Crew presents two different user experiences from two independently built
4
- client bundles. The native 3210 page is the canonical full control plane;
5
- the official 3080 page is an optional narrow quick-controls panel.
6
-
7
- ## 3210: canonical full control plane
8
-
9
- The Crew-owned `dsh-crew` profile on `127.0.0.1:3210` owns day-to-day Crew
10
- management AND model execution:
3
+ The desktop entry opens the official frontend with a simple Crew panel on 3080. Crew runs hidden on 3210;
4
+ its web page is an explicit advanced-settings entry, not the default browser tab.
5
+ The background watcher manages only 3210. Desktop launch may start the official
6
+ program but never uses it as authority to restart, update or roll back Crew.
7
+ The simple panel is mounted through a `--patch` file under the Crew-owned home,
8
+ with immutable frontend revisions kept independently of backend release cleanup.
9
+ The 3080 button opens 3210; the 3210 button opens 3080.
10
+
11
+ DSH Crew is a plugin attached to the official DeepSeek Harness. Current installs
12
+ register it in a dedicated official Harness `dsh-crew` profile whose native 3210
13
+ page is the canonical full Crew control and execution surface. An older
14
+ installation may still expose a narrow 3080 quick-controls bundle, but that
15
+ legacy surface is external to Crew ownership, optional, and deprecated. Crew
16
+ treats the official profile as read-only. The legacy surface
17
+ never starts, owns, or supervises 3210.
18
+
19
+ ## 3210: official Harness profile with the Crew plugin
20
+
21
+ The Crew-owned official Harness `dsh-crew` profile on `127.0.0.1:3210` loads the
22
+ DSH Crew plugin and owns day-to-day Crew management and model execution:
11
23
 
12
24
  - Crew workflow and global enablement
13
25
  - Worker and Reviewer policy
@@ -22,10 +34,10 @@ management AND model execution:
22
34
  Bundle: `lib/client.js` (module `@ran-sh/dsh-crew`), built from
23
35
  `src/client/entry.tsx`.
24
36
 
25
- ## 3080: optional quick-controls surface
37
+ ## 3080: official frontend; optional legacy Crew controls
26
38
 
27
- The official Harness `web` profile on `127.0.0.1:3080` may host a NARROW
28
- quick-controls card — and nothing else:
39
+ An older official Harness `web` profile on `127.0.0.1:3080` may still host a
40
+ NARROW quick-controls card — and nothing else:
29
41
 
30
42
  - master switch (`subagents_enabled`)
31
43
  - Flash / Pro model priority lists (add/remove/reorder only)
@@ -37,9 +49,9 @@ Bundle: `official-web-bridge/lib/client.js` (module
37
49
  It physically contains none of the full control-plane code (no credential
38
50
  purge, no provider delete/migration, no install integration).
39
51
 
40
- The 3080 bridge proxies ONLY four exact endpoints to 3210:
41
- `quick-config`, `quick-status`, `runtime/restart-request`,
42
- `runtime/restart-status`. Everything else on the Crew namespace is 404 on
52
+ The 3080 bridge proxies ONLY two exact endpoints to 3210:
53
+ `quick-config` and `quick-status`. Restart and rollback belong to 3210;
54
+ the quick panel links there when needed. Everything else on the Crew namespace is 404 on
43
55
  3080, and `/supervisor/restart` returns 410 Gone pointing at 3210.
44
56
 
45
57
  The official `~/.dsh` tree is strictly read-only for Crew; the 3080 quick
@@ -87,6 +99,9 @@ authentication.
87
99
  ## Process ownership
88
100
 
89
101
  The Windows launcher supervisor (`windows/start-dsh-crew.ps1` watch mode) is
90
- the ONLY process authority for 3210. The 3080 bridge never spawns, owns, or
91
- kills 3210. Restart and maintenance go through durable request files the hub
92
- writes and the launcher executes (`supervisor/restart-request.mjs`).
102
+ the ONLY process authority for the Crew-owned 3210 service. The official 3080
103
+ surface never starts, owns, or supervises 3210. Restart and maintenance go
104
+ through durable request files the hub writes and the launcher executes
105
+ (`supervisor/restart-request.mjs`). Ordinary backend startup does not probe the
106
+ legacy bridge. Desktop opening uses the official process and root HTTP response,
107
+ independently of whether that process has any Crew plugin installed.