spec-wave 2.1.1

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 (175) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +327 -0
  3. package/README.zh-CN.md +327 -0
  4. package/RELEASING.md +52 -0
  5. package/assets/README.md +30 -0
  6. package/assets/ci/samples/README.md +76 -0
  7. package/assets/ci/samples/hgm-ingest.yml.example +42 -0
  8. package/assets/ci/samples/lint-wiki-delta.pin.yml.example +47 -0
  9. package/assets/ci/samples/lint-wiki-delta.yml.example +49 -0
  10. package/assets/ci/samples/pytest.yml.example +49 -0
  11. package/assets/ci/samples/quality.yml.example +56 -0
  12. package/assets/ci/samples/skills-validate.yml.example +38 -0
  13. package/assets/ci/samples/tech-graph.yml.example +55 -0
  14. package/assets/coding_wiki/templates/README.md +115 -0
  15. package/assets/coding_wiki/templates/_index.md +19 -0
  16. package/assets/coding_wiki/templates/context.md +18 -0
  17. package/assets/coding_wiki/templates/stable.md +26 -0
  18. package/assets/coding_wiki/templates/topics/wiki_layout.md +13 -0
  19. package/assets/coding_wiki/templates/topics/wikilinks_export.md +13 -0
  20. package/assets/coding_wiki/templates/volatile.md +25 -0
  21. package/assets/docs/POINTER_ONBOARDING.md +9 -0
  22. package/assets/docs/POINTER_RUNBOOK_wiki_delta.md +18 -0
  23. package/assets/docs/POINTER_SDD_HAT_FLOW.md +8 -0
  24. package/assets/docs/POINTER_USER_GUIDE.md +8 -0
  25. package/assets/graph/stubs/README.md +6 -0
  26. package/assets/graph/templates/00_main.graph.yaml +72 -0
  27. package/assets/graph/templates/00_main.md +85 -0
  28. package/assets/graph/templates/01_struct.md +38 -0
  29. package/assets/graph/templates/02_version.md +7 -0
  30. package/assets/graph/templates/10_flow_MAIN.graph.yaml +105 -0
  31. package/assets/graph/templates/10_flow_MAIN.md +103 -0
  32. package/assets/graph/templates/99_mermaid_protocol.md +156 -0
  33. package/assets/graph/templates/README.md +66 -0
  34. package/assets/harness/README.md +18 -0
  35. package/assets/harness/discipline-coverage.yaml +320 -0
  36. package/assets/harness/invokes/README.md +22 -0
  37. package/assets/harness/invokes/TEMPLATE_invoke.md +61 -0
  38. package/assets/harness/lifecycle.yaml +127 -0
  39. package/assets/harness/prompts/00-orchestrator.md +91 -0
  40. package/assets/harness/prompts/10-spec-requirements.md +63 -0
  41. package/assets/harness/prompts/10-task-requirements.md +70 -0
  42. package/assets/harness/prompts/20-spec-audit.md +50 -0
  43. package/assets/harness/prompts/20-task-audit.md +90 -0
  44. package/assets/harness/prompts/30-execute-code.md +64 -0
  45. package/assets/harness/prompts/40-self-check.md +65 -0
  46. package/assets/harness/prompts/FRAGMENT_00_delegate_only_v1_zh.md +19 -0
  47. package/assets/harness/prompts/FRAGMENT_30_gate_verify_v1_zh.md +34 -0
  48. package/assets/harness/prompts/FRAGMENT_30_invoke_block_v1_zh.md +28 -0
  49. package/assets/harness/prompts/FRAGMENT_hat_reanchor_v1_zh.md +19 -0
  50. package/assets/harness/prompts/README.md +67 -0
  51. package/assets/harness/prompts/TEMPLATE_30_gate_stop.md +36 -0
  52. package/assets/harness/templates/FRAGMENT_task_domain_infer_v1_zh.md +16 -0
  53. package/assets/harness/templates/ONTOLOGY_consumer_slice_v1.md +41 -0
  54. package/assets/harness/templates/QUICKREF_v1_zh.md +35 -0
  55. package/assets/harness/templates/README.md +50 -0
  56. package/assets/harness/templates/TASK_TEMPLATE.md +133 -0
  57. package/assets/harness/templates/TASK_done_README.md +76 -0
  58. package/assets/harness/templates/TASK_epic.md +103 -0
  59. package/assets/harness/templates/TASK_graph_bootstrap.md +115 -0
  60. package/assets/harness/templates/VIEW_done_by_domain.md +66 -0
  61. package/assets/harness/templates/VIEW_done_thin_pointer.md +16 -0
  62. package/assets/ide/adapters/AGENTS.md.fragment.example +33 -0
  63. package/assets/ide/adapters/CLAUDE.md.fragment.example +32 -0
  64. package/assets/ide/adapters/README.md +57 -0
  65. package/assets/ide/adapters/cursor-harness-starter.mdc.example +39 -0
  66. package/assets/ide/commands/claude/kit/apply-standards.md +10 -0
  67. package/assets/ide/commands/claude/kit/gate-status.md +10 -0
  68. package/assets/ide/commands/claude/kit/graph-check.md +8 -0
  69. package/assets/ide/commands/claude/kit/hat-00-delegate.md +9 -0
  70. package/assets/ide/commands/claude/kit/hat-10-spec.md +9 -0
  71. package/assets/ide/commands/claude/kit/hat-10-task.md +9 -0
  72. package/assets/ide/commands/claude/kit/hat-20-spec-audit.md +9 -0
  73. package/assets/ide/commands/claude/kit/hat-20-task-audit.md +9 -0
  74. package/assets/ide/commands/claude/kit/hat-reanchor.md +8 -0
  75. package/assets/ide/commands/claude/kit/init-guide.md +16 -0
  76. package/assets/ide/commands/claude/kit/sync-prompts-guide.md +9 -0
  77. package/assets/ide/commands/claude/kit/verify.md +16 -0
  78. package/assets/ide/commands/cursor/kit-apply-standards.md +12 -0
  79. package/assets/ide/commands/cursor/kit-gate-status.md +12 -0
  80. package/assets/ide/commands/cursor/kit-graph-check.md +10 -0
  81. package/assets/ide/commands/cursor/kit-hat-00-delegate.md +11 -0
  82. package/assets/ide/commands/cursor/kit-hat-10-spec.md +11 -0
  83. package/assets/ide/commands/cursor/kit-hat-10-task.md +11 -0
  84. package/assets/ide/commands/cursor/kit-hat-20-spec-audit.md +11 -0
  85. package/assets/ide/commands/cursor/kit-hat-20-task-audit.md +11 -0
  86. package/assets/ide/commands/cursor/kit-hat-reanchor.md +10 -0
  87. package/assets/ide/commands/cursor/kit-init-guide.md +18 -0
  88. package/assets/ide/commands/cursor/kit-sync-prompts-guide.md +11 -0
  89. package/assets/ide/commands/cursor/kit-verify.md +18 -0
  90. package/assets/ide/host-adapt/README.md +113 -0
  91. package/assets/ide/host-adapt/examples/mvp-hosts.yaml +78 -0
  92. package/assets/ide/host-adapt/host-adapt.schema.json +97 -0
  93. package/assets/ide/skills-orch/README.md +16 -0
  94. package/assets/ide/skills-orch/kit-apply-standards/SKILL.md +17 -0
  95. package/assets/ide/skills-orch/kit-gate-status/SKILL.md +17 -0
  96. package/assets/ide/skills-orch/kit-hat-reanchor/SKILL.md +15 -0
  97. package/assets/ide/skills-orch/kit-init-guide/SKILL.md +23 -0
  98. package/assets/ide/skills-orch/kit-verify/SKILL.md +23 -0
  99. package/assets/ontology.yaml +113 -0
  100. package/assets/skills/README.md +37 -0
  101. package/assets/skills/harness-00-delegate-only/SKILL.md +19 -0
  102. package/assets/skills/harness-10-spec/SKILL.md +63 -0
  103. package/assets/skills/harness-10-task/SKILL.md +70 -0
  104. package/assets/skills/harness-20-spec-audit/SKILL.md +50 -0
  105. package/assets/skills/harness-20-task-audit/SKILL.md +90 -0
  106. package/assets/skills/harness-20-task-audit/references/TEMPLATE_30_gate_stop.md +36 -0
  107. package/assets/skills/harness-hat-reanchor/SKILL.md +19 -0
  108. package/assets/standards/POINTER_workspace_truth_v1_zh.md +42 -0
  109. package/assets/standards/README.md +35 -0
  110. package/assets/standards/SOURCES_v1_zh.md +49 -0
  111. package/assets/standards/TEMPLATE_CODING_BASELINE_L1_v1_zh.md +88 -0
  112. package/assets/standards/TEMPLATE_CODING_BASELINE_L2_backend_v1_zh.md +75 -0
  113. package/assets/standards/TEMPLATE_CODING_BASELINE_L2_frontend_v1_zh.md +76 -0
  114. package/bin/dsh-coding-kit.js +7 -0
  115. package/bin/specgate.js +7 -0
  116. package/bin/validate_template_compliance.py +470 -0
  117. package/cordis.patch.yml +5 -0
  118. package/lib/cli-checks.d.ts +68 -0
  119. package/lib/cli-checks.js +812 -0
  120. package/lib/cli-checks.js.map +1 -0
  121. package/lib/cli-graph-hgm.d.ts +74 -0
  122. package/lib/cli-graph-hgm.js +416 -0
  123. package/lib/cli-graph-hgm.js.map +1 -0
  124. package/lib/cli-graph-yaml.d.ts +79 -0
  125. package/lib/cli-graph-yaml.js +602 -0
  126. package/lib/cli-graph-yaml.js.map +1 -0
  127. package/lib/cli-graph.d.ts +1 -0
  128. package/lib/cli-graph.js +199 -0
  129. package/lib/cli-graph.js.map +1 -0
  130. package/lib/cli-host.d.ts +24 -0
  131. package/lib/cli-host.js +1197 -0
  132. package/lib/cli-host.js.map +1 -0
  133. package/lib/cli-lifecycle.d.ts +2 -0
  134. package/lib/cli-lifecycle.js +401 -0
  135. package/lib/cli-lifecycle.js.map +1 -0
  136. package/lib/cli-refresh-ide-blocks.d.ts +66 -0
  137. package/lib/cli-refresh-ide-blocks.js +484 -0
  138. package/lib/cli-refresh-ide-blocks.js.map +1 -0
  139. package/lib/cli-shared.d.ts +74 -0
  140. package/lib/cli-shared.js +281 -0
  141. package/lib/cli-shared.js.map +1 -0
  142. package/lib/cli-skills.d.ts +52 -0
  143. package/lib/cli-skills.js +363 -0
  144. package/lib/cli-skills.js.map +1 -0
  145. package/lib/cli-status.d.ts +2 -0
  146. package/lib/cli-status.js +251 -0
  147. package/lib/cli-status.js.map +1 -0
  148. package/lib/cli-sync-prompts.d.ts +25 -0
  149. package/lib/cli-sync-prompts.js +158 -0
  150. package/lib/cli-sync-prompts.js.map +1 -0
  151. package/lib/cli-sync.d.ts +2 -0
  152. package/lib/cli-sync.js +124 -0
  153. package/lib/cli-sync.js.map +1 -0
  154. package/lib/cli-task-extra.d.ts +53 -0
  155. package/lib/cli-task-extra.js +408 -0
  156. package/lib/cli-task-extra.js.map +1 -0
  157. package/lib/cli-timeline.d.ts +28 -0
  158. package/lib/cli-timeline.js +68 -0
  159. package/lib/cli-timeline.js.map +1 -0
  160. package/lib/cli-wiki.d.ts +21 -0
  161. package/lib/cli-wiki.js +189 -0
  162. package/lib/cli-wiki.js.map +1 -0
  163. package/lib/cli.d.ts +22 -0
  164. package/lib/cli.js +1034 -0
  165. package/lib/cli.js.map +1 -0
  166. package/lib/host-contract.d.ts +23 -0
  167. package/lib/host-contract.js +143 -0
  168. package/lib/host-contract.js.map +1 -0
  169. package/lib/index.d.ts +18 -0
  170. package/lib/index.js +290 -0
  171. package/lib/index.js.map +1 -0
  172. package/lib/yaml.d.ts +4 -0
  173. package/lib/yaml.js +10 -0
  174. package/lib/yaml.js.map +1 -0
  175. package/package.json +87 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-status.js","sourceRoot":"","sources":["../src/cli-status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /** Starter 白名单(R1 钉死 · 不含 README.md) */
2
+ export declare const SYNC_PROMPT_FILES: readonly ["00-orchestrator.md", "10-task-requirements.md", "10-spec-requirements.md", "20-task-audit.md", "20-spec-audit.md", "30-execute-code.md", "40-self-check.md", "FRAGMENT_30_gate_verify_v1_zh.md", "FRAGMENT_hat_reanchor_v1_zh.md", "FRAGMENT_00_delegate_only_v1_zh.md", "TEMPLATE_30_gate_stop.md"];
3
+ export declare const SYNC_TEMPLATE_FILES: readonly ["TASK_TEMPLATE.md"];
4
+ export type SyncPromptEntry = {
5
+ packageRel: string;
6
+ targetRel: string;
7
+ };
8
+ export type SyncPromptsPlan = {
9
+ skip: SyncPromptEntry[];
10
+ add: SyncPromptEntry[];
11
+ conflict: SyncPromptEntry[];
12
+ };
13
+ export type SyncPromptsResult = SyncPromptsPlan & {
14
+ dryRun: boolean;
15
+ written: SyncPromptEntry[];
16
+ };
17
+ export declare const SYNC_PROMPTS_USAGE = "\u7528\u6CD5:\n npx spec-wave sync prompts [--target PATH] [--yes] [--force] [--json]\n\n \u9ED8\u8BA4 dry-run\uFF08\u96F6\u5199\u5165\uFF09\uFF1B--yes \u5199\u5165 add \u9879\u5E76\u521B\u5EFA\u76EE\u6807\u76EE\u5F55\uFF1Bconflict \u9ED8\u8BA4\u4E0D\u8986\u76D6\uFF0C--force \u663E\u5F0F\u8986\u76D6\u3002\n \u524D\u7F6E\uFF1A\u76EE\u6807\u4ED3\u987B\u5DF2\u6709 .coding-kit/manifest.json\uFF08\u6216 legacy .cyning-harness/manifest.json\uFF1B\u5148 init\uFF09\u3002";
18
+ export declare function listSyncPromptEntries(): SyncPromptEntry[];
19
+ export declare function planSyncPrompts(target: string, root?: string): SyncPromptsPlan;
20
+ export declare function applySyncPrompts(target: string, opts: {
21
+ yes: boolean;
22
+ force: boolean;
23
+ root?: string;
24
+ }): SyncPromptsResult;
25
+ export declare function cmdSyncPrompts(args: string[]): Promise<void>;
@@ -0,0 +1,158 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
3
+ import path from 'node:path';
4
+ import { fail, packageRoot, resolveLayoutFile, resolveTarget, takeOption } from "./cli-shared.js";
5
+ /** Starter 白名单(R1 钉死 · 不含 README.md) */
6
+ export const SYNC_PROMPT_FILES = [
7
+ '00-orchestrator.md',
8
+ '10-task-requirements.md',
9
+ '10-spec-requirements.md',
10
+ '20-task-audit.md',
11
+ '20-spec-audit.md',
12
+ '30-execute-code.md',
13
+ '40-self-check.md',
14
+ 'FRAGMENT_30_gate_verify_v1_zh.md',
15
+ 'FRAGMENT_hat_reanchor_v1_zh.md',
16
+ 'FRAGMENT_00_delegate_only_v1_zh.md',
17
+ 'TEMPLATE_30_gate_stop.md',
18
+ ];
19
+ export const SYNC_TEMPLATE_FILES = ['TASK_TEMPLATE.md'];
20
+ export const SYNC_PROMPTS_USAGE = `用法:
21
+ npx spec-wave sync prompts [--target PATH] [--yes] [--force] [--json]
22
+
23
+ 默认 dry-run(零写入);--yes 写入 add 项并创建目标目录;conflict 默认不覆盖,--force 显式覆盖。
24
+ 前置:目标仓须已有 .coding-kit/manifest.json(或 legacy .cyning-harness/manifest.json;先 init)。`;
25
+ function sha256(body) {
26
+ return createHash('sha256').update(body, 'utf8').digest('hex');
27
+ }
28
+ function manifestPath(target) {
29
+ return resolveLayoutFile(target, 'manifest.json').abs;
30
+ }
31
+ function hasManifest(target) {
32
+ return resolveLayoutFile(target, 'manifest.json').source !== 'none';
33
+ }
34
+ export function listSyncPromptEntries() {
35
+ const out = [];
36
+ for (const name of SYNC_PROMPT_FILES) {
37
+ out.push({
38
+ packageRel: path.join('assets', 'harness', 'prompts', name).replace(/\\/g, '/'),
39
+ targetRel: path.join('docs', 'harness', 'prompts', name).replace(/\\/g, '/'),
40
+ });
41
+ }
42
+ for (const name of SYNC_TEMPLATE_FILES) {
43
+ out.push({
44
+ packageRel: path.join('assets', 'harness', 'templates', name).replace(/\\/g, '/'),
45
+ targetRel: path.join('docs', 'harness', 'templates', name).replace(/\\/g, '/'),
46
+ });
47
+ }
48
+ return out;
49
+ }
50
+ export function planSyncPrompts(target, root = packageRoot()) {
51
+ const skip = [];
52
+ const add = [];
53
+ const conflict = [];
54
+ for (const entry of listSyncPromptEntries()) {
55
+ const srcAbs = path.join(root, entry.packageRel);
56
+ const destAbs = path.join(target, entry.targetRel);
57
+ const srcBody = readFileSync(srcAbs, 'utf8');
58
+ const srcHash = sha256(srcBody);
59
+ if (!existsSync(destAbs)) {
60
+ add.push(entry);
61
+ continue;
62
+ }
63
+ const destHash = sha256(readFileSync(destAbs, 'utf8'));
64
+ if (destHash === srcHash)
65
+ skip.push(entry);
66
+ else
67
+ conflict.push(entry);
68
+ }
69
+ return { skip, add, conflict };
70
+ }
71
+ function printHumanReport(result) {
72
+ const mode = result.dryRun ? 'dry-run' : 'apply';
73
+ console.log(`sync prompts (${mode}):`);
74
+ const sections = [
75
+ ['skip', result.skip],
76
+ ['add', result.add],
77
+ ['conflict', result.conflict],
78
+ ];
79
+ for (const [label, items] of sections) {
80
+ console.log(` ${label} (${items.length}):`);
81
+ if (items.length === 0) {
82
+ console.log(' (无)');
83
+ continue;
84
+ }
85
+ for (const item of items) {
86
+ if (label === 'conflict') {
87
+ console.log(` ${item.targetRel} — 本地已改 · 未覆盖 · 对照包内 ${item.packageRel}`);
88
+ }
89
+ else {
90
+ console.log(` ${item.targetRel}`);
91
+ }
92
+ }
93
+ }
94
+ if (!result.dryRun && result.written.length > 0) {
95
+ console.log(` written (${result.written.length}):`);
96
+ for (const item of result.written)
97
+ console.log(` ${item.targetRel}`);
98
+ }
99
+ if (result.dryRun) {
100
+ console.log('(dry-run · 零写入 · 加 --yes 执行)');
101
+ }
102
+ }
103
+ export function applySyncPrompts(target, opts) {
104
+ const root = opts.root ?? packageRoot();
105
+ const plan = planSyncPrompts(target, root);
106
+ const dryRun = !opts.yes;
107
+ const written = [];
108
+ if (dryRun) {
109
+ return { ...plan, dryRun: true, written };
110
+ }
111
+ const toWrite = [...plan.add];
112
+ if (opts.force)
113
+ toWrite.push(...plan.conflict);
114
+ for (const entry of toWrite) {
115
+ const srcAbs = path.join(root, entry.packageRel);
116
+ const destAbs = path.join(target, entry.targetRel);
117
+ mkdirSync(path.dirname(destAbs), { recursive: true });
118
+ writeFileSync(destAbs, readFileSync(srcAbs, 'utf8'), 'utf8');
119
+ written.push(entry);
120
+ }
121
+ return { ...plan, dryRun: false, written };
122
+ }
123
+ export async function cmdSyncPrompts(args) {
124
+ if (args.includes('--help') || args.includes('-h')) {
125
+ console.log(SYNC_PROMPTS_USAGE);
126
+ return;
127
+ }
128
+ const yes = args.includes('--yes');
129
+ const force = args.includes('--force');
130
+ let rest = args.filter((a) => a !== '--yes' && a !== '--force');
131
+ const json = rest.includes('--json');
132
+ rest = rest.filter((a) => a !== '--json');
133
+ const { value: targetArg, rest: r1 } = takeOption(rest, '--target');
134
+ rest = r1;
135
+ if (rest.length > 0)
136
+ fail(`sync prompts 未知参数: ${rest.join(' ')}`);
137
+ const target = resolveTarget(process.cwd(), targetArg);
138
+ if (!hasManifest(target)) {
139
+ fail('未接入(无 .coding-kit/manifest.json 或 legacy .cyning-harness/manifest.json)。建议: npx spec-wave init --preset harness-only --yes');
140
+ }
141
+ const result = applySyncPrompts(target, { yes, force });
142
+ if (json) {
143
+ console.log(JSON.stringify({
144
+ dry_run: result.dryRun,
145
+ skip: result.skip.map((e) => e.targetRel),
146
+ add: result.add.map((e) => e.targetRel),
147
+ conflict: result.conflict.map((e) => e.targetRel),
148
+ written: result.written.map((e) => e.targetRel),
149
+ }, null, 2));
150
+ }
151
+ else {
152
+ printHumanReport(result);
153
+ }
154
+ if (!result.dryRun && result.conflict.length > 0 && !force) {
155
+ fail('存在 conflict 文件未覆盖(加 --force 显式覆盖,或人工合并后重跑)', 1);
156
+ }
157
+ }
158
+ //# sourceMappingURL=cli-sync-prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-sync-prompts.js","sourceRoot":"","sources":["../src/cli-sync-prompts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function generateInvokeIndex(target: string): string;
2
+ export declare function cmdSync(args: string[]): Promise<void>;
@@ -0,0 +1,124 @@
1
+ import { existsSync, mkdirSync, readdirSync, readFileSync, statSync, writeFileSync } from 'node:fs';
2
+ import path from 'node:path';
3
+ import { cmdSyncPrompts, SYNC_PROMPTS_USAGE } from "./cli-sync-prompts.js";
4
+ import { fail, kitLayoutJoin, parseHarnessMeta, resolveTarget, takeOption } from "./cli-shared.js";
5
+ function extractHatId(filename) {
6
+ const base = path.basename(filename, '.md');
7
+ const parts = base.split('_');
8
+ if (parts.length >= 3 && parts[0] === 'invoke')
9
+ return parts[2];
10
+ return 'unknown';
11
+ }
12
+ function collectTaskEntryPoints(target) {
13
+ const entryBySlug = {};
14
+ const taskDirs = [path.join(target, 'docs/tasks/active'), path.join(target, 'docs/tasks/done')];
15
+ for (const dir of taskDirs) {
16
+ if (!existsSync(dir))
17
+ continue;
18
+ for (const name of readdirSync(dir)) {
19
+ if (!name.startsWith('task_') || !name.endsWith('.md'))
20
+ continue;
21
+ const content = readFileSync(path.join(dir, name), 'utf8');
22
+ const meta = parseHarnessMeta(content);
23
+ const slug = meta.task_slug;
24
+ if (!slug)
25
+ continue;
26
+ const points = {};
27
+ if (meta.entry_invoke_10_task)
28
+ points['10'] = meta.entry_invoke_10_task;
29
+ if (meta.entry_invoke_20)
30
+ points['20'] = meta.entry_invoke_20;
31
+ if (meta.entry_invoke_30)
32
+ points['30'] = meta.entry_invoke_30;
33
+ if (Object.keys(points).length === 0)
34
+ continue;
35
+ entryBySlug[slug] = {
36
+ task_markdown: path.relative(target, path.join(dir, name)).replace(/\\/g, '/'),
37
+ entry_points: points,
38
+ };
39
+ }
40
+ }
41
+ return entryBySlug;
42
+ }
43
+ export function generateInvokeIndex(target) {
44
+ const byTaskDir = path.join(target, 'docs/harness/invokes/by-task');
45
+ const indexFile = kitLayoutJoin(target, 'invoke_index.json');
46
+ const index = {
47
+ schema_version: '1',
48
+ generated_at: new Date().toISOString(),
49
+ index: {},
50
+ };
51
+ const taskEntries = collectTaskEntryPoints(target);
52
+ if (existsSync(byTaskDir)) {
53
+ for (const entry of readdirSync(byTaskDir, { withFileTypes: true })) {
54
+ if (!entry.isDirectory())
55
+ continue;
56
+ const slug = entry.name;
57
+ const slugDir = path.join(byTaskDir, slug);
58
+ const invokes = [];
59
+ for (const file of readdirSync(slugDir)) {
60
+ if (!file.startsWith('invoke_') || !file.endsWith('.md'))
61
+ continue;
62
+ const full = path.join(slugDir, file);
63
+ const stat = statSync(full);
64
+ invokes.push({
65
+ path: path.relative(target, full).replace(/\\/g, '/'),
66
+ mtime: Math.floor(stat.mtimeMs / 1000),
67
+ hat_id: extractHatId(file),
68
+ });
69
+ }
70
+ invokes.sort((a, b) => a.path.localeCompare(b.path));
71
+ const record = { task_slug: slug, invokes };
72
+ if (taskEntries[slug]) {
73
+ record.task_markdown = taskEntries[slug].task_markdown;
74
+ record.entry_points = taskEntries[slug].entry_points;
75
+ }
76
+ index.index[slug] = record;
77
+ }
78
+ }
79
+ for (const [slug, data] of Object.entries(taskEntries)) {
80
+ if (!index.index[slug]) {
81
+ index.index[slug] = {
82
+ task_slug: slug,
83
+ invokes: [],
84
+ task_markdown: data.task_markdown,
85
+ entry_points: data.entry_points,
86
+ };
87
+ }
88
+ }
89
+ mkdirSync(path.dirname(indexFile), { recursive: true });
90
+ writeFileSync(indexFile, `${JSON.stringify(index, null, 2)}\n`);
91
+ return indexFile;
92
+ }
93
+ const SYNC_INDEX_USAGE = `用法: npx spec-wave sync index [--target PATH]`;
94
+ export async function cmdSync(args) {
95
+ if (args.includes('--help') || args.includes('-h')) {
96
+ console.log(`用法:
97
+ npx spec-wave sync index [--target PATH]
98
+ npx spec-wave sync prompts [--target PATH] [--yes] [--force] [--json]
99
+
100
+ 子命令 help: sync index --help · sync prompts --help`);
101
+ return;
102
+ }
103
+ const [sub, ...rest] = args;
104
+ if (sub === 'prompts') {
105
+ await cmdSyncPrompts(rest);
106
+ return;
107
+ }
108
+ if (sub === 'index' && (rest.includes('--help') || rest.includes('-h'))) {
109
+ console.log(SYNC_INDEX_USAGE);
110
+ return;
111
+ }
112
+ if (sub !== 'index') {
113
+ fail(`sync 子命令未知: ${sub ?? '(空)'}\n用法: sync index [--target PATH] · sync prompts [--target PATH] [--yes] [--force] [--json]`);
114
+ }
115
+ let remaining = rest;
116
+ const { value: targetArg, rest: r1 } = takeOption(remaining, '--target');
117
+ remaining = r1;
118
+ if (remaining.length > 0)
119
+ fail(`sync index 未知参数: ${remaining.join(' ')}`);
120
+ const target = resolveTarget(process.cwd(), targetArg);
121
+ const out = generateInvokeIndex(target);
122
+ console.log(`invoke_index: ${out}`);
123
+ }
124
+ //# sourceMappingURL=cli-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-sync.js","sourceRoot":"","sources":["../src/cli-sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ export declare function lintDoneInvokes(target: string): {
2
+ ok: boolean;
3
+ missing: string[];
4
+ extra: string[];
5
+ doneCount: number;
6
+ invokeCount: number;
7
+ };
8
+ export declare const WIKI_DELTA_LITERALS: Set<string>;
9
+ export declare const WIKI_DELTA_PATHISH_RE: RegExp;
10
+ export declare function lintWikiDeltaMissing(target: string, options?: {
11
+ scope?: string;
12
+ strict?: boolean;
13
+ }): {
14
+ ok: boolean;
15
+ missing: {
16
+ path: string;
17
+ scope: string;
18
+ code: string;
19
+ detail: string;
20
+ }[];
21
+ issues: {
22
+ path: string;
23
+ scope: string;
24
+ code: string;
25
+ detail: string;
26
+ }[];
27
+ scanned: number;
28
+ scope: string;
29
+ strict: boolean;
30
+ };
31
+ export declare function loadTaskSidecar(filePath: string): Record<string, unknown>;
32
+ export declare function validateTaskSidecar(data: Record<string, unknown>, fileLabel?: string): {
33
+ ok: boolean;
34
+ errors: string[];
35
+ };
36
+ export declare function checkTaskFile(filePath: string, options?: {
37
+ noCircular?: boolean;
38
+ registryDirs?: string[];
39
+ }): {
40
+ file: string;
41
+ task_slug: unknown;
42
+ validation: {
43
+ ok: boolean;
44
+ errors: string[];
45
+ };
46
+ cycle: {
47
+ ok: boolean;
48
+ cycle?: string[];
49
+ };
50
+ };
51
+ export declare function cmdTaskLintDone(args: string[]): Promise<void>;
52
+ export declare function cmdTaskLintWikiDelta(args: string[]): Promise<void>;
53
+ export declare function cmdTaskCheck(rest: string[]): Promise<void>;