scene-capability-engine 3.6.3 → 3.6.5
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/CHANGELOG.md +57 -0
- package/README.md +9 -0
- package/README.zh.md +9 -0
- package/bin/scene-capability-engine.js +31 -1
- package/docs/command-reference.md +56 -0
- package/lib/collab/agent-registry.js +38 -1
- package/lib/commands/session.js +60 -2
- package/lib/commands/state.js +210 -0
- package/lib/gitignore/gitignore-detector.js +2 -1
- package/lib/gitignore/layered-rules-template.js +1 -0
- package/lib/runtime/project-timeline.js +202 -17
- package/lib/runtime/session-store.js +167 -14
- package/lib/state/sce-state-store.js +1280 -0
- package/lib/state/state-migration-manager.js +850 -0
- package/lib/steering/compliance-error-reporter.js +6 -0
- package/lib/steering/steering-compliance-checker.js +43 -8
- package/package.json +2 -1
|
@@ -43,6 +43,12 @@ class ComplianceErrorReporter {
|
|
|
43
43
|
message += ' ✓ ENVIRONMENT.md\n';
|
|
44
44
|
message += ' ✓ CURRENT_CONTEXT.md\n';
|
|
45
45
|
message += ' ✓ RULES_GUIDE.md\n';
|
|
46
|
+
message += ' ✓ manifest.yaml\n';
|
|
47
|
+
message += '\n' + chalk.green.bold('Allowed Subdirectories:') + '\n';
|
|
48
|
+
message += ' ✓ compiled/\n';
|
|
49
|
+
message += '\n' + chalk.green.bold('Allowed Runtime Temp Files:') + '\n';
|
|
50
|
+
message += ' ✓ *.lock\n';
|
|
51
|
+
message += ' ✓ *.pending.<agentId>\n';
|
|
46
52
|
|
|
47
53
|
message += '\n' + chalk.cyan.bold('Fix Suggestions:') + '\n';
|
|
48
54
|
message += ' • Move analysis reports to: .sce/specs/{spec-name}/reports/\n';
|
|
@@ -19,10 +19,42 @@ class SteeringComplianceChecker {
|
|
|
19
19
|
'CORE_PRINCIPLES.md',
|
|
20
20
|
'ENVIRONMENT.md',
|
|
21
21
|
'CURRENT_CONTEXT.md',
|
|
22
|
-
'RULES_GUIDE.md'
|
|
22
|
+
'RULES_GUIDE.md',
|
|
23
|
+
'manifest.yaml'
|
|
23
24
|
];
|
|
24
25
|
}
|
|
25
26
|
|
|
27
|
+
/**
|
|
28
|
+
* Get list of allowed subdirectories in steering directory.
|
|
29
|
+
*
|
|
30
|
+
* @returns {string[]} Array of allowed directory names
|
|
31
|
+
*/
|
|
32
|
+
getAllowedDirectories() {
|
|
33
|
+
return [
|
|
34
|
+
'compiled'
|
|
35
|
+
];
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Runtime temporary files used by steering lock/session coordination.
|
|
40
|
+
*
|
|
41
|
+
* @param {string} entryName
|
|
42
|
+
* @returns {boolean}
|
|
43
|
+
*/
|
|
44
|
+
isAllowedRuntimeFile(entryName) {
|
|
45
|
+
const name = `${entryName || ''}`.trim();
|
|
46
|
+
if (!name) {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
if (/\.lock$/i.test(name)) {
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
if (/\.pending\.[^.]+$/i.test(name)) {
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
|
|
26
58
|
/**
|
|
27
59
|
* Check if steering directory is compliant
|
|
28
60
|
*
|
|
@@ -37,19 +69,22 @@ class SteeringComplianceChecker {
|
|
|
37
69
|
|
|
38
70
|
const violations = [];
|
|
39
71
|
const allowedFiles = this.getAllowedFiles();
|
|
72
|
+
const allowedDirectories = this.getAllowedDirectories();
|
|
40
73
|
|
|
41
74
|
try {
|
|
42
75
|
const entries = fs.readdirSync(steeringPath, { withFileTypes: true });
|
|
43
76
|
|
|
44
77
|
for (const entry of entries) {
|
|
45
78
|
if (entry.isDirectory()) {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
79
|
+
if (!allowedDirectories.includes(entry.name)) {
|
|
80
|
+
// Subdirectories are not allowed unless explicitly allowlisted
|
|
81
|
+
violations.push({
|
|
82
|
+
type: 'subdirectory',
|
|
83
|
+
name: entry.name,
|
|
84
|
+
path: path.join(steeringPath, entry.name)
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
} else if (!allowedFiles.includes(entry.name) && !this.isAllowedRuntimeFile(entry.name)) {
|
|
53
88
|
// File not in allowlist
|
|
54
89
|
violations.push({
|
|
55
90
|
type: 'disallowed_file',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "scene-capability-engine",
|
|
3
|
-
"version": "3.6.
|
|
3
|
+
"version": "3.6.5",
|
|
4
4
|
"description": "SCE (Scene Capability Engine) - A CLI tool and npm package for spec-driven development with AI coding assistants.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
|
@@ -71,6 +71,7 @@
|
|
|
71
71
|
"gate:release-ops-weekly": "node scripts/release-weekly-ops-gate.js",
|
|
72
72
|
"gate:errorbook-release": "node scripts/errorbook-release-gate.js --fail-on-block",
|
|
73
73
|
"gate:errorbook-registry-health": "node scripts/errorbook-registry-health-gate.js",
|
|
74
|
+
"gate:state-migration-reconciliation": "node scripts/state-migration-reconciliation-gate.js --json",
|
|
74
75
|
"gate:git-managed": "node scripts/git-managed-gate.js --fail-on-violation",
|
|
75
76
|
"gate:release-asset-integrity": "node scripts/release-asset-integrity-check.js",
|
|
76
77
|
"report:release-risk-remediation": "node scripts/release-risk-remediation-bundle.js --json",
|