sillyspec 3.20.2 → 3.20.4
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 +21 -21
- package/.claude/skills/sillyspec-auto/SKILL.md +83 -83
- package/.claude/skills/sillyspec-brainstorm/SKILL.md +44 -44
- package/.claude/skills/sillyspec-commit/SKILL.md +106 -106
- package/.claude/skills/sillyspec-continue/SKILL.md +45 -45
- package/.claude/skills/sillyspec-doctor/SKILL.md +31 -31
- package/.claude/skills/sillyspec-execute/SKILL.md +30 -30
- package/.claude/skills/sillyspec-explore/SKILL.md +109 -109
- package/.claude/skills/sillyspec-knowledge/SKILL.md +269 -269
- package/.claude/skills/sillyspec-plan/SKILL.md +21 -21
- package/.claude/skills/sillyspec-propose/SKILL.md +21 -21
- package/.claude/skills/sillyspec-quick/SKILL.md +21 -21
- package/.claude/skills/sillyspec-resume/SKILL.md +68 -68
- package/.claude/skills/sillyspec-scan/SKILL.md +21 -21
- package/.claude/skills/sillyspec-state/SKILL.md +54 -54
- package/.claude/skills/sillyspec-status/SKILL.md +21 -21
- package/.claude/skills/sillyspec-verify/SKILL.md +21 -21
- package/.claude/skills/sillyspec-workspace/SKILL.md +157 -157
- package/.husky/pre-push +13 -13
- package/CLAUDE.md +18 -18
- package/README.md +198 -188
- package/SKILL.md +90 -91
- package/bin/sillyspec.js +2 -2
- package/docs/brainstorm-plan-contract.md +64 -64
- package/docs/plan-execute-contract.md +123 -123
- package/docs/platform-scan-protocol.md +298 -298
- package/docs/revision-mode.md +115 -115
- package/docs/sillyspec/file-lifecycle/known-implementation-gaps.md +99 -99
- package/docs/sillyspec/file-lifecycle/platform-workflows-sync.md +218 -218
- package/docs/sillyspec/file-lifecycle/stage-artifacts.md +167 -167
- package/docs/sillyspec/file-lifecycle/storage-and-state.md +148 -148
- package/docs/sillyspec/file-lifecycle/worktree-and-guard.md +211 -193
- package/docs/sillyspec/file-lifecycle.md +125 -125
- package/docs/workflow-contract-regression.md +106 -106
- package/docs/worktree-isolation.md +252 -252
- package/package.json +40 -40
- package/packages/dashboard/dist/assets/index-Bq_Z2hne.js +7446 -7446
- package/packages/dashboard/dist/assets/index-O2W5RV4z.css +1 -1
- package/packages/dashboard/dist/index.html +16 -16
- package/packages/dashboard/index.html +15 -15
- package/packages/dashboard/package-lock.json +2384 -2384
- package/packages/dashboard/package.json +25 -25
- package/packages/dashboard/server/executor.js +86 -86
- package/packages/dashboard/server/index.js +588 -588
- package/packages/dashboard/server/parser.js +526 -526
- package/packages/dashboard/server/watcher.js +344 -344
- package/packages/dashboard/src/App.vue +558 -558
- package/packages/dashboard/src/components/ActionBar.vue +93 -93
- package/packages/dashboard/src/components/CommandPalette.vue +96 -96
- package/packages/dashboard/src/components/DetailPanel.vue +137 -137
- package/packages/dashboard/src/components/LogStream.vue +65 -65
- package/packages/dashboard/src/components/PipelineStage.vue +95 -95
- package/packages/dashboard/src/components/PipelineView.vue +156 -156
- package/packages/dashboard/src/components/ProjectList.vue +210 -210
- package/packages/dashboard/src/components/StageBadge.vue +67 -67
- package/packages/dashboard/src/components/StepCard.vue +94 -94
- package/packages/dashboard/src/components/detail/DocsDetail.vue +48 -48
- package/packages/dashboard/src/components/detail/GitDetail.vue +61 -61
- package/packages/dashboard/src/components/detail/TechDetail.vue +43 -43
- package/packages/dashboard/src/composables/useDashboard.js +170 -170
- package/packages/dashboard/src/composables/useKeyboard.js +119 -119
- package/packages/dashboard/src/composables/useWebSocket.js +129 -129
- package/packages/dashboard/src/main.js +8 -8
- package/packages/dashboard/src/style.css +132 -132
- package/packages/dashboard/vite.config.js +18 -18
- package/src/brainstorm-postcheck.js +158 -158
- package/src/change-list.js +52 -52
- package/src/change-risk-profile.js +352 -352
- package/src/classify-change.js +73 -73
- package/src/constants.js +70 -70
- package/src/contract-matrix.js +278 -278
- package/src/db.js +201 -201
- package/src/endpoint-extractor.js +315 -315
- package/src/hooks/claude-pre-tool-use.cjs +125 -125
- package/src/hooks/worktree-guard.js +653 -653
- package/src/index.js +922 -900
- package/src/init.js +431 -431
- package/src/knowledge-match.js +130 -130
- package/src/migrate.js +117 -117
- package/src/modules.js +482 -482
- package/src/progress.js +1734 -1734
- package/src/run.js +3465 -3358
- package/src/scan-postcheck.js +387 -383
- package/src/setup.js +398 -398
- package/src/stage-contract.js +700 -700
- package/src/stages/archive.js +160 -160
- package/src/stages/brainstorm-auto.js +229 -229
- package/src/stages/brainstorm.js +645 -645
- package/src/stages/doctor.js +365 -365
- package/src/stages/execute.js +625 -625
- package/src/stages/explore.js +34 -34
- package/src/stages/index.js +29 -29
- package/src/stages/knowledge.js +498 -498
- package/src/stages/plan-postcheck.js +511 -513
- package/src/stages/plan.js +582 -582
- package/src/stages/propose.js +174 -174
- package/src/stages/quick.js +82 -82
- package/src/stages/scan.js +558 -558
- package/src/stages/status.js +65 -65
- package/src/stages/verify.js +322 -322
- package/src/sync.js +497 -497
- package/src/task-review.js +346 -346
- package/src/workflow.js +785 -785
- package/src/worktree-apply.js +549 -549
- package/src/worktree-deps.js +185 -0
- package/src/worktree.js +982 -932
- package/templates/workflows/archive-impact.yaml +79 -79
- package/templates/workflows/scan-docs.yaml +132 -132
- package/test/brainstorm-plan-contract.test.mjs +273 -273
- package/test/check-syntax.mjs +26 -26
- package/test/contract-artifacts.test.mjs +323 -323
- package/test/decision-supersede.test.mjs +277 -277
- package/test/knowledge-match.test.mjs +231 -231
- package/test/plan-execute-contract.test.mjs +330 -330
- package/test/plan-optimization.test.mjs +572 -572
- package/test/platform-artifacts.test.mjs +166 -166
- package/test/platform-failure-samples.test.mjs +199 -199
- package/test/platform-recovery-chain.test.mjs +167 -167
- package/test/platform-recovery.test.mjs +136 -136
- package/test/platform-scan-p0.test.mjs +168 -168
- package/test/revision-v1.test.mjs +1145 -1145
- package/test/run-scan-project-parse.test.mjs +200 -200
- package/test/run-tests.mjs +48 -48
- package/test/scan-knowledge.test.mjs +175 -175
- package/test/scan-paths.test.mjs +68 -68
- package/test/scan-postcheck.test.mjs +197 -197
- package/test/spec-dir.test.mjs +206 -206
- package/test/stage-contract.test.mjs +299 -299
- package/test/stage-definitions.test.mjs +39 -39
- package/test/wait-gates.test.mjs +496 -496
- package/test/worktree-deps-provision.test.mjs +148 -0
- package/test/worktree-guard.test.mjs +71 -71
- package/test/worktree-native-overlay.test.mjs +188 -188
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@sillyspec/dashboard",
|
|
3
|
-
"version": "1.0.0",
|
|
4
|
-
"type": "module",
|
|
5
|
-
"scripts": {
|
|
6
|
-
"dev": "vite",
|
|
7
|
-
"build": "vite build",
|
|
8
|
-
"preview": "vite preview"
|
|
9
|
-
},
|
|
10
|
-
"dependencies": {
|
|
11
|
-
"@vicons/ionicons5": "^0.13.0",
|
|
12
|
-
"chokidar": "^4.0",
|
|
13
|
-
"marked": "^17.0.6",
|
|
14
|
-
"naive-ui": "^2.44.1",
|
|
15
|
-
"open": "^10.1",
|
|
16
|
-
"vue": "^3.5",
|
|
17
|
-
"ws": "^8.18"
|
|
18
|
-
},
|
|
19
|
-
"devDependencies": {
|
|
20
|
-
"@tailwindcss/vite": "^4.0",
|
|
21
|
-
"@vitejs/plugin-vue": "^5.2",
|
|
22
|
-
"tailwindcss": "^4.0",
|
|
23
|
-
"vite": "^6.0"
|
|
24
|
-
}
|
|
25
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@sillyspec/dashboard",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"dev": "vite",
|
|
7
|
+
"build": "vite build",
|
|
8
|
+
"preview": "vite preview"
|
|
9
|
+
},
|
|
10
|
+
"dependencies": {
|
|
11
|
+
"@vicons/ionicons5": "^0.13.0",
|
|
12
|
+
"chokidar": "^4.0",
|
|
13
|
+
"marked": "^17.0.6",
|
|
14
|
+
"naive-ui": "^2.44.1",
|
|
15
|
+
"open": "^10.1",
|
|
16
|
+
"vue": "^3.5",
|
|
17
|
+
"ws": "^8.18"
|
|
18
|
+
},
|
|
19
|
+
"devDependencies": {
|
|
20
|
+
"@tailwindcss/vite": "^4.0",
|
|
21
|
+
"@vitejs/plugin-vue": "^5.2",
|
|
22
|
+
"tailwindcss": "^4.0",
|
|
23
|
+
"vite": "^6.0"
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -1,86 +1,86 @@
|
|
|
1
|
-
import { spawn } from 'child_process'
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Execute a SillySpec CLI command in the given project directory
|
|
5
|
-
* @param {string} projectPath - Path to the project directory
|
|
6
|
-
* @param {string} command - Command to execute (e.g., 'progress status')
|
|
7
|
-
* @param {function} onOutput - Callback for stdout/stderr output
|
|
8
|
-
* @param {function} onComplete - Callback when command completes
|
|
9
|
-
* @returns {function} Kill function to terminate the process
|
|
10
|
-
*/
|
|
11
|
-
export function executeCommand(projectPath, command, onOutput, onComplete) {
|
|
12
|
-
const args = String(command || '').trim().split(/\s+/).filter(Boolean)
|
|
13
|
-
const proc = spawn('npx', ['sillyspec', ...args], {
|
|
14
|
-
cwd: projectPath,
|
|
15
|
-
env: { ...process.env }
|
|
16
|
-
})
|
|
17
|
-
|
|
18
|
-
proc.stdout.on('data', (data) => {
|
|
19
|
-
const output = data.toString()
|
|
20
|
-
if (onOutput) {
|
|
21
|
-
onOutput({ type: 'stdout', data: output })
|
|
22
|
-
}
|
|
23
|
-
})
|
|
24
|
-
|
|
25
|
-
proc.stderr.on('data', (data) => {
|
|
26
|
-
const output = data.toString()
|
|
27
|
-
if (onOutput) {
|
|
28
|
-
onOutput({ type: 'stderr', data: output })
|
|
29
|
-
}
|
|
30
|
-
})
|
|
31
|
-
|
|
32
|
-
proc.on('close', (code) => {
|
|
33
|
-
if (onComplete) {
|
|
34
|
-
onComplete({ code, signal: null })
|
|
35
|
-
}
|
|
36
|
-
})
|
|
37
|
-
|
|
38
|
-
proc.on('error', (err) => {
|
|
39
|
-
if (onOutput) {
|
|
40
|
-
onOutput({ type: 'error', data: err.message })
|
|
41
|
-
}
|
|
42
|
-
if (onComplete) {
|
|
43
|
-
onComplete({ code: -1, signal: err.signal })
|
|
44
|
-
}
|
|
45
|
-
})
|
|
46
|
-
|
|
47
|
-
// Return kill function
|
|
48
|
-
return () => {
|
|
49
|
-
proc.kill('SIGTERM')
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Execute a next step command (for dashboard automation)
|
|
55
|
-
* @param {string} projectPath - Path to the project directory
|
|
56
|
-
* @param {function} onOutput - Callback for stdout/stderr output
|
|
57
|
-
* @param {function} onComplete - Callback when command completes
|
|
58
|
-
* @returns {function} Kill function to terminate the process
|
|
59
|
-
*/
|
|
60
|
-
export function executeNextStep(projectPath, onOutput, onComplete) {
|
|
61
|
-
return executeCommand(projectPath, 'next', onOutput, onComplete)
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Execute a progress status command
|
|
66
|
-
* @param {string} projectPath - Path to the project directory
|
|
67
|
-
* @param {function} onOutput - Callback for stdout/stderr output
|
|
68
|
-
* @param {function} onComplete - Callback when command completes
|
|
69
|
-
* @returns {function} Kill function to terminate the process
|
|
70
|
-
*/
|
|
71
|
-
export function executeProgressStatus(projectPath, onOutput, onComplete) {
|
|
72
|
-
return executeCommand(projectPath, 'progress status --json', onOutput, onComplete)
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Execute a reset command for a specific stage
|
|
77
|
-
* @param {string} projectPath - Path to the project directory
|
|
78
|
-
* @param {string} stage - Stage to reset
|
|
79
|
-
* @param {function} onOutput - Callback for stdout/stderr output
|
|
80
|
-
* @param {function} onComplete - Callback when command completes
|
|
81
|
-
* @returns {function} Kill function to terminate the process
|
|
82
|
-
*/
|
|
83
|
-
export function executeReset(projectPath, stage, onOutput, onComplete) {
|
|
84
|
-
return executeCommand(projectPath, `progress reset --stage ${stage}`, onOutput, onComplete)
|
|
85
|
-
}
|
|
86
|
-
|
|
1
|
+
import { spawn } from 'child_process'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Execute a SillySpec CLI command in the given project directory
|
|
5
|
+
* @param {string} projectPath - Path to the project directory
|
|
6
|
+
* @param {string} command - Command to execute (e.g., 'progress status')
|
|
7
|
+
* @param {function} onOutput - Callback for stdout/stderr output
|
|
8
|
+
* @param {function} onComplete - Callback when command completes
|
|
9
|
+
* @returns {function} Kill function to terminate the process
|
|
10
|
+
*/
|
|
11
|
+
export function executeCommand(projectPath, command, onOutput, onComplete) {
|
|
12
|
+
const args = String(command || '').trim().split(/\s+/).filter(Boolean)
|
|
13
|
+
const proc = spawn('npx', ['sillyspec', ...args], {
|
|
14
|
+
cwd: projectPath,
|
|
15
|
+
env: { ...process.env }
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
proc.stdout.on('data', (data) => {
|
|
19
|
+
const output = data.toString()
|
|
20
|
+
if (onOutput) {
|
|
21
|
+
onOutput({ type: 'stdout', data: output })
|
|
22
|
+
}
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
proc.stderr.on('data', (data) => {
|
|
26
|
+
const output = data.toString()
|
|
27
|
+
if (onOutput) {
|
|
28
|
+
onOutput({ type: 'stderr', data: output })
|
|
29
|
+
}
|
|
30
|
+
})
|
|
31
|
+
|
|
32
|
+
proc.on('close', (code) => {
|
|
33
|
+
if (onComplete) {
|
|
34
|
+
onComplete({ code, signal: null })
|
|
35
|
+
}
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
proc.on('error', (err) => {
|
|
39
|
+
if (onOutput) {
|
|
40
|
+
onOutput({ type: 'error', data: err.message })
|
|
41
|
+
}
|
|
42
|
+
if (onComplete) {
|
|
43
|
+
onComplete({ code: -1, signal: err.signal })
|
|
44
|
+
}
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
// Return kill function
|
|
48
|
+
return () => {
|
|
49
|
+
proc.kill('SIGTERM')
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Execute a next step command (for dashboard automation)
|
|
55
|
+
* @param {string} projectPath - Path to the project directory
|
|
56
|
+
* @param {function} onOutput - Callback for stdout/stderr output
|
|
57
|
+
* @param {function} onComplete - Callback when command completes
|
|
58
|
+
* @returns {function} Kill function to terminate the process
|
|
59
|
+
*/
|
|
60
|
+
export function executeNextStep(projectPath, onOutput, onComplete) {
|
|
61
|
+
return executeCommand(projectPath, 'next', onOutput, onComplete)
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Execute a progress status command
|
|
66
|
+
* @param {string} projectPath - Path to the project directory
|
|
67
|
+
* @param {function} onOutput - Callback for stdout/stderr output
|
|
68
|
+
* @param {function} onComplete - Callback when command completes
|
|
69
|
+
* @returns {function} Kill function to terminate the process
|
|
70
|
+
*/
|
|
71
|
+
export function executeProgressStatus(projectPath, onOutput, onComplete) {
|
|
72
|
+
return executeCommand(projectPath, 'progress status --json', onOutput, onComplete)
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Execute a reset command for a specific stage
|
|
77
|
+
* @param {string} projectPath - Path to the project directory
|
|
78
|
+
* @param {string} stage - Stage to reset
|
|
79
|
+
* @param {function} onOutput - Callback for stdout/stderr output
|
|
80
|
+
* @param {function} onComplete - Callback when command completes
|
|
81
|
+
* @returns {function} Kill function to terminate the process
|
|
82
|
+
*/
|
|
83
|
+
export function executeReset(projectPath, stage, onOutput, onComplete) {
|
|
84
|
+
return executeCommand(projectPath, `progress reset --stage ${stage}`, onOutput, onComplete)
|
|
85
|
+
}
|
|
86
|
+
|