scene-capability-engine 3.6.39 → 3.6.44
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 +45 -0
- package/bin/scene-capability-engine.js +42 -2
- package/docs/developer-guide.md +1 -1
- package/docs/releases/README.md +5 -0
- package/docs/releases/v3.6.40.md +19 -0
- package/docs/releases/v3.6.41.md +20 -0
- package/docs/releases/v3.6.42.md +19 -0
- package/docs/releases/v3.6.43.md +17 -0
- package/docs/releases/v3.6.44.md +17 -0
- package/docs/spec-collaboration-guide.md +1 -1
- package/docs/zh/releases/README.md +5 -0
- package/docs/zh/releases/v3.6.40.md +19 -0
- package/docs/zh/releases/v3.6.41.md +20 -0
- package/docs/zh/releases/v3.6.42.md +19 -0
- package/docs/zh/releases/v3.6.43.md +17 -0
- package/docs/zh/releases/v3.6.44.md +17 -0
- package/lib/adoption/adoption-logger.js +1 -1
- package/lib/adoption/adoption-strategy.js +29 -29
- package/lib/adoption/detection-engine.js +16 -13
- package/lib/adoption/smart-orchestrator.js +3 -3
- package/lib/adoption/strategy-selector.js +19 -15
- package/lib/adoption/template-sync.js +3 -3
- package/lib/auto/autonomous-engine.js +5 -5
- package/lib/auto/handoff-release-gate-history-loaders-service.js +24 -4
- package/lib/auto/handoff-run-service.js +37 -0
- package/lib/backup/backup-system.js +10 -10
- package/lib/collab/collab-manager.js +8 -5
- package/lib/collab/dependency-manager.js +1 -1
- package/lib/commands/adopt.js +2 -2
- package/lib/commands/auto.js +239 -97
- package/lib/commands/collab.js +10 -4
- package/lib/commands/status.js +3 -3
- package/lib/commands/studio.js +8 -0
- package/lib/repo/config-manager.js +2 -2
- package/lib/spec/bootstrap/context-collector.js +5 -4
- package/lib/spec-gate/rules/default-rules.js +8 -8
- package/lib/upgrade/migration-engine.js +5 -5
- package/lib/upgrade/migrations/1.0.0-to-1.1.0.js +3 -3
- package/lib/utils/tool-detector.js +4 -4
- package/lib/utils/validation.js +6 -6
- package/lib/workspace/multi/workspace-context-resolver.js +3 -3
- package/lib/workspace/multi/workspace-registry.js +3 -3
- package/lib/workspace/multi/workspace-state-manager.js +3 -3
- package/lib/workspace/spec-delivery-audit.js +553 -0
- package/package.json +1 -1
|
@@ -300,10 +300,10 @@ class MigrationEngine {
|
|
|
300
300
|
|
|
301
301
|
try {
|
|
302
302
|
// Check if .sce/ directory exists
|
|
303
|
-
const
|
|
304
|
-
const
|
|
303
|
+
const scePath = path.join(projectPath, '.sce');
|
|
304
|
+
const sceExists = await pathExists(scePath);
|
|
305
305
|
|
|
306
|
-
if (!
|
|
306
|
+
if (!sceExists) {
|
|
307
307
|
errors.push('.sce/ directory not found');
|
|
308
308
|
return { success: false, errors, warnings };
|
|
309
309
|
}
|
|
@@ -320,7 +320,7 @@ class MigrationEngine {
|
|
|
320
320
|
const requiredDirs = ['specs', 'steering', 'tools', 'backups'];
|
|
321
321
|
|
|
322
322
|
for (const dir of requiredDirs) {
|
|
323
|
-
const dirPath = path.join(
|
|
323
|
+
const dirPath = path.join(scePath, dir);
|
|
324
324
|
const exists = await pathExists(dirPath);
|
|
325
325
|
|
|
326
326
|
if (!exists) {
|
|
@@ -337,7 +337,7 @@ class MigrationEngine {
|
|
|
337
337
|
];
|
|
338
338
|
|
|
339
339
|
for (const file of requiredSteeringFiles) {
|
|
340
|
-
const filePath = path.join(
|
|
340
|
+
const filePath = path.join(scePath, file);
|
|
341
341
|
const exists = await pathExists(filePath);
|
|
342
342
|
|
|
343
343
|
if (!exists) {
|
|
@@ -26,10 +26,10 @@ module.exports = {
|
|
|
26
26
|
const changes = [];
|
|
27
27
|
|
|
28
28
|
try {
|
|
29
|
-
const
|
|
29
|
+
const scePath = path.join(projectPath, '.sce');
|
|
30
30
|
|
|
31
31
|
// 1. Ensure backups/ directory exists
|
|
32
|
-
const backupsPath = path.join(
|
|
32
|
+
const backupsPath = path.join(scePath, 'backups');
|
|
33
33
|
const backupsExists = await pathExists(backupsPath);
|
|
34
34
|
|
|
35
35
|
if (!backupsExists) {
|
|
@@ -39,7 +39,7 @@ module.exports = {
|
|
|
39
39
|
|
|
40
40
|
// 2. Ensure version.json has correct structure
|
|
41
41
|
// (This is handled by VersionManager, but we verify it here)
|
|
42
|
-
const versionPath = path.join(
|
|
42
|
+
const versionPath = path.join(scePath, 'version.json');
|
|
43
43
|
const versionExists = await pathExists(versionPath);
|
|
44
44
|
|
|
45
45
|
if (versionExists) {
|
|
@@ -64,21 +64,21 @@ async function detectKiroIDE(projectPath) {
|
|
|
64
64
|
let confidence = 'low';
|
|
65
65
|
|
|
66
66
|
// Check for .sce directory
|
|
67
|
-
const
|
|
68
|
-
if (await fs.pathExists(
|
|
67
|
+
const sceDir = path.join(projectPath, '.sce');
|
|
68
|
+
if (await fs.pathExists(sceDir)) {
|
|
69
69
|
indicators.push('.sce directory exists');
|
|
70
70
|
detected = true;
|
|
71
71
|
confidence = 'medium';
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
// Check for SCE-specific files
|
|
75
|
-
const
|
|
75
|
+
const sceFiles = [
|
|
76
76
|
'.sce/steering',
|
|
77
77
|
'.sce/specs',
|
|
78
78
|
'.sce/tools'
|
|
79
79
|
];
|
|
80
80
|
|
|
81
|
-
for (const file of
|
|
81
|
+
for (const file of sceFiles) {
|
|
82
82
|
const filePath = path.join(projectPath, file);
|
|
83
83
|
if (await fs.pathExists(filePath)) {
|
|
84
84
|
indicators.push(`${file} exists`);
|
package/lib/utils/validation.js
CHANGED
|
@@ -21,11 +21,11 @@ async function validateProjectStructure(projectPath) {
|
|
|
21
21
|
const warnings = [];
|
|
22
22
|
|
|
23
23
|
try {
|
|
24
|
-
const
|
|
24
|
+
const scePath = path.join(projectPath, '.sce');
|
|
25
25
|
|
|
26
26
|
// Check if .sce/ directory exists
|
|
27
|
-
const
|
|
28
|
-
if (!
|
|
27
|
+
const sceExists = await pathExists(scePath);
|
|
28
|
+
if (!sceExists) {
|
|
29
29
|
errors.push('.sce/ directory not found');
|
|
30
30
|
return { success: false, errors, warnings };
|
|
31
31
|
}
|
|
@@ -39,7 +39,7 @@ async function validateProjectStructure(projectPath) {
|
|
|
39
39
|
];
|
|
40
40
|
|
|
41
41
|
for (const dir of requiredDirs) {
|
|
42
|
-
const dirPath = path.join(
|
|
42
|
+
const dirPath = path.join(scePath, dir.path);
|
|
43
43
|
const exists = await pathExists(dirPath);
|
|
44
44
|
|
|
45
45
|
if (!exists) {
|
|
@@ -60,7 +60,7 @@ async function validateProjectStructure(projectPath) {
|
|
|
60
60
|
];
|
|
61
61
|
|
|
62
62
|
for (const file of requiredSteeringFiles) {
|
|
63
|
-
const filePath = path.join(
|
|
63
|
+
const filePath = path.join(scePath, file.path);
|
|
64
64
|
const exists = await pathExists(filePath);
|
|
65
65
|
|
|
66
66
|
if (!exists) {
|
|
@@ -78,7 +78,7 @@ async function validateProjectStructure(projectPath) {
|
|
|
78
78
|
];
|
|
79
79
|
|
|
80
80
|
for (const file of requiredToolFiles) {
|
|
81
|
-
const filePath = path.join(
|
|
81
|
+
const filePath = path.join(scePath, file.path);
|
|
82
82
|
const exists = await pathExists(filePath);
|
|
83
83
|
|
|
84
84
|
if (!exists) {
|
|
@@ -94,14 +94,14 @@ class WorkspaceContextResolver {
|
|
|
94
94
|
*/
|
|
95
95
|
async isValidSceDirectory(dirPath) {
|
|
96
96
|
try {
|
|
97
|
-
const
|
|
98
|
-
const exists = await fs.pathExists(
|
|
97
|
+
const scePath = path.join(dirPath, '.sce');
|
|
98
|
+
const exists = await fs.pathExists(scePath);
|
|
99
99
|
|
|
100
100
|
if (!exists) {
|
|
101
101
|
return false;
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
-
const stats = await fs.stat(
|
|
104
|
+
const stats = await fs.stat(scePath);
|
|
105
105
|
return stats.isDirectory();
|
|
106
106
|
} catch (error) {
|
|
107
107
|
return false;
|
|
@@ -84,10 +84,10 @@ class WorkspaceRegistry {
|
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
// Check if .sce directory exists
|
|
87
|
-
const
|
|
88
|
-
const
|
|
87
|
+
const scePath = path.join(workspacePath, '.sce');
|
|
88
|
+
const sceExists = await fs.pathExists(scePath);
|
|
89
89
|
|
|
90
|
-
return
|
|
90
|
+
return sceExists;
|
|
91
91
|
} catch (error) {
|
|
92
92
|
return false;
|
|
93
93
|
}
|
|
@@ -192,9 +192,9 @@ class WorkspaceStateManager {
|
|
|
192
192
|
}
|
|
193
193
|
|
|
194
194
|
// Validate path (check for .sce directory)
|
|
195
|
-
const
|
|
196
|
-
const
|
|
197
|
-
if (!
|
|
195
|
+
const scePath = path.join(workspacePath, '.sce');
|
|
196
|
+
const sceExists = await fs.pathExists(scePath);
|
|
197
|
+
if (!sceExists) {
|
|
198
198
|
throw new Error(`Path "${workspacePath}" is not a valid sce project directory. ` +
|
|
199
199
|
`Ensure it exists and contains a .sce/ directory.`);
|
|
200
200
|
}
|