@captain_z/zsk 1.2.1 → 1.4.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.
- package/README.md +25 -8
- package/dist/bin.js +57 -16
- package/dist/bin.js.map +1 -1
- package/dist/commands/add-flow.d.ts +6 -1
- package/dist/commands/add-flow.js +30 -5
- package/dist/commands/add-flow.js.map +1 -1
- package/dist/commands/add.js +19 -19
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/check.js +6 -3
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/config.d.ts +1 -0
- package/dist/commands/config.js +23 -0
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/issue.d.ts +12 -0
- package/dist/commands/issue.js +92 -0
- package/dist/commands/issue.js.map +1 -0
- package/dist/commands/module.d.ts +8 -0
- package/dist/commands/module.js +40 -0
- package/dist/commands/module.js.map +1 -0
- package/dist/commands/prep.js +13 -2
- package/dist/commands/prep.js.map +1 -1
- package/dist/commands/project-init.js +6 -6
- package/dist/commands/project-init.js.map +1 -1
- package/dist/core/config.d.ts +19 -3
- package/dist/core/config.js +63 -16
- package/dist/core/config.js.map +1 -1
- package/dist/core/raw-manifest.d.ts +11 -3
- package/dist/core/raw-manifest.js +16 -8
- package/dist/core/raw-manifest.js.map +1 -1
- package/dist/core/scaffolder.d.ts +1 -0
- package/dist/core/scaffolder.js +13 -6
- package/dist/core/scaffolder.js.map +1 -1
- package/dist/ui/prompts.d.ts +1 -0
- package/dist/ui/prompts.js +188 -1
- package/dist/ui/prompts.js.map +1 -1
- package/package.json +4 -3
- package/{templates/project-init/.zsk/schemas → schemas}/module.schema.json +36 -25
- package/{templates/project-init/.zsk/schemas → schemas}/zsk-config.schema.json +185 -37
- package/templates/{project-init/.issues/_templates → issue/default}/issue.md +5 -5
- package/templates/module/frontend-module/design.md +6 -0
- package/templates/module/frontend-module/module.yaml +26 -0
- package/templates/module/frontend-module/spec.md +6 -0
- package/templates/module/frontend-module/tasks.md +6 -0
- package/templates/module/frontend-module/verification.md +6 -0
- package/templates/project-init/.issues/README.md +6 -7
- package/templates/project-init/.raws/README.md +11 -34
- package/templates/project-init/.zsk/config.yaml +22 -0
- package/templates/project-init/{SYSTEM-SPEC.md → docs/SYSTEM-SPEC.md} +16 -18
- package/templates/project-init/.raws/FIGMA-INDEX.md +0 -38
- package/templates/project-init/.raws/SRS.md +0 -73
- package/templates/project-init/.raws/api-contracts/README.md +0 -13
- package/templates/project-init/.raws/design-assets/README.md +0 -16
- package/templates/project-init/.raws/testing/README.md +0 -10
- package/templates/project-init/CLAUDE.md +0 -45
- package/templates/project-init/docs/_module-template/module.yaml +0 -32
- package/templates/project-init/docs/system/README.md +0 -12
- package/templates/project-init/project-config.md +0 -296
- package/templates/project-init/zsk.config.yaml +0 -50
package/dist/core/scaffolder.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Project scaffolder: copy templates into a target project directory.
|
|
2
|
-
// Used by `zsk
|
|
2
|
+
// Used by `zsk init` to bootstrap project knowledge files.
|
|
3
3
|
import { readFile, writeFile, mkdir, readdir, access } from "node:fs/promises";
|
|
4
4
|
import { dirname, join, resolve } from "node:path";
|
|
5
5
|
import { fileURLToPath } from "node:url";
|
|
@@ -35,29 +35,36 @@ export async function scaffoldTemplate(templateSubpath, target, opts = {}) {
|
|
|
35
35
|
const src = join(root, templateSubpath);
|
|
36
36
|
const result = { written: [], skipped: [] };
|
|
37
37
|
await mkdir(target, { recursive: true });
|
|
38
|
-
await copyRecursive(src, target, opts.overwrite === true, result);
|
|
38
|
+
await copyRecursive(src, target, opts.overwrite === true, result, opts.variables ?? {});
|
|
39
39
|
return result;
|
|
40
40
|
}
|
|
41
|
-
async function copyRecursive(src, dst, overwrite, result) {
|
|
41
|
+
async function copyRecursive(src, dst, overwrite, result, variables) {
|
|
42
42
|
const entries = await readdir(src, { withFileTypes: true });
|
|
43
43
|
await mkdir(dst, { recursive: true });
|
|
44
44
|
for (const e of entries) {
|
|
45
45
|
const srcPath = join(src, e.name);
|
|
46
|
-
const dstPath = join(dst, e.name);
|
|
46
|
+
const dstPath = join(dst, applyTemplateVariables(e.name, variables));
|
|
47
47
|
if (e.isDirectory()) {
|
|
48
|
-
await copyRecursive(srcPath, dstPath, overwrite, result);
|
|
48
|
+
await copyRecursive(srcPath, dstPath, overwrite, result, variables);
|
|
49
49
|
}
|
|
50
50
|
else {
|
|
51
51
|
if (!overwrite && (await fileExists(dstPath))) {
|
|
52
52
|
result.skipped.push(dstPath);
|
|
53
53
|
continue;
|
|
54
54
|
}
|
|
55
|
-
const content = await readFile(srcPath, "utf8");
|
|
55
|
+
const content = applyTemplateVariables(await readFile(srcPath, "utf8"), variables);
|
|
56
56
|
await writeFile(dstPath, content, "utf8");
|
|
57
57
|
result.written.push(dstPath);
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
|
+
function applyTemplateVariables(value, variables) {
|
|
62
|
+
let next = value;
|
|
63
|
+
for (const [key, replacement] of Object.entries(variables)) {
|
|
64
|
+
next = next.split(`__${key}__`).join(replacement);
|
|
65
|
+
}
|
|
66
|
+
return next;
|
|
67
|
+
}
|
|
61
68
|
async function fileExists(p) {
|
|
62
69
|
try {
|
|
63
70
|
await access(p);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffolder.js","sourceRoot":"","sources":["../../src/core/scaffolder.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,
|
|
1
|
+
{"version":3,"file":"scaffolder.js","sourceRoot":"","sources":["../../src/core/scaffolder.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/prompts.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { intro as clackIntro, outro as clackOutro, spinner as clackSpinner, note
|
|
|
2
2
|
type Primitive = Readonly<string | boolean | number>;
|
|
3
3
|
export declare function select<T extends Primitive>(message: string, options: Option<T>[], initialValue?: T): Promise<T>;
|
|
4
4
|
export declare function groupMultiselect<T extends Primitive>(message: string, options: Record<string, Option<T>[]>, initialValues?: T[]): Promise<T[]>;
|
|
5
|
+
export declare function cascadingGroupMultiselect<T extends Primitive>(message: string, groups: Record<string, Option<T>[]>, initialValues?: T[], maxItems?: number): Promise<T[]>;
|
|
5
6
|
export declare function multiselect<T extends Primitive>(message: string, options: Option<T>[], initialValues?: T[], maxItems?: number): Promise<T[]>;
|
|
6
7
|
export declare function text(message: string, opts?: {
|
|
7
8
|
placeholder?: string;
|
package/dist/ui/prompts.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// @clack/prompts wrappers with centralized isCancel handling.
|
|
2
2
|
// All CLI interactive prompts go through this module so Ctrl+C is handled once.
|
|
3
|
+
import { createInterface, emitKeypressEvents } from "node:readline";
|
|
3
4
|
import { intro as clackIntro, outro as clackOutro, select as clackSelect, multiselect as clackMultiselect, groupMultiselect as clackGroupMultiselect, confirm as clackConfirm, text as clackText, spinner as clackSpinner, note as clackNote, log, cancel, isCancel, } from "@clack/prompts";
|
|
4
5
|
function exitIfCancel(value) {
|
|
5
6
|
if (isCancel(value)) {
|
|
@@ -22,6 +23,108 @@ export async function groupMultiselect(message, options, initialValues = []) {
|
|
|
22
23
|
exitIfCancel(v);
|
|
23
24
|
return v;
|
|
24
25
|
}
|
|
26
|
+
export async function cascadingGroupMultiselect(message, groups, initialValues = [], maxItems = 12) {
|
|
27
|
+
const rows = buildCascadingRows(groups);
|
|
28
|
+
const selected = new Set(initialValues);
|
|
29
|
+
let cursor = rows.findIndex((row) => row.kind === "group" || row.kind === "item");
|
|
30
|
+
if (cursor < 0)
|
|
31
|
+
cursor = 0;
|
|
32
|
+
const input = process.stdin;
|
|
33
|
+
const output = process.stdout;
|
|
34
|
+
let previousLineCount = 0;
|
|
35
|
+
let done = false;
|
|
36
|
+
const selectedValues = () => [...selected];
|
|
37
|
+
const toggleRow = (row) => {
|
|
38
|
+
if (!row)
|
|
39
|
+
return;
|
|
40
|
+
if (row.kind === "item") {
|
|
41
|
+
if (selected.has(row.value))
|
|
42
|
+
selected.delete(row.value);
|
|
43
|
+
else
|
|
44
|
+
selected.add(row.value);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const values = row.items.map((item) => item.value);
|
|
48
|
+
const allSelected = values.every((value) => selected.has(value));
|
|
49
|
+
for (const value of values) {
|
|
50
|
+
if (allSelected)
|
|
51
|
+
selected.delete(value);
|
|
52
|
+
else
|
|
53
|
+
selected.add(value);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
const move = (delta) => {
|
|
57
|
+
if (rows.length === 0)
|
|
58
|
+
return;
|
|
59
|
+
cursor = cursor + delta;
|
|
60
|
+
if (cursor < 0)
|
|
61
|
+
cursor = rows.length - 1;
|
|
62
|
+
if (cursor >= rows.length)
|
|
63
|
+
cursor = 0;
|
|
64
|
+
};
|
|
65
|
+
return new Promise((resolve) => {
|
|
66
|
+
const rl = createInterface({
|
|
67
|
+
input,
|
|
68
|
+
output,
|
|
69
|
+
prompt: "",
|
|
70
|
+
terminal: true,
|
|
71
|
+
});
|
|
72
|
+
const cleanup = () => {
|
|
73
|
+
done = true;
|
|
74
|
+
input.off("keypress", onKeypress);
|
|
75
|
+
if (input.isTTY)
|
|
76
|
+
input.setRawMode(false);
|
|
77
|
+
output.write("\x1b[?25h");
|
|
78
|
+
rl.close();
|
|
79
|
+
};
|
|
80
|
+
const finish = () => {
|
|
81
|
+
cleanup();
|
|
82
|
+
render("submit");
|
|
83
|
+
resolve(selectedValues());
|
|
84
|
+
};
|
|
85
|
+
const onKeypress = (_char, key) => {
|
|
86
|
+
if (done)
|
|
87
|
+
return;
|
|
88
|
+
if (key.ctrl && key.name === "c" || key.name === "escape") {
|
|
89
|
+
cleanup();
|
|
90
|
+
cancel("已取消");
|
|
91
|
+
process.exit(0);
|
|
92
|
+
}
|
|
93
|
+
if (key.name === "up" || key.name === "left")
|
|
94
|
+
move(-1);
|
|
95
|
+
if (key.name === "down" || key.name === "right")
|
|
96
|
+
move(1);
|
|
97
|
+
if (key.name === "space")
|
|
98
|
+
toggleRow(rows[cursor]);
|
|
99
|
+
if (key.name === "return" || key.name === "enter") {
|
|
100
|
+
finish();
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
render("active");
|
|
104
|
+
};
|
|
105
|
+
const render = (state) => {
|
|
106
|
+
if (previousLineCount > 0)
|
|
107
|
+
output.write(`\x1b[${previousLineCount}A\x1b[J`);
|
|
108
|
+
const frame = renderCascadingFrame({
|
|
109
|
+
message,
|
|
110
|
+
rows,
|
|
111
|
+
cursor,
|
|
112
|
+
selected,
|
|
113
|
+
maxItems,
|
|
114
|
+
state,
|
|
115
|
+
});
|
|
116
|
+
output.write(`${frame}\n`);
|
|
117
|
+
previousLineCount = frame.split("\n").length;
|
|
118
|
+
};
|
|
119
|
+
emitKeypressEvents(input, rl);
|
|
120
|
+
if (input.isTTY)
|
|
121
|
+
input.setRawMode(true);
|
|
122
|
+
input.resume();
|
|
123
|
+
output.write("\x1b[?25l");
|
|
124
|
+
input.on("keypress", onKeypress);
|
|
125
|
+
render("active");
|
|
126
|
+
});
|
|
127
|
+
}
|
|
25
128
|
export async function multiselect(message, options, initialValues = [], maxItems = 12) {
|
|
26
129
|
const v = await clackMultiselect({
|
|
27
130
|
message,
|
|
@@ -33,11 +136,95 @@ export async function multiselect(message, options, initialValues = [], maxItems
|
|
|
33
136
|
exitIfCancel(v);
|
|
34
137
|
return v;
|
|
35
138
|
}
|
|
139
|
+
function buildCascadingRows(groups) {
|
|
140
|
+
return Object.entries(groups).flatMap(([group, items]) => [
|
|
141
|
+
{
|
|
142
|
+
kind: "group",
|
|
143
|
+
group,
|
|
144
|
+
label: group,
|
|
145
|
+
items,
|
|
146
|
+
},
|
|
147
|
+
...items.map((item) => ({
|
|
148
|
+
kind: "item",
|
|
149
|
+
group,
|
|
150
|
+
value: item.value,
|
|
151
|
+
label: item.label ?? String(item.value),
|
|
152
|
+
hint: item.hint,
|
|
153
|
+
})),
|
|
154
|
+
]);
|
|
155
|
+
}
|
|
156
|
+
function renderCascadingFrame(args) {
|
|
157
|
+
const { rows, cursor, selected, maxItems, state } = args;
|
|
158
|
+
const outputColumns = process.stdout.columns || 80;
|
|
159
|
+
const frameWidth = Math.max(40, outputColumns - 1);
|
|
160
|
+
const visibleLimit = Math.max(5, Math.min(maxItems, Math.max(5, (process.stdout.rows || maxItems + 5) - 5)));
|
|
161
|
+
const start = Math.max(0, Math.min(cursor - Math.floor(visibleLimit / 2), Math.max(0, rows.length - visibleLimit)));
|
|
162
|
+
const visible = rows.slice(start, start + visibleLimit);
|
|
163
|
+
const lines = [
|
|
164
|
+
"│",
|
|
165
|
+
`${state === "submit" ? "◇" : "◆"} ${args.message}`,
|
|
166
|
+
];
|
|
167
|
+
if (start > 0)
|
|
168
|
+
lines.push("│ ...");
|
|
169
|
+
for (const [offset, row] of visible.entries()) {
|
|
170
|
+
const active = start + offset === cursor;
|
|
171
|
+
const prefix = active ? "›" : " ";
|
|
172
|
+
if (row.kind === "group") {
|
|
173
|
+
const values = row.items.map((item) => item.value);
|
|
174
|
+
const selectedCount = values.filter((value) => selected.has(value)).length;
|
|
175
|
+
const mark = selectedCount === values.length
|
|
176
|
+
? "◼"
|
|
177
|
+
: selectedCount > 0 ? "◩" : "◻";
|
|
178
|
+
lines.push(fitTerminalLine(`│ ${prefix} ${mark} ${row.label} (全选 ${values.length} 个)`, frameWidth));
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
const mark = selected.has(row.value) ? "◼" : "◻";
|
|
182
|
+
const hint = row.hint ? ` (${row.hint})` : "";
|
|
183
|
+
lines.push(fitTerminalLine(`│ ${prefix} ${mark} ${row.label}${hint}`, frameWidth));
|
|
184
|
+
}
|
|
185
|
+
if (start + visibleLimit < rows.length)
|
|
186
|
+
lines.push("│ ...");
|
|
187
|
+
lines.push("└ ↑/↓ 移动,空格勾选,回车继续");
|
|
188
|
+
return lines.map((line) => fitTerminalLine(line, frameWidth)).join("\n");
|
|
189
|
+
}
|
|
190
|
+
function fitTerminalLine(line, maxWidth) {
|
|
191
|
+
let width = 0;
|
|
192
|
+
let out = "";
|
|
193
|
+
for (const char of line) {
|
|
194
|
+
const charWidth = charDisplayWidth(char);
|
|
195
|
+
if (width + charWidth > maxWidth - 1)
|
|
196
|
+
return `${out}…`;
|
|
197
|
+
out += char;
|
|
198
|
+
width += charWidth;
|
|
199
|
+
}
|
|
200
|
+
return out;
|
|
201
|
+
}
|
|
202
|
+
function charDisplayWidth(char) {
|
|
203
|
+
const code = char.codePointAt(0) ?? 0;
|
|
204
|
+
if (code === 0)
|
|
205
|
+
return 0;
|
|
206
|
+
if (code < 0x20 || code === 0x7f)
|
|
207
|
+
return 0;
|
|
208
|
+
if (code >= 0x1100 && (code <= 0x115f ||
|
|
209
|
+
code === 0x2329 ||
|
|
210
|
+
code === 0x232a ||
|
|
211
|
+
(code >= 0x2e80 && code <= 0xa4cf) ||
|
|
212
|
+
(code >= 0xac00 && code <= 0xd7a3) ||
|
|
213
|
+
(code >= 0xf900 && code <= 0xfaff) ||
|
|
214
|
+
(code >= 0xfe10 && code <= 0xfe19) ||
|
|
215
|
+
(code >= 0xfe30 && code <= 0xfe6f) ||
|
|
216
|
+
(code >= 0xff00 && code <= 0xff60) ||
|
|
217
|
+
(code >= 0xffe0 && code <= 0xffe6)))
|
|
218
|
+
return 2;
|
|
219
|
+
return 1;
|
|
220
|
+
}
|
|
36
221
|
export async function text(message, opts = {}) {
|
|
37
222
|
const v = await clackText({
|
|
38
223
|
message,
|
|
39
224
|
placeholder: opts.placeholder,
|
|
40
|
-
validate: opts.validate
|
|
225
|
+
validate: opts.validate
|
|
226
|
+
? (value) => opts.validate?.(value ?? "")
|
|
227
|
+
: undefined,
|
|
41
228
|
});
|
|
42
229
|
exitIfCancel(v);
|
|
43
230
|
return v;
|
package/dist/ui/prompts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/ui/prompts.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,gFAAgF;AAEhF,OAAO,EACL,KAAK,IAAI,UAAU,EACnB,KAAK,IAAI,UAAU,EACnB,MAAM,IAAI,WAAW,EACrB,WAAW,IAAI,gBAAgB,EAC/B,gBAAgB,IAAI,qBAAqB,EACzC,OAAO,IAAI,YAAY,EACvB,IAAI,IAAI,SAAS,EACjB,OAAO,IAAI,YAAY,EACvB,IAAI,IAAI,SAAS,EACjB,GAAG,EACH,MAAM,EACN,QAAQ,GAET,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/ui/prompts.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@captain_z/zsk",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "ZNorth Standard Kit — CLI installer for zsk skill bundles (npx @captain_z/zsk add)",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -10,16 +10,17 @@
|
|
|
10
10
|
"main": "./dist/bin.js",
|
|
11
11
|
"files": [
|
|
12
12
|
"dist",
|
|
13
|
+
"schemas",
|
|
13
14
|
"templates",
|
|
14
15
|
"README.md"
|
|
15
16
|
],
|
|
16
17
|
"dependencies": {
|
|
17
|
-
"@clack/prompts": "^
|
|
18
|
+
"@clack/prompts": "^1.3.0",
|
|
18
19
|
"ajv": "^8.17.1",
|
|
19
20
|
"commander": "^12.1.0",
|
|
20
21
|
"picocolors": "^1.1.1",
|
|
21
22
|
"yaml": "^2.7.0",
|
|
22
|
-
"@captain_z/zsk-skills": "1.
|
|
23
|
+
"@captain_z/zsk-skills": "1.4.0"
|
|
23
24
|
},
|
|
24
25
|
"devDependencies": {
|
|
25
26
|
"@types/node": "^22.10.0",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
-
"$id": "https://zsk.
|
|
3
|
+
"$id": "https://unpkg.com/@captain_z/zsk@1.3.0/schemas/module.schema.json",
|
|
4
4
|
"title": "ZSK Module Config",
|
|
5
5
|
"description": "Module-level resource, runtime, test, and output mapping for ZSK workflows.",
|
|
6
6
|
"type": "object",
|
|
@@ -30,26 +30,19 @@
|
|
|
30
30
|
}
|
|
31
31
|
},
|
|
32
32
|
"sources": {
|
|
33
|
-
"description": "
|
|
33
|
+
"description": "Project source ids and resource paths consumed by this module.",
|
|
34
34
|
"type": "object",
|
|
35
|
-
"additionalProperties":
|
|
36
|
-
|
|
35
|
+
"additionalProperties": {
|
|
36
|
+
"oneOf": [
|
|
37
|
+
{
|
|
38
|
+
"$ref": "#/$defs/pathList"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"$ref": "#/$defs/moduleSource"
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
},
|
|
37
45
|
"properties": {
|
|
38
|
-
"srs": {
|
|
39
|
-
"$ref": "#/$defs/srsSource"
|
|
40
|
-
},
|
|
41
|
-
"api_contracts": {
|
|
42
|
-
"$ref": "#/$defs/pathList"
|
|
43
|
-
},
|
|
44
|
-
"testing": {
|
|
45
|
-
"$ref": "#/$defs/pathList"
|
|
46
|
-
},
|
|
47
|
-
"design_assets": {
|
|
48
|
-
"$ref": "#/$defs/pathList"
|
|
49
|
-
},
|
|
50
|
-
"figma": {
|
|
51
|
-
"$ref": "#/$defs/pathList"
|
|
52
|
-
},
|
|
53
46
|
"metadata": {
|
|
54
47
|
"$ref": "#/$defs/metadata"
|
|
55
48
|
}
|
|
@@ -155,17 +148,24 @@
|
|
|
155
148
|
},
|
|
156
149
|
"uniqueItems": true
|
|
157
150
|
},
|
|
158
|
-
"
|
|
159
|
-
"description": "
|
|
151
|
+
"moduleSource": {
|
|
152
|
+
"description": "Module source reference with optional project source id, path, and anchors.",
|
|
160
153
|
"type": "object",
|
|
161
154
|
"additionalProperties": false,
|
|
162
|
-
"required": ["path"],
|
|
163
155
|
"properties": {
|
|
156
|
+
"source": {
|
|
157
|
+
"description": "Project-level source id from .zsk/config.yaml.",
|
|
158
|
+
"type": "string",
|
|
159
|
+
"minLength": 1
|
|
160
|
+
},
|
|
164
161
|
"path": {
|
|
165
162
|
"$ref": "#/$defs/pathRef"
|
|
166
163
|
},
|
|
164
|
+
"paths": {
|
|
165
|
+
"$ref": "#/$defs/pathList"
|
|
166
|
+
},
|
|
167
167
|
"sections": {
|
|
168
|
-
"description": "Relevant
|
|
168
|
+
"description": "Relevant source sections for this module.",
|
|
169
169
|
"type": "array",
|
|
170
170
|
"items": {
|
|
171
171
|
"type": "string",
|
|
@@ -174,7 +174,7 @@
|
|
|
174
174
|
"uniqueItems": true
|
|
175
175
|
},
|
|
176
176
|
"anchors": {
|
|
177
|
-
"description": "Stable
|
|
177
|
+
"description": "Stable source anchors such as FR/AC IDs.",
|
|
178
178
|
"type": "array",
|
|
179
179
|
"items": {
|
|
180
180
|
"type": "string",
|
|
@@ -185,7 +185,18 @@
|
|
|
185
185
|
"metadata": {
|
|
186
186
|
"$ref": "#/$defs/metadata"
|
|
187
187
|
}
|
|
188
|
-
}
|
|
188
|
+
},
|
|
189
|
+
"anyOf": [
|
|
190
|
+
{
|
|
191
|
+
"required": ["source"]
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"required": ["path"]
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"required": ["paths"]
|
|
198
|
+
}
|
|
199
|
+
]
|
|
189
200
|
},
|
|
190
201
|
"toolName": {
|
|
191
202
|
"description": "Known runtime/design verification tool.",
|