@winspan/claude-forge 8.13.1 → 8.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/definition.d.ts +53 -0
- package/dist/agents/definition.d.ts.map +1 -0
- package/dist/agents/definition.js +24 -0
- package/dist/agents/definition.js.map +1 -0
- package/dist/agents/distributor.d.ts +23 -0
- package/dist/agents/distributor.d.ts.map +1 -0
- package/dist/agents/distributor.js +85 -0
- package/dist/agents/distributor.js.map +1 -0
- package/dist/agents/index.d.ts +5 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +5 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/official-agents.d.ts +14 -0
- package/dist/agents/official-agents.d.ts.map +1 -0
- package/dist/agents/official-agents.js +522 -0
- package/dist/agents/official-agents.js.map +1 -0
- package/dist/agents/registry.d.ts +27 -0
- package/dist/agents/registry.d.ts.map +1 -0
- package/dist/agents/registry.js +105 -0
- package/dist/agents/registry.js.map +1 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +17 -0
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/core/storage/schema.sql +60 -0
- package/dist/core/storage/sqlite.d.ts +73 -0
- package/dist/core/storage/sqlite.d.ts.map +1 -1
- package/dist/core/storage/sqlite.js +159 -0
- package/dist/core/storage/sqlite.js.map +1 -1
- package/dist/daemon/auto-disable-scheduler.d.ts +53 -0
- package/dist/daemon/auto-disable-scheduler.d.ts.map +1 -0
- package/dist/daemon/auto-disable-scheduler.js +114 -0
- package/dist/daemon/auto-disable-scheduler.js.map +1 -0
- package/dist/daemon/handlers/post-tool-use.d.ts +3 -1
- package/dist/daemon/handlers/post-tool-use.d.ts.map +1 -1
- package/dist/daemon/handlers/post-tool-use.js +14 -2
- package/dist/daemon/handlers/post-tool-use.js.map +1 -1
- package/dist/daemon/handlers/stop.d.ts +3 -1
- package/dist/daemon/handlers/stop.d.ts.map +1 -1
- package/dist/daemon/handlers/stop.js +14 -1
- package/dist/daemon/handlers/stop.js.map +1 -1
- package/dist/daemon/handlers/user-prompt.d.ts +18 -5
- package/dist/daemon/handlers/user-prompt.d.ts.map +1 -1
- package/dist/daemon/handlers/user-prompt.js +104 -21
- package/dist/daemon/handlers/user-prompt.js.map +1 -1
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +42 -12
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/routing-observer.d.ts +39 -0
- package/dist/daemon/routing-observer.d.ts.map +1 -0
- package/dist/daemon/routing-observer.js +156 -0
- package/dist/daemon/routing-observer.js.map +1 -0
- package/dist/engine/agent-router.d.ts +99 -0
- package/dist/engine/agent-router.d.ts.map +1 -0
- package/dist/engine/agent-router.js +206 -0
- package/dist/engine/agent-router.js.map +1 -0
- package/dist/engine/conventions/routing.yaml +74 -0
- package/dist/engine/evidence-store.d.ts.map +1 -1
- package/dist/engine/evidence-store.js +3 -0
- package/dist/engine/evidence-store.js.map +1 -1
- package/dist/engine/experiment-router.d.ts +102 -0
- package/dist/engine/experiment-router.d.ts.map +1 -0
- package/dist/engine/experiment-router.js +289 -0
- package/dist/engine/experiment-router.js.map +1 -0
- package/dist/engine/recommender.d.ts +52 -0
- package/dist/engine/recommender.d.ts.map +1 -0
- package/dist/engine/recommender.js +150 -0
- package/dist/engine/recommender.js.map +1 -0
- package/dist/intelligence/classifier.d.ts +18 -4
- package/dist/intelligence/classifier.d.ts.map +1 -1
- package/dist/intelligence/classifier.js +90 -20
- package/dist/intelligence/classifier.js.map +1 -1
- package/dist/skills/registry.d.ts.map +1 -1
- package/dist/skills/registry.js +5 -2
- package/dist/skills/registry.js.map +1 -1
- package/dist/web/server.d.ts +4 -0
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +474 -0
- package/dist/web/server.js.map +1 -1
- package/dist/web/static/index.html +764 -1
- package/package.json +1 -1
|
@@ -99,6 +99,23 @@ skill_matching:
|
|
|
99
99
|
// 7. Inject hooks into Claude Code settings
|
|
100
100
|
injectHooks();
|
|
101
101
|
console.log(chalk.green('✓'), 'Hooks injected into Claude Code settings');
|
|
102
|
+
// 7b. Install official agents to ~/.claude/agents/
|
|
103
|
+
try {
|
|
104
|
+
const { installOfficialAgents } = await import('../../agents/distributor.js');
|
|
105
|
+
const report = installOfficialAgents();
|
|
106
|
+
if (report.written.length > 0) {
|
|
107
|
+
console.log(chalk.green('✓'), `Installed ${report.written.length} built-in agent(s): ${report.written.join(', ')}`);
|
|
108
|
+
}
|
|
109
|
+
if (report.skipped.length > 0) {
|
|
110
|
+
console.log(chalk.gray('→'), `Skipped ${report.skipped.length} agent(s) (up-to-date or locally modified)`);
|
|
111
|
+
}
|
|
112
|
+
if (report.backedUp.length > 0) {
|
|
113
|
+
console.log(chalk.yellow('!'), `Backed up ${report.backedUp.length} older version(s) under ~/.claude-forge/backups/`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
catch (err) {
|
|
117
|
+
console.log(chalk.red('✗'), `Agent install failed: ${err}`);
|
|
118
|
+
}
|
|
102
119
|
// 8. Summary
|
|
103
120
|
console.log(chalk.bold.green('\n✅ Claude Forge 初始化成功!\n'));
|
|
104
121
|
console.log(chalk.yellow('下一步:'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -152,3 +152,63 @@ CREATE INDEX IF NOT EXISTS idx_tasks_session ON tasks(session_id);
|
|
|
152
152
|
CREATE INDEX IF NOT EXISTS idx_tasks_start_time ON tasks(start_time DESC);
|
|
153
153
|
CREATE INDEX IF NOT EXISTS idx_task_events_task ON task_events(task_id);
|
|
154
154
|
CREATE INDEX IF NOT EXISTS idx_task_events_event ON task_events(event_id);
|
|
155
|
+
|
|
156
|
+
-- ── Routing Events (agent routing observability) ─────────────────────────
|
|
157
|
+
|
|
158
|
+
CREATE TABLE IF NOT EXISTS routing_events (
|
|
159
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
160
|
+
session_id TEXT NOT NULL,
|
|
161
|
+
project_path TEXT NOT NULL,
|
|
162
|
+
ts INTEGER NOT NULL,
|
|
163
|
+
prompt TEXT NOT NULL,
|
|
164
|
+
intent_json TEXT NOT NULL,
|
|
165
|
+
routed_to_type TEXT, -- 'agent' | 'skill' | 'none'
|
|
166
|
+
routed_to_name TEXT,
|
|
167
|
+
is_forced INTEGER DEFAULT 0,
|
|
168
|
+
obeyed INTEGER, -- 1 / 0 / NULL
|
|
169
|
+
classification_ms INTEGER,
|
|
170
|
+
fallback_used INTEGER DEFAULT 0,
|
|
171
|
+
refusal_reason TEXT,
|
|
172
|
+
first_tool_name TEXT,
|
|
173
|
+
first_tool_ts INTEGER,
|
|
174
|
+
downstream_task_chain TEXT, -- JSON array of subagent_type
|
|
175
|
+
injection_version TEXT,
|
|
176
|
+
experiment_id TEXT, -- Phase 5: A/B test experiment id (null if no experiment)
|
|
177
|
+
experiment_group TEXT, -- Phase 5: assigned group id (null if no experiment)
|
|
178
|
+
created_at TEXT DEFAULT (datetime('now'))
|
|
179
|
+
);
|
|
180
|
+
|
|
181
|
+
CREATE INDEX IF NOT EXISTS idx_routing_events_session ON routing_events(session_id);
|
|
182
|
+
CREATE INDEX IF NOT EXISTS idx_routing_events_ts ON routing_events(ts DESC);
|
|
183
|
+
CREATE INDEX IF NOT EXISTS idx_routing_events_agent ON routing_events(routed_to_name, obeyed);
|
|
184
|
+
CREATE INDEX IF NOT EXISTS idx_routing_events_obeyed ON routing_events(obeyed);
|
|
185
|
+
CREATE INDEX IF NOT EXISTS idx_routing_events_experiment ON routing_events(experiment_id, experiment_group);
|
|
186
|
+
|
|
187
|
+
-- ── Experiment Assignments (Phase 5: A/B test group stickiness) ─────────
|
|
188
|
+
|
|
189
|
+
CREATE TABLE IF NOT EXISTS experiment_assignments (
|
|
190
|
+
session_id TEXT NOT NULL,
|
|
191
|
+
experiment_id TEXT NOT NULL,
|
|
192
|
+
group_id TEXT NOT NULL,
|
|
193
|
+
assigned_at TEXT DEFAULT (datetime('now')),
|
|
194
|
+
PRIMARY KEY (session_id, experiment_id)
|
|
195
|
+
);
|
|
196
|
+
|
|
197
|
+
CREATE INDEX IF NOT EXISTS idx_exp_assign_exp ON experiment_assignments(experiment_id);
|
|
198
|
+
|
|
199
|
+
-- ── Routing Rule States (Phase 5 Feature 2: auto-disable) ───────────────
|
|
200
|
+
-- One row per (task_type, agent) combination. A disabled entry causes the
|
|
201
|
+
-- router to skip matches for that pair and continue to the next rule.
|
|
202
|
+
|
|
203
|
+
CREATE TABLE IF NOT EXISTS routing_rule_states (
|
|
204
|
+
task_type TEXT NOT NULL,
|
|
205
|
+
agent TEXT NOT NULL,
|
|
206
|
+
disabled INTEGER NOT NULL DEFAULT 0,
|
|
207
|
+
disabled_at TEXT,
|
|
208
|
+
disabled_reason TEXT,
|
|
209
|
+
auto_disabled INTEGER NOT NULL DEFAULT 0, -- 1 if set by the auto-disable scheduler
|
|
210
|
+
updated_at TEXT DEFAULT (datetime('now')),
|
|
211
|
+
PRIMARY KEY (task_type, agent)
|
|
212
|
+
);
|
|
213
|
+
|
|
214
|
+
CREATE INDEX IF NOT EXISTS idx_rule_states_disabled ON routing_rule_states(disabled);
|
|
@@ -53,10 +53,45 @@ export interface DecisionRecord {
|
|
|
53
53
|
user_choice?: string | null;
|
|
54
54
|
timestamp: number;
|
|
55
55
|
}
|
|
56
|
+
export interface RoutingEventRecord {
|
|
57
|
+
id?: number;
|
|
58
|
+
session_id: string;
|
|
59
|
+
project_path: string;
|
|
60
|
+
ts: number;
|
|
61
|
+
prompt: string;
|
|
62
|
+
intent_json: string;
|
|
63
|
+
routed_to_type?: 'agent' | 'skill' | 'none' | null;
|
|
64
|
+
routed_to_name?: string | null;
|
|
65
|
+
is_forced?: number;
|
|
66
|
+
obeyed?: number | null;
|
|
67
|
+
classification_ms?: number | null;
|
|
68
|
+
fallback_used?: number;
|
|
69
|
+
refusal_reason?: string | null;
|
|
70
|
+
first_tool_name?: string | null;
|
|
71
|
+
first_tool_ts?: number | null;
|
|
72
|
+
downstream_task_chain?: string | null;
|
|
73
|
+
injection_version?: string | null;
|
|
74
|
+
experiment_id?: string | null;
|
|
75
|
+
experiment_group?: string | null;
|
|
76
|
+
}
|
|
77
|
+
export interface RoutingEventRow extends RoutingEventRecord {
|
|
78
|
+
id: number;
|
|
79
|
+
created_at: string;
|
|
80
|
+
}
|
|
81
|
+
export interface RuleStateRow {
|
|
82
|
+
task_type: string;
|
|
83
|
+
agent: string;
|
|
84
|
+
disabled: number;
|
|
85
|
+
disabled_at: string | null;
|
|
86
|
+
disabled_reason: string | null;
|
|
87
|
+
auto_disabled: number;
|
|
88
|
+
updated_at: string;
|
|
89
|
+
}
|
|
56
90
|
export declare class SQLiteStorage extends EventEmitter {
|
|
57
91
|
private db;
|
|
58
92
|
private dbPath;
|
|
59
93
|
constructor(dbPath: string);
|
|
94
|
+
private dropLegacyRoutingEventsIfNeeded;
|
|
60
95
|
private initSchema;
|
|
61
96
|
getDatabase(): Database.Database;
|
|
62
97
|
getDbPath(): string;
|
|
@@ -126,6 +161,44 @@ export declare class SQLiteStorage extends EventEmitter {
|
|
|
126
161
|
limit?: number;
|
|
127
162
|
}): TaskRecord[];
|
|
128
163
|
getTaskEventIds(taskId: string): string[];
|
|
164
|
+
writeRoutingEvent(record: RoutingEventRecord): number;
|
|
165
|
+
updateRoutingEvent(id: number, patch: Partial<RoutingEventRecord>): void;
|
|
166
|
+
queryRoutingEvents(filter?: {
|
|
167
|
+
session_id?: string;
|
|
168
|
+
project_path?: string;
|
|
169
|
+
since_ts?: number;
|
|
170
|
+
routed_to_name?: string;
|
|
171
|
+
obeyed?: number | null;
|
|
172
|
+
limit?: number;
|
|
173
|
+
}): RoutingEventRow[];
|
|
174
|
+
/** Pending events with NULL obeyed within the last N seconds; used by daemon restart recovery. */
|
|
175
|
+
findPendingRoutingEvents(ageMs: number): RoutingEventRow[];
|
|
176
|
+
getExperimentAssignment(sessionId: string, experimentId: string): string | null;
|
|
177
|
+
setExperimentAssignment(sessionId: string, experimentId: string, groupId: string): void;
|
|
178
|
+
queryExperimentStats(experimentId: string): Array<{
|
|
179
|
+
group_id: string;
|
|
180
|
+
total: number;
|
|
181
|
+
obeyed: number;
|
|
182
|
+
refused: number;
|
|
183
|
+
unknown: number;
|
|
184
|
+
avg_classification_ms: number | null;
|
|
185
|
+
}>;
|
|
186
|
+
getRuleState(taskType: string, agent: string): RuleStateRow | null;
|
|
187
|
+
listRuleStates(filter?: {
|
|
188
|
+
disabledOnly?: boolean;
|
|
189
|
+
}): RuleStateRow[];
|
|
190
|
+
setRuleState(params: {
|
|
191
|
+
taskType: string;
|
|
192
|
+
agent: string;
|
|
193
|
+
disabled: boolean;
|
|
194
|
+
reason?: string | null;
|
|
195
|
+
autoDisabled?: boolean;
|
|
196
|
+
}): void;
|
|
197
|
+
/**
|
|
198
|
+
* Return a Set of "<taskType>__<agent>" strings that are currently disabled.
|
|
199
|
+
* Hot path used by the router on every decide() call.
|
|
200
|
+
*/
|
|
201
|
+
getDisabledRuleKeys(): Set<string>;
|
|
129
202
|
runMaintenance(maxSizeMb: number): void;
|
|
130
203
|
vacuum(): void;
|
|
131
204
|
close(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../src/core/storage/sqlite.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAKtC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAI9C,KAAK,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAE5D,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,eAAe,GAAG,mBAAmB,GAAG,QAAQ,CAAC;IACjE,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,WAAW,CAAC;IAC7C,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,aAAc,SAAQ,YAAY;IAC7C,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../src/core/storage/sqlite.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,8 +26,25 @@ export class SQLiteStorage extends EventEmitter {
|
|
|
26
26
|
this.db.pragma('wal_autocheckpoint = 100');
|
|
27
27
|
this.db.pragma(`cache_size = ${DATABASE.CACHE_SIZE}`);
|
|
28
28
|
this.db.pragma(`busy_timeout = ${DATABASE.BUSY_TIMEOUT}`);
|
|
29
|
+
// Phase 5: drop legacy routing_events table without experiment columns
|
|
30
|
+
// before initSchema recreates it with the new fields. Historical routing
|
|
31
|
+
// data is intentionally discarded per Phase 5 migration decision.
|
|
32
|
+
this.dropLegacyRoutingEventsIfNeeded();
|
|
29
33
|
this.initSchema();
|
|
30
34
|
}
|
|
35
|
+
dropLegacyRoutingEventsIfNeeded() {
|
|
36
|
+
const tableExists = this.db
|
|
37
|
+
.prepare(`SELECT name FROM sqlite_master WHERE type='table' AND name='routing_events'`)
|
|
38
|
+
.get();
|
|
39
|
+
if (!tableExists)
|
|
40
|
+
return;
|
|
41
|
+
const cols = this.db.prepare(`PRAGMA table_info(routing_events)`).all();
|
|
42
|
+
const hasExperimentId = cols.some(c => c.name === 'experiment_id');
|
|
43
|
+
if (!hasExperimentId) {
|
|
44
|
+
logger.info('[Storage] Dropping legacy routing_events (missing experiment_id); table will be recreated.');
|
|
45
|
+
this.db.exec(`DROP TABLE routing_events`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
31
48
|
initSchema() {
|
|
32
49
|
const thisDir = dirname(fileURLToPath(import.meta.url));
|
|
33
50
|
const schemaPath = join(thisDir, 'schema.sql');
|
|
@@ -309,6 +326,148 @@ export class SQLiteStorage extends EventEmitter {
|
|
|
309
326
|
const rows = this.db.prepare(`SELECT event_id FROM task_events WHERE task_id = ?`).all(taskId);
|
|
310
327
|
return rows.map(r => r.event_id);
|
|
311
328
|
}
|
|
329
|
+
// ── Routing Events ─────────────────────────────────────────────────────
|
|
330
|
+
writeRoutingEvent(record) {
|
|
331
|
+
const result = this.db.prepare(`
|
|
332
|
+
INSERT INTO routing_events (
|
|
333
|
+
session_id, project_path, ts, prompt, intent_json,
|
|
334
|
+
routed_to_type, routed_to_name, is_forced, obeyed,
|
|
335
|
+
classification_ms, fallback_used, refusal_reason,
|
|
336
|
+
first_tool_name, first_tool_ts, downstream_task_chain,
|
|
337
|
+
injection_version, experiment_id, experiment_group
|
|
338
|
+
) VALUES (
|
|
339
|
+
@session_id, @project_path, @ts, @prompt, @intent_json,
|
|
340
|
+
@routed_to_type, @routed_to_name, @is_forced, @obeyed,
|
|
341
|
+
@classification_ms, @fallback_used, @refusal_reason,
|
|
342
|
+
@first_tool_name, @first_tool_ts, @downstream_task_chain,
|
|
343
|
+
@injection_version, @experiment_id, @experiment_group
|
|
344
|
+
)
|
|
345
|
+
`).run({
|
|
346
|
+
session_id: record.session_id,
|
|
347
|
+
project_path: record.project_path,
|
|
348
|
+
ts: record.ts,
|
|
349
|
+
prompt: record.prompt,
|
|
350
|
+
intent_json: record.intent_json,
|
|
351
|
+
routed_to_type: record.routed_to_type ?? null,
|
|
352
|
+
routed_to_name: record.routed_to_name ?? null,
|
|
353
|
+
is_forced: record.is_forced ?? 0,
|
|
354
|
+
obeyed: record.obeyed ?? null,
|
|
355
|
+
classification_ms: record.classification_ms ?? null,
|
|
356
|
+
fallback_used: record.fallback_used ?? 0,
|
|
357
|
+
refusal_reason: record.refusal_reason ?? null,
|
|
358
|
+
first_tool_name: record.first_tool_name ?? null,
|
|
359
|
+
first_tool_ts: record.first_tool_ts ?? null,
|
|
360
|
+
downstream_task_chain: record.downstream_task_chain ?? null,
|
|
361
|
+
injection_version: record.injection_version ?? null,
|
|
362
|
+
experiment_id: record.experiment_id ?? null,
|
|
363
|
+
experiment_group: record.experiment_group ?? null,
|
|
364
|
+
});
|
|
365
|
+
return Number(result.lastInsertRowid);
|
|
366
|
+
}
|
|
367
|
+
updateRoutingEvent(id, patch) {
|
|
368
|
+
const fields = Object.keys(patch).filter((k) => k !== 'id');
|
|
369
|
+
if (fields.length === 0)
|
|
370
|
+
return;
|
|
371
|
+
const setClause = fields.map((f) => `${f} = @${f}`).join(', ');
|
|
372
|
+
this.db.prepare(`UPDATE routing_events SET ${setClause} WHERE id = @id`).run({
|
|
373
|
+
...patch,
|
|
374
|
+
id,
|
|
375
|
+
});
|
|
376
|
+
}
|
|
377
|
+
queryRoutingEvents(filter = {}) {
|
|
378
|
+
const conds = [];
|
|
379
|
+
const params = {};
|
|
380
|
+
if (filter.session_id) {
|
|
381
|
+
conds.push('session_id = @session_id');
|
|
382
|
+
params.session_id = filter.session_id;
|
|
383
|
+
}
|
|
384
|
+
if (filter.project_path) {
|
|
385
|
+
conds.push('project_path = @project_path');
|
|
386
|
+
params.project_path = filter.project_path;
|
|
387
|
+
}
|
|
388
|
+
if (filter.since_ts !== undefined) {
|
|
389
|
+
conds.push('ts >= @since_ts');
|
|
390
|
+
params.since_ts = filter.since_ts;
|
|
391
|
+
}
|
|
392
|
+
if (filter.routed_to_name) {
|
|
393
|
+
conds.push('routed_to_name = @routed_to_name');
|
|
394
|
+
params.routed_to_name = filter.routed_to_name;
|
|
395
|
+
}
|
|
396
|
+
if (filter.obeyed !== undefined) {
|
|
397
|
+
if (filter.obeyed === null)
|
|
398
|
+
conds.push('obeyed IS NULL');
|
|
399
|
+
else {
|
|
400
|
+
conds.push('obeyed = @obeyed');
|
|
401
|
+
params.obeyed = filter.obeyed;
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
const where = conds.length > 0 ? `WHERE ${conds.join(' AND ')}` : '';
|
|
405
|
+
const limit = filter.limit ?? 100;
|
|
406
|
+
const rows = this.db.prepare(`SELECT * FROM routing_events ${where} ORDER BY ts DESC LIMIT ${limit}`).all(params);
|
|
407
|
+
return rows;
|
|
408
|
+
}
|
|
409
|
+
/** Pending events with NULL obeyed within the last N seconds; used by daemon restart recovery. */
|
|
410
|
+
findPendingRoutingEvents(ageMs) {
|
|
411
|
+
const cutoff = Date.now() - ageMs;
|
|
412
|
+
return this.db.prepare(`SELECT * FROM routing_events WHERE obeyed IS NULL AND ts >= ? ORDER BY ts DESC`).all(cutoff);
|
|
413
|
+
}
|
|
414
|
+
// ── Experiment Assignments (Phase 5) ───────────────────────────────────
|
|
415
|
+
getExperimentAssignment(sessionId, experimentId) {
|
|
416
|
+
const row = this.db.prepare(`SELECT group_id FROM experiment_assignments WHERE session_id = ? AND experiment_id = ?`).get(sessionId, experimentId);
|
|
417
|
+
return row ? row.group_id : null;
|
|
418
|
+
}
|
|
419
|
+
setExperimentAssignment(sessionId, experimentId, groupId) {
|
|
420
|
+
this.db.prepare(`INSERT OR IGNORE INTO experiment_assignments (session_id, experiment_id, group_id)
|
|
421
|
+
VALUES (?, ?, ?)`).run(sessionId, experimentId, groupId);
|
|
422
|
+
}
|
|
423
|
+
queryExperimentStats(experimentId) {
|
|
424
|
+
const rows = this.db.prepare(`
|
|
425
|
+
SELECT
|
|
426
|
+
experiment_group AS group_id,
|
|
427
|
+
COUNT(*) AS total,
|
|
428
|
+
SUM(CASE WHEN obeyed = 1 THEN 1 ELSE 0 END) AS obeyed,
|
|
429
|
+
SUM(CASE WHEN obeyed = 0 THEN 1 ELSE 0 END) AS refused,
|
|
430
|
+
SUM(CASE WHEN obeyed IS NULL THEN 1 ELSE 0 END) AS unknown,
|
|
431
|
+
AVG(classification_ms) AS avg_classification_ms
|
|
432
|
+
FROM routing_events
|
|
433
|
+
WHERE experiment_id = ? AND experiment_group IS NOT NULL
|
|
434
|
+
GROUP BY experiment_group
|
|
435
|
+
ORDER BY experiment_group ASC
|
|
436
|
+
`).all(experimentId);
|
|
437
|
+
return rows;
|
|
438
|
+
}
|
|
439
|
+
// ── Routing Rule States (Phase 5 Feature 2) ────────────────────────────
|
|
440
|
+
getRuleState(taskType, agent) {
|
|
441
|
+
const row = this.db.prepare(`SELECT * FROM routing_rule_states WHERE task_type = ? AND agent = ?`).get(taskType, agent);
|
|
442
|
+
return row ?? null;
|
|
443
|
+
}
|
|
444
|
+
listRuleStates(filter = {}) {
|
|
445
|
+
const where = filter.disabledOnly ? 'WHERE disabled = 1' : '';
|
|
446
|
+
return this.db
|
|
447
|
+
.prepare(`SELECT * FROM routing_rule_states ${where} ORDER BY task_type, agent`)
|
|
448
|
+
.all();
|
|
449
|
+
}
|
|
450
|
+
setRuleState(params) {
|
|
451
|
+
const now = new Date().toISOString();
|
|
452
|
+
this.db.prepare(`
|
|
453
|
+
INSERT INTO routing_rule_states (task_type, agent, disabled, disabled_at, disabled_reason, auto_disabled, updated_at)
|
|
454
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
455
|
+
ON CONFLICT(task_type, agent) DO UPDATE SET
|
|
456
|
+
disabled = excluded.disabled,
|
|
457
|
+
disabled_at = CASE WHEN excluded.disabled = 1 THEN excluded.disabled_at ELSE NULL END,
|
|
458
|
+
disabled_reason = CASE WHEN excluded.disabled = 1 THEN excluded.disabled_reason ELSE NULL END,
|
|
459
|
+
auto_disabled = excluded.auto_disabled,
|
|
460
|
+
updated_at = excluded.updated_at
|
|
461
|
+
`).run(params.taskType, params.agent, params.disabled ? 1 : 0, params.disabled ? now : null, params.disabled ? (params.reason ?? null) : null, params.autoDisabled ? 1 : 0, now);
|
|
462
|
+
}
|
|
463
|
+
/**
|
|
464
|
+
* Return a Set of "<taskType>__<agent>" strings that are currently disabled.
|
|
465
|
+
* Hot path used by the router on every decide() call.
|
|
466
|
+
*/
|
|
467
|
+
getDisabledRuleKeys() {
|
|
468
|
+
const rows = this.db.prepare(`SELECT task_type, agent FROM routing_rule_states WHERE disabled = 1`).all();
|
|
469
|
+
return new Set(rows.map(r => `${r.task_type}__${r.agent}`));
|
|
470
|
+
}
|
|
312
471
|
// ── Maintenance ────────────────────────────────────────────────────────
|
|
313
472
|
runMaintenance(maxSizeMb) {
|
|
314
473
|
const sizeMb = this.getDbSizeMb();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../../src/core/storage/sqlite.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../../src/core/storage/sqlite.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AutoDisableScheduler — periodically scans routing_events for persistent
|
|
3
|
+
* violation patterns and auto-disables the offending (taskType, agent) pair.
|
|
4
|
+
*
|
|
5
|
+
* Threshold (matches Web UI "critical" severity from Phase 3 Feature 3):
|
|
6
|
+
* - refusal_rate >= 0.8
|
|
7
|
+
* - total_attempts >= 10
|
|
8
|
+
* - pattern observed over the last 24 hours
|
|
9
|
+
*
|
|
10
|
+
* When such a pattern is detected, we set routing_rule_states.disabled = 1
|
|
11
|
+
* with auto_disabled = 1 so the router skips the rule and users can review
|
|
12
|
+
* / override in Web UI.
|
|
13
|
+
*
|
|
14
|
+
* Behavior:
|
|
15
|
+
* - Manual disables (auto_disabled = 0) are never touched.
|
|
16
|
+
* - Patterns already disabled are skipped.
|
|
17
|
+
* - Patterns that no longer meet the threshold are NOT auto-re-enabled —
|
|
18
|
+
* that is an explicit user decision. This avoids flapping.
|
|
19
|
+
*/
|
|
20
|
+
import type { SQLiteStorage } from '../core/storage/sqlite.js';
|
|
21
|
+
export interface AutoDisableOptions {
|
|
22
|
+
/** How often to scan (ms). Defaults to 1h. */
|
|
23
|
+
intervalMs?: number;
|
|
24
|
+
/** Analysis window (ms). Defaults to 24h. */
|
|
25
|
+
windowMs?: number;
|
|
26
|
+
/** Minimum sample size before a pattern can be auto-disabled. */
|
|
27
|
+
minAttempts?: number;
|
|
28
|
+
/** Refusal rate threshold (0-1). */
|
|
29
|
+
refusalRateThreshold?: number;
|
|
30
|
+
}
|
|
31
|
+
export declare class AutoDisableScheduler {
|
|
32
|
+
private storage;
|
|
33
|
+
private timer;
|
|
34
|
+
private intervalMs;
|
|
35
|
+
private windowMs;
|
|
36
|
+
private minAttempts;
|
|
37
|
+
private refusalRateThreshold;
|
|
38
|
+
constructor(storage: SQLiteStorage, opts?: AutoDisableOptions);
|
|
39
|
+
/** Start periodic scanning. Safe to call multiple times (idempotent). */
|
|
40
|
+
start(): void;
|
|
41
|
+
stop(): void;
|
|
42
|
+
/**
|
|
43
|
+
* Run one scan cycle. Exposed for tests and manual trigger (e.g. Web API).
|
|
44
|
+
* Returns the list of (taskType, agent) pairs that were newly auto-disabled.
|
|
45
|
+
*/
|
|
46
|
+
scanOnce(): Array<{
|
|
47
|
+
taskType: string;
|
|
48
|
+
agent: string;
|
|
49
|
+
refusalRate: number;
|
|
50
|
+
attempts: number;
|
|
51
|
+
}>;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=auto-disable-scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-disable-scheduler.d.ts","sourceRoot":"","sources":["../../src/daemon/auto-disable-scheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG/D,MAAM,WAAW,kBAAkB;IACjC,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AASD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,oBAAoB,CAAS;gBAEzB,OAAO,EAAE,aAAa,EAAE,IAAI,GAAE,kBAAuB;IAQjE,yEAAyE;IACzE,KAAK,IAAI,IAAI;IAcb,IAAI,IAAI,IAAI;IAOZ;;;OAGG;IACH,QAAQ,IAAI,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CAiD9F"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AutoDisableScheduler — periodically scans routing_events for persistent
|
|
3
|
+
* violation patterns and auto-disables the offending (taskType, agent) pair.
|
|
4
|
+
*
|
|
5
|
+
* Threshold (matches Web UI "critical" severity from Phase 3 Feature 3):
|
|
6
|
+
* - refusal_rate >= 0.8
|
|
7
|
+
* - total_attempts >= 10
|
|
8
|
+
* - pattern observed over the last 24 hours
|
|
9
|
+
*
|
|
10
|
+
* When such a pattern is detected, we set routing_rule_states.disabled = 1
|
|
11
|
+
* with auto_disabled = 1 so the router skips the rule and users can review
|
|
12
|
+
* / override in Web UI.
|
|
13
|
+
*
|
|
14
|
+
* Behavior:
|
|
15
|
+
* - Manual disables (auto_disabled = 0) are never touched.
|
|
16
|
+
* - Patterns already disabled are skipped.
|
|
17
|
+
* - Patterns that no longer meet the threshold are NOT auto-re-enabled —
|
|
18
|
+
* that is an explicit user decision. This avoids flapping.
|
|
19
|
+
*/
|
|
20
|
+
import { logger } from '../core/utils/logger.js';
|
|
21
|
+
export class AutoDisableScheduler {
|
|
22
|
+
storage;
|
|
23
|
+
timer = null;
|
|
24
|
+
intervalMs;
|
|
25
|
+
windowMs;
|
|
26
|
+
minAttempts;
|
|
27
|
+
refusalRateThreshold;
|
|
28
|
+
constructor(storage, opts = {}) {
|
|
29
|
+
this.storage = storage;
|
|
30
|
+
this.intervalMs = opts.intervalMs ?? 60 * 60 * 1000; // 1h
|
|
31
|
+
this.windowMs = opts.windowMs ?? 24 * 60 * 60 * 1000; // 24h
|
|
32
|
+
this.minAttempts = opts.minAttempts ?? 10;
|
|
33
|
+
this.refusalRateThreshold = opts.refusalRateThreshold ?? 0.8;
|
|
34
|
+
}
|
|
35
|
+
/** Start periodic scanning. Safe to call multiple times (idempotent). */
|
|
36
|
+
start() {
|
|
37
|
+
if (this.timer)
|
|
38
|
+
return;
|
|
39
|
+
// Do not run immediately — give daemon startup time to stabilize.
|
|
40
|
+
this.timer = setInterval(() => {
|
|
41
|
+
try {
|
|
42
|
+
this.scanOnce();
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
logger.warn(`[AutoDisable] Scan failed: ${err}`);
|
|
46
|
+
}
|
|
47
|
+
}, this.intervalMs);
|
|
48
|
+
if (typeof this.timer.unref === 'function')
|
|
49
|
+
this.timer.unref();
|
|
50
|
+
logger.info(`[AutoDisable] Scheduler started (interval=${this.intervalMs}ms, window=${this.windowMs}ms)`);
|
|
51
|
+
}
|
|
52
|
+
stop() {
|
|
53
|
+
if (this.timer) {
|
|
54
|
+
clearInterval(this.timer);
|
|
55
|
+
this.timer = null;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Run one scan cycle. Exposed for tests and manual trigger (e.g. Web API).
|
|
60
|
+
* Returns the list of (taskType, agent) pairs that were newly auto-disabled.
|
|
61
|
+
*/
|
|
62
|
+
scanOnce() {
|
|
63
|
+
const since = Date.now() - this.windowMs;
|
|
64
|
+
const events = this.storage.queryRoutingEvents({ since_ts: since, limit: 10000 });
|
|
65
|
+
const patterns = new Map();
|
|
66
|
+
for (const e of events) {
|
|
67
|
+
if (!e.is_forced || e.obeyed === null || e.obeyed === undefined)
|
|
68
|
+
continue;
|
|
69
|
+
if (!e.routed_to_name)
|
|
70
|
+
continue;
|
|
71
|
+
let taskType = 'unknown';
|
|
72
|
+
try {
|
|
73
|
+
const parsed = JSON.parse(e.intent_json ?? '{}');
|
|
74
|
+
if (typeof parsed.taskType === 'string')
|
|
75
|
+
taskType = parsed.taskType;
|
|
76
|
+
}
|
|
77
|
+
catch { /* ignore */ }
|
|
78
|
+
const key = `${taskType}__${e.routed_to_name}`;
|
|
79
|
+
const agg = patterns.get(key) ?? {
|
|
80
|
+
taskType,
|
|
81
|
+
agent: e.routed_to_name,
|
|
82
|
+
attempts: 0,
|
|
83
|
+
refusals: 0,
|
|
84
|
+
};
|
|
85
|
+
agg.attempts++;
|
|
86
|
+
if (e.obeyed === 0)
|
|
87
|
+
agg.refusals++;
|
|
88
|
+
patterns.set(key, agg);
|
|
89
|
+
}
|
|
90
|
+
const newlyDisabled = [];
|
|
91
|
+
for (const p of patterns.values()) {
|
|
92
|
+
if (p.attempts < this.minAttempts)
|
|
93
|
+
continue;
|
|
94
|
+
const rate = p.refusals / p.attempts;
|
|
95
|
+
if (rate < this.refusalRateThreshold)
|
|
96
|
+
continue;
|
|
97
|
+
const existing = this.storage.getRuleState(p.taskType, p.agent);
|
|
98
|
+
if (existing && existing.disabled === 1)
|
|
99
|
+
continue; // already disabled (manual or auto)
|
|
100
|
+
const reason = `自动禁用: 最近 ${Math.round(this.windowMs / 3600000)} 小时违抗率 ${(rate * 100).toFixed(1)}% (${p.refusals}/${p.attempts})`;
|
|
101
|
+
this.storage.setRuleState({
|
|
102
|
+
taskType: p.taskType,
|
|
103
|
+
agent: p.agent,
|
|
104
|
+
disabled: true,
|
|
105
|
+
reason,
|
|
106
|
+
autoDisabled: true,
|
|
107
|
+
});
|
|
108
|
+
newlyDisabled.push({ taskType: p.taskType, agent: p.agent, refusalRate: rate, attempts: p.attempts });
|
|
109
|
+
logger.warn(`[AutoDisable] Disabled rule ${p.taskType}__${p.agent}: ${reason}`);
|
|
110
|
+
}
|
|
111
|
+
return newlyDisabled;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=auto-disable-scheduler.js.map
|