sillyspec 3.8.5 → 3.8.7
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 +0 -6
- package/docs/.vitepress/config.mts +45 -0
- package/docs/.vitepress/dist/404.html +25 -0
- package/docs/.vitepress/dist/assets/app.YytxICdd.js +1 -0
- package/docs/.vitepress/dist/assets/chunks/framework.Czhw_PXq.js +19 -0
- package/docs/.vitepress/dist/assets/chunks/theme.DusTRZQk.js +1 -0
- package/docs/.vitepress/dist/assets/index.md.C3VCvtQA.js +1 -0
- package/docs/.vitepress/dist/assets/index.md.C3VCvtQA.lean.js +1 -0
- package/docs/.vitepress/dist/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-italic-cyrillic.By2_1cv3.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-italic-greek-ext.1u6EdAuj.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-italic-greek.DJ8dCoTZ.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-italic-latin-ext.CN1xVJS-.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-italic-latin.C2AdPX0b.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-italic-vietnamese.BSbpV94h.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-roman-greek.BBVDIX6e.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-roman-latin.Di8DUHzh.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-roman-vietnamese.BjW4sHH5.woff2 +0 -0
- package/docs/.vitepress/dist/assets/sillyspec_commands.md.CXFFsj08.js +15 -0
- package/docs/.vitepress/dist/assets/sillyspec_commands.md.CXFFsj08.lean.js +1 -0
- package/docs/.vitepress/dist/assets/sillyspec_dashboard.md.BuPXHqjX.js +4 -0
- package/docs/.vitepress/dist/assets/sillyspec_dashboard.md.BuPXHqjX.lean.js +1 -0
- package/docs/.vitepress/dist/assets/sillyspec_file-io.md.Cz3x7llx.js +1 -0
- package/docs/.vitepress/dist/assets/sillyspec_file-io.md.Cz3x7llx.lean.js +1 -0
- package/docs/.vitepress/dist/assets/sillyspec_getting-started.md.ClcvV8k3.js +4 -0
- package/docs/.vitepress/dist/assets/sillyspec_getting-started.md.ClcvV8k3.lean.js +1 -0
- package/docs/.vitepress/dist/assets/sillyspec_install.md.CKuR2tiT.js +5 -0
- package/docs/.vitepress/dist/assets/sillyspec_install.md.CKuR2tiT.lean.js +1 -0
- package/docs/.vitepress/dist/assets/sillyspec_lifecycle.md.DY293cR1.js +28 -0
- package/docs/.vitepress/dist/assets/sillyspec_lifecycle.md.DY293cR1.lean.js +1 -0
- package/docs/.vitepress/dist/assets/sillyspec_structure.md.sVYS4zPs.js +30 -0
- package/docs/.vitepress/dist/assets/sillyspec_structure.md.sVYS4zPs.lean.js +1 -0
- package/docs/.vitepress/dist/assets/style.DFTx90Kk.css +1 -0
- package/docs/.vitepress/dist/hashmap.json +1 -0
- package/docs/.vitepress/dist/index.html +28 -0
- package/docs/.vitepress/dist/sillyspec/commands.html +42 -0
- package/docs/.vitepress/dist/sillyspec/dashboard.html +31 -0
- package/docs/.vitepress/dist/sillyspec/file-io.html +28 -0
- package/docs/.vitepress/dist/sillyspec/getting-started.html +31 -0
- package/docs/.vitepress/dist/sillyspec/install.html +32 -0
- package/docs/.vitepress/dist/sillyspec/lifecycle.html +55 -0
- package/docs/.vitepress/dist/sillyspec/structure.html +57 -0
- package/docs/.vitepress/dist/vp-icons.css +1 -0
- package/docs/index.md +34 -0
- package/docs/sillyspec/commands.md +218 -0
- package/docs/sillyspec/dashboard.md +51 -0
- package/docs/sillyspec/file-io.md +34 -0
- package/docs/sillyspec/getting-started.md +61 -0
- package/docs/sillyspec/install.md +51 -0
- package/docs/sillyspec/lifecycle.md +146 -0
- package/docs/sillyspec/structure.md +62 -0
- package/package.json +11 -9
- package/packages/dashboard/dist/assets/index-Bh-GPjKY.css +1 -0
- package/packages/dashboard/dist/assets/index-CrCn5Gg6.js +17 -0
- package/packages/dashboard/dist/index.html +2 -2
- package/packages/dashboard/package-lock.json +0 -220
- package/packages/dashboard/package.json +5 -8
- package/packages/dashboard/server/index.js +106 -255
- package/packages/dashboard/server/parser.js +29 -333
- package/packages/dashboard/server/watcher.js +131 -203
- package/packages/dashboard/src/App.vue +10 -181
- package/packages/dashboard/src/components/ActionBar.vue +42 -26
- package/packages/dashboard/src/components/CommandPalette.vue +65 -40
- package/packages/dashboard/src/components/DetailPanel.vue +53 -68
- package/packages/dashboard/src/components/LogStream.vue +33 -13
- package/packages/dashboard/src/components/PipelineStage.vue +8 -8
- package/packages/dashboard/src/components/PipelineView.vue +45 -80
- package/packages/dashboard/src/components/ProjectList.vue +45 -103
- package/packages/dashboard/src/components/StageBadge.vue +13 -13
- package/packages/dashboard/src/components/StepCard.vue +15 -15
- package/packages/dashboard/src/composables/useDashboard.js +6 -20
- package/packages/dashboard/src/composables/useKeyboard.js +4 -6
- package/packages/dashboard/src/main.js +1 -4
- package/packages/dashboard/src/style.css +17 -17
- package/src/index.js +12 -123
- package/src/init.js +227 -86
- package/src/setup.js +9 -1
- package/templates/archive.md +120 -0
- package/templates/brainstorm.md +170 -0
- package/{.claude/skills/sillyspec-commit/SKILL.md → templates/commit.md} +45 -29
- package/templates/continue.md +32 -0
- package/templates/execute.md +304 -0
- package/templates/explore.md +59 -0
- package/templates/export.md +21 -0
- package/templates/init.md +61 -0
- package/templates/plan.md +146 -0
- package/templates/quick.md +135 -0
- package/templates/scan-quick.md +49 -0
- package/templates/scan.md +156 -0
- package/templates/skills/playwright-e2e/SKILL.md +340 -0
- package/templates/status.md +75 -0
- package/templates/verify.md +236 -0
- package/templates/workspace-sync.md +99 -0
- package/templates/workspace.md +70 -0
- package/.claude/skills/sillyspec-archive/SKILL.md +0 -17
- package/.claude/skills/sillyspec-auto/SKILL.md +0 -77
- package/.claude/skills/sillyspec-brainstorm/SKILL.md +0 -17
- package/.claude/skills/sillyspec-continue/SKILL.md +0 -44
- package/.claude/skills/sillyspec-doctor/SKILL.md +0 -22
- package/.claude/skills/sillyspec-execute/SKILL.md +0 -17
- package/.claude/skills/sillyspec-explore/SKILL.md +0 -96
- package/.claude/skills/sillyspec-export/SKILL.md +0 -53
- package/.claude/skills/sillyspec-init/SKILL.md +0 -170
- package/.claude/skills/sillyspec-plan/SKILL.md +0 -52
- package/.claude/skills/sillyspec-propose/SKILL.md +0 -17
- package/.claude/skills/sillyspec-quick/SKILL.md +0 -17
- package/.claude/skills/sillyspec-resume/SKILL.md +0 -111
- package/.claude/skills/sillyspec-scan/SKILL.md +0 -17
- package/.claude/skills/sillyspec-state/SKILL.md +0 -54
- package/.claude/skills/sillyspec-status/SKILL.md +0 -17
- package/.claude/skills/sillyspec-verify/SKILL.md +0 -17
- package/.claude/skills/sillyspec-workspace/SKILL.md +0 -149
- package/.sillyspec/changes/archive/2026-04-08-derive-state/design.md +0 -97
- package/.sillyspec/changes/archive/2026-04-08-derive-state/plan.md +0 -51
- package/.sillyspec/changes/archive/2026-04-08-derive-state/proposal.md +0 -29
- package/.sillyspec/changes/archive/2026-04-08-derive-state/requirements.md +0 -34
- package/.sillyspec/changes/archive/2026-04-08-derive-state/tasks.md +0 -13
- package/.sillyspec/changes/archive/2026-04-08-derive-state/verify-result.md +0 -43
- package/.sillyspec/changes/auto-mode/design.md +0 -50
- package/.sillyspec/changes/auto-mode/proposal.md +0 -19
- package/.sillyspec/changes/auto-mode/requirements.md +0 -21
- package/.sillyspec/changes/auto-mode/tasks.md +0 -7
- package/.sillyspec/changes/brainstorm-archive/2026-04-05-unified-docs-design.md +0 -199
- package/.sillyspec/changes/dashboard/design.md.braindraft +0 -206
- package/.sillyspec/changes/run-command-design/design.md +0 -1230
- package/.sillyspec/changes/unified-docs-design/design.md +0 -199
- package/.sillyspec/docs/sillyspec/scan/.gitkeep +0 -0
- package/.sillyspec/knowledge/INDEX.md +0 -8
- package/.sillyspec/knowledge/uncategorized.md +0 -3
- package/.sillyspec/projects/sillyspec.yaml +0 -3
- package/packages/dashboard/dist/assets/index-D1EVTLmc.js +0 -7446
- package/packages/dashboard/dist/assets/index-DGe8CqeP.css +0 -1
- package/packages/dashboard/public/logo.jpg +0 -0
- package/packages/dashboard/src/components/DocPreview.vue +0 -160
- package/packages/dashboard/src/components/DocTree.vue +0 -58
- package/packages/dashboard/src/components/ProjectOverview.vue +0 -178
- package/packages/dashboard/src/components/detail/DocsDetail.vue +0 -48
- package/packages/dashboard/src/components/detail/GitDetail.vue +0 -61
- package/packages/dashboard/src/components/detail/TechDetail.vue +0 -43
- package/src/derive.js +0 -147
- package/src/migrate.js +0 -117
- package/src/progress.js +0 -495
- package/src/run.js +0 -640
- package/src/stages/archive.js +0 -54
- package/src/stages/brainstorm.js +0 -239
- package/src/stages/doctor.js +0 -312
- package/src/stages/execute.js +0 -259
- package/src/stages/index.js +0 -35
- package/src/stages/plan.js +0 -259
- package/src/stages/propose.js +0 -115
- package/src/stages/quick.js +0 -64
- package/src/stages/scan.js +0 -141
- package/src/stages/status.js +0 -65
- package/src/stages/verify.js +0 -135
- /package/.sillyspec/{changes/brainstorm-archive → specs}/2026-04-05-dashboard-design.md +0 -0
- /package/{packages/dashboard → docs/.vitepress}/dist/favicon.jpg +0 -0
- /package/{logo.jpg → docs/.vitepress/dist/logo.jpg} +0 -0
- /package/{packages/dashboard → docs}/public/favicon.jpg +0 -0
- /package/{packages/dashboard/dist → docs/public}/logo.jpg +0 -0
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
@import "tailwindcss";
|
|
2
2
|
|
|
3
3
|
@theme {
|
|
4
|
-
--color-bg: #
|
|
5
|
-
--color-primary: #
|
|
6
|
-
--color-primary-dim: #
|
|
7
|
-
--color-warning: #
|
|
8
|
-
--color-danger: #
|
|
9
|
-
--color-muted: #
|
|
10
|
-
--color-surface: #
|
|
11
|
-
--color-surface-2: #
|
|
12
|
-
--color-border: #
|
|
13
|
-
--color-border-light: #
|
|
14
|
-
--color-text: #
|
|
15
|
-
--color-text-secondary: #
|
|
16
|
-
--color-info: #
|
|
17
|
-
--color-success: #
|
|
4
|
+
--color-bg: #0A0A0B;
|
|
5
|
+
--color-primary: #FBBF24;
|
|
6
|
+
--color-primary-dim: #B45309;
|
|
7
|
+
--color-warning: #FB923C;
|
|
8
|
+
--color-danger: #EF4444;
|
|
9
|
+
--color-muted: #525252;
|
|
10
|
+
--color-surface: #141416;
|
|
11
|
+
--color-surface-2: #1C1C1F;
|
|
12
|
+
--color-border: #2A2A2D;
|
|
13
|
+
--color-border-light: #3A3A3D;
|
|
14
|
+
--color-text: #E4E4E7;
|
|
15
|
+
--color-text-secondary: #8B8B8E;
|
|
16
|
+
--color-info: #38BDF8;
|
|
17
|
+
--color-success: #34D399;
|
|
18
18
|
|
|
19
19
|
--font-display: 'JetBrains Mono', monospace;
|
|
20
20
|
--font-body: 'DM Sans', sans-serif;
|
|
@@ -96,7 +96,7 @@
|
|
|
96
96
|
|
|
97
97
|
/* Skeleton shimmer */
|
|
98
98
|
.skeleton-shimmer {
|
|
99
|
-
background: linear-gradient(90deg, #
|
|
99
|
+
background: linear-gradient(90deg, #1C1C1F 25%, #2A2A2D 50%, #1C1C1F 75%);
|
|
100
100
|
background-size: 200% 100%;
|
|
101
101
|
animation: shimmer 1.5s ease-in-out infinite;
|
|
102
102
|
}
|
|
@@ -112,12 +112,12 @@
|
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
::-webkit-scrollbar-thumb {
|
|
115
|
-
background: #
|
|
115
|
+
background: #2A2A2D;
|
|
116
116
|
border-radius: 10px;
|
|
117
117
|
}
|
|
118
118
|
|
|
119
119
|
::-webkit-scrollbar-thumb:hover {
|
|
120
|
-
background: #
|
|
120
|
+
background: #3A3A3D;
|
|
121
121
|
}
|
|
122
122
|
|
|
123
123
|
* {
|
package/src/index.js
CHANGED
|
@@ -4,12 +4,11 @@
|
|
|
4
4
|
* SillySpec CLI — 安装工具
|
|
5
5
|
*
|
|
6
6
|
* 只负责两件事:init(安装命令模板)和 setup(安装 MCP 工具)。
|
|
7
|
-
*
|
|
7
|
+
* 状态管理由 AI 直接读文件(STATE.md)完成,不需要 CLI。
|
|
8
8
|
*/
|
|
9
|
-
import { existsSync
|
|
10
|
-
import {
|
|
9
|
+
import { existsSync } from 'fs';
|
|
10
|
+
import { resolve } from 'path';
|
|
11
11
|
import { cmdInit, getVersion } from './init.js';
|
|
12
|
-
import { ProgressManager } from './progress.js';
|
|
13
12
|
|
|
14
13
|
// ── CLI 入口 ──
|
|
15
14
|
|
|
@@ -20,22 +19,12 @@ SillySpec CLI — 规范驱动开发工具包
|
|
|
20
19
|
用法:
|
|
21
20
|
sillyspec init 初始化(零交互,自动检测工具)
|
|
22
21
|
[--tool <name>] 只安装指定工具
|
|
22
|
+
[--workspace] 工作区模式
|
|
23
23
|
[--interactive] 交互式引导
|
|
24
24
|
[--dir <path>] 指定目录
|
|
25
25
|
sillyspec setup [--list] 安装推荐 MCP 工具
|
|
26
26
|
[--list] 查看已安装状态
|
|
27
|
-
sillyspec
|
|
28
|
-
init 初始化 progress.json
|
|
29
|
-
show 查看当前进度
|
|
30
|
-
set-stage <stage> 设置当前阶段
|
|
31
|
-
add-step <stage> <name> 添加步骤
|
|
32
|
-
update-step <s> <n> --status <st> [--output <t>]
|
|
33
|
-
complete-stage <stage> 完成阶段并推进
|
|
34
|
-
validate 校验并修复
|
|
35
|
-
reset [--stage X] 重置进度
|
|
36
|
-
complete --stage X 归档已完成阶段
|
|
37
|
-
sillyspec docs migrate 迁移旧文档到统一结构
|
|
38
|
-
sillyspec dashboard 启动 Dashboard Web UI
|
|
27
|
+
sillyspec dashboard 启动 Dashboard Web UI
|
|
39
28
|
[--port <number>] 指定端口(默认 3456)
|
|
40
29
|
[--no-open] 不自动打开浏览器
|
|
41
30
|
|
|
@@ -46,7 +35,7 @@ SillySpec CLI — 规范驱动开发工具包
|
|
|
46
35
|
示例:
|
|
47
36
|
sillyspec init
|
|
48
37
|
sillyspec init --tool claude
|
|
49
|
-
|
|
38
|
+
sillyspec init --workspace
|
|
50
39
|
sillyspec setup
|
|
51
40
|
sillyspec setup --list
|
|
52
41
|
sillyspec dashboard
|
|
@@ -71,6 +60,7 @@ async function main() {
|
|
|
71
60
|
let json = false;
|
|
72
61
|
let targetDir = process.cwd();
|
|
73
62
|
let tool = null;
|
|
63
|
+
let workspace = false;
|
|
74
64
|
let interactive = false;
|
|
75
65
|
const filteredArgs = [];
|
|
76
66
|
|
|
@@ -83,6 +73,8 @@ async function main() {
|
|
|
83
73
|
} else if (args[i] === '--tool' && args[i + 1]) {
|
|
84
74
|
tool = args[i + 1];
|
|
85
75
|
i++;
|
|
76
|
+
} else if (args[i] === '--workspace' || args[i] === '-w') {
|
|
77
|
+
workspace = true;
|
|
86
78
|
} else if (args[i] === '--interactive' || args[i] === '-i') {
|
|
87
79
|
interactive = true;
|
|
88
80
|
} else if (args[i] === '--list' || args[i] === '-l') {
|
|
@@ -93,11 +85,6 @@ async function main() {
|
|
|
93
85
|
}
|
|
94
86
|
|
|
95
87
|
const command = filteredArgs[0];
|
|
96
|
-
// 支持 sillyspec init /path/to/project 语法:如果第二个参数看起来像路径,当作 targetDir
|
|
97
|
-
if (command === 'init' && filteredArgs[1] && !filteredArgs[1].startsWith('-')) {
|
|
98
|
-
targetDir = resolve(filteredArgs[1]);
|
|
99
|
-
filteredArgs.splice(1, 1);
|
|
100
|
-
}
|
|
101
88
|
const dir = targetDir;
|
|
102
89
|
|
|
103
90
|
if (!existsSync(dir)) {
|
|
@@ -107,113 +94,15 @@ async function main() {
|
|
|
107
94
|
|
|
108
95
|
switch (command) {
|
|
109
96
|
case 'init':
|
|
110
|
-
await cmdInit(dir, { tool, interactive });
|
|
97
|
+
await cmdInit(dir, { tool, workspace, interactive });
|
|
111
98
|
break;
|
|
112
99
|
case 'setup':
|
|
113
100
|
const setupList = filteredArgs.includes('--list') || filteredArgs.includes('-l');
|
|
114
101
|
await (await import('./setup.js')).cmdSetup(dir, { json, list: setupList });
|
|
115
102
|
break;
|
|
116
|
-
case 'progress':
|
|
117
|
-
|
|
118
|
-
const subCommand = filteredArgs[1];
|
|
119
|
-
const stageIdx = filteredArgs.indexOf('--stage');
|
|
120
|
-
const stage = stageIdx >= 0 && filteredArgs[stageIdx + 1] ? filteredArgs[stageIdx + 1] : null;
|
|
121
|
-
|
|
122
|
-
switch (subCommand) {
|
|
123
|
-
case 'init':
|
|
124
|
-
pm.init(dir);
|
|
125
|
-
break;
|
|
126
|
-
case 'status':
|
|
127
|
-
case 'show':
|
|
128
|
-
pm.show(dir);
|
|
129
|
-
break;
|
|
130
|
-
case 'validate':
|
|
131
|
-
await pm.validate(dir, filteredArgs.includes('--deep'));
|
|
132
|
-
break;
|
|
133
|
-
case 'reset':
|
|
134
|
-
pm.reset(dir, stage);
|
|
135
|
-
break;
|
|
136
|
-
case 'complete':
|
|
137
|
-
pm.complete(dir, stage);
|
|
138
|
-
break;
|
|
139
|
-
case 'set-stage': {
|
|
140
|
-
const setStageName = filteredArgs[2];
|
|
141
|
-
if (!setStageName) { console.log('❌ 用法: sillyspec progress set-stage <stage>'); break; }
|
|
142
|
-
pm.setStage(dir, setStageName);
|
|
143
|
-
break;
|
|
144
|
-
}
|
|
145
|
-
case 'add-step': {
|
|
146
|
-
const addStepStage = filteredArgs[2];
|
|
147
|
-
const addStepName = filteredArgs[3];
|
|
148
|
-
if (!addStepStage || !addStepName) { console.log('❌ 用法: sillyspec progress add-step <stage> <step-name>'); break; }
|
|
149
|
-
pm.addStep(dir, addStepStage, addStepName);
|
|
150
|
-
break;
|
|
151
|
-
}
|
|
152
|
-
case 'update-step': {
|
|
153
|
-
const updStepStage = filteredArgs[2];
|
|
154
|
-
const updStepName = filteredArgs[3];
|
|
155
|
-
if (!updStepStage || !updStepName) { console.log('❌ 用法: sillyspec progress update-step <stage> <step-name> --status <status> [--output <text>]'); break; }
|
|
156
|
-
// Parse --status and --output from args
|
|
157
|
-
let updStatus = null, updOutput = undefined;
|
|
158
|
-
for (let ai = 0; ai < args.length; ai++) {
|
|
159
|
-
if (args[ai] === '--status' && args[ai + 1]) { updStatus = args[ai + 1]; ai++; }
|
|
160
|
-
if (args[ai] === '--output' && args[ai + 1]) { updOutput = args[ai + 1]; ai++; }
|
|
161
|
-
}
|
|
162
|
-
pm.updateStep(dir, updStepStage, updStepName, { status: updStatus, output: updOutput });
|
|
163
|
-
break;
|
|
164
|
-
}
|
|
165
|
-
case 'complete-stage': {
|
|
166
|
-
const compStageName = filteredArgs[2];
|
|
167
|
-
if (!compStageName) { console.log('❌ 用法: sillyspec progress complete-stage <stage>'); break; }
|
|
168
|
-
pm.completeStage(dir, compStageName);
|
|
169
|
-
break;
|
|
170
|
-
}
|
|
171
|
-
case 'batch': {
|
|
172
|
-
if (filteredArgs.includes('--status')) {
|
|
173
|
-
const bp = pm.readBatchProgress(dir);
|
|
174
|
-
if (!bp) { console.log('📭 无批量进度数据'); break; }
|
|
175
|
-
const line = pm._renderBatchProgress(bp);
|
|
176
|
-
console.log(line || '📭 无批量进度数据');
|
|
177
|
-
console.log(JSON.stringify(bp, null, 2));
|
|
178
|
-
} else {
|
|
179
|
-
let batchData = {};
|
|
180
|
-
const a = args;
|
|
181
|
-
for (let i = 0; i < a.length; i++) {
|
|
182
|
-
if (a[i] === '--total' && a[i + 1]) { batchData.total = parseInt(a[i + 1]); i++; }
|
|
183
|
-
if (a[i] === '--completed' && a[i + 1]) { batchData.completed = parseInt(a[i + 1]); i++; }
|
|
184
|
-
if (a[i] === '--failed' && a[i + 1]) { batchData.failed = parseInt(a[i + 1]); i++; }
|
|
185
|
-
if (a[i] === '--skipped' && a[i + 1]) { batchData.skipped = parseInt(a[i + 1]); i++; }
|
|
186
|
-
}
|
|
187
|
-
if (Object.keys(batchData).length === 0) {
|
|
188
|
-
console.log('用法: sillyspec progress batch --total 100 --completed 73');
|
|
189
|
-
console.log(' sillyspec progress batch --status');
|
|
190
|
-
break;
|
|
191
|
-
}
|
|
192
|
-
pm.updateBatchProgress(dir, batchData);
|
|
193
|
-
console.log('✅ 批量进度已更新');
|
|
194
|
-
}
|
|
195
|
-
break;
|
|
196
|
-
}
|
|
197
|
-
default:
|
|
198
|
-
console.log('用法: sillyspec progress <init|show|validate|reset|complete|set-stage|add-step|update-step|complete-stage>');
|
|
199
|
-
}
|
|
200
|
-
break;
|
|
201
|
-
}
|
|
202
|
-
case 'docs': {
|
|
203
|
-
const docsSubCmd = filteredArgs[1];
|
|
204
|
-
if (docsSubCmd === 'migrate') {
|
|
205
|
-
const { migrateDocs } = await import('./migrate.js');
|
|
206
|
-
migrateDocs(dir);
|
|
207
|
-
} else {
|
|
208
|
-
console.log('用法: sillyspec docs migrate');
|
|
209
|
-
}
|
|
103
|
+
case 'progress':
|
|
104
|
+
console.log('⚠️ 阶段控制功能已移除,各阶段独立运行。');
|
|
210
105
|
break;
|
|
211
|
-
}
|
|
212
|
-
case 'run': {
|
|
213
|
-
const { runCommand } = await import('./run.js')
|
|
214
|
-
await runCommand(filteredArgs.slice(1), dir)
|
|
215
|
-
break
|
|
216
|
-
}
|
|
217
106
|
case 'dashboard': {
|
|
218
107
|
// Parse dashboard options
|
|
219
108
|
let port = 3456;
|