duaer-spec 0.6.1 → 0.6.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/ADOPT.md CHANGED
@@ -1,70 +1,39 @@
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
 
15
+ That’s it. If you customized local files, glance at `git diff` once.
16
+
18
17
  Ensure the repo has **`main`** and **`develop`**. See
19
18
  [`docs/agent/branching-and-release.md`](docs/agent/branching-and-release.md).
20
19
 
21
- After that: talk to the agent in plain language.
22
-
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:
32
-
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.
20
+ Then talk to the agent in plain language.
39
21
 
40
- Pin a version if you prefer:
22
+ ## Options
41
23
 
42
24
  ```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
25
+ npx duaer-spec init --here --method
26
+ npx duaer-spec init --here --ops
27
+ npx duaer-spec update --method # rare; usually omit
46
28
  ```
47
29
 
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`) |
30
+ ## What you get
64
31
 
65
- After merge: **`duaer handoff [--run]`** (stop worktree servicesrestart on develop).
32
+ - Autonomous job loop (ask Briefwork accept)
33
+ - `.duaer/handoff.json` + `duaer handoff` after worktree remove
34
+ - Agent ops: `main` / `develop` / `feat` / `fix` + `.worktree/`
66
35
 
67
36
  ## Precedence
68
37
 
69
- 1. `AGENTS.md` — how employees operate
70
- 2. `DUADER.md` / `.duaer/` — how jobs are briefed
38
+ 1. `AGENTS.md`
39
+ 2. `DUADER.md` / `.duaer/`
package/CHANGELOG.md CHANGED
@@ -1,21 +1,23 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.6.2 — 2026-09-15
4
+
5
+ ### Simple update
6
+
7
+ - `npx duaer-spec update` refreshes an existing install (no `--force` flags to remember)
8
+ - Remembers prior init mode from `.duaer/duaer-init.json`
9
+ - README / ADOPT: install + update are each one line
10
+
3
11
  ## 0.6.1 — 2026-09-15
4
12
 
5
13
  ### Worktree → develop service handoff
6
14
 
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)
15
+ - `.duaer/handoff.json` + `duaer handoff [--run]`
16
+ - Mandatory restart on develop after worktree remove
12
17
 
13
18
  ## 0.6.0 — 2026-09-15
14
19
 
15
- ### Mandatory branch model + release flows
16
-
17
- - Required: `main` / `develop` / `feat/*` / `fix/*`
18
- - [`docs/agent/branching-and-release.md`](docs/agent/branching-and-release.md)
20
+ - Mandatory `main` / `develop` / `feat/*` / `fix/*` + release flows
19
21
 
20
22
  ## 0.5.1 — 2026-09-15
21
23
 
@@ -23,24 +25,8 @@
23
25
 
24
26
  ## 0.5.0 — 2026-09-15
25
27
 
26
- - Autonomous digital employee (ask, don’t operate phases)
27
-
28
- ## 0.4.0 — 2026-09-15
29
-
30
- - Everyday `/duaer-do` path (later agent-internal)
31
-
32
- ## 0.3.0 — 2026-09-15
33
-
34
- - Job handoff policy
35
-
36
- ## 0.2.0 — 2026-09-15
37
-
38
- - `delivery.json`
39
-
40
- ## 0.1.1 — 2026-09-15
41
-
42
- - Digital-employee positioning
28
+ - Autonomous digital employee
43
29
 
44
- ## 0.1.0 — 2026-09-15
30
+ ## 0.4.0 — 0.1.0
45
31
 
46
- - First public release
32
+ See git history for earlier notes.
package/README.md CHANGED
@@ -13,8 +13,13 @@ 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.
18
23
 
19
24
  ## What the employee does (by itself)
20
25
 
@@ -41,18 +46,10 @@ Go-live and flows by issue type:
41
46
  **After merge:** `duaer handoff [--run]` restarts local services on `develop`
42
47
  (configure commands in `.duaer/handoff.json`).
43
48
 
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
49
  ## Optional
53
50
 
54
51
  ```bash
55
- npx duaer-spec@0.6.1 init --here --method
52
+ npx duaer-spec init --here --method
56
53
  ```
57
54
 
58
55
  Details: [`ADOPT.md`](ADOPT.md) · Method: [`DUADER.md`](DUADER.md) · Ops: [`AGENTS.md`](AGENTS.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
@@ -34,7 +34,7 @@ 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
38
 
39
39
  ## Traceability
40
40
 
@@ -49,4 +49,4 @@ the table for their app.
49
49
  | E2E-007 | `.worktree/` + `.gitignore` | Mandatory isolation |
50
50
  | E2E-008 | `branching-and-release.md` | Branch + release matrix |
51
51
  | E2E-009 | `.duaer/handoff.json` / `duaer handoff` | Service handoff |
52
- | E2E-010 | `ADOPT.md` Updating | Existing installs |
52
+ | E2E-010 | `duaer update` | One-line refresh |
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.2",
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",