@hongmaple0820/scale-engine 0.15.0 → 0.16.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.
Files changed (89) hide show
  1. package/README.en.md +13 -5
  2. package/README.md +13 -5
  3. package/dist/agents/LeadershipPresets.d.ts +16 -0
  4. package/dist/agents/LeadershipPresets.js +152 -0
  5. package/dist/agents/LeadershipPresets.js.map +1 -0
  6. package/dist/api/cli.js +729 -5
  7. package/dist/api/cli.js.map +1 -1
  8. package/dist/api/doctor.d.ts +2 -0
  9. package/dist/api/doctor.js +83 -0
  10. package/dist/api/doctor.js.map +1 -1
  11. package/dist/api/mcp.js +2 -1
  12. package/dist/api/mcp.js.map +1 -1
  13. package/dist/artifact/types.d.ts +4 -0
  14. package/dist/artifact/types.js.map +1 -1
  15. package/dist/capabilities/InstalledSkillsIntegration.d.ts +3 -0
  16. package/dist/capabilities/InstalledSkillsIntegration.js +41 -17
  17. package/dist/capabilities/InstalledSkillsIntegration.js.map +1 -1
  18. package/dist/cli/phaseCommands.d.ts +14 -0
  19. package/dist/cli/phaseCommands.js +214 -5
  20. package/dist/cli/phaseCommands.js.map +1 -1
  21. package/dist/cli/vibeCommands.d.ts +20 -0
  22. package/dist/cli/vibeCommands.js +150 -173
  23. package/dist/cli/vibeCommands.js.map +1 -1
  24. package/dist/core/logger.d.ts +2 -0
  25. package/dist/core/logger.js +33 -1
  26. package/dist/core/logger.js.map +1 -1
  27. package/dist/index.d.ts +4 -0
  28. package/dist/index.js +5 -0
  29. package/dist/index.js.map +1 -1
  30. package/dist/output/HTMLDocumentRenderer.js +3 -2
  31. package/dist/output/HTMLDocumentRenderer.js.map +1 -1
  32. package/dist/prompts/VibeTemplateGallery.d.ts +25 -0
  33. package/dist/prompts/VibeTemplateGallery.js +295 -0
  34. package/dist/prompts/VibeTemplateGallery.js.map +1 -0
  35. package/dist/skills/ExternalSkills.js +9 -4
  36. package/dist/skills/ExternalSkills.js.map +1 -1
  37. package/dist/skills/SkillDiscovery.js +5 -3
  38. package/dist/skills/SkillDiscovery.js.map +1 -1
  39. package/dist/skills/SkillDoctor.js +178 -1
  40. package/dist/skills/SkillDoctor.js.map +1 -1
  41. package/dist/skills/SkillInstaller.js +5 -0
  42. package/dist/skills/SkillInstaller.js.map +1 -1
  43. package/dist/skills/SkillRepository.d.ts +63 -0
  44. package/dist/skills/SkillRepository.js +365 -0
  45. package/dist/skills/SkillRepository.js.map +1 -0
  46. package/dist/skills/routing/SkillPolicy.js +168 -5
  47. package/dist/skills/routing/SkillPolicy.js.map +1 -1
  48. package/dist/tools/ToolCapabilityRegistry.d.ts +46 -0
  49. package/dist/tools/ToolCapabilityRegistry.js +223 -0
  50. package/dist/tools/ToolCapabilityRegistry.js.map +1 -0
  51. package/dist/tools/ToolEvidenceGate.d.ts +39 -0
  52. package/dist/tools/ToolEvidenceGate.js +117 -0
  53. package/dist/tools/ToolEvidenceGate.js.map +1 -0
  54. package/dist/tools/ToolEvidenceStore.d.ts +58 -0
  55. package/dist/tools/ToolEvidenceStore.js +129 -0
  56. package/dist/tools/ToolEvidenceStore.js.map +1 -0
  57. package/dist/tools/ToolOrchestrator.d.ts +67 -0
  58. package/dist/tools/ToolOrchestrator.js +193 -0
  59. package/dist/tools/ToolOrchestrator.js.map +1 -0
  60. package/dist/tools/ToolPolicy.d.ts +33 -0
  61. package/dist/tools/ToolPolicy.js +157 -0
  62. package/dist/tools/ToolPolicy.js.map +1 -0
  63. package/dist/tools/index.d.ts +5 -0
  64. package/dist/tools/index.js +6 -0
  65. package/dist/tools/index.js.map +1 -0
  66. package/dist/version.d.ts +3 -0
  67. package/dist/version.js +15 -0
  68. package/dist/version.js.map +1 -0
  69. package/dist/workflow/EngineeringStandards.d.ts +212 -0
  70. package/dist/workflow/EngineeringStandards.js +1021 -0
  71. package/dist/workflow/EngineeringStandards.js.map +1 -0
  72. package/dist/workflow/GovernanceTemplatePacks.d.ts +1 -1
  73. package/dist/workflow/GovernanceTemplatePacks.js +101 -18
  74. package/dist/workflow/GovernanceTemplatePacks.js.map +1 -1
  75. package/dist/workflow/GovernanceTemplates.d.ts +1 -1
  76. package/dist/workflow/GovernanceTemplates.js +225 -37
  77. package/dist/workflow/GovernanceTemplates.js.map +1 -1
  78. package/dist/workflow/ResourceGovernance.d.ts +120 -0
  79. package/dist/workflow/ResourceGovernance.js +512 -0
  80. package/dist/workflow/ResourceGovernance.js.map +1 -0
  81. package/dist/workflow/TaskArtifactScaffolder.js +3 -0
  82. package/dist/workflow/TaskArtifactScaffolder.js.map +1 -1
  83. package/dist/workflow/VerificationProfile.d.ts +2 -0
  84. package/dist/workflow/VerificationProfile.js +7 -0
  85. package/dist/workflow/VerificationProfile.js.map +1 -1
  86. package/dist/workflow/index.d.ts +2 -0
  87. package/dist/workflow/index.js +2 -0
  88. package/dist/workflow/index.js.map +1 -1
  89. package/package.json +2 -2
package/README.en.md CHANGED
@@ -1,14 +1,14 @@
1
1
  <p align="center">
2
- <img src="https://img.shields.io/badge/version-0.12.2-orange?style=flat-square" alt="version" />
2
+ <img src="https://img.shields.io/badge/version-0.15.1-orange?style=flat-square" alt="version" />
3
3
  <img src="https://img.shields.io/badge/platforms-16-blue?style=flat-square" alt="platforms" />
4
4
  <img src="https://img.shields.io/badge/agents-12-blue?style=flat-square" alt="agents" />
5
5
  <img src="https://img.shields.io/badge/workflows-10-green?style=flat-square" alt="workflows" />
6
6
  <img src="https://img.shields.io/badge/detectors-19-red?style=flat-square" alt="detectors" />
7
- <img src="https://img.shields.io/badge/tests-560-passing-brightgreen?style=flat-square" alt="tests" />
8
- <img src="https://img.shields.io/badge/npm-0.12.2-cb3837?style=flat-square&logo=npm" alt="npm" />
7
+ <img src="https://img.shields.io/badge/tests-822-passing-brightgreen?style=flat-square" alt="tests" />
8
+ <img src="https://img.shields.io/badge/npm-0.15.1-cb3837?style=flat-square&logo=npm" alt="npm" />
9
9
  </p>
10
10
 
11
- # SCALE Engine v0.11.2
11
+ # SCALE Engine v0.15.1
12
12
 
13
13
  SCALE Engine is an AI engineering workflow runtime for agentic coding tools. It turns prompt-level engineering rules into stateful workflow gates, persisted evidence, review records, and release checks.
14
14
 
@@ -28,7 +28,15 @@ Prompt instructions are advisory. Production engineering needs mechanisms:
28
28
 
29
29
  ## Current Release
30
30
 
31
- v0.11.1 introduces four priority improvements:
31
+ v0.15.1 focuses on production-grade engineering governance templates:
32
+
33
+ - Supports MOE and non-MOE workspace topology, child repository blockers, and temporary worktree cleanup candidates.
34
+ - Adds resource asset governance for maintained docs, versioned outputs, task evidence, temporary files, and forbidden commit assets.
35
+ - Adds engineering standards scans for noisy logs, sensitive data redaction, secure input handling, ORM/database usage, framework conventions, and test rigor.
36
+ - Strengthens skill and tool orchestration with routing and evidence contracts for UI/UX, web research, browser E2E, desktop automation, and external Agent CLIs.
37
+ - `scale init` / governance packs now generate service matrix, verification profile, artifact templates, metrics, resource policy, engineering standards, and tool orchestration rules.
38
+
39
+ Historical v0.11.1 introduced four priority improvements:
32
40
 
33
41
  ### Phase Commands FSM Blocking
34
42
  - `canTransition` + `process.exit(1)` ensures FSM guard failures block execution, not continue
package/README.md CHANGED
@@ -1,14 +1,14 @@
1
1
  <p align="center">
2
- <img src="https://img.shields.io/badge/version-0.12.3-orange?style=flat-square" alt="version" />
2
+ <img src="https://img.shields.io/badge/version-0.15.1-orange?style=flat-square" alt="version" />
3
3
  <img src="https://img.shields.io/badge/platforms-16-blue?style=flat-square" alt="platforms" />
4
4
  <img src="https://img.shields.io/badge/agents-12-blue?style=flat-square" alt="agents" />
5
5
  <img src="https://img.shields.io/badge/workflows-10-green?style=flat-square" alt="workflows" />
6
6
  <img src="https://img.shields.io/badge/detectors-19-red?style=flat-square" alt="detectors" />
7
- <img src="https://img.shields.io/badge/tests-562-passing-brightgreen?style=flat-square" alt="tests" />
8
- <img src="https://img.shields.io/badge/npm-0.12.2-cb3837?style=flat-square&logo=npm" alt="npm" />
7
+ <img src="https://img.shields.io/badge/tests-822-passing-brightgreen?style=flat-square" alt="tests" />
8
+ <img src="https://img.shields.io/badge/npm-0.15.1-cb3837?style=flat-square&logo=npm" alt="npm" />
9
9
  </p>
10
10
 
11
- # SCALE Engine v0.12.3
11
+ # SCALE Engine v0.15.1
12
12
 
13
13
  SCALE Engine 是一个面向 AI 编码 Agent 的工程化工作流运行时。它把提示词里的工程纪律,下沉为状态机、质量门禁、持久化证据、确定性 review 记录和发布检查。
14
14
 
@@ -28,7 +28,15 @@ npm:https://www.npmjs.com/package/@hongmaple0820/scale-engine
28
28
 
29
29
  ## 当前版本
30
30
 
31
- v0.11.1 新增四大优先级改进:
31
+ v0.15.1 聚焦生产级工程治理模板:
32
+
33
+ - 支持 MOE / 非 MOE 工作区拓扑、子仓库变更阻断、临时 worktree 清理候选识别。
34
+ - 增加资源资产治理,区分长期维护文档、版本化产物、任务证据、临时文件和禁止提交资产。
35
+ - 增加工程规范扫描,覆盖日志噪音、敏感信息脱敏、安全输入、ORM/数据库、框架组件和测试验证。
36
+ - 增强技能与工具编排,UI/UX、联网研究、浏览器 E2E、桌面自动化、外部 Agent CLI 都有路由和证据契约。
37
+ - `scale init` / governance pack 会生成 service matrix、verification profile、artifact 模板、metrics、resource policy、engineering standards 和 tool orchestration 规则。
38
+
39
+ 历史 v0.11.1 新增四大优先级改进:
32
40
 
33
41
  ### Phase Commands FSM 阻断
34
42
  - `canTransition` + `process.exit(1)` 确保 FSM guard 失败时阻塞流程,而非继续执行
@@ -0,0 +1,16 @@
1
+ export type LeadershipPresetId = 'ceo-lead' | 'cto-lead' | 'product-lead' | 'ux-director' | 'qa-director' | 'security-lead' | 'delivery-lead';
2
+ export interface LeadershipPreset {
3
+ id: LeadershipPresetId;
4
+ name: string;
5
+ title: string;
6
+ whenToUse: string[];
7
+ decisionRights: string[];
8
+ coachingQuestions: string[];
9
+ defaultTeam: string[];
10
+ boundaries: string[];
11
+ }
12
+ export declare const LEADERSHIP_PRESETS: LeadershipPreset[];
13
+ export declare function listLeadershipPresets(): LeadershipPreset[];
14
+ export declare function getLeadershipPreset(id: string): LeadershipPreset | undefined;
15
+ export declare function selectLeadershipPreset(taskDescription: string): LeadershipPreset | undefined;
16
+ export declare function renderLeadershipPresetsMarkdown(): string;
@@ -0,0 +1,152 @@
1
+ export const LEADERSHIP_PRESETS = [
2
+ {
3
+ id: 'ceo-lead',
4
+ name: 'CEO',
5
+ title: '产品价值与商业闭环负责人',
6
+ whenToUse: ['新产品', '商业闭环', '需求优先级', '路线图', 'MVP 定义'],
7
+ decisionRights: ['产品价值与商业闭环优先级', '非目标裁剪', '上线范围和成功指标'],
8
+ coachingQuestions: [
9
+ '这个需求解决的是谁的真实问题?',
10
+ '最小可交付闭环是什么?',
11
+ '上线后用什么指标证明值得继续投入?',
12
+ ],
13
+ defaultTeam: ['product-agent', 'ux-director', 'cto-lead', 'qa-director'],
14
+ boundaries: ['不能编造市场事实', '不能把用户想法直接当成验收标准', '必须明确非目标'],
15
+ },
16
+ {
17
+ id: 'cto-lead',
18
+ name: 'CTO',
19
+ title: '技术架构与工程质量负责人',
20
+ whenToUse: ['架构设计', '技术选型', '跨模块变更', '工程治理', '服务边界'],
21
+ decisionRights: ['技术架构与工程质量门槛', '模块边界', '验证策略', '回滚策略'],
22
+ coachingQuestions: [
23
+ '哪些契约变化会影响上下游?',
24
+ '哪些检查必须自动化,哪些可以人工验收?',
25
+ '这次改动如何避免引入长期维护负担?',
26
+ ],
27
+ defaultTeam: ['architect-agent', 'backend-agent', 'frontend-agent', 'security-agent', 'test-agent'],
28
+ boundaries: ['不能绕过项目技术规范', '不能凭空声称测试通过', '不能牺牲安全和可维护性换短期速度'],
29
+ },
30
+ {
31
+ id: 'product-lead',
32
+ name: 'Product Lead',
33
+ title: '需求澄清与 PRD 负责人',
34
+ whenToUse: ['Mini-PRD', '用户故事', '验收标准', '异常场景'],
35
+ decisionRights: ['需求边界', '用户路径', '验收标准可测试性'],
36
+ coachingQuestions: [
37
+ '用户从哪里进入,从哪里完成目标?',
38
+ '权限不足、失败、空态和重试怎么处理?',
39
+ '哪些验收项可以自动化?',
40
+ ],
41
+ defaultTeam: ['product-agent', 'docs-agent', 'test-agent'],
42
+ boundaries: ['验收标准必须可测试', '必须记录权限和数据影响', '不能留下模糊措辞'],
43
+ },
44
+ {
45
+ id: 'ux-director',
46
+ name: 'UX Director',
47
+ title: '体验架构与视觉审美负责人',
48
+ whenToUse: ['UI/UX', '视觉审美', '交互体验', '响应式', '可访问性'],
49
+ decisionRights: ['信息架构', '视觉方向', '交互状态', '设计验收证据'],
50
+ coachingQuestions: [
51
+ '用户最频繁的动作是否足够顺手?',
52
+ '错误、加载、空态和移动端是否都有设计?',
53
+ '界面是否符合产品类型,而不是模板化堆卡片?',
54
+ ],
55
+ defaultTeam: ['ui-design-agent', 'frontend-agent', 'test-agent'],
56
+ boundaries: ['不能只描述功能不定义状态', '不能未截图就声称体验完成', '不能忽略可访问性'],
57
+ },
58
+ {
59
+ id: 'qa-director',
60
+ name: 'QA Director',
61
+ title: '验证严谨性与验收证据负责人',
62
+ whenToUse: ['测试策略', 'E2E', '验收', '回归', '发版前检查'],
63
+ decisionRights: ['测试范围', '证据质量', '阻断项判断'],
64
+ coachingQuestions: [
65
+ '哪些是主链路,哪些是边界场景?',
66
+ '失败输出是否足够定位问题?',
67
+ '哪些验证只是 dry-run,不能当成通过?',
68
+ ],
69
+ defaultTeam: ['test-agent', 'code-review-agent', 'security-agent'],
70
+ boundaries: ['未运行不能说通过', '失败项不能隐藏', '跳过项必须说明原因'],
71
+ },
72
+ {
73
+ id: 'security-lead',
74
+ name: 'Security Lead',
75
+ title: '安全、隐私与供应链风险负责人',
76
+ whenToUse: ['认证授权', '敏感数据', '日志脱敏', '供应链', '高权限工具'],
77
+ decisionRights: ['安全门槛', '敏感操作确认', '供应链阻断', '审计要求'],
78
+ coachingQuestions: [
79
+ '输入、输出、日志和错误信息是否泄露敏感信息?',
80
+ '第三方脚本、Skill、MCP 是否经过安全扫描?',
81
+ '权限边界和回滚策略是否明确?',
82
+ ],
83
+ defaultTeam: ['security-agent', 'code-review-agent', 'ops-agent'],
84
+ boundaries: ['禁止硬编码密钥', '禁止未经审查执行远程脚本', '危险操作必须显式确认'],
85
+ },
86
+ {
87
+ id: 'delivery-lead',
88
+ name: 'Delivery Lead',
89
+ title: '交付、文档资产与发版负责人',
90
+ whenToUse: ['PR', '发布', '文档同步', '资源归档', '多仓协作'],
91
+ decisionRights: ['分支边界', '交付证据', '文档资产生命周期', '发布节奏'],
92
+ coachingQuestions: [
93
+ '哪些文件应该提交,哪些只是临时产物?',
94
+ '多仓或子模块是否都在正确分支?',
95
+ '发版证据是否包含 commit、tag、远程和 registry 状态?',
96
+ ],
97
+ defaultTeam: ['docs-agent', 'ops-agent', 'qa-director'],
98
+ boundaries: ['不能混入无关 dirty tree', '不能提交临时报告和本地配置', 'main/master 需显式授权'],
99
+ },
100
+ ];
101
+ export function listLeadershipPresets() {
102
+ return [...LEADERSHIP_PRESETS];
103
+ }
104
+ export function getLeadershipPreset(id) {
105
+ return LEADERSHIP_PRESETS.find(preset => preset.id === id);
106
+ }
107
+ export function selectLeadershipPreset(taskDescription) {
108
+ const text = taskDescription.toLowerCase();
109
+ if (has(text, ['商业', '闭环', '路线', '价值', 'mvp']))
110
+ return getLeadershipPreset('ceo-lead');
111
+ if (has(text, ['架构', '技术选型', '服务边界', '模块', '工程质量']))
112
+ return getLeadershipPreset('cto-lead');
113
+ if (has(text, ['ui', 'ux', '视觉', '审美', '交互', '体验']))
114
+ return getLeadershipPreset('ux-director');
115
+ if (has(text, ['安全', '权限', '脱敏', '供应链', '注入']))
116
+ return getLeadershipPreset('security-lead');
117
+ if (has(text, ['测试', '验收', 'e2e', '回归']))
118
+ return getLeadershipPreset('qa-director');
119
+ if (has(text, ['发版', '发布', 'pr', '文档', '资产']))
120
+ return getLeadershipPreset('delivery-lead');
121
+ return getLeadershipPreset('product-lead');
122
+ }
123
+ export function renderLeadershipPresetsMarkdown() {
124
+ const lines = [
125
+ '# SCALE 领导者角色预设',
126
+ '',
127
+ '这些角色用于让 Agent 在不同场景下主动承担领导者、研究者、实干者和教练职责。角色不是装饰,而是决策权、引导问题、团队组合和边界约束。',
128
+ '',
129
+ ];
130
+ for (const preset of LEADERSHIP_PRESETS) {
131
+ lines.push(`## ${preset.name} - ${preset.title}`);
132
+ lines.push('');
133
+ lines.push(`- ID: \`${preset.id}\``);
134
+ lines.push(`- 适用场景: ${preset.whenToUse.join(', ')}`);
135
+ lines.push(`- 默认团队: ${preset.defaultTeam.join(', ')}`);
136
+ lines.push(`- 决策权: ${preset.decisionRights.join(', ')}`);
137
+ lines.push('');
138
+ lines.push('### 引导问题');
139
+ for (const question of preset.coachingQuestions)
140
+ lines.push(`- ${question}`);
141
+ lines.push('');
142
+ lines.push('### 边界');
143
+ for (const boundary of preset.boundaries)
144
+ lines.push(`- ${boundary}`);
145
+ lines.push('');
146
+ }
147
+ return lines.join('\n');
148
+ }
149
+ function has(text, keywords) {
150
+ return keywords.some(keyword => text.includes(keyword.toLowerCase()));
151
+ }
152
+ //# sourceMappingURL=LeadershipPresets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LeadershipPresets.js","sourceRoot":"","sources":["../../src/agents/LeadershipPresets.ts"],"names":[],"mappings":"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"}