dsh-ego-webqa 0.0.0-stage → 0.1.0
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/LICENSE +21 -0
- package/README.md +159 -2
- package/cordis.patch.yml +23 -0
- package/icon.svg +7 -0
- package/package.json +52 -4
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Roy
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,160 @@
|
|
|
1
|
-
#
|
|
1
|
+
# dsh-ego-webqa
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
DSH bundle for [ego-webqa](https://github.com/ROY32172310/qa). It exposes the
|
|
4
|
+
existing deterministic web-delivery audit as a native DSH MCP tool without
|
|
5
|
+
duplicating any browser checks in TypeScript.
|
|
6
|
+
|
|
7
|
+
After installation, the model sees:
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
mcp__ego_webqa__audit_web_page
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
The tool checks a page across the mobile matrix, returns the existing
|
|
14
|
+
`agent_summary.json` contract, and retains screenshots plus `report.json` as
|
|
15
|
+
evidence.
|
|
16
|
+
|
|
17
|
+
## Why a bundle instead of another tool implementation
|
|
18
|
+
|
|
19
|
+
DSH already ships `@deepseek-ai/dsh-mcp-client`. This package contributes one
|
|
20
|
+
declarative Cordis patch row that starts:
|
|
21
|
+
|
|
22
|
+
```text
|
|
23
|
+
uvx ego-webqa@0.4.2 mcp
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
DSH supervises that process, discovers `audit_web_page`, applies normal tool
|
|
27
|
+
approval and cancellation, and reconnects it if the process exits. The Python
|
|
28
|
+
package remains the single source of truth for detectors, thresholds, report
|
|
29
|
+
schemas, and release compatibility.
|
|
30
|
+
|
|
31
|
+
## Requirements
|
|
32
|
+
|
|
33
|
+
- DSH `>=0.1.5-rc.1 <0.3.0`
|
|
34
|
+
- `uv` / `uvx` available on `PATH`
|
|
35
|
+
- A Playwright Chromium browser available to the `uvx` environment
|
|
36
|
+
|
|
37
|
+
Install Chromium once for the pinned ego-webqa version:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
uvx --from ego-webqa@0.4.2 playwright install chromium
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
On Linux CI hosts without a desktop browser, use:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
uvx --from ego-webqa@0.4.2 playwright install --with-deps chromium
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Install
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
dsh plugin --profile default add dsh-ego-webqa
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
DSH 0.2.1+ can also discover it from the published format-1 market index:
|
|
56
|
+
|
|
57
|
+
```text
|
|
58
|
+
https://roy32172310.github.io/dsh-ego-webqa/index.json
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
The index is validated with `@deepseek-ai/dsh-plugin-market-index` in CI.
|
|
62
|
+
|
|
63
|
+
Inspect the resulting layer without starting DSH:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
dsh --profile default --dump-config
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Start DSH normally or explicitly select the profile:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
dsh --profile default
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
The first MCP launch may take longer while `uvx` creates its isolated Python
|
|
76
|
+
environment. Later launches reuse that cache.
|
|
77
|
+
|
|
78
|
+
## Use
|
|
79
|
+
|
|
80
|
+
Ask DSH to audit the deployed URL before delivery, for example:
|
|
81
|
+
|
|
82
|
+
```text
|
|
83
|
+
Audit https://preview.example before you call the page complete.
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
The MCP tool accepts the URL and the existing bounded audit options. Its
|
|
87
|
+
structured result includes:
|
|
88
|
+
|
|
89
|
+
- delivery status (`pass`, `warn`, or `fail`);
|
|
90
|
+
- aggregated blocking and warning findings;
|
|
91
|
+
- suggested fixes and reproduction commands;
|
|
92
|
+
- paths to `agent_summary.json`, `report.json`, and screenshots.
|
|
93
|
+
|
|
94
|
+
A blocking page defect is a successful tool execution with a `fail` report.
|
|
95
|
+
An execution error means the browser, CLI, or MCP process could not complete,
|
|
96
|
+
and must not be presented as a page-quality failure.
|
|
97
|
+
|
|
98
|
+
## Operational boundaries
|
|
99
|
+
|
|
100
|
+
- One tool call represents one bounded audit invocation.
|
|
101
|
+
- The MCP server exposes one tool. There is no second set of DSH-only checks.
|
|
102
|
+
- `safe` smoke mode remains the default in ego-webqa; side effects require the
|
|
103
|
+
existing explicit live-mode configuration in the Python tool.
|
|
104
|
+
- The MCP client scrubs credential-shaped environment variables before starting
|
|
105
|
+
the child process.
|
|
106
|
+
- This bundle does not install Python, `uvx`, or Chromium implicitly. Missing
|
|
107
|
+
prerequisites fail visibly instead of silently disabling QA.
|
|
108
|
+
|
|
109
|
+
## Versioning
|
|
110
|
+
|
|
111
|
+
The bundle pins the tested ego-webqa version in `cordis.patch.yml`. A DSH
|
|
112
|
+
adapter release is required only when its compatibility window or MCP launch
|
|
113
|
+
contract changes, not for every detector release in the Python package.
|
|
114
|
+
|
|
115
|
+
To use a locally installed CLI instead of `uvx`, override the generated row in
|
|
116
|
+
the profile's `cordis.patch.yml`:
|
|
117
|
+
|
|
118
|
+
```yaml
|
|
119
|
+
- id: ego-webqa
|
|
120
|
+
name: '@deepseek-ai/dsh-mcp-client'
|
|
121
|
+
config:
|
|
122
|
+
serverName: ego_webqa
|
|
123
|
+
transport: stdio
|
|
124
|
+
command: ego-webqa
|
|
125
|
+
args: [mcp]
|
|
126
|
+
cwd: !!js process.cwd()
|
|
127
|
+
toolCallTimeoutMs: 90000
|
|
128
|
+
failOnStartupError: true
|
|
129
|
+
reconnect:
|
|
130
|
+
enabled: true
|
|
131
|
+
initialDelayMs: 500
|
|
132
|
+
maxDelayMs: 30000
|
|
133
|
+
maxAttempts: 10
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Troubleshooting
|
|
137
|
+
|
|
138
|
+
If the tool is absent, inspect the DSH log for the `ego-webqa` MCP row. Common
|
|
139
|
+
causes are:
|
|
140
|
+
|
|
141
|
+
- `uvx` is not on the DSH process `PATH`;
|
|
142
|
+
- the pinned ego-webqa package version cannot be downloaded;
|
|
143
|
+
- Chromium was installed for a different `uv` cache or user account;
|
|
144
|
+
- the configured DSH version is outside `engines.dsh`.
|
|
145
|
+
|
|
146
|
+
Run the underlying server directly to isolate DSH from the Python package:
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
uvx ego-webqa@0.4.2 mcp
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
For a normal CLI audit and complete evidence, run:
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
uvx ego-webqa@0.4.2 https://preview.example --out .qa/dsh
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## License
|
|
159
|
+
|
|
160
|
+
MIT
|
package/cordis.patch.yml
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# DSH bundle patch for ego-webqa.
|
|
2
|
+
#
|
|
3
|
+
# DSH already owns a native MCP client. This bundle intentionally adds only the
|
|
4
|
+
# MCP connection row; the Python ego-webqa package remains the sole
|
|
5
|
+
# implementation of browser checks and report generation.
|
|
6
|
+
- insert:
|
|
7
|
+
- id: ego-webqa
|
|
8
|
+
name: '@deepseek-ai/dsh-mcp-client'
|
|
9
|
+
config:
|
|
10
|
+
serverName: ego_webqa
|
|
11
|
+
transport: stdio
|
|
12
|
+
command: uvx
|
|
13
|
+
args:
|
|
14
|
+
- ego-webqa@0.4.2
|
|
15
|
+
- mcp
|
|
16
|
+
cwd: !!js process.cwd()
|
|
17
|
+
toolCallTimeoutMs: 90000
|
|
18
|
+
failOnStartupError: true
|
|
19
|
+
reconnect:
|
|
20
|
+
enabled: true
|
|
21
|
+
initialDelayMs: 500
|
|
22
|
+
maxDelayMs: 30000
|
|
23
|
+
maxAttempts: 10
|
package/icon.svg
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" role="img" aria-label="ego-webqa">
|
|
2
|
+
<rect width="128" height="128" rx="28" fill="#0f172a"/>
|
|
3
|
+
<rect x="26" y="22" width="76" height="84" rx="12" fill="none" stroke="#7dd3fc" stroke-width="8"/>
|
|
4
|
+
<path d="M48 52l12 12-12 12M67 77h15" fill="none" stroke="#f8fafc" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
|
|
5
|
+
<circle cx="95" cy="94" r="18" fill="#22c55e"/>
|
|
6
|
+
<path d="M86 94l6 6 12-14" fill="none" stroke="#052e16" stroke-width="5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
7
|
+
</svg>
|
package/package.json
CHANGED
|
@@ -1,6 +1,54 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-ego-webqa",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"private": false,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"description": "Install ego-webqa's deterministic web-delivery audit as a DSH MCP tool.",
|
|
7
|
+
"keywords": [
|
|
8
|
+
"dsh",
|
|
9
|
+
"dsh-plugin",
|
|
10
|
+
"mcp",
|
|
11
|
+
"playwright",
|
|
12
|
+
"web-qa",
|
|
13
|
+
"ai-generated"
|
|
14
|
+
],
|
|
15
|
+
"homepage": "https://github.com/ROY32172310/dsh-ego-webqa",
|
|
16
|
+
"repository": {
|
|
17
|
+
"type": "git",
|
|
18
|
+
"url": "git+https://github.com/ROY32172310/dsh-ego-webqa.git"
|
|
19
|
+
},
|
|
20
|
+
"bugs": {
|
|
21
|
+
"url": "https://github.com/ROY32172310/dsh-ego-webqa/issues"
|
|
22
|
+
},
|
|
23
|
+
"author": "Roy",
|
|
24
|
+
"license": "MIT",
|
|
25
|
+
"publishConfig": {
|
|
26
|
+
"access": "public",
|
|
27
|
+
"provenance": true
|
|
28
|
+
},
|
|
29
|
+
"files": [
|
|
30
|
+
"cordis.patch.yml",
|
|
31
|
+
"icon.svg",
|
|
32
|
+
"README.md",
|
|
33
|
+
"LICENSE"
|
|
34
|
+
],
|
|
35
|
+
"engines": {
|
|
36
|
+
"dsh": ">=0.1.5-rc.1 <0.3.0"
|
|
37
|
+
},
|
|
38
|
+
"dsh": {
|
|
39
|
+
"bundle": {
|
|
40
|
+
"patch": "./cordis.patch.yml"
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"peerDependencies": {
|
|
44
|
+
"@deepseek-ai/dsh-mcp-client": ">=0.1.5-rc.1 <0.3.0"
|
|
45
|
+
},
|
|
46
|
+
"scripts": {
|
|
47
|
+
"check": "node scripts/check-package.mjs",
|
|
48
|
+
"market:build": "node scripts/build-market-index.mjs",
|
|
49
|
+
"test": "node --test"
|
|
50
|
+
},
|
|
51
|
+
"devDependencies": {
|
|
52
|
+
"@deepseek-ai/dsh-plugin-market-index": "0.2.1-alpha.4"
|
|
53
|
+
}
|
|
54
|
+
}
|