@hongmaple0820/scale-engine 0.25.0 → 0.26.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/LICENSE +15 -15
- package/README.en.md +368 -346
- package/README.md +548 -529
- package/dist/adapters/AiderAdapter.js +52 -52
- package/dist/adapters/AntigravityAdapter.d.ts +4 -0
- package/dist/adapters/AntigravityAdapter.js +21 -0
- package/dist/adapters/AntigravityAdapter.js.map +1 -0
- package/dist/adapters/ClaudeCodeAdapter.d.ts +4 -1
- package/dist/adapters/ClaudeCodeAdapter.js +34 -34
- package/dist/adapters/ClaudeCodeAdapter.js.map +1 -1
- package/dist/adapters/ClineAdapter.d.ts +4 -0
- package/dist/adapters/ClineAdapter.js +20 -0
- package/dist/adapters/ClineAdapter.js.map +1 -0
- package/dist/adapters/CodexAdapter.js +28 -28
- package/dist/adapters/CursorAdapter.js +26 -26
- package/dist/adapters/DeepSeekTuiAdapter.js +97 -97
- package/dist/adapters/DoubaoAdapter.js +33 -33
- package/dist/adapters/GeminiAdapter.js +26 -26
- package/dist/adapters/GenericProjectAgentAdapter.d.ts +29 -0
- package/dist/adapters/GenericProjectAgentAdapter.js +204 -0
- package/dist/adapters/GenericProjectAgentAdapter.js.map +1 -0
- package/dist/adapters/HermesAdapter.js +26 -26
- package/dist/adapters/JCodeAdapter.d.ts +4 -0
- package/dist/adapters/JCodeAdapter.js +19 -0
- package/dist/adapters/JCodeAdapter.js.map +1 -0
- package/dist/adapters/KiloCodeAdapter.d.ts +4 -0
- package/dist/adapters/KiloCodeAdapter.js +20 -0
- package/dist/adapters/KiloCodeAdapter.js.map +1 -0
- package/dist/adapters/KimiAdapter.js +32 -32
- package/dist/adapters/KiroAdapter.js +26 -26
- package/dist/adapters/OpenClawAdapter.js +26 -26
- package/dist/adapters/OpenCodeAdapter.js +26 -26
- package/dist/adapters/QCoderAdapter.js +26 -26
- package/dist/adapters/QoderAdapter.d.ts +4 -0
- package/dist/adapters/QoderAdapter.js +21 -0
- package/dist/adapters/QoderAdapter.js.map +1 -0
- package/dist/adapters/TraeAdapter.js +26 -26
- package/dist/adapters/VSCAdapter.js +26 -26
- package/dist/adapters/WindsurfAdapter.js +32 -32
- package/dist/adapters/WorkBuddyAdapter.js +26 -26
- package/dist/adapters/index.d.ts +5 -0
- package/dist/adapters/index.js +15 -0
- package/dist/adapters/index.js.map +1 -1
- package/dist/api/cli.js +133 -47
- package/dist/api/cli.js.map +1 -1
- package/dist/api/doctor.js +10 -3
- package/dist/api/doctor.js.map +1 -1
- package/dist/api/quickstart.js +7 -1
- package/dist/api/quickstart.js.map +1 -1
- package/dist/artifact/sqliteStore.js +89 -89
- package/dist/artifact/types.d.ts +1 -1
- package/dist/cli/phaseCommands.js +45 -45
- package/dist/context/AntiPatternRegistry.js +20 -20
- package/dist/context/ContextBuilder.js +155 -155
- package/dist/evolution/EvolutionEngine.js +31 -31
- package/dist/evolution/EvolutionEvaluator.d.ts +2 -0
- package/dist/evolution/EvolutionEvaluator.js +7 -1
- package/dist/evolution/EvolutionEvaluator.js.map +1 -1
- package/dist/fsm/FSMAgentBridge.js +11 -11
- package/dist/hooks/HookGeneratorEnhanced.js +218 -218
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/knowledge/SQLiteKnowledgeBase.js +28 -28
- package/dist/memory/MemoryBrain.js +52 -52
- package/dist/output/GovernanceDashboard.js +44 -44
- package/dist/output/HTMLArtifactLayer.js +31 -31
- package/dist/prompts/VibeTemplateGallery.js +121 -121
- package/dist/skills/SkillDiscovery.js +12 -1
- package/dist/skills/SkillDiscovery.js.map +1 -1
- package/dist/skills/routing/SkillPlanner.js +40 -40
- package/dist/workflow/EngineeringStandards.js +62 -62
- package/dist/workflow/GovernanceTemplatePacks.d.ts +1 -1
- package/dist/workflow/GovernanceTemplatePacks.js +1990 -162
- package/dist/workflow/GovernanceTemplatePacks.js.map +1 -1
- package/dist/workflow/GovernanceTemplates.d.ts +2 -0
- package/dist/workflow/GovernanceTemplates.js +1012 -1001
- package/dist/workflow/GovernanceTemplates.js.map +1 -1
- package/dist/workflow/ResourceGovernance.js +16 -16
- package/dist/workflow/TaskArtifactScaffolder.js +10 -10
- package/dist/workflow/UpgradeManager.d.ts +3 -2
- package/dist/workflow/UpgradeManager.js +134 -49
- package/dist/workflow/UpgradeManager.js.map +1 -1
- package/dist/workflow/WorkspaceTopology.js +18 -15
- package/dist/workflow/WorkspaceTopology.js.map +1 -1
- package/docs/ACTIVE_SECURITY_VISUAL_GATES.md +87 -87
- package/docs/BACKGROUND_HUNTER.md +62 -62
- package/docs/CODE_INTELLIGENCE.md +138 -138
- package/docs/CONTEXT_BUDGET.md +113 -113
- package/docs/DEPENDENCY_AUDIT.md +89 -89
- package/docs/EVOLUTION_SHADOW_MODE.md +63 -63
- package/docs/EXTERNAL_REFERENCES.md +63 -58
- package/docs/GITLAB_FLOW.md +125 -125
- package/docs/GOVERNANCE_DASHBOARD.md +85 -85
- package/docs/MEMORY_BRAIN.md +104 -104
- package/docs/MEMORY_FABRIC.md +134 -134
- package/docs/README.md +101 -92
- package/docs/RUNTIME_EVIDENCE.md +101 -101
- package/docs/SKILL-REPOSITORY.md +57 -57
- package/docs/SKILL_RADAR.md +122 -122
- package/docs/THIRD_PARTY_SKILLS.md +57 -57
- package/docs/WORKFLOW_EVAL.md +151 -151
- package/docs/guides/DEVELOPMENT_WORKFLOW.md +80 -0
- package/docs/guides/GETTING_STARTED.md +50 -0
- package/docs/start/README.md +78 -72
- package/docs/start/agent-governance-demo.md +107 -107
- package/docs/start/quickstart.md +137 -127
- package/docs/start/workflow-upgrade.md +32 -8
- package/docs/workflow/README.md +67 -0
- package/docs/workflow/node-library.md +52 -0
- package/docs/workflow/templates/api-contract.md +29 -0
- package/docs/workflow/templates/architecture-review.md +23 -0
- package/docs/workflow/templates/db-change-plan.md +20 -0
- package/docs/workflow/templates/docs-impact.md +17 -0
- package/docs/workflow/templates/e2e-plan.md +20 -0
- package/docs/workflow/templates/explore.md +16 -0
- package/docs/workflow/templates/github-actions-scale-preflight.yml +32 -0
- package/docs/workflow/templates/mini-prd.md +16 -0
- package/docs/workflow/templates/plan.md +37 -0
- package/docs/workflow/templates/pre-push-scale-preflight.sh +8 -0
- package/docs/workflow/templates/product-smoke.md +61 -0
- package/docs/workflow/templates/reality-check.md +28 -0
- package/docs/workflow/templates/resource-cleanup.md +17 -0
- package/docs/workflow/templates/resource-impact.md +25 -0
- package/docs/workflow/templates/review.md +12 -0
- package/docs/workflow/templates/runtime.md +23 -0
- package/docs/workflow/templates/security-review.md +26 -0
- package/docs/workflow/templates/skill-evidence.md +33 -0
- package/docs/workflow/templates/skill-plan.md +39 -0
- package/docs/workflow/templates/spec.md +17 -0
- package/docs/workflow/templates/standards-impact.md +28 -0
- package/docs/workflow/templates/summary.md +16 -0
- package/docs/workflow/templates/tasks.md +8 -0
- package/docs/workflow/templates/ui-spec.md +29 -0
- package/docs/workflow/templates/verification.md +20 -0
- package/docs/workflow/templates/visual-review.md +20 -0
- package/examples/demo-projects/agent-governance-demo/CONTEXT.md +14 -14
- package/examples/demo-projects/agent-governance-demo/README.md +48 -48
- package/examples/demo-projects/agent-governance-demo/docs/CONTEXT-MAP.md +14 -14
- package/examples/demo-projects/agent-governance-demo/package.json +22 -21
- package/examples/demo-projects/agent-governance-demo/src/oauth-state.ts +39 -39
- package/examples/demo-projects/agent-governance-demo/tests/oauth-state.test.ts +52 -52
- package/package.json +88 -78
package/dist/api/cli.js
CHANGED
|
@@ -2537,7 +2537,7 @@ const init = defineCommand({
|
|
|
2537
2537
|
'governance-pack': {
|
|
2538
2538
|
type: 'string',
|
|
2539
2539
|
default: 'standard',
|
|
2540
|
-
description: 'Governance template pack (standard/project-scaffold/moe-workspace/resource-governance/go-service-matrix/node-library/frontend-app)',
|
|
2540
|
+
description: 'Governance template pack (standard/project-scaffold/scale-engine-repo/moe-workspace/resource-governance/go-service-matrix/node-library/frontend-app)',
|
|
2541
2541
|
},
|
|
2542
2542
|
quick: { type: 'boolean', default: false, description: 'Quick start with auto-detection' },
|
|
2543
2543
|
interactive: { type: 'boolean', default: false, description: 'Interactive configuration mode with prompts' },
|
|
@@ -2911,13 +2911,15 @@ const governance = defineCommand({
|
|
|
2911
2911
|
// upgrade command - Safe workflow/template/capability update planning
|
|
2912
2912
|
// ============================================================================
|
|
2913
2913
|
const upgradeCheck = defineCommand({
|
|
2914
|
-
meta: { name: 'check', description: 'Check SCALE workflow, governance pack, and third-party capability update status' },
|
|
2914
|
+
meta: { name: 'check', description: '检查 SCALE 工作流、治理包和第三方能力更新状态 / Check SCALE workflow, governance pack, and third-party capability update status' },
|
|
2915
2915
|
args: {
|
|
2916
|
-
dir: { type: 'string', default: PROJECT_DIR, description: 'Project directory' },
|
|
2917
|
-
'target-version': { type: 'string', description: '
|
|
2918
|
-
|
|
2916
|
+
dir: { type: 'string', default: PROJECT_DIR, description: '项目目录 / Project directory' },
|
|
2917
|
+
'target-version': { type: 'string', description: '目标 SCALE Engine 版本,默认使用当前 CLI 版本 / Target SCALE Engine version' },
|
|
2918
|
+
lang: { type: 'string', default: 'zh', description: '输出语言 zh/en / Output language' },
|
|
2919
|
+
json: { type: 'boolean', default: false, description: '输出 JSON / Print JSON output' },
|
|
2919
2920
|
},
|
|
2920
2921
|
run({ args }) {
|
|
2922
|
+
const lang = normalizeLangArg(args.lang);
|
|
2921
2923
|
const report = createUpgradeCheckReport({
|
|
2922
2924
|
projectDir: args.dir,
|
|
2923
2925
|
targetScaleVersion: args['target-version'] ? String(args['target-version']) : undefined,
|
|
@@ -2926,63 +2928,87 @@ const upgradeCheck = defineCommand({
|
|
|
2926
2928
|
console.log(JSON.stringify(report, null, 2));
|
|
2927
2929
|
return;
|
|
2928
2930
|
}
|
|
2929
|
-
|
|
2930
|
-
|
|
2931
|
-
|
|
2932
|
-
|
|
2933
|
-
|
|
2934
|
-
|
|
2935
|
-
|
|
2936
|
-
|
|
2931
|
+
if (lang === 'zh') {
|
|
2932
|
+
console.log('SCALE 升级检查');
|
|
2933
|
+
console.log(` 项目: ${report.projectDir}`);
|
|
2934
|
+
console.log(` 状态: ${report.status}`);
|
|
2935
|
+
console.log(` SCALE Engine: ${report.scaleEngine.currentVersion ?? '无'} -> ${report.scaleEngine.latestVersion}`);
|
|
2936
|
+
console.log(` 治理包: ${report.governancePack.id ?? '无'} v${report.governancePack.currentVersion ?? '无'} -> v${report.governancePack.latestVersion ?? '无'}`);
|
|
2937
|
+
console.log(` 受管生成文件: ${report.generatedFiles.clean} 个干净, ${report.generatedFiles.changed} 个本地改动, ${report.generatedFiles.missing} 个缺失`);
|
|
2938
|
+
console.log(` 第三方能力策略: ${report.thirdParty.policy}; 需要人工审查: ${report.thirdParty.reviewRequired}`);
|
|
2939
|
+
console.log(' 下一步:');
|
|
2940
|
+
}
|
|
2941
|
+
else {
|
|
2942
|
+
console.log('SCALE Upgrade Check');
|
|
2943
|
+
console.log(` Project: ${report.projectDir}`);
|
|
2944
|
+
console.log(` Status: ${report.status}`);
|
|
2945
|
+
console.log(` SCALE Engine: ${report.scaleEngine.currentVersion ?? 'none'} -> ${report.scaleEngine.latestVersion}`);
|
|
2946
|
+
console.log(` Governance pack: ${report.governancePack.id ?? 'none'} v${report.governancePack.currentVersion ?? 'none'} -> v${report.governancePack.latestVersion ?? 'none'}`);
|
|
2947
|
+
console.log(` Generated files: ${report.generatedFiles.clean} clean, ${report.generatedFiles.changed} changed, ${report.generatedFiles.missing} missing`);
|
|
2948
|
+
console.log(` Third-party policy: ${report.thirdParty.policy}; review required: ${report.thirdParty.reviewRequired}`);
|
|
2949
|
+
console.log(' Next:');
|
|
2950
|
+
}
|
|
2937
2951
|
for (const command of report.recommendedCommands)
|
|
2938
2952
|
console.log(` ${command}`);
|
|
2939
2953
|
},
|
|
2940
2954
|
});
|
|
2941
2955
|
const upgradePlan = defineCommand({
|
|
2942
|
-
meta: { name: 'plan', description: 'Create a non-destructive SCALE upgrade plan' },
|
|
2956
|
+
meta: { name: 'plan', description: '生成非破坏性的 SCALE 升级计划 / Create a non-destructive SCALE upgrade plan' },
|
|
2943
2957
|
args: {
|
|
2944
|
-
dir: { type: 'string', default: PROJECT_DIR, description: 'Project directory' },
|
|
2945
|
-
'target-version': { type: 'string', description: '
|
|
2946
|
-
html: { type: 'boolean', default: false, description: '
|
|
2947
|
-
|
|
2958
|
+
dir: { type: 'string', default: PROJECT_DIR, description: '项目目录 / Project directory' },
|
|
2959
|
+
'target-version': { type: 'string', description: '目标 SCALE Engine 版本,默认使用当前 CLI 版本 / Target SCALE Engine version' },
|
|
2960
|
+
html: { type: 'boolean', default: false, description: '写入 .scale/reports/upgrade-plan.html / Write HTML plan' },
|
|
2961
|
+
lang: { type: 'string', default: 'zh', description: '输出语言 zh/en / Output language' },
|
|
2962
|
+
json: { type: 'boolean', default: false, description: '输出 JSON / Print JSON output' },
|
|
2948
2963
|
},
|
|
2949
2964
|
run({ args }) {
|
|
2965
|
+
const lang = normalizeLangArg(args.lang);
|
|
2950
2966
|
const report = createUpgradePlanReport({
|
|
2951
2967
|
projectDir: args.dir,
|
|
2952
2968
|
targetScaleVersion: args['target-version'] ? String(args['target-version']) : undefined,
|
|
2953
2969
|
});
|
|
2954
|
-
const htmlPath = args.html ? writeUpgradePlanHtml(report) : undefined;
|
|
2970
|
+
const htmlPath = args.html ? writeUpgradePlanHtml(report, undefined, lang) : undefined;
|
|
2955
2971
|
if (args.json) {
|
|
2956
2972
|
console.log(JSON.stringify({ ...report, htmlPath }, null, 2));
|
|
2957
2973
|
return;
|
|
2958
2974
|
}
|
|
2959
|
-
|
|
2960
|
-
|
|
2961
|
-
|
|
2962
|
-
|
|
2975
|
+
if (lang === 'zh') {
|
|
2976
|
+
console.log('SCALE 升级计划');
|
|
2977
|
+
console.log(` 项目: ${report.projectDir}`);
|
|
2978
|
+
console.log(` 状态: ${report.status}`);
|
|
2979
|
+
console.log(` 应用模式: ${report.applyMode}`);
|
|
2980
|
+
}
|
|
2981
|
+
else {
|
|
2982
|
+
console.log('SCALE Upgrade Plan');
|
|
2983
|
+
console.log(` Project: ${report.projectDir}`);
|
|
2984
|
+
console.log(` Status: ${report.status}`);
|
|
2985
|
+
console.log(` Apply mode: ${report.applyMode}`);
|
|
2986
|
+
}
|
|
2963
2987
|
if (report.blockers.length > 0) {
|
|
2964
|
-
console.log(' Blockers:');
|
|
2988
|
+
console.log(lang === 'zh' ? ' 阻塞项:' : ' Blockers:');
|
|
2965
2989
|
for (const blocker of report.blockers)
|
|
2966
|
-
console.log(` [${blocker.code}] ${blocker.path ?? ''} ${blocker.message}`);
|
|
2990
|
+
console.log(` [${blocker.code}] ${blocker.path ?? ''} ${formatUpgradeBlockerMessage(blocker.code, blocker.message, lang)}`);
|
|
2967
2991
|
}
|
|
2968
|
-
console.log(' Steps:');
|
|
2992
|
+
console.log(lang === 'zh' ? ' 步骤:' : ' Steps:');
|
|
2969
2993
|
for (const step of report.steps) {
|
|
2970
2994
|
const path = step.path ? ` ${step.path}` : '';
|
|
2971
2995
|
const command = step.command ? ` -> ${step.command}` : '';
|
|
2972
|
-
console.log(` [${step.risk}] ${step.action}${path}: ${step.reason}${command}`);
|
|
2996
|
+
console.log(` [${step.risk}] ${step.action}${path}: ${formatUpgradeStepReason(step.action, step.reason, lang)}${command}`);
|
|
2973
2997
|
}
|
|
2974
2998
|
if (htmlPath)
|
|
2975
2999
|
console.log(` HTML: ${htmlPath}`);
|
|
2976
3000
|
},
|
|
2977
3001
|
});
|
|
2978
3002
|
const upgradeApply = defineCommand({
|
|
2979
|
-
meta: { name: 'apply', description: 'Guarded entrypoint for applying an upgrade plan' },
|
|
3003
|
+
meta: { name: 'apply', description: '按已审阅计划安全应用升级 / Guarded entrypoint for applying an upgrade plan' },
|
|
2980
3004
|
args: {
|
|
2981
|
-
dir: { type: 'string', default: PROJECT_DIR, description: 'Project directory' },
|
|
2982
|
-
confirm: { type: 'boolean', default: false, description: 'Confirm
|
|
2983
|
-
|
|
3005
|
+
dir: { type: 'string', default: PROJECT_DIR, description: '项目目录 / Project directory' },
|
|
3006
|
+
confirm: { type: 'boolean', default: false, description: '确认当前升级计划已经审阅 / Confirm the current plan was reviewed' },
|
|
3007
|
+
lang: { type: 'string', default: 'zh', description: '输出语言 zh/en / Output language' },
|
|
3008
|
+
json: { type: 'boolean', default: false, description: '输出 JSON / Print JSON output' },
|
|
2984
3009
|
},
|
|
2985
3010
|
run({ args }) {
|
|
3011
|
+
const lang = normalizeLangArg(args.lang);
|
|
2986
3012
|
const result = applyUpgradePlan({
|
|
2987
3013
|
projectDir: args.dir,
|
|
2988
3014
|
confirm: isTruthyFlag(args.confirm),
|
|
@@ -2993,25 +3019,27 @@ const upgradeApply = defineCommand({
|
|
|
2993
3019
|
process.exitCode = 1;
|
|
2994
3020
|
return;
|
|
2995
3021
|
}
|
|
2996
|
-
console.log('SCALE Upgrade Apply');
|
|
2997
|
-
console.log(` Applied: ${result.applied}`);
|
|
2998
|
-
console.log(` Reason: ${result.reason}`);
|
|
2999
|
-
console.log(` Apply mode: ${result.plan.applyMode}`);
|
|
3022
|
+
console.log(lang === 'zh' ? 'SCALE 应用升级' : 'SCALE Upgrade Apply');
|
|
3023
|
+
console.log(lang === 'zh' ? ` 已应用: ${result.applied}` : ` Applied: ${result.applied}`);
|
|
3024
|
+
console.log(lang === 'zh' ? ` 原因: ${formatUpgradeApplyReason(result.reason, lang)}` : ` Reason: ${result.reason}`);
|
|
3025
|
+
console.log(lang === 'zh' ? ` 应用模式: ${result.plan.applyMode}` : ` Apply mode: ${result.plan.applyMode}`);
|
|
3000
3026
|
if (result.backup)
|
|
3001
|
-
console.log(` Backup: ${result.backup.manifestPath}`);
|
|
3027
|
+
console.log(lang === 'zh' ? ` 备份: ${result.backup.manifestPath}` : ` Backup: ${result.backup.manifestPath}`);
|
|
3002
3028
|
for (const path of result.changedFiles)
|
|
3003
|
-
console.log(` changed: ${path}`);
|
|
3029
|
+
console.log(lang === 'zh' ? ` 已变更: ${path}` : ` changed: ${path}`);
|
|
3004
3030
|
if (!result.ok)
|
|
3005
3031
|
process.exitCode = 1;
|
|
3006
3032
|
},
|
|
3007
3033
|
});
|
|
3008
3034
|
const upgradeRollback = defineCommand({
|
|
3009
|
-
meta: { name: 'rollback', description: '
|
|
3035
|
+
meta: { name: 'rollback', description: '回滚最近一次 SCALE 托管升级 / Roll back the latest SCALE-managed upgrade' },
|
|
3010
3036
|
args: {
|
|
3011
|
-
dir: { type: 'string', default: PROJECT_DIR, description: 'Project directory' },
|
|
3012
|
-
|
|
3037
|
+
dir: { type: 'string', default: PROJECT_DIR, description: '项目目录 / Project directory' },
|
|
3038
|
+
lang: { type: 'string', default: 'zh', description: '输出语言 zh/en / Output language' },
|
|
3039
|
+
json: { type: 'boolean', default: false, description: '输出 JSON / Print JSON output' },
|
|
3013
3040
|
},
|
|
3014
3041
|
run({ args }) {
|
|
3042
|
+
const lang = normalizeLangArg(args.lang);
|
|
3015
3043
|
const result = rollbackLatestUpgrade({ projectDir: args.dir });
|
|
3016
3044
|
if (args.json) {
|
|
3017
3045
|
console.log(JSON.stringify(result, null, 2));
|
|
@@ -3019,21 +3047,78 @@ const upgradeRollback = defineCommand({
|
|
|
3019
3047
|
process.exitCode = 1;
|
|
3020
3048
|
return;
|
|
3021
3049
|
}
|
|
3022
|
-
console.log('SCALE Upgrade Rollback');
|
|
3023
|
-
console.log(` Applied: ${result.applied}`);
|
|
3024
|
-
console.log(` Reason: ${result.reason}`);
|
|
3050
|
+
console.log(lang === 'zh' ? 'SCALE 升级回滚' : 'SCALE Upgrade Rollback');
|
|
3051
|
+
console.log(lang === 'zh' ? ` 已回滚: ${result.applied}` : ` Applied: ${result.applied}`);
|
|
3052
|
+
console.log(lang === 'zh' ? ` 原因: ${formatUpgradeApplyReason(result.reason, lang)}` : ` Reason: ${result.reason}`);
|
|
3025
3053
|
if (result.backup)
|
|
3026
|
-
console.log(` Backup: ${result.backup.manifestPath}`);
|
|
3054
|
+
console.log(lang === 'zh' ? ` 备份: ${result.backup.manifestPath}` : ` Backup: ${result.backup.manifestPath}`);
|
|
3027
3055
|
for (const path of result.restoredFiles)
|
|
3028
|
-
console.log(` restored: ${path}`);
|
|
3056
|
+
console.log(lang === 'zh' ? ` 已恢复: ${path}` : ` restored: ${path}`);
|
|
3029
3057
|
if (!result.ok)
|
|
3030
3058
|
process.exitCode = 1;
|
|
3031
3059
|
},
|
|
3032
3060
|
});
|
|
3033
3061
|
const upgrade = defineCommand({
|
|
3034
|
-
meta: { name: 'upgrade', description: 'Safe update planning for
|
|
3062
|
+
meta: { name: 'upgrade', description: 'SCALE 工作流、模板、skills、MCP、CLI 工具的安全升级规划 / Safe update planning for workflow assets' },
|
|
3035
3063
|
subCommands: { check: upgradeCheck, plan: upgradePlan, apply: upgradeApply, rollback: upgradeRollback },
|
|
3036
3064
|
});
|
|
3065
|
+
function formatUpgradeBlockerMessage(code, fallback, lang) {
|
|
3066
|
+
if (lang !== 'zh')
|
|
3067
|
+
return fallback;
|
|
3068
|
+
if (code === 'missing-governance-lock')
|
|
3069
|
+
return '缺少治理锁文件,无法判断哪些生成文件可以安全升级。';
|
|
3070
|
+
if (code === 'local-generated-file-changed')
|
|
3071
|
+
return '受管生成文件已有本地改动,需要三方对比或人工审阅后再升级。';
|
|
3072
|
+
return fallback;
|
|
3073
|
+
}
|
|
3074
|
+
function formatUpgradeStepReason(action, fallback, lang) {
|
|
3075
|
+
if (lang !== 'zh')
|
|
3076
|
+
return fallback;
|
|
3077
|
+
switch (action) {
|
|
3078
|
+
case 'initialize-governance-lock':
|
|
3079
|
+
return '先创建治理锁文件,后续才能安全升级生成的治理资产。';
|
|
3080
|
+
case 'upgrade-scale-engine':
|
|
3081
|
+
return fallback.replace('SCALE Engine changed from', 'SCALE Engine 版本变化:').replace(' to ', ' -> ');
|
|
3082
|
+
case 'upgrade-governance-pack':
|
|
3083
|
+
return fallback.replace('Governance pack', '治理包').replace('changed from', '版本变化:').replace(' to ', ' -> ');
|
|
3084
|
+
case 'refresh-managed-generated-files':
|
|
3085
|
+
return fallback.replace('clean managed governance files can be refreshed automatically; local edits still block automatic apply.', '个干净受管治理文件可自动刷新;已有本地改动的文件仍会阻止自动应用。');
|
|
3086
|
+
case 'restore-missing-generated-file':
|
|
3087
|
+
return '该文件由治理锁管理,但当前本地缺失,可从当前治理包恢复。';
|
|
3088
|
+
case 'review-local-change':
|
|
3089
|
+
return '需要保留、合并或明确替换本地改动,不能自动覆盖。';
|
|
3090
|
+
case 'review-third-party-capability':
|
|
3091
|
+
return fallback
|
|
3092
|
+
.replace('updates require manual-review; SCALE never auto-installs third-party capabilities.', '更新需要人工审阅;SCALE 不会自动安装第三方能力。')
|
|
3093
|
+
.replace('updates require blocked; SCALE never auto-installs third-party capabilities.', '更新默认阻断;SCALE 不会自动安装第三方能力。');
|
|
3094
|
+
case 'run-preflight':
|
|
3095
|
+
return '完成已接受的升级后,运行项目级预检。';
|
|
3096
|
+
default:
|
|
3097
|
+
return fallback;
|
|
3098
|
+
}
|
|
3099
|
+
}
|
|
3100
|
+
function formatUpgradeApplyReason(reason, lang) {
|
|
3101
|
+
if (lang !== 'zh')
|
|
3102
|
+
return reason;
|
|
3103
|
+
switch (reason) {
|
|
3104
|
+
case 'Review scale upgrade plan first, then rerun with --confirm.':
|
|
3105
|
+
return '请先审阅 SCALE 升级计划,再使用 --confirm 重新运行。';
|
|
3106
|
+
case 'Upgrade requires manual review because generated files have local changes or the lock is missing.':
|
|
3107
|
+
return '生成文件存在本地改动或缺少锁文件,本次升级需要人工审阅。';
|
|
3108
|
+
case 'Cannot apply without a governance lock and pack id.':
|
|
3109
|
+
return '缺少治理锁文件或治理包 ID,无法应用升级。';
|
|
3110
|
+
case 'No safe upgrade changes were needed.':
|
|
3111
|
+
return '没有需要应用的安全升级变更。';
|
|
3112
|
+
case 'Safe upgrade changes were applied.':
|
|
3113
|
+
return '已应用安全升级变更。';
|
|
3114
|
+
case 'No SCALE-managed upgrade backup was found.':
|
|
3115
|
+
return '未找到 SCALE 管理的升级备份。';
|
|
3116
|
+
case 'Latest SCALE-managed upgrade backup was rolled back.':
|
|
3117
|
+
return '已回滚最近一次 SCALE 管理的升级备份。';
|
|
3118
|
+
default:
|
|
3119
|
+
return reason;
|
|
3120
|
+
}
|
|
3121
|
+
}
|
|
3037
3122
|
// ============================================================================
|
|
3038
3123
|
// assets command - Resource lifecycle governance
|
|
3039
3124
|
// ============================================================================
|
|
@@ -3482,7 +3567,8 @@ function normalizeThemeArg(value) {
|
|
|
3482
3567
|
return 'auto';
|
|
3483
3568
|
}
|
|
3484
3569
|
function normalizeLangArg(value) {
|
|
3485
|
-
|
|
3570
|
+
const raw = String(value ?? process.env.SCALE_LANG ?? 'zh').trim().toLowerCase();
|
|
3571
|
+
return raw === 'en' || raw.startsWith('en-') || raw === 'english' ? 'en' : 'zh';
|
|
3486
3572
|
}
|
|
3487
3573
|
function launchLocalFile(path) {
|
|
3488
3574
|
try {
|