@twinsearth/w2m-dsh-plugin 2.1.5 → 2.1.7

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.
@@ -5,14 +5,14 @@
5
5
  },
6
6
  "metadata": {
7
7
  "description": "The w2m fleet plugins: one account, many machines, any of Windows, macOS or Linux.",
8
- "version": "2.1.5"
8
+ "version": "2.1.7"
9
9
  },
10
10
  "plugins": [
11
11
  {
12
12
  "name": "w2m-fleet",
13
13
  "source": "./",
14
14
  "description": "Read fleet state and dispatch commands across the machines registered to one account. Read-only MCP surface: the five exposed tools cannot change anything.",
15
- "version": "2.1.5",
15
+ "version": "2.1.7",
16
16
  "author": {
17
17
  "name": "TwinsEarth"
18
18
  },
@@ -26,5 +26,5 @@
26
26
  ]
27
27
  }
28
28
  ],
29
- "version": "2.1.5"
29
+ "version": "2.1.7"
30
30
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "w2m-fleet",
3
3
  "description": "Drive the same project on online Windows, macOS and Linux machines from one account: read fleet state, dispatch commands and read results. The MCP surface is deliberately read-only.",
4
- "version": "2.1.5",
4
+ "version": "2.1.7",
5
5
  "author": {
6
6
  "name": "TwinsEarth"
7
7
  },
package/CHANGELOG.md CHANGED
@@ -7,6 +7,17 @@ All notable changes to this project are documented here.
7
7
  - `w2m_intent`: structured intents mapped onto allow-listed commands; unknown actions, parameters and types
8
8
  are refused by name (the fleet does not invent commands).
9
9
 
10
+ ## [2.1.7] - 2026-10-31
11
+
12
+ - Plugin identity: ship icon.png and package.json meta.title = "W2M:AI 智能体舰队编排工具" so a fresh install renders the custom icon/name.
13
+ - Desktop subplugin activation fix from 2.1.6 included.
14
+
15
+ ## [2.1.6] - 2026-10-31
16
+
17
+ - Desktop subplugin activation fix: no longer requires a Cordis `config` service; stateDir resolves from W2M_STATE_DIR / DSH_HOME / ~/.dsh/xclient.
18
+ - Plugin details now lists three components: root, /desktop, /gpw; /desktop activates alongside the root bundle (idempotent route guard).
19
+ - Removed the duplicate case-only `./GPW` export key that broke case-insensitive manifest tooling; lowercase `/gpw` remains.
20
+
10
21
  ## [2.1.5] - 2026-10-31
11
22
 
12
23
  - Packaging: desktop subplugin entry `@twinsearth/w2m-dsh-plugin/desktop` (host routes) and `/GPW` alias; root client bundle keeps the UI, same model as GPW.
package/README.md CHANGED
@@ -83,7 +83,7 @@ w2m-mcp --help
83
83
  # 复制进你自己的 codex/mcp-servers.toml
84
84
  [mcp_servers.w2m]
85
85
  command = "npx"
86
- args = ["-y", "@twinsearth/w2m-dsh-plugin@2.1.5", "w2m-mcp"]
86
+ args = ["-y", "@twinsearth/w2m-dsh-plugin@2.1.7", "w2m-mcp"]
87
87
  ```
88
88
 
89
89
  ### 5. 验证过的 release tarball(离线)
@@ -12,6 +12,6 @@
12
12
 
13
13
  [mcp_servers.w2m-fleet]
14
14
  command = "npx"
15
- args = ["-y", "-p", "@twinsearth/w2m-dsh-plugin@2.1.5", "w2m-mcp"]
15
+ args = ["-y", "-p", "@twinsearth/w2m-dsh-plugin@2.1.7", "w2m-mcp"]
16
16
  startup_timeout_sec = 20
17
17
  tool_timeout_sec = 60
package/cordis.patch.yml CHANGED
@@ -127,6 +127,10 @@
127
127
  #
128
128
  # What it does once enabled: answers `approval/request` with at most 10 auto-approvals per rolling 60 s, at
129
129
  # least 3000 ms apart, and defers everything past that to the human prompt, where it waits.
130
+ - id: dsh-desktop
131
+ name: '@twinsearth/w2m-dsh-plugin/desktop'
132
+ disabled: true
133
+ config: {}
130
134
  - id: dsh-gpw
131
135
  name: '@twinsearth/w2m-dsh-plugin/gpw'
132
136
  disabled: true
@@ -0,0 +1,21 @@
1
+ {
2
+ "version": "2.1.6",
3
+ "case": "RELEASE-2160",
4
+ "kind": "positive",
5
+ "machines": [
6
+ "b53a37f4-1464-4512-9259-33a7df091e3e"
7
+ ],
8
+ "executed_at": "2026-10-31T05:42:29.214Z",
9
+ "executor": "lead",
10
+ "task_id": "pre-release-2160-1793424835992",
11
+ "requirement": "v2.1.6: desktop subplugin activates without config service; three components listed",
12
+ "result": {
13
+ "outcome": "ok",
14
+ "assertions": {
15
+ "desktop": "inject=[connection]; stateDir fallback",
16
+ "components": "root + /desktop + /gpw",
17
+ "preflight": "GREEN: 16 pass, 0 fail, 1 host-only UNVERIFIABLE",
18
+ "build": "dist/twinsearth-w2m-dsh-plugin-2.1.6.tgz sha256 1588fd7f55aca6401367360b75599827c154005c545bc4ff13432490e4a3674a"
19
+ }
20
+ }
21
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "version": "2.1.7",
3
+ "case": "RELEASE-2170",
4
+ "kind": "positive",
5
+ "machines": [
6
+ "b53a37f4-1464-4512-9259-33a7df091e3e"
7
+ ],
8
+ "executed_at": "2026-10-31T06:11:59.865Z",
9
+ "executor": "lead",
10
+ "task_id": "pre-release-2170-1793426634987",
11
+ "requirement": "v2.1.7: plugin icon and display name metadata",
12
+ "result": {
13
+ "outcome": "ok",
14
+ "assertions": {
15
+ "icon": "icon.png shipped and referenced by package.json#icon",
16
+ "title": "meta.title set",
17
+ "preflight": "GREEN: 16 pass, 0 fail, 1 host-only UNVERIFIABLE",
18
+ "build": "dist/twinsearth-w2m-dsh-plugin-2.1.7.tgz sha256 45b8b3ae597f6ebe3843f992f1f74459f059938e42c6d409e5d6c976bc727144"
19
+ }
20
+ }
21
+ }
package/icon.png ADDED
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@twinsearth/w2m-dsh-plugin",
3
- "version": "2.1.5",
3
+ "version": "2.1.7",
4
4
  "description": "Run one project across your own Windows and macOS machines from a single DeepSeek account, through 11 w2m_* tools. Four coordination modes (replicate, split, broadcast, pipeline) and six aggregate verdicts (consistent, divergent, divergent-platform, failed, partial, unverifiable). P2P hole punching by default, with a bundled relay, STUN responder and ledger fallback, so the fleet needs no third-party service. Joining needs a pairing code plus autoStartAgent: true; installing alone does not join.",
5
5
  "type": "module",
6
6
  "exports": {
@@ -12,7 +12,6 @@
12
12
  "./stun": "./bin/w2m-stun.mjs",
13
13
  "./package.json": "./package.json",
14
14
  "./gpw": "./lib/gpw.js",
15
- "./GPW": "./lib/gpw.js",
16
15
  "./desktop": "./lib/desktop.js"
17
16
  },
18
17
  "dsh": {
@@ -52,7 +51,8 @@
52
51
  ".claude-plugin",
53
52
  "codex",
54
53
  "TEST-PLAN-JOINT-FLEET-2.0.8.md",
55
- "TEST-CASES-JOINT-FLEET-2.0.8.md"
54
+ "TEST-CASES-JOINT-FLEET-2.0.8.md",
55
+ "icon.png"
56
56
  ],
57
57
  "engines": {
58
58
  "node": ">=20.19.0"
@@ -267,5 +267,10 @@
267
267
  "@deepseek-ai/dsh-tools": {
268
268
  "optional": true
269
269
  }
270
+ },
271
+ "icon": "./icon.png",
272
+ "meta": {
273
+ "title": "W2M:AI 智能体舰队编排工具",
274
+ "description": "多机协同、P2P 直连与加密中继的 DSH 智能体舰队编排工具。"
270
275
  }
271
276
  }
package/plugin.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
3
3
  "name": "twinsearth-w2m-dsh",
4
- "version": "2.1.5",
4
+ "version": "2.1.7",
5
5
  "description": "Run one project across your own Windows and macOS machines from a single DeepSeek account, through 12 w2m_* tools. Four coordination modes (replicate, split, broadcast, pipeline) and six aggregate verdicts (consistent, divergent, divergent-platform, failed, partial, unverifiable). P2P hole punching by default, with a bundled relay, STUN responder and ledger fallback, so the fleet needs no third-party service. Joining needs a pairing code plus autoStartAgent: true; installing alone does not join.",
6
6
  "license": "MIT",
7
7
  "keywords": [
@@ -7,6 +7,8 @@
7
7
  * idempotency guard because both entries share this module instance.
8
8
  */
9
9
  import { registerRemoteViewRoutes } from './remote-view-route.mjs';
10
+ import { homedir } from 'node:os';
11
+ import { join } from 'node:path';
10
12
 
11
13
  export const name = 'dsh-w2m-desktop';
12
14
  export const inject = ['connection'];
@@ -32,6 +34,7 @@ export function registerDesktop(ctx, deps = {}) {
32
34
  * owns the UI; this half only registers the host routes.
33
35
  */
34
36
  export function apply(ctx) {
35
- const stateDir = typeof ctx?.config?.stateDir === 'string' ? ctx.config.stateDir : '';
37
+ const stateDir = process.env.W2M_STATE_DIR
38
+ ?? (process.env.DSH_HOME ? join(process.env.DSH_HOME, 'xclient') : join(homedir(), '.dsh', 'xclient'));
36
39
  return registerDesktop(ctx, { stateDir, p2p: null });
37
40
  }
@@ -293,7 +293,7 @@ const MAX_STAGES = 16;
293
293
  * `package.json` during `scripts/pack.mjs` rather than hand-maintained, and `W2M_PLUGIN_VERSION`
294
294
  * overrides it at runtime for tests and packagers.
295
295
  */
296
- const PLUGIN_VERSION = '2.1.5';
296
+ const PLUGIN_VERSION = '2.1.7';
297
297
 
298
298
  /** How long any single HTTP call may take before it is aborted, in milliseconds. */
299
299
  const DEFAULT_REQUEST_TIMEOUT_MS = 15_000;