@namewta/speculo 0.6.1 → 0.7.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 +7 -10
- package/dist/src/cli.js +36 -128
- package/dist/src/cli.js.map +1 -1
- package/dist/src/index.d.ts +2 -4
- package/dist/src/index.js +151 -165
- package/dist/src/index.js.map +1 -1
- package/package.json +4 -3
- package/template/.speculo/README.md +4 -0
- package/template/skills/github-npm-ops/references/preflight-checklist.md +1 -1
- package/template/workflows/specdev/I-init-setup/I-init-setup.md +1 -1
- package/dist/src/migrate.d.ts +0 -51
- package/dist/src/migrate.js +0 -939
- package/dist/src/migrate.js.map +0 -1
- package/dist/src/skills-mirror.d.ts +0 -38
- package/dist/src/skills-mirror.js +0 -160
- package/dist/src/skills-mirror.js.map +0 -1
package/dist/src/index.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { cp, mkdir, readdir, readFile, rm, writeFile } from "node:fs/promises";
|
|
2
|
-
import { basename, join, resolve } from "node:path";
|
|
3
|
-
import { detectLegacyState } from "./migrate.js";
|
|
1
|
+
import { cp, mkdir, mkdtemp, readdir, readFile, rename, rm, writeFile } from "node:fs/promises";
|
|
2
|
+
import { basename, dirname, join, resolve } from "node:path";
|
|
4
3
|
import { pathExists } from "./utils.js";
|
|
5
4
|
import { discoverWorkflowCatalog, isInteractive, promptWorkflowSelection, scanInstalledWorkflows, selectAllFromCatalog, } from "./workflows.js";
|
|
6
5
|
const CORE_ASSETS = [".speculo", "commands", "skills", "config.json"];
|
|
@@ -22,111 +21,90 @@ async function ensureAssetSource(packageRoot, asset) {
|
|
|
22
21
|
}
|
|
23
22
|
return source;
|
|
24
23
|
}
|
|
25
|
-
async function
|
|
26
|
-
|
|
24
|
+
async function copyDirectoryContents(source, destination) {
|
|
25
|
+
if (!(await pathExists(source)))
|
|
26
|
+
return;
|
|
27
|
+
await mkdir(destination, { recursive: true });
|
|
28
|
+
const entries = await readdir(source, { withFileTypes: true });
|
|
29
|
+
for (const entry of entries) {
|
|
30
|
+
await cp(join(source, entry.name), join(destination, entry.name), {
|
|
31
|
+
recursive: entry.isDirectory(),
|
|
32
|
+
force: true,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
async function copyCoreAssets(packageRoot, stagedRoot) {
|
|
27
37
|
for (const asset of CORE_ASSETS) {
|
|
28
38
|
const source = await ensureAssetSource(packageRoot, asset);
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
copied.push(asset);
|
|
33
|
-
continue;
|
|
34
|
-
}
|
|
35
|
-
if (asset === "config.json" && overwrite) {
|
|
36
|
-
if (!(await pathExists(destination))) {
|
|
37
|
-
await cp(source, destination);
|
|
38
|
-
copied.push(asset);
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
// Never overwrite a user-edited config on update; report the skip so
|
|
42
|
-
// the init output makes the preservation explicit (issue #33).
|
|
43
|
-
copied.push(asset + " (preserved)");
|
|
44
|
-
}
|
|
45
|
-
continue;
|
|
46
|
-
}
|
|
47
|
-
if (overwrite && asset !== ".speculo") {
|
|
48
|
-
await rm(destination, { recursive: true, force: true });
|
|
49
|
-
}
|
|
50
|
-
await cp(source, destination, {
|
|
51
|
-
recursive: true,
|
|
52
|
-
force: overwrite,
|
|
53
|
-
errorOnExist: !overwrite,
|
|
39
|
+
await cp(source, join(stagedRoot, asset), {
|
|
40
|
+
recursive: asset !== "config.json",
|
|
41
|
+
force: true,
|
|
54
42
|
});
|
|
55
|
-
copied.push(asset);
|
|
56
43
|
}
|
|
57
|
-
return copied;
|
|
58
44
|
}
|
|
59
|
-
async function
|
|
60
|
-
await
|
|
45
|
+
async function copyCommandReports(source, destination) {
|
|
46
|
+
if (!(await pathExists(source)))
|
|
47
|
+
return;
|
|
61
48
|
const entries = await readdir(source, { withFileTypes: true });
|
|
62
49
|
for (const entry of entries) {
|
|
63
50
|
const sourceEntry = join(source, entry.name);
|
|
64
51
|
const destinationEntry = join(destination, entry.name);
|
|
65
52
|
if (entry.isDirectory()) {
|
|
66
|
-
await
|
|
53
|
+
await copyCommandReports(sourceEntry, destinationEntry);
|
|
67
54
|
}
|
|
68
|
-
else if (
|
|
69
|
-
await
|
|
70
|
-
|
|
71
|
-
errorOnExist: true,
|
|
72
|
-
});
|
|
55
|
+
else if (entry.isFile() && entry.name.endsWith(".md")) {
|
|
56
|
+
await mkdir(dirname(destinationEntry), { recursive: true });
|
|
57
|
+
await cp(sourceEntry, destinationEntry, { force: true });
|
|
73
58
|
}
|
|
74
59
|
}
|
|
75
60
|
}
|
|
76
61
|
function hasSpecdevWorktreeIgnore(content) {
|
|
77
62
|
return content.split(/\r?\n/).some((line) => {
|
|
78
63
|
const pattern = line.trim();
|
|
79
|
-
if (!pattern || pattern.startsWith("#") || pattern.startsWith("!"))
|
|
64
|
+
if (!pattern || pattern.startsWith("#") || pattern.startsWith("!"))
|
|
80
65
|
return false;
|
|
81
|
-
}
|
|
82
66
|
return pattern.replace(/^\//, "").replace(/\/$/, "") === "specdev-worktree";
|
|
83
67
|
});
|
|
84
68
|
}
|
|
85
69
|
async function ensureSpecdevWorktreeIgnore(target, root) {
|
|
86
|
-
if (!(await pathExists(join(root, "workflows", "specdev", WORKFLOW_ENTRY))))
|
|
70
|
+
if (!(await pathExists(join(root, "workflows", "specdev", WORKFLOW_ENTRY))))
|
|
87
71
|
return undefined;
|
|
88
|
-
}
|
|
89
72
|
const ignorePath = join(target, ".gitignore");
|
|
90
73
|
if (!(await pathExists(ignorePath))) {
|
|
91
74
|
await writeFile(ignorePath, SPECDEV_WORKTREE_IGNORE + "\n", "utf8");
|
|
92
75
|
return ".gitignore (created specdev-worktree/)";
|
|
93
76
|
}
|
|
94
77
|
const content = await readFile(ignorePath, "utf8");
|
|
95
|
-
if (hasSpecdevWorktreeIgnore(content))
|
|
78
|
+
if (hasSpecdevWorktreeIgnore(content))
|
|
96
79
|
return ".gitignore (preserved specdev-worktree/)";
|
|
97
|
-
}
|
|
98
80
|
const newline = content.includes("\r\n") ? "\r\n" : "\n";
|
|
99
|
-
const separator = content.length === 0 || content.endsWith("\n")
|
|
100
|
-
? ""
|
|
101
|
-
: newline;
|
|
81
|
+
const separator = content.length === 0 || content.endsWith("\n") ? "" : newline;
|
|
102
82
|
await writeFile(ignorePath, content + separator + SPECDEV_WORKTREE_IGNORE + newline, "utf8");
|
|
103
83
|
return ".gitignore (updated specdev-worktree/)";
|
|
104
84
|
}
|
|
105
85
|
function generateSpeculoContent(selection) {
|
|
106
|
-
const lines = [
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
86
|
+
const lines = [
|
|
87
|
+
"## Speculo 运行时配置",
|
|
88
|
+
"",
|
|
89
|
+
"### 初始化状态检查",
|
|
90
|
+
"",
|
|
91
|
+
"运行时必须读取以下文件以确认 Speculo 初始化状态:",
|
|
92
|
+
"",
|
|
93
|
+
"- ./speculo/.speculo/workspace.json — 工作区根别名配置",
|
|
94
|
+
"- ./speculo/config.json — 项目配置文件",
|
|
95
|
+
"",
|
|
96
|
+
"若上述文件不存在或内容为空,说明项目尚未完成 Speculo 初始化。",
|
|
97
|
+
"此时必须提示用户:请先运行 speculo init 完成初始化配置。",
|
|
98
|
+
"",
|
|
99
|
+
];
|
|
119
100
|
if (selection.workflowIds.length > 0) {
|
|
120
|
-
lines.push("### 工作流入口(强制读取)");
|
|
121
|
-
lines.push("");
|
|
122
|
-
lines.push("初始化时已选择以下工作流,运行时必须强制读取对应入口文件:");
|
|
123
|
-
lines.push("");
|
|
101
|
+
lines.push("### 工作流入口(强制读取)", "", "初始化时已选择以下工作流,运行时必须强制读取对应入口文件:", "");
|
|
124
102
|
for (const workflowId of [...selection.workflowIds].sort()) {
|
|
125
|
-
lines.push(
|
|
103
|
+
lines.push("- ./speculo/workflows/" + workflowId + "/INDEX.md");
|
|
126
104
|
}
|
|
127
105
|
lines.push("");
|
|
128
106
|
}
|
|
129
|
-
return
|
|
107
|
+
return "<SPECULO>\n" + lines.join("\n") + "</SPECULO>";
|
|
130
108
|
}
|
|
131
109
|
async function writeAgentFiles(target, packageRoot, selection) {
|
|
132
110
|
const written = [];
|
|
@@ -145,121 +123,129 @@ async function writeAgentFiles(target, packageRoot, selection) {
|
|
|
145
123
|
const agentsPath = join(target, "AGENTS.md");
|
|
146
124
|
if (await pathExists(agentsPath)) {
|
|
147
125
|
let content = await readFile(agentsPath, "utf8");
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
written.push("AGENTS.md (updated <SPECULO>)");
|
|
151
|
-
}
|
|
152
|
-
else {
|
|
153
|
-
content = content.trimEnd() + "\n\n" + speculoBlock + "\n";
|
|
154
|
-
written.push("AGENTS.md (appended <SPECULO>)");
|
|
155
|
-
}
|
|
126
|
+
const hasBlock = SPECULO_TAG_RE.test(content);
|
|
127
|
+
content = hasBlock ? content.replace(SPECULO_TAG_RE, speculoBlock) : content.trimEnd() + "\n\n" + speculoBlock + "\n";
|
|
156
128
|
await writeFile(agentsPath, content, "utf8");
|
|
129
|
+
written.push(hasBlock ? "AGENTS.md (updated <SPECULO>)" : "AGENTS.md (appended <SPECULO>)");
|
|
157
130
|
}
|
|
158
131
|
else {
|
|
159
132
|
const agentsTemplate = join(assetRoot(packageRoot), "AGENTS.md");
|
|
160
|
-
let
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
templateContent = "# AGENTS.md\n\n<SPECULO>\n</SPECULO>\n";
|
|
166
|
-
}
|
|
167
|
-
templateContent = templateContent.replace(SPECULO_TAG_RE, speculoBlock);
|
|
168
|
-
await writeFile(agentsPath, templateContent, "utf8");
|
|
133
|
+
let content = await (await pathExists(agentsTemplate)
|
|
134
|
+
? readFile(agentsTemplate, "utf8")
|
|
135
|
+
: Promise.resolve("# AGENTS.md\n\n<SPECULO>\n</SPECULO>\n"));
|
|
136
|
+
content = content.replace(SPECULO_TAG_RE, speculoBlock);
|
|
137
|
+
await writeFile(agentsPath, content, "utf8");
|
|
169
138
|
written.push("AGENTS.md");
|
|
170
139
|
}
|
|
171
140
|
return written;
|
|
172
141
|
}
|
|
173
|
-
async function
|
|
174
|
-
const copied = [];
|
|
175
|
-
const sourceRoot = join(assetRoot(packageRoot), "workflows");
|
|
176
|
-
const destinationRoot = join(root, "workflows");
|
|
177
|
-
await mkdir(destinationRoot, { recursive: true });
|
|
178
|
-
for (const workflowId of selection.workflowIds) {
|
|
179
|
-
const source = join(sourceRoot, workflowId);
|
|
180
|
-
const entry = join(source, WORKFLOW_ENTRY);
|
|
181
|
-
if (!(await pathExists(entry))) {
|
|
182
|
-
throw new Error("Unknown workflow package: " + workflowId);
|
|
183
|
-
}
|
|
184
|
-
const destination = join(destinationRoot, workflowId);
|
|
185
|
-
if (overwrite) {
|
|
186
|
-
await rm(destination, { recursive: true, force: true });
|
|
187
|
-
}
|
|
188
|
-
await cp(source, destination, {
|
|
189
|
-
recursive: true,
|
|
190
|
-
force: overwrite,
|
|
191
|
-
errorOnExist: !overwrite,
|
|
192
|
-
filter: (path) => basename(path) !== STATE_TEMPLATE_DIR,
|
|
193
|
-
});
|
|
194
|
-
copied.push("workflows/" + workflowId);
|
|
195
|
-
const stateSource = join(source, STATE_TEMPLATE_DIR);
|
|
196
|
-
const stateDestination = join(root, ".speculo", workflowId);
|
|
197
|
-
if (!(await pathExists(stateSource))) {
|
|
198
|
-
throw new Error("Workflow " + workflowId + " is missing _state/");
|
|
199
|
-
}
|
|
200
|
-
if (!(await pathExists(stateDestination))) {
|
|
201
|
-
await cp(stateSource, stateDestination, {
|
|
202
|
-
recursive: true,
|
|
203
|
-
force: false,
|
|
204
|
-
errorOnExist: true,
|
|
205
|
-
});
|
|
206
|
-
copied.push(".speculo/" + workflowId);
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
return copied;
|
|
210
|
-
}
|
|
211
|
-
async function resolveSelection(packageRoot, root, options, mode) {
|
|
212
|
-
if (options.selection)
|
|
213
|
-
return options.selection;
|
|
142
|
+
async function resolveSelection(packageRoot, currentRoot, options) {
|
|
214
143
|
const catalog = await discoverWorkflowCatalog(packageRoot);
|
|
215
|
-
if (options.
|
|
144
|
+
if (options.selection) {
|
|
145
|
+
const ids = [...new Set(options.selection.workflowIds)].sort();
|
|
146
|
+
for (const id of ids)
|
|
147
|
+
if (!catalog.has(id))
|
|
148
|
+
throw new Error("Unknown workflow package: " + id);
|
|
149
|
+
return { workflowIds: ids };
|
|
150
|
+
}
|
|
151
|
+
if (!isInteractive())
|
|
216
152
|
return selectAllFromCatalog(catalog);
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
153
|
+
const installed = new Set(await scanInstalledWorkflows(currentRoot));
|
|
154
|
+
return promptWorkflowSelection(catalog, {
|
|
155
|
+
preSelectedWorkflowIds: new Set([...installed].filter((workflowId) => catalog.has(workflowId))),
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
async function copySelectedWorkflow(packageRoot, previousRoot, stagedRoot, workflowId) {
|
|
159
|
+
const source = join(assetRoot(packageRoot), "workflows", workflowId);
|
|
160
|
+
if (!(await pathExists(join(source, WORKFLOW_ENTRY))))
|
|
161
|
+
throw new Error("Unknown workflow package: " + workflowId);
|
|
162
|
+
await cp(source, join(stagedRoot, "workflows", workflowId), {
|
|
163
|
+
recursive: true,
|
|
164
|
+
force: true,
|
|
165
|
+
filter: (path) => basename(path) !== STATE_TEMPLATE_DIR,
|
|
166
|
+
});
|
|
167
|
+
const stateSource = join(source, STATE_TEMPLATE_DIR);
|
|
168
|
+
if (!(await pathExists(stateSource)))
|
|
169
|
+
throw new Error("Workflow " + workflowId + " is missing _state/");
|
|
170
|
+
const stagedState = join(stagedRoot, ".speculo", workflowId);
|
|
171
|
+
await cp(stateSource, stagedState, { recursive: true, force: true });
|
|
172
|
+
for (const preservedDirectory of ["changes", "archive"]) {
|
|
173
|
+
await copyDirectoryContents(join(previousRoot, ".speculo", workflowId, preservedDirectory), join(stagedState, preservedDirectory));
|
|
222
174
|
}
|
|
223
|
-
return promptWorkflowSelection(catalog);
|
|
224
175
|
}
|
|
225
|
-
async function
|
|
226
|
-
const
|
|
227
|
-
const
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
return { target, mode: "init", copied };
|
|
176
|
+
async function copyUnselectedCurrentWorkflows(catalog, selection, previousRoot, stagedRoot) {
|
|
177
|
+
const selected = new Set(selection.workflowIds);
|
|
178
|
+
for (const workflowId of catalog.keys()) {
|
|
179
|
+
if (selected.has(workflowId))
|
|
180
|
+
continue;
|
|
181
|
+
const previousWorkflow = join(previousRoot, "workflows", workflowId);
|
|
182
|
+
const previousState = join(previousRoot, ".speculo", workflowId);
|
|
183
|
+
if (await pathExists(previousWorkflow))
|
|
184
|
+
await cp(previousWorkflow, join(stagedRoot, "workflows", workflowId), { recursive: true, force: true });
|
|
185
|
+
if (await pathExists(previousState))
|
|
186
|
+
await cp(previousState, join(stagedRoot, ".speculo", workflowId), { recursive: true, force: true });
|
|
187
|
+
}
|
|
238
188
|
}
|
|
239
|
-
async function
|
|
240
|
-
|
|
241
|
-
const
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
189
|
+
async function buildStagedInstall(packageRoot, target, previousRoot, catalog, selection) {
|
|
190
|
+
await mkdir(target, { recursive: true });
|
|
191
|
+
const stagedRoot = await mkdtemp(join(target, ".speculo-init-stage-"));
|
|
192
|
+
try {
|
|
193
|
+
await copyCoreAssets(packageRoot, stagedRoot);
|
|
194
|
+
await copyCommandReports(join(previousRoot, ".speculo", "commands"), join(stagedRoot, ".speculo", "commands"));
|
|
195
|
+
await copyUnselectedCurrentWorkflows(catalog, selection, previousRoot, stagedRoot);
|
|
196
|
+
for (const workflowId of selection.workflowIds)
|
|
197
|
+
await copySelectedWorkflow(packageRoot, previousRoot, stagedRoot, workflowId);
|
|
198
|
+
return stagedRoot;
|
|
199
|
+
}
|
|
200
|
+
catch (error) {
|
|
201
|
+
await rm(stagedRoot, { recursive: true, force: true });
|
|
202
|
+
throw error;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
async function replaceInstall(stagedRoot, root) {
|
|
206
|
+
if (!(await pathExists(root))) {
|
|
207
|
+
await rename(stagedRoot, root);
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
const backupRoot = stagedRoot + "-backup";
|
|
211
|
+
await rename(root, backupRoot);
|
|
212
|
+
try {
|
|
213
|
+
await rename(stagedRoot, root);
|
|
214
|
+
}
|
|
215
|
+
catch (error) {
|
|
216
|
+
try {
|
|
217
|
+
await rename(backupRoot, root);
|
|
218
|
+
}
|
|
219
|
+
catch (rollbackError) {
|
|
220
|
+
throw new Error("Failed to replace Speculo installation and restore the previous installation: " + String(rollbackError));
|
|
221
|
+
}
|
|
222
|
+
throw error;
|
|
223
|
+
}
|
|
224
|
+
await rm(backupRoot, { recursive: true, force: true });
|
|
251
225
|
}
|
|
252
226
|
export async function initSpeculo(targetArg = ".", options = {}) {
|
|
253
227
|
const target = resolve(targetArg);
|
|
228
|
+
const packageRoot = resolve(options.packageRoot ?? process.cwd());
|
|
254
229
|
const root = installRoot(target);
|
|
255
|
-
|
|
256
|
-
|
|
230
|
+
const existed = await pathExists(root);
|
|
231
|
+
const catalog = await discoverWorkflowCatalog(packageRoot);
|
|
232
|
+
const selection = await resolveSelection(packageRoot, root, options);
|
|
233
|
+
let stagedRoot;
|
|
234
|
+
try {
|
|
235
|
+
stagedRoot = await buildStagedInstall(packageRoot, target, root, catalog, selection);
|
|
236
|
+
await replaceInstall(stagedRoot, root);
|
|
237
|
+
stagedRoot = undefined;
|
|
257
238
|
}
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
targetArg + "` before updating.");
|
|
239
|
+
finally {
|
|
240
|
+
if (stagedRoot)
|
|
241
|
+
await rm(stagedRoot, { recursive: true, force: true });
|
|
262
242
|
}
|
|
263
|
-
|
|
243
|
+
const assets = [".speculo", "config.json", "commands", "skills"];
|
|
244
|
+
assets.push(...selection.workflowIds.map((workflowId) => "workflows/" + workflowId));
|
|
245
|
+
const gitignoreResult = await ensureSpecdevWorktreeIgnore(target, root);
|
|
246
|
+
if (gitignoreResult)
|
|
247
|
+
assets.push(gitignoreResult);
|
|
248
|
+
assets.push(...await writeAgentFiles(target, packageRoot, selection));
|
|
249
|
+
return { target, mode: existed ? "refresh" : "init", assets };
|
|
264
250
|
}
|
|
265
251
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@namewta/speculo",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Workflow-packaged specification-driven development assets with
|
|
3
|
+
"version": "0.7.0",
|
|
4
|
+
"description": "Workflow-packaged specification-driven development assets with direct refresh tooling.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"speculo": "./dist/src/cli.js"
|
|
8
8
|
},
|
|
9
9
|
"scripts": {
|
|
10
|
-
"
|
|
10
|
+
"clean": "node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"",
|
|
11
|
+
"build": "pnpm clean && tsc -p tsconfig.json",
|
|
11
12
|
"test": "node --test dist/test/*.test.js",
|
|
12
13
|
"pretest": "pnpm build",
|
|
13
14
|
"generate-canonical": "node scripts/generate-specdev-canonical.mjs",
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
本目录是 Speculo 运行时状态的唯一持久化根。
|
|
4
4
|
|
|
5
|
+
## 刷新契约
|
|
6
|
+
|
|
7
|
+
重新运行 `speculo init` 会直接以当前模板刷新 Speculo 管理的配置与静态资产,不执行旧状态迁移或兼容。对本次选中的 workflow,刷新只保留 `changes/` 与 `archive/` 历史;workflow 配置、sidecar、未知运行文件与 command `state.json` 会被删除。Command Markdown 报告保留作审计记录,但不保证旧工件可被新 workflow 恢复。
|
|
8
|
+
|
|
5
9
|
## 读取顺序
|
|
6
10
|
|
|
7
11
|
1. 读取 `workspace.json`,以当前打开项目为 `project_root` 解析公共 roots。
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
| 7 | 包管理器 | `pnpm --version` (或 `npm` / `yarn`) | 版本 ≥ 仓库 lockfile 隐含版本 | 安装匹配版本;不要随意切换包管理器 |
|
|
17
17
|
| 8 | release.yml 存在 | `test -f .github/workflows/release.yml` | 文件存在 | 转 `github-npm-ops` skill 的 `references/workflow-yaml-reference.md` 先落该文件 |
|
|
18
18
|
| 9 | release.yml 形态 | 见 [publish-detection.md](publish-detection.md) | 输出 `PUBLISH_TO_NPM=true` 或 `false` | 见 publish-detection 文档的判定矩阵 |
|
|
19
|
-
| 10 | docs-sync state | `test -f speculo/.speculo/commands/docs-sync/state.json && jq . speculo/.speculo/commands/docs-sync/state.json` | schema v4、scope 已确认,baseline 可解析 | 不存在/未确认 → 走 docs-sync command bootstrap;旧 schema →
|
|
19
|
+
| 10 | docs-sync state | `test -f speculo/.speculo/commands/docs-sync/state.json && jq . speculo/.speculo/commands/docs-sync/state.json` | schema v4、scope 已确认,baseline 可解析 | 不存在/未确认 → 走 docs-sync command bootstrap;旧 schema 或损坏 → 重新运行 `speculo init` 刷新受管理状态后再确认范围 |
|
|
20
20
|
| 11 | tag 名称冲突 | `git rev-parse vX.Y.Z 2>/dev/null` | 退出码非 0(tag 不存在) | 同 tag 已存在:先确认是否真的失败需要重发;若是则 `git tag -d` + `git push origin :refs/tags/vX.Y.Z`,否则 bump 到下一版本 |
|
|
21
21
|
|
|
22
22
|
## 失败处理总策略
|
|
@@ -83,7 +83,7 @@ keywords: [初始化, 配置, status, tracking, 验证命令]
|
|
|
83
83
|
- `<Path>{roots.state}/specdev/research/</Path>`
|
|
84
84
|
- `<Path>{roots.state}/specdev/archive/</Path>`
|
|
85
85
|
|
|
86
|
-
若全局状态已存在,先检查 `schema_version
|
|
86
|
+
若全局状态已存在,先检查 `schema_version`。版本未知、JSON 不可解析或状态与当前 workflow 契约不一致时,停止当前 Work,并提示用户重新运行 `speculo init` 刷新受 Speculo 管理的状态;不得在 Work 内迁移、兼容或猜测旧状态。只有状态不存在时才从 schema v4 模板创建。
|
|
87
87
|
|
|
88
88
|
从模板生成:
|
|
89
89
|
|
package/dist/src/migrate.d.ts
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
type LegacyWorkflow = "dev" | "doc" | "person";
|
|
2
|
-
type MigrationSourceLayout = "none" | "v2" | "transitional-v3" | "specdev-status-v3";
|
|
3
|
-
type LegacyChange = {
|
|
4
|
-
sourceWorkflow: LegacyWorkflow;
|
|
5
|
-
sourcePath: string;
|
|
6
|
-
originalName: string;
|
|
7
|
-
destinationRelative: string;
|
|
8
|
-
archived: boolean;
|
|
9
|
-
status: Record<string, unknown>;
|
|
10
|
-
};
|
|
11
|
-
export type MigrationAction = {
|
|
12
|
-
kind: string;
|
|
13
|
-
from?: string;
|
|
14
|
-
to?: string;
|
|
15
|
-
detail: string;
|
|
16
|
-
};
|
|
17
|
-
export type MigrationPlan = {
|
|
18
|
-
target: string;
|
|
19
|
-
legacyDetected: boolean;
|
|
20
|
-
sourceLayout: MigrationSourceLayout;
|
|
21
|
-
actions: MigrationAction[];
|
|
22
|
-
blockers: string[];
|
|
23
|
-
changes: LegacyChange[];
|
|
24
|
-
};
|
|
25
|
-
export type MigrateOptions = {
|
|
26
|
-
packageRoot?: string;
|
|
27
|
-
apply?: boolean;
|
|
28
|
-
};
|
|
29
|
-
export type MigrateResult = {
|
|
30
|
-
target: string;
|
|
31
|
-
legacyDetected: boolean;
|
|
32
|
-
applied: boolean;
|
|
33
|
-
actions: MigrationAction[];
|
|
34
|
-
};
|
|
35
|
-
type SpecdevActiveEntry = {
|
|
36
|
-
change: string;
|
|
37
|
-
current_work: string | null;
|
|
38
|
-
works_run: string[];
|
|
39
|
-
claimed_investigations?: Array<Record<string, unknown>>;
|
|
40
|
-
};
|
|
41
|
-
type SpecdevStatusV4 = {
|
|
42
|
-
schema_version: 4;
|
|
43
|
-
workflow: "specdev";
|
|
44
|
-
active: SpecdevActiveEntry[];
|
|
45
|
-
archived: string[];
|
|
46
|
-
};
|
|
47
|
-
export declare function migrateSpecdevStatusV3(status: Record<string, unknown>, root: string, blockers?: string[]): Promise<SpecdevStatusV4>;
|
|
48
|
-
export declare function detectLegacyState(target: string): Promise<boolean>;
|
|
49
|
-
export declare function planMigration(target: string): Promise<MigrationPlan>;
|
|
50
|
-
export declare function migrateSpeculo(targetArg?: string, options?: MigrateOptions): Promise<MigrateResult>;
|
|
51
|
-
export {};
|