@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.
Files changed (73) hide show
  1. package/README.md +48 -7
  2. package/dist/adapters/claude-code.adapter.d.ts +10 -0
  3. package/dist/adapters/claude-code.adapter.d.ts.map +1 -0
  4. package/dist/adapters/claude-code.adapter.js +166 -0
  5. package/dist/adapters/claude-code.adapter.js.map +1 -0
  6. package/dist/adapters/codex.adapter.d.ts +10 -0
  7. package/dist/adapters/codex.adapter.d.ts.map +1 -0
  8. package/dist/adapters/codex.adapter.js +109 -0
  9. package/dist/adapters/codex.adapter.js.map +1 -0
  10. package/dist/adapters/dsh.adapter.d.ts +7 -0
  11. package/dist/adapters/dsh.adapter.d.ts.map +1 -0
  12. package/dist/adapters/dsh.adapter.js +60 -0
  13. package/dist/adapters/dsh.adapter.js.map +1 -0
  14. package/dist/adapters/qoder.adapter.d.ts +10 -0
  15. package/dist/adapters/qoder.adapter.d.ts.map +1 -0
  16. package/dist/adapters/qoder.adapter.js +119 -0
  17. package/dist/adapters/qoder.adapter.js.map +1 -0
  18. package/dist/adapters/trae.adapter.d.ts +8 -0
  19. package/dist/adapters/trae.adapter.d.ts.map +1 -0
  20. package/dist/adapters/trae.adapter.js +104 -0
  21. package/dist/adapters/trae.adapter.js.map +1 -0
  22. package/dist/adapters/types.d.ts +25 -0
  23. package/dist/adapters/types.d.ts.map +1 -0
  24. package/dist/adapters/types.js +2 -0
  25. package/dist/adapters/types.js.map +1 -0
  26. package/dist/adapters/universal.sync.d.ts +22 -0
  27. package/dist/adapters/universal.sync.d.ts.map +1 -0
  28. package/dist/adapters/universal.sync.js +140 -0
  29. package/dist/adapters/universal.sync.js.map +1 -0
  30. package/dist/adapters/workbuddy.sniffer.d.ts.map +1 -1
  31. package/dist/adapters/workbuddy.sniffer.js +8 -3
  32. package/dist/adapters/workbuddy.sniffer.js.map +1 -1
  33. package/dist/db/invocation-filter.d.ts +29 -0
  34. package/dist/db/invocation-filter.d.ts.map +1 -0
  35. package/dist/db/invocation-filter.js +78 -0
  36. package/dist/db/invocation-filter.js.map +1 -0
  37. package/dist/db/schema.d.ts.map +1 -1
  38. package/dist/db/schema.js +28 -2
  39. package/dist/db/schema.js.map +1 -1
  40. package/dist/server.d.ts.map +1 -1
  41. package/dist/server.js +16 -12
  42. package/dist/server.js.map +1 -1
  43. package/dist/services/dashboard.service.d.ts +2 -0
  44. package/dist/services/dashboard.service.d.ts.map +1 -1
  45. package/dist/services/dashboard.service.js +145 -40
  46. package/dist/services/dashboard.service.js.map +1 -1
  47. package/dist/services/filter.service.d.ts +26 -0
  48. package/dist/services/filter.service.d.ts.map +1 -0
  49. package/dist/services/filter.service.js +103 -0
  50. package/dist/services/filter.service.js.map +1 -0
  51. package/dist/services/telemetry.service.d.ts +9 -1
  52. package/dist/services/telemetry.service.d.ts.map +1 -1
  53. package/dist/services/telemetry.service.js +105 -36
  54. package/dist/services/telemetry.service.js.map +1 -1
  55. package/dist/types/models.d.ts +13 -1
  56. package/dist/types/models.d.ts.map +1 -1
  57. package/dist/types/tools.d.ts +44 -5
  58. package/dist/types/tools.d.ts.map +1 -1
  59. package/dist/types/tools.js +47 -1
  60. package/dist/types/tools.js.map +1 -1
  61. package/dist/utils/governance.d.ts +25 -0
  62. package/dist/utils/governance.d.ts.map +1 -0
  63. package/dist/utils/governance.js +70 -0
  64. package/dist/utils/governance.js.map +1 -0
  65. package/dist/utils/pricing.js +1 -1
  66. package/dist/utils/pricing.js.map +1 -1
  67. package/dist/web/render.d.ts.map +1 -1
  68. package/dist/web/render.js +1565 -239
  69. package/dist/web/render.js.map +1 -1
  70. package/dist/web/server.d.ts.map +1 -1
  71. package/dist/web/server.js +52 -28
  72. package/dist/web/server.js.map +1 -1
  73. 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.default_saved_steps));
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.default_saved_tokens));
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
- savedHours = calculateSavedHours(baselineMins, executionTimeMs);
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
- savedHours = Math.round(0.5 * calculateSavedHours(baselineMins, executionTimeMs) * 100) / 100;
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
- // 4. Ensure session exists
116
- this.ensureSession(input.session_id, agentName, roundIndex);
117
- // 5. Insert invocation record
118
- const insertRes = this.db
119
- .prepare(`
120
- INSERT INTO invocations (
121
- session_id, agent_name, model_name, skill_id, round_index, status,
122
- actual_tokens, actual_steps, saved_steps, saved_tokens, net_tokens,
123
- saved_hours, cost_saved_usd, cost_saved_cny, has_correction, quality_profile,
124
- execution_time_ms, metadata, timestamp
125
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, datetime('now'))
126
- `)
127
- .run(input.session_id, agentName, modelName, input.skill_id, roundIndex, status, actualTokens, actualSteps, savedSteps, savedTokens, netTokens, savedHours, cost.usd, cost.cny, hasCorrection, investmentProfile.type, executionTimeMs, metadataStr);
128
- const invocationId = Number(insertRes.lastInsertRowid);
129
- // 6. Update session cumulative stats
130
- this.db
131
- .prepare(`
132
- UPDATE sessions SET
133
- total_invocations = total_invocations + 1,
134
- total_saved_steps = total_saved_steps + ?,
135
- total_saved_tokens = total_saved_tokens + ?,
136
- total_saved_hours = total_saved_hours + ?,
137
- total_cost_saved_usd = total_cost_saved_usd + ?,
138
- total_cost_saved_cny = total_cost_saved_cny + ?,
139
- total_corrections = total_corrections + ?,
140
- last_active_at = datetime('now')
141
- WHERE session_id = ?
142
- `)
143
- .run(savedSteps, savedTokens, savedHours, cost.usd, cost.cny, hasCorrection, input.session_id);
144
- const updatedSession = this.db
145
- .prepare('SELECT * FROM sessions WHERE session_id = ?')
146
- .get(input.session_id);
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":"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"}
1
+ {"version":3,"file":"telemetry.service.js","sourceRoot":"","sources":["../../src/services/telemetry.service.ts"],"names":[],"mappings":"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"}
@@ -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
- quality_profile: string;
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;AAE5E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,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,IAAI,EAAE,MAAM,CAAC;IACb,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,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,gBAAgB,CAAC;IACzB,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,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,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"}
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"}
@@ -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
- group_by: z.ZodDefault<z.ZodOptional<z.ZodEnum<["skill", "agent", "category", "date"]>>>;
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
- group_by?: 'skill' | 'agent' | 'category' | 'date';
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;AAE/C,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwD/B,CAAC;AAEH,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,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,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;;;;;;;;;;;;;;;;;;EAuBlC,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,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;CACpD;AAED,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgDrC,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,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"}
@@ -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'),
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/types/tools.ts"],"names":[],"mappings":"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"}
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