duaer-spec 0.6.1 → 0.6.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/ADOPT.md CHANGED
@@ -1,70 +1,44 @@
1
1
  # Adopt duaer-spec
2
2
 
3
- Install once so the coding agent behaves as a **digital employee**: it runs
4
- Brief → work → accept **without** the human operating slash commands or CLI.
5
-
6
- ## Install (human, once)
3
+ ## Install
7
4
 
8
5
  ```bash
9
6
  npx duaer-spec init --here
10
- # pin: npx github:fujiezee/duaer-spec@v0.6.1 duaer init --here
11
7
  ```
12
8
 
9
+ ## Update
10
+
13
11
  ```bash
14
- npx duaer-spec init --here --method
15
- npx duaer-spec init --here --ops
12
+ npx duaer-spec update
16
13
  ```
17
14
 
18
- Ensure the repo has **`main`** and **`develop`**. See
19
- [`docs/agent/branching-and-release.md`](docs/agent/branching-and-release.md).
15
+ Do **not** use `init --here --force` as the everyday refresh. `update` reuses
16
+ the mode/branch from `.duaer/duaer-init.json`.
20
17
 
21
- After that: talk to the agent in plain language.
18
+ If you customized constitution / baseline / `.duaer/handoff.json` commands,
19
+ glance at `git diff` once and keep your overrides.
22
20
 
23
- ## Updating an existing install
24
-
25
- Already ran `duaer init` before? Refresh managed files:
26
-
27
- ```bash
28
- npx duaer-spec@latest init --here --force
29
- ```
30
-
31
- Then:
21
+ Ensure the repo has **`main`** and **`develop`**. See
22
+ [`docs/agent/branching-and-release.md`](docs/agent/branching-and-release.md)
23
+ (Chinese: [`README.zh-CN.md`](README.zh-CN.md)).
32
24
 
33
- 1. **Review the git diff** keep your project-specific edits to
34
- `.duaer/memory/constitution.md`, `project-context.md`, `docs/baseline.md`,
35
- and especially **`.duaer/handoff.json` `commands`** (your restart scripts).
36
- 2. Restore any local overrides you still need.
37
- 3. Confirm `.gitignore` still contains `.worktree/`.
38
- 4. No need to re-learn slash commands — talk to the agent as before.
25
+ Then talk to the agent in plain language.
39
26
 
40
- Pin a version if you prefer:
27
+ ## Options
41
28
 
42
29
  ```bash
43
- npx duaer-spec@0.6.1 init --here --force
44
- # or
45
- npx github:fujiezee/duaer-spec@v0.6.1 duaer init --here --force
30
+ npx duaer-spec init --here --method
31
+ npx duaer-spec init --here --ops
32
+ npx duaer-spec update --method # rare; usually omit
46
33
  ```
47
34
 
48
- Adopters are **not** auto-updated; re-run init when you want a newer revision.
49
-
50
- ## What gets installed
51
-
52
- - Always-on autonomous job loop
53
- - `.duaer/handoff.json` — restart services on **develop** after worktree remove
54
- - Agent ops: `AGENTS.md`, branching/release docs, mandatory `.worktree/`
55
-
56
- ## Branch model (mandatory)
57
-
58
- | Branch | Role |
59
- |---|---|
60
- | `main` | Production / online |
61
- | `develop` | Day-to-day integration |
62
- | `feat/<name>` | Features → `develop` |
63
- | `fix/<name>` | Fixes → `develop` (hotfix via `main`) |
35
+ ## What you get
64
36
 
65
- After merge: **`duaer handoff [--run]`** (stop worktree servicesrestart on develop).
37
+ - Autonomous job loop (ask Briefwork accept)
38
+ - `.duaer/handoff.json` + `duaer handoff` after worktree remove
39
+ - Agent ops: `main` / `develop` / `feat` / `fix` + `.worktree/`
66
40
 
67
41
  ## Precedence
68
42
 
69
- 1. `AGENTS.md` — how employees operate
70
- 2. `DUADER.md` / `.duaer/` — how jobs are briefed
43
+ 1. `AGENTS.md`
44
+ 2. `DUADER.md` / `.duaer/`
package/CHANGELOG.md CHANGED
@@ -1,46 +1,40 @@
1
1
  # Changelog
2
2
 
3
- ## 0.6.1 — 2026-09-15
4
-
5
- ### Worktree → develop service handoff
6
-
7
- - Mandatory handoff after merge: stop worktree-bound processes, remove
8
- `.worktree/<id>`, restart from primary checkout on `develop`
9
- - `.duaer/handoff.json` configures restart commands (e.g. `npm run dev`)
10
- - CLI: `duaer handoff` / `duaer handoff --run`
11
- - Docs: update path for existing installs (`init --force` + review diff)
3
+ ## 0.6.3 — 2026-09-15
12
4
 
13
- ## 0.6.0 2026-09-15
5
+ ### Docs: update path in installed 说明
14
6
 
15
- ### Mandatory branch model + release flows
7
+ - `DUADER.md` and `docs/agent/branching-and-release.md` document `npx duaer-spec update`
8
+ - Add `README.zh-CN.md` (install / update / branches)
9
+ - ADOPT clarifies: do not use `init --force` for everyday refresh
16
10
 
17
- - Required: `main` / `develop` / `feat/*` / `fix/*`
18
- - [`docs/agent/branching-and-release.md`](docs/agent/branching-and-release.md)
11
+ ## 0.6.2 2026-09-15
19
12
 
20
- ## 0.5.1 — 2026-09-15
13
+ ### Simple update
21
14
 
22
- - Mandatory `.worktree/` (gitignored)
15
+ - `npx duaer-spec update` refreshes an existing install (no `--force` flags to remember)
16
+ - Remembers prior init mode from `.duaer/duaer-init.json`
17
+ - README / ADOPT: install + update are each one line
23
18
 
24
- ## 0.5.0 — 2026-09-15
25
-
26
- - Autonomous digital employee (ask, don’t operate phases)
19
+ ## 0.6.1 — 2026-09-15
27
20
 
28
- ## 0.4.0 2026-09-15
21
+ ### Worktree develop service handoff
29
22
 
30
- - Everyday `/duaer-do` path (later agent-internal)
23
+ - `.duaer/handoff.json` + `duaer handoff [--run]`
24
+ - Mandatory restart on develop after worktree remove
31
25
 
32
- ## 0.3.0 — 2026-09-15
26
+ ## 0.6.0 — 2026-09-15
33
27
 
34
- - Job handoff policy
28
+ - Mandatory `main` / `develop` / `feat/*` / `fix/*` + release flows
35
29
 
36
- ## 0.2.0 — 2026-09-15
30
+ ## 0.5.1 — 2026-09-15
37
31
 
38
- - `delivery.json`
32
+ - Mandatory `.worktree/` (gitignored)
39
33
 
40
- ## 0.1.1 — 2026-09-15
34
+ ## 0.5.0 — 2026-09-15
41
35
 
42
- - Digital-employee positioning
36
+ - Autonomous digital employee
43
37
 
44
- ## 0.1.0 — 2026-09-15
38
+ ## 0.4.0 — 0.1.0
45
39
 
46
- - First public release
40
+ See git history for earlier notes.
package/DUADER.md CHANGED
@@ -7,9 +7,10 @@ runs Brief → work → accept. Humans are not the operators of the phase machin
7
7
 
8
8
  ## Human experience
9
9
 
10
- 1. One-time: `npx duaer-spec init --here`
11
- 2. Ongoing: describe work in chat
12
- 3. Review the handoff line (accepted / not yet)
10
+ 1. One-time install: `npx duaer-spec init --here`
11
+ 2. Later refresh: `npx duaer-spec update`
12
+ 3. Ongoing: describe work in chat
13
+ 4. Review the handoff line (accepted / not yet)
13
14
 
14
15
  ## Agent procedure (autonomous)
15
16
 
@@ -42,4 +43,5 @@ Humans need not configure it for everyday use.
42
43
  ## Related
43
44
 
44
45
  - Adopt: [`ADOPT.md`](ADOPT.md)
46
+ - Branches / go-live: [`docs/agent/branching-and-release.md`](docs/agent/branching-and-release.md)
45
47
  - Agent ops: [`AGENTS.md`](AGENTS.md)
package/README.md CHANGED
@@ -13,8 +13,15 @@ talk; the employee runs the process.
13
13
  npx duaer-spec init --here
14
14
  ```
15
15
 
16
- Then use Cursor as usual — describe what you want. No slash-command chain
17
- required.
16
+ ## Update
17
+
18
+ ```bash
19
+ npx duaer-spec update
20
+ ```
21
+
22
+ Then use Cursor as usual — describe what you want.
23
+
24
+ 中文说明:[`README.zh-CN.md`](README.zh-CN.md)
18
25
 
19
26
  ## What the employee does (by itself)
20
27
 
@@ -41,18 +48,10 @@ Go-live and flows by issue type:
41
48
  **After merge:** `duaer handoff [--run]` restarts local services on `develop`
42
49
  (configure commands in `.duaer/handoff.json`).
43
50
 
44
- ## Updating
45
-
46
- ```bash
47
- npx duaer-spec@latest init --here --force # review diff; keep handoff commands
48
- ```
49
-
50
- Details: [`ADOPT.md`](ADOPT.md)#updating-an-existing-install
51
-
52
51
  ## Optional
53
52
 
54
53
  ```bash
55
- npx duaer-spec@0.6.1 init --here --method
54
+ npx duaer-spec init --here --method
56
55
  ```
57
56
 
58
57
  Details: [`ADOPT.md`](ADOPT.md) · Method: [`DUADER.md`](DUADER.md) · Ops: [`AGENTS.md`](AGENTS.md)
@@ -0,0 +1,34 @@
1
+ # duaer-spec
2
+
3
+ **Duaer** 把 AI 编程助手变成**数字员工**:你用自然语言提需求,它自己跑 Spec → 实现 → 验收;只有交接干净才算完成。
4
+
5
+ 你**不用**操作流程。装一次之后,说话即可。
6
+
7
+ ## 安装
8
+
9
+ ```bash
10
+ npx duaer-spec init --here
11
+ ```
12
+
13
+ ## 更新
14
+
15
+ ```bash
16
+ npx duaer-spec update
17
+ ```
18
+
19
+ 若你改过本地 constitution / baseline / `handoff.json` 命令,看一眼 `git diff` 即可。
20
+
21
+ ## 必须有的分支
22
+
23
+ | 分支 | 作用 |
24
+ |---|---|
25
+ | `main` | 生产 / 正式上线 |
26
+ | `develop` | 日常集成、联调 |
27
+ | `feat/<name>` | 功能 → 合进 `develop` |
28
+ | `fix/<name>` | 缺陷 → 合进 `develop`(紧急从 `main` 出,再回补 `develop`) |
29
+
30
+ 不同问题怎么上线:[`docs/agent/branching-and-release.md`](docs/agent/branching-and-release.md)
31
+
32
+ 合并后:`duaer handoff [--run]` 在 `develop` 上重启本地服务(命令写在 `.duaer/handoff.json`)。
33
+
34
+ 英文源:[`README.md`](README.md) · 采纳细节:[`ADOPT.md`](ADOPT.md)
package/bin/duaer.mjs CHANGED
@@ -27,25 +27,16 @@ const POLICY_MODES = new Set(['off', 'coach', 'strict'])
27
27
 
28
28
  const USAGE = `duaer — digital-employee delivery (duaer-spec ${PKG.version})
29
29
 
30
- Human (once / update):
31
- duaer init [--here] [--force] Install or refresh into a project
30
+ Install: npx duaer-spec init --here
31
+ Update: npx duaer-spec update
32
32
 
33
- After install: talk to the agent in plain language.
33
+ Then talk to the agent in plain language.
34
34
 
35
- Agent / optional:
36
- duaer handoff [dir] [--run] After merge: print/restart services on develop
37
- duaer status [dir]
38
- duaer check | policy | version
35
+ Also:
36
+ duaer handoff [--run] Restart services on develop after worktree remove
37
+ duaer status | check | policy | version | help
39
38
 
40
- Init: --all (default) | --method | --ops | --force | --branch <n> (default: develop) | --here
41
-
42
- Update existing install:
43
- npx duaer-spec@latest init --here --force
44
- # then review git diff; keep project-specific constitution / baseline / handoff commands
45
-
46
- Example:
47
- npx duaer-spec init --here
48
- duaer handoff --run
39
+ Init options: --all | --method | --ops | --force | --branch <n> | --here
49
40
  `
50
41
 
51
42
  function parseArgs(argv) {
@@ -63,14 +54,21 @@ function parseArgs(argv) {
63
54
  strict: false,
64
55
  policyMode: null,
65
56
  run: false,
57
+ modeExplicit: false,
66
58
  }
67
59
  const rest = args.slice(1)
68
60
  for (let i = 0; i < rest.length; i++) {
69
61
  const a = rest[i]
70
- if (a === '--all') out.mode = 'all'
71
- else if (a === '--method') out.mode = 'method'
72
- else if (a === '--ops') out.mode = 'ops'
73
- else if (a === '--force') out.force = true
62
+ if (a === '--all') {
63
+ out.mode = 'all'
64
+ out.modeExplicit = true
65
+ } else if (a === '--method') {
66
+ out.mode = 'method'
67
+ out.modeExplicit = true
68
+ } else if (a === '--ops') {
69
+ out.mode = 'ops'
70
+ out.modeExplicit = true
71
+ } else if (a === '--force') out.force = true
74
72
  else if (a === '--here') out.dir = '.'
75
73
  else if (a === '--workplace') out.workplace = true
76
74
  else if (a === '--delivery') out.delivery = true
@@ -338,11 +336,31 @@ function cmdInit(opts) {
338
336
  console.log(`
339
337
  Hired.
340
338
 
341
- You: describe work in Cursor (plain language).
342
- Agent: runs Brief → work → accept; uses develop + .worktree/; after merge runs handoff.
339
+ Talk to the agent in plain language.
340
+ Later update: npx duaer-spec update
341
+ `)
342
+ }
343
343
 
344
- Update later: npx duaer-spec@latest init --here --force (review the diff)
345
- Handoff: duaer handoff [--run] # restart services on develop after worktree remove
344
+ function cmdUpdate(opts) {
345
+ const target = resolve(opts.dir)
346
+ const marker = readJson(join(target, '.duaer', 'duaer-init.json'), null)
347
+ if (!marker && !existsSync(join(target, '.duaer')) && !existsSync(join(target, 'DUADER.md'))) {
348
+ console.log('No duaer install found here. Use: npx duaer-spec init --here')
349
+ process.exitCode = 1
350
+ return
351
+ }
352
+
353
+ if (!opts.modeExplicit && marker?.mode && ['all', 'method', 'ops'].includes(marker.mode)) {
354
+ opts.mode = marker.mode
355
+ }
356
+ if (marker?.branch) opts.branch = marker.branch
357
+ opts.force = true
358
+
359
+ console.log(`Updating → ${PKG.version}`)
360
+ cmdInit(opts)
361
+ console.log(`
362
+ Updated.
363
+ If you customized constitution / baseline / handoff commands, check git diff once.
346
364
  `)
347
365
  }
348
366
 
@@ -690,6 +708,9 @@ function main() {
690
708
  case 'init':
691
709
  cmdInit(opts)
692
710
  break
711
+ case 'update':
712
+ cmdUpdate(opts)
713
+ break
693
714
  case 'check':
694
715
  cmdCheck(opts)
695
716
  break
@@ -10,4 +10,6 @@ Wins over Duaer and `examples/` when they conflict.
10
10
  | [change-checklist.md](change-checklist.md) | Finish checklist |
11
11
  | [e2e-test-plan.md](e2e-test-plan.md) | E2E scenario catalog template |
12
12
 
13
- Root contract: [`AGENTS.md`](../../AGENTS.md). Adoption: [`ADOPT.md`](../../ADOPT.md).
13
+ Root contract: [`AGENTS.md`](../../AGENTS.md).
14
+ Adoption: [`ADOPT.md`](../../ADOPT.md) — `npx duaer-spec init --here` / `npx duaer-spec update`.
15
+ Chinese summary: [`README.zh-CN.md`](../../README.zh-CN.md).
@@ -199,9 +199,20 @@ All implementation edits happen inside the request worktree.
199
199
 
200
200
  ---
201
201
 
202
+ ## 7. Install and update (adopters)
203
+
204
+ ```bash
205
+ npx duaer-spec init --here # once
206
+ npx duaer-spec update # later refresh — no --force recipe
207
+ ```
208
+
209
+ Details: [`ADOPT.md`](../../ADOPT.md). Chinese summary: [`README.zh-CN.md`](../../README.zh-CN.md).
210
+
202
211
  ## Related
203
212
 
204
213
  - [workflow.md](workflow.md) — R4 and development loop
205
214
  - [change-checklist.md](change-checklist.md) — finish checklist
206
215
  - [baseline.md](../baseline.md) — frozen: `develop` + `main`
207
- - [ADOPT.md](../../ADOPT.md) — install into another repo
216
+ - [ADOPT.md](../../ADOPT.md) — install / update into another repo
217
+ - [README.zh-CN.md](../../README.zh-CN.md) — Chinese install, update, branches
218
+
@@ -34,7 +34,9 @@ the table for their app.
34
34
  | E2E-007 | Request worktrees use `.worktree/<id>`; `.worktree/` gitignored | manual |
35
35
  | E2E-008 | Docs require main+develop+feat+fix and typed go-live flows | manual |
36
36
  | E2E-009 | After merge, handoff restarts services on develop (`duaer handoff`) | manual |
37
- | E2E-010 | ADOPT documents `init --force` update path for existing installs | manual |
37
+ | E2E-010 | `npx duaer-spec update` refreshes an existing install | manual |
38
+ | E2E-011 | Installed docs (`DUADER.md`, `docs/agent/`) document `update` | manual |
39
+ | E2E-012 | `README.zh-CN.md` covers install, update, branch model | manual |
38
40
 
39
41
  ## Traceability
40
42
 
@@ -49,4 +51,6 @@ the table for their app.
49
51
  | E2E-007 | `.worktree/` + `.gitignore` | Mandatory isolation |
50
52
  | E2E-008 | `branching-and-release.md` | Branch + release matrix |
51
53
  | E2E-009 | `.duaer/handoff.json` / `duaer handoff` | Service handoff |
52
- | E2E-010 | `ADOPT.md` Updating | Existing installs |
54
+ | E2E-010 | `duaer update` | One-line refresh |
55
+ | E2E-011 | DUADER + agent docs | Update path in installed 说明 |
56
+ | E2E-012 | `README.zh-CN.md` | Chinese 说明文档 |
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "duaer-spec",
3
- "version": "0.6.1",
4
- "description": "Digital employees: autonomous delivery; main/develop/feat/fix; worktree handoff",
3
+ "version": "0.6.3",
4
+ "description": "Digital employees: autonomous delivery; main/develop/feat/fix; simple update",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "duaer": "bin/duaer.mjs",
@@ -18,7 +18,8 @@
18
18
  "docs/agent",
19
19
  "docs/baseline.md",
20
20
  "LICENSE",
21
- "README.md"
21
+ "README.md",
22
+ "README.zh-CN.md"
22
23
  ],
23
24
  "publishConfig": {
24
25
  "access": "public"