@mengzf/skillflow-mcp 0.0.0-stage → 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/LICENSE +21 -0
- package/README.md +279 -2
- 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 +22 -0
- package/dist/adapters/workbuddy.sniffer.d.ts.map +1 -0
- package/dist/adapters/workbuddy.sniffer.js +148 -0
- package/dist/adapters/workbuddy.sniffer.js.map +1 -0
- package/dist/config.d.ts +9 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +33 -0
- package/dist/config.js.map +1 -0
- package/dist/db/index.d.ts +4 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +39 -0
- package/dist/db/index.js.map +1 -0
- 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 +3 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +129 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/db/seed.d.ts +15 -0
- package/dist/db/seed.d.ts.map +1 -0
- package/dist/db/seed.js +128 -0
- package/dist/db/seed.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +51 -0
- package/dist/index.js.map +1 -0
- package/dist/server.d.ts +7 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +372 -0
- package/dist/server.js.map +1 -0
- package/dist/services/benchmark.service.d.ts +27 -0
- package/dist/services/benchmark.service.d.ts.map +1 -0
- package/dist/services/benchmark.service.js +94 -0
- package/dist/services/benchmark.service.js.map +1 -0
- package/dist/services/dashboard.service.d.ts +14 -0
- package/dist/services/dashboard.service.d.ts.map +1 -0
- package/dist/services/dashboard.service.js +296 -0
- package/dist/services/dashboard.service.js.map +1 -0
- 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/impact.service.d.ts +20 -0
- package/dist/services/impact.service.d.ts.map +1 -0
- package/dist/services/impact.service.js +114 -0
- package/dist/services/impact.service.js.map +1 -0
- package/dist/services/telemetry.service.d.ts +41 -0
- package/dist/services/telemetry.service.d.ts.map +1 -0
- package/dist/services/telemetry.service.js +244 -0
- package/dist/services/telemetry.service.js.map +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/models.d.ts +73 -0
- package/dist/types/models.d.ts.map +1 -0
- package/dist/types/models.js +2 -0
- package/dist/types/models.js.map +1 -0
- package/dist/types/tools.d.ts +173 -0
- package/dist/types/tools.d.ts.map +1 -0
- package/dist/types/tools.js +195 -0
- package/dist/types/tools.js.map +1 -0
- package/dist/utils/ascii-chart.d.ts +9 -0
- package/dist/utils/ascii-chart.d.ts.map +1 -0
- package/dist/utils/ascii-chart.js +29 -0
- package/dist/utils/ascii-chart.js.map +1 -0
- package/dist/utils/formatter.d.ts +6 -0
- package/dist/utils/formatter.d.ts.map +1 -0
- package/dist/utils/formatter.js +29 -0
- package/dist/utils/formatter.js.map +1 -0
- 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/hours.d.ts +3 -0
- package/dist/utils/hours.d.ts.map +1 -0
- package/dist/utils/hours.js +15 -0
- package/dist/utils/hours.js.map +1 -0
- package/dist/utils/pricing.d.ts +19 -0
- package/dist/utils/pricing.d.ts.map +1 -0
- package/dist/utils/pricing.js +96 -0
- package/dist/utils/pricing.js.map +1 -0
- package/dist/utils/quality.d.ts +15 -0
- package/dist/utils/quality.d.ts.map +1 -0
- package/dist/utils/quality.js +47 -0
- package/dist/utils/quality.js.map +1 -0
- package/dist/web/render.d.ts +2 -0
- package/dist/web/render.d.ts.map +1 -0
- package/dist/web/render.js +1919 -0
- package/dist/web/render.js.map +1 -0
- package/dist/web/server.d.ts +10 -0
- package/dist/web/server.d.ts.map +1 -0
- package/dist/web/server.js +160 -0
- package/dist/web/server.js.map +1 -0
- package/package.json +51 -4
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { InvocationStatus, TriggerMode } from './models.js';
|
|
3
|
+
export declare const RecordSkillHitSchema: z.ZodObject<{
|
|
4
|
+
session_id: z.ZodString;
|
|
5
|
+
skill_id: z.ZodString;
|
|
6
|
+
skill_version: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
7
|
+
agent_name: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
8
|
+
model_name: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
9
|
+
round_index: z.ZodOptional<z.ZodNumber>;
|
|
10
|
+
trigger_mode: z.ZodDefault<z.ZodOptional<z.ZodEnum<["explicit", "implicit"]>>>;
|
|
11
|
+
status: z.ZodDefault<z.ZodOptional<z.ZodEnum<["success", "failed", "partial", "skipped"]>>>;
|
|
12
|
+
actual_tokens: z.ZodOptional<z.ZodNumber>;
|
|
13
|
+
context_tokens: z.ZodOptional<z.ZodNumber>;
|
|
14
|
+
output_tokens: z.ZodOptional<z.ZodNumber>;
|
|
15
|
+
actual_steps: z.ZodOptional<z.ZodNumber>;
|
|
16
|
+
saved_steps: z.ZodOptional<z.ZodNumber>;
|
|
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>;
|
|
22
|
+
execution_time_ms: z.ZodOptional<z.ZodNumber>;
|
|
23
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
24
|
+
}, "strip", z.ZodTypeAny, {
|
|
25
|
+
session_id: string;
|
|
26
|
+
skill_id: string;
|
|
27
|
+
skill_version: string;
|
|
28
|
+
agent_name: string;
|
|
29
|
+
model_name: string;
|
|
30
|
+
trigger_mode: "explicit" | "implicit";
|
|
31
|
+
status: "success" | "failed" | "partial" | "skipped";
|
|
32
|
+
round_index?: number | undefined;
|
|
33
|
+
actual_tokens?: number | undefined;
|
|
34
|
+
context_tokens?: number | undefined;
|
|
35
|
+
output_tokens?: number | undefined;
|
|
36
|
+
actual_steps?: number | undefined;
|
|
37
|
+
saved_steps?: number | undefined;
|
|
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;
|
|
43
|
+
execution_time_ms?: number | undefined;
|
|
44
|
+
metadata?: Record<string, any> | undefined;
|
|
45
|
+
}, {
|
|
46
|
+
session_id: string;
|
|
47
|
+
skill_id: string;
|
|
48
|
+
skill_version?: string | undefined;
|
|
49
|
+
agent_name?: string | undefined;
|
|
50
|
+
model_name?: string | undefined;
|
|
51
|
+
round_index?: number | undefined;
|
|
52
|
+
trigger_mode?: "explicit" | "implicit" | undefined;
|
|
53
|
+
status?: "success" | "failed" | "partial" | "skipped" | undefined;
|
|
54
|
+
actual_tokens?: number | undefined;
|
|
55
|
+
context_tokens?: number | undefined;
|
|
56
|
+
output_tokens?: number | undefined;
|
|
57
|
+
actual_steps?: number | undefined;
|
|
58
|
+
saved_steps?: number | undefined;
|
|
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;
|
|
64
|
+
execution_time_ms?: number | undefined;
|
|
65
|
+
metadata?: Record<string, any> | undefined;
|
|
66
|
+
}>;
|
|
67
|
+
export interface RecordSkillHitInput {
|
|
68
|
+
session_id: string;
|
|
69
|
+
skill_id: string;
|
|
70
|
+
skill_version?: string;
|
|
71
|
+
agent_name?: string;
|
|
72
|
+
model_name?: string;
|
|
73
|
+
round_index?: number;
|
|
74
|
+
trigger_mode?: TriggerMode;
|
|
75
|
+
status?: InvocationStatus;
|
|
76
|
+
actual_tokens?: number;
|
|
77
|
+
context_tokens?: number;
|
|
78
|
+
output_tokens?: number;
|
|
79
|
+
actual_steps?: number;
|
|
80
|
+
saved_steps?: number;
|
|
81
|
+
saved_tokens?: number;
|
|
82
|
+
saved_hours?: number;
|
|
83
|
+
tool_chain_depth?: number;
|
|
84
|
+
tool_failures?: number;
|
|
85
|
+
follow_up_modifier?: string;
|
|
86
|
+
has_correction?: boolean;
|
|
87
|
+
execution_time_ms?: number;
|
|
88
|
+
metadata?: Record<string, any>;
|
|
89
|
+
}
|
|
90
|
+
export declare const GetRoundSkillImpactSchema: z.ZodObject<{
|
|
91
|
+
session_id: z.ZodOptional<z.ZodString>;
|
|
92
|
+
round_index: z.ZodOptional<z.ZodNumber>;
|
|
93
|
+
include_session_summary: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
94
|
+
}, "strip", z.ZodTypeAny, {
|
|
95
|
+
include_session_summary: boolean;
|
|
96
|
+
session_id?: string | undefined;
|
|
97
|
+
round_index?: number | undefined;
|
|
98
|
+
}, {
|
|
99
|
+
session_id?: string | undefined;
|
|
100
|
+
round_index?: number | undefined;
|
|
101
|
+
include_session_summary?: boolean | undefined;
|
|
102
|
+
}>;
|
|
103
|
+
export type GetRoundSkillImpactInput = z.infer<typeof GetRoundSkillImpactSchema>;
|
|
104
|
+
export declare const GetSkillDashboardSchema: z.ZodObject<{
|
|
105
|
+
time_range: z.ZodDefault<z.ZodOptional<z.ZodEnum<["current_session", "today", "7days", "30days", "all"]>>>;
|
|
106
|
+
session_id: z.ZodOptional<z.ZodString>;
|
|
107
|
+
agent_name: z.ZodOptional<z.ZodString>;
|
|
108
|
+
skill_id: z.ZodOptional<z.ZodString>;
|
|
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"]>>>;
|
|
112
|
+
}, "strip", z.ZodTypeAny, {
|
|
113
|
+
time_range: "current_session" | "today" | "7days" | "30days" | "all";
|
|
114
|
+
group_by: "skill" | "agent" | "category" | "date" | "governance";
|
|
115
|
+
session_id?: string | undefined;
|
|
116
|
+
skill_id?: string | undefined;
|
|
117
|
+
agent_name?: string | undefined;
|
|
118
|
+
model_name?: string | undefined;
|
|
119
|
+
status?: "success" | "failed" | "partial" | "skipped" | undefined;
|
|
120
|
+
}, {
|
|
121
|
+
session_id?: string | undefined;
|
|
122
|
+
skill_id?: string | undefined;
|
|
123
|
+
agent_name?: string | undefined;
|
|
124
|
+
model_name?: string | undefined;
|
|
125
|
+
status?: "success" | "failed" | "partial" | "skipped" | undefined;
|
|
126
|
+
time_range?: "current_session" | "today" | "7days" | "30days" | "all" | undefined;
|
|
127
|
+
group_by?: "skill" | "agent" | "category" | "date" | "governance" | undefined;
|
|
128
|
+
}>;
|
|
129
|
+
export interface GetSkillDashboardInput {
|
|
130
|
+
time_range?: 'current_session' | 'today' | '7days' | '30days' | 'all';
|
|
131
|
+
session_id?: string;
|
|
132
|
+
agent_name?: string;
|
|
133
|
+
skill_id?: string;
|
|
134
|
+
model_name?: string;
|
|
135
|
+
status?: 'success' | 'failed' | 'partial' | 'skipped';
|
|
136
|
+
group_by?: 'skill' | 'agent' | 'category' | 'date' | 'governance';
|
|
137
|
+
}
|
|
138
|
+
export declare const ManageSkillBenchmarkSchema: z.ZodObject<{
|
|
139
|
+
action: z.ZodEnum<["list", "get", "set", "delete", "reset_defaults"]>;
|
|
140
|
+
skill_id: z.ZodOptional<z.ZodString>;
|
|
141
|
+
skill_name: z.ZodOptional<z.ZodString>;
|
|
142
|
+
category: z.ZodOptional<z.ZodString>;
|
|
143
|
+
description: z.ZodOptional<z.ZodString>;
|
|
144
|
+
baseline_steps: z.ZodOptional<z.ZodNumber>;
|
|
145
|
+
baseline_tokens: z.ZodOptional<z.ZodNumber>;
|
|
146
|
+
default_saved_steps: z.ZodOptional<z.ZodNumber>;
|
|
147
|
+
default_saved_tokens: z.ZodOptional<z.ZodNumber>;
|
|
148
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
149
|
+
}, "strip", z.ZodTypeAny, {
|
|
150
|
+
action: "list" | "get" | "set" | "delete" | "reset_defaults";
|
|
151
|
+
skill_id?: string | undefined;
|
|
152
|
+
category?: string | undefined;
|
|
153
|
+
skill_name?: string | undefined;
|
|
154
|
+
description?: string | undefined;
|
|
155
|
+
baseline_steps?: number | undefined;
|
|
156
|
+
baseline_tokens?: number | undefined;
|
|
157
|
+
default_saved_steps?: number | undefined;
|
|
158
|
+
default_saved_tokens?: number | undefined;
|
|
159
|
+
tags?: string[] | undefined;
|
|
160
|
+
}, {
|
|
161
|
+
action: "list" | "get" | "set" | "delete" | "reset_defaults";
|
|
162
|
+
skill_id?: string | undefined;
|
|
163
|
+
category?: string | undefined;
|
|
164
|
+
skill_name?: string | undefined;
|
|
165
|
+
description?: string | undefined;
|
|
166
|
+
baseline_steps?: number | undefined;
|
|
167
|
+
baseline_tokens?: number | undefined;
|
|
168
|
+
default_saved_steps?: number | undefined;
|
|
169
|
+
default_saved_tokens?: number | undefined;
|
|
170
|
+
tags?: string[] | undefined;
|
|
171
|
+
}>;
|
|
172
|
+
export type ManageSkillBenchmarkInput = z.infer<typeof ManageSkillBenchmarkSchema>;
|
|
173
|
+
//# sourceMappingURL=tools.d.ts.map
|
|
@@ -0,0 +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,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"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const RecordSkillHitSchema = z.object({
|
|
3
|
+
session_id: z.string().describe('Unique session identifier (e.g. sess-20261111-01)'),
|
|
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'),
|
|
6
|
+
agent_name: z
|
|
7
|
+
.string()
|
|
8
|
+
.optional()
|
|
9
|
+
.default('unknown')
|
|
10
|
+
.describe("Agent identifier (e.g. 'Claude Code', 'Trae', 'Qoder', 'WorkBuddy', 'Codex', 'DSH')"),
|
|
11
|
+
model_name: z
|
|
12
|
+
.string()
|
|
13
|
+
.optional()
|
|
14
|
+
.default('unknown')
|
|
15
|
+
.describe("Model identifier (e.g. 'deepseek-v4.1-flash', 'claude-3-5-sonnet', 'gpt-4o')"),
|
|
16
|
+
round_index: z
|
|
17
|
+
.number()
|
|
18
|
+
.int()
|
|
19
|
+
.min(1)
|
|
20
|
+
.optional()
|
|
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)"),
|
|
27
|
+
status: z
|
|
28
|
+
.enum(['success', 'failed', 'partial', 'skipped'])
|
|
29
|
+
.optional()
|
|
30
|
+
.default('success')
|
|
31
|
+
.describe('Execution status of the skill'),
|
|
32
|
+
actual_tokens: z
|
|
33
|
+
.number()
|
|
34
|
+
.int()
|
|
35
|
+
.min(0)
|
|
36
|
+
.optional()
|
|
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'),
|
|
50
|
+
actual_steps: z
|
|
51
|
+
.number()
|
|
52
|
+
.int()
|
|
53
|
+
.min(0)
|
|
54
|
+
.optional()
|
|
55
|
+
.describe('Actual steps taken by the skill (defaults to 1)'),
|
|
56
|
+
saved_steps: z
|
|
57
|
+
.number()
|
|
58
|
+
.int()
|
|
59
|
+
.optional()
|
|
60
|
+
.describe('Explicit steps saved (if omitted, calculated automatically from skill baseline)'),
|
|
61
|
+
saved_tokens: z
|
|
62
|
+
.number()
|
|
63
|
+
.int()
|
|
64
|
+
.optional()
|
|
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'),
|
|
86
|
+
execution_time_ms: z
|
|
87
|
+
.number()
|
|
88
|
+
.int()
|
|
89
|
+
.min(0)
|
|
90
|
+
.optional()
|
|
91
|
+
.describe('Execution duration in milliseconds'),
|
|
92
|
+
metadata: z
|
|
93
|
+
.record(z.any())
|
|
94
|
+
.optional()
|
|
95
|
+
.describe('Arbitrary extra metadata such as prompt summary, error message, or target files'),
|
|
96
|
+
});
|
|
97
|
+
export const GetRoundSkillImpactSchema = z.object({
|
|
98
|
+
session_id: z
|
|
99
|
+
.string()
|
|
100
|
+
.optional()
|
|
101
|
+
.describe('Session ID to inspect (if omitted, uses the most recently active session)'),
|
|
102
|
+
round_index: z
|
|
103
|
+
.number()
|
|
104
|
+
.int()
|
|
105
|
+
.min(1)
|
|
106
|
+
.optional()
|
|
107
|
+
.describe('Specific conversation round index (if omitted, inspects the latest round)'),
|
|
108
|
+
include_session_summary: z
|
|
109
|
+
.boolean()
|
|
110
|
+
.optional()
|
|
111
|
+
.default(true)
|
|
112
|
+
.describe('Include cumulative session stats in the output report'),
|
|
113
|
+
});
|
|
114
|
+
export const GetSkillDashboardSchema = z.object({
|
|
115
|
+
time_range: z
|
|
116
|
+
.enum(['current_session', 'today', '7days', '30days', 'all'])
|
|
117
|
+
.optional()
|
|
118
|
+
.default('all')
|
|
119
|
+
.describe('Time window for analysis'),
|
|
120
|
+
session_id: z
|
|
121
|
+
.string()
|
|
122
|
+
.optional()
|
|
123
|
+
.describe("Specific session ID (required when time_range is 'current_session')"),
|
|
124
|
+
agent_name: z
|
|
125
|
+
.string()
|
|
126
|
+
.optional()
|
|
127
|
+
.describe("Filter by specific agent (e.g. 'Trae', 'Claude Code', 'Qoder', 'WorkBuddy')"),
|
|
128
|
+
skill_id: z
|
|
129
|
+
.string()
|
|
130
|
+
.optional()
|
|
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'),
|
|
140
|
+
group_by: z
|
|
141
|
+
.enum(['skill', 'agent', 'category', 'date', 'governance'])
|
|
142
|
+
.optional()
|
|
143
|
+
.default('skill')
|
|
144
|
+
.describe('Primary aggregation grouping dimension'),
|
|
145
|
+
});
|
|
146
|
+
export const ManageSkillBenchmarkSchema = z.object({
|
|
147
|
+
action: z
|
|
148
|
+
.enum(['list', 'get', 'set', 'delete', 'reset_defaults'])
|
|
149
|
+
.describe('Action to perform on skill benchmarks'),
|
|
150
|
+
skill_id: z
|
|
151
|
+
.string()
|
|
152
|
+
.optional()
|
|
153
|
+
.describe("Skill ID (required for 'get', 'set', 'delete')"),
|
|
154
|
+
skill_name: z
|
|
155
|
+
.string()
|
|
156
|
+
.optional()
|
|
157
|
+
.describe('Human-readable display name of the skill'),
|
|
158
|
+
category: z
|
|
159
|
+
.string()
|
|
160
|
+
.optional()
|
|
161
|
+
.describe("Category (e.g. 'engineering', 'design', 'security', 'documentation', 'data', 'utility')"),
|
|
162
|
+
description: z
|
|
163
|
+
.string()
|
|
164
|
+
.optional()
|
|
165
|
+
.describe('Capability summary for this skill'),
|
|
166
|
+
baseline_steps: z
|
|
167
|
+
.number()
|
|
168
|
+
.int()
|
|
169
|
+
.min(1)
|
|
170
|
+
.optional()
|
|
171
|
+
.describe('Estimated manual steps required without this skill'),
|
|
172
|
+
baseline_tokens: z
|
|
173
|
+
.number()
|
|
174
|
+
.int()
|
|
175
|
+
.min(100)
|
|
176
|
+
.optional()
|
|
177
|
+
.describe('Estimated tokens consumed without this skill'),
|
|
178
|
+
default_saved_steps: z
|
|
179
|
+
.number()
|
|
180
|
+
.int()
|
|
181
|
+
.min(1)
|
|
182
|
+
.optional()
|
|
183
|
+
.describe('Expected steps saved per run'),
|
|
184
|
+
default_saved_tokens: z
|
|
185
|
+
.number()
|
|
186
|
+
.int()
|
|
187
|
+
.min(50)
|
|
188
|
+
.optional()
|
|
189
|
+
.describe('Expected tokens saved per run'),
|
|
190
|
+
tags: z
|
|
191
|
+
.array(z.string())
|
|
192
|
+
.optional()
|
|
193
|
+
.describe('Tag keywords for searching and grouping'),
|
|
194
|
+
});
|
|
195
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/types/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare function renderBar(value: number, max: number, width?: number): string;
|
|
2
|
+
export declare function renderProgressBar(ratio: number, width?: number): string;
|
|
3
|
+
export interface BarChartItem {
|
|
4
|
+
label: string;
|
|
5
|
+
value: number;
|
|
6
|
+
suffix?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function renderHorizontalBarChart(items: BarChartItem[], width?: number): string;
|
|
9
|
+
//# sourceMappingURL=ascii-chart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ascii-chart.d.ts","sourceRoot":"","sources":["../../src/utils/ascii-chart.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,MAAM,CAOxE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,MAAM,CAKnE;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,KAAK,SAAK,GAAG,MAAM,CAclF"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export function renderBar(value, max, width = 20) {
|
|
2
|
+
if (max <= 0 || value <= 0) {
|
|
3
|
+
return '░'.repeat(width);
|
|
4
|
+
}
|
|
5
|
+
const filledCount = Math.min(width, Math.max(0, Math.round((value / max) * width)));
|
|
6
|
+
const emptyCount = width - filledCount;
|
|
7
|
+
return '█'.repeat(filledCount) + '░'.repeat(emptyCount);
|
|
8
|
+
}
|
|
9
|
+
export function renderProgressBar(ratio, width = 20) {
|
|
10
|
+
const clamped = Math.min(1, Math.max(0, ratio));
|
|
11
|
+
const filledCount = Math.round(clamped * width);
|
|
12
|
+
const emptyCount = width - filledCount;
|
|
13
|
+
return `[${'█'.repeat(filledCount)}${'░'.repeat(emptyCount)}] ${(clamped * 100).toFixed(0)}%`;
|
|
14
|
+
}
|
|
15
|
+
export function renderHorizontalBarChart(items, width = 16) {
|
|
16
|
+
if (items.length === 0)
|
|
17
|
+
return '_No data available_';
|
|
18
|
+
const maxValue = Math.max(...items.map((i) => i.value), 1);
|
|
19
|
+
const maxLabelLen = Math.max(...items.map((i) => i.label.length), 4);
|
|
20
|
+
return items
|
|
21
|
+
.map((item, index) => {
|
|
22
|
+
const paddedLabel = item.label.padEnd(maxLabelLen, ' ');
|
|
23
|
+
const bar = renderBar(item.value, maxValue, width);
|
|
24
|
+
const suffix = item.suffix ? ` ${item.suffix}` : ` (${item.value.toLocaleString()})`;
|
|
25
|
+
return `${index + 1}. \`${paddedLabel}\` [${bar}]${suffix}`;
|
|
26
|
+
})
|
|
27
|
+
.join('\n');
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=ascii-chart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ascii-chart.js","sourceRoot":"","sources":["../../src/utils/ascii-chart.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,GAAW,EAAE,KAAK,GAAG,EAAE;IAC9D,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAC3B,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACpF,MAAM,UAAU,GAAG,KAAK,GAAG,WAAW,CAAC;IACvC,OAAO,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAa,EAAE,KAAK,GAAG,EAAE;IACzD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,KAAK,GAAG,WAAW,CAAC;IACvC,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AAChG,CAAC;AAQD,MAAM,UAAU,wBAAwB,CAAC,KAAqB,EAAE,KAAK,GAAG,EAAE;IACxE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,qBAAqB,CAAC;IAErD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAErE,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACnB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC;QACrF,OAAO,GAAG,KAAK,GAAG,CAAC,OAAO,WAAW,OAAO,GAAG,IAAI,MAAM,EAAE,CAAC;IAC9D,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function formatNumber(n: number): string;
|
|
2
|
+
export declare function formatPercent(ratio: number): string;
|
|
3
|
+
export declare function formatDuration(ms: number): string;
|
|
4
|
+
export declare function formatTokens(n: number): string;
|
|
5
|
+
export declare function formatEstimatedCost(tokens: number, costPerMillion?: number): string;
|
|
6
|
+
//# sourceMappingURL=formatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../src/utils/formatter.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGnD;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAGjD;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ9C;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,SAAM,GAAG,MAAM,CAMhF"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export function formatNumber(n) {
|
|
2
|
+
return n.toLocaleString('en-US');
|
|
3
|
+
}
|
|
4
|
+
export function formatPercent(ratio) {
|
|
5
|
+
const pct = (ratio * 100).toFixed(1);
|
|
6
|
+
return `${pct}%`;
|
|
7
|
+
}
|
|
8
|
+
export function formatDuration(ms) {
|
|
9
|
+
if (ms < 1000)
|
|
10
|
+
return `${ms}ms`;
|
|
11
|
+
return `${(ms / 1000).toFixed(2)}s`;
|
|
12
|
+
}
|
|
13
|
+
export function formatTokens(n) {
|
|
14
|
+
if (n >= 1_000_000) {
|
|
15
|
+
return `${(n / 1_000_000).toFixed(2)}M`;
|
|
16
|
+
}
|
|
17
|
+
if (n >= 1_000) {
|
|
18
|
+
return `${(n / 1_000).toFixed(1)}k`;
|
|
19
|
+
}
|
|
20
|
+
return n.toString();
|
|
21
|
+
}
|
|
22
|
+
export function formatEstimatedCost(tokens, costPerMillion = 3.0) {
|
|
23
|
+
const cost = (tokens / 1_000_000) * costPerMillion;
|
|
24
|
+
if (cost < 0.01) {
|
|
25
|
+
return '< $0.01';
|
|
26
|
+
}
|
|
27
|
+
return `~$${cost.toFixed(2)}`;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=formatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../src/utils/formatter.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,YAAY,CAAC,CAAS;IACpC,OAAO,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,MAAM,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACrC,OAAO,GAAG,GAAG,GAAG,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,IAAI,EAAE,GAAG,IAAI;QAAE,OAAO,GAAG,EAAE,IAAI,CAAC;IAChC,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAS;IACpC,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;QACnB,OAAO,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAC1C,CAAC;IACD,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACtC,CAAC;IACD,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAc,EAAE,cAAc,GAAG,GAAG;IACtE,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,cAAc,CAAC;IACnD,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;AAChC,CAAC"}
|
|
@@ -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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"governance.js","sourceRoot":"","sources":["../../src/utils/governance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hours.d.ts","sourceRoot":"","sources":["../../src/utils/hours.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,CAAC,eAAe,SAAK,EAAE,eAAe,SAAI,GAAG,MAAM,CAIrF;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOrD"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export function calculateSavedHours(baselineMinutes = 15, executionTimeMs = 0) {
|
|
2
|
+
const actualMinutes = executionTimeMs / 60000;
|
|
3
|
+
const savedMinutes = Math.max(0, baselineMinutes - actualMinutes);
|
|
4
|
+
return Math.round((savedMinutes / 60) * 100) / 100;
|
|
5
|
+
}
|
|
6
|
+
export function formatWorkHours(hours) {
|
|
7
|
+
if (hours <= 0)
|
|
8
|
+
return '0 分钟';
|
|
9
|
+
if (hours < 1) {
|
|
10
|
+
const mins = Math.max(1, Math.round(hours * 60));
|
|
11
|
+
return `${mins} 分钟`;
|
|
12
|
+
}
|
|
13
|
+
return `${hours.toFixed(1)} 小时`;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=hours.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hours.js","sourceRoot":"","sources":["../../src/utils/hours.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,mBAAmB,CAAC,eAAe,GAAG,EAAE,EAAE,eAAe,GAAG,CAAC;IAC3E,MAAM,aAAa,GAAG,eAAe,GAAG,KAAK,CAAC;IAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,GAAG,aAAa,CAAC,CAAC;IAClE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC;IAC9B,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;QACjD,OAAO,GAAG,IAAI,KAAK,CAAC;IACtB,CAAC;IACD,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface ModelPricing {
|
|
2
|
+
modelPattern: RegExp;
|
|
3
|
+
displayName: string;
|
|
4
|
+
usdPerMillionTokens: number;
|
|
5
|
+
cnyPerMillionTokens: number;
|
|
6
|
+
}
|
|
7
|
+
export declare const MODEL_PRICINGS: ModelPricing[];
|
|
8
|
+
export declare function resolveModelPricing(modelName?: string): {
|
|
9
|
+
displayName: string;
|
|
10
|
+
usdPerMillion: number;
|
|
11
|
+
cnyPerMillion: number;
|
|
12
|
+
};
|
|
13
|
+
export declare function calculateCost(tokens: number, modelName?: string): {
|
|
14
|
+
usd: number;
|
|
15
|
+
cny: number;
|
|
16
|
+
formattedUsd: string;
|
|
17
|
+
formattedCny: string;
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=pricing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../src/utils/pricing.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,eAAO,MAAM,cAAc,EAAE,YAAY,EAoDxC,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB,CAwBA;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,GACjB;IACD,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB,CAoBA"}
|