@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.
- package/README.en.md +17 -3
- package/README.md +143 -9
- package/dist/api/cli.js +1187 -30
- package/dist/api/cli.js.map +1 -1
- package/dist/codegraph/CodeIntelligence.d.ts +135 -0
- package/dist/codegraph/CodeIntelligence.js +460 -0
- package/dist/codegraph/CodeIntelligence.js.map +1 -0
- package/dist/context/ContextBudget.d.ts +90 -0
- package/dist/context/ContextBudget.js +322 -0
- package/dist/context/ContextBudget.js.map +1 -0
- package/dist/eval/WorkflowEval.d.ts +161 -0
- package/dist/eval/WorkflowEval.js +379 -0
- package/dist/eval/WorkflowEval.js.map +1 -0
- package/dist/governance/GovernanceRoi.d.ts +25 -0
- package/dist/governance/GovernanceRoi.js +70 -0
- package/dist/governance/GovernanceRoi.js.map +1 -0
- package/dist/governance/ProgressiveGovernance.d.ts +22 -0
- package/dist/governance/ProgressiveGovernance.js +159 -0
- package/dist/governance/ProgressiveGovernance.js.map +1 -0
- package/dist/memory/MemoryBrain.d.ts +135 -0
- package/dist/memory/MemoryBrain.js +635 -0
- package/dist/memory/MemoryBrain.js.map +1 -0
- package/dist/memory/index.d.ts +1 -0
- package/dist/memory/index.js +1 -0
- package/dist/memory/index.js.map +1 -1
- package/dist/output/GovernanceDashboard.d.ts +57 -0
- package/dist/output/GovernanceDashboard.js +250 -0
- package/dist/output/GovernanceDashboard.js.map +1 -0
- package/dist/output/index.d.ts +2 -0
- package/dist/output/index.js +1 -0
- package/dist/output/index.js.map +1 -1
- package/dist/skills/SkillRadar.d.ts +83 -0
- package/dist/skills/SkillRadar.js +384 -0
- package/dist/skills/SkillRadar.js.map +1 -0
- package/dist/workflow/GovernanceTemplates.js +220 -194
- package/dist/workflow/GovernanceTemplates.js.map +1 -1
- package/dist/workflow/UpgradeManager.d.ts +140 -0
- package/dist/workflow/UpgradeManager.js +434 -0
- package/dist/workflow/UpgradeManager.js.map +1 -0
- package/docs/CODE_INTELLIGENCE.md +138 -0
- package/docs/CONTEXT_BUDGET.md +87 -0
- package/docs/GOVERNANCE_DASHBOARD.md +69 -0
- package/docs/MEMORY_BRAIN.md +104 -0
- package/docs/README.md +17 -8
- package/docs/SKILL_RADAR.md +115 -0
- package/docs/WORKFLOW_EVAL.md +151 -0
- package/docs/start/README.md +5 -1
- package/examples/demo-projects/agent-governance-demo/CONTEXT.md +14 -0
- package/examples/demo-projects/agent-governance-demo/README.md +32 -21
- package/examples/demo-projects/agent-governance-demo/docs/CONTEXT-MAP.md +14 -0
- package/examples/demo-projects/agent-governance-demo/package.json +6 -1
- 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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"}
|