@hongmaple0820/scale-engine 0.19.0 → 0.21.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 (52) hide show
  1. package/README.en.md +17 -3
  2. package/README.md +143 -9
  3. package/dist/api/cli.js +1187 -30
  4. package/dist/api/cli.js.map +1 -1
  5. package/dist/codegraph/CodeIntelligence.d.ts +135 -0
  6. package/dist/codegraph/CodeIntelligence.js +460 -0
  7. package/dist/codegraph/CodeIntelligence.js.map +1 -0
  8. package/dist/context/ContextBudget.d.ts +90 -0
  9. package/dist/context/ContextBudget.js +322 -0
  10. package/dist/context/ContextBudget.js.map +1 -0
  11. package/dist/eval/WorkflowEval.d.ts +161 -0
  12. package/dist/eval/WorkflowEval.js +379 -0
  13. package/dist/eval/WorkflowEval.js.map +1 -0
  14. package/dist/governance/GovernanceRoi.d.ts +25 -0
  15. package/dist/governance/GovernanceRoi.js +70 -0
  16. package/dist/governance/GovernanceRoi.js.map +1 -0
  17. package/dist/governance/ProgressiveGovernance.d.ts +22 -0
  18. package/dist/governance/ProgressiveGovernance.js +159 -0
  19. package/dist/governance/ProgressiveGovernance.js.map +1 -0
  20. package/dist/memory/MemoryBrain.d.ts +135 -0
  21. package/dist/memory/MemoryBrain.js +635 -0
  22. package/dist/memory/MemoryBrain.js.map +1 -0
  23. package/dist/memory/index.d.ts +1 -0
  24. package/dist/memory/index.js +1 -0
  25. package/dist/memory/index.js.map +1 -1
  26. package/dist/output/GovernanceDashboard.d.ts +57 -0
  27. package/dist/output/GovernanceDashboard.js +250 -0
  28. package/dist/output/GovernanceDashboard.js.map +1 -0
  29. package/dist/output/index.d.ts +2 -0
  30. package/dist/output/index.js +1 -0
  31. package/dist/output/index.js.map +1 -1
  32. package/dist/skills/SkillRadar.d.ts +83 -0
  33. package/dist/skills/SkillRadar.js +384 -0
  34. package/dist/skills/SkillRadar.js.map +1 -0
  35. package/dist/workflow/GovernanceTemplates.js +220 -194
  36. package/dist/workflow/GovernanceTemplates.js.map +1 -1
  37. package/dist/workflow/UpgradeManager.d.ts +140 -0
  38. package/dist/workflow/UpgradeManager.js +434 -0
  39. package/dist/workflow/UpgradeManager.js.map +1 -0
  40. package/docs/CODE_INTELLIGENCE.md +138 -0
  41. package/docs/CONTEXT_BUDGET.md +87 -0
  42. package/docs/GOVERNANCE_DASHBOARD.md +69 -0
  43. package/docs/MEMORY_BRAIN.md +104 -0
  44. package/docs/README.md +17 -8
  45. package/docs/SKILL_RADAR.md +115 -0
  46. package/docs/WORKFLOW_EVAL.md +151 -0
  47. package/docs/start/README.md +5 -1
  48. package/examples/demo-projects/agent-governance-demo/CONTEXT.md +14 -0
  49. package/examples/demo-projects/agent-governance-demo/README.md +32 -21
  50. package/examples/demo-projects/agent-governance-demo/docs/CONTEXT-MAP.md +14 -0
  51. package/examples/demo-projects/agent-governance-demo/package.json +6 -1
  52. package/package.json +7 -1
@@ -0,0 +1,384 @@
1
+ import { existsSync, readdirSync } from 'node:fs';
2
+ import { extname, join, resolve } from 'node:path';
3
+ import { evaluateSkillInstallSafety, listSkillRepositoryEntries } from './SkillRepository.js';
4
+ import { inspectToolCapabilities } from '../tools/ToolCapabilityRegistry.js';
5
+ import { loadToolPolicy } from '../tools/ToolPolicy.js';
6
+ const DOMAIN_CONFIG = {
7
+ ui: {
8
+ keywords: ['ui', 'ux', 'design', 'frontend', 'page', 'component', 'visual', 'layout', 'prototype', 'accessibility'],
9
+ filePatterns: [/\.(tsx|jsx|vue|svelte|css|scss)$/i, /(^|\/)(pages|app|components|routes)\//i],
10
+ categories: ['ui'],
11
+ evidence: ['design-rationale', 'screenshot', 'visual-review'],
12
+ fallback: 'Use a static UI checklist, code review, and manual screenshot capture.',
13
+ },
14
+ browserAutomation: {
15
+ keywords: ['browser', 'e2e', 'playwright', 'chrome', 'devtools', 'web access', 'web', 'automation', 'integration'],
16
+ filePatterns: [/\.(spec|test)\.(ts|tsx|js|jsx)$/i, /playwright/i],
17
+ categories: ['browser', 'testing'],
18
+ evidence: ['screenshot', 'console-summary', 'network-summary', 'scenario-result'],
19
+ fallback: 'Run manual smoke checks and capture route, console, and network evidence.',
20
+ },
21
+ desktopAutomation: {
22
+ keywords: ['desktop', 'gui', 'wps', 'wechat', 'computer', 'cua', 'client-app'],
23
+ filePatterns: [],
24
+ categories: ['desktop'],
25
+ evidence: ['operator-boundary', 'desktop-screenshot', 'affected-app'],
26
+ fallback: 'Use a manual operator checklist with screenshots and side-effect boundaries.',
27
+ },
28
+ externalCli: {
29
+ keywords: ['codex', 'gemini', 'opencode', 'claude code', 'external cli', 'agent cli', 'command line'],
30
+ filePatterns: [],
31
+ categories: ['agent-cli'],
32
+ evidence: ['cli-version-check', 'command', 'exit-code', 'output-summary'],
33
+ fallback: 'Use local review or built-in verification commands instead of cross-agent CLI.',
34
+ },
35
+ review: {
36
+ keywords: ['review', 'pr', 'merge', 'ship', 'release', 'quality', 'code review'],
37
+ filePatterns: [],
38
+ categories: ['review'],
39
+ evidence: ['finding-list', 'severity', 'accepted-risk-or-fix'],
40
+ fallback: 'Use built-in review and runtime evidence gates.',
41
+ },
42
+ docs: {
43
+ keywords: ['docs', 'documentation', 'readme', 'adr', 'governance asset'],
44
+ filePatterns: [/\.md$/i, /(^|\/)docs\//i],
45
+ categories: ['docs'],
46
+ evidence: ['changed-docs', 'source-of-truth-map'],
47
+ fallback: 'Update canonical Markdown directly and run doc drift checks.',
48
+ },
49
+ discovery: {
50
+ keywords: ['skill', 'mcp', 'tool', 'capability', 'discover', 'search'],
51
+ filePatterns: [],
52
+ categories: ['discovery'],
53
+ evidence: ['candidate-list', 'safety-review'],
54
+ fallback: 'Search docs manually and run skill safety review before install.',
55
+ },
56
+ };
57
+ export function evaluateSkillRadar(options) {
58
+ const projectDir = resolve(options.projectDir ?? process.cwd());
59
+ const scaleDir = options.scaleDir ?? '.scale';
60
+ const level = String(options.level ?? 'M').toUpperCase();
61
+ const files = normalizeFiles(options.files);
62
+ const detectedDomains = detectDomains({
63
+ text: `${options.task} ${options.phase ?? ''}`,
64
+ files,
65
+ });
66
+ const activeDomains = detectedDomains.length > 0
67
+ ? detectedDomains
68
+ : [{ domain: 'discovery', score: 1, reasons: ['fallback:no-domain-match'] }];
69
+ const policy = loadToolPolicy(projectDir, scaleDir);
70
+ const toolReport = inspectToolCapabilities({ projectDir });
71
+ const recommendations = listSkillRepositoryEntries()
72
+ .filter(entry => entryMatchesDomains(entry, activeDomains))
73
+ .map(entry => buildRecommendation(entry, {
74
+ projectDir,
75
+ domains: activeDomains,
76
+ policy,
77
+ toolReport,
78
+ files,
79
+ }))
80
+ .sort((a, b) => b.confidence - a.confidence || safetyRank(a.safetyLevel) - safetyRank(b.safetyLevel) || a.id.localeCompare(b.id));
81
+ const requiredEvidence = unique(recommendations.flatMap(item => item.requiredEvidence));
82
+ const fallbacks = unique(recommendations
83
+ .filter(item => item.action === 'suggest-fallback' || item.action === 'blocked')
84
+ .map(item => item.fallback));
85
+ return {
86
+ ok: recommendations.every(item => item.safetyLevel !== 'blocked'),
87
+ projectDir,
88
+ generatedAt: new Date().toISOString(),
89
+ task: options.task,
90
+ phase: options.phase,
91
+ level,
92
+ detectedDomains: activeDomains,
93
+ recommendations,
94
+ requiredEvidence,
95
+ fallbacks,
96
+ toolSummary: toolReport.summary,
97
+ policyMode: policy.mode,
98
+ warnings: [
99
+ ...policy.warnings,
100
+ ...recommendations
101
+ .filter(item => item.confidence < 0.4)
102
+ .map(item => `${item.id} confidence is below auto-run threshold; use fallback.`),
103
+ ],
104
+ };
105
+ }
106
+ export function inspectSkillSupplyChain(options = {}) {
107
+ const projectDir = resolve(options.projectDir ?? process.cwd());
108
+ const entries = listSkillRepositoryEntries().map(entry => {
109
+ const safety = evaluateSkillInstallSafety({
110
+ sourceUrl: entry.sourceUrl,
111
+ installCommand: entry.installCommand,
112
+ });
113
+ return {
114
+ id: entry.id,
115
+ sourceUrl: entry.sourceUrl,
116
+ installCommand: entry.installCommand,
117
+ trust: entry.trust,
118
+ safetyLevel: safety.blocked ? 'blocked' : entry.trust === 'official' ? 'trusted' : 'review-required',
119
+ risk: safety.risk,
120
+ blocked: safety.blocked,
121
+ findings: safety.findings,
122
+ requiredChecks: unique([...entry.safety.requiredChecks, ...safety.requiredChecks]),
123
+ };
124
+ });
125
+ return {
126
+ ok: entries.every(entry => !entry.blocked),
127
+ projectDir,
128
+ generatedAt: new Date().toISOString(),
129
+ evaluated: entries.length,
130
+ blocked: entries.filter(entry => entry.blocked).length,
131
+ warnings: entries.reduce((count, entry) => count + entry.findings.filter(finding => finding.severity === 'warn').length, 0),
132
+ entries,
133
+ };
134
+ }
135
+ function buildRecommendation(entry, input) {
136
+ const safety = evaluateSkillInstallSafety({ sourceUrl: entry.sourceUrl, installCommand: entry.installCommand });
137
+ const tool = findToolForEntry(entry, input.toolReport);
138
+ const policyId = policyIdForEntry(entry, tool);
139
+ const policyConfig = input.policy.tools[policyId];
140
+ const policyEnabled = policyConfig?.enabled ?? true;
141
+ const installed = tool?.installed ?? skillInstalledInProject(entry.id, input.projectDir);
142
+ const domainHits = input.domains.filter(domain => DOMAIN_CONFIG[domain.domain]?.categories.includes(entry.category));
143
+ const matchedSignals = unique([
144
+ ...domainHits.flatMap(domain => domain.reasons),
145
+ `category:${entry.category}`,
146
+ `policy:${policyId}`,
147
+ ]);
148
+ const safetyLevel = resolveSafetyLevel(entry, {
149
+ blocked: safety.blocked || !policyEnabled,
150
+ policyConfig,
151
+ });
152
+ const confidence = confidenceScore(entry, {
153
+ installed,
154
+ policyEnabled,
155
+ safetyLevel,
156
+ domainScore: domainHits.reduce((sum, domain) => sum + domain.score, 0),
157
+ projectHasPackage: existsSync(join(input.projectDir, 'package.json')),
158
+ projectHasFrontendFiles: input.files.some(file => /\.(tsx|jsx|vue|svelte|css|scss)$/i.test(file)),
159
+ tool,
160
+ });
161
+ return {
162
+ id: entry.id,
163
+ name: entry.name,
164
+ category: entry.category,
165
+ capability: capabilityFor(entry),
166
+ confidence,
167
+ safetyLevel,
168
+ action: resolveAction(safetyLevel, confidence),
169
+ installed,
170
+ policyEnabled,
171
+ reason: reasonFor(entry, { domainHits, installed, policyEnabled }),
172
+ risk: riskFor(entry, safetyLevel, policyEnabled),
173
+ requiredEvidence: unique([
174
+ ...entry.orchestration.requiredEvidence,
175
+ ...domainHits.flatMap(domain => DOMAIN_CONFIG[domain.domain]?.evidence ?? []),
176
+ ...(policyConfig?.evidenceRequired ? ['tool-evidence-record'] : []),
177
+ ]),
178
+ fallback: fallbackFor(entry, domainHits),
179
+ installCommand: entry.installCommand,
180
+ sourceUrl: entry.sourceUrl,
181
+ matchedSignals,
182
+ safetyFindings: safety.findings,
183
+ };
184
+ }
185
+ function detectDomains(input) {
186
+ const text = input.text.toLowerCase();
187
+ return Object.entries(DOMAIN_CONFIG)
188
+ .map(([domain, config]) => {
189
+ let score = 0;
190
+ const reasons = [];
191
+ for (const keyword of config.keywords) {
192
+ if (text.includes(keyword.toLowerCase())) {
193
+ score += 3;
194
+ reasons.push(`keyword:${keyword}`);
195
+ }
196
+ }
197
+ for (const file of input.files) {
198
+ const matched = config.filePatterns.find(pattern => pattern.test(file));
199
+ if (matched) {
200
+ score += 4;
201
+ reasons.push(`file:${file}`);
202
+ }
203
+ }
204
+ return { domain, score, reasons: unique(reasons) };
205
+ })
206
+ .filter(domain => domain.score > 0)
207
+ .sort((a, b) => b.score - a.score || a.domain.localeCompare(b.domain));
208
+ }
209
+ function entryMatchesDomains(entry, domains) {
210
+ return domains.some(domain => DOMAIN_CONFIG[domain.domain]?.categories.includes(entry.category));
211
+ }
212
+ function findToolForEntry(entry, report) {
213
+ const ids = toolIdsForEntry(entry);
214
+ return report.tools.find(item => ids.includes(item.id) || ids.includes(item.skillId ?? ''));
215
+ }
216
+ function toolIdsForEntry(entry) {
217
+ if (entry.id === 'cua')
218
+ return ['cua', 'desktop-cua'];
219
+ return [entry.id];
220
+ }
221
+ function policyIdForEntry(entry, tool) {
222
+ if (tool)
223
+ return tool.id;
224
+ if (entry.id === 'cua')
225
+ return 'desktop-cua';
226
+ return entry.id;
227
+ }
228
+ function resolveSafetyLevel(entry, input) {
229
+ if (input.blocked)
230
+ return 'blocked';
231
+ if (entry.category === 'browser' || entry.category === 'desktop' || entry.category === 'agent-cli')
232
+ return 'restricted';
233
+ if (input.policyConfig?.destructiveActions === 'confirm')
234
+ return 'restricted';
235
+ if (entry.trust === 'official')
236
+ return 'trusted';
237
+ return 'review-required';
238
+ }
239
+ function confidenceScore(entry, input) {
240
+ if (!input.policyEnabled || input.safetyLevel === 'blocked')
241
+ return 0.2;
242
+ let score = 0.28;
243
+ score += Math.min(0.22, input.domainScore * 0.025);
244
+ if (entry.trust === 'official')
245
+ score += 0.12;
246
+ if (entry.trust === 'ecosystem')
247
+ score += 0.06;
248
+ if (input.installed)
249
+ score += 0.22;
250
+ if (input.tool?.installed)
251
+ score += 0.08;
252
+ if (input.projectHasPackage && (entry.category === 'ui' || entry.category === 'browser' || entry.category === 'testing'))
253
+ score += 0.08;
254
+ if (input.projectHasFrontendFiles && entry.category === 'ui')
255
+ score += 0.08;
256
+ if (input.safetyLevel === 'review-required')
257
+ score -= 0.08;
258
+ if (input.safetyLevel === 'restricted')
259
+ score -= 0.05;
260
+ return roundConfidence(Math.max(0.05, Math.min(0.95, score)));
261
+ }
262
+ function resolveAction(safetyLevel, confidence) {
263
+ if (safetyLevel === 'blocked')
264
+ return 'blocked';
265
+ if (confidence < 0.4)
266
+ return 'suggest-fallback';
267
+ if (confidence <= 0.7)
268
+ return 'recommend-with-evidence';
269
+ return 'may-run-with-policy';
270
+ }
271
+ function reasonFor(entry, input) {
272
+ const domains = input.domainHits.map(hit => hit.domain).join(', ') || entry.category;
273
+ const install = input.installed ? 'installed' : 'not installed';
274
+ const policy = input.policyEnabled ? 'policy enabled' : 'policy disabled';
275
+ return `${entry.name} matches ${domains}; ${install}; ${policy}.`;
276
+ }
277
+ function riskFor(entry, safetyLevel, policyEnabled) {
278
+ if (!policyEnabled)
279
+ return 'Disabled by tool policy; do not run until explicitly enabled.';
280
+ if (safetyLevel === 'blocked')
281
+ return 'Install or execution safety blocked this capability.';
282
+ if (entry.category === 'desktop')
283
+ return 'Desktop automation can affect local applications and must stay inside an operator boundary.';
284
+ if (entry.category === 'browser')
285
+ return 'Browser automation may touch authenticated state and must capture console/network evidence.';
286
+ if (entry.category === 'agent-cli')
287
+ return 'External agent CLI can modify files or consume credentials; use dry-run or scoped commands.';
288
+ if (safetyLevel === 'review-required')
289
+ return 'Third-party skill requires supply-chain review before installation or promotion.';
290
+ return 'Low operational risk, but completion still requires evidence.';
291
+ }
292
+ function fallbackFor(entry, domainHits) {
293
+ const domainFallback = domainHits.map(domain => DOMAIN_CONFIG[domain.domain]?.fallback).find(Boolean);
294
+ if (domainFallback)
295
+ return domainFallback;
296
+ if (entry.category === 'review')
297
+ return 'Use built-in review, lint, test, and runtime evidence commands.';
298
+ if (entry.category === 'docs')
299
+ return 'Update canonical docs manually and record changed source-of-truth files.';
300
+ return 'Use manual verification evidence and document why the skill was skipped.';
301
+ }
302
+ function capabilityFor(entry) {
303
+ const map = {
304
+ ui: 'ui-ux-design',
305
+ browser: 'browser-automation',
306
+ desktop: 'desktop-automation',
307
+ testing: 'test-automation',
308
+ review: 'quality-review',
309
+ docs: 'documentation',
310
+ 'agent-cli': 'external-agent-cli',
311
+ 'role-library': 'role-orchestration',
312
+ discovery: 'skill-discovery',
313
+ };
314
+ return map[entry.category];
315
+ }
316
+ function skillInstalledInProject(skillId, projectDir) {
317
+ const candidates = [
318
+ join(projectDir, '.agents', 'skills', skillId, 'SKILL.md'),
319
+ join(projectDir, '.codex', 'skills', skillId, 'SKILL.md'),
320
+ join(projectDir, '.claude', 'skills', skillId, 'SKILL.md'),
321
+ ];
322
+ if (candidates.some(path => existsSync(path)))
323
+ return true;
324
+ return localSkillIndex(projectDir).some(id => id === skillId);
325
+ }
326
+ function localSkillIndex(projectDir) {
327
+ const roots = [join(projectDir, '.agents', 'skills'), join(projectDir, '.codex', 'skills'), join(projectDir, '.claude', 'skills')];
328
+ return roots.flatMap(root => {
329
+ try {
330
+ return readdirSync(root).filter(name => existsSync(join(root, name, 'SKILL.md')));
331
+ }
332
+ catch {
333
+ return [];
334
+ }
335
+ });
336
+ }
337
+ function normalizeFiles(files) {
338
+ return (files ?? [])
339
+ .map(file => file.replace(/\\/g, '/').trim())
340
+ .filter(Boolean)
341
+ .filter(file => extname(file) || file.includes('/'));
342
+ }
343
+ function safetyRank(level) {
344
+ const rank = {
345
+ trusted: 0,
346
+ 'review-required': 1,
347
+ restricted: 2,
348
+ blocked: 3,
349
+ };
350
+ return rank[level];
351
+ }
352
+ function roundConfidence(value) {
353
+ return Math.round(value * 100) / 100;
354
+ }
355
+ function unique(items) {
356
+ return [...new Set(items)];
357
+ }
358
+ export function renderSkillRadarMarkdown(report) {
359
+ const lines = [
360
+ '# Skill Radar',
361
+ '',
362
+ `Task: ${report.task}`,
363
+ `Level: ${report.level}`,
364
+ `Generated: ${report.generatedAt}`,
365
+ '',
366
+ '## Detected Domains',
367
+ '',
368
+ '| Domain | Score | Reasons |',
369
+ '| --- | ---: | --- |',
370
+ ...report.detectedDomains.map(domain => `| ${domain.domain} | ${domain.score} | ${domain.reasons.join(', ')} |`),
371
+ '',
372
+ '## Recommendations',
373
+ '',
374
+ '| Skill | Capability | Confidence | Safety | Action | Evidence |',
375
+ '| --- | --- | ---: | --- | --- | --- |',
376
+ ...report.recommendations.map(item => `| ${item.id} | ${item.capability} | ${item.confidence.toFixed(2)} | ${item.safetyLevel} | ${item.action} | ${item.requiredEvidence.join(', ')} |`),
377
+ '',
378
+ '## Fallbacks',
379
+ '',
380
+ ...(report.fallbacks.length ? report.fallbacks.map(item => `- ${item}`) : ['- none']),
381
+ ];
382
+ return lines.join('\n');
383
+ }
384
+ //# sourceMappingURL=SkillRadar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SkillRadar.js","sourceRoot":"","sources":["../../src/skills/SkillRadar.ts"],"names":[],"mappings":"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"}