@nelsonlongxiang/dsh-open-a2a-net 0.6.28 → 0.6.30

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 (69) hide show
  1. package/README.md +87 -14
  2. package/README_zh.md +83 -7
  3. package/assets/nexusDist/assets/index-C_x3iAth.js +9 -0
  4. package/assets/nexusDist/assets/index-Dz8N80tI.css +1 -0
  5. package/assets/nexusDist/index.html +2 -2
  6. package/cli/a2a.mjs +0 -0
  7. package/cordis.patch.yml +21 -21
  8. package/lib/canvas-store.js +21 -1
  9. package/lib/client.js +64 -64
  10. package/lib/client.js.map +1 -1
  11. package/lib/faces/admin.js +755 -0
  12. package/lib/faces/canvas-notify.js +138 -0
  13. package/lib/faces/wire.js +669 -0
  14. package/lib/flood-guard.js +106 -0
  15. package/lib/index.js +200 -1392
  16. package/lib/recursion-guard.js +78 -0
  17. package/lib/runtime.js +1 -0
  18. package/lib/skill/SKILL.md +35 -9
  19. package/lib/skill/references/cli.md +24 -7
  20. package/lib/skill/references/collaboration.md +355 -0
  21. package/lib/skill/references/discovery.md +5 -2
  22. package/lib/skill/references/pitfalls.md +2 -1
  23. package/lib/skill/references/routing.md +18 -8
  24. package/lib/skill/references/setup.md +152 -0
  25. package/lib/task-ledger.js +40 -4
  26. package/lib/types/canvas-store.d.ts +10 -1
  27. package/lib/types/faces/admin.d.ts +133 -0
  28. package/lib/types/faces/canvas-notify.d.ts +74 -0
  29. package/lib/types/faces/wire.d.ts +171 -0
  30. package/lib/types/flood-guard.d.ts +29 -0
  31. package/lib/types/index.d.ts +11 -3
  32. package/lib/types/recursion-guard.d.ts +56 -0
  33. package/lib/types/runtime.d.ts +35 -0
  34. package/lib/types/task-ledger.d.ts +15 -1
  35. package/nexus-stage/package-lock.json +2262 -2262
  36. package/nexus-stage/src/canvas-ops.ts +175 -175
  37. package/nexus-stage/src/canvas-wire.ts +156 -156
  38. package/nexus-stage/src/edges.ts +72 -72
  39. package/nexus-stage/src/federation-overlay.ts +103 -103
  40. package/nexus-stage/src/federation.ts +240 -240
  41. package/nexus-stage/src/layout-doc.ts +143 -143
  42. package/nexus-stage/src/layout-wire.ts +158 -158
  43. package/nexus-stage/src/main.ts +5 -1
  44. package/nexus-stage/src/planning-card-text.ts +73 -0
  45. package/nexus-stage/src/planning-edges.ts +26 -0
  46. package/nexus-stage/src/planning-fit.ts +45 -0
  47. package/nexus-stage/src/planning-legend.ts +38 -0
  48. package/nexus-stage/src/planning-mirror.ts +31 -0
  49. package/nexus-stage/src/planning-overlap.ts +159 -0
  50. package/nexus-stage/src/planning-relayout.ts +121 -0
  51. package/nexus-stage/src/planning-search.ts +168 -0
  52. package/nexus-stage/src/planning-types.ts +1 -0
  53. package/nexus-stage/src/planning-undo.ts +68 -0
  54. package/nexus-stage/src/planning-view.ts +120 -121
  55. package/nexus-stage/src/planning.css +41 -8
  56. package/nexus-stage/src/seat.ts +35 -35
  57. package/nexus-stage/src/stage-name.ts +13 -13
  58. package/nexus-stage/src/tokens.ts +31 -31
  59. package/nexus-stage/src/viewport.ts +24 -1
  60. package/nexus-stage/src/wb-chat.ts +20 -6
  61. package/nexus-stage/src/wb-ledger.ts +20 -7
  62. package/nexus-stage/src/wb-names.ts +43 -0
  63. package/nexus-stage/src/workbench.css +8 -2
  64. package/nexus-stage/src/workbench.ts +55 -17
  65. package/nexus-stage/src/world.ts +13 -21
  66. package/package.json +216 -214
  67. package/assets/nexusDist/assets/index-1niOBYxp.js +0 -5
  68. package/assets/nexusDist/assets/index-uQf7NwjF.css +0 -1
  69. package/nexus-stage/scripts/__pycache__/mockhost.cpython-312.pyc +0 -0
@@ -153,7 +153,7 @@ export function planSeatClear(sid: string, occupied: ReadonlyArray<{ readonly x:
153
153
  }
154
154
 
155
155
  /** Minimal session row shape the model needs (topology.SessionRow satisfies it). */
156
- export interface SessionLite { id: string; label: string; team: string; name?: string; joined: boolean; live?: boolean; teams?: readonly string[] }
156
+ export interface SessionLite { id: string; label: string; team: string; name?: string; description?: string; joined: boolean; live?: boolean; teams?: readonly string[] }
157
157
 
158
158
  /** Minimal team shape (topology.CanvasTeam satisfies it). `team` is the
159
159
  * mono route alias `<host>/canvas/<name>` when the payload carries it. */
@@ -172,6 +172,8 @@ export interface WorldNode {
172
172
  /** The route alias `<team>/<id8>` the state payload provides. */
173
173
  team: string
174
174
  name?: string
175
+ /** What the session is for (/state `description`) — the card's second line. */
176
+ description?: string
175
177
  live: boolean
176
178
  /** Peer node (PR D v1 ruling): a remote host entry rendered as a card.
177
179
  * Excluded from local content bounds; canvas memberships allowed since
@@ -193,11 +195,10 @@ export interface WorldNode {
193
195
  /** A team frame rectangle in world space (top-left + size). */
194
196
  export interface FrameGeom { x: number; y: number; w: number; h: number }
195
197
 
196
- /** Snapshot for group drag: the frame rect plus member centers at pointerdown. */
198
+ /** Snapshot for a frame drag: the frame rect at pointerdown (owner ruling 2026-10-28: a frame always moves only itself — members never ride along). */
197
199
  export interface FrameDragSnapshot {
198
200
  readonly name: string
199
201
  readonly rect: FrameGeom
200
- readonly centers: ReadonlyArray<readonly [string, number, number]>
201
202
  }
202
203
 
203
204
  /** The card rectangle (top-left + size) for a node centered at (x, y). */
@@ -272,38 +273,27 @@ export class WorldModel {
272
273
  }
273
274
 
274
275
  /**
275
- * Start a frame group drag: snapshot the rect and member centers so the
276
- * drag applies total deltas from this origin (no float drift). Returns
277
- * undefined for an unknown frame.
276
+ * Start a frame drag: snapshot the rect so the drag applies total deltas
277
+ * from this origin (no float drift). Returns undefined for an unknown
278
+ * frame. Owner ruling 2026-10-28: the snapshot carries NO member state —
279
+ * a frame drag moves only the rect; members stay where the user put them.
278
280
  */
279
281
  beginFrameDrag(name: string): FrameDragSnapshot | undefined {
280
282
  const rect = this.frames.get(name)
281
283
  if (rect === undefined) return undefined
282
- const centers: Array<readonly [string, number, number]> = []
283
- for (const n of this.nodes.values()) {
284
- for (const m of n.memberships) {
285
- if (m.team === name) { centers.push([n.id, n.x, n.y] as const); break }
286
- }
287
- }
288
- return { name, rect: { ...rect }, centers }
284
+ return { name, rect: { ...rect } }
289
285
  }
290
286
 
291
- /** Apply a total world-space delta from the drag origin to rect + members. */
287
+ /** Apply a total world-space delta from the drag origin to the rect ONLY. */
292
288
  applyFrameDrag(snap: FrameDragSnapshot, dx: number, dy: number): void {
293
289
  const rect = this.frames.get(snap.name)
294
290
  if (rect === undefined) return
295
291
  rect.x = snap.rect.x + dx
296
292
  rect.y = snap.rect.y + dy
297
- for (const [id, cx, cy] of snap.centers) {
298
- const n = this.nodes.get(id)
299
- if (n === undefined) continue
300
- n.x = cx + dx
301
- n.y = cy + dy
302
- }
303
293
  this.bump()
304
294
  }
305
295
 
306
- /** Nudge (keyboard micro-move) - same math as drag, kept as a named act. */
296
+ /** Nudge (keyboard micro-move): moves the SELECTED CARDS only — frames are never in the card selection, so nudging already honours the owner ruling (a frame always moves only itself). */
307
297
  nudge(ids: ReadonlyArray<string>, dx: number, dy: number): void { this.dragNodes(ids, dx, dy) }
308
298
 
309
299
  /** Set selection: nodes whose card rect intersects the world-space marquee. */
@@ -338,6 +328,7 @@ export class WorldModel {
338
328
  }
339
329
  existing.label = n.label
340
330
  existing.name = n.name
331
+ existing.description = n.description
341
332
  existing.live = n.live
342
333
  existing.memberships = n.memberships
343
334
  this.bump()
@@ -479,6 +470,7 @@ export class WorldModel {
479
470
  label: s.label,
480
471
  team: s.team,
481
472
  name: s.name,
473
+ description: s.description,
482
474
  live: s.live !== false,
483
475
  memberships: memberships.get(s.id) ?? [],
484
476
  })
package/package.json CHANGED
@@ -1,214 +1,216 @@
1
- {
2
- "name": "@nelsonlongxiang/dsh-open-a2a-net",
3
- "version": "0.6.28",
4
- "description": "Open A2A network plugin for DeepSeek Harness: signed agent cards, decentralized peer/zone discovery, direct routing model tools, and joinable session nodes with a sidebar control",
5
- "type": "module",
6
- "main": "lib/index.js",
7
- "types": "lib/types/index.d.ts",
8
- "exports": {
9
- ".": {
10
- "types": "./lib/types/index.d.ts",
11
- "default": "./lib/index.js"
12
- },
13
- "./invariant": {
14
- "types": "./lib/types/invariant.d.ts",
15
- "default": "./lib/invariant.js"
16
- },
17
- "./client": {
18
- "types": "./lib/types/client/index.d.ts",
19
- "default": "./lib/client.js"
20
- },
21
- "./card": {
22
- "types": "./lib/types/card.d.ts",
23
- "default": "./lib/card.js"
24
- },
25
- "./receipt": {
26
- "types": "./lib/types/receipt.d.ts",
27
- "default": "./lib/receipt.js"
28
- },
29
- "./transport-caps": {
30
- "types": "./lib/types/transport-caps.d.ts",
31
- "default": "./lib/transport-caps.js"
32
- },
33
- "./a2a-client": {
34
- "types": "./lib/types/a2a-client.d.ts",
35
- "default": "./lib/a2a-client.js"
36
- },
37
- "./cordis.patch.yml": "./cordis.patch.yml",
38
- "./package.json": "./package.json"
39
- },
40
- "files": [
41
- "lib",
42
- "cli",
43
- "assets/nexusDist",
44
- "assets/stageDist",
45
- "images",
46
- "README_zh.md",
47
- "cordis.patch.yml",
48
- "README.md",
49
- "nexus-stage/src",
50
- "nexus-stage/scripts",
51
- "nexus-stage/package.json",
52
- "nexus-stage/package-lock.json",
53
- "nexus-stage/tsconfig.json",
54
- "nexus-stage/vite.config.ts"
55
- ],
56
- "bin": {
57
- "a2a-net": "cli/a2a.mjs"
58
- },
59
- "engines": {
60
- "pnpm": ">=11.24 <12"
61
- },
62
- "dsh": {
63
- "bundle": {
64
- "patch": "./cordis.patch.yml"
65
- },
66
- "client": {
67
- "platform": "web",
68
- "inject": [
69
- "@deepseek-ai/dsh-client-runtime",
70
- "@deepseek-ai/dsh-client-locale",
71
- "@deepseek-ai/dsh-client-ui-slots",
72
- "@deepseek-ai/dsh-client-ui-sidebar"
73
- ]
74
- }
75
- },
76
- "peerDependencies": {
77
- "@deepseek-ai/cordis": ">=4.0.1",
78
- "@deepseek-ai/cordis-plugin-loader": ">=1.0.2",
79
- "@deepseek-ai/cordis-plugin-timer": ">=1.1.3",
80
- "@deepseek-ai/dsh-agent": ">=0.1.7-alpha.2",
81
- "@deepseek-ai/dsh-api-session-controller": ">=0.1.7-alpha.2",
82
- "@deepseek-ai/dsh-client-locale": ">=0.1.7-alpha.2",
83
- "@deepseek-ai/dsh-client-runtime": ">=0.1.1-rc.2",
84
- "@deepseek-ai/dsh-client-ui-primitives": ">=0.1.7-alpha.2",
85
- "@deepseek-ai/dsh-client-ui-sidebar": ">=0.1.7-alpha.2",
86
- "@deepseek-ai/dsh-client-ui-slots": ">=0.1.7-alpha.2",
87
- "@deepseek-ai/dsh-home-paths": ">=0.1.7-alpha.2",
88
- "@deepseek-ai/dsh-host-webserver": ">=0.1.7-alpha.2",
89
- "@deepseek-ai/dsh-invariants": ">=0.1.7-alpha.2",
90
- "@deepseek-ai/dsh-llm": ">=0.1.7-alpha.2",
91
- "@deepseek-ai/dsh-session": ">=0.1.7-alpha.2",
92
- "@deepseek-ai/dsh-session-persistence": ">=0.1.7-alpha.2",
93
- "@deepseek-ai/dsh-session-title": ">=0.1.7-alpha.2",
94
- "@deepseek-ai/dsh-tools": ">=0.1.7-alpha.2",
95
- "@deepseek-ai/schemastery": ">=3.18.1",
96
- "react": "^18.2.0"
97
- },
98
- "peerDependenciesMeta": {
99
- "@deepseek-ai/cordis": {
100
- "optional": true
101
- },
102
- "@deepseek-ai/cordis-plugin-loader": {
103
- "optional": true
104
- },
105
- "@deepseek-ai/cordis-plugin-timer": {
106
- "optional": true
107
- },
108
- "@deepseek-ai/dsh-agent": {
109
- "optional": true
110
- },
111
- "@deepseek-ai/dsh-client-locale": {
112
- "optional": true
113
- },
114
- "@deepseek-ai/dsh-client-runtime": {
115
- "optional": true
116
- },
117
- "@deepseek-ai/dsh-client-ui-primitives": {
118
- "optional": true
119
- },
120
- "@deepseek-ai/dsh-client-ui-sidebar": {
121
- "optional": true
122
- },
123
- "@deepseek-ai/dsh-client-ui-slots": {
124
- "optional": true
125
- },
126
- "@deepseek-ai/dsh-api-session-controller": {
127
- "optional": true
128
- },
129
- "@deepseek-ai/dsh-home-paths": {
130
- "optional": true
131
- },
132
- "@deepseek-ai/dsh-host-webserver": {
133
- "optional": true
134
- },
135
- "@deepseek-ai/dsh-invariants": {
136
- "optional": true
137
- },
138
- "@deepseek-ai/dsh-llm": {
139
- "optional": true
140
- },
141
- "@deepseek-ai/dsh-session": {
142
- "optional": true
143
- },
144
- "@deepseek-ai/dsh-session-persistence": {
145
- "optional": true
146
- },
147
- "@deepseek-ai/dsh-session-title": {
148
- "optional": true
149
- },
150
- "@deepseek-ai/dsh-tools": {
151
- "optional": true
152
- },
153
- "@deepseek-ai/schemastery": {
154
- "optional": true
155
- },
156
- "react": {
157
- "optional": true
158
- }
159
- },
160
- "devDependencies": {
161
- "@deepseek-ai/dsh-client-store": "0.2.0-rc.2",
162
- "@deepseek-ai/dsh-client-ui-primitives": "0.2.0-rc.2",
163
- "@deepseek-ai/dsh-scope": "0.0.1-rc.1",
164
- "@deepseek-ai/dsh-system-prompt": "0.1.0-rc.6",
165
- "@deepseek-ai/dsh-util-code-language": "0.1.7-rc.2",
166
- "@deepseek-ai/dsh-util-workspace-path": "0.1.2-alpha.2",
167
- "@shikijs/langs": "^4.5.0",
168
- "@testing-library/react": "^16.3.0",
169
- "@types/node": "^24.13.3",
170
- "@types/react": "~18.3.1",
171
- "@types/react-dom": "^18.3.7",
172
- "anser": "^2.3.5",
173
- "clsx": "^2.1.1",
174
- "diff": "^9.0.0",
175
- "jsdom": "^26.1.0",
176
- "katex": "^0.19.0",
177
- "lightningcss": "^1.33.0",
178
- "mdast-util-from-markdown": "^2.1.0",
179
- "mdast-util-gfm": "^3.1.0",
180
- "mdast-util-math": "^3.0.0",
181
- "micromark-core-commonmark": "^2.0.4",
182
- "micromark-extension-gfm": "^3.0.0",
183
- "micromark-extension-math": "^3.1.0",
184
- "micromark-factory-space": "^2.1.0",
185
- "micromark-util-character": "^2.1.1",
186
- "micromark-util-classify-character": "^2.0.1",
187
- "micromark-util-sanitize-uri": "^2.0.1",
188
- "micromark-util-symbol": "^2.0.1",
189
- "react": "^18.2.0",
190
- "react-dom": "^18.2.0",
191
- "shiki": "^4.5.0",
192
- "simple-icons": "^16.35.0",
193
- "tsdown": "0.22.2",
194
- "typescript": "^5.9.3",
195
- "vitest": "^4.1.8"
196
- },
197
- "license": "MIT",
198
- "repository": {
199
- "type": "git",
200
- "url": "git+https://gitee.com/NelsonLongXiang/dsh-open-a2a-net.git"
201
- },
202
- "scripts": {
203
- "build": "tsc -p tsconfig.json && tsc -p tsconfig.client.json && tsdown && node scripts/copy-skill.mjs",
204
- "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.client.json --noEmit",
205
- "test": "vitest run",
206
- "test:unit": "vitest run tests/unit",
207
- "test:wire": "vitest run tests/wire",
208
- "test:mesh": "vitest run tests/mesh",
209
- "test:live": "vitest run tests/live",
210
- "test:build-layout": "vitest run tests/gates/build-layout.spec.ts",
211
- "verify:nexus": "node scripts/verify-nexus-ci.mjs && npm --prefix nexus-stage run build && npm --prefix nexus-stage run test && git diff --exit-code -- assets/nexusDist/assets && git diff --ignore-cr-at-eol --exit-code -- assets/nexusDist/index.html",
212
- "verify": "pnpm typecheck && pnpm build && pnpm test && pnpm test:build-layout && pnpm verify:nexus"
213
- }
214
- }
1
+ {
2
+ "name": "@nelsonlongxiang/dsh-open-a2a-net",
3
+ "version": "0.6.30",
4
+ "description": "Open A2A network plugin for DeepSeek Harness: signed agent cards, decentralized peer/zone discovery, direct routing model tools, and joinable session nodes with a sidebar control",
5
+ "type": "module",
6
+ "main": "lib/index.js",
7
+ "types": "lib/types/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./lib/types/index.d.ts",
11
+ "default": "./lib/index.js"
12
+ },
13
+ "./invariant": {
14
+ "types": "./lib/types/invariant.d.ts",
15
+ "default": "./lib/invariant.js"
16
+ },
17
+ "./client": {
18
+ "types": "./lib/types/client/index.d.ts",
19
+ "default": "./lib/client.js"
20
+ },
21
+ "./card": {
22
+ "types": "./lib/types/card.d.ts",
23
+ "default": "./lib/card.js"
24
+ },
25
+ "./receipt": {
26
+ "types": "./lib/types/receipt.d.ts",
27
+ "default": "./lib/receipt.js"
28
+ },
29
+ "./transport-caps": {
30
+ "types": "./lib/types/transport-caps.d.ts",
31
+ "default": "./lib/transport-caps.js"
32
+ },
33
+ "./a2a-client": {
34
+ "types": "./lib/types/a2a-client.d.ts",
35
+ "default": "./lib/a2a-client.js"
36
+ },
37
+ "./cordis.patch.yml": "./cordis.patch.yml",
38
+ "./package.json": "./package.json"
39
+ },
40
+ "files": [
41
+ "lib",
42
+ "cli",
43
+ "assets/nexusDist",
44
+ "assets/stageDist",
45
+ "images",
46
+ "README_zh.md",
47
+ "cordis.patch.yml",
48
+ "README.md",
49
+ "nexus-stage/src",
50
+ "nexus-stage/scripts",
51
+ "nexus-stage/package.json",
52
+ "nexus-stage/package-lock.json",
53
+ "nexus-stage/tsconfig.json",
54
+ "nexus-stage/vite.config.ts"
55
+ ],
56
+ "bin": {
57
+ "a2a-net": "cli/a2a.mjs"
58
+ },
59
+ "packageManager": "pnpm@11.28.5",
60
+ "engines": {
61
+ "pnpm": ">=11.24 <12"
62
+ },
63
+ "dsh": {
64
+ "bundle": {
65
+ "patch": "./cordis.patch.yml"
66
+ },
67
+ "client": {
68
+ "platform": "web",
69
+ "inject": [
70
+ "@deepseek-ai/dsh-client-runtime",
71
+ "@deepseek-ai/dsh-client-locale",
72
+ "@deepseek-ai/dsh-client-ui-slots",
73
+ "@deepseek-ai/dsh-client-ui-sidebar"
74
+ ]
75
+ }
76
+ },
77
+ "scripts": {
78
+ "prepare": "pnpm build",
79
+ "build": "tsc -p tsconfig.json && tsc -p tsconfig.client.json && tsdown && node scripts/copy-skill.mjs",
80
+ "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.client.json --noEmit",
81
+ "test": "vitest run",
82
+ "test:unit": "vitest run tests/unit",
83
+ "test:wire": "vitest run tests/wire",
84
+ "test:mesh": "vitest run tests/mesh",
85
+ "test:live": "vitest run tests/live",
86
+ "test:build-layout": "vitest run tests/gates/build-layout.spec.ts",
87
+ "verify:nexus": "node scripts/verify-nexus-ci.mjs && npm --prefix nexus-stage run build && npm --prefix nexus-stage run test && git diff --exit-code -- assets/nexusDist/assets && git diff --ignore-cr-at-eol --exit-code -- assets/nexusDist/index.html",
88
+ "verify": "pnpm typecheck && pnpm build && pnpm test && pnpm test:build-layout && pnpm verify:nexus"
89
+ },
90
+ "peerDependencies": {
91
+ "@deepseek-ai/cordis": ">=4.0.1",
92
+ "@deepseek-ai/cordis-plugin-loader": ">=1.0.2",
93
+ "@deepseek-ai/cordis-plugin-timer": ">=1.1.3",
94
+ "@deepseek-ai/dsh-agent": ">=0.1.7-alpha.2",
95
+ "@deepseek-ai/dsh-api-session-controller": ">=0.1.7-alpha.2",
96
+ "@deepseek-ai/dsh-client-locale": ">=0.1.7-alpha.2",
97
+ "@deepseek-ai/dsh-client-runtime": ">=0.1.1-rc.2",
98
+ "@deepseek-ai/dsh-client-ui-primitives": ">=0.1.7-alpha.2",
99
+ "@deepseek-ai/dsh-client-ui-sidebar": ">=0.1.7-alpha.2",
100
+ "@deepseek-ai/dsh-client-ui-slots": ">=0.1.7-alpha.2",
101
+ "@deepseek-ai/dsh-home-paths": ">=0.1.7-alpha.2",
102
+ "@deepseek-ai/dsh-host-webserver": ">=0.1.7-alpha.2",
103
+ "@deepseek-ai/dsh-invariants": ">=0.1.7-alpha.2",
104
+ "@deepseek-ai/dsh-llm": ">=0.1.7-alpha.2",
105
+ "@deepseek-ai/dsh-session": ">=0.1.7-alpha.2",
106
+ "@deepseek-ai/dsh-session-persistence": ">=0.1.7-alpha.2",
107
+ "@deepseek-ai/dsh-session-title": ">=0.1.7-alpha.2",
108
+ "@deepseek-ai/dsh-tools": ">=0.1.7-alpha.2",
109
+ "@deepseek-ai/schemastery": ">=3.18.1",
110
+ "react": "^18.2.0"
111
+ },
112
+ "peerDependenciesMeta": {
113
+ "@deepseek-ai/cordis": {
114
+ "optional": true
115
+ },
116
+ "@deepseek-ai/cordis-plugin-loader": {
117
+ "optional": true
118
+ },
119
+ "@deepseek-ai/cordis-plugin-timer": {
120
+ "optional": true
121
+ },
122
+ "@deepseek-ai/dsh-agent": {
123
+ "optional": true
124
+ },
125
+ "@deepseek-ai/dsh-client-locale": {
126
+ "optional": true
127
+ },
128
+ "@deepseek-ai/dsh-client-runtime": {
129
+ "optional": true
130
+ },
131
+ "@deepseek-ai/dsh-client-ui-primitives": {
132
+ "optional": true
133
+ },
134
+ "@deepseek-ai/dsh-client-ui-sidebar": {
135
+ "optional": true
136
+ },
137
+ "@deepseek-ai/dsh-client-ui-slots": {
138
+ "optional": true
139
+ },
140
+ "@deepseek-ai/dsh-api-session-controller": {
141
+ "optional": true
142
+ },
143
+ "@deepseek-ai/dsh-home-paths": {
144
+ "optional": true
145
+ },
146
+ "@deepseek-ai/dsh-host-webserver": {
147
+ "optional": true
148
+ },
149
+ "@deepseek-ai/dsh-invariants": {
150
+ "optional": true
151
+ },
152
+ "@deepseek-ai/dsh-llm": {
153
+ "optional": true
154
+ },
155
+ "@deepseek-ai/dsh-session": {
156
+ "optional": true
157
+ },
158
+ "@deepseek-ai/dsh-session-persistence": {
159
+ "optional": true
160
+ },
161
+ "@deepseek-ai/dsh-session-title": {
162
+ "optional": true
163
+ },
164
+ "@deepseek-ai/dsh-tools": {
165
+ "optional": true
166
+ },
167
+ "@deepseek-ai/schemastery": {
168
+ "optional": true
169
+ },
170
+ "react": {
171
+ "optional": true
172
+ }
173
+ },
174
+ "devDependencies": {
175
+ "@deepseek-ai/dsh-client-store": "0.2.0-rc.2",
176
+ "@deepseek-ai/dsh-client-ui-primitives": "0.2.0-rc.2",
177
+ "@deepseek-ai/dsh-scope": "0.0.1-rc.1",
178
+ "@deepseek-ai/dsh-system-prompt": "0.1.0-rc.6",
179
+ "@deepseek-ai/dsh-util-code-language": "0.1.7-rc.2",
180
+ "@deepseek-ai/dsh-util-workspace-path": "0.1.2-alpha.2",
181
+ "@shikijs/langs": "^4.5.0",
182
+ "@testing-library/react": "^16.3.0",
183
+ "@types/node": "^24.13.3",
184
+ "@types/react": "~18.3.1",
185
+ "@types/react-dom": "^18.3.7",
186
+ "anser": "^2.3.5",
187
+ "clsx": "^2.1.1",
188
+ "diff": "^9.0.0",
189
+ "jsdom": "^26.1.0",
190
+ "katex": "^0.19.0",
191
+ "lightningcss": "^1.33.0",
192
+ "mdast-util-from-markdown": "^2.1.0",
193
+ "mdast-util-gfm": "^3.1.0",
194
+ "mdast-util-math": "^3.0.0",
195
+ "micromark-core-commonmark": "^2.0.4",
196
+ "micromark-extension-gfm": "^3.0.0",
197
+ "micromark-extension-math": "^3.1.0",
198
+ "micromark-factory-space": "^2.1.0",
199
+ "micromark-util-character": "^2.1.1",
200
+ "micromark-util-classify-character": "^2.0.1",
201
+ "micromark-util-sanitize-uri": "^2.0.1",
202
+ "micromark-util-symbol": "^2.0.1",
203
+ "react": "^18.2.0",
204
+ "react-dom": "^18.2.0",
205
+ "shiki": "^4.5.0",
206
+ "simple-icons": "^16.35.0",
207
+ "tsdown": "0.22.2",
208
+ "typescript": "^5.9.3",
209
+ "vitest": "^4.1.8"
210
+ },
211
+ "license": "MIT",
212
+ "repository": {
213
+ "type": "git",
214
+ "url": "git+https://gitee.com/NelsonLongXiang/dsh-open-a2a-net.git"
215
+ }
216
+ }