@anweat/dsh-browser 0.1.14-alpha.2 → 0.1.15-alpha.2
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/AUDIT.md +47 -0
- package/README.md +6 -2
- package/lib/approval-policy.d.ts +1 -1
- package/lib/approval-policy.js +2 -2
- package/lib/approval-policy.js.map +1 -1
- package/lib/auth-profiles.d.ts +1 -0
- package/lib/auth-profiles.js +1 -1
- package/lib/auth-profiles.js.map +1 -1
- package/lib/automation.js +4 -2
- package/lib/automation.js.map +1 -1
- package/lib/browser-service.js +25 -2
- package/lib/browser-service.js.map +1 -1
- package/lib/client/SettingsCard.js +1 -1
- package/lib/client/SettingsCard.js.map +1 -1
- package/lib/client/form.d.ts +1 -1
- package/lib/client/form.js +29 -0
- package/lib/client/form.js.map +1 -1
- package/lib/client/locales.d.ts +4 -0
- package/lib/client/locales.js +4 -0
- package/lib/client/locales.js.map +1 -1
- package/lib/client.js +41 -1
- package/lib/client.js.map +1 -1
- package/lib/config.d.ts +6 -0
- package/lib/config.js +4 -0
- package/lib/config.js.map +1 -1
- package/lib/deps.js +38 -3
- package/lib/deps.js.map +1 -1
- package/lib/index.js +4 -1
- package/lib/index.js.map +1 -1
- package/package.json +3 -2
- package/scripts/check-host-rpc.mjs +46 -0
package/lib/index.js
CHANGED
|
@@ -39,7 +39,10 @@ export function apply(ctx, config) {
|
|
|
39
39
|
const downstream = await next();
|
|
40
40
|
if (downstream.kind !== 'allow')
|
|
41
41
|
return downstream;
|
|
42
|
-
|
|
42
|
+
const assetId = exec.arguments?.id;
|
|
43
|
+
const assetKind = exec.name === 'browser_automation_run' && typeof assetId === 'string'
|
|
44
|
+
? assets.get(assetId)?.kind : undefined;
|
|
45
|
+
return browserPolicyDecision(exec.name, exec.arguments, resolved.automationMode, assetKind);
|
|
43
46
|
});
|
|
44
47
|
// Provide the `browser` service so consumers (web-search-pro) can inject it.
|
|
45
48
|
// ctx.provide is scoped to this plugin's fiber; the browser instance itself
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAG5B,OAAO,EAAE,MAAM,EAAE,aAAa,EAAuB,MAAM,aAAa,CAAA;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAA;AAEvE,MAAM,CAAC,MAAM,IAAI,GAAG,aAAa,CAAA;AACjC,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;AAE3C,OAAO,EAAE,MAAM,EAAE,CAAA;AAOjB,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAElE,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAEpH,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAE5I,MAAM,UAAU,KAAK,CAAC,GAAY,EAAE,MAAc;IAChD,MAAM,QAAQ,GAAmB,aAAa,CAAC,MAAM,CAAC,CAAA;IACtD,MAAM,QAAQ,GAAG,GAAG,CAAC,QAMpB,CAAA;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE;QACjD,IAAI,EAAE,QAAQ;QACd,wEAAwE;QACxE,yEAAyE;QACzE,OAAO,EAAE,SAAS;KACnB,CAAC,CAAA;IACF,MAAM,QAAQ,GAAmB,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAA;IAC3D,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAEvD,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAA;IAC5C,MAAM,MAAM,GAAG,IAAI,oBAAoB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAA;IAElE,yEAAyE;IACzE,yEAAyE;IACzE,GAAG,CAAC,EAAE,CAAC,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QAC/C,MAAM,UAAU,GAAG,MAAM,IAAI,EAAE,CAAA;QAC/B,IAAI,UAAU,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO,UAAU,CAAA;QAClD,OAAO,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.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.1.
|
|
3
|
+
"version": "0.1.15-alpha.2",
|
|
4
4
|
"description": "Self-contained browser runtime plugin for DeepSeek Harness (scoped @anweat) — bundles Playwright (chromium) and OpenCLI as plugin-local dependencies (with global-reuse fallback), exposes a `browser` service and interactive browser tools.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
"lib",
|
|
23
23
|
"cordis.patch.yml",
|
|
24
24
|
"README.md",
|
|
25
|
+
"AUDIT.md",
|
|
25
26
|
"scripts",
|
|
26
27
|
"LICENSE"
|
|
27
28
|
],
|
|
@@ -77,7 +78,7 @@
|
|
|
77
78
|
}
|
|
78
79
|
},
|
|
79
80
|
"dependencies": {
|
|
80
|
-
"@jackwener/opencli": "^1.8.
|
|
81
|
+
"@jackwener/opencli": "^1.8.7",
|
|
81
82
|
"patchright": "^1.62.1",
|
|
82
83
|
"playwright": "^1.60.0"
|
|
83
84
|
},
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/** Exercise compiled asset routes on an exact installed DSH host's real auth/HTTP stack. */
|
|
2
|
+
import assert from 'node:assert/strict'
|
|
3
|
+
import { createRequire } from 'node:module'
|
|
4
|
+
import { resolve } from 'node:path'
|
|
5
|
+
import { pathToFileURL } from 'node:url'
|
|
6
|
+
import { registerAutomationAssetRpc } from '../lib/automation-assets-rpc.js'
|
|
7
|
+
|
|
8
|
+
const require = createRequire(resolve(process.argv[2], 'package.json'))
|
|
9
|
+
const load = name => import(pathToFileURL(require.resolve(name)).href)
|
|
10
|
+
const { Context } = await load('@deepseek-ai/cordis')
|
|
11
|
+
const connection = await load('@deepseek-ai/dsh-client-connection')
|
|
12
|
+
const { default: WebServer } = await load('@deepseek-ai/dsh-host-webserver')
|
|
13
|
+
const root = new Context()
|
|
14
|
+
let credentialRecord
|
|
15
|
+
try {
|
|
16
|
+
root.provide('credentials', {
|
|
17
|
+
readRecord: async () => credentialRecord,
|
|
18
|
+
modifyRecord: async (_key, fn) => (credentialRecord = await fn(credentialRecord)),
|
|
19
|
+
deleteRecord: async () => { credentialRecord = undefined },
|
|
20
|
+
})
|
|
21
|
+
await root.plugin(connection, { trustedHosts: [] })
|
|
22
|
+
const fiber = await root.plugin({
|
|
23
|
+
name: 'asset-rpc-probe',
|
|
24
|
+
apply(ctx) { registerAutomationAssetRpc(ctx, { snapshot: () => ({ assets: [] }) }, {}) },
|
|
25
|
+
})
|
|
26
|
+
await root.plugin(WebServer, { host: '127.0.0.1', port: 0 })
|
|
27
|
+
const transport = root.get('connection'), port = root.get('webServer').port
|
|
28
|
+
const base = `http://127.0.0.1:${port}`
|
|
29
|
+
const headers = { 'content-type': 'application/json', connection: 'close' }
|
|
30
|
+
transport.authorizeIndex({ method: 'GET', url: transport.authenticatedUrl(base + '/'), headers: { host: `127.0.0.1:${port}` } }, {
|
|
31
|
+
writeHead(_status, values) { if (values['set-cookie']) headers.cookie = values['set-cookie'].split(';')[0] }, end() {},
|
|
32
|
+
})
|
|
33
|
+
assert.ok(headers.cookie)
|
|
34
|
+
const request = (signed, method = 'dsh-browser-assets/snapshot') => fetch(base + '/api/' + method, {
|
|
35
|
+
method: 'POST', headers: signed ? headers : { 'content-type': 'application/json', connection: 'close' },
|
|
36
|
+
body: JSON.stringify({ type: 'client-request', rpcId: 'probe', method, payload: {} }),
|
|
37
|
+
})
|
|
38
|
+
assert.equal((await request(false)).status, 401)
|
|
39
|
+
const response = await request(true)
|
|
40
|
+
assert.equal(response.status, 200)
|
|
41
|
+
assert.deepEqual((await response.json()).result, { ok: true, value: { assets: [] } })
|
|
42
|
+
assert.equal((await request(true, 'dsh-browser-assets/unknown')).status, 404)
|
|
43
|
+
await fiber.dispose()
|
|
44
|
+
assert.equal((await request(true)).status, 404)
|
|
45
|
+
console.log('PASS: compiled asset routes; Connection before WebServer; authenticated access, unsigned rejection, exact routing, disposal')
|
|
46
|
+
} finally { await root.fiber.dispose() }
|