sillyspec 3.26.11 → 3.26.13
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/.claude/skills/sillyspec-archive/SKILL.md +1 -1
- package/.claude/skills/sillyspec-execute/SKILL.md +1 -1
- package/.claude/skills/sillyspec-knowledge/SKILL.md +1 -1
- package/.claude/skills/sillyspec-plan/SKILL.md +5 -5
- package/.claude/skills/sillyspec-quick/SKILL.md +5 -1
- package/README.md +7 -5
- package/SKILL.md +5 -4
- package/package.json +1 -1
- package/packages/dashboard/server/executor.js +10 -1
- package/packages/dashboard/server/index.js +108 -46
- package/src/config-schema.js +3 -0
- package/src/contract-matrix.js +22 -13
- package/src/db.js +24 -4
- package/src/dispatch/probe.js +99 -63
- package/src/docs-check.js +58 -13
- package/src/docs-debt.js +6 -2
- package/src/docs-gate.js +1 -0
- package/src/doctor-diagnostics.js +208 -21
- package/src/fs-atomic.js +3 -1
- package/src/git-helper.js +7 -4
- package/src/hooks/worktree-guard.js +8 -2
- package/src/index.js +161 -12
- package/src/init.js +3 -2
- package/src/local-detect.js +9 -1
- package/src/modules.js +7 -5
- package/src/progress/stage-machine.js +589 -578
- package/src/progress/step-store.js +1 -1
- package/src/progress.js +184 -30
- package/src/quicklog.js +47 -16
- package/src/run/command.js +31 -8
- package/src/run/complete-handlers.js +21 -14
- package/src/run/complete.js +1181 -1121
- package/src/run/gates.js +148 -25
- package/src/run/prompt.js +9 -5
- package/src/run/shared.js +138 -58
- package/src/run/stage.js +41 -1
- package/src/setup.js +8 -10
- package/src/sillyhub-mcp/client.js +74 -6
- package/src/spec-dir-typo.js +3 -24
- package/src/spec-sync.js +43 -8
- package/src/stage-contract.js +12 -38
- package/src/stages/archive.js +4 -3
- package/src/stages/brainstorm-auto.js +1 -1
- package/src/stages/brainstorm.js +2 -1
- package/src/stages/doctor.js +28 -13
- package/src/stages/execute.js +164 -153
- package/src/stages/plan-postcheck.js +49 -28
- package/src/stages/plan.js +57 -40
- package/src/stages/quick.js +3 -1
- package/src/stages/verify.js +1 -1
- package/src/sync.js +323 -221
- package/src/task-review.js +246 -61
- package/src/taskcard.js +178 -0
- package/src/verify-postcheck.js +48 -35
- package/src/worktree-apply.js +58 -34
- package/src/worktree-deps.js +120 -20
- package/src/worktree.js +55 -9
- package/.npmrc-publish +0 -2
package/src/local-detect.js
CHANGED
|
@@ -90,7 +90,15 @@ export function detectLocalYaml(workdir) {
|
|
|
90
90
|
|
|
91
91
|
// 3. gradle
|
|
92
92
|
if (existsSync(join(workdir, 'build.gradle'))) {
|
|
93
|
-
|
|
93
|
+
// Windows 上 cmd.exe 执行不了 ./gradlew(shell 脚本)——优先 gradlew.bat;
|
|
94
|
+
// 仅有 POSIX gradlew 且在 win32 时退回全局 gradle(体检 BUG-08)
|
|
95
|
+
const isWin = process.platform === 'win32'
|
|
96
|
+
let gradlePrefix = 'gradle'
|
|
97
|
+
if (isWin) {
|
|
98
|
+
gradlePrefix = existsSync(join(workdir, 'gradlew.bat')) ? 'gradlew.bat' : 'gradle'
|
|
99
|
+
} else {
|
|
100
|
+
gradlePrefix = existsSync(join(workdir, 'gradlew')) ? './gradlew' : 'gradle'
|
|
101
|
+
}
|
|
94
102
|
return {
|
|
95
103
|
project: { type: 'gradle' },
|
|
96
104
|
commands: {
|
package/src/modules.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { existsSync, readdirSync, readFileSync, writeFileSync } from 'fs';
|
|
2
2
|
import { join } from 'path';
|
|
3
|
-
import {
|
|
3
|
+
import { gitQuiet } from './git-helper.js';
|
|
4
|
+
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* 查找项目下的 _module-map.yaml 路径
|
|
@@ -114,8 +115,8 @@ export async function rebuildModuleMap(cwd, { force = false } = {}) {
|
|
|
114
115
|
const now = new Date().toISOString().replace('T', ' ').slice(0, 19);
|
|
115
116
|
let headCommit = '';
|
|
116
117
|
try {
|
|
117
|
-
|
|
118
|
-
headCommit =
|
|
118
|
+
// QUAL-01 收口:走 git-helper 统一入口(safe.directory + 数组形式)
|
|
119
|
+
headCommit = gitQuiet(cwd, ['rev-parse', '--short', 'HEAD']) || '';
|
|
119
120
|
} catch { /* ignore */ }
|
|
120
121
|
|
|
121
122
|
let yaml = `schema_version: 2\n`;
|
|
@@ -193,8 +194,9 @@ export async function showModuleStatus(cwd) {
|
|
|
193
194
|
|
|
194
195
|
const content = readFileSync(mapPath, 'utf8');
|
|
195
196
|
|
|
196
|
-
//
|
|
197
|
-
|
|
197
|
+
// 简单解析(CRLF 兼容:坑 verify-modules-crlf-blanket-fallback 同类——`$` 锚定正则在
|
|
198
|
+
// Windows 编辑器写出的 CRLF 文件上模块条目全失配,模块数恒显示 0)
|
|
199
|
+
const lines = content.split(/\r?\n/);
|
|
198
200
|
const modules = [];
|
|
199
201
|
let currentModule = null;
|
|
200
202
|
let needsReview = false;
|