@nova286/nova-workflow 2.1.1 → 2.3.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.
Files changed (42) hide show
  1. package/README.md +113 -36
  2. package/dist/cli/commands/init.js +3 -1
  3. package/dist/cli/commands/init.js.map +1 -1
  4. package/dist/cli/index.js +6 -1
  5. package/dist/cli/index.js.map +1 -1
  6. package/dist/cli-core/__tests__/adapters.test.js +25 -0
  7. package/dist/cli-core/__tests__/adapters.test.js.map +1 -1
  8. package/dist/cli-core/__tests__/context-generator.test.js +31 -0
  9. package/dist/cli-core/__tests__/context-generator.test.js.map +1 -1
  10. package/dist/cli-core/__tests__/dispatcher.test.js +22 -0
  11. package/dist/cli-core/__tests__/dispatcher.test.js.map +1 -1
  12. package/dist/cli-core/__tests__/guard.test.js +41 -1
  13. package/dist/cli-core/__tests__/guard.test.js.map +1 -1
  14. package/dist/cli-core/__tests__/init-manager.test.js +118 -21
  15. package/dist/cli-core/__tests__/init-manager.test.js.map +1 -1
  16. package/dist/cli-core/__tests__/pipeline.test.js +22 -0
  17. package/dist/cli-core/__tests__/pipeline.test.js.map +1 -1
  18. package/dist/cli-core/adapters/claude-code.d.ts +5 -3
  19. package/dist/cli-core/adapters/claude-code.js +130 -50
  20. package/dist/cli-core/adapters/claude-code.js.map +1 -1
  21. package/dist/cli-core/adapters/codex.js +25 -19
  22. package/dist/cli-core/adapters/codex.js.map +1 -1
  23. package/dist/cli-core/adapters/hermes-agent.js +25 -19
  24. package/dist/cli-core/adapters/hermes-agent.js.map +1 -1
  25. package/dist/cli-core/adapters/openclaw.js +25 -19
  26. package/dist/cli-core/adapters/openclaw.js.map +1 -1
  27. package/dist/cli-core/adapters/opencode.js +25 -19
  28. package/dist/cli-core/adapters/opencode.js.map +1 -1
  29. package/dist/cli-core/context-generator.js +44 -2
  30. package/dist/cli-core/context-generator.js.map +1 -1
  31. package/dist/cli-core/guard.js +4 -0
  32. package/dist/cli-core/guard.js.map +1 -1
  33. package/dist/cli-core/init-manager.d.ts +4 -0
  34. package/dist/cli-core/init-manager.js +72 -6
  35. package/dist/cli-core/init-manager.js.map +1 -1
  36. package/dist/cli-core/quality-check.d.ts +1 -0
  37. package/dist/cli-core/quality-check.js +23 -0
  38. package/dist/cli-core/quality-check.js.map +1 -1
  39. package/dist/cli-core/types.d.ts +57 -1
  40. package/package.json +1 -1
  41. package/templates/docs/design.md +4 -0
  42. package/templates/docs/verification-report.md +21 -0
package/README.md CHANGED
@@ -14,36 +14,40 @@
14
14
  ## What is Nova?
15
15
 
16
16
  Nova adds **process discipline** to AI-assisted development without restricting
17
- what your AI can do. It sequences your existing skills through a structured
18
- 5-phase workflow — think of it as a state machine that sits between you and
19
- your AI tools, ensuring nothing gets skipped and everything gets recorded.
17
+ what your AI can do. It sequences specification, planning, implementation, and
18
+ review through a structured workflow — think of it as a state machine that sits
19
+ between you and your AI tools, ensuring nothing gets skipped and everything gets
20
+ recorded.
20
21
 
21
22
  ### The Core Insight
22
23
 
23
24
  AI coding tools are powerful but undisciplined. Developers jump straight to
24
- implementation, skip design, forget to review. Nova fixes this not by
25
- **restricting** your AI skills (the old way), but by **orchestrating** them:
25
+ implementation, lose the original requirement, and review too late. Nova fixes
26
+ this not by **restricting** your AI skills, but by **orchestrating** three roles:
27
+ OpenSpec-compatible specs define the contract, Superpowers-compatible methods
28
+ drive planning and TDD, and ECC-compatible review judges quality.
26
29
 
27
30
  | Old Way (V1) | New Way (V2) |
28
31
  |---|---|
29
- | "You are forbidden to write code" (HTML comment) | "Your goal in this phase is to produce a design doc" |
30
- | Replace real skills with thin 25-line templates | Call real skills (brainstorming, writing-plans, TDD...) in sequence |
31
- | 5 stub platform adapters nobody uses | 1 adapter for Claude Code — the one you actually use |
32
- | Remember slash commands for each phase | Just say "start designing" — or type `/nova` |
32
+ | "You are forbidden to write code" (HTML comment) | "This task must satisfy these spec refs and acceptance refs" |
33
+ | Proposal/design docs as loose markdown | OpenSpec-compatible change artifacts as the requirement contract |
34
+ | TDD/review as optional vibes | Superpowers/ECC-compatible gates recorded as evidence |
35
+ | Remember slash commands for each phase | Just say "continue" — or type `/nova` |
33
36
 
34
37
  ### How It Feels to Use
35
38
 
36
39
  ```
37
40
  You: "帮我设计一下用户登录模块"
38
- Nova: → Reads .nova.yaml, checks guardsCalls brainstorming → Calls writing-plans
39
- Generates design.md + 6 tasks Updates state → "Design complete."
41
+ Nova: → Creates an OpenSpec-compatible changeexplores requirements
42
+ records spec refs and acceptance criteria → "Change specified."
40
43
 
41
44
  You: "继续实现"
42
- Nova: → Routes each task by typeimplementation tasks run TDD → tests pass after each
43
- Records traceId per task → "4/6 done. Continue?"
45
+ Nova: → Reads the next task's spec refsruns the Superpowers-compatible method
46
+ records tests, changed files, traceId, and evidence → "4/6 done."
44
47
 
45
48
  You: "审查一下代码"
46
- Nova: → Parallel pipeline: code-review + security-review Report with file:line references
49
+ Nova: → ECC-compatible code review + security review + spec conformance review
50
+ → Report with file:line references and pass/fix verdicts
47
51
  ```
48
52
 
49
53
  **No slash commands needed.** Nova understands phase context from `.nova.yaml` and
@@ -78,13 +82,44 @@ Then, inside Claude Code:
78
82
 
79
83
  ---
80
84
 
85
+ ## Methodology Integrations
86
+
87
+ Nova does **not** require OpenSpec, Superpowers, or ECC to be installed. It does
88
+ require their workflow model: specification contract, disciplined execution, and
89
+ independent review. Each integration can run in one of three modes:
90
+
91
+ | Mode | Meaning |
92
+ |------|---------|
93
+ | `native` | The real tool or skill pack is available and Nova should use it |
94
+ | `compatible` | Nova writes compatible artifacts and uses built-in prompts/checklists |
95
+ | `disabled` | The user explicitly opted out |
96
+
97
+ Default `nova init` starts in compatible mode:
98
+
99
+ ```yaml
100
+ integrations:
101
+ openspec: { mode: compatible }
102
+ superpowers: { mode: compatible }
103
+ ecc: { mode: compatible }
104
+ ```
105
+
106
+ If native integrations are present, Nova can use them for a stronger experience.
107
+ The product promise stays the same: open the box and it works; add the three
108
+ methodologies and it gets sharper.
109
+
110
+ ---
111
+
81
112
  ## The Five Phases
82
113
 
83
114
  ```
84
115
  propose ──→ design ──→ implement ──→ verify ──→ archive
85
116
  │ │ │ │ │
86
- brainstorming TDD skill ECC review CLI
87
- writing-plans direct impl pipeline command
117
+ │ │ │ │
118
+ │ │ │ └─ archive OpenSpec-compatible change
119
+ │ │ │ └─ ECC-compatible code/security/spec review
120
+ │ │ └─ spec-bound execution with tests and evidence
121
+ │ └─ Superpowers-compatible planning from the spec contract
122
+ └─ OpenSpec-compatible change proposal and spec delta
88
123
 
89
124
  └── /nova-iterate ←── can roll back from any phase
90
125
  ```
@@ -102,10 +137,10 @@ And you can always iterate back — real development is not a waterfall.
102
137
  | Command | What it does |
103
138
  |---------|-------------|
104
139
  | `/nova` | **One entry point.** Shows progress, suggests next action. |
105
- | `/nova-propose` | Explore requirements via brainstorming proposal.md |
106
- | `/nova-design` | Explore architecture via brainstorming + writing-plans design.md + YAML tasks |
107
- | `/nova-implement` | Execute tasks with type routing (implementation / TDD / testing) |
108
- | `/nova-verify` | Parallel pipeline: code review + security review via ECC skills |
140
+ | `/nova-propose` | Specify an OpenSpec-compatible change contract |
141
+ | `/nova-design` | Build a Superpowers-compatible plan and task graph from the spec |
142
+ | `/nova-implement` | Execute spec-bound tasks with method, tests, and evidence |
143
+ | `/nova-verify` | Run ECC-compatible code, security, and spec-conformance review |
109
144
  | `/nova-iterate` | Roll back to a previous phase for iteration |
110
145
 
111
146
  ### CLI Commands (in terminal)
@@ -124,9 +159,13 @@ And you can always iterate back — real development is not a waterfall.
124
159
 
125
160
  ### 1. Orchestrate, Don't Replace
126
161
 
127
- Nova does not write a single line of content. It does not come with its own prompt
128
- templates. It sequences **your** skills Superpowers for methodology, ECC for
129
- quality through a disciplined workflow. Each skill runs at full capability.
162
+ Nova does not replace the methodologies. It coordinates them. OpenSpec-compatible
163
+ artifacts own "what must be true", Superpowers-compatible plans own "how to work",
164
+ and ECC-compatible reviews own "whether this is acceptable".
165
+
166
+ **Methodologies are semantic dependencies, not install-time dependencies.** Nova
167
+ works in compatible mode without external tools. Native OpenSpec, Superpowers,
168
+ and ECC installations make the same workflow more capable.
130
169
 
131
170
  ### 2. Structured Handoff, Not Natural Language
132
171
 
@@ -138,24 +177,40 @@ break down. Nova solves this with `TaskContext` — a structured JSON contract:
138
177
  "taskId": "build-login",
139
178
  "title": "Implement login endpoint",
140
179
  "taskType": "implementation",
180
+ "change": {
181
+ "activeChange": "add-login",
182
+ "artifacts": {
183
+ "openspecChange": ".openspec/changes/add-login",
184
+ "implementationPlan": "docs/superpowers/plans/add-login.md"
185
+ }
186
+ },
187
+ "implementation": {
188
+ "method": "tdd",
189
+ "specRefs": ["auth.requirements.valid-credential-login"],
190
+ "acceptanceRefs": ["auth.acceptance.valid-login-returns-token"]
191
+ },
141
192
  "input": {
142
193
  "files": [{ "path": "src/login.ts", "action": "create" }],
143
194
  "environment": { "language": "TypeScript", "framework": "Express.js" }
144
195
  },
196
+ "verification": {
197
+ "commands": ["npm test -- login", "npx tsc --noEmit"]
198
+ },
145
199
  "acceptanceCriteria": ["Returns JWT on success"],
146
200
  "guardConditions": { "requireReview": true, "requireTests": true }
147
201
  }
148
202
  ```
149
203
 
150
204
  No ambiguity. No "I think the designer meant...". The implement phase knows exactly
151
- what to build, which files to touch, and what "done" looks like.
205
+ which spec contract it is satisfying, which files to touch, how to prove it, and
206
+ what "done" looks like.
152
207
 
153
208
  ### 3. State Machine, Not Wishful Thinking
154
209
 
155
210
  ```
156
- open ──[proposal done]──→ design ──[tasks ready]──→ build
157
- build ──[all tasks done]──→ verify ──[review passed]──→ archive
158
- build ←──[iterate]── design verify ←──[iterate]── build
211
+ propose ──[change specified]──→ design ──[plan ready]──→ implement
212
+ implement ──[evidence recorded]──→ verify ──[reviews passed]──→ archive
213
+ implement ←──[iterate]── design verify ←──[iterate]── implement
159
214
  ```
160
215
 
161
216
  Forward transitions are **gated** — the guard system enforces preconditions.
@@ -169,10 +224,10 @@ of truth — atomic writes, mutex-guarded, crash-safe.
169
224
 
170
225
  ### 5. Convention, Not Coercion
171
226
 
172
- Role separation comes from **phase structure**, not from fake security boundaries.
173
- The design phase says "your goal is a design doc" — that's enough. No HTML comments
174
- pretending to be access control. No skill neutering. Just clear goals and a state
175
- machine that keeps you honest.
227
+ Role separation comes from **artifact ownership**, not from fake security
228
+ boundaries. Specs own requirements, plans own execution, reviews own judgment.
229
+ No HTML comments pretending to be access control. No skill neutering. Just clear
230
+ goals and a state machine that keeps you honest.
176
231
 
177
232
  ---
178
233
 
@@ -202,16 +257,38 @@ src/
202
257
 
203
258
  ## State File
204
259
 
205
- Everything Nova knows lives in `.nova.yaml`:
260
+ Runtime state and artifact references live in `.nova.yaml`. Detailed
261
+ requirements, plans, and reports live in the referenced files:
206
262
 
207
263
  ```yaml
208
- version: 2
264
+ version: 1
209
265
  project: my-app
210
266
  environment: [claude-code]
267
+ activeChange: add-login
268
+ integrations:
269
+ openspec: { mode: compatible }
270
+ superpowers: { mode: compatible }
271
+ ecc: { mode: compatible }
272
+ artifacts:
273
+ openspecChange: .openspec/changes/add-login
274
+ proposal: .openspec/changes/add-login/proposal.md
275
+ specDelta: .openspec/changes/add-login/specs/auth/spec.md
276
+ implementationPlan: docs/superpowers/plans/add-login.md
277
+ verificationReport: docs/reports/add-login-verification.md
211
278
  phases:
212
- open: { status: done, proposal: docs/proposals/proposal.md }
279
+ propose: { status: done, proposal: docs/proposals/proposal.md }
213
280
  design: { status: done, designDoc: docs/designs/design.md, tasks: [...] }
214
- build: { status: in-progress, tasks: { task-1: { status: done, traceId: nova-xxx } } }
281
+ implement:
282
+ status: in-progress
283
+ tasks:
284
+ implement-login:
285
+ status: done
286
+ specRefs: [auth.requirements.valid-credential-login]
287
+ acceptanceRefs: [auth.acceptance.valid-login-returns-token]
288
+ evidence:
289
+ tests: [npm test -- login]
290
+ filesChanged: [src/auth/login.ts]
291
+ traceIds: [nova-xxx]
215
292
  verify: { status: pending }
216
293
  archive: { status: pending }
217
294
  metadata:
@@ -219,7 +296,7 @@ metadata:
219
296
  lastModified: "2026-05-28T12:00:00.000Z"
220
297
  history:
221
298
  - { version: 8, change: "Task login-impl completed" }
222
- - { version: 10, change: "Iterated build→design: component split needs rethinking" }
299
+ - { version: 10, change: "Iterated implement→design: component split needs rethinking" }
223
300
  ```
224
301
 
225
302
  ---
@@ -6,9 +6,11 @@ const init_manager_1 = require("../../cli-core/init-manager");
6
6
  const error_handler_1 = require("../error-handler");
7
7
  exports.initCommand = (0, error_handler_1.withErrorHandling)(async (options) => {
8
8
  ui_1.ui.step('Welcome to Nova! Initializing your project...');
9
+ const skillsDir = options.skillsDir === 'project' ? 'project' : options.skillsDir === 'user' ? 'user' : undefined;
9
10
  const manager = new init_manager_1.InitManager(process.cwd(), {
10
11
  eccPath: options.withEcc,
11
- force: options.force
12
+ force: options.force,
13
+ skillsDir
12
14
  });
13
15
  try {
14
16
  await manager.run();
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":";;;AAAA,8BAA2B;AAC3B,8DAA0D;AAC1D,oDAAqD;AAExC,QAAA,WAAW,GAAG,IAAA,iCAAiB,EAAC,KAAK,EAAE,OAA8C,EAAE,EAAE;IACpG,OAAE,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,IAAI,0BAAW,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE;QAC7C,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC,CAAC;IACH,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC;QACpB,OAAE,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAE,CAAC,KAAK,CAAC,0BAA0B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":";;;AAAA,8BAA2B;AAC3B,8DAA0D;AAC1D,oDAAqD;AAExC,QAAA,WAAW,GAAG,IAAA,iCAAiB,EAAC,KAAK,EAAE,OAAkE,EAAE,EAAE;IACxH,OAAE,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,MAAe,CAAC,CAAC,CAAC,SAAS,CAAC;IACpI,MAAM,OAAO,GAAG,IAAI,0BAAW,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE;QAC7C,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,SAAS;KACV,CAAC,CAAC;IACH,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC;QACpB,OAAE,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAE,CAAC,KAAK,CAAC,0BAA0B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
package/dist/cli/index.js CHANGED
@@ -1,5 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
3
6
  Object.defineProperty(exports, "__esModule", { value: true });
4
7
  const commander_1 = require("commander");
5
8
  const init_1 = require("./commands/init");
@@ -7,15 +10,17 @@ const archive_1 = require("./commands/archive");
7
10
  const status_1 = require("./commands/status");
8
11
  const context_1 = require("./commands/context");
9
12
  const guard_1 = require("./commands/guard");
13
+ const package_json_1 = __importDefault(require("../../package.json"));
10
14
  const program = new commander_1.Command();
11
15
  program
12
16
  .name('nova')
13
17
  .description('Nova: AI workflow orchestration — init, status, archive')
14
- .version('0.1.0');
18
+ .version(package_json_1.default.version);
15
19
  program
16
20
  .command('init')
17
21
  .option('--with-ecc <path>', 'Path to ECC skills')
18
22
  .option('--force', 'Overwrite existing configuration')
23
+ .option('--skills-dir <dir>', 'Where to install skills: "user" (default) or "project"')
19
24
  .action(init_1.initCommand);
20
25
  program
21
26
  .command('archive')
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;AACA,yCAAoC;AACpC,0CAA8C;AAC9C,gDAAoD;AACpD,8CAAkD;AAClD,gDAAoD;AACpD,4CAAgD;AAEhD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAC9B,OAAO;KACJ,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,yDAAyD,CAAC;KACtE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,MAAM,CAAC,mBAAmB,EAAE,oBAAoB,CAAC;KACjD,MAAM,CAAC,SAAS,EAAE,kCAAkC,CAAC;KACrD,MAAM,CAAC,kBAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,MAAM,CAAC,YAAY,EAAE,mCAAmC,CAAC;KACzD,MAAM,CAAC,wBAAc,CAAC,CAAC;AAE1B,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,MAAM,CAAC,sBAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,cAAc,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;KACnD,MAAM,CAAC,wBAAc,CAAC,CAAC;AAE1B,OAAO;KACJ,OAAO,CAAC,mBAAmB,CAAC;KAC5B,MAAM,CAAC,oBAAY,CAAC,CAAC;AAExB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;;;;AACA,yCAAoC;AACpC,0CAA8C;AAC9C,gDAAoD;AACpD,8CAAkD;AAClD,gDAAoD;AACpD,4CAAgD;AAChD,sEAAqC;AAErC,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAC9B,OAAO;KACJ,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,yDAAyD,CAAC;KACtE,OAAO,CAAC,sBAAG,CAAC,OAAO,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,MAAM,CAAC,mBAAmB,EAAE,oBAAoB,CAAC;KACjD,MAAM,CAAC,SAAS,EAAE,kCAAkC,CAAC;KACrD,MAAM,CAAC,oBAAoB,EAAE,wDAAwD,CAAC;KACtF,MAAM,CAAC,kBAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,MAAM,CAAC,YAAY,EAAE,mCAAmC,CAAC;KACzD,MAAM,CAAC,wBAAc,CAAC,CAAC;AAE1B,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,MAAM,CAAC,sBAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,cAAc,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;KACnD,MAAM,CAAC,wBAAc,CAAC,CAAC;AAE1B,OAAO;KACJ,OAAO,CAAC,mBAAmB,CAAC;KAC5B,MAAM,CAAC,oBAAY,CAAC,CAAC;AAExB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -36,6 +36,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  const fs = __importStar(require("fs/promises"));
37
37
  const path = __importStar(require("path"));
38
38
  const os = __importStar(require("os"));
39
+ const claude_code_1 = require("../adapters/claude-code");
39
40
  const codex_1 = require("../adapters/codex");
40
41
  const openclaw_1 = require("../adapters/openclaw");
41
42
  const hermes_agent_1 = require("../adapters/hermes-agent");
@@ -119,5 +120,29 @@ describe('Environment Adapters', () => {
119
120
  expect(config.model).toBe('claude-sonnet-4-6');
120
121
  });
121
122
  });
123
+ describe('ClaudeCodeAdapter MCP injection', () => {
124
+ test('injects Figma step into nova-design when figma MCP configured', async () => {
125
+ const adapter = new claude_code_1.ClaudeCodeAdapter();
126
+ await adapter.setup(testDir, { skillsDir: 'project', mcpServers: { figma: { configured: true, serverName: 'figma-mcp' } } });
127
+ const content = await fs.readFile(path.join(testDir, '.claude', 'skills', 'nova-design', 'SKILL.md'), 'utf-8');
128
+ expect(content).toContain('Figma MCP detected');
129
+ expect(content).toContain('Design Tokens');
130
+ });
131
+ test('injects Mobile step into nova-verify when mobile MCP configured', async () => {
132
+ const adapter = new claude_code_1.ClaudeCodeAdapter();
133
+ await adapter.setup(testDir, { skillsDir: 'project', mcpServers: { mobile: { configured: true, serverName: 'mobile-mcp' } } });
134
+ const content = await fs.readFile(path.join(testDir, '.claude', 'skills', 'nova-verify', 'SKILL.md'), 'utf-8');
135
+ expect(content).toContain('Mobile MCP detected');
136
+ expect(content).toContain('UI Verification');
137
+ });
138
+ test('no MCP steps when no MCP configured', async () => {
139
+ const adapter = new claude_code_1.ClaudeCodeAdapter();
140
+ await adapter.setup(testDir, { skillsDir: 'project' });
141
+ const design = await fs.readFile(path.join(testDir, '.claude', 'skills', 'nova-design', 'SKILL.md'), 'utf-8');
142
+ const verify = await fs.readFile(path.join(testDir, '.claude', 'skills', 'nova-verify', 'SKILL.md'), 'utf-8');
143
+ expect(design).not.toContain('Figma MCP detected');
144
+ expect(verify).not.toContain('Mobile MCP detected');
145
+ });
146
+ });
122
147
  });
123
148
  //# sourceMappingURL=adapters.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapters.test.js","sourceRoot":"","sources":["../../../src/cli-core/__tests__/adapters.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapters.test.js","sourceRoot":"","sources":["../../../src/cli-core/__tests__/adapters.test.ts"],"names":[],"mappings":"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"}
@@ -51,6 +51,19 @@ describe("ContextGenerator", () => {
51
51
  project: "test",
52
52
  projectType: "node",
53
53
  environment: ["generic"],
54
+ activeChange: "add-login",
55
+ integrations: {
56
+ openspec: { mode: "compatible" },
57
+ superpowers: { mode: "native" },
58
+ ecc: { mode: "compatible" },
59
+ },
60
+ artifacts: {
61
+ openspecChange: ".openspec/changes/add-login",
62
+ proposal: ".openspec/changes/add-login/proposal.md",
63
+ specDelta: ".openspec/changes/add-login/specs/auth/spec.md",
64
+ implementationPlan: "docs/superpowers/plans/add-login.md",
65
+ verificationReport: "",
66
+ },
54
67
  phases: {
55
68
  design: {
56
69
  status: "done",
@@ -71,7 +84,16 @@ describe("ContextGenerator", () => {
71
84
  title: "Implement login",
72
85
  description: "Create login endpoint",
73
86
  type: "implementation",
87
+ method: "tdd",
88
+ specRefs: ["auth.requirements.valid-credential-login"],
89
+ acceptanceRefs: ["auth.acceptance.valid-login-returns-token"],
74
90
  files: [{ path: "src/login.ts", action: "create" }],
91
+ verification: {
92
+ commands: ["npm test -- login", "npx tsc --noEmit"],
93
+ },
94
+ evidence: {
95
+ required: ["failing-test-before-implementation", "spec-ref-covered"],
96
+ },
75
97
  expectedArtifacts: [
76
98
  { type: "code", description: "Login module", pathHint: "src/login.ts" },
77
99
  ],
@@ -89,6 +111,15 @@ describe("ContextGenerator", () => {
89
111
  expect(context.guardConditions.blocking).toBe(true);
90
112
  expect(context.metadata.priority).toBe("high");
91
113
  expect(context.metadata.estimatedComplexity).toBe(7);
114
+ expect(context.change.activeChange).toBe("add-login");
115
+ expect(context.change.artifacts.openspecChange).toBe(".openspec/changes/add-login");
116
+ expect(context.methodology.openspec.mode).toBe("compatible");
117
+ expect(context.methodology.superpowers.mode).toBe("native");
118
+ expect(context.implementation.method).toBe("tdd");
119
+ expect(context.implementation.specRefs).toEqual(["auth.requirements.valid-credential-login"]);
120
+ expect(context.implementation.acceptanceRefs).toEqual(["auth.acceptance.valid-login-returns-token"]);
121
+ expect(context.verification.commands).toEqual(["npm test -- login", "npx tsc --noEmit"]);
122
+ expect(context.evidence.required).toEqual(["failing-test-before-implementation", "spec-ref-covered"]);
92
123
  // 环境信息应被检测
93
124
  expect(context.input.environment.language).toBe("TypeScript");
94
125
  expect(context.input.environment.framework).toBe("Express.js");
@@ -1 +1 @@
1
- {"version":3,"file":"context-generator.test.js","sourceRoot":"","sources":["../../../src/cli-core/__tests__/context-generator.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context-generator.test.js","sourceRoot":"","sources":["../../../src/cli-core/__tests__/context-generator.test.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,28 @@ const baseContext = {
36
36
  },
37
37
  },
38
38
  output: { expectedArtifacts: [], constraints: { mustPassTests: true } },
39
+ change: {
40
+ activeChange: "",
41
+ artifacts: {
42
+ openspecChange: "",
43
+ proposal: "",
44
+ specDelta: "",
45
+ implementationPlan: "",
46
+ verificationReport: "",
47
+ },
48
+ },
49
+ methodology: {
50
+ openspec: { mode: "compatible" },
51
+ superpowers: { mode: "compatible" },
52
+ ecc: { mode: "compatible" },
53
+ },
54
+ implementation: {
55
+ method: "implementation",
56
+ specRefs: [],
57
+ acceptanceRefs: [],
58
+ },
59
+ verification: { commands: [] },
60
+ evidence: { required: [] },
39
61
  acceptanceCriteria: [],
40
62
  guardConditions: { requireReview: true, requireTests: true, blocking: false },
41
63
  metadata: {
@@ -1 +1 @@
1
- {"version":3,"file":"dispatcher.test.js","sourceRoot":"","sources":["../../../src/cli-core/__tests__/dispatcher.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dispatcher.test.js","sourceRoot":"","sources":["../../../src/cli-core/__tests__/dispatcher.test.ts"],"names":[],"mappings":"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"}
@@ -82,7 +82,23 @@ describe('guardPhaseTransition', () => {
82
82
  ...baseState,
83
83
  phases: {
84
84
  ...baseState.phases,
85
- design: { status: 'done', designDoc: 'docs/design.md', tasks: [{ id: 'task-1', title: 'T1', type: 'implementation', files: [{ path: 'x.ts', action: 'create' }], acceptance: ['done'] }] },
85
+ design: {
86
+ status: 'done',
87
+ designDoc: 'docs/design.md',
88
+ tasks: [
89
+ {
90
+ id: 'task-1',
91
+ title: 'T1',
92
+ type: 'implementation',
93
+ method: 'tdd',
94
+ specRefs: ['workflow.requirements.task-1'],
95
+ acceptanceRefs: ['workflow.acceptance.task-1'],
96
+ verification: { commands: ['npm test -- task-1'] },
97
+ files: [{ path: 'x.ts', action: 'create' }],
98
+ acceptance: ['done'],
99
+ },
100
+ ],
101
+ },
86
102
  },
87
103
  });
88
104
  expect((await (0, guard_1.guardPhaseTransition)('design', 'implement')).pass).toBe(true);
@@ -97,6 +113,30 @@ describe('guardPhaseTransition', () => {
97
113
  });
98
114
  expect((await (0, guard_1.guardPhaseTransition)('design', 'implement')).pass).toBe(false);
99
115
  });
116
+ test('design-to-build fails when implementation task lacks spec-bound execution metadata', async () => {
117
+ await writeState({
118
+ ...baseState,
119
+ phases: {
120
+ ...baseState.phases,
121
+ design: {
122
+ status: 'done',
123
+ designDoc: 'docs/design.md',
124
+ tasks: [
125
+ {
126
+ id: 'task-1',
127
+ title: 'T1',
128
+ type: 'implementation',
129
+ files: [{ path: 'x.ts', action: 'create' }],
130
+ acceptance: ['done'],
131
+ },
132
+ ],
133
+ },
134
+ },
135
+ });
136
+ const result = await (0, guard_1.guardPhaseTransition)('design', 'implement');
137
+ expect(result.pass).toBe(false);
138
+ expect(result.failures.map(f => f.label)).toContain('Implementation tasks are spec-bound');
139
+ });
100
140
  test('build-to-verify passes when build is done with completed tasks', async () => {
101
141
  await writeState({
102
142
  ...baseState,
@@ -1 +1 @@
1
- {"version":3,"file":"guard.test.js","sourceRoot":"","sources":["../../../src/cli-core/__tests__/guard.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"guard.test.js","sourceRoot":"","sources":["../../../src/cli-core/__tests__/guard.test.ts"],"names":[],"mappings":"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"}