duaer-spec 0.14.0 → 0.15.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/.duaer/active-job.json +3 -3
- package/.duaer/memory/testing.md +22 -8
- package/.duaer/specs/054-live-l3-smoke/delivery.json +9 -0
- package/.duaer/specs/054-live-l3-smoke/spec.md +41 -0
- package/.duaer/specs/054-live-l3-smoke/tasks.md +10 -0
- package/.duaer/specs/055-release-015/delivery.json +8 -0
- package/.duaer/specs/055-release-015/spec.md +16 -0
- package/.duaer/specs/055-release-015/tasks.md +4 -0
- package/CHANGELOG.md +7 -0
- package/README.md +4 -0
- package/README.zh-CN.md +4 -0
- package/docs/agent/e2e-test-plan.md +1 -0
- package/package.json +4 -2
package/.duaer/active-job.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"featureDir": ".duaer/specs/
|
|
3
|
-
"branch": "feat/release-
|
|
4
|
-
"worktree": ".worktree/feat-release-
|
|
2
|
+
"featureDir": ".duaer/specs/055-release-015",
|
|
3
|
+
"branch": "feat/release-015",
|
|
4
|
+
"worktree": ".worktree/feat-release-015",
|
|
5
5
|
"status": "active"
|
|
6
6
|
}
|
package/.duaer/memory/testing.md
CHANGED
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
# Testing expectations (project contract)
|
|
2
2
|
|
|
3
3
|
Agents **must** read this file before marking work verified or accepting a job.
|
|
4
|
-
|
|
5
|
-
level model and risk rules unless an ADR
|
|
4
|
+
This file is the **duaer-spec** repo contract. Adopters replace command examples
|
|
5
|
+
with their product scripts; keep the level model and risk rules unless an ADR
|
|
6
|
+
documents a change.
|
|
6
7
|
|
|
7
8
|
## Levels
|
|
8
9
|
|
|
9
|
-
| Level | What | Typical commands (
|
|
10
|
+
| Level | What | Typical commands (this repo) | Default owner |
|
|
10
11
|
|---|---|---|---|
|
|
11
|
-
| **L0** | Lint / typecheck / static | `
|
|
12
|
-
| **L1** | Unit tests for changed modules | `npm test`
|
|
12
|
+
| **L0** | Lint / typecheck / static | `node --check bin/duaer-live.mjs` `node --check web/live-dev/app.js` | After every implementation pass |
|
|
13
|
+
| **L1** | Unit tests for changed modules | `npm test` when unit files exist under `test/` | Default for code changes |
|
|
13
14
|
| **L2** | Integration / product acceptance at changed boundaries | project acceptance or integration suite | When boundaries or core paths change |
|
|
14
|
-
| **L3** | Automated E2E /
|
|
15
|
+
| **L3** | Automated E2E / protocol smoke for user-visible paths | **`npm run test:live`** (live desk shell + `/api/validate` gate; mock LLM, no paid API) | When live desk UI / protocol UX changes |
|
|
15
16
|
| **L4** | Manual account / device path when automation cannot cover auth or real data | documented steps in the Brief | When UI/auth and no automated substitute |
|
|
16
17
|
|
|
17
18
|
IDE Browser / MCP exploration is **optional discovery**. It does **not** replace
|
|
18
|
-
L3
|
|
19
|
+
L3 when `npm run test:live` covers the touched path.
|
|
19
20
|
|
|
20
21
|
## Risk table (what to run)
|
|
21
22
|
|
|
@@ -24,12 +25,25 @@ L3 automation when the project has an E2E suite.
|
|
|
24
25
|
| Docs / comments only | None (note in Brief) |
|
|
25
26
|
| Internal code, same behavior | L0 + L1 for affected packages |
|
|
26
27
|
| API / data / core path | L0 + L1 + L2 (or documented equivalent) |
|
|
27
|
-
| User-visible or protocol-visible UI/UX | L0 +
|
|
28
|
+
| User-visible or protocol-visible UI/UX (live desk) | L0 + **`npm run test:live` (L3)** + update E2E catalog |
|
|
28
29
|
| Auth / payments / irreversible ops | Above + L4 if L3 cannot cover |
|
|
29
30
|
|
|
30
31
|
Prefer **targeted subsets** over full monorepo suites. Do not skip a required
|
|
31
32
|
level without an explicit waiver in the feature docs (`tasks.md` or Spec).
|
|
32
33
|
|
|
34
|
+
## Live desk L3 (`npm run test:live`)
|
|
35
|
+
|
|
36
|
+
Covers without a paid LLM:
|
|
37
|
+
|
|
38
|
+
1. Desk shell HTML/CSS/JS markers (three columns, structured confirm fields,
|
|
39
|
+
`validationAllowsSend`)
|
|
40
|
+
2. Local validate failures (empty / too-short card)
|
|
41
|
+
3. `/api/validate` pass and `/api/validate/fix` via an in-process mock
|
|
42
|
+
OpenAI-compatible server
|
|
43
|
+
|
|
44
|
+
Does **not** cover: real model quality, Terminal CLI launch, or full revise
|
|
45
|
+
dispatch. Those stay manual E2E catalog rows or future suites.
|
|
46
|
+
|
|
33
47
|
## Opt-in (still need an explicit ask or Spec note)
|
|
34
48
|
|
|
35
49
|
Mark these in the project table when they are expensive:
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"status": "accepted",
|
|
3
|
+
"summary": "Added npm run test:live L3 smoke for desk shell + validate gate; documented in manuals and testing.md; CI on develop/main.",
|
|
4
|
+
"verification": {
|
|
5
|
+
"levels": ["L0", "L3"],
|
|
6
|
+
"commands": ["npm run test:live", "node --check bin/duaer-live.mjs"],
|
|
7
|
+
"notes": "Mock LLM; no paid API. E2E-054."
|
|
8
|
+
}
|
|
9
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Feature Specification: Live desk L3 smoke suite
|
|
2
|
+
|
|
3
|
+
**Feature Branch**: `feat/live-l3-smoke`
|
|
4
|
+
|
|
5
|
+
**Created**: 2026-09-17
|
|
6
|
+
|
|
7
|
+
**Status**: Active
|
|
8
|
+
|
|
9
|
+
## Goal
|
|
10
|
+
|
|
11
|
+
Add an automated L3 smoke suite for the live desk (confirm validate gate +
|
|
12
|
+
desk shell markers) that agents run before accept on live UI changes, and
|
|
13
|
+
document it in the manuals / testing contract.
|
|
14
|
+
|
|
15
|
+
## In scope
|
|
16
|
+
|
|
17
|
+
- `npm run test:live` — start isolated live + mock LLM; cover validate fail/pass,
|
|
18
|
+
validate/fix path, static desk markers (three columns, structured fields,
|
|
19
|
+
validationAllowsSend)
|
|
20
|
+
- Wire into `.duaer/memory/testing.md` as the L3 command for this repo
|
|
21
|
+
- Update README EN/ZH + CHANGELOG + E2E catalog
|
|
22
|
+
- Optional lightweight CI job on push/PR
|
|
23
|
+
|
|
24
|
+
## Out of scope
|
|
25
|
+
|
|
26
|
+
- Full Playwright browser interaction / paid live LLM
|
|
27
|
+
- Revise Terminal dispatch end-to-end
|
|
28
|
+
- npm version bump / publish (docs only unless user asks)
|
|
29
|
+
|
|
30
|
+
## Acceptance
|
|
31
|
+
|
|
32
|
+
1. `npm run test:live` passes without network LLM
|
|
33
|
+
2. Covers: empty/short card fail, good card pass via mock, fix endpoint,
|
|
34
|
+
HTML/JS/CSS desk markers for layout + gate
|
|
35
|
+
3. README (EN/ZH) and testing.md document the command
|
|
36
|
+
4. E2E catalog notes automated subset
|
|
37
|
+
|
|
38
|
+
## Assumptions
|
|
39
|
+
|
|
40
|
+
- Worktree: `.worktree/feat-live-l3-smoke`
|
|
41
|
+
- Brief: `.duaer/specs/054-live-l3-smoke/`
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Tasks: Live desk L3 smoke suite
|
|
2
|
+
|
|
3
|
+
**Brief**: `.duaer/specs/054-live-l3-smoke/`
|
|
4
|
+
|
|
5
|
+
## Checklist
|
|
6
|
+
|
|
7
|
+
- [x] Add `test/live-smoke.test.mjs` + mock LLM helper
|
|
8
|
+
- [x] `package.json` script `test:live`; update testing.md
|
|
9
|
+
- [x] README EN/ZH + CHANGELOG + E2E-054; CI workflow
|
|
10
|
+
- [x] Run `npm run test:live`; accept; merge develop
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Feature Specification: Release 0.15.0
|
|
2
|
+
|
|
3
|
+
**Feature Branch**: `feat/release-015`
|
|
4
|
+
|
|
5
|
+
**Created**: 2026-09-17
|
|
6
|
+
|
|
7
|
+
**Status**: Active
|
|
8
|
+
|
|
9
|
+
## Goal
|
|
10
|
+
|
|
11
|
+
Ship **0.15.0** (live L3 smoke) to main + npm.
|
|
12
|
+
|
|
13
|
+
## Acceptance
|
|
14
|
+
|
|
15
|
+
1. package.json 0.15.0; CHANGELOG section dated
|
|
16
|
+
2. main tagged v0.15.0; GitHub Release; npm latest 0.15.0
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.15.0 — 2026-09-17
|
|
4
|
+
|
|
5
|
+
### Live desk L3 smoke
|
|
6
|
+
|
|
7
|
+
- `npm run test:live` — automated desk shell + `/api/validate` / `/api/validate/fix` with mock LLM
|
|
8
|
+
- Documented in `.duaer/memory/testing.md`, README EN/ZH; CI runs on push/PR to develop/main
|
|
9
|
+
|
|
3
10
|
## 0.14.0 — 2026-09-17
|
|
4
11
|
|
|
5
12
|
### Live desk layout
|
package/README.md
CHANGED
|
@@ -64,6 +64,10 @@ Open the printed URL (default `http://127.0.0.1:8787`). The desk is **full-width
|
|
|
64
64
|
with three columns: **chat** | **requirements / confirm / dispatch / revise** |
|
|
65
65
|
**task progress**.
|
|
66
66
|
|
|
67
|
+
**Verify (maintainers / agents):** after live desk UI or validate-gate changes,
|
|
68
|
+
run `npm run test:live` (L3 smoke: desk shell markers + `/api/validate` with a
|
|
69
|
+
mock LLM — no paid API).
|
|
70
|
+
|
|
67
71
|
**Flow**
|
|
68
72
|
|
|
69
73
|
1. Dialogue → fill the confirm card (structured goal / out-of-scope / acceptance /
|
package/README.zh-CN.md
CHANGED
|
@@ -64,6 +64,10 @@ duaer live
|
|
|
64
64
|
浏览器打开提示地址(默认 `http://127.0.0.1:8787`)。台面**全屏宽**,三列:
|
|
65
65
|
**对话** | **需求 / 确认 / 派工 / 改进** | **任务进度**。
|
|
66
66
|
|
|
67
|
+
**验收(维护者 / 数字员工):** 改现场台 UI 或确认校验门禁后,跑
|
|
68
|
+
`npm run test:live`(L3 冒烟:台面结构标记 + `/api/validate`,内置 mock 模型,
|
|
69
|
+
不产生付费 API 调用)。
|
|
70
|
+
|
|
67
71
|
**流程**
|
|
68
72
|
|
|
69
73
|
1. 多轮对话 → 确认卡(目标 / 不做 / 验收 / 假设,结构化展示)。须**校验通过**后才能点确认;失败可自动修订
|
|
@@ -66,6 +66,7 @@ the table for their app.
|
|
|
66
66
|
| E2E-051 | Validate-before-send: Confirm and revise-dispatch stay blocked until `/api/validate` passes for current card fields; fail shows issues + auto-fix; agent launch prompt forbids Confirming-intent / multi-choice re-confirm | manual |
|
|
67
67
|
| E2E-052 | Confirm column wider than chat; requirements (and revise) fields fully expanded without inner scroll; structured paragraphs/lists display with click-to-edit | manual |
|
|
68
68
|
| E2E-053 | Full-screen desk (no 1440 shell cap); chat column ~50px wider than prior confirm-wide min; confirm still wider than chat | manual |
|
|
69
|
+
| E2E-054 | Live L3 smoke: `npm run test:live` covers desk shell markers + validate fail/pass + validate/fix via mock LLM (no paid API) | `npm run test:live` |
|
|
69
70
|
| E2E-041 | Busy Terminal runner: revise/re-dispatch queues (`pending.cmd`), waits (no interrupt); API `queued`/`busy`/`reused`; UI does not claim agent already started | manual |
|
|
70
71
|
| E2E-007 | Request worktrees use `.worktree/<id>`; `.worktree/` gitignored | manual |
|
|
71
72
|
| E2E-008 | Docs require main+develop+feat+fix and typed go-live flows | manual |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "duaer-spec",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.0",
|
|
4
4
|
"description": "Digital employees for Cursor, Claude, Codex, Copilot, Windsurf, Cline, Continue, Gemini, Aider",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -63,6 +63,8 @@
|
|
|
63
63
|
"license": "MIT",
|
|
64
64
|
"scripts": {
|
|
65
65
|
"duaer": "node ./bin/duaer.mjs",
|
|
66
|
-
"live": "node ./bin/duaer-live.mjs"
|
|
66
|
+
"live": "node ./bin/duaer-live.mjs",
|
|
67
|
+
"test": "node --test test/**/*.test.mjs",
|
|
68
|
+
"test:live": "node --test test/live-smoke.test.mjs"
|
|
67
69
|
}
|
|
68
70
|
}
|