@hongmaple0820/scale-engine 0.13.0 → 0.14.0
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/dist/adapters/AiderAdapter.js +1 -1
- package/dist/adapters/AiderAdapter.js.map +1 -1
- package/dist/adapters/ClaudeCodeAdapter.js +5 -3
- package/dist/adapters/ClaudeCodeAdapter.js.map +1 -1
- package/dist/adapters/CodexAdapter.js +1 -1
- package/dist/adapters/CodexAdapter.js.map +1 -1
- package/dist/adapters/CursorAdapter.js +1 -1
- package/dist/adapters/CursorAdapter.js.map +1 -1
- package/dist/adapters/DeepSeekTuiAdapter.js +5 -3
- package/dist/adapters/DeepSeekTuiAdapter.js.map +1 -1
- package/dist/adapters/DoubaoAdapter.js +1 -1
- package/dist/adapters/DoubaoAdapter.js.map +1 -1
- package/dist/adapters/GeminiAdapter.js +1 -1
- package/dist/adapters/GeminiAdapter.js.map +1 -1
- package/dist/adapters/HermesAdapter.js +1 -1
- package/dist/adapters/HermesAdapter.js.map +1 -1
- package/dist/adapters/KimiAdapter.js +1 -1
- package/dist/adapters/KimiAdapter.js.map +1 -1
- package/dist/adapters/KiroAdapter.js +1 -1
- package/dist/adapters/KiroAdapter.js.map +1 -1
- package/dist/adapters/OpenClawAdapter.js +1 -1
- package/dist/adapters/OpenClawAdapter.js.map +1 -1
- package/dist/adapters/OpenCodeAdapter.js +1 -1
- package/dist/adapters/OpenCodeAdapter.js.map +1 -1
- package/dist/adapters/QCoderAdapter.js +1 -1
- package/dist/adapters/QCoderAdapter.js.map +1 -1
- package/dist/adapters/TraeAdapter.js +1 -1
- package/dist/adapters/TraeAdapter.js.map +1 -1
- package/dist/adapters/VSCAdapter.js +1 -1
- package/dist/adapters/VSCAdapter.js.map +1 -1
- package/dist/adapters/WindsurfAdapter.js +1 -1
- package/dist/adapters/WindsurfAdapter.js.map +1 -1
- package/dist/adapters/WorkBuddyAdapter.js +1 -1
- package/dist/adapters/WorkBuddyAdapter.js.map +1 -1
- package/dist/api/cli.js +308 -13
- package/dist/api/cli.js.map +1 -1
- package/dist/api/doctor.d.ts +1 -0
- package/dist/api/doctor.js +29 -0
- package/dist/api/doctor.js.map +1 -1
- package/dist/api/quickstart.d.ts +1 -0
- package/dist/api/quickstart.js +2 -2
- package/dist/api/quickstart.js.map +1 -1
- package/dist/cli/phaseCommands.d.ts +5 -0
- package/dist/cli/phaseCommands.js +149 -25
- package/dist/cli/phaseCommands.js.map +1 -1
- package/dist/skills/ExternalSkills.js +2 -0
- package/dist/skills/ExternalSkills.js.map +1 -1
- package/dist/skills/SkillCatalog.d.ts +13 -0
- package/dist/skills/SkillCatalog.js +184 -0
- package/dist/skills/SkillCatalog.js.map +1 -0
- package/dist/skills/SkillDoctor.d.ts +37 -0
- package/dist/skills/SkillDoctor.js +90 -0
- package/dist/skills/SkillDoctor.js.map +1 -0
- package/dist/skills/index.d.ts +1 -0
- package/dist/skills/index.js +1 -0
- package/dist/skills/index.js.map +1 -1
- package/dist/skills/routing/SkillGate.d.ts +2 -1
- package/dist/skills/routing/SkillGate.js +19 -2
- package/dist/skills/routing/SkillGate.js.map +1 -1
- package/dist/skills/routing/SkillPolicy.js +39 -12
- package/dist/skills/routing/SkillPolicy.js.map +1 -1
- package/dist/workflow/GovernanceLock.d.ts +35 -0
- package/dist/workflow/GovernanceLock.js +58 -0
- package/dist/workflow/GovernanceLock.js.map +1 -0
- package/dist/workflow/GovernanceTemplatePacks.d.ts +24 -0
- package/dist/workflow/GovernanceTemplatePacks.js +83 -0
- package/dist/workflow/GovernanceTemplatePacks.js.map +1 -0
- package/dist/workflow/GovernanceTemplates.d.ts +6 -1
- package/dist/workflow/GovernanceTemplates.js +239 -68
- package/dist/workflow/GovernanceTemplates.js.map +1 -1
- package/dist/workflow/TaskArtifactScaffolder.js +7 -7
- package/dist/workflow/TaskArtifactScaffolder.js.map +1 -1
- package/dist/workflow/VerificationCommands.js +1 -8
- package/dist/workflow/VerificationCommands.js.map +1 -1
- package/dist/workflow/VerificationProfile.d.ts +1 -0
- package/dist/workflow/VerificationProfile.js +42 -5
- package/dist/workflow/VerificationProfile.js.map +1 -1
- package/dist/workflow/WorkflowEngine.d.ts +6 -3
- package/dist/workflow/WorkflowEngine.js +1 -1
- package/dist/workflow/WorkflowEngine.js.map +1 -1
- package/dist/workflow/WorkspaceLifecycle.d.ts +51 -0
- package/dist/workflow/WorkspaceLifecycle.js +259 -0
- package/dist/workflow/WorkspaceLifecycle.js.map +1 -0
- package/dist/workflow/index.d.ts +3 -0
- package/dist/workflow/index.js +3 -0
- package/dist/workflow/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -169,7 +169,7 @@ This project uses SCALE Engine for AI engineering governance via Windsurf.
|
|
|
169
169
|
// 5. .gitignore
|
|
170
170
|
const gitignorePath = join(this.scaleDir, '.gitignore');
|
|
171
171
|
if (!existsSync(gitignorePath)) {
|
|
172
|
-
writeFileSync(gitignorePath, `*.db\n*.db-journal\nevents/\ncheckpoints/\nhooks/*.sh\n`, 'utf-8');
|
|
172
|
+
writeFileSync(gitignorePath, `*.db\n*.db-journal\nevents/\ncheckpoints/\nevidence/\nstate/\nhooks/*.sh\n`, 'utf-8');
|
|
173
173
|
created.push(gitignorePath);
|
|
174
174
|
}
|
|
175
175
|
logger.info({ created: created.length, skipped: skipped.length }, 'SCALE init (windsurf) completed');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WindsurfAdapter.js","sourceRoot":"","sources":["../../src/adapters/WindsurfAdapter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"WindsurfAdapter.js","sourceRoot":"","sources":["../../src/adapters/WindsurfAdapter.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,sEAAsE;AACtE,gEAAgE;AAEhE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAC5E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAG1C,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,MAAM,OAAO,eAAe;IAA5B;QACW,cAAS,GAAG,UAAU,CAAA;QACvB,eAAU,GAAW,GAAG,CAAA;QACxB,aAAQ,GAAW,QAAQ,CAAA;IAoLrC,CAAC;IAlLC,eAAe;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,eAAe,CAAC,CAAA;IAC5D,CAAC;IAED,mBAAmB;QACjB,iFAAiF;QACjF,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC,CAAA;IACvD,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAA;IACrD,CAAC;IAED,WAAW;QACT,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAC9C,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAA;IACzD,CAAC;IAED,gBAAgB;QACd,OAAO;YACL,KAAK,EAAE;gBACL,UAAU,EAAE;oBACV,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,yEAAyE,EAAE;oBACvG,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,yEAAyE,EAAE;iBAC9G;gBACD,WAAW,EAAE;oBACX,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,mGAAmG,EAAE;oBACvI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,mGAAmG,EAAE;iBAClI;gBACD,aAAa,EAAE;oBACb,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,mDAAmD,EAAE;iBAC9E;aACF;YACD,WAAW,EAAE;gBACX,KAAK,EAAE,CAAC,SAAS,CAAC;aACnB;SACF,CAAA;IACH,CAAC;IAED,aAAa,CAAC,QAAsB;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACzC,MAAM,MAAM,GAAiB,EAAE,GAAG,QAAQ,EAAE,CAAA;QAE5C,IAAI,CAAC,MAAM,CAAC,KAAK;YAAE,MAAM,CAAC,KAAK,GAAG,EAAE,CAAA;QACpC,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAM,CAAC,EAAE,CAAC;YACnE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;gBAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAA;YACxD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAE,CAAC,IAAI,CAAC,CAAC,CAAY,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAA;gBAClG,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACrC,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,WAAW;YAAE,MAAM,CAAC,WAAW,GAAG,EAAE,CAAA;QAChD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK;YAAE,MAAM,CAAC,WAAW,CAAC,KAAK,GAAG,EAAE,CAAA;QAC5D,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,WAAY,CAAC,KAAM,EAAE,CAAC;YACjD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7C,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACrC,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED,oBAAoB,CAAC,WAAmB,EAAE,YAAsB,EAAE;QAChE,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC;YACpC,CAAC,CAAC,oBAAoB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YACnE,CAAC,CAAC,EAAE,CAAA;QAEN,OAAO,KAAK,WAAW;EACzB,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BV,CAAA;IACC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAqB;QAC9B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAA;QACnC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QACpE,MAAM,OAAO,GAAa,EAAE,CAAA;QAC5B,MAAM,OAAO,GAAa,EAAE,CAAA;QAE5B,wCAAwC;QACxC,KAAK,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,CAAC;YAC3E,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;YACxC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzB,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;gBACvC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACvB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACvB,CAAC;QACH,CAAC;QAED,iDAAiD;QACjD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;QACtD,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7B,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YAC3C,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAC3B,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAC3B,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;QAC3C,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAA;YAChE,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;YAC3C,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;YACrE,OAAO,CAAC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,CAAA;QAC1C,CAAC;aAAM,CAAC;YACN,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;YACtF,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAC5B,CAAC;QAED,6BAA6B;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;QACrC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YACzC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACzB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACzB,CAAC;QAED,oDAAoD;QACpD,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAA;QACnD,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAClC,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,SAAS,CAAA;YACvE,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAA;YAChF,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAChC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAChC,CAAC;QAED,gBAAgB;QAChB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;QACvD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAC/B,aAAa,CAAC,aAAa,EAAE,4EAA4E,EAAE,OAAO,CAAC,CAAA;YACnH,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAC7B,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,iCAAiC,CAAC,CAAA;QAEpG,OAAO;YACL,YAAY;YACZ,gBAAgB;YAChB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO;YACP,OAAO;SACR,CAAA;IACH,CAAC;CACF"}
|
|
@@ -143,7 +143,7 @@ This project uses SCALE Engine for AI engineering governance via WorkBuddy.
|
|
|
143
143
|
}
|
|
144
144
|
const gitignorePath = join(this.scaleDir, '.gitignore');
|
|
145
145
|
if (!existsSync(gitignorePath)) {
|
|
146
|
-
writeFileSync(gitignorePath, `*.db\n*.db-journal\nevents/\ncheckpoints/\nhooks/*.sh\n`, 'utf-8');
|
|
146
|
+
writeFileSync(gitignorePath, `*.db\n*.db-journal\nevents/\ncheckpoints/\nevidence/\nstate/\nhooks/*.sh\n`, 'utf-8');
|
|
147
147
|
created.push(gitignorePath);
|
|
148
148
|
}
|
|
149
149
|
logger.info({ created: created.length, skipped: skipped.length }, 'SCALE init (workbuddy) completed');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkBuddyAdapter.js","sourceRoot":"","sources":["../../src/adapters/WorkBuddyAdapter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"WorkBuddyAdapter.js","sourceRoot":"","sources":["../../src/adapters/WorkBuddyAdapter.ts"],"names":[],"mappings":"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"}
|
package/dist/api/cli.js
CHANGED
|
@@ -22,6 +22,7 @@ import { LessonExtractor, RuleProposer, HookGenerator, EvolutionEngine } from '.
|
|
|
22
22
|
import { Doctor } from './doctor.js';
|
|
23
23
|
import { quickStart, detectPlatform } from './quickstart.js';
|
|
24
24
|
import { SkillDiscovery } from '../skills/SkillDiscovery.js';
|
|
25
|
+
import { inspectRequiredWorkflowSkills, inspectWorkflowSkills } from '../skills/SkillDoctor.js';
|
|
25
26
|
import { listWorkflowPresets, getPresetsByScenario } from '../workflows/presets.js';
|
|
26
27
|
import { EvidenceStore } from '../workflow/EvidenceStore.js';
|
|
27
28
|
import { OutOfScopeStore } from '../workflow/OutOfScopeStore.js';
|
|
@@ -29,9 +30,11 @@ import { ReviewStore } from '../workflow/ReviewStore.js';
|
|
|
29
30
|
import { WorkflowEngine } from '../workflow/WorkflowEngine.js';
|
|
30
31
|
import { resolveVerificationTargets } from '../workflow/VerificationProfile.js';
|
|
31
32
|
import { writeGovernanceTemplates } from '../workflow/GovernanceTemplates.js';
|
|
33
|
+
import { computeGovernanceDrift } from '../workflow/GovernanceLock.js';
|
|
32
34
|
import { TaskMetricsStore } from '../workflow/TaskMetricsStore.js';
|
|
33
35
|
import { checkTaskArtifactCompleteness } from '../workflow/TaskArtifactScaffolder.js';
|
|
34
36
|
import { WorkflowArtifactWriter } from '../workflow/WorkflowArtifactWriter.js';
|
|
37
|
+
import { cleanupWorkspaceLifecycle, inspectWorkspaceLifecycle, } from '../workflow/WorkspaceLifecycle.js';
|
|
35
38
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
36
39
|
import { join, resolve } from 'node:path';
|
|
37
40
|
// ============================================================================
|
|
@@ -54,6 +57,17 @@ function ensureDir(dir) {
|
|
|
54
57
|
function isTruthyFlag(value) {
|
|
55
58
|
return value === true || value === '' || value === 'true' || value === '1';
|
|
56
59
|
}
|
|
60
|
+
function normalizePreflightProfile(value) {
|
|
61
|
+
const normalized = String(value ?? 'quick').trim().toLowerCase();
|
|
62
|
+
if (normalized === 'full' || normalized === 'ci')
|
|
63
|
+
return normalized;
|
|
64
|
+
return 'quick';
|
|
65
|
+
}
|
|
66
|
+
function gatesForPreflightProfile(profile) {
|
|
67
|
+
if (profile === 'quick')
|
|
68
|
+
return ['G3', 'G0', 'G4', 'G5'];
|
|
69
|
+
return ['G3', 'G0', 'G4', 'G5', 'G6', 'G7'];
|
|
70
|
+
}
|
|
57
71
|
let _engine = null;
|
|
58
72
|
function getEngine() {
|
|
59
73
|
if (!_engine)
|
|
@@ -810,6 +824,123 @@ const taskArtifacts = defineCommand({
|
|
|
810
824
|
meta: { name: 'task-artifacts', description: 'Inspect task artifact completeness' },
|
|
811
825
|
subCommands: { check: taskArtifactsCheck },
|
|
812
826
|
});
|
|
827
|
+
function printWorkspaceLifecycle(report) {
|
|
828
|
+
console.log('\nSCALE Workspace Lifecycle');
|
|
829
|
+
console.log(` Root: ${report.root.path}`);
|
|
830
|
+
console.log(` Branch: ${report.root.branch ?? '(detached)'}`);
|
|
831
|
+
console.log(` Linked worktree: ${report.root.isLinkedWorktree ? 'yes' : 'no'}`);
|
|
832
|
+
console.log(` Root status: ${report.root.clean ? 'clean' : 'dirty'}`);
|
|
833
|
+
if (!report.root.clean) {
|
|
834
|
+
console.log(` staged=${report.root.staged} unstaged=${report.root.unstaged} untracked=${report.root.untracked}`);
|
|
835
|
+
}
|
|
836
|
+
if (report.childRepositories.length) {
|
|
837
|
+
console.log('\n Child repositories:');
|
|
838
|
+
for (const child of report.childRepositories) {
|
|
839
|
+
console.log(` ${child.clean ? '[CLEAN]' : '[DIRTY]'} ${child.relativePath} (${child.kind}) branch=${child.branch ?? '(detached)'}`);
|
|
840
|
+
if (!child.clean)
|
|
841
|
+
console.log(` staged=${child.staged} unstaged=${child.unstaged} untracked=${child.untracked}`);
|
|
842
|
+
}
|
|
843
|
+
}
|
|
844
|
+
else {
|
|
845
|
+
console.log('\n Child repositories: none');
|
|
846
|
+
}
|
|
847
|
+
console.log(`\n Cleanup candidate: ${report.finish.canCleanup ? 'yes' : 'no'}`);
|
|
848
|
+
for (const blocker of report.finish.blockers)
|
|
849
|
+
console.log(` [BLOCKER] ${blocker}`);
|
|
850
|
+
for (const warning of report.finish.warnings)
|
|
851
|
+
console.log(` [WARN] ${warning}`);
|
|
852
|
+
for (const action of report.finish.nextActions)
|
|
853
|
+
console.log(` [NEXT] ${action}`);
|
|
854
|
+
}
|
|
855
|
+
function printWorkspaceCleanup(result) {
|
|
856
|
+
printWorkspaceLifecycle(result.report);
|
|
857
|
+
console.log('\n Cleanup plan:');
|
|
858
|
+
console.log(` Mode: ${result.mode}`);
|
|
859
|
+
console.log(` Target: ${result.targetPath}`);
|
|
860
|
+
console.log(` Can apply: ${result.canApply ? 'yes' : 'no'}`);
|
|
861
|
+
console.log(` Applied: ${result.applied ? 'yes' : 'no'}`);
|
|
862
|
+
console.log(` Confirmation token: ${result.confirmationToken ?? '(unavailable)'}`);
|
|
863
|
+
for (const command of result.commands)
|
|
864
|
+
console.log(` Command: ${command}`);
|
|
865
|
+
for (const blocker of result.blockers)
|
|
866
|
+
console.log(` [BLOCKER] ${blocker}`);
|
|
867
|
+
for (const warning of result.warnings)
|
|
868
|
+
console.log(` [WARN] ${warning}`);
|
|
869
|
+
}
|
|
870
|
+
const workspaceStatus = defineCommand({
|
|
871
|
+
meta: { name: 'status', description: 'Inspect root worktree and child repository lifecycle state' },
|
|
872
|
+
args: {
|
|
873
|
+
dir: { type: 'string', description: 'Repository or worktree directory; defaults to current project directory' },
|
|
874
|
+
json: { type: 'boolean', default: false },
|
|
875
|
+
},
|
|
876
|
+
async run({ args }) {
|
|
877
|
+
const report = await inspectWorkspaceLifecycle({ projectDir: args.dir ?? PROJECT_DIR });
|
|
878
|
+
if (args.json) {
|
|
879
|
+
console.log(JSON.stringify(report, null, 2));
|
|
880
|
+
}
|
|
881
|
+
else {
|
|
882
|
+
printWorkspaceLifecycle(report);
|
|
883
|
+
}
|
|
884
|
+
if (report.finish.blockers.length > 0)
|
|
885
|
+
process.exitCode = 1;
|
|
886
|
+
},
|
|
887
|
+
});
|
|
888
|
+
const workspaceFinish = defineCommand({
|
|
889
|
+
meta: { name: 'finish', description: 'Check whether a temporary worktree can be safely finished or cleaned up' },
|
|
890
|
+
args: {
|
|
891
|
+
dir: { type: 'string', description: 'Repository or worktree directory; defaults to current project directory' },
|
|
892
|
+
json: { type: 'boolean', default: false },
|
|
893
|
+
},
|
|
894
|
+
async run({ args }) {
|
|
895
|
+
const report = await inspectWorkspaceLifecycle({ projectDir: args.dir ?? PROJECT_DIR });
|
|
896
|
+
const result = {
|
|
897
|
+
root: report.root,
|
|
898
|
+
childRepositories: report.childRepositories,
|
|
899
|
+
finish: report.finish,
|
|
900
|
+
};
|
|
901
|
+
if (args.json) {
|
|
902
|
+
console.log(JSON.stringify(result, null, 2));
|
|
903
|
+
}
|
|
904
|
+
else {
|
|
905
|
+
printWorkspaceLifecycle(report);
|
|
906
|
+
}
|
|
907
|
+
if (report.finish.blockers.length > 0)
|
|
908
|
+
process.exitCode = 1;
|
|
909
|
+
},
|
|
910
|
+
});
|
|
911
|
+
const workspaceCleanup = defineCommand({
|
|
912
|
+
meta: { name: 'cleanup', description: 'Dry-run or apply safe removal of a linked temporary worktree' },
|
|
913
|
+
args: {
|
|
914
|
+
dir: { type: 'string', description: 'Linked worktree directory; defaults to current project directory' },
|
|
915
|
+
'dry-run': { type: 'boolean', default: false, description: 'Preview cleanup; this is the default unless --apply is set' },
|
|
916
|
+
apply: { type: 'boolean', default: false, description: 'Actually run git worktree remove after safety checks' },
|
|
917
|
+
confirm: { type: 'string', description: 'Required confirmation token for --apply, usually the worktree branch name' },
|
|
918
|
+
json: { type: 'boolean', default: false },
|
|
919
|
+
},
|
|
920
|
+
async run({ args }) {
|
|
921
|
+
const result = await cleanupWorkspaceLifecycle({
|
|
922
|
+
projectDir: args.dir ?? PROJECT_DIR,
|
|
923
|
+
apply: isTruthyFlag(args.apply),
|
|
924
|
+
confirm: args.confirm,
|
|
925
|
+
});
|
|
926
|
+
if (args.json) {
|
|
927
|
+
console.log(JSON.stringify(result, null, 2));
|
|
928
|
+
}
|
|
929
|
+
else {
|
|
930
|
+
printWorkspaceCleanup(result);
|
|
931
|
+
}
|
|
932
|
+
if (!result.canApply || (isTruthyFlag(args.apply) && !result.applied))
|
|
933
|
+
process.exitCode = 1;
|
|
934
|
+
},
|
|
935
|
+
});
|
|
936
|
+
const workspace = defineCommand({
|
|
937
|
+
meta: { name: 'workspace', description: 'Inspect worktree, branch, and child repository lifecycle safety' },
|
|
938
|
+
subCommands: {
|
|
939
|
+
status: workspaceStatus,
|
|
940
|
+
finish: workspaceFinish,
|
|
941
|
+
cleanup: workspaceCleanup,
|
|
942
|
+
},
|
|
943
|
+
});
|
|
813
944
|
const preflight = defineCommand({
|
|
814
945
|
meta: { name: 'preflight', description: 'Run service-aware verification without a task artifact' },
|
|
815
946
|
args: {
|
|
@@ -818,6 +949,7 @@ const preflight = defineCommand({
|
|
|
818
949
|
'test-cmd': { type: 'string', description: 'Override test command' },
|
|
819
950
|
'coverage-cmd': { type: 'string', description: 'Override coverage command' },
|
|
820
951
|
profile: { type: 'string', description: 'Verification profile from .scale/verification.json' },
|
|
952
|
+
'preflight-profile': { type: 'string', default: 'quick', description: 'Gate intensity profile (quick/full/ci); quick skips coverage and security' },
|
|
821
953
|
service: { type: 'string', description: 'Service name from .scale/verification.json; use all for required services' },
|
|
822
954
|
'tdd-evidence': { type: 'string', description: 'Path to JSON TDD evidence with red/green/refactor/testFirst=true' },
|
|
823
955
|
'tdd-strict': { type: 'boolean', default: false, description: 'Require TDD evidence before other gates' },
|
|
@@ -825,6 +957,8 @@ const preflight = defineCommand({
|
|
|
825
957
|
},
|
|
826
958
|
async run({ args }) {
|
|
827
959
|
const { workflowEngine } = getEngine();
|
|
960
|
+
const preflightProfile = normalizePreflightProfile(args['preflight-profile']);
|
|
961
|
+
const gateStages = gatesForPreflightProfile(preflightProfile);
|
|
828
962
|
const resolved = resolveVerificationTargets({
|
|
829
963
|
projectDir: PROJECT_DIR,
|
|
830
964
|
scaleDir: SCALE_DIR,
|
|
@@ -837,6 +971,8 @@ const preflight = defineCommand({
|
|
|
837
971
|
for (const warning of resolved.warnings)
|
|
838
972
|
console.log(` [WARN] ${warning}`);
|
|
839
973
|
console.log(` Profile: ${resolved.profileName}`);
|
|
974
|
+
console.log(` Preflight profile: ${preflightProfile}`);
|
|
975
|
+
console.log(` Gates: ${gateStages.join(', ')}`);
|
|
840
976
|
}
|
|
841
977
|
for (const target of resolved.targets) {
|
|
842
978
|
if (!args.json) {
|
|
@@ -851,6 +987,7 @@ const preflight = defineCommand({
|
|
|
851
987
|
coverage: args['coverage-cmd'] ?? target.config.coverage,
|
|
852
988
|
tddEvidence: args['tdd-evidence'],
|
|
853
989
|
tddStrict: isTruthyFlag(args['tdd-strict']),
|
|
990
|
+
gates: gateStages,
|
|
854
991
|
});
|
|
855
992
|
const passed = gates.every(gate => gate.passed);
|
|
856
993
|
targetResults.push({
|
|
@@ -871,6 +1008,8 @@ const preflight = defineCommand({
|
|
|
871
1008
|
const result = {
|
|
872
1009
|
phase: 'PREFLIGHT',
|
|
873
1010
|
profile: resolved.profileName,
|
|
1011
|
+
preflightProfile,
|
|
1012
|
+
gates: gateStages,
|
|
874
1013
|
services: targetResults.map(target => target.service).filter(Boolean),
|
|
875
1014
|
policy: resolved.policy,
|
|
876
1015
|
targets: targetResults,
|
|
@@ -1006,7 +1145,13 @@ const init = defineCommand({
|
|
|
1006
1145
|
args: {
|
|
1007
1146
|
agent: { type: 'string', default: '', description: `Agent type (${SUPPORTED_AGENTS.join('/')}) - auto-detected if not specified` },
|
|
1008
1147
|
dir: { type: 'string', default: '.', description: 'Project directory' },
|
|
1148
|
+
json: { type: 'boolean', default: false, description: 'Output initialization result as JSON' },
|
|
1009
1149
|
scenario: { type: 'string', default: 'standard', description: 'Scenario mode (sandbox/standard/critical)' },
|
|
1150
|
+
'governance-pack': {
|
|
1151
|
+
type: 'string',
|
|
1152
|
+
default: 'standard',
|
|
1153
|
+
description: 'Governance template pack (standard/project-scaffold/go-service-matrix/node-library/frontend-app)',
|
|
1154
|
+
},
|
|
1010
1155
|
quick: { type: 'boolean', default: false, description: 'Quick start with auto-detection' },
|
|
1011
1156
|
interactive: { type: 'boolean', default: false, description: 'Interactive configuration mode with prompts' },
|
|
1012
1157
|
'coverage-threshold': { type: 'string', default: '80', description: 'Coverage threshold (default 80%)' },
|
|
@@ -1067,6 +1212,7 @@ const init = defineCommand({
|
|
|
1067
1212
|
const governance = writeGovernanceTemplates(args.dir, {
|
|
1068
1213
|
mode: governanceModeFromScenario(scenarioMode),
|
|
1069
1214
|
projectName,
|
|
1215
|
+
pack: args['governance-pack'],
|
|
1070
1216
|
});
|
|
1071
1217
|
result.created.push(...governance.created);
|
|
1072
1218
|
result.skipped.push(...governance.skipped);
|
|
@@ -1091,8 +1237,24 @@ const init = defineCommand({
|
|
|
1091
1237
|
return;
|
|
1092
1238
|
}
|
|
1093
1239
|
// One-click quick start mode
|
|
1094
|
-
if (
|
|
1095
|
-
const qsResult = await quickStart(args.dir);
|
|
1240
|
+
if (!args.agent) {
|
|
1241
|
+
const qsResult = await quickStart(args.dir, { governancePack: args['governance-pack'] });
|
|
1242
|
+
if (args.json) {
|
|
1243
|
+
const detection = qsResult.success ? undefined : detectPlatform(args.dir);
|
|
1244
|
+
console.log(JSON.stringify({
|
|
1245
|
+
ok: qsResult.success,
|
|
1246
|
+
mode: 'quick',
|
|
1247
|
+
platform: qsResult.platform,
|
|
1248
|
+
created: qsResult.created,
|
|
1249
|
+
skipped: qsResult.skipped,
|
|
1250
|
+
constraintsApplied: qsResult.constraintsApplied,
|
|
1251
|
+
capabilitiesEnabled: qsResult.capabilitiesEnabled,
|
|
1252
|
+
knowledgeGraph: qsResult.knowledgeGraph,
|
|
1253
|
+
nextSteps: qsResult.nextSteps,
|
|
1254
|
+
suggestions: detection?.suggestions ?? [],
|
|
1255
|
+
}, null, 2));
|
|
1256
|
+
return;
|
|
1257
|
+
}
|
|
1096
1258
|
if (qsResult.success && qsResult.platform) {
|
|
1097
1259
|
console.log(`\n✅ SCALE Engine Quick Start completed for ${qsResult.platform}`);
|
|
1098
1260
|
console.log(`\n📁 Created (${qsResult.created.length}):`);
|
|
@@ -1124,9 +1286,26 @@ const init = defineCommand({
|
|
|
1124
1286
|
const governance = writeGovernanceTemplates(args.dir, {
|
|
1125
1287
|
mode: governanceModeFromScenario(args.scenario),
|
|
1126
1288
|
projectName,
|
|
1289
|
+
pack: args['governance-pack'],
|
|
1127
1290
|
});
|
|
1128
1291
|
result.created.push(...governance.created);
|
|
1129
1292
|
result.skipped.push(...governance.skipped);
|
|
1293
|
+
if (args.json) {
|
|
1294
|
+
console.log(JSON.stringify({
|
|
1295
|
+
ok: true,
|
|
1296
|
+
mode: args.quick ? 'quick-agent' : 'manual',
|
|
1297
|
+
agent: args.agent,
|
|
1298
|
+
scenario: args.scenario,
|
|
1299
|
+
governancePack: args['governance-pack'],
|
|
1300
|
+
settingsPath: result.settingsPath,
|
|
1301
|
+
knowledgeDocPath: result.knowledgeDocPath,
|
|
1302
|
+
scaleDir: result.scaleDir,
|
|
1303
|
+
created: result.created,
|
|
1304
|
+
skipped: result.skipped,
|
|
1305
|
+
nextSteps: ['scale doctor', 'scale create Spec "<feature name>"'],
|
|
1306
|
+
}, null, 2));
|
|
1307
|
+
return;
|
|
1308
|
+
}
|
|
1130
1309
|
console.log(`\n✅ SCALE Engine initialized for ${args.agent} (scenario: ${args.scenario})`);
|
|
1131
1310
|
console.log(`\n📁 Created:`);
|
|
1132
1311
|
for (const f of result.created)
|
|
@@ -1145,6 +1324,39 @@ const init = defineCommand({
|
|
|
1145
1324
|
},
|
|
1146
1325
|
});
|
|
1147
1326
|
// ============================================================================
|
|
1327
|
+
// governance command — Generated governance asset tooling
|
|
1328
|
+
// ============================================================================
|
|
1329
|
+
const governanceDiff = defineCommand({
|
|
1330
|
+
meta: { name: 'diff', description: 'Check generated governance files for drift' },
|
|
1331
|
+
args: {
|
|
1332
|
+
dir: { type: 'string', default: '.', description: 'Project directory' },
|
|
1333
|
+
json: { type: 'boolean', default: false, description: 'Print JSON output' },
|
|
1334
|
+
},
|
|
1335
|
+
run({ args }) {
|
|
1336
|
+
const report = computeGovernanceDrift(args.dir);
|
|
1337
|
+
if (args.json) {
|
|
1338
|
+
console.log(JSON.stringify(report, null, 2));
|
|
1339
|
+
return;
|
|
1340
|
+
}
|
|
1341
|
+
if (!report.lockExists) {
|
|
1342
|
+
console.log('No governance lock found. Run: scale init --governance-pack <pack>');
|
|
1343
|
+
return;
|
|
1344
|
+
}
|
|
1345
|
+
if (report.missing.length === 0 && report.changed.length === 0) {
|
|
1346
|
+
console.log('Governance generated files are clean.');
|
|
1347
|
+
return;
|
|
1348
|
+
}
|
|
1349
|
+
for (const item of report.missing)
|
|
1350
|
+
console.log(`missing: ${item.path}`);
|
|
1351
|
+
for (const item of report.changed)
|
|
1352
|
+
console.log(`changed: ${item.path}`);
|
|
1353
|
+
},
|
|
1354
|
+
});
|
|
1355
|
+
const governance = defineCommand({
|
|
1356
|
+
meta: { name: 'governance', description: 'Governance template pack tools' },
|
|
1357
|
+
subCommands: { diff: governanceDiff },
|
|
1358
|
+
});
|
|
1359
|
+
// ============================================================================
|
|
1148
1360
|
// evolve command
|
|
1149
1361
|
// ============================================================================
|
|
1150
1362
|
const evolve = defineCommand({
|
|
@@ -1188,11 +1400,29 @@ const workflowList = defineCommand({
|
|
|
1188
1400
|
meta: { name: 'list', description: 'List all workflow presets' },
|
|
1189
1401
|
args: {
|
|
1190
1402
|
scenario: { type: 'string', description: 'Filter by scenario mode (sandbox/standard/critical)' },
|
|
1403
|
+
json: { type: 'boolean', default: false, description: 'Output workflow presets as JSON' },
|
|
1191
1404
|
},
|
|
1192
1405
|
async run({ args }) {
|
|
1193
1406
|
const presets = args.scenario
|
|
1194
1407
|
? getPresetsByScenario(args.scenario)
|
|
1195
1408
|
: listWorkflowPresets();
|
|
1409
|
+
if (args.json) {
|
|
1410
|
+
console.log(JSON.stringify({
|
|
1411
|
+
ok: true,
|
|
1412
|
+
scenario: args.scenario ?? null,
|
|
1413
|
+
count: presets.length,
|
|
1414
|
+
presets: presets.map(preset => ({
|
|
1415
|
+
id: preset.id,
|
|
1416
|
+
name: preset.name,
|
|
1417
|
+
nameZh: preset.nameZh,
|
|
1418
|
+
description: preset.description,
|
|
1419
|
+
scenarioMode: preset.scenarioMode,
|
|
1420
|
+
requiredArtifacts: preset.requiredArtifacts,
|
|
1421
|
+
steps: preset.steps,
|
|
1422
|
+
})),
|
|
1423
|
+
}, null, 2));
|
|
1424
|
+
return;
|
|
1425
|
+
}
|
|
1196
1426
|
if (presets.length === 0) {
|
|
1197
1427
|
console.log('No workflow presets found.');
|
|
1198
1428
|
return;
|
|
@@ -1366,15 +1596,34 @@ const skillScan = defineCommand({
|
|
|
1366
1596
|
meta: { name: 'scan', description: 'Scan for installed skills' },
|
|
1367
1597
|
args: {
|
|
1368
1598
|
dir: { type: 'string', default: '.', description: 'Project directory' },
|
|
1599
|
+
json: { type: 'boolean', default: false, description: 'Output scan result as JSON' },
|
|
1369
1600
|
},
|
|
1370
1601
|
async run({ args }) {
|
|
1371
1602
|
const discovery = new SkillDiscovery(args.dir);
|
|
1372
1603
|
const platform = discovery.detectPlatform();
|
|
1604
|
+
if (!platform && args.json) {
|
|
1605
|
+
console.log(JSON.stringify({
|
|
1606
|
+
ok: false,
|
|
1607
|
+
platform: null,
|
|
1608
|
+
skills: [],
|
|
1609
|
+
message: 'No agent platform detected. Run `scale init` first.',
|
|
1610
|
+
}, null, 2));
|
|
1611
|
+
return;
|
|
1612
|
+
}
|
|
1373
1613
|
if (!platform) {
|
|
1374
1614
|
console.log('\n⚠️ No agent platform detected. Run `scale init` first.');
|
|
1375
1615
|
return;
|
|
1376
1616
|
}
|
|
1377
1617
|
const result = discovery.scanSkills(platform);
|
|
1618
|
+
if (args.json) {
|
|
1619
|
+
console.log(JSON.stringify({
|
|
1620
|
+
ok: true,
|
|
1621
|
+
platform: result.platform,
|
|
1622
|
+
count: result.skills.length,
|
|
1623
|
+
skills: result.skills,
|
|
1624
|
+
}, null, 2));
|
|
1625
|
+
return;
|
|
1626
|
+
}
|
|
1378
1627
|
console.log(`\n🔍 Platform: ${result.platform}`);
|
|
1379
1628
|
console.log(`📦 Skills found: ${result.skills.length}`);
|
|
1380
1629
|
if (result.skills.length > 0) {
|
|
@@ -1463,11 +1712,37 @@ const skillPlanCommand = defineCommand({
|
|
|
1463
1712
|
console.log(` Written: ${writtenPath}`);
|
|
1464
1713
|
},
|
|
1465
1714
|
});
|
|
1715
|
+
const skillDoctorCommand = defineCommand({
|
|
1716
|
+
meta: { name: 'doctor', description: 'Check workflow skill installation status' },
|
|
1717
|
+
args: {
|
|
1718
|
+
dir: { type: 'string', default: '.', description: 'Project directory' },
|
|
1719
|
+
json: { type: 'boolean', default: false, description: 'Output skill doctor report as JSON' },
|
|
1720
|
+
},
|
|
1721
|
+
run({ args }) {
|
|
1722
|
+
const report = inspectWorkflowSkills({ projectDir: args.dir });
|
|
1723
|
+
if (args.json) {
|
|
1724
|
+
console.log(JSON.stringify(report, null, 2));
|
|
1725
|
+
return;
|
|
1726
|
+
}
|
|
1727
|
+
console.log('\nSCALE Skill Doctor');
|
|
1728
|
+
console.log(` Installed: ${report.installed}/${report.total}`);
|
|
1729
|
+
for (const skill of report.skills) {
|
|
1730
|
+
console.log(` ${skill.installed ? '[OK]' : '[MISSING]'} ${skill.id}`);
|
|
1731
|
+
if (skill.detectedPath)
|
|
1732
|
+
console.log(` path: ${skill.detectedPath}`);
|
|
1733
|
+
if (!skill.installed)
|
|
1734
|
+
console.log(` install: ${skill.installCommand}`);
|
|
1735
|
+
}
|
|
1736
|
+
if (!report.ok)
|
|
1737
|
+
process.exitCode = 1;
|
|
1738
|
+
},
|
|
1739
|
+
});
|
|
1466
1740
|
const skillCheckCommand = defineCommand({
|
|
1467
1741
|
meta: { name: 'check', description: 'Check required skill evidence artifacts' },
|
|
1468
1742
|
args: {
|
|
1469
1743
|
dir: { type: 'string', description: 'Task artifact directory; defaults to current state artifactsDir' },
|
|
1470
1744
|
level: { type: 'string', description: 'Task level: S, M, L, or CRITICAL; defaults to current state level or M' },
|
|
1745
|
+
'require-installed': { type: 'boolean', default: false, description: 'Fail when required workflow skills are not installed locally' },
|
|
1471
1746
|
json: { type: 'boolean', default: false },
|
|
1472
1747
|
},
|
|
1473
1748
|
run({ args }) {
|
|
@@ -1482,33 +1757,51 @@ const skillCheckCommand = defineCommand({
|
|
|
1482
1757
|
mode: state?.skillRoutingMode ?? policy.policy.mode,
|
|
1483
1758
|
enforceLevels: policy.policy.enforceLevels,
|
|
1484
1759
|
});
|
|
1760
|
+
const skillInstallation = inspectRequiredWorkflowSkills(state?.requiredSkills ?? [], { projectDir: PROJECT_DIR });
|
|
1761
|
+
const requireInstalled = isTruthyFlag(args['require-installed']);
|
|
1762
|
+
const blocked = result.blocked || (requireInstalled && !skillInstallation.ok);
|
|
1763
|
+
const output = {
|
|
1764
|
+
...result,
|
|
1765
|
+
complete: result.complete && (!requireInstalled || skillInstallation.ok),
|
|
1766
|
+
blocked,
|
|
1767
|
+
skillInstallation: {
|
|
1768
|
+
...skillInstallation,
|
|
1769
|
+
checked: requireInstalled,
|
|
1770
|
+
},
|
|
1771
|
+
};
|
|
1485
1772
|
if (args.json) {
|
|
1486
|
-
console.log(JSON.stringify(
|
|
1773
|
+
console.log(JSON.stringify(output, null, 2));
|
|
1487
1774
|
return;
|
|
1488
1775
|
}
|
|
1489
|
-
console.log(`\nSkill Gate: ${
|
|
1490
|
-
console.log(` Mode: ${
|
|
1491
|
-
console.log(` Required: ${
|
|
1492
|
-
|
|
1776
|
+
console.log(`\nSkill Gate: ${output.complete ? 'COMPLETE' : 'INCOMPLETE'}`);
|
|
1777
|
+
console.log(` Mode: ${output.mode}`);
|
|
1778
|
+
console.log(` Required artifacts: ${output.required.join(', ') || 'none'}`);
|
|
1779
|
+
console.log(` Required skills: ${skillInstallation.required.join(', ') || 'none'}`);
|
|
1780
|
+
for (const file of output.missing)
|
|
1493
1781
|
console.log(` [MISSING] ${file}`);
|
|
1494
|
-
for (const item of
|
|
1782
|
+
for (const item of output.incomplete)
|
|
1495
1783
|
console.log(` [INCOMPLETE] ${item.file}: ${item.reason}`);
|
|
1496
|
-
if (
|
|
1784
|
+
if (requireInstalled && !skillInstallation.ok) {
|
|
1785
|
+
for (const skill of skillInstallation.skills.filter(skill => !skill.installed)) {
|
|
1786
|
+
console.log(` [MISSING_SKILL] ${skill.id}: ${skill.installCommand}`);
|
|
1787
|
+
}
|
|
1788
|
+
for (const skill of skillInstallation.unknown)
|
|
1789
|
+
console.log(` [UNKNOWN_SKILL] ${skill}`);
|
|
1790
|
+
}
|
|
1791
|
+
if (blocked)
|
|
1497
1792
|
process.exitCode = 1;
|
|
1498
1793
|
},
|
|
1499
1794
|
});
|
|
1500
1795
|
const skill = defineCommand({
|
|
1501
1796
|
meta: { name: 'skill', description: 'Skill discovery and management' },
|
|
1502
|
-
subCommands: { scan: skillScan, plan: skillPlanCommand, check: skillCheckCommand },
|
|
1797
|
+
subCommands: { scan: skillScan, doctor: skillDoctorCommand, plan: skillPlanCommand, check: skillCheckCommand },
|
|
1503
1798
|
});
|
|
1504
1799
|
// ============================================================================
|
|
1505
1800
|
// agent commands — Multi-Agent 协作系统 (Phase 9)
|
|
1506
1801
|
// ============================================================================
|
|
1507
1802
|
import { AgentPool } from '../agents/AgentPool.js';
|
|
1508
|
-
import { AgentChannel } from '../agents/AgentChannel.js';
|
|
1509
1803
|
import { PROFESSIONAL_AGENTS, getProfile, listProfiles } from '../agents/profiles.js';
|
|
1510
1804
|
const agentPool = new AgentPool();
|
|
1511
|
-
const agentChannel = new AgentChannel(getEngine().eventBus);
|
|
1512
1805
|
const agentSpawn = defineCommand({
|
|
1513
1806
|
meta: { name: 'spawn', description: 'Spawn a new agent instance' },
|
|
1514
1807
|
args: {
|
|
@@ -1626,7 +1919,7 @@ import * as phaseCommands from '../cli/phaseCommands.js';
|
|
|
1626
1919
|
import * as liteCommands from '../cli/liteCommands.js';
|
|
1627
1920
|
import * as vibeCommands from '../cli/vibeCommands.js';
|
|
1628
1921
|
const main = defineCommand({
|
|
1629
|
-
meta: { name: 'scale', version: '0.13.0', description: 'SCALE Engine v0.13.0 CLI - hardened phase workflow gates
|
|
1922
|
+
meta: { name: 'scale', version: '0.13.0', description: 'SCALE Engine v0.13.0 CLI - hardened phase workflow gates, governance templates, platform adapters, skill routing, and verification automation' },
|
|
1630
1923
|
subCommands: {
|
|
1631
1924
|
// Lite Mode (agent-skills style interactive entry)
|
|
1632
1925
|
lite: liteCommands.liteCommand,
|
|
@@ -1657,8 +1950,10 @@ const main = defineCommand({
|
|
|
1657
1950
|
evolve,
|
|
1658
1951
|
stats,
|
|
1659
1952
|
preflight,
|
|
1953
|
+
governance,
|
|
1660
1954
|
metrics,
|
|
1661
1955
|
'task-artifacts': taskArtifacts,
|
|
1956
|
+
workspace,
|
|
1662
1957
|
status,
|
|
1663
1958
|
workflow,
|
|
1664
1959
|
evidence,
|