@mengzf/skillflow-mcp 1.0.0 → 1.0.1
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.md +48 -7
- package/dist/adapters/claude-code.adapter.d.ts +10 -0
- package/dist/adapters/claude-code.adapter.d.ts.map +1 -0
- package/dist/adapters/claude-code.adapter.js +166 -0
- package/dist/adapters/claude-code.adapter.js.map +1 -0
- package/dist/adapters/codex.adapter.d.ts +10 -0
- package/dist/adapters/codex.adapter.d.ts.map +1 -0
- package/dist/adapters/codex.adapter.js +109 -0
- package/dist/adapters/codex.adapter.js.map +1 -0
- package/dist/adapters/dsh.adapter.d.ts +7 -0
- package/dist/adapters/dsh.adapter.d.ts.map +1 -0
- package/dist/adapters/dsh.adapter.js +60 -0
- package/dist/adapters/dsh.adapter.js.map +1 -0
- package/dist/adapters/qoder.adapter.d.ts +10 -0
- package/dist/adapters/qoder.adapter.d.ts.map +1 -0
- package/dist/adapters/qoder.adapter.js +119 -0
- package/dist/adapters/qoder.adapter.js.map +1 -0
- package/dist/adapters/trae.adapter.d.ts +8 -0
- package/dist/adapters/trae.adapter.d.ts.map +1 -0
- package/dist/adapters/trae.adapter.js +104 -0
- package/dist/adapters/trae.adapter.js.map +1 -0
- package/dist/adapters/types.d.ts +25 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/adapters/types.js +2 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/adapters/universal.sync.d.ts +22 -0
- package/dist/adapters/universal.sync.d.ts.map +1 -0
- package/dist/adapters/universal.sync.js +140 -0
- package/dist/adapters/universal.sync.js.map +1 -0
- package/dist/adapters/workbuddy.sniffer.d.ts.map +1 -1
- package/dist/adapters/workbuddy.sniffer.js +8 -3
- package/dist/adapters/workbuddy.sniffer.js.map +1 -1
- package/dist/db/invocation-filter.d.ts +29 -0
- package/dist/db/invocation-filter.d.ts.map +1 -0
- package/dist/db/invocation-filter.js +78 -0
- package/dist/db/invocation-filter.js.map +1 -0
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +28 -2
- package/dist/db/schema.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +16 -12
- package/dist/server.js.map +1 -1
- package/dist/services/dashboard.service.d.ts +2 -0
- package/dist/services/dashboard.service.d.ts.map +1 -1
- package/dist/services/dashboard.service.js +145 -40
- package/dist/services/dashboard.service.js.map +1 -1
- package/dist/services/filter.service.d.ts +26 -0
- package/dist/services/filter.service.d.ts.map +1 -0
- package/dist/services/filter.service.js +103 -0
- package/dist/services/filter.service.js.map +1 -0
- package/dist/services/telemetry.service.d.ts +9 -1
- package/dist/services/telemetry.service.d.ts.map +1 -1
- package/dist/services/telemetry.service.js +105 -36
- package/dist/services/telemetry.service.js.map +1 -1
- package/dist/types/models.d.ts +13 -1
- package/dist/types/models.d.ts.map +1 -1
- package/dist/types/tools.d.ts +44 -5
- package/dist/types/tools.d.ts.map +1 -1
- package/dist/types/tools.js +47 -1
- package/dist/types/tools.js.map +1 -1
- package/dist/utils/governance.d.ts +25 -0
- package/dist/utils/governance.d.ts.map +1 -0
- package/dist/utils/governance.js +70 -0
- package/dist/utils/governance.js.map +1 -0
- package/dist/utils/pricing.js +1 -1
- package/dist/utils/pricing.js.map +1 -1
- package/dist/web/render.d.ts.map +1 -1
- package/dist/web/render.js +1565 -239
- package/dist/web/render.js.map +1 -1
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +52 -28
- package/dist/web/server.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,6 +2,7 @@ import { BenchmarkService } from './benchmark.service.js';
|
|
|
2
2
|
import { calculateCost } from '../utils/pricing.js';
|
|
3
3
|
import { calculateSavedHours } from '../utils/hours.js';
|
|
4
4
|
import { classifySkillInvestment } from '../utils/quality.js';
|
|
5
|
+
import { calculateSkillHealthScore, extractFollowUpModifier } from '../utils/governance.js';
|
|
5
6
|
export class TelemetryService {
|
|
6
7
|
db;
|
|
7
8
|
benchmarkService;
|
|
@@ -46,12 +47,24 @@ export class TelemetryService {
|
|
|
46
47
|
const roundIndex = input.round_index ?? 1;
|
|
47
48
|
const agentName = input.agent_name || 'unknown';
|
|
48
49
|
const modelName = input.model_name || 'unknown';
|
|
50
|
+
const skillVersion = input.skill_version || '1.0.0';
|
|
51
|
+
const triggerMode = input.trigger_mode || 'explicit';
|
|
49
52
|
const status = input.status || 'success';
|
|
50
53
|
const actualSteps = input.actual_steps ?? 1;
|
|
51
54
|
const actualTokens = input.actual_tokens ?? 0;
|
|
55
|
+
const contextTokens = input.context_tokens ?? 0;
|
|
56
|
+
const outputTokens = input.output_tokens ?? 0;
|
|
57
|
+
const toolChainDepth = input.tool_chain_depth ?? 0;
|
|
58
|
+
const toolFailures = input.tool_failures ?? 0;
|
|
52
59
|
const executionTimeMs = input.execution_time_ms ?? 0;
|
|
53
60
|
const metadataStr = input.metadata ? JSON.stringify(input.metadata) : '{}';
|
|
54
61
|
const hasCorrection = input.has_correction ? 1 : 0;
|
|
62
|
+
let followUpModifier = input.follow_up_modifier || null;
|
|
63
|
+
if (!followUpModifier && input.metadata && typeof input.metadata.user_follow_up === 'string') {
|
|
64
|
+
const match = extractFollowUpModifier(input.metadata.user_follow_up);
|
|
65
|
+
if (match)
|
|
66
|
+
followUpModifier = match.category;
|
|
67
|
+
}
|
|
55
68
|
// 1. Ensure skill exists in manifest (auto-register if new)
|
|
56
69
|
let benchmark = this.benchmarkService.getBenchmark(input.skill_id);
|
|
57
70
|
if (!benchmark) {
|
|
@@ -71,7 +84,7 @@ export class TelemetryService {
|
|
|
71
84
|
savedSteps = Math.max(0, benchmark.baseline_steps - actualSteps);
|
|
72
85
|
}
|
|
73
86
|
else if (status === 'partial') {
|
|
74
|
-
savedSteps = Math.max(0, Math.floor(0.5 * benchmark.
|
|
87
|
+
savedSteps = Math.max(0, Math.floor(0.5 * (benchmark.baseline_steps - actualSteps)));
|
|
75
88
|
}
|
|
76
89
|
else {
|
|
77
90
|
savedSteps = 0;
|
|
@@ -86,7 +99,7 @@ export class TelemetryService {
|
|
|
86
99
|
savedTokens = Math.max(0, benchmark.baseline_tokens - actualTokens);
|
|
87
100
|
}
|
|
88
101
|
else if (status === 'partial') {
|
|
89
|
-
savedTokens = Math.max(0, Math.floor(0.5 * benchmark.
|
|
102
|
+
savedTokens = Math.max(0, Math.floor(0.5 * (benchmark.baseline_tokens - actualTokens)));
|
|
90
103
|
}
|
|
91
104
|
else {
|
|
92
105
|
savedTokens = 0;
|
|
@@ -102,48 +115,96 @@ export class TelemetryService {
|
|
|
102
115
|
else {
|
|
103
116
|
const baselineMins = benchmark.baseline_manual_minutes || 15;
|
|
104
117
|
if (status === 'success') {
|
|
105
|
-
|
|
118
|
+
if (executionTimeMs > 0) {
|
|
119
|
+
savedHours = calculateSavedHours(baselineMins, executionTimeMs);
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
// Conservative estimate when execution duration is unknown
|
|
123
|
+
savedHours = Math.round(0.5 * (baselineMins / 60) * 100) / 100;
|
|
124
|
+
}
|
|
106
125
|
}
|
|
107
126
|
else if (status === 'partial') {
|
|
108
|
-
|
|
127
|
+
const fullHours = executionTimeMs > 0
|
|
128
|
+
? calculateSavedHours(baselineMins, executionTimeMs)
|
|
129
|
+
: 0.5 * (baselineMins / 60);
|
|
130
|
+
savedHours = Math.round(0.5 * fullHours * 100) / 100;
|
|
109
131
|
}
|
|
110
132
|
else {
|
|
111
133
|
savedHours = 0.0;
|
|
112
134
|
}
|
|
113
135
|
}
|
|
114
136
|
const cost = calculateCost(savedTokens, modelName);
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
137
|
+
this.db.exec('BEGIN IMMEDIATE');
|
|
138
|
+
let invocationId;
|
|
139
|
+
let updatedSession;
|
|
140
|
+
let healthScore = 100;
|
|
141
|
+
try {
|
|
142
|
+
// 4. Ensure session exists
|
|
143
|
+
this.ensureSession(input.session_id, agentName, roundIndex);
|
|
144
|
+
// 5. Insert invocation record
|
|
145
|
+
const insertRes = this.db
|
|
146
|
+
.prepare(`
|
|
147
|
+
INSERT INTO invocations (
|
|
148
|
+
session_id, agent_name, model_name, skill_id, skill_version, round_index, trigger_mode, status,
|
|
149
|
+
actual_tokens, context_tokens, output_tokens, actual_steps, saved_steps, saved_tokens, net_tokens,
|
|
150
|
+
saved_hours, cost_saved_usd, cost_saved_cny, tool_chain_depth, tool_failures,
|
|
151
|
+
has_correction, follow_up_modifier, quality_profile,
|
|
152
|
+
execution_time_ms, metadata, timestamp
|
|
153
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, datetime('now'))
|
|
154
|
+
`)
|
|
155
|
+
.run(input.session_id, agentName, modelName, input.skill_id, skillVersion, roundIndex, triggerMode, status, actualTokens, contextTokens, outputTokens, actualSteps, savedSteps, savedTokens, netTokens, savedHours, cost.usd, cost.cny, toolChainDepth, toolFailures, hasCorrection, followUpModifier, investmentProfile.type, executionTimeMs, metadataStr);
|
|
156
|
+
invocationId = Number(insertRes.lastInsertRowid);
|
|
157
|
+
// 6. Update session cumulative stats
|
|
158
|
+
this.db
|
|
159
|
+
.prepare(`
|
|
160
|
+
UPDATE sessions SET
|
|
161
|
+
total_invocations = total_invocations + 1,
|
|
162
|
+
total_saved_steps = total_saved_steps + ?,
|
|
163
|
+
total_saved_tokens = total_saved_tokens + ?,
|
|
164
|
+
total_saved_hours = total_saved_hours + ?,
|
|
165
|
+
total_cost_saved_usd = total_cost_saved_usd + ?,
|
|
166
|
+
total_cost_saved_cny = total_cost_saved_cny + ?,
|
|
167
|
+
total_corrections = total_corrections + ?,
|
|
168
|
+
last_active_at = datetime('now')
|
|
169
|
+
WHERE session_id = ?
|
|
170
|
+
`)
|
|
171
|
+
.run(savedSteps, savedTokens, savedHours, cost.usd, cost.cny, hasCorrection, input.session_id);
|
|
172
|
+
// 7. Update skill manifest health score & last_invoked_at
|
|
173
|
+
const skillStats = this.db
|
|
174
|
+
.prepare(`
|
|
175
|
+
SELECT
|
|
176
|
+
COUNT(*) as total_invocations,
|
|
177
|
+
SUM(CASE WHEN status = 'success' THEN 1 ELSE 0 END) as success_count,
|
|
178
|
+
SUM(has_correction) as correction_count,
|
|
179
|
+
SUM(tool_failures) as tool_failures
|
|
180
|
+
FROM invocations
|
|
181
|
+
WHERE skill_id = ?
|
|
182
|
+
`)
|
|
183
|
+
.get(input.skill_id);
|
|
184
|
+
const health = calculateSkillHealthScore({
|
|
185
|
+
totalInvocations: skillStats?.total_invocations ?? 1,
|
|
186
|
+
successCount: skillStats?.success_count ?? 1,
|
|
187
|
+
correctionCount: skillStats?.correction_count ?? 0,
|
|
188
|
+
toolFailures: skillStats?.tool_failures ?? 0,
|
|
189
|
+
});
|
|
190
|
+
healthScore = health.score;
|
|
191
|
+
this.db
|
|
192
|
+
.prepare(`
|
|
193
|
+
UPDATE skills_manifest SET
|
|
194
|
+
last_invoked_at = datetime('now'),
|
|
195
|
+
health_score = ?
|
|
196
|
+
WHERE skill_id = ?
|
|
197
|
+
`)
|
|
198
|
+
.run(healthScore, input.skill_id);
|
|
199
|
+
updatedSession = this.db
|
|
200
|
+
.prepare('SELECT * FROM sessions WHERE session_id = ?')
|
|
201
|
+
.get(input.session_id);
|
|
202
|
+
this.db.exec('COMMIT');
|
|
203
|
+
}
|
|
204
|
+
catch (err) {
|
|
205
|
+
this.db.exec('ROLLBACK');
|
|
206
|
+
throw err;
|
|
207
|
+
}
|
|
147
208
|
return {
|
|
148
209
|
invocation_id: invocationId,
|
|
149
210
|
session_id: input.session_id,
|
|
@@ -151,18 +212,26 @@ export class TelemetryService {
|
|
|
151
212
|
model_name: modelName,
|
|
152
213
|
skill_id: input.skill_id,
|
|
153
214
|
skill_name: benchmark.skill_name,
|
|
215
|
+
skill_version: skillVersion,
|
|
154
216
|
round_index: roundIndex,
|
|
217
|
+
trigger_mode: triggerMode,
|
|
155
218
|
status,
|
|
156
219
|
actual_steps: actualSteps,
|
|
157
220
|
saved_steps: savedSteps,
|
|
158
221
|
actual_tokens: actualTokens,
|
|
222
|
+
context_tokens: contextTokens,
|
|
223
|
+
output_tokens: outputTokens,
|
|
159
224
|
saved_tokens: savedTokens,
|
|
160
225
|
net_tokens: netTokens,
|
|
161
226
|
quality_profile: investmentProfile.type,
|
|
162
227
|
has_correction: Boolean(hasCorrection),
|
|
228
|
+
follow_up_modifier: followUpModifier,
|
|
163
229
|
saved_hours: savedHours,
|
|
164
230
|
cost_saved_usd: cost.usd,
|
|
165
231
|
cost_saved_cny: cost.cny,
|
|
232
|
+
tool_chain_depth: toolChainDepth,
|
|
233
|
+
tool_failures: toolFailures,
|
|
234
|
+
health_score: healthScore,
|
|
166
235
|
session: updatedSession,
|
|
167
236
|
};
|
|
168
237
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.service.js","sourceRoot":"","sources":["../../src/services/telemetry.service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"telemetry.service.js","sourceRoot":"","sources":["../../src/services/telemetry.service.ts"],"names":[],"mappings":"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"}
|
package/dist/types/models.d.ts
CHANGED
|
@@ -1,15 +1,20 @@
|
|
|
1
1
|
export type InvocationStatus = 'success' | 'failed' | 'partial' | 'skipped';
|
|
2
|
+
export type TriggerMode = 'explicit' | 'implicit';
|
|
3
|
+
export type QualityProfile = 'efficient' | 'balanced' | 'heavy_investment';
|
|
2
4
|
export interface SkillManifestRow {
|
|
3
5
|
skill_id: string;
|
|
4
6
|
skill_name: string;
|
|
5
7
|
category: string;
|
|
8
|
+
version: string;
|
|
6
9
|
description: string | null;
|
|
7
10
|
baseline_steps: number;
|
|
8
11
|
baseline_tokens: number;
|
|
9
12
|
baseline_manual_minutes: number;
|
|
10
13
|
default_saved_steps: number;
|
|
11
14
|
default_saved_tokens: number;
|
|
15
|
+
health_score: number;
|
|
12
16
|
tags: string;
|
|
17
|
+
last_invoked_at: string | null;
|
|
13
18
|
created_at: string;
|
|
14
19
|
updated_at: string;
|
|
15
20
|
}
|
|
@@ -35,9 +40,13 @@ export interface InvocationRow {
|
|
|
35
40
|
agent_name: string;
|
|
36
41
|
model_name: string;
|
|
37
42
|
skill_id: string;
|
|
43
|
+
skill_version: string;
|
|
38
44
|
round_index: number;
|
|
39
45
|
status: InvocationStatus;
|
|
46
|
+
trigger_mode: TriggerMode;
|
|
40
47
|
actual_tokens: number;
|
|
48
|
+
context_tokens: number;
|
|
49
|
+
output_tokens: number;
|
|
41
50
|
actual_steps: number;
|
|
42
51
|
saved_steps: number;
|
|
43
52
|
saved_tokens: number;
|
|
@@ -45,8 +54,11 @@ export interface InvocationRow {
|
|
|
45
54
|
saved_hours: number;
|
|
46
55
|
cost_saved_usd: number;
|
|
47
56
|
cost_saved_cny: number;
|
|
57
|
+
tool_chain_depth: number;
|
|
58
|
+
tool_failures: number;
|
|
48
59
|
has_correction: number;
|
|
49
|
-
|
|
60
|
+
follow_up_modifier: string | null;
|
|
61
|
+
quality_profile: QualityProfile;
|
|
50
62
|
execution_time_ms: number;
|
|
51
63
|
metadata: string;
|
|
52
64
|
timestamp: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/types/models.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/types/models.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAC5E,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,UAAU,CAAC;AAClD,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,UAAU,GAAG,kBAAkB,CAAC;AAE3E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,uBAAuB,EAAE,MAAM,CAAC;IAChC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,gBAAgB,CAAC;IACzB,YAAY,EAAE,WAAW,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,eAAe,EAAE,cAAc,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAoB,SAAQ,aAAa;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,uBAAuB,EAAE,MAAM,CAAC;CACjC"}
|
package/dist/types/tools.d.ts
CHANGED
|
@@ -1,57 +1,88 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { InvocationStatus } from './models.js';
|
|
2
|
+
import { InvocationStatus, TriggerMode } from './models.js';
|
|
3
3
|
export declare const RecordSkillHitSchema: z.ZodObject<{
|
|
4
4
|
session_id: z.ZodString;
|
|
5
5
|
skill_id: z.ZodString;
|
|
6
|
+
skill_version: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
6
7
|
agent_name: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
7
8
|
model_name: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
8
9
|
round_index: z.ZodOptional<z.ZodNumber>;
|
|
10
|
+
trigger_mode: z.ZodDefault<z.ZodOptional<z.ZodEnum<["explicit", "implicit"]>>>;
|
|
9
11
|
status: z.ZodDefault<z.ZodOptional<z.ZodEnum<["success", "failed", "partial", "skipped"]>>>;
|
|
10
12
|
actual_tokens: z.ZodOptional<z.ZodNumber>;
|
|
13
|
+
context_tokens: z.ZodOptional<z.ZodNumber>;
|
|
14
|
+
output_tokens: z.ZodOptional<z.ZodNumber>;
|
|
11
15
|
actual_steps: z.ZodOptional<z.ZodNumber>;
|
|
12
16
|
saved_steps: z.ZodOptional<z.ZodNumber>;
|
|
13
17
|
saved_tokens: z.ZodOptional<z.ZodNumber>;
|
|
18
|
+
tool_chain_depth: z.ZodOptional<z.ZodNumber>;
|
|
19
|
+
tool_failures: z.ZodOptional<z.ZodNumber>;
|
|
20
|
+
follow_up_modifier: z.ZodOptional<z.ZodString>;
|
|
21
|
+
has_correction: z.ZodOptional<z.ZodBoolean>;
|
|
14
22
|
execution_time_ms: z.ZodOptional<z.ZodNumber>;
|
|
15
23
|
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
16
24
|
}, "strip", z.ZodTypeAny, {
|
|
17
25
|
session_id: string;
|
|
18
26
|
skill_id: string;
|
|
27
|
+
skill_version: string;
|
|
19
28
|
agent_name: string;
|
|
20
29
|
model_name: string;
|
|
30
|
+
trigger_mode: "explicit" | "implicit";
|
|
21
31
|
status: "success" | "failed" | "partial" | "skipped";
|
|
22
32
|
round_index?: number | undefined;
|
|
23
33
|
actual_tokens?: number | undefined;
|
|
34
|
+
context_tokens?: number | undefined;
|
|
35
|
+
output_tokens?: number | undefined;
|
|
24
36
|
actual_steps?: number | undefined;
|
|
25
37
|
saved_steps?: number | undefined;
|
|
26
38
|
saved_tokens?: number | undefined;
|
|
39
|
+
tool_chain_depth?: number | undefined;
|
|
40
|
+
tool_failures?: number | undefined;
|
|
41
|
+
follow_up_modifier?: string | undefined;
|
|
42
|
+
has_correction?: boolean | undefined;
|
|
27
43
|
execution_time_ms?: number | undefined;
|
|
28
44
|
metadata?: Record<string, any> | undefined;
|
|
29
45
|
}, {
|
|
30
46
|
session_id: string;
|
|
31
47
|
skill_id: string;
|
|
48
|
+
skill_version?: string | undefined;
|
|
32
49
|
agent_name?: string | undefined;
|
|
33
50
|
model_name?: string | undefined;
|
|
34
51
|
round_index?: number | undefined;
|
|
52
|
+
trigger_mode?: "explicit" | "implicit" | undefined;
|
|
35
53
|
status?: "success" | "failed" | "partial" | "skipped" | undefined;
|
|
36
54
|
actual_tokens?: number | undefined;
|
|
55
|
+
context_tokens?: number | undefined;
|
|
56
|
+
output_tokens?: number | undefined;
|
|
37
57
|
actual_steps?: number | undefined;
|
|
38
58
|
saved_steps?: number | undefined;
|
|
39
59
|
saved_tokens?: number | undefined;
|
|
60
|
+
tool_chain_depth?: number | undefined;
|
|
61
|
+
tool_failures?: number | undefined;
|
|
62
|
+
follow_up_modifier?: string | undefined;
|
|
63
|
+
has_correction?: boolean | undefined;
|
|
40
64
|
execution_time_ms?: number | undefined;
|
|
41
65
|
metadata?: Record<string, any> | undefined;
|
|
42
66
|
}>;
|
|
43
67
|
export interface RecordSkillHitInput {
|
|
44
68
|
session_id: string;
|
|
45
69
|
skill_id: string;
|
|
70
|
+
skill_version?: string;
|
|
46
71
|
agent_name?: string;
|
|
47
72
|
model_name?: string;
|
|
48
73
|
round_index?: number;
|
|
74
|
+
trigger_mode?: TriggerMode;
|
|
49
75
|
status?: InvocationStatus;
|
|
50
76
|
actual_tokens?: number;
|
|
77
|
+
context_tokens?: number;
|
|
78
|
+
output_tokens?: number;
|
|
51
79
|
actual_steps?: number;
|
|
52
80
|
saved_steps?: number;
|
|
53
81
|
saved_tokens?: number;
|
|
54
82
|
saved_hours?: number;
|
|
83
|
+
tool_chain_depth?: number;
|
|
84
|
+
tool_failures?: number;
|
|
85
|
+
follow_up_modifier?: string;
|
|
55
86
|
has_correction?: boolean;
|
|
56
87
|
execution_time_ms?: number;
|
|
57
88
|
metadata?: Record<string, any>;
|
|
@@ -75,26 +106,34 @@ export declare const GetSkillDashboardSchema: z.ZodObject<{
|
|
|
75
106
|
session_id: z.ZodOptional<z.ZodString>;
|
|
76
107
|
agent_name: z.ZodOptional<z.ZodString>;
|
|
77
108
|
skill_id: z.ZodOptional<z.ZodString>;
|
|
78
|
-
|
|
109
|
+
model_name: z.ZodOptional<z.ZodString>;
|
|
110
|
+
status: z.ZodOptional<z.ZodEnum<["success", "failed", "partial", "skipped"]>>;
|
|
111
|
+
group_by: z.ZodDefault<z.ZodOptional<z.ZodEnum<["skill", "agent", "category", "date", "governance"]>>>;
|
|
79
112
|
}, "strip", z.ZodTypeAny, {
|
|
80
113
|
time_range: "current_session" | "today" | "7days" | "30days" | "all";
|
|
81
|
-
group_by: "skill" | "agent" | "category" | "date";
|
|
114
|
+
group_by: "skill" | "agent" | "category" | "date" | "governance";
|
|
82
115
|
session_id?: string | undefined;
|
|
83
116
|
skill_id?: string | undefined;
|
|
84
117
|
agent_name?: string | undefined;
|
|
118
|
+
model_name?: string | undefined;
|
|
119
|
+
status?: "success" | "failed" | "partial" | "skipped" | undefined;
|
|
85
120
|
}, {
|
|
86
121
|
session_id?: string | undefined;
|
|
87
122
|
skill_id?: string | undefined;
|
|
88
123
|
agent_name?: string | undefined;
|
|
124
|
+
model_name?: string | undefined;
|
|
125
|
+
status?: "success" | "failed" | "partial" | "skipped" | undefined;
|
|
89
126
|
time_range?: "current_session" | "today" | "7days" | "30days" | "all" | undefined;
|
|
90
|
-
group_by?: "skill" | "agent" | "category" | "date" | undefined;
|
|
127
|
+
group_by?: "skill" | "agent" | "category" | "date" | "governance" | undefined;
|
|
91
128
|
}>;
|
|
92
129
|
export interface GetSkillDashboardInput {
|
|
93
130
|
time_range?: 'current_session' | 'today' | '7days' | '30days' | 'all';
|
|
94
131
|
session_id?: string;
|
|
95
132
|
agent_name?: string;
|
|
96
133
|
skill_id?: string;
|
|
97
|
-
|
|
134
|
+
model_name?: string;
|
|
135
|
+
status?: 'success' | 'failed' | 'partial' | 'skipped';
|
|
136
|
+
group_by?: 'skill' | 'agent' | 'category' | 'date' | 'governance';
|
|
98
137
|
}
|
|
99
138
|
export declare const ManageSkillBenchmarkSchema: z.ZodObject<{
|
|
100
139
|
action: z.ZodEnum<["list", "get", "set", "delete", "reset_defaults"]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/types/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/types/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE5D,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8F/B,CAAC;AAEH,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,eAAO,MAAM,yBAAyB;;;;;;;;;;;;EAgBpC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAEjF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;EA+BlC,CAAC;AAEH,MAAM,WAAW,sBAAsB;IACrC,UAAU,CAAC,EAAE,iBAAiB,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IACtD,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,YAAY,CAAC;CACnE;AAED,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgDrC,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC"}
|
package/dist/types/tools.js
CHANGED
|
@@ -2,6 +2,7 @@ import { z } from 'zod';
|
|
|
2
2
|
export const RecordSkillHitSchema = z.object({
|
|
3
3
|
session_id: z.string().describe('Unique session identifier (e.g. sess-20261111-01)'),
|
|
4
4
|
skill_id: z.string().describe("Unique identifier of the skill (e.g. 'code-review', 'frontend-design')"),
|
|
5
|
+
skill_version: z.string().optional().default('1.0.0').describe('Skill version string'),
|
|
5
6
|
agent_name: z
|
|
6
7
|
.string()
|
|
7
8
|
.optional()
|
|
@@ -18,6 +19,11 @@ export const RecordSkillHitSchema = z.object({
|
|
|
18
19
|
.min(1)
|
|
19
20
|
.optional()
|
|
20
21
|
.describe('Conversation round index (if omitted, increments automatically or defaults to current)'),
|
|
22
|
+
trigger_mode: z
|
|
23
|
+
.enum(['explicit', 'implicit'])
|
|
24
|
+
.optional()
|
|
25
|
+
.default('explicit')
|
|
26
|
+
.describe("Trigger mode: 'explicit' (slash command / direct name call) or 'implicit' (auto router / prompt injection)"),
|
|
21
27
|
status: z
|
|
22
28
|
.enum(['success', 'failed', 'partial', 'skipped'])
|
|
23
29
|
.optional()
|
|
@@ -29,6 +35,18 @@ export const RecordSkillHitSchema = z.object({
|
|
|
29
35
|
.min(0)
|
|
30
36
|
.optional()
|
|
31
37
|
.describe('Actual tokens consumed during skill execution'),
|
|
38
|
+
context_tokens: z
|
|
39
|
+
.number()
|
|
40
|
+
.int()
|
|
41
|
+
.min(0)
|
|
42
|
+
.optional()
|
|
43
|
+
.describe('Tokens dedicated to skill instructions and reference materials'),
|
|
44
|
+
output_tokens: z
|
|
45
|
+
.number()
|
|
46
|
+
.int()
|
|
47
|
+
.min(0)
|
|
48
|
+
.optional()
|
|
49
|
+
.describe('Tokens generated in response output'),
|
|
32
50
|
actual_steps: z
|
|
33
51
|
.number()
|
|
34
52
|
.int()
|
|
@@ -45,6 +63,26 @@ export const RecordSkillHitSchema = z.object({
|
|
|
45
63
|
.int()
|
|
46
64
|
.optional()
|
|
47
65
|
.describe('Explicit tokens saved (if omitted, calculated automatically from skill baseline)'),
|
|
66
|
+
tool_chain_depth: z
|
|
67
|
+
.number()
|
|
68
|
+
.int()
|
|
69
|
+
.min(0)
|
|
70
|
+
.optional()
|
|
71
|
+
.describe('Number of sub-tools orchestrated by this skill'),
|
|
72
|
+
tool_failures: z
|
|
73
|
+
.number()
|
|
74
|
+
.int()
|
|
75
|
+
.min(0)
|
|
76
|
+
.optional()
|
|
77
|
+
.describe('Number of failed tool invocations during orchestration'),
|
|
78
|
+
follow_up_modifier: z
|
|
79
|
+
.string()
|
|
80
|
+
.optional()
|
|
81
|
+
.describe('Detected follow-up request modifier from user (e.g. "补单测", "深色模式")'),
|
|
82
|
+
has_correction: z
|
|
83
|
+
.boolean()
|
|
84
|
+
.optional()
|
|
85
|
+
.describe('Whether user gave correction/retry cues in follow-up'),
|
|
48
86
|
execution_time_ms: z
|
|
49
87
|
.number()
|
|
50
88
|
.int()
|
|
@@ -91,8 +129,16 @@ export const GetSkillDashboardSchema = z.object({
|
|
|
91
129
|
.string()
|
|
92
130
|
.optional()
|
|
93
131
|
.describe('Filter by specific skill identifier'),
|
|
132
|
+
model_name: z
|
|
133
|
+
.string()
|
|
134
|
+
.optional()
|
|
135
|
+
.describe("Filter by the model that executed the skill (e.g. 'claude-sonnet-4.5', 'gpt-5')"),
|
|
136
|
+
status: z
|
|
137
|
+
.enum(['success', 'failed', 'partial', 'skipped'])
|
|
138
|
+
.optional()
|
|
139
|
+
.describe('Filter by execution status'),
|
|
94
140
|
group_by: z
|
|
95
|
-
.enum(['skill', 'agent', 'category', 'date'])
|
|
141
|
+
.enum(['skill', 'agent', 'category', 'date', 'governance'])
|
|
96
142
|
.optional()
|
|
97
143
|
.default('skill')
|
|
98
144
|
.describe('Primary aggregation grouping dimension'),
|
package/dist/types/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/types/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;IACpF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wEAAwE,CAAC;IACvG,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,OAAO,CAAC,SAAS,CAAC;SAClB,QAAQ,CAAC,qFAAqF,CAAC;IAClG,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,OAAO,CAAC,SAAS,CAAC;SAClB,QAAQ,CAAC,8EAA8E,CAAC;IAC3F,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,EAAE;SACV,QAAQ,CAAC,wFAAwF,CAAC;IACrG,MAAM,EAAE,CAAC;SACN,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;SACjD,QAAQ,EAAE;SACV,OAAO,CAAC,SAAS,CAAC;SAClB,QAAQ,CAAC,+BAA+B,CAAC;IAC5C,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,EAAE;SACV,QAAQ,CAAC,+CAA+C,CAAC;IAC5D,YAAY,EAAE,CAAC;SACZ,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,EAAE;SACV,QAAQ,CAAC,iDAAiD,CAAC;IAC9D,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,QAAQ,CAAC,iFAAiF,CAAC;IAC9F,YAAY,EAAE,CAAC;SACZ,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,QAAQ,CAAC,kFAAkF,CAAC;IAC/F,iBAAiB,EAAE,CAAC;SACjB,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,EAAE;SACV,QAAQ,CAAC,oCAAoC,CAAC;IACjD,QAAQ,EAAE,CAAC;SACR,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;SACf,QAAQ,EAAE;SACV,QAAQ,CAAC,iFAAiF,CAAC;CAC/F,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/types/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface HealthScoreResult {
|
|
2
|
+
score: number;
|
|
3
|
+
grade: 'A+' | 'A' | 'B' | 'C' | 'D';
|
|
4
|
+
gradeBadgeClass: string;
|
|
5
|
+
summary: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function calculateSkillHealthScore(stats: {
|
|
8
|
+
totalInvocations: number;
|
|
9
|
+
successCount: number;
|
|
10
|
+
correctionCount: number;
|
|
11
|
+
contextOverheadTokens?: number;
|
|
12
|
+
outputTokens?: number;
|
|
13
|
+
toolFailures?: number;
|
|
14
|
+
}): HealthScoreResult;
|
|
15
|
+
export interface ModifierPattern {
|
|
16
|
+
keyword: RegExp;
|
|
17
|
+
category: string;
|
|
18
|
+
recommendation: string;
|
|
19
|
+
}
|
|
20
|
+
export declare const MODIFIER_PATTERNS: ModifierPattern[];
|
|
21
|
+
export declare function extractFollowUpModifier(text?: string): {
|
|
22
|
+
category: string;
|
|
23
|
+
recommendation: string;
|
|
24
|
+
} | null;
|
|
25
|
+
//# sourceMappingURL=governance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"governance.d.ts","sourceRoot":"","sources":["../../src/utils/governance.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACpC,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAC/C,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,iBAAiB,CAwDpB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,iBAAiB,EAAE,eAAe,EAO9C,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQ1G"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
export function calculateSkillHealthScore(stats) {
|
|
2
|
+
if (stats.totalInvocations === 0) {
|
|
3
|
+
return {
|
|
4
|
+
score: 100,
|
|
5
|
+
grade: 'A',
|
|
6
|
+
gradeBadgeClass: 'pill-blue',
|
|
7
|
+
summary: '待积累调用数据',
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
const successRate = stats.successCount / stats.totalInvocations;
|
|
11
|
+
const correctionRate = stats.correctionCount / stats.totalInvocations;
|
|
12
|
+
const toolFailureRate = stats.toolFailures ? stats.toolFailures / stats.totalInvocations : 0;
|
|
13
|
+
// Base 100 calculation
|
|
14
|
+
let score = 100;
|
|
15
|
+
// Deduct up to 40 for low success rate
|
|
16
|
+
score -= Math.round((1 - successRate) * 40);
|
|
17
|
+
// Deduct up to 30 for high correction rate
|
|
18
|
+
score -= Math.round(correctionRate * 30);
|
|
19
|
+
// Deduct up to 15 for tool failures
|
|
20
|
+
score -= Math.round(Math.min(1, toolFailureRate) * 15);
|
|
21
|
+
score = Math.max(0, Math.min(100, score));
|
|
22
|
+
let grade = 'A';
|
|
23
|
+
let gradeBadgeClass = 'pill-success';
|
|
24
|
+
if (score >= 95) {
|
|
25
|
+
grade = 'A+';
|
|
26
|
+
gradeBadgeClass = 'pill-success';
|
|
27
|
+
}
|
|
28
|
+
else if (score >= 85) {
|
|
29
|
+
grade = 'A';
|
|
30
|
+
gradeBadgeClass = 'pill-success';
|
|
31
|
+
}
|
|
32
|
+
else if (score >= 70) {
|
|
33
|
+
grade = 'B';
|
|
34
|
+
gradeBadgeClass = 'pill-blue';
|
|
35
|
+
}
|
|
36
|
+
else if (score >= 50) {
|
|
37
|
+
grade = 'C';
|
|
38
|
+
gradeBadgeClass = 'pill-partial';
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
grade = 'D';
|
|
42
|
+
gradeBadgeClass = 'pill-failed';
|
|
43
|
+
}
|
|
44
|
+
const summary = `成功率 ${(successRate * 100).toFixed(0)}% · 纠错返工率 ${(correctionRate * 100).toFixed(0)}%`;
|
|
45
|
+
return {
|
|
46
|
+
score,
|
|
47
|
+
grade,
|
|
48
|
+
gradeBadgeClass,
|
|
49
|
+
summary,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
export const MODIFIER_PATTERNS = [
|
|
53
|
+
{ keyword: /单测|测试|test|jest|vitest|pytest/i, category: '补全单元测试', recommendation: '建议在 SKILL.md 默认规则中强制附带测试用例' },
|
|
54
|
+
{ keyword: /深色|暗黑|dark|night/i, category: '适配深色模式', recommendation: '建议在前端规范中增加 prefers-color-scheme 样式声明' },
|
|
55
|
+
{ keyword: /注释|文档|说明|docstring|comment/i, category: '补充代码注释', recommendation: '建议在生成规则中设定关键函数 JSDoc/Docstring 约束' },
|
|
56
|
+
{ keyword: /性能|优化|缓存|perf|cache/i, category: '性能优化要求', recommendation: '建议在实现规范中增加防抖/节流与索引设计准则' },
|
|
57
|
+
{ keyword: /移动端|手机|响应式|mobile|responsive/i, category: '移动端响应式', recommendation: '建议在布局准则中加入 Flex/Grid 弹性断点规则' },
|
|
58
|
+
{ keyword: /排版|换行|格式|美化|prett/i, category: '格式与排版微调', recommendation: '建议固化正文段落长度与空行缩进规范' },
|
|
59
|
+
];
|
|
60
|
+
export function extractFollowUpModifier(text) {
|
|
61
|
+
if (!text || typeof text !== 'string')
|
|
62
|
+
return null;
|
|
63
|
+
for (const p of MODIFIER_PATTERNS) {
|
|
64
|
+
if (p.keyword.test(text)) {
|
|
65
|
+
return { category: p.category, recommendation: p.recommendation };
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=governance.js.map
|