specdo 1.0.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/CHANGELOG.md +139 -0
- package/README.md +308 -0
- package/README.zh-CN.md +306 -0
- package/bin/specdo.js +3 -0
- package/dist/cli/index.d.ts +15 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +297 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/commands/_shared.d.ts +45 -0
- package/dist/commands/_shared.d.ts.map +1 -0
- package/dist/commands/_shared.js +124 -0
- package/dist/commands/_shared.js.map +1 -0
- package/dist/commands/apply.d.ts +30 -0
- package/dist/commands/apply.d.ts.map +1 -0
- package/dist/commands/apply.js +393 -0
- package/dist/commands/apply.js.map +1 -0
- package/dist/commands/archive.d.ts +25 -0
- package/dist/commands/archive.d.ts.map +1 -0
- package/dist/commands/archive.js +362 -0
- package/dist/commands/archive.js.map +1 -0
- package/dist/commands/doctor.d.ts +21 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +180 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/domains.d.ts +14 -0
- package/dist/commands/domains.d.ts.map +1 -0
- package/dist/commands/domains.js +107 -0
- package/dist/commands/domains.js.map +1 -0
- package/dist/commands/explore.d.ts +48 -0
- package/dist/commands/explore.d.ts.map +1 -0
- package/dist/commands/explore.js +378 -0
- package/dist/commands/explore.js.map +1 -0
- package/dist/commands/init.d.ts +45 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +243 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.d.ts +23 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +135 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/propose.d.ts +22 -0
- package/dist/commands/propose.d.ts.map +1 -0
- package/dist/commands/propose.js +316 -0
- package/dist/commands/propose.js.map +1 -0
- package/dist/commands/show.d.ts +15 -0
- package/dist/commands/show.d.ts.map +1 -0
- package/dist/commands/show.js +214 -0
- package/dist/commands/show.js.map +1 -0
- package/dist/commands/status.d.ts +17 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +146 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/sync.d.ts +21 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +113 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/validate.d.ts +117 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +446 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/core/apply-brief-renderer.d.ts +35 -0
- package/dist/core/apply-brief-renderer.d.ts.map +1 -0
- package/dist/core/apply-brief-renderer.js +242 -0
- package/dist/core/apply-brief-renderer.js.map +1 -0
- package/dist/core/config-store.d.ts +190 -0
- package/dist/core/config-store.d.ts.map +1 -0
- package/dist/core/config-store.js +280 -0
- package/dist/core/config-store.js.map +1 -0
- package/dist/core/context-store.d.ts +96 -0
- package/dist/core/context-store.d.ts.map +1 -0
- package/dist/core/context-store.js +426 -0
- package/dist/core/context-store.js.map +1 -0
- package/dist/core/json-schemas.d.ts +349 -0
- package/dist/core/json-schemas.d.ts.map +1 -0
- package/dist/core/json-schemas.js +125 -0
- package/dist/core/json-schemas.js.map +1 -0
- package/dist/core/skill-content/cross-domain.d.ts +12 -0
- package/dist/core/skill-content/cross-domain.d.ts.map +1 -0
- package/dist/core/skill-content/cross-domain.js +291 -0
- package/dist/core/skill-content/cross-domain.js.map +1 -0
- package/dist/core/skill-content/protocol-examples.d.ts +13 -0
- package/dist/core/skill-content/protocol-examples.d.ts.map +1 -0
- package/dist/core/skill-content/protocol-examples.js +190 -0
- package/dist/core/skill-content/protocol-examples.js.map +1 -0
- package/dist/core/skill-content/workflow-content.d.ts +25 -0
- package/dist/core/skill-content/workflow-content.d.ts.map +1 -0
- package/dist/core/skill-content/workflow-content.js +1572 -0
- package/dist/core/skill-content/workflow-content.js.map +1 -0
- package/dist/core/skill-exporter.d.ts +186 -0
- package/dist/core/skill-exporter.d.ts.map +1 -0
- package/dist/core/skill-exporter.js +922 -0
- package/dist/core/skill-exporter.js.map +1 -0
- package/dist/core/spec-sync.d.ts +65 -0
- package/dist/core/spec-sync.d.ts.map +1 -0
- package/dist/core/spec-sync.js +226 -0
- package/dist/core/spec-sync.js.map +1 -0
- package/dist/core/task-parser.d.ts +58 -0
- package/dist/core/task-parser.d.ts.map +1 -0
- package/dist/core/task-parser.js +244 -0
- package/dist/core/task-parser.js.map +1 -0
- package/dist/core/template-renderer.d.ts +51 -0
- package/dist/core/template-renderer.d.ts.map +1 -0
- package/dist/core/template-renderer.js +362 -0
- package/dist/core/template-renderer.js.map +1 -0
- package/dist/domains/architecture.d.ts +34 -0
- package/dist/domains/architecture.d.ts.map +1 -0
- package/dist/domains/architecture.js +341 -0
- package/dist/domains/architecture.js.map +1 -0
- package/dist/domains/backend.d.ts +35 -0
- package/dist/domains/backend.d.ts.map +1 -0
- package/dist/domains/backend.js +367 -0
- package/dist/domains/backend.js.map +1 -0
- package/dist/domains/frontend.d.ts +36 -0
- package/dist/domains/frontend.d.ts.map +1 -0
- package/dist/domains/frontend.js +373 -0
- package/dist/domains/frontend.js.map +1 -0
- package/dist/domains/index.d.ts +49 -0
- package/dist/domains/index.d.ts.map +1 -0
- package/dist/domains/index.js +255 -0
- package/dist/domains/index.js.map +1 -0
- package/dist/domains/operations.d.ts +37 -0
- package/dist/domains/operations.d.ts.map +1 -0
- package/dist/domains/operations.js +344 -0
- package/dist/domains/operations.js.map +1 -0
- package/dist/domains/pool-ranking.d.ts +43 -0
- package/dist/domains/pool-ranking.d.ts.map +1 -0
- package/dist/domains/pool-ranking.js +153 -0
- package/dist/domains/pool-ranking.js.map +1 -0
- package/dist/domains/quality.d.ts +45 -0
- package/dist/domains/quality.d.ts.map +1 -0
- package/dist/domains/quality.js +368 -0
- package/dist/domains/quality.js.map +1 -0
- package/dist/domains/security.d.ts +19 -0
- package/dist/domains/security.d.ts.map +1 -0
- package/dist/domains/security.js +364 -0
- package/dist/domains/security.js.map +1 -0
- package/dist/domains/signal-match.d.ts +25 -0
- package/dist/domains/signal-match.d.ts.map +1 -0
- package/dist/domains/signal-match.js +67 -0
- package/dist/domains/signal-match.js.map +1 -0
- package/dist/domains/types.d.ts +354 -0
- package/dist/domains/types.d.ts.map +1 -0
- package/dist/domains/types.js +12 -0
- package/dist/domains/types.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/protocols/index.d.ts +36 -0
- package/dist/protocols/index.d.ts.map +1 -0
- package/dist/protocols/index.js +85 -0
- package/dist/protocols/index.js.map +1 -0
- package/dist/protocols/review-to-solid.d.ts +32 -0
- package/dist/protocols/review-to-solid.d.ts.map +1 -0
- package/dist/protocols/review-to-solid.js +309 -0
- package/dist/protocols/review-to-solid.js.map +1 -0
- package/dist/utils/prompt.d.ts +37 -0
- package/dist/utils/prompt.d.ts.map +1 -0
- package/dist/utils/prompt.js +81 -0
- package/dist/utils/prompt.js.map +1 -0
- package/package.json +80 -0
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 命令 --json 输出契约(schema 文档化)
|
|
3
|
+
*
|
|
4
|
+
* 本模块定义所有支持 `--json` 选项的命令输出格式:
|
|
5
|
+
* - list / show / status / validate / doctor
|
|
6
|
+
*
|
|
7
|
+
* 提供两套出口:
|
|
8
|
+
* 1. TypeScript interface — 编译期类型保护,命令实现引用
|
|
9
|
+
* 2. Zod schema — 运行时校验,测试断言 stdout 解析后符合 schema
|
|
10
|
+
*
|
|
11
|
+
* 新增 --json 模式或修改字段时,必须同步更新本文件并补测试,避免下游
|
|
12
|
+
* 集成依赖隐式破坏。
|
|
13
|
+
*/
|
|
14
|
+
import { z } from 'zod';
|
|
15
|
+
export declare const doctorCheckSchema: z.ZodObject<{
|
|
16
|
+
label: z.ZodString;
|
|
17
|
+
status: z.ZodEnum<{
|
|
18
|
+
ok: "ok";
|
|
19
|
+
warn: "warn";
|
|
20
|
+
fail: "fail";
|
|
21
|
+
}>;
|
|
22
|
+
detail: z.ZodString;
|
|
23
|
+
required: z.ZodBoolean;
|
|
24
|
+
}, z.core.$strip>;
|
|
25
|
+
export declare const doctorJsonSchema: z.ZodObject<{
|
|
26
|
+
checks: z.ZodArray<z.ZodObject<{
|
|
27
|
+
label: z.ZodString;
|
|
28
|
+
status: z.ZodEnum<{
|
|
29
|
+
ok: "ok";
|
|
30
|
+
warn: "warn";
|
|
31
|
+
fail: "fail";
|
|
32
|
+
}>;
|
|
33
|
+
detail: z.ZodString;
|
|
34
|
+
required: z.ZodBoolean;
|
|
35
|
+
}, z.core.$strip>>;
|
|
36
|
+
summary: z.ZodEnum<{
|
|
37
|
+
ok: "ok";
|
|
38
|
+
failed: "failed";
|
|
39
|
+
}>;
|
|
40
|
+
}, z.core.$strip>;
|
|
41
|
+
export type DoctorCheck = z.infer<typeof doctorCheckSchema>;
|
|
42
|
+
export type DoctorJsonOutput = z.infer<typeof doctorJsonSchema>;
|
|
43
|
+
export declare const validateIssueSchema: z.ZodObject<{
|
|
44
|
+
level: z.ZodEnum<{
|
|
45
|
+
error: "error";
|
|
46
|
+
warn: "warn";
|
|
47
|
+
}>;
|
|
48
|
+
scope: z.ZodString;
|
|
49
|
+
path: z.ZodString;
|
|
50
|
+
message: z.ZodString;
|
|
51
|
+
}, z.core.$strip>;
|
|
52
|
+
export declare const validateJsonSchema: z.ZodObject<{
|
|
53
|
+
summary: z.ZodObject<{
|
|
54
|
+
errors: z.ZodNumber;
|
|
55
|
+
warnings: z.ZodNumber;
|
|
56
|
+
}, z.core.$strip>;
|
|
57
|
+
issues: z.ZodArray<z.ZodObject<{
|
|
58
|
+
level: z.ZodEnum<{
|
|
59
|
+
error: "error";
|
|
60
|
+
warn: "warn";
|
|
61
|
+
}>;
|
|
62
|
+
scope: z.ZodString;
|
|
63
|
+
path: z.ZodString;
|
|
64
|
+
message: z.ZodString;
|
|
65
|
+
}, z.core.$strip>>;
|
|
66
|
+
}, z.core.$strip>;
|
|
67
|
+
export type ValidateIssue = z.infer<typeof validateIssueSchema>;
|
|
68
|
+
export type ValidateJsonOutput = z.infer<typeof validateJsonSchema>;
|
|
69
|
+
/** active / archived 模式的 entry */
|
|
70
|
+
export declare const listChangeEntrySchema: z.ZodObject<{
|
|
71
|
+
name: z.ZodString;
|
|
72
|
+
stage: z.ZodString;
|
|
73
|
+
tasksCompleted: z.ZodNumber;
|
|
74
|
+
tasksTotal: z.ZodNumber;
|
|
75
|
+
updatedAt: z.ZodNullable<z.ZodString>;
|
|
76
|
+
hasConflicts: z.ZodBoolean;
|
|
77
|
+
}, z.core.$strip>;
|
|
78
|
+
export declare const listChangesJsonSchema: z.ZodObject<{
|
|
79
|
+
kind: z.ZodEnum<{
|
|
80
|
+
active: "active";
|
|
81
|
+
archived: "archived";
|
|
82
|
+
}>;
|
|
83
|
+
entries: z.ZodArray<z.ZodObject<{
|
|
84
|
+
name: z.ZodString;
|
|
85
|
+
stage: z.ZodString;
|
|
86
|
+
tasksCompleted: z.ZodNumber;
|
|
87
|
+
tasksTotal: z.ZodNumber;
|
|
88
|
+
updatedAt: z.ZodNullable<z.ZodString>;
|
|
89
|
+
hasConflicts: z.ZodBoolean;
|
|
90
|
+
}, z.core.$strip>>;
|
|
91
|
+
}, z.core.$strip>;
|
|
92
|
+
/** specs 模式 entry 是相对路径字符串 */
|
|
93
|
+
export declare const listSpecsJsonSchema: z.ZodObject<{
|
|
94
|
+
kind: z.ZodLiteral<"specs">;
|
|
95
|
+
entries: z.ZodArray<z.ZodString>;
|
|
96
|
+
}, z.core.$strip>;
|
|
97
|
+
export declare const listJsonSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
98
|
+
kind: z.ZodEnum<{
|
|
99
|
+
active: "active";
|
|
100
|
+
archived: "archived";
|
|
101
|
+
}>;
|
|
102
|
+
entries: z.ZodArray<z.ZodObject<{
|
|
103
|
+
name: z.ZodString;
|
|
104
|
+
stage: z.ZodString;
|
|
105
|
+
tasksCompleted: z.ZodNumber;
|
|
106
|
+
tasksTotal: z.ZodNumber;
|
|
107
|
+
updatedAt: z.ZodNullable<z.ZodString>;
|
|
108
|
+
hasConflicts: z.ZodBoolean;
|
|
109
|
+
}, z.core.$strip>>;
|
|
110
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
111
|
+
kind: z.ZodLiteral<"specs">;
|
|
112
|
+
entries: z.ZodArray<z.ZodString>;
|
|
113
|
+
}, z.core.$strip>]>;
|
|
114
|
+
export type ListChangeEntry = z.infer<typeof listChangeEntrySchema>;
|
|
115
|
+
export type ListChangesJson = z.infer<typeof listChangesJsonSchema>;
|
|
116
|
+
export type ListSpecsJson = z.infer<typeof listSpecsJsonSchema>;
|
|
117
|
+
export type ListJsonOutput = z.infer<typeof listJsonSchema>;
|
|
118
|
+
/** show <change> --json */
|
|
119
|
+
export declare const showChangeJsonSchema: z.ZodObject<{
|
|
120
|
+
kind: z.ZodLiteral<"change">;
|
|
121
|
+
location: z.ZodString;
|
|
122
|
+
path: z.ZodString;
|
|
123
|
+
context: z.ZodUnknown;
|
|
124
|
+
tasks: z.ZodObject<{
|
|
125
|
+
total: z.ZodNumber;
|
|
126
|
+
completed: z.ZodNumber;
|
|
127
|
+
}, z.core.$strip>;
|
|
128
|
+
}, z.core.$strip>;
|
|
129
|
+
/** show --type spec <name> --json */
|
|
130
|
+
export declare const showSpecJsonSchema: z.ZodObject<{
|
|
131
|
+
kind: z.ZodLiteral<"spec">;
|
|
132
|
+
path: z.ZodString;
|
|
133
|
+
sizeBytes: z.ZodNumber;
|
|
134
|
+
content: z.ZodString;
|
|
135
|
+
}, z.core.$strip>;
|
|
136
|
+
export declare const showJsonSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
137
|
+
kind: z.ZodLiteral<"change">;
|
|
138
|
+
location: z.ZodString;
|
|
139
|
+
path: z.ZodString;
|
|
140
|
+
context: z.ZodUnknown;
|
|
141
|
+
tasks: z.ZodObject<{
|
|
142
|
+
total: z.ZodNumber;
|
|
143
|
+
completed: z.ZodNumber;
|
|
144
|
+
}, z.core.$strip>;
|
|
145
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
146
|
+
kind: z.ZodLiteral<"spec">;
|
|
147
|
+
path: z.ZodString;
|
|
148
|
+
sizeBytes: z.ZodNumber;
|
|
149
|
+
content: z.ZodString;
|
|
150
|
+
}, z.core.$strip>]>;
|
|
151
|
+
export type ShowChangeJson = z.infer<typeof showChangeJsonSchema>;
|
|
152
|
+
export type ShowSpecJson = z.infer<typeof showSpecJsonSchema>;
|
|
153
|
+
export type ShowJsonOutput = z.infer<typeof showJsonSchema>;
|
|
154
|
+
/**
|
|
155
|
+
* ChangeSummary — status 命令在 detail / overview 共享的结构。
|
|
156
|
+
* 与 src/commands/status.ts 中的 ChangeSummary interface 对齐。
|
|
157
|
+
*/
|
|
158
|
+
export declare const statusChangeSummarySchema: z.ZodObject<{
|
|
159
|
+
name: z.ZodString;
|
|
160
|
+
location: z.ZodEnum<{
|
|
161
|
+
active: "active";
|
|
162
|
+
archived: "archived";
|
|
163
|
+
}>;
|
|
164
|
+
stage: z.ZodString;
|
|
165
|
+
tasksCompleted: z.ZodNumber;
|
|
166
|
+
tasksTotal: z.ZodNumber;
|
|
167
|
+
evidenceMissing: z.ZodNumber;
|
|
168
|
+
hasUnresolvedConflicts: z.ZodBoolean;
|
|
169
|
+
hasForcedConflicts: z.ZodBoolean;
|
|
170
|
+
updatedAt: z.ZodNullable<z.ZodString>;
|
|
171
|
+
}, z.core.$strip>;
|
|
172
|
+
/** status --change <name> --json */
|
|
173
|
+
export declare const statusDetailJsonSchema: z.ZodObject<{
|
|
174
|
+
kind: z.ZodLiteral<"status">;
|
|
175
|
+
summary: z.ZodObject<{
|
|
176
|
+
name: z.ZodString;
|
|
177
|
+
location: z.ZodEnum<{
|
|
178
|
+
active: "active";
|
|
179
|
+
archived: "archived";
|
|
180
|
+
}>;
|
|
181
|
+
stage: z.ZodString;
|
|
182
|
+
tasksCompleted: z.ZodNumber;
|
|
183
|
+
tasksTotal: z.ZodNumber;
|
|
184
|
+
evidenceMissing: z.ZodNumber;
|
|
185
|
+
hasUnresolvedConflicts: z.ZodBoolean;
|
|
186
|
+
hasForcedConflicts: z.ZodBoolean;
|
|
187
|
+
updatedAt: z.ZodNullable<z.ZodString>;
|
|
188
|
+
}, z.core.$strip>;
|
|
189
|
+
}, z.core.$strip>;
|
|
190
|
+
/** status --json (no --change) */
|
|
191
|
+
export declare const statusOverviewJsonSchema: z.ZodObject<{
|
|
192
|
+
kind: z.ZodLiteral<"status-overview">;
|
|
193
|
+
changes: z.ZodArray<z.ZodObject<{
|
|
194
|
+
name: z.ZodString;
|
|
195
|
+
location: z.ZodEnum<{
|
|
196
|
+
active: "active";
|
|
197
|
+
archived: "archived";
|
|
198
|
+
}>;
|
|
199
|
+
stage: z.ZodString;
|
|
200
|
+
tasksCompleted: z.ZodNumber;
|
|
201
|
+
tasksTotal: z.ZodNumber;
|
|
202
|
+
evidenceMissing: z.ZodNumber;
|
|
203
|
+
hasUnresolvedConflicts: z.ZodBoolean;
|
|
204
|
+
hasForcedConflicts: z.ZodBoolean;
|
|
205
|
+
updatedAt: z.ZodNullable<z.ZodString>;
|
|
206
|
+
}, z.core.$strip>>;
|
|
207
|
+
}, z.core.$strip>;
|
|
208
|
+
export declare const statusJsonSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
209
|
+
kind: z.ZodLiteral<"status">;
|
|
210
|
+
summary: z.ZodObject<{
|
|
211
|
+
name: z.ZodString;
|
|
212
|
+
location: z.ZodEnum<{
|
|
213
|
+
active: "active";
|
|
214
|
+
archived: "archived";
|
|
215
|
+
}>;
|
|
216
|
+
stage: z.ZodString;
|
|
217
|
+
tasksCompleted: z.ZodNumber;
|
|
218
|
+
tasksTotal: z.ZodNumber;
|
|
219
|
+
evidenceMissing: z.ZodNumber;
|
|
220
|
+
hasUnresolvedConflicts: z.ZodBoolean;
|
|
221
|
+
hasForcedConflicts: z.ZodBoolean;
|
|
222
|
+
updatedAt: z.ZodNullable<z.ZodString>;
|
|
223
|
+
}, z.core.$strip>;
|
|
224
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
225
|
+
kind: z.ZodLiteral<"status-overview">;
|
|
226
|
+
changes: z.ZodArray<z.ZodObject<{
|
|
227
|
+
name: z.ZodString;
|
|
228
|
+
location: z.ZodEnum<{
|
|
229
|
+
active: "active";
|
|
230
|
+
archived: "archived";
|
|
231
|
+
}>;
|
|
232
|
+
stage: z.ZodString;
|
|
233
|
+
tasksCompleted: z.ZodNumber;
|
|
234
|
+
tasksTotal: z.ZodNumber;
|
|
235
|
+
evidenceMissing: z.ZodNumber;
|
|
236
|
+
hasUnresolvedConflicts: z.ZodBoolean;
|
|
237
|
+
hasForcedConflicts: z.ZodBoolean;
|
|
238
|
+
updatedAt: z.ZodNullable<z.ZodString>;
|
|
239
|
+
}, z.core.$strip>>;
|
|
240
|
+
}, z.core.$strip>]>;
|
|
241
|
+
export type StatusChangeSummary = z.infer<typeof statusChangeSummarySchema>;
|
|
242
|
+
export type StatusDetailJson = z.infer<typeof statusDetailJsonSchema>;
|
|
243
|
+
export type StatusOverviewJson = z.infer<typeof statusOverviewJsonSchema>;
|
|
244
|
+
export type StatusJsonOutput = z.infer<typeof statusJsonSchema>;
|
|
245
|
+
/**
|
|
246
|
+
* 命令名 → schema 注册。测试通过 `parseJsonOutputFor(cmd, raw)` 验证
|
|
247
|
+
* `--json` 输出符合契约。
|
|
248
|
+
*/
|
|
249
|
+
export declare const JSON_SCHEMAS: {
|
|
250
|
+
readonly doctor: z.ZodObject<{
|
|
251
|
+
checks: z.ZodArray<z.ZodObject<{
|
|
252
|
+
label: z.ZodString;
|
|
253
|
+
status: z.ZodEnum<{
|
|
254
|
+
ok: "ok";
|
|
255
|
+
warn: "warn";
|
|
256
|
+
fail: "fail";
|
|
257
|
+
}>;
|
|
258
|
+
detail: z.ZodString;
|
|
259
|
+
required: z.ZodBoolean;
|
|
260
|
+
}, z.core.$strip>>;
|
|
261
|
+
summary: z.ZodEnum<{
|
|
262
|
+
ok: "ok";
|
|
263
|
+
failed: "failed";
|
|
264
|
+
}>;
|
|
265
|
+
}, z.core.$strip>;
|
|
266
|
+
readonly validate: z.ZodObject<{
|
|
267
|
+
summary: z.ZodObject<{
|
|
268
|
+
errors: z.ZodNumber;
|
|
269
|
+
warnings: z.ZodNumber;
|
|
270
|
+
}, z.core.$strip>;
|
|
271
|
+
issues: z.ZodArray<z.ZodObject<{
|
|
272
|
+
level: z.ZodEnum<{
|
|
273
|
+
error: "error";
|
|
274
|
+
warn: "warn";
|
|
275
|
+
}>;
|
|
276
|
+
scope: z.ZodString;
|
|
277
|
+
path: z.ZodString;
|
|
278
|
+
message: z.ZodString;
|
|
279
|
+
}, z.core.$strip>>;
|
|
280
|
+
}, z.core.$strip>;
|
|
281
|
+
readonly list: z.ZodUnion<readonly [z.ZodObject<{
|
|
282
|
+
kind: z.ZodEnum<{
|
|
283
|
+
active: "active";
|
|
284
|
+
archived: "archived";
|
|
285
|
+
}>;
|
|
286
|
+
entries: z.ZodArray<z.ZodObject<{
|
|
287
|
+
name: z.ZodString;
|
|
288
|
+
stage: z.ZodString;
|
|
289
|
+
tasksCompleted: z.ZodNumber;
|
|
290
|
+
tasksTotal: z.ZodNumber;
|
|
291
|
+
updatedAt: z.ZodNullable<z.ZodString>;
|
|
292
|
+
hasConflicts: z.ZodBoolean;
|
|
293
|
+
}, z.core.$strip>>;
|
|
294
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
295
|
+
kind: z.ZodLiteral<"specs">;
|
|
296
|
+
entries: z.ZodArray<z.ZodString>;
|
|
297
|
+
}, z.core.$strip>]>;
|
|
298
|
+
readonly show: z.ZodUnion<readonly [z.ZodObject<{
|
|
299
|
+
kind: z.ZodLiteral<"change">;
|
|
300
|
+
location: z.ZodString;
|
|
301
|
+
path: z.ZodString;
|
|
302
|
+
context: z.ZodUnknown;
|
|
303
|
+
tasks: z.ZodObject<{
|
|
304
|
+
total: z.ZodNumber;
|
|
305
|
+
completed: z.ZodNumber;
|
|
306
|
+
}, z.core.$strip>;
|
|
307
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
308
|
+
kind: z.ZodLiteral<"spec">;
|
|
309
|
+
path: z.ZodString;
|
|
310
|
+
sizeBytes: z.ZodNumber;
|
|
311
|
+
content: z.ZodString;
|
|
312
|
+
}, z.core.$strip>]>;
|
|
313
|
+
readonly status: z.ZodUnion<readonly [z.ZodObject<{
|
|
314
|
+
kind: z.ZodLiteral<"status">;
|
|
315
|
+
summary: z.ZodObject<{
|
|
316
|
+
name: z.ZodString;
|
|
317
|
+
location: z.ZodEnum<{
|
|
318
|
+
active: "active";
|
|
319
|
+
archived: "archived";
|
|
320
|
+
}>;
|
|
321
|
+
stage: z.ZodString;
|
|
322
|
+
tasksCompleted: z.ZodNumber;
|
|
323
|
+
tasksTotal: z.ZodNumber;
|
|
324
|
+
evidenceMissing: z.ZodNumber;
|
|
325
|
+
hasUnresolvedConflicts: z.ZodBoolean;
|
|
326
|
+
hasForcedConflicts: z.ZodBoolean;
|
|
327
|
+
updatedAt: z.ZodNullable<z.ZodString>;
|
|
328
|
+
}, z.core.$strip>;
|
|
329
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
330
|
+
kind: z.ZodLiteral<"status-overview">;
|
|
331
|
+
changes: z.ZodArray<z.ZodObject<{
|
|
332
|
+
name: z.ZodString;
|
|
333
|
+
location: z.ZodEnum<{
|
|
334
|
+
active: "active";
|
|
335
|
+
archived: "archived";
|
|
336
|
+
}>;
|
|
337
|
+
stage: z.ZodString;
|
|
338
|
+
tasksCompleted: z.ZodNumber;
|
|
339
|
+
tasksTotal: z.ZodNumber;
|
|
340
|
+
evidenceMissing: z.ZodNumber;
|
|
341
|
+
hasUnresolvedConflicts: z.ZodBoolean;
|
|
342
|
+
hasForcedConflicts: z.ZodBoolean;
|
|
343
|
+
updatedAt: z.ZodNullable<z.ZodString>;
|
|
344
|
+
}, z.core.$strip>>;
|
|
345
|
+
}, z.core.$strip>]>;
|
|
346
|
+
};
|
|
347
|
+
export type JsonSchemaName = keyof typeof JSON_SCHEMAS;
|
|
348
|
+
export declare function parseJsonOutputFor<K extends JsonSchemaName>(command: K, rawJson: string): z.infer<(typeof JSON_SCHEMAS)[K]>;
|
|
349
|
+
//# sourceMappingURL=json-schemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-schemas.d.ts","sourceRoot":"","sources":["../../src/core/json-schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 命令 --json 输出契约(schema 文档化)
|
|
3
|
+
*
|
|
4
|
+
* 本模块定义所有支持 `--json` 选项的命令输出格式:
|
|
5
|
+
* - list / show / status / validate / doctor
|
|
6
|
+
*
|
|
7
|
+
* 提供两套出口:
|
|
8
|
+
* 1. TypeScript interface — 编译期类型保护,命令实现引用
|
|
9
|
+
* 2. Zod schema — 运行时校验,测试断言 stdout 解析后符合 schema
|
|
10
|
+
*
|
|
11
|
+
* 新增 --json 模式或修改字段时,必须同步更新本文件并补测试,避免下游
|
|
12
|
+
* 集成依赖隐式破坏。
|
|
13
|
+
*/
|
|
14
|
+
import { z } from 'zod';
|
|
15
|
+
// ─── doctor ────────────────────────────────────────────────────
|
|
16
|
+
export const doctorCheckSchema = z.object({
|
|
17
|
+
label: z.string(),
|
|
18
|
+
status: z.enum(['ok', 'warn', 'fail']),
|
|
19
|
+
detail: z.string(),
|
|
20
|
+
required: z.boolean(),
|
|
21
|
+
});
|
|
22
|
+
export const doctorJsonSchema = z.object({
|
|
23
|
+
checks: z.array(doctorCheckSchema),
|
|
24
|
+
summary: z.enum(['ok', 'failed']),
|
|
25
|
+
});
|
|
26
|
+
// ─── validate ──────────────────────────────────────────────────
|
|
27
|
+
export const validateIssueSchema = z.object({
|
|
28
|
+
level: z.enum(['error', 'warn']),
|
|
29
|
+
scope: z.string(),
|
|
30
|
+
path: z.string(),
|
|
31
|
+
message: z.string(),
|
|
32
|
+
});
|
|
33
|
+
export const validateJsonSchema = z.object({
|
|
34
|
+
summary: z.object({
|
|
35
|
+
errors: z.number().int().nonnegative(),
|
|
36
|
+
warnings: z.number().int().nonnegative(),
|
|
37
|
+
}),
|
|
38
|
+
issues: z.array(validateIssueSchema),
|
|
39
|
+
});
|
|
40
|
+
// ─── list ──────────────────────────────────────────────────────
|
|
41
|
+
/** active / archived 模式的 entry */
|
|
42
|
+
export const listChangeEntrySchema = z.object({
|
|
43
|
+
name: z.string(),
|
|
44
|
+
stage: z.string(),
|
|
45
|
+
tasksCompleted: z.number().int().nonnegative(),
|
|
46
|
+
tasksTotal: z.number().int().nonnegative(),
|
|
47
|
+
updatedAt: z.string().nullable(),
|
|
48
|
+
hasConflicts: z.boolean(),
|
|
49
|
+
});
|
|
50
|
+
export const listChangesJsonSchema = z.object({
|
|
51
|
+
kind: z.enum(['active', 'archived']),
|
|
52
|
+
entries: z.array(listChangeEntrySchema),
|
|
53
|
+
});
|
|
54
|
+
/** specs 模式 entry 是相对路径字符串 */
|
|
55
|
+
export const listSpecsJsonSchema = z.object({
|
|
56
|
+
kind: z.literal('specs'),
|
|
57
|
+
entries: z.array(z.string()),
|
|
58
|
+
});
|
|
59
|
+
export const listJsonSchema = z.union([listChangesJsonSchema, listSpecsJsonSchema]);
|
|
60
|
+
// ─── show ──────────────────────────────────────────────────────
|
|
61
|
+
/** show <change> --json */
|
|
62
|
+
export const showChangeJsonSchema = z.object({
|
|
63
|
+
kind: z.literal('change'),
|
|
64
|
+
/** 'active' | 'archived' */
|
|
65
|
+
location: z.string(),
|
|
66
|
+
path: z.string(),
|
|
67
|
+
context: z.unknown(),
|
|
68
|
+
tasks: z.object({
|
|
69
|
+
total: z.number().int().nonnegative(),
|
|
70
|
+
completed: z.number().int().nonnegative(),
|
|
71
|
+
}),
|
|
72
|
+
});
|
|
73
|
+
/** show --type spec <name> --json */
|
|
74
|
+
export const showSpecJsonSchema = z.object({
|
|
75
|
+
kind: z.literal('spec'),
|
|
76
|
+
path: z.string(),
|
|
77
|
+
sizeBytes: z.number().int().nonnegative(),
|
|
78
|
+
content: z.string(),
|
|
79
|
+
});
|
|
80
|
+
export const showJsonSchema = z.union([showChangeJsonSchema, showSpecJsonSchema]);
|
|
81
|
+
// ─── status ────────────────────────────────────────────────────
|
|
82
|
+
/**
|
|
83
|
+
* ChangeSummary — status 命令在 detail / overview 共享的结构。
|
|
84
|
+
* 与 src/commands/status.ts 中的 ChangeSummary interface 对齐。
|
|
85
|
+
*/
|
|
86
|
+
export const statusChangeSummarySchema = z.object({
|
|
87
|
+
name: z.string(),
|
|
88
|
+
location: z.enum(['active', 'archived']),
|
|
89
|
+
stage: z.string(),
|
|
90
|
+
tasksCompleted: z.number().int().nonnegative(),
|
|
91
|
+
tasksTotal: z.number().int().nonnegative(),
|
|
92
|
+
evidenceMissing: z.number().int().nonnegative(),
|
|
93
|
+
hasUnresolvedConflicts: z.boolean(),
|
|
94
|
+
hasForcedConflicts: z.boolean(),
|
|
95
|
+
updatedAt: z.string().nullable(),
|
|
96
|
+
});
|
|
97
|
+
/** status --change <name> --json */
|
|
98
|
+
export const statusDetailJsonSchema = z.object({
|
|
99
|
+
kind: z.literal('status'),
|
|
100
|
+
summary: statusChangeSummarySchema,
|
|
101
|
+
});
|
|
102
|
+
/** status --json (no --change) */
|
|
103
|
+
export const statusOverviewJsonSchema = z.object({
|
|
104
|
+
kind: z.literal('status-overview'),
|
|
105
|
+
changes: z.array(statusChangeSummarySchema),
|
|
106
|
+
});
|
|
107
|
+
export const statusJsonSchema = z.union([statusDetailJsonSchema, statusOverviewJsonSchema]);
|
|
108
|
+
// ─── 中央注册表 ────────────────────────────────────────────────
|
|
109
|
+
/**
|
|
110
|
+
* 命令名 → schema 注册。测试通过 `parseJsonOutputFor(cmd, raw)` 验证
|
|
111
|
+
* `--json` 输出符合契约。
|
|
112
|
+
*/
|
|
113
|
+
export const JSON_SCHEMAS = {
|
|
114
|
+
doctor: doctorJsonSchema,
|
|
115
|
+
validate: validateJsonSchema,
|
|
116
|
+
list: listJsonSchema,
|
|
117
|
+
show: showJsonSchema,
|
|
118
|
+
status: statusJsonSchema,
|
|
119
|
+
};
|
|
120
|
+
export function parseJsonOutputFor(command, rawJson) {
|
|
121
|
+
const parsed = JSON.parse(rawJson);
|
|
122
|
+
const schema = JSON_SCHEMAS[command];
|
|
123
|
+
return schema.parse(parsed);
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=json-schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-schemas.js","sourceRoot":"","sources":["../../src/core/json-schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-Domain Collaboration Notes
|
|
3
|
+
*
|
|
4
|
+
* 每个 domain skill 都会被注入这些"跨领域协同"片段,作为 references/CROSS_DOMAIN.md
|
|
5
|
+
* 写入 progressive-disclosure 子目录。
|
|
6
|
+
*
|
|
7
|
+
* 内容是手写的,因为跨领域协作语义无法从 DomainModule 数据机械推导。
|
|
8
|
+
* 目的是让 agent 知道:触发了 domain X 时,是否应同时考虑 domain Y、
|
|
9
|
+
* 在边界处由谁拥有最终决定权、典型冲突点。
|
|
10
|
+
*/
|
|
11
|
+
export declare const CROSS_DOMAIN_NOTES: Record<string, string>;
|
|
12
|
+
//# sourceMappingURL=cross-domain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cross-domain.d.ts","sourceRoot":"","sources":["../../../src/core/skill-content/cross-domain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA4RrD,CAAC"}
|