@prd-improve/cli 1.1.1 → 1.6.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 (83) hide show
  1. package/dist/changelog.d.ts +13 -7
  2. package/dist/changelog.js +12 -15
  3. package/dist/changelog.js.map +1 -1
  4. package/dist/cli.js +55 -7
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/_prdSource.d.ts +35 -0
  7. package/dist/commands/_prdSource.js +110 -0
  8. package/dist/commands/_prdSource.js.map +1 -0
  9. package/dist/commands/closeout.d.ts +9 -0
  10. package/dist/commands/closeout.js +293 -0
  11. package/dist/commands/closeout.js.map +1 -0
  12. package/dist/commands/context.js +11 -117
  13. package/dist/commands/context.js.map +1 -1
  14. package/dist/commands/export.d.ts +8 -0
  15. package/dist/commands/export.js +179 -0
  16. package/dist/commands/export.js.map +1 -0
  17. package/dist/commands/freeze.d.ts +23 -0
  18. package/dist/commands/freeze.js +125 -32
  19. package/dist/commands/freeze.js.map +1 -1
  20. package/dist/commands/init.d.ts +1 -1
  21. package/dist/commands/init.js +7 -5
  22. package/dist/commands/init.js.map +1 -1
  23. package/dist/commands/migrate-yaml.js +94 -46
  24. package/dist/commands/migrate-yaml.js.map +1 -1
  25. package/dist/commands/reopen.d.ts +4 -0
  26. package/dist/commands/reopen.js +76 -0
  27. package/dist/commands/reopen.js.map +1 -0
  28. package/dist/commands/resolve.d.ts +8 -0
  29. package/dist/commands/resolve.js +127 -0
  30. package/dist/commands/resolve.js.map +1 -0
  31. package/dist/commands/skill.d.ts +4 -0
  32. package/dist/commands/skill.js +16 -1
  33. package/dist/commands/skill.js.map +1 -1
  34. package/dist/commands/validate.d.ts +2 -0
  35. package/dist/commands/validate.js +4 -2
  36. package/dist/commands/validate.js.map +1 -1
  37. package/dist/i18n/en.js +71 -6
  38. package/dist/i18n/en.js.map +1 -1
  39. package/dist/i18n/help.en.d.ts +30 -0
  40. package/dist/i18n/help.en.js +32 -2
  41. package/dist/i18n/help.en.js.map +1 -1
  42. package/dist/i18n/help.zh.d.ts +30 -0
  43. package/dist/i18n/help.zh.js +32 -2
  44. package/dist/i18n/help.zh.js.map +1 -1
  45. package/dist/i18n/helpGroups.js +1 -1
  46. package/dist/i18n/helpGroups.js.map +1 -1
  47. package/dist/i18n/peekLang.d.ts +1 -0
  48. package/dist/i18n/peekLang.js +19 -0
  49. package/dist/i18n/peekLang.js.map +1 -1
  50. package/dist/i18n/zh.d.ts +161 -1
  51. package/dist/i18n/zh.js +71 -6
  52. package/dist/i18n/zh.js.map +1 -1
  53. package/dist/renderer/context-md.d.ts +13 -2
  54. package/dist/renderer/context-md.js +12 -12
  55. package/dist/renderer/context-md.js.map +1 -1
  56. package/dist/renderer/spec-md.d.ts +19 -0
  57. package/dist/renderer/spec-md.js +206 -0
  58. package/dist/renderer/spec-md.js.map +1 -0
  59. package/dist/schema/modules.d.ts +37 -5
  60. package/dist/schema/modules.js +14 -1
  61. package/dist/schema/modules.js.map +1 -1
  62. package/dist/schema/prd.d.ts +93 -17
  63. package/dist/schema/prd.js +51 -7
  64. package/dist/schema/prd.js.map +1 -1
  65. package/dist/skill/prd-improve-forge/SKILL.md +150 -10
  66. package/dist/skill/prd-improve-forge/checklists/batch-import.md +2 -1
  67. package/dist/skill/prd-improve-forge/checklists/dimensions/integration-seam.md +131 -0
  68. package/dist/skill/prd-improve-forge/checklists/dimensions/state-machine-counter.md +130 -0
  69. package/dist/skill/prd-improve-forge/examples/import-history-prds.prd.yaml +10 -5
  70. package/dist/skill/prd-improve-forge/templates/prd.yaml +25 -9
  71. package/dist/validators/blocking.js +15 -12
  72. package/dist/validators/blocking.js.map +1 -1
  73. package/dist/validators/references.js +9 -0
  74. package/dist/validators/references.js.map +1 -1
  75. package/dist/validators/runner.js +2 -2
  76. package/dist/validators/runner.js.map +1 -1
  77. package/dist/workspace.d.ts +12 -1
  78. package/dist/workspace.js +12 -1
  79. package/dist/workspace.js.map +1 -1
  80. package/dist/yamlPatch.d.ts +16 -0
  81. package/dist/yamlPatch.js +50 -0
  82. package/dist/yamlPatch.js.map +1 -0
  83. package/package.json +1 -1
@@ -1,21 +1,35 @@
1
1
  /**
2
- * `prd migrate-yaml [<slug>]` — schema v0.1 v0.2 yaml upgrader.
2
+ * `prd migrate-yaml [<slug>]` — schema yaml upgrader, three-version dispatch:
3
+ *
4
+ * - v0.3 (current): nothing to do → "skipped"
5
+ * - v0.2: pure version bump → v0.3, fully OFFLINE. No team/project
6
+ * mutation (meta.team/project already exist since v0.2),
7
+ * no backend, no server probe.
8
+ * - v0.1 (legacy): full pipeline — resolve team/project, server-validate,
9
+ * write meta.team/project, jump STRAIGHT to v0.3 in a
10
+ * single pass (no intermediate v0.2 write).
11
+ * - anything else: "failed" (unsupported schema version)
3
12
  *
4
13
  * Spec §5.2 / Task 8. Independent from `prd refresh` (refresh = "sync upstream
5
- * PRD heading slice into yaml index"; this command = pure schema version bump).
14
+ * PRD heading slice into yaml index"; this command = pure schema migration).
6
15
  *
7
16
  * Two modes:
8
17
  * - single slug: migrate one feature
9
18
  * - no slug: batch-iterate every feature in .prd/features/*\/working/prd.yaml
10
19
  * and report rolled-up counts at the end
11
20
  *
12
- * Hard invariant (reviewer I6 patch): SERVER-VALIDATE before writing yaml.
13
- * If the user types a non-existent team / project slug we MUST refuse to
14
- * persist it otherwise the yaml goes to v0.2 but every push 410s forever,
15
- * "bricked" until a hand-edit. We probe via the scoped feature-list endpoint
16
- * (`GET /api/teams/:t/projects/:p/features`) which is already mounted; a 200
17
- * proves team+project exist AND user has membership, a 404 means at least one
18
- * of the three is missing (anti-enumeration uniform per spec §3.4).
21
+ * Backend resolution is LAZY: rc/backend deps are only resolved the first
22
+ * time a v0.1 file is encountered (memoized, failure included). A pure
23
+ * v0.2/v0.3 workspace therefore migrates with no rc file and no network.
24
+ *
25
+ * Hard invariant for the v0.1 path (reviewer I6 patch): SERVER-VALIDATE
26
+ * before writing yaml. If the user types a non-existent team / project slug
27
+ * we MUST refuse to persist it otherwise the yaml gets version-bumped but
28
+ * every push 410s forever, "bricked" until a hand-edit. We probe via the
29
+ * scoped feature-list endpoint (`GET /api/teams/:t/projects/:p/features`)
30
+ * which is already mounted; a 200 proves team+project exist AND user has
31
+ * membership, a 404 means at least one of the three is missing
32
+ * (anti-enumeration uniform per spec §3.4).
19
33
  *
20
34
  * yaml mutation: eemeli/yaml's `Document.setIn(...)` lets us insert
21
35
  * `meta.team` into an existing meta map. Other comments / key order / values
@@ -30,6 +44,7 @@ import { createInterface } from "node:readline";
30
44
  import { apiFetch, projectUrl } from "../api/client.js";
31
45
  import { loadRcWithWarn, requireBackend } from "../sync/cliRcHelpers.js";
32
46
  import { getMessages, readLocale } from "../i18n/index.js";
47
+ import { SCHEMA_VERSION_CURRENT, SCHEMA_VERSION_V02, SCHEMA_VERSION_LEGACY, } from "../schema/prd.js";
33
48
  import * as c from "../formatter/colors.js";
34
49
  /**
35
50
  * Resolve target (team, project) for a single feature given precedence:
@@ -107,10 +122,13 @@ async function verifyTeamProjectOnServer(backend, team, project, fetchFn) {
107
122
  /**
108
123
  * Migrate one feature's working/prd.yaml in place.
109
124
  *
125
+ * Version dispatch (see file header): v0.3 skip / v0.2 offline bump /
126
+ * v0.1 full pipeline (lazy deps via `getV01Deps`) / otherwise failed.
127
+ *
110
128
  * Returns `FeatureOutcome` so the batch driver can roll up a summary line.
111
129
  * Writes user-facing IO directly (per-feature `·` / `✓` / `✗` lines).
112
130
  */
113
- async function migrateOneFeature(slug, yamlPath, backend, resolved, m, fetchFn) {
131
+ async function migrateOneFeature(slug, yamlPath, opts, getV01Deps, m, prompt) {
114
132
  const raw = readFileSync(yamlPath, "utf8");
115
133
  let doc;
116
134
  try {
@@ -123,18 +141,38 @@ async function migrateOneFeature(slug, yamlPath, backend, resolved, m, fetchFn)
123
141
  return "failed";
124
142
  }
125
143
  const schemaVersion = doc.get("schema_version");
126
- if (schemaVersion === "v0.2") {
127
- process.stdout.write(m.migrate_yaml_already_v02({ slug }) + "\n");
144
+ // Already current — nothing to do.
145
+ if (schemaVersion === SCHEMA_VERSION_CURRENT) {
146
+ process.stdout.write(m.migrate_yaml_already_current({ slug }) + "\n");
128
147
  return "skipped";
129
148
  }
130
- if (schemaVersion !== "v0.1") {
149
+ // v0.2 v0.3 is a pure version-number bump: meta.team/project already
150
+ // exist since v0.2, so no resolution and no server probe — fully offline.
151
+ if (schemaVersion === SCHEMA_VERSION_V02) {
152
+ doc.set("schema_version", SCHEMA_VERSION_CURRENT);
153
+ writeFileSync(yamlPath, String(doc), "utf8");
154
+ process.stdout.write(c.pass("✓ ") + m.migrate_yaml_bumped({ slug }) + "\n");
155
+ return "upgraded";
156
+ }
157
+ if (schemaVersion !== SCHEMA_VERSION_LEGACY) {
131
158
  process.stderr.write(c.fail("✗ ") +
132
159
  m.migrate_yaml_unknown_schema({ slug, got: String(schemaVersion) }) +
133
160
  "\n");
134
161
  return "failed";
135
162
  }
163
+ // v0.1 — full pipeline. Lazily resolve backend + rc defaults (first v0.1
164
+ // file triggers the resolve; memoized across a batch).
165
+ const deps = getV01Deps();
166
+ if (!deps)
167
+ return "failed";
168
+ // Resolve per-feature (could differ per slug if user types a different
169
+ // team/project at the prompt) — batch mode re-prompts per v0.1 feature,
170
+ // which is the path the spec requires.
171
+ const resolved = await resolveTeamProject(opts, deps.rcDefaults, m, prompt);
172
+ if (!resolved)
173
+ return "failed";
136
174
  // Server validation — refuse to write yaml if (team, project) is bogus.
137
- const verify = await verifyTeamProjectOnServer(backend, resolved.team, resolved.project, fetchFn);
175
+ const verify = await verifyTeamProjectOnServer(deps.backend, resolved.team, resolved.project, opts.fetchFn);
138
176
  if (!verify.ok) {
139
177
  if (verify.reason === "network") {
140
178
  process.stderr.write(c.fail("✗ ") +
@@ -157,9 +195,10 @@ async function migrateOneFeature(slug, yamlPath, backend, resolved, m, fetchFn)
157
195
  // comments, key order on existing keys, and indentation. The newly added
158
196
  // meta.team key lands at the end of the meta map (acceptable — meta is a
159
197
  // small map, exact insertion position isn't load-bearing for schema).
198
+ // v0.1 jumps straight to the current version in one pass.
160
199
  doc.setIn(["meta", "team"], resolved.team);
161
200
  doc.setIn(["meta", "project"], resolved.project);
162
- doc.set("schema_version", "v0.2");
201
+ doc.set("schema_version", SCHEMA_VERSION_CURRENT);
163
202
  const newYaml = String(doc);
164
203
  writeFileSync(yamlPath, newYaml, "utf8");
165
204
  process.stdout.write(c.pass("✓ ") +
@@ -220,24 +259,38 @@ export async function runMigrateYamlCommand(opts, cwd) {
220
259
  process.stderr.write(c.fail("✗ ") + m.migrate_yaml_workspace_not_init + "\n");
221
260
  return 1;
222
261
  }
223
- // Resolve backend before any per-feature work server validation is
224
- // mandatory and we want to fail fast on "no backend" rather than after
225
- // prompting the user for slug values.
226
- const loaded = loadRcWithWarn(opts.rcPath);
227
- if (loaded.hadError)
228
- return 1;
229
- const backend = requireBackend(loaded.rc, { backend: opts.backend });
230
- if (!backend)
231
- return 1;
232
- // Resolve .prdrc defaults from the backend the user is actually using.
233
- // (`requireBackend` already returned its name as `backend.name`; we look it
234
- // up in the rc to pull default_team / default_project.)
235
- const rcEntry = loaded.rc && backend.name !== "(env)"
236
- ? loaded.rc.backends[backend.name]
237
- : undefined;
238
- const rcDefaults = {
239
- team: rcEntry?.default_team,
240
- project: rcEntry?.default_project,
262
+ // Lazy v0.1-deps resolver — backend + rc defaults are only needed for the
263
+ // v0.1 full pipeline (server probe). Deferring keeps pure v0.2 workspaces
264
+ // fully offline. Memoized (failure included) so a batch with many v0.1
265
+ // features resolves once and doesn't re-print the same backend error.
266
+ let v01DepsMemo;
267
+ const getV01Deps = () => {
268
+ if (v01DepsMemo !== undefined)
269
+ return v01DepsMemo;
270
+ const loaded = loadRcWithWarn(opts.rcPath);
271
+ if (loaded.hadError) {
272
+ v01DepsMemo = null;
273
+ return null;
274
+ }
275
+ const backend = requireBackend(loaded.rc, { backend: opts.backend });
276
+ if (!backend) {
277
+ v01DepsMemo = null;
278
+ return null;
279
+ }
280
+ // Resolve .prdrc defaults from the backend the user is actually using.
281
+ // (`requireBackend` already returned its name as `backend.name`; we look
282
+ // it up in the rc to pull default_team / default_project.)
283
+ const rcEntry = loaded.rc && backend.name !== "(env)"
284
+ ? loaded.rc.backends[backend.name]
285
+ : undefined;
286
+ v01DepsMemo = {
287
+ backend,
288
+ rcDefaults: {
289
+ team: rcEntry?.default_team,
290
+ project: rcEntry?.default_project,
291
+ },
292
+ };
293
+ return v01DepsMemo;
241
294
  };
242
295
  const prompt = opts.promptFn ?? defaultPrompt;
243
296
  // Batch mode: no slug → iterate all features.
@@ -252,15 +305,7 @@ export async function runMigrateYamlCommand(opts, cwd) {
252
305
  let failed = 0;
253
306
  for (const slug of slugs) {
254
307
  const yamlPath = join(cwd, ".prd", "features", slug, "working", "prd.yaml");
255
- // Resolve per-feature (could differ per slug if user types a different
256
- // team/project at the prompt). Cache once when flags + defaults force
257
- // the same answer; otherwise re-prompt is the path the spec requires.
258
- const resolved = await resolveTeamProject(opts, rcDefaults, m, prompt);
259
- if (!resolved) {
260
- failed++;
261
- continue;
262
- }
263
- const outcome = await migrateOneFeature(slug, yamlPath, backend, resolved, m, opts.fetchFn);
308
+ const outcome = await migrateOneFeature(slug, yamlPath, opts, getV01Deps, m, prompt);
264
309
  if (outcome === "upgraded")
265
310
  upgraded++;
266
311
  else if (outcome === "skipped")
@@ -269,6 +314,9 @@ export async function runMigrateYamlCommand(opts, cwd) {
269
314
  failed++;
270
315
  }
271
316
  process.stdout.write(m.migrate_yaml_batch_summary({ upgraded, skipped, failed }) + "\n");
317
+ if (upgraded > 0) {
318
+ process.stdout.write(m.migrate_yaml_reformat_note + "\n");
319
+ }
272
320
  return failed > 0 ? 1 : 0;
273
321
  }
274
322
  // Single-slug mode.
@@ -279,10 +327,10 @@ export async function runMigrateYamlCommand(opts, cwd) {
279
327
  "\n");
280
328
  return 1;
281
329
  }
282
- const resolved = await resolveTeamProject(opts, rcDefaults, m, prompt);
283
- if (!resolved)
284
- return 1;
285
- const outcome = await migrateOneFeature(opts.slug, yamlPath, backend, resolved, m, opts.fetchFn);
330
+ const outcome = await migrateOneFeature(opts.slug, yamlPath, opts, getV01Deps, m, prompt);
331
+ if (outcome === "upgraded") {
332
+ process.stdout.write(m.migrate_yaml_reformat_note + "\n");
333
+ }
286
334
  return outcome === "failed" ? 1 : 0;
287
335
  }
288
336
  //# sourceMappingURL=migrate-yaml.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"migrate-yaml.js","sourceRoot":"","sources":["../../src/commands/migrate-yaml.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrate-yaml.js","sourceRoot":"","sources":["../../src/commands/migrate-yaml.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export interface ReopenOptions {
2
+ feature?: string;
3
+ }
4
+ export declare function runReopenCommand(opts: ReopenOptions, cwd: string): number;
@@ -0,0 +1,76 @@
1
+ /**
2
+ * `prd reopen <slug>` — shipped feature 重开迭代(v1.23 spec §1)。
3
+ * working 复位 draft + 删除交付痕迹字段;manifest 交付史保留(frozen 不可变事实)。
4
+ * 旧 open_questions 的 resolution/resolved_at 保留(历史事实)——下次 closeout 门禁 3 只约束新增题。
5
+ */
6
+ import { existsSync, readFileSync, writeFileSync } from "node:fs";
7
+ import { join } from "node:path";
8
+ import { parseDocument } from "yaml";
9
+ import { getMessages, readLocale } from "../i18n/index.js";
10
+ import * as c from "../formatter/colors.js";
11
+ import { readManifest } from "../workspace.js";
12
+ import { patchYamlText } from "../yamlPatch.js";
13
+ export function runReopenCommand(opts, cwd) {
14
+ const m = getMessages(readLocale());
15
+ const manifestRead = readManifest(join(cwd, ".prd/manifest.json"));
16
+ if (!manifestRead.ok) {
17
+ process.stderr.write(c.fail("✗ ") + m.freeze_workspace_not_init + "\n");
18
+ return 1;
19
+ }
20
+ const workingPath = join(cwd, ".prd/features", opts.feature, "working/prd.yaml");
21
+ if (!existsSync(workingPath)) {
22
+ process.stderr.write(c.fail("✗ ") + m.freeze_working_not_found({ slug: opts.feature }) + "\n");
23
+ return 1;
24
+ }
25
+ let yamlText;
26
+ try {
27
+ yamlText = readFileSync(workingPath, "utf8");
28
+ }
29
+ catch (e) {
30
+ process.stderr.write(c.fail("✗ ") +
31
+ m.closeout_fs_error({ operation: "read working/prd.yaml", message: e.message }) +
32
+ "\n");
33
+ return 2;
34
+ }
35
+ let doc;
36
+ try {
37
+ doc = parseDocument(yamlText);
38
+ }
39
+ catch {
40
+ process.stderr.write(c.fail("✗ ") + m.reopen_yaml_parse_error + "\n");
41
+ return 1;
42
+ }
43
+ if (doc.errors.length > 0) {
44
+ process.stderr.write(c.fail("✗ ") + m.reopen_yaml_parse_error + "\n");
45
+ return 1;
46
+ }
47
+ const status = doc.getIn(["meta", "lifecycle", "status"]);
48
+ if (status !== "shipped") {
49
+ process.stderr.write(c.fail("✗ ") + m.reopen_not_shipped({ status: String(status ?? "(missing)") }) + "\n");
50
+ return 1;
51
+ }
52
+ const today = new Date().toISOString().slice(0, 10);
53
+ const patched = patchYamlText(yamlText, [
54
+ { path: ["meta", "lifecycle", "status"], value: "draft" },
55
+ { path: ["meta", "lifecycle", "updated_at"], value: today },
56
+ { path: ["meta", "lifecycle", "shipped_at"], value: "", op: "delete" },
57
+ { path: ["meta", "lifecycle", "landed_commit"], value: "", op: "delete" },
58
+ ]);
59
+ if (!patched.ok) {
60
+ process.stderr.write(c.fail("✗ ") + m.reopen_patch_fail({ message: patched.error }) + "\n");
61
+ return 1;
62
+ }
63
+ try {
64
+ writeFileSync(workingPath, patched.text, "utf8");
65
+ }
66
+ catch (e) {
67
+ process.stderr.write(c.fail("✗ ") +
68
+ m.closeout_fs_error({ operation: "write working/prd.yaml", message: e.message }) +
69
+ "\n");
70
+ return 2;
71
+ }
72
+ process.stdout.write(c.pass("✓ ") + m.reopen_success({ slug: opts.feature }) + "\n");
73
+ process.stdout.write(m.reopen_next_version_hint + "\n");
74
+ return 0;
75
+ }
76
+ //# sourceMappingURL=reopen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reopen.js","sourceRoot":"","sources":["../../src/commands/reopen.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export interface ResolveOptions {
2
+ feature?: string;
3
+ qid?: string;
4
+ text?: string;
5
+ defer?: string;
6
+ force?: boolean;
7
+ }
8
+ export declare function runResolveCommand(opts: ResolveOptions, cwd: string): number;
@@ -0,0 +1,127 @@
1
+ /**
2
+ * `prd resolve <slug> <qid>` — open_questions 决议回填(v1.22 spec §1)。
3
+ * dogfood 实证决议回填是全流程唯一手编 yaml 环节(注释密集不能库往返);
4
+ * 本命令经 yamlPatch(style:block)下沉,closeout 全程零手编。
5
+ * 字段语义与 closeout classifyQuestion 口径对齐:resolution 非空 ⇒ resolved(忽略 deferred_to 占位)。
6
+ */
7
+ import { existsSync, readFileSync, writeFileSync } from "node:fs";
8
+ import { join } from "node:path";
9
+ import { parseDocument } from "yaml";
10
+ import { getMessages, readLocale } from "../i18n/index.js";
11
+ import * as c from "../formatter/colors.js";
12
+ import { readManifest } from "../workspace.js";
13
+ import { patchYamlText } from "../yamlPatch.js";
14
+ import { SCHEMA_VERSION_CURRENT } from "../schema/prd.js";
15
+ export function runResolveCommand(opts, cwd) {
16
+ const m = getMessages(readLocale());
17
+ const has = (s) => typeof s === "string" && s.trim() !== "";
18
+ // 互斥二选一
19
+ const hasText = typeof opts.text === "string";
20
+ const hasDefer = typeof opts.defer === "string";
21
+ if (hasText === hasDefer) {
22
+ process.stderr.write(c.fail("✗ ") + m.resolve_flags_exclusive + "\n");
23
+ return 1;
24
+ }
25
+ const value = (hasText ? opts.text : opts.defer).trim();
26
+ if (value === "") {
27
+ process.stderr.write(c.fail("✗ ") + m.resolve_value_empty + "\n");
28
+ return 1;
29
+ }
30
+ // workspace + working 存在(与 closeout 门禁同套消息)
31
+ const manifestRead = readManifest(join(cwd, ".prd/manifest.json"));
32
+ if (!manifestRead.ok) {
33
+ process.stderr.write(c.fail("✗ ") + m.freeze_workspace_not_init + "\n");
34
+ return 1;
35
+ }
36
+ const workingPath = join(cwd, ".prd/features", opts.feature, "working/prd.yaml");
37
+ if (!existsSync(workingPath)) {
38
+ process.stderr.write(c.fail("✗ ") + m.freeze_working_not_found({ slug: opts.feature }) + "\n");
39
+ return 1;
40
+ }
41
+ let yamlText;
42
+ try {
43
+ yamlText = readFileSync(workingPath, "utf8");
44
+ }
45
+ catch (e) {
46
+ process.stderr.write(c.fail("✗ ") +
47
+ m.closeout_fs_error({ operation: "read working/prd.yaml", message: e.message }) +
48
+ "\n");
49
+ return 2;
50
+ }
51
+ let doc;
52
+ try {
53
+ doc = parseDocument(yamlText);
54
+ }
55
+ catch {
56
+ process.stderr.write(c.fail("✗ ") + m.resolve_yaml_parse_error + "\n");
57
+ return 1;
58
+ }
59
+ if (doc.errors.length > 0) {
60
+ process.stderr.write(c.fail("✗ ") + m.resolve_yaml_parse_error + "\n");
61
+ return 1;
62
+ }
63
+ // schema v0.3-only(resolution/resolved_at 是 v0.3 字段)
64
+ const schemaVersion = doc.get("schema_version");
65
+ if (schemaVersion !== SCHEMA_VERSION_CURRENT) {
66
+ process.stderr.write(c.fail("✗ ") +
67
+ m.resolve_schema_version_required({ got: String(schemaVersion ?? "(missing)") }) +
68
+ "\n");
69
+ return 1;
70
+ }
71
+ // 按 id 定位
72
+ const js = doc.toJS();
73
+ const questions = Array.isArray(js.open_questions) ? js.open_questions : [];
74
+ const idx = questions.findIndex((q) => q.id === opts.qid);
75
+ if (idx < 0) {
76
+ process.stderr.write(c.fail("✗ ") +
77
+ m.resolve_qid_not_found({
78
+ qid: opts.qid,
79
+ ids: questions.map((q) => String(q.id ?? "?")).join(", ") || "(none)",
80
+ }) +
81
+ "\n");
82
+ return 1;
83
+ }
84
+ // 防重跑:resolved_at 非空 = 已处理;裸 --defer 不得销毁已有 resolution 草稿(spec §1.2)
85
+ const target = questions[idx];
86
+ const guarded = has(target.resolved_at) || (hasDefer && has(target.resolution));
87
+ if (guarded && opts.force !== true) {
88
+ const current = has(target.resolution)
89
+ ? target.resolution.split("\n")[0].slice(0, 80)
90
+ : `deferred_to: ${target.deferred_to ?? ""}`;
91
+ process.stderr.write(c.fail("✗ ") + m.resolve_already_resolved({ qid: opts.qid, current }) + "\n");
92
+ return 1;
93
+ }
94
+ const today = new Date().toISOString().slice(0, 10);
95
+ const edits = hasText
96
+ ? [
97
+ { path: ["open_questions", idx, "resolution"], value, style: "block" },
98
+ { path: ["open_questions", idx, "resolved_at"], value: today },
99
+ ]
100
+ : [
101
+ // --force --defer 覆盖已 --text 的 Q 必须清 resolution,否则 classifyQuestion 仍判 resolved
102
+ { path: ["open_questions", idx, "resolution"], value: "" },
103
+ { path: ["open_questions", idx, "deferred_to"], value },
104
+ { path: ["open_questions", idx, "resolved_at"], value: today },
105
+ ];
106
+ const patched = patchYamlText(yamlText, edits);
107
+ if (!patched.ok) {
108
+ process.stderr.write(c.fail("✗ ") + m.resolve_patch_fail({ message: patched.error }) + "\n");
109
+ return 1;
110
+ }
111
+ try {
112
+ writeFileSync(workingPath, patched.text, "utf8");
113
+ }
114
+ catch (e) {
115
+ process.stderr.write(c.fail("✗ ") +
116
+ m.closeout_fs_error({ operation: "write working/prd.yaml", message: e.message }) +
117
+ "\n");
118
+ return 2;
119
+ }
120
+ process.stdout.write(c.pass("✓ ") +
121
+ (hasText
122
+ ? m.resolve_success_text({ slug: opts.feature, qid: opts.qid, first_line: value.split("\n")[0].slice(0, 80) })
123
+ : m.resolve_success_defer({ slug: opts.feature, qid: opts.qid, target: value })) +
124
+ "\n");
125
+ return 0;
126
+ }
127
+ //# sourceMappingURL=resolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/commands/resolve.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,9 @@
1
1
  /** 定位 bundled skill:published(dist/commands→dist/skill)优先,缺则回退 dev 源(src/commands→packages/skill)。 */
2
2
  export declare function resolveBundledSkillDir(): string | null;
3
+ /** 读 skill 目录 SKILL.md 的版本行(`**当前版本:** SKILL.md vX.Y …`);读不到/解析不出返回 null。 */
4
+ export declare function readSkillVersion(skillDir: string): string | null;
5
+ /** 默认已装 skill 目录(与 install 默认目标一致)。导出供 closeout 自检。 */
6
+ export declare function installedSkillDir(parent?: string): string;
3
7
  export interface SkillInstallOptions {
4
8
  dir?: string;
5
9
  }
@@ -19,6 +19,21 @@ export function resolveBundledSkillDir() {
19
19
  ];
20
20
  return candidates.find((p) => existsSync(join(p, "SKILL.md"))) ?? null;
21
21
  }
22
+ /** 读 skill 目录 SKILL.md 的版本行(`**当前版本:** SKILL.md vX.Y …`);读不到/解析不出返回 null。 */
23
+ export function readSkillVersion(skillDir) {
24
+ try {
25
+ const content = readFileSync(join(skillDir, "SKILL.md"), "utf8");
26
+ const match = /\*\*当前版本[::]\*\*\s*SKILL\.md\s+(v\d+\.\d+)/.exec(content);
27
+ return match ? match[1] : null;
28
+ }
29
+ catch {
30
+ return null;
31
+ }
32
+ }
33
+ /** 默认已装 skill 目录(与 install 默认目标一致)。导出供 closeout 自检。 */
34
+ export function installedSkillDir(parent) {
35
+ return join(parent ?? join(homedir(), ".claude", "skills"), SKILL_NAME);
36
+ }
22
37
  export function runSkillInstallCommand(opts = {}) {
23
38
  const m = getMessages(readLocale());
24
39
  const srcDir = resolveBundledSkillDir();
@@ -27,7 +42,7 @@ export function runSkillInstallCommand(opts = {}) {
27
42
  return 1;
28
43
  }
29
44
  const parent = opts.dir ?? join(homedir(), ".claude", "skills");
30
- const target = join(parent, SKILL_NAME);
45
+ const target = installedSkillDir(opts.dir);
31
46
  mkdirSync(parent, { recursive: true });
32
47
  cpSync(srcDir, target, { recursive: true }); // 默认覆盖(幂等=升级)
33
48
  process.stdout.write(c.pass("✓ ") + m.skill_installed({ path: target }) + "\n");
@@ -1 +1 @@
1
- {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,CAAC,MAAM,wBAAwB,CAAC;AAE5C,MAAM,UAAU,GAAG,mBAAmB,CAAC;AAEvC,sGAAsG;AACtG,MAAM,UAAU,sBAAsB;IACpC,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAQ,+BAA+B;IAC5F,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,EAAyB,wCAAwC;QACnG,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,UAAU,CAAC,EAAmB,yCAAyC;KACrG,CAAC;IACF,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AACzE,CAAC;AAID,MAAM,UAAU,sBAAsB,CAAC,OAA4B,EAAE;IACnE,MAAM,CAAC,GAAG,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,sBAAsB,EAAE,CAAC;IACxC,IAAI,CAAC,MAAM,EAAE,CAAC;QAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;QAAC,OAAO,CAAC,CAAC;IAAC,CAAC;IAC3F,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAgB,cAAc;IAC1E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAChF,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,MAAM,CAAC,GAAG,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,sBAAsB,EAAE,CAAC;IACxC,IAAI,CAAC,MAAM,EAAE,CAAC;QAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;QAAC,OAAO,CAAC,CAAC;IAAC,CAAC;IAC3F,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACrE,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,MAAM,CAAC,GAAG,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,sBAAsB,EAAE,CAAC;IACxC,IAAI,CAAC,MAAM,EAAE,CAAC;QAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;QAAC,OAAO,CAAC,CAAC;IAAC,CAAC;IAC3F,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACpC,OAAO,CAAC,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  export interface ValidateOptions {
2
2
  feature?: string;
3
3
  path?: string;
4
+ /** v1.22 内部选项(closeout→freeze 链路消音):成功时抑制 human 输出,失败照常。CLI 不暴露。 */
5
+ quiet?: boolean;
4
6
  }
5
7
  export declare function runValidateCommand(opts: ValidateOptions, cwd: string): number;
@@ -122,8 +122,10 @@ export function runValidateCommand(opts, cwd) {
122
122
  : input.kind === "single_feature"
123
123
  ? `.prd/features/${input.slug}/working/prd.yaml`
124
124
  : input.path;
125
- const out = formatHuman(result, locale, { pattern });
126
- process.stdout.write(out + "\n");
125
+ if (!(opts.quiet === true && exitCode === 0)) {
126
+ const out = formatHuman(result, locale, { pattern });
127
+ process.stdout.write(out + "\n");
128
+ }
127
129
  return exitCode;
128
130
  }
129
131
  //# sourceMappingURL=validate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}