@anweat/dsh-browser 0.2.2 → 0.2.3

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.
package/cordis.patch.yml CHANGED
@@ -3,7 +3,7 @@
3
3
  # dsh plugin --profile <name> add @anweat/dsh-browser
4
4
  # then boot the profile (the web profile has HMR disabled, so a restart applies it).
5
5
  #
6
- # Supports DSH 0.2.0-rc.2 and 0.2.1-rc.2 to rc.4 (see the peer ranges in package.json).
6
+ # Supports DSH 0.2.0-rc.2, 0.2.1-rc.2 to rc.5 and 0.2.2-rc.1 (the 0.2.2 line; see the peer ranges in package.json).
7
7
  #
8
8
  # Login state: prefer named `authProfiles` with explicit `allowedDomains` (see
9
9
  # README). `storageStatePath` remains as a legacy global fallback.
@@ -45,6 +45,25 @@ function expectedRevision(payload) {
45
45
  throw new Error('expectedRevision must be an integer');
46
46
  return value;
47
47
  }
48
+ /**
49
+ * The Context to read the Host's `connection` service through.
50
+ *
51
+ * `connection.rpc.handle` mounts the Web route with `owner.webServer.register(route)`, where `owner` is the Context
52
+ * the `rpc` getter captured (`this.ctx`) when the service was read. On cordis 4.0.x any Context could do that. On
53
+ * cordis 4.1 (DSH 0.2.2) the service getter resolves `webServer` against the Connection plugin's own definition site,
54
+ * whose `inject` list does not include `webServer`, so `rpc.handle` throws `cannot get property "webServer" without
55
+ * inject` (DSH master still has this code). The throw happened inside an inject callback and nothing reported it: the
56
+ * channel was never mounted and every `/dsh-browser-assets/*` call from the settings card came back HTTP 405.
57
+ * Reading `connection` through a derived Context that carries the already-injected `webServer` as its own property
58
+ * makes `owner.webServer` resolve there. `Context.extend` is public API, no private Host member is involved, and the
59
+ * route, the envelope, the authentication fence and the Peer scope are the Host's own. The technique is from
60
+ * anweat/dsh-browser#49 (@shuaigekda); it is used on every host, 4.0.x included, so there is one code path.
61
+ * Replacing the root Context with plain `connectionCtx` is not enough.
62
+ */
63
+ function connectionWithWebServer(connectionCtx) {
64
+ const withWebServer = connectionCtx.extend({ webServer: connectionCtx.get('webServer') });
65
+ return withWebServer.connection;
66
+ }
48
67
  /** `promptsStatus` answers the settings card's "prompt text" section: the overrides in force, diagnostics and the L0 estimate. */
49
68
  export function registerAutomationAssetRpc(ctx, store, service, promptsStatus) {
50
69
  ctx.inject(['connection', 'webServer'], (connectionCtx) => {
@@ -53,9 +72,8 @@ export function registerAutomationAssetRpc(ctx, store, service, promptsStatus) {
53
72
  // transport owns envelope decoding, the admission/authentication fence, the
54
73
  // cancellation signal, and the Peer scope the handler receives — none of
55
74
  // which a manual route can reconstruct.
56
- // The dedicated registrar mounts its Web route through the Context that
57
- // reads it. The root Context owns webServer; the plugin effect owns cleanup.
58
- const connection = connectionCtx.root.connection;
75
+ // The registrar mounts its Web route through the Context that read it (see connectionWithWebServer);
76
+ // the plugin effect owns cleanup.
59
77
  const handler = async (endpoint, rawPayload) => {
60
78
  try {
61
79
  // The transport hands the handler the endpoint relative to the channel,
@@ -163,7 +181,19 @@ export function registerAutomationAssetRpc(ctx, store, service, promptsStatus) {
163
181
  return { ok: false, error: { code: 'bad-request', message: stripAnsi(String(error instanceof Error ? error.message : error)).slice(0, 500), details } };
164
182
  }
165
183
  };
166
- connectionCtx.effect(() => connection.rpc.handle(CHANNEL, handler), 'dsh-browser: automation asset RPC channel');
184
+ connectionCtx.effect(() => {
185
+ try {
186
+ return connectionWithWebServer(connectionCtx).rpc.handle(CHANNEL, handler);
187
+ }
188
+ catch (error) {
189
+ // An inject callback's throw is not reported by the Host (this is how the cordis 4.1 failure stayed invisible),
190
+ // so say it ourselves: the card still renders, but every `/dsh-browser-assets/*` request is HTTP 405.
191
+ const message = `dsh-browser: settings-card RPC channel ${CHANNEL} was not mounted (${stripAnsi(String(error instanceof Error ? error.message : error))}); the card's assets, prompts, policy and runtime panels will not load`;
192
+ // console, not ctx.logger: the Host's logger was observed dropping this at its default level (nothing reached the log).
193
+ console.warn(message);
194
+ return () => { };
195
+ }
196
+ }, 'dsh-browser: automation asset RPC channel');
167
197
  });
168
198
  }
169
199
  //# sourceMappingURL=automation-assets-rpc.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"automation-assets-rpc.js","sourceRoot":"","sources":["../src/automation-assets-rpc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"automation-assets-rpc.js","sourceRoot":"","sources":["../src/automation-assets-rpc.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anweat/dsh-browser",
3
- "version": "0.2.2",
3
+ "version": "0.2.3",
4
4
  "description": "Browser runtime plugin for DeepSeek Harness (scoped @anweat) — ships Playwright and Patchright, uses your system Chrome / Edge (or a Playwright Chromium you install), optionally drives OpenCLI site adapters, exposes a `browser` service and interactive browser tools.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -23,6 +23,8 @@
23
23
  "assets",
24
24
  "cordis.patch.yml",
25
25
  "README.md",
26
+ "README.en.md",
27
+ "CHANGELOG.md",
26
28
  "AUDIT.md",
27
29
  "scripts",
28
30
  "LICENSE"
@@ -31,17 +33,17 @@
31
33
  "node": "^22.19 || >=24"
32
34
  },
33
35
  "peerDependencies": {
34
- "@deepseek-ai/cordis": "~4.0.4",
35
- "@deepseek-ai/dsh-tools": ">=0.2.0-rc.2 <0.2.1-0 || >=0.2.1-rc.2 <0.2.2-0",
36
- "@deepseek-ai/dsh-client-connection": ">=0.2.0-rc.2 <0.2.1-0 || >=0.2.1-rc.2 <0.2.2-0",
37
- "@deepseek-ai/dsh-client-locale": ">=0.2.0-rc.2 <0.2.1-0 || >=0.2.1-rc.2 <0.2.2-0",
38
- "@deepseek-ai/dsh-client-store": ">=0.2.0-rc.2 <0.2.1-0 || >=0.2.1-rc.2 <0.2.2-0",
39
- "@deepseek-ai/dsh-client-ui-renderer": ">=0.2.0-rc.2 <0.2.1-0 || >=0.2.1-rc.2 <0.2.2-0",
40
- "@deepseek-ai/dsh-client-ui-settings": ">=0.2.0-rc.2 <0.2.1-0 || >=0.2.1-rc.2 <0.2.2-0",
41
- "@deepseek-ai/dsh-client-ui-primitives": ">=0.2.0-rc.2 <0.2.1-0 || >=0.2.1-rc.2 <0.2.2-0",
42
- "@deepseek-ai/dsh-client-ui-plugin-manager": ">=0.2.0-rc.2 <0.2.1-0 || >=0.2.1-rc.2 <0.2.2-0",
43
- "@deepseek-ai/dsh-client-ui-slots": ">=0.2.0-rc.2 <0.2.1-0 || >=0.2.1-rc.2 <0.2.2-0",
44
- "@deepseek-ai/dsh-settings": ">=0.2.0-rc.2 <0.2.1-0 || >=0.2.1-rc.2 <0.2.2-0",
36
+ "@deepseek-ai/cordis": "~4.0.4 || ~4.1.0",
37
+ "@deepseek-ai/dsh-tools": ">=0.2.0-rc.2 <0.2.1-0 || >=0.2.1-rc.2 <0.2.2-0 || >=0.2.2-rc.1 <0.2.3-0",
38
+ "@deepseek-ai/dsh-client-connection": ">=0.2.0-rc.2 <0.2.1-0 || >=0.2.1-rc.2 <0.2.2-0 || >=0.2.2-rc.1 <0.2.3-0",
39
+ "@deepseek-ai/dsh-client-locale": ">=0.2.0-rc.2 <0.2.1-0 || >=0.2.1-rc.2 <0.2.2-0 || >=0.2.2-rc.1 <0.2.3-0",
40
+ "@deepseek-ai/dsh-client-store": ">=0.2.0-rc.2 <0.2.1-0 || >=0.2.1-rc.2 <0.2.2-0 || >=0.2.2-rc.1 <0.2.3-0",
41
+ "@deepseek-ai/dsh-client-ui-renderer": ">=0.2.0-rc.2 <0.2.1-0 || >=0.2.1-rc.2 <0.2.2-0 || >=0.2.2-rc.1 <0.2.3-0",
42
+ "@deepseek-ai/dsh-client-ui-settings": ">=0.2.0-rc.2 <0.2.1-0 || >=0.2.1-rc.2 <0.2.2-0 || >=0.2.2-rc.1 <0.2.3-0",
43
+ "@deepseek-ai/dsh-client-ui-primitives": ">=0.2.0-rc.2 <0.2.1-0 || >=0.2.1-rc.2 <0.2.2-0 || >=0.2.2-rc.1 <0.2.3-0",
44
+ "@deepseek-ai/dsh-client-ui-plugin-manager": ">=0.2.0-rc.2 <0.2.1-0 || >=0.2.1-rc.2 <0.2.2-0 || >=0.2.2-rc.1 <0.2.3-0",
45
+ "@deepseek-ai/dsh-client-ui-slots": ">=0.2.0-rc.2 <0.2.1-0 || >=0.2.1-rc.2 <0.2.2-0 || >=0.2.2-rc.1 <0.2.3-0",
46
+ "@deepseek-ai/dsh-settings": ">=0.2.0-rc.2 <0.2.1-0 || >=0.2.1-rc.2 <0.2.2-0 || >=0.2.2-rc.1 <0.2.3-0",
45
47
  "@deepseek-ai/schemastery": ">=3.18.2 <4",
46
48
  "@jackwener/opencli": ">=1.8.0 <2"
47
49
  },
@@ -91,22 +93,22 @@
91
93
  "playwright": "^1.60.0"
92
94
  },
93
95
  "devDependencies": {
94
- "@deepseek-ai/cordis": "4.0.5",
95
- "@deepseek-ai/dsh-agent": "0.2.1-rc.3",
96
- "@deepseek-ai/dsh-llm": "0.2.1-rc.3",
97
- "@deepseek-ai/dsh-scope": "0.2.1-rc.3",
98
- "@deepseek-ai/dsh-session": "0.2.1-rc.3",
99
- "@deepseek-ai/dsh-session-projection": "0.2.1-rc.3",
100
- "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.3",
101
- "@deepseek-ai/dsh-user-approval": "0.2.1-rc.3",
102
- "@deepseek-ai/dsh-tools": "0.2.1-rc.3",
103
- "@deepseek-ai/dsh-client-connection": "0.2.1-rc.3",
104
- "@deepseek-ai/dsh-client-locale": "0.2.1-rc.3",
105
- "@deepseek-ai/dsh-client-store": "0.2.1-rc.3",
106
- "@deepseek-ai/dsh-client-ui-renderer": "0.2.1-rc.3",
107
- "@deepseek-ai/dsh-client-ui-settings": "0.2.1-rc.3",
108
- "@deepseek-ai/dsh-client-ui-slots": "0.2.1-rc.3",
109
- "@deepseek-ai/dsh-settings": "0.2.1-rc.3",
96
+ "@deepseek-ai/cordis": "4.1.0",
97
+ "@deepseek-ai/dsh-agent": "0.2.2-rc.1",
98
+ "@deepseek-ai/dsh-llm": "0.2.2-rc.1",
99
+ "@deepseek-ai/dsh-scope": "0.2.2-rc.1",
100
+ "@deepseek-ai/dsh-session": "0.2.2-rc.1",
101
+ "@deepseek-ai/dsh-session-projection": "0.2.2-rc.1",
102
+ "@deepseek-ai/dsh-system-prompt": "0.2.2-rc.1",
103
+ "@deepseek-ai/dsh-user-approval": "0.2.2-rc.1",
104
+ "@deepseek-ai/dsh-tools": "0.2.2-rc.1",
105
+ "@deepseek-ai/dsh-client-connection": "0.2.2-rc.1",
106
+ "@deepseek-ai/dsh-client-locale": "0.2.2-rc.1",
107
+ "@deepseek-ai/dsh-client-store": "0.2.2-rc.1",
108
+ "@deepseek-ai/dsh-client-ui-renderer": "0.2.2-rc.1",
109
+ "@deepseek-ai/dsh-client-ui-settings": "0.2.2-rc.1",
110
+ "@deepseek-ai/dsh-client-ui-slots": "0.2.2-rc.1",
111
+ "@deepseek-ai/dsh-settings": "0.2.2-rc.1",
110
112
  "@deepseek-ai/schemastery": "3.18.5",
111
113
  "@types/react": "~18.3.1",
112
114
  "@types/react-dom": "~18.3.1",
@@ -115,10 +117,10 @@
115
117
  "tsdown": "^0.22.2",
116
118
  "typescript": "^5.6.0",
117
119
  "@types/node": "^22.0.0",
118
- "@deepseek-ai/dsh-client-ui-primitives": "0.2.1-rc.3",
119
- "@deepseek-ai/dsh-client-ui-plugin-manager": "0.2.1-rc.3",
120
+ "@deepseek-ai/dsh-client-ui-primitives": "0.2.2-rc.1",
121
+ "@deepseek-ai/dsh-client-ui-plugin-manager": "0.2.2-rc.1",
120
122
  "clsx": "^2.0.0",
121
- "@deepseek-ai/dsh-working-directory": "0.2.1-rc.3",
123
+ "@deepseek-ai/dsh-working-directory": "0.2.2-rc.1",
122
124
  "@jackwener/opencli": "^1.8.7"
123
125
  },
124
126
  "dsh": {
@@ -156,7 +158,8 @@
156
158
  "measure:tools": "node scripts/measure-tool-surface.mjs",
157
159
  "prompts:dump": "node scripts/dump-prompts.mjs",
158
160
  "test:client-bundle": "node scripts/check-client-bundle.mjs",
159
- "verify": "pnpm run typecheck && pnpm run test:peers && pnpm run build && pnpm test && pnpm run test:client-bundle",
160
- "test:peers": "node test/compat/check-peer-ranges.js"
161
+ "verify": "pnpm run typecheck && pnpm run test:peers && pnpm run build && pnpm test && pnpm run test:client-bundle && pnpm run docs:check",
162
+ "test:peers": "node test/compat/check-peer-ranges.js",
163
+ "docs:check": "node scripts/check-docs-links.mjs"
161
164
  }
162
165
  }
@@ -0,0 +1,115 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Documentation checks (no dependencies):
4
+ * 1. every relative Markdown link, and its #anchor, points at something that exists;
5
+ * 2. every absolute link into this repository's master branch
6
+ * (https://github.com/anweat/dsh-browser/blob|tree/master/<path>) points at a path that exists;
7
+ * 3. README.md and README.en.md have the same number of second-level headings.
8
+ *
9
+ * Anchors follow GitHub's slug rules (lower case, punctuation dropped, spaces to hyphens, -1 / -2 for repeats).
10
+ * Links inside fenced code blocks and inline code are ignored. node_modules, lib and .git are not scanned.
11
+ * Usage: node scripts/check-docs-links.mjs
12
+ */
13
+
14
+ import fs from 'node:fs'
15
+ import path from 'node:path'
16
+ import { fileURLToPath } from 'node:url'
17
+
18
+ const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..')
19
+ const REPO_PREFIX = /^https:\/\/github\.com\/anweat\/dsh-browser\/(?:blob|tree)\/master\/([^#?]*)/
20
+ const SKIP_DIRS = new Set(['node_modules', 'lib', '.git', 'dist'])
21
+
22
+ function walk(dir, out = []) {
23
+ for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
24
+ if (SKIP_DIRS.has(entry.name)) continue
25
+ const full = path.join(dir, entry.name)
26
+ if (entry.isDirectory()) walk(full, out)
27
+ else if (entry.name.endsWith('.md')) out.push(full)
28
+ }
29
+ return out
30
+ }
31
+
32
+ /** Lines of a Markdown file outside fenced code blocks, with their 1-based numbers. */
33
+ function proseLines(text) {
34
+ const lines = []
35
+ let fence = null
36
+ text.split('\n').forEach((line, index) => {
37
+ const marker = /^\s*(```+|~~~+)/.exec(line)
38
+ if (marker) {
39
+ if (fence === null) fence = marker[1][0]
40
+ else if (marker[1][0] === fence) fence = null
41
+ return
42
+ }
43
+ if (fence === null) lines.push({ line, number: index + 1 })
44
+ })
45
+ return lines
46
+ }
47
+
48
+ const stripInlineCode = line => line.replace(/`[^`]*`/g, match => ' '.repeat(match.length))
49
+
50
+ function slugify(heading) {
51
+ return heading
52
+ .replace(/\[([^\]]*)\]\([^)]*\)/g, '$1')
53
+ .replace(/[`*_~]/g, match => (match === '_' ? '_' : ''))
54
+ .trim()
55
+ .toLowerCase()
56
+ .replace(/[^\p{L}\p{M}\p{N}\p{Pc}\- ]/gu, '')
57
+ .replace(/ /g, '-')
58
+ }
59
+
60
+ const anchorCache = new Map()
61
+ function anchorsOf(file) {
62
+ if (anchorCache.has(file)) return anchorCache.get(file)
63
+ const seen = new Map()
64
+ const anchors = new Set()
65
+ for (const { line } of proseLines(fs.readFileSync(file, 'utf8'))) {
66
+ const match = /^(#{1,6})\s+(.*?)\s*#*\s*$/.exec(line)
67
+ if (!match) continue
68
+ const base = slugify(match[2])
69
+ const count = seen.get(base) ?? 0
70
+ seen.set(base, count + 1)
71
+ anchors.add(count === 0 ? base : `${base}-${count}`)
72
+ }
73
+ anchorCache.set(file, anchors)
74
+ return anchors
75
+ }
76
+
77
+ const problems = []
78
+ const rel = file => path.relative(root, file)
79
+
80
+ for (const file of walk(root)) {
81
+ for (const { line, number } of proseLines(fs.readFileSync(file, 'utf8'))) {
82
+ for (const match of stripInlineCode(line).matchAll(/!?\[[^\]]*\]\(([^)\s]+)(?:\s+"[^"]*")?\)/g)) {
83
+ const target = match[1]
84
+ const where = `${rel(file)}:${number}`
85
+ const repo = REPO_PREFIX.exec(target)
86
+ if (repo) {
87
+ const repoPath = decodeURIComponent(repo[1]).replace(/\/$/, '')
88
+ if (repoPath && !fs.existsSync(path.join(root, repoPath))) problems.push(`${where}: ${target} -> ${repoPath} does not exist in the repository`)
89
+ continue
90
+ }
91
+ if (/^[a-z][a-z0-9+.-]*:/i.test(target)) continue
92
+ const [pathPart, anchor] = target.split('#')
93
+ const resolved = pathPart === '' ? file : path.resolve(path.dirname(file), decodeURIComponent(pathPart))
94
+ if (!fs.existsSync(resolved)) { problems.push(`${where}: ${target} -> ${rel(resolved)} does not exist`); continue }
95
+ if (anchor !== undefined && anchor !== '' && resolved.endsWith('.md') && fs.statSync(resolved).isFile()) {
96
+ if (!anchorsOf(resolved).has(decodeURIComponent(anchor).toLowerCase())) problems.push(`${where}: ${target} -> no heading "#${anchor}" in ${rel(resolved)}`)
97
+ }
98
+ }
99
+ }
100
+ }
101
+
102
+ function h2Count(name) {
103
+ const file = path.join(root, name)
104
+ if (!fs.existsSync(file)) { problems.push(`${name} is missing`); return -1 }
105
+ return proseLines(fs.readFileSync(file, 'utf8')).filter(({ line }) => /^## /.test(line)).length
106
+ }
107
+ const zh = h2Count('README.md')
108
+ const en = h2Count('README.en.md')
109
+ if (zh >= 0 && en >= 0 && zh !== en) problems.push(`README.md has ${zh} second-level headings but README.en.md has ${en}`)
110
+
111
+ if (problems.length > 0) {
112
+ console.error(`documentation check failed (${problems.length}):\n` + problems.map(problem => ' ' + problem).join('\n'))
113
+ process.exit(1)
114
+ }
115
+ console.log(`documentation check passed (${walk(root).length} Markdown files, ${zh} second-level headings in each README)`)
@@ -5,7 +5,7 @@
5
5
  // { tools, rootGuide, rootNote, groups, actions, errorHints, skill }
6
6
  //
7
7
  // Copy the output, delete what you want to keep as is, reword the rest, and put it under
8
- // `prompts:` in your profile config (see README "Custom prompt text"). Pasted back unchanged it
8
+ // `prompts:` in your profile config (see docs/guide/prompts.md). Pasted back unchanged it
9
9
  // changes nothing: blank `notes`, `rootNote`, `skill.bodyFile` and `skill.append` mean "none".
10
10
  //
11
11
  // Usage: node scripts/dump-prompts.mjs [--compact]