@jmtrin/opencode-kevin 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +582 -580
- package/dist/migrations/001_initial.sql +91 -91
- package/dist/migrations/003_v02_signal.sql +57 -57
- package/dist/migrations/004_v03_knowledge.sql +138 -138
- package/dist/migrations/005_v04_signal.sql +57 -57
- package/dist/migrations/006_v05_glassbox.sql +118 -118
- package/dist/migrations/007_v06_pull.sql +144 -144
- package/dist/migrations/008_v07_truth.sql +124 -0
- package/dist/plugin/ConflictDetector.d.ts +35 -0
- package/dist/plugin/ConflictDetector.js +283 -0
- package/dist/plugin/ConflictDetector.js.map +1 -0
- package/dist/plugin/ConventionMiner.d.ts +35 -0
- package/dist/plugin/ConventionMiner.js +243 -0
- package/dist/plugin/ConventionMiner.js.map +1 -0
- package/dist/plugin/Curator.js +45 -14
- package/dist/plugin/Curator.js.map +1 -1
- package/dist/plugin/MemoryService.d.ts +18 -0
- package/dist/plugin/MemoryService.js +92 -2
- package/dist/plugin/MemoryService.js.map +1 -1
- package/dist/plugin/Migrate.js +31 -2
- package/dist/plugin/Migrate.js.map +1 -1
- package/dist/plugin/Reflector.js +13 -0
- package/dist/plugin/Reflector.js.map +1 -1
- package/dist/plugin/RepoTruth.d.ts +80 -0
- package/dist/plugin/RepoTruth.js +600 -0
- package/dist/plugin/RepoTruth.js.map +1 -0
- package/dist/plugin/Retrospective.js +8 -0
- package/dist/plugin/Retrospective.js.map +1 -1
- package/dist/plugin/index.d.ts +7 -2
- package/dist/plugin/index.js +135 -2
- package/dist/plugin/index.js.map +1 -1
- package/dist/plugin/kevin_audit.d.ts +41 -1
- package/dist/plugin/kevin_audit.js +98 -3
- package/dist/plugin/kevin_audit.js.map +1 -1
- package/dist/plugin/kevin_conflicts.d.ts +9 -0
- package/dist/plugin/kevin_conflicts.js +51 -0
- package/dist/plugin/kevin_conflicts.js.map +1 -0
- package/dist/plugin/kevin_facts.d.ts +42 -0
- package/dist/plugin/kevin_facts.js +37 -0
- package/dist/plugin/kevin_facts.js.map +1 -0
- package/dist/plugin/metrics.d.ts +3 -3
- package/dist/plugin/metrics.js +12 -2
- package/dist/plugin/metrics.js.map +1 -1
- package/dist/plugin/replay-types.d.ts +2 -2
- package/migrations/001_initial.sql +91 -91
- package/migrations/003_v02_signal.sql +57 -57
- package/migrations/004_v03_knowledge.sql +138 -138
- package/migrations/005_v04_signal.sql +57 -57
- package/migrations/006_v05_glassbox.sql +118 -118
- package/migrations/007_v06_pull.sql +144 -144
- package/migrations/008_v07_truth.sql +124 -0
- package/package.json +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kevin_audit.js","sourceRoot":"","sources":["../../plugin/kevin_audit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"kevin_audit.js","sourceRoot":"","sources":["../../plugin/kevin_audit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ConflictDetector } from "./ConflictDetector.js";
|
|
2
|
+
import type { Store } from "./Store.js";
|
|
3
|
+
export interface KevinConflictsDeps {
|
|
4
|
+
store: Store;
|
|
5
|
+
detector: ConflictDetector;
|
|
6
|
+
projectId: string;
|
|
7
|
+
}
|
|
8
|
+
export type ConflictAction = "list" | "acknowledge" | "resolve";
|
|
9
|
+
export declare function executeKevinConflicts(deps: KevinConflictsDeps, action: ConflictAction, id?: string, keep?: string, requestedStatus?: "open" | "acknowledged" | "resolved"): Record<string, unknown>;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export function executeKevinConflicts(deps, action, id, keep, requestedStatus) {
|
|
2
|
+
if (action === "acknowledge") {
|
|
3
|
+
if (!id)
|
|
4
|
+
return { error: "missing_id" };
|
|
5
|
+
// Mirror resolve()'s honesty: acknowledging a nonexistent or foreign id
|
|
6
|
+
// must not be reported as a success.
|
|
7
|
+
const row = deps.store
|
|
8
|
+
.prepare("SELECT id FROM memory_conflicts WHERE id = ? AND project_id = ?")
|
|
9
|
+
.get(id, deps.projectId);
|
|
10
|
+
if (!row)
|
|
11
|
+
return { error: "not_found", id };
|
|
12
|
+
deps.detector.acknowledge(id);
|
|
13
|
+
return { id, status: "acknowledged" };
|
|
14
|
+
}
|
|
15
|
+
if (action === "resolve") {
|
|
16
|
+
if (!id || !keep)
|
|
17
|
+
return { error: "missing_id_or_keep" };
|
|
18
|
+
const row = deps.store
|
|
19
|
+
.prepare("SELECT memory_a, memory_b FROM memory_conflicts WHERE id = ? AND project_id = ?")
|
|
20
|
+
.get(id, deps.projectId);
|
|
21
|
+
if (!row)
|
|
22
|
+
return { error: "not_found", id };
|
|
23
|
+
if (keep !== row.memory_a && keep !== row.memory_b) {
|
|
24
|
+
return { error: "invalid_keep", id, keep };
|
|
25
|
+
}
|
|
26
|
+
deps.detector.resolve(id, keep);
|
|
27
|
+
return {
|
|
28
|
+
id,
|
|
29
|
+
status: "resolved",
|
|
30
|
+
kept: keep,
|
|
31
|
+
other: keep === row.memory_a ? row.memory_b : row.memory_a,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
const status = requestedStatus ?? "open";
|
|
35
|
+
const rows = deps.store
|
|
36
|
+
.prepare(`SELECT id, kind, memory_a, memory_b, fact_id, detail, status, detected_at
|
|
37
|
+
FROM memory_conflicts WHERE project_id = ? AND status = ?
|
|
38
|
+
ORDER BY detected_at, id`)
|
|
39
|
+
.all(deps.projectId, status);
|
|
40
|
+
const counts = deps.store
|
|
41
|
+
.prepare(`SELECT status, COUNT(*) AS n FROM memory_conflicts
|
|
42
|
+
WHERE project_id = ? GROUP BY status`)
|
|
43
|
+
.all(deps.projectId);
|
|
44
|
+
return {
|
|
45
|
+
open: counts.find((row) => row.status === "open")?.n ?? 0,
|
|
46
|
+
acknowledged: counts.find((row) => row.status === "acknowledged")?.n ?? 0,
|
|
47
|
+
resolved: counts.find((row) => row.status === "resolved")?.n ?? 0,
|
|
48
|
+
conflicts: rows,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=kevin_conflicts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kevin_conflicts.js","sourceRoot":"","sources":["../../plugin/kevin_conflicts.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,qBAAqB,CACpC,IAAwB,EACxB,MAAsB,EACtB,EAAW,EACX,IAAa,EACb,eAAsD;IAEtD,IAAI,MAAM,KAAK,aAAa,EAAE,CAAC;QAC9B,IAAI,CAAC,EAAE;YAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;QACxC,wEAAwE;QACxE,qCAAqC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK;aACpB,OAAO,CACP,iEAAiE,CACjE;aACA,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1B,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;IACvC,CAAC;IACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAC1B,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;QACzD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK;aACpB,OAAO,CACP,iFAAiF,CACjF;aACA,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAEZ,CAAC;QACb,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QAC5C,IAAI,IAAI,KAAK,GAAG,CAAC,QAAQ,IAAI,IAAI,KAAK,GAAG,CAAC,QAAQ,EAAE,CAAC;YACpD,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAChC,OAAO;YACN,EAAE;YACF,MAAM,EAAE,UAAU;YAClB,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,IAAI,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ;SAC1D,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAG,eAAe,IAAI,MAAM,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK;SACrB,OAAO,CACP;;6BAE0B,CAC1B;SACA,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAmC,CAAC;IAChE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK;SACvB,OAAO,CACP;yCACsC,CACtC;SACA,GAAG,CAAC,IAAI,CAAC,SAAS,CAAoC,CAAC;IACzD,OAAO;QACN,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;QACzD,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC;QACzE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC;QACjE,SAAS,EAAE,IAAI;KACf,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { MemoryService } from "./MemoryService.js";
|
|
2
|
+
import type { RepoTruth } from "./RepoTruth.js";
|
|
3
|
+
import type { Store } from "./Store.js";
|
|
4
|
+
/**
|
|
5
|
+
* v0.7.0 (K7-009 / plan §5.7) — `kevin_facts`.
|
|
6
|
+
*
|
|
7
|
+
* The user-facing answer to "why did Kevin stop suggesting that?". Lists the
|
|
8
|
+
* repository facts the current project was scanned for and every memory that
|
|
9
|
+
* was de-ranked by a contradiction, with its `truth_penalty`, `contradicted_at`
|
|
10
|
+
* and the human-readable reasons. Pure read apart from the optional re-scan. No
|
|
11
|
+
* LLM, no network, no hot-path cost.
|
|
12
|
+
*/
|
|
13
|
+
export interface KevinFactsDeps {
|
|
14
|
+
store: Store;
|
|
15
|
+
memoryService: MemoryService;
|
|
16
|
+
repoTruth: RepoTruth;
|
|
17
|
+
projectId: string;
|
|
18
|
+
}
|
|
19
|
+
export interface PenalizedMemory {
|
|
20
|
+
id: string;
|
|
21
|
+
type: string;
|
|
22
|
+
truth_penalty: number;
|
|
23
|
+
contradicted_at: string | null;
|
|
24
|
+
reasons: string[];
|
|
25
|
+
}
|
|
26
|
+
export interface KevinFactsResult {
|
|
27
|
+
project_id: string;
|
|
28
|
+
scanned_at: string | null;
|
|
29
|
+
truncated: {
|
|
30
|
+
is_truncated: true;
|
|
31
|
+
count: number;
|
|
32
|
+
} | {
|
|
33
|
+
is_truncated: false;
|
|
34
|
+
};
|
|
35
|
+
facts: {
|
|
36
|
+
file: string;
|
|
37
|
+
key_path: string;
|
|
38
|
+
value: string;
|
|
39
|
+
}[];
|
|
40
|
+
penalized: PenalizedMemory[];
|
|
41
|
+
}
|
|
42
|
+
export declare function buildKevinFacts(deps: KevinFactsDeps, refresh: boolean): KevinFactsResult;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export function buildKevinFacts(deps, refresh) {
|
|
2
|
+
if (refresh)
|
|
3
|
+
deps.repoTruth.scan();
|
|
4
|
+
// Penalized memories: scoped to the project, only those with a penalty.
|
|
5
|
+
const rows = deps.store
|
|
6
|
+
.prepare(`SELECT id, type, truth_penalty, contradicted_at
|
|
7
|
+
FROM memories
|
|
8
|
+
WHERE project_id = ? AND truth_penalty > 0
|
|
9
|
+
ORDER BY created_at`)
|
|
10
|
+
.all(deps.projectId);
|
|
11
|
+
const penalized = rows.map((r) => {
|
|
12
|
+
const mem = deps.memoryService.getById(r.id);
|
|
13
|
+
return {
|
|
14
|
+
id: r.id,
|
|
15
|
+
type: r.type,
|
|
16
|
+
truth_penalty: r.truth_penalty,
|
|
17
|
+
contradicted_at: r.contradicted_at,
|
|
18
|
+
reasons: mem ? deps.repoTruth.contradictions(mem) : [],
|
|
19
|
+
};
|
|
20
|
+
});
|
|
21
|
+
const stored = deps.repoTruth.facts();
|
|
22
|
+
const truncatedFact = stored.find((f) => f.keyPath === "_truncated");
|
|
23
|
+
const facts = stored
|
|
24
|
+
.filter((f) => f.keyPath !== "_truncated")
|
|
25
|
+
.map((f) => ({ file: f.file, key_path: f.keyPath, value: f.value }));
|
|
26
|
+
const scanned_at = deps.repoTruth.scannedAt();
|
|
27
|
+
return {
|
|
28
|
+
project_id: deps.projectId,
|
|
29
|
+
scanned_at,
|
|
30
|
+
truncated: truncatedFact
|
|
31
|
+
? { is_truncated: true, count: Number(truncatedFact.value) || 0 }
|
|
32
|
+
: { is_truncated: false },
|
|
33
|
+
facts,
|
|
34
|
+
penalized,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=kevin_facts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kevin_facts.js","sourceRoot":"","sources":["../../plugin/kevin_facts.ts"],"names":[],"mappings":"AAoCA,MAAM,UAAU,eAAe,CAC9B,IAAoB,EACpB,OAAgB;IAEhB,IAAI,OAAO;QAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IAEnC,wEAAwE;IACxE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK;SACrB,OAAO,CACP;;;wBAGqB,CACrB;SACA,GAAG,CAAC,IAAI,CAAC,SAAS,CAKjB,CAAC;IACJ,MAAM,SAAS,GAAsB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACnD,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7C,OAAO;YACN,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,aAAa,EAAE,CAAC,CAAC,aAAa;YAC9B,eAAe,EAAE,CAAC,CAAC,eAAe;YAClC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;SACtD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACtC,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,YAAY,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,MAAM;SAClB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,YAAY,CAAC;SACzC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAEtE,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;IAE9C,OAAO;QACN,UAAU,EAAE,IAAI,CAAC,SAAS;QAC1B,UAAU;QACV,SAAS,EAAE,aAAa;YACvB,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACjE,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE;QAC1B,KAAK;QACL,SAAS;KACT,CAAC;AACH,CAAC"}
|
package/dist/plugin/metrics.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ import type { Store } from "./Store.js";
|
|
|
6
6
|
* underlying table is empty (e.g., before 003 is applied, on a fresh
|
|
7
7
|
* :memory: test DB, or after a manual wipe).
|
|
8
8
|
*/
|
|
9
|
-
export declare const METRIC_KEYS: readonly ["tokens_injected_pre_prompt", "tokens_injected_compacting", "reflections_throttled", "duplicate_suppressions", "tool_calls_deduped", "patterns_mined", "patterns_causal", "causal_links", "memories_superseded", "injections_total", "injections_effective", "injections_ineffective", "patterns_promoted_new", "injections_inconclusive", "injections_blocked_seen", "injections_blocked_weak", "injections_blocked_recurrence", "injections_blocked_stale", "injections_blocked_ignored", "feedback_positive_total", "feedback_negative_total", "memories_archived", "proposals_created", "proposals_approved", "proposals_rejected", "artifact_writes_total", "artifact_writes_noop", "injections_blocked_confidence"];
|
|
9
|
+
export declare const METRIC_KEYS: readonly ["tokens_injected_pre_prompt", "tokens_injected_compacting", "reflections_throttled", "duplicate_suppressions", "tool_calls_deduped", "patterns_mined", "patterns_causal", "causal_links", "memories_superseded", "injections_total", "injections_effective", "injections_ineffective", "patterns_promoted_new", "injections_inconclusive", "injections_blocked_seen", "injections_blocked_weak", "injections_blocked_recurrence", "injections_blocked_stale", "injections_blocked_ignored", "feedback_positive_total", "feedback_negative_total", "memories_archived", "proposals_created", "proposals_approved", "proposals_rejected", "artifact_writes_total", "artifact_writes_noop", "injections_blocked_confidence", "repo_facts_scanned", "memories_contradicted", "conventions_mined", "conflicts_detected", "error_lessons_suppressed"];
|
|
10
10
|
export type MetricKey = (typeof METRIC_KEYS)[number];
|
|
11
11
|
/**
|
|
12
12
|
* Cheap token estimate used when bumping the `tokens_injected_*` counters.
|
|
@@ -37,8 +37,8 @@ export declare class Metrics {
|
|
|
37
37
|
incr(key: MetricKey, by?: number): void;
|
|
38
38
|
/**
|
|
39
39
|
* v0.6.0 (K6-018/019 / plan §5.8) — the pull-channel registration
|
|
40
|
-
* counters. These live OUTSIDE `METRIC_KEYS`, which is frozen at
|
|
41
|
-
* (
|
|
40
|
+
* counters. These live OUTSIDE `METRIC_KEYS`, which is frozen at 33
|
|
41
|
+
* (K7-004 acceptance, the verified cumulative ladder), but persist to
|
|
42
42
|
* the same `kevin_metrics` table so `kevin_audit`'s channels block can
|
|
43
43
|
* read them by SQL (K6-023). They are written immediately (no debounce):
|
|
44
44
|
* they change at most twice per process, on session start.
|
package/dist/plugin/metrics.js
CHANGED
|
@@ -38,6 +38,16 @@ export const METRIC_KEYS = [
|
|
|
38
38
|
"artifact_writes_total",
|
|
39
39
|
"artifact_writes_noop",
|
|
40
40
|
"injections_blocked_confidence",
|
|
41
|
+
// v0.7.0 (K7-004 / plan §8.3) — order matches migration 008's seed block.
|
|
42
|
+
// These are the Project Truth counters. No per-type precision helper is
|
|
43
|
+
// exported here: the per-type split of plan §5.6 lives in `kevin_audit`
|
|
44
|
+
// as pure SQL, not as a `Metrics` method, so there is never a second
|
|
45
|
+
// definition of precision to drift from the first (D7-14).
|
|
46
|
+
"repo_facts_scanned",
|
|
47
|
+
"memories_contradicted",
|
|
48
|
+
"conventions_mined",
|
|
49
|
+
"conflicts_detected",
|
|
50
|
+
"error_lessons_suppressed",
|
|
41
51
|
];
|
|
42
52
|
const DEFAULT_FLUSH_MS = 1000;
|
|
43
53
|
function zeroCache() {
|
|
@@ -107,8 +117,8 @@ export class Metrics {
|
|
|
107
117
|
}
|
|
108
118
|
/**
|
|
109
119
|
* v0.6.0 (K6-018/019 / plan §5.8) — the pull-channel registration
|
|
110
|
-
* counters. These live OUTSIDE `METRIC_KEYS`, which is frozen at
|
|
111
|
-
* (
|
|
120
|
+
* counters. These live OUTSIDE `METRIC_KEYS`, which is frozen at 33
|
|
121
|
+
* (K7-004 acceptance, the verified cumulative ladder), but persist to
|
|
112
122
|
* the same `kevin_metrics` table so `kevin_audit`'s channels block can
|
|
113
123
|
* read them by SQL (K6-023). They are written immediately (no debounce):
|
|
114
124
|
* they change at most twice per process, on session start.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../plugin/metrics.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IAC1B,4BAA4B;IAC5B,4BAA4B;IAC5B,uBAAuB;IACvB,wBAAwB;IACxB,oBAAoB;IACpB,gBAAgB;IAChB,iBAAiB;IACjB,cAAc;IACd,qBAAqB;IACrB,kBAAkB;IAClB,sBAAsB;IACtB,wBAAwB;IACxB,uBAAuB;IACvB,0EAA0E;IAC1E,yBAAyB;IACzB,yBAAyB;IACzB,yBAAyB;IACzB,+BAA+B;IAC/B,0BAA0B;IAC1B,4BAA4B;IAC5B,yBAAyB;IACzB,yBAAyB;IACzB,mBAAmB;IACnB,0EAA0E;IAC1E,mEAAmE;IACnE,iEAAiE;IACjE,mBAAmB;IACnB,oBAAoB;IACpB,oBAAoB;IACpB,uBAAuB;IACvB,sBAAsB;IACtB,+BAA+B;
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../plugin/metrics.ts"],"names":[],"mappings":"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"}
|
|
@@ -236,8 +236,8 @@ export declare const replayTranscriptSchema: z.ZodObject<{
|
|
|
236
236
|
kind: "session.idle";
|
|
237
237
|
}>]>, "many">;
|
|
238
238
|
}, "strip", z.ZodTypeAny, {
|
|
239
|
-
version: 1;
|
|
240
239
|
name: string;
|
|
240
|
+
version: 1;
|
|
241
241
|
events: ({
|
|
242
242
|
at: string;
|
|
243
243
|
sessionId: string;
|
|
@@ -277,8 +277,8 @@ export declare const replayTranscriptSchema: z.ZodObject<{
|
|
|
277
277
|
kind: "session.idle";
|
|
278
278
|
})[];
|
|
279
279
|
}, {
|
|
280
|
-
version: 1;
|
|
281
280
|
name: string;
|
|
281
|
+
version: 1;
|
|
282
282
|
events: ({
|
|
283
283
|
at: string;
|
|
284
284
|
sessionId: string;
|
|
@@ -1,92 +1,92 @@
|
|
|
1
|
-
-- ============================================================
|
|
2
|
-
-- Kevin 0.1.0 — Schema inicial
|
|
3
|
-
-- ============================================================
|
|
4
|
-
|
|
5
|
-
-- Tabla de versiones para migraciones
|
|
6
|
-
CREATE TABLE IF NOT EXISTS schema_version (
|
|
7
|
-
version TEXT PRIMARY KEY,
|
|
8
|
-
applied_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
9
|
-
);
|
|
10
|
-
|
|
11
|
-
-- ============================================================
|
|
12
|
-
-- memories: lecciones aprendidas
|
|
13
|
-
-- ============================================================
|
|
14
|
-
CREATE TABLE IF NOT EXISTS memories (
|
|
15
|
-
id TEXT PRIMARY KEY,
|
|
16
|
-
type TEXT NOT NULL CHECK(type IN ('error', 'pattern', 'decision', 'context')),
|
|
17
|
-
content TEXT NOT NULL,
|
|
18
|
-
scope TEXT NOT NULL DEFAULT 'project' CHECK(scope IN ('project', 'session')),
|
|
19
|
-
relevance_score REAL DEFAULT 0.5,
|
|
20
|
-
source_tool TEXT,
|
|
21
|
-
source_session TEXT,
|
|
22
|
-
metadata TEXT,
|
|
23
|
-
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
24
|
-
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
25
|
-
expires_at TEXT
|
|
26
|
-
);
|
|
27
|
-
|
|
28
|
-
CREATE INDEX IF NOT EXISTS idx_memories_type ON memories(type);
|
|
29
|
-
CREATE INDEX IF NOT EXISTS idx_memories_scope ON memories(scope);
|
|
30
|
-
CREATE INDEX IF NOT EXISTS idx_memories_relevance ON memories(relevance_score DESC);
|
|
31
|
-
CREATE INDEX IF NOT EXISTS idx_memories_created ON memories(created_at);
|
|
32
|
-
|
|
33
|
-
-- FTS5: búsqueda full-text con remoción de diacríticos (mejor para español)
|
|
34
|
-
CREATE VIRTUAL TABLE IF NOT EXISTS memories_fts USING fts5(
|
|
35
|
-
content,
|
|
36
|
-
content='memories',
|
|
37
|
-
tokenize='unicode61 remove_diacritics 1'
|
|
38
|
-
);
|
|
39
|
-
|
|
40
|
-
-- Triggers para mantener FTS5 sincronizado (FTS5 external-content se indexa por rowid)
|
|
41
|
-
CREATE TRIGGER IF NOT EXISTS memories_ai AFTER INSERT ON memories BEGIN
|
|
42
|
-
INSERT INTO memories_fts(rowid, content) VALUES (new.rowid, new.content);
|
|
43
|
-
END;
|
|
44
|
-
|
|
45
|
-
CREATE TRIGGER IF NOT EXISTS memories_ad AFTER DELETE ON memories BEGIN
|
|
46
|
-
INSERT INTO memories_fts(memories_fts, rowid, content) VALUES ('delete', old.rowid, old.content);
|
|
47
|
-
END;
|
|
48
|
-
|
|
49
|
-
CREATE TRIGGER IF NOT EXISTS memories_au AFTER UPDATE ON memories BEGIN
|
|
50
|
-
INSERT INTO memories_fts(memories_fts, rowid, content) VALUES ('delete', old.rowid, old.content);
|
|
51
|
-
INSERT INTO memories_fts(rowid, content) VALUES (new.rowid, new.content);
|
|
52
|
-
END;
|
|
53
|
-
|
|
54
|
-
-- ============================================================
|
|
55
|
-
-- tool_calls: observación de tool calls del agente
|
|
56
|
-
-- ============================================================
|
|
57
|
-
CREATE TABLE IF NOT EXISTS tool_calls (
|
|
58
|
-
id TEXT PRIMARY KEY,
|
|
59
|
-
session_id TEXT NOT NULL,
|
|
60
|
-
ts TEXT NOT NULL DEFAULT (datetime('now')),
|
|
61
|
-
tool TEXT NOT NULL,
|
|
62
|
-
args_summary TEXT,
|
|
63
|
-
success INTEGER NOT NULL CHECK(success IN (0,1)),
|
|
64
|
-
duration_ms INTEGER,
|
|
65
|
-
agent TEXT,
|
|
66
|
-
error_type TEXT,
|
|
67
|
-
metadata TEXT
|
|
68
|
-
);
|
|
69
|
-
|
|
70
|
-
CREATE INDEX IF NOT EXISTS idx_tool_calls_session ON tool_calls(session_id);
|
|
71
|
-
CREATE INDEX IF NOT EXISTS idx_tool_calls_tool ON tool_calls(tool);
|
|
72
|
-
CREATE INDEX IF NOT EXISTS idx_tool_calls_ts ON tool_calls(ts);
|
|
73
|
-
CREATE INDEX IF NOT EXISTS idx_tool_calls_success ON tool_calls(success);
|
|
74
|
-
|
|
75
|
-
-- ============================================================
|
|
76
|
-
-- retrospectives: resúmenes de sesión
|
|
77
|
-
-- ============================================================
|
|
78
|
-
CREATE TABLE IF NOT EXISTS retrospectives (
|
|
79
|
-
id TEXT PRIMARY KEY,
|
|
80
|
-
session_id TEXT NOT NULL,
|
|
81
|
-
ts TEXT NOT NULL DEFAULT (datetime('now')),
|
|
82
|
-
failure_count INTEGER DEFAULT 0,
|
|
83
|
-
success_count INTEGER DEFAULT 0,
|
|
84
|
-
lessons_count INTEGER DEFAULT 0,
|
|
85
|
-
file_path TEXT,
|
|
86
|
-
metadata TEXT
|
|
87
|
-
);
|
|
88
|
-
|
|
89
|
-
-- ============================================================
|
|
90
|
-
-- Seed: versión inicial
|
|
91
|
-
-- ============================================================
|
|
1
|
+
-- ============================================================
|
|
2
|
+
-- Kevin 0.1.0 — Schema inicial
|
|
3
|
+
-- ============================================================
|
|
4
|
+
|
|
5
|
+
-- Tabla de versiones para migraciones
|
|
6
|
+
CREATE TABLE IF NOT EXISTS schema_version (
|
|
7
|
+
version TEXT PRIMARY KEY,
|
|
8
|
+
applied_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
9
|
+
);
|
|
10
|
+
|
|
11
|
+
-- ============================================================
|
|
12
|
+
-- memories: lecciones aprendidas
|
|
13
|
+
-- ============================================================
|
|
14
|
+
CREATE TABLE IF NOT EXISTS memories (
|
|
15
|
+
id TEXT PRIMARY KEY,
|
|
16
|
+
type TEXT NOT NULL CHECK(type IN ('error', 'pattern', 'decision', 'context')),
|
|
17
|
+
content TEXT NOT NULL,
|
|
18
|
+
scope TEXT NOT NULL DEFAULT 'project' CHECK(scope IN ('project', 'session')),
|
|
19
|
+
relevance_score REAL DEFAULT 0.5,
|
|
20
|
+
source_tool TEXT,
|
|
21
|
+
source_session TEXT,
|
|
22
|
+
metadata TEXT,
|
|
23
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
24
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
25
|
+
expires_at TEXT
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
CREATE INDEX IF NOT EXISTS idx_memories_type ON memories(type);
|
|
29
|
+
CREATE INDEX IF NOT EXISTS idx_memories_scope ON memories(scope);
|
|
30
|
+
CREATE INDEX IF NOT EXISTS idx_memories_relevance ON memories(relevance_score DESC);
|
|
31
|
+
CREATE INDEX IF NOT EXISTS idx_memories_created ON memories(created_at);
|
|
32
|
+
|
|
33
|
+
-- FTS5: búsqueda full-text con remoción de diacríticos (mejor para español)
|
|
34
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS memories_fts USING fts5(
|
|
35
|
+
content,
|
|
36
|
+
content='memories',
|
|
37
|
+
tokenize='unicode61 remove_diacritics 1'
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
-- Triggers para mantener FTS5 sincronizado (FTS5 external-content se indexa por rowid)
|
|
41
|
+
CREATE TRIGGER IF NOT EXISTS memories_ai AFTER INSERT ON memories BEGIN
|
|
42
|
+
INSERT INTO memories_fts(rowid, content) VALUES (new.rowid, new.content);
|
|
43
|
+
END;
|
|
44
|
+
|
|
45
|
+
CREATE TRIGGER IF NOT EXISTS memories_ad AFTER DELETE ON memories BEGIN
|
|
46
|
+
INSERT INTO memories_fts(memories_fts, rowid, content) VALUES ('delete', old.rowid, old.content);
|
|
47
|
+
END;
|
|
48
|
+
|
|
49
|
+
CREATE TRIGGER IF NOT EXISTS memories_au AFTER UPDATE ON memories BEGIN
|
|
50
|
+
INSERT INTO memories_fts(memories_fts, rowid, content) VALUES ('delete', old.rowid, old.content);
|
|
51
|
+
INSERT INTO memories_fts(rowid, content) VALUES (new.rowid, new.content);
|
|
52
|
+
END;
|
|
53
|
+
|
|
54
|
+
-- ============================================================
|
|
55
|
+
-- tool_calls: observación de tool calls del agente
|
|
56
|
+
-- ============================================================
|
|
57
|
+
CREATE TABLE IF NOT EXISTS tool_calls (
|
|
58
|
+
id TEXT PRIMARY KEY,
|
|
59
|
+
session_id TEXT NOT NULL,
|
|
60
|
+
ts TEXT NOT NULL DEFAULT (datetime('now')),
|
|
61
|
+
tool TEXT NOT NULL,
|
|
62
|
+
args_summary TEXT,
|
|
63
|
+
success INTEGER NOT NULL CHECK(success IN (0,1)),
|
|
64
|
+
duration_ms INTEGER,
|
|
65
|
+
agent TEXT,
|
|
66
|
+
error_type TEXT,
|
|
67
|
+
metadata TEXT
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
CREATE INDEX IF NOT EXISTS idx_tool_calls_session ON tool_calls(session_id);
|
|
71
|
+
CREATE INDEX IF NOT EXISTS idx_tool_calls_tool ON tool_calls(tool);
|
|
72
|
+
CREATE INDEX IF NOT EXISTS idx_tool_calls_ts ON tool_calls(ts);
|
|
73
|
+
CREATE INDEX IF NOT EXISTS idx_tool_calls_success ON tool_calls(success);
|
|
74
|
+
|
|
75
|
+
-- ============================================================
|
|
76
|
+
-- retrospectives: resúmenes de sesión
|
|
77
|
+
-- ============================================================
|
|
78
|
+
CREATE TABLE IF NOT EXISTS retrospectives (
|
|
79
|
+
id TEXT PRIMARY KEY,
|
|
80
|
+
session_id TEXT NOT NULL,
|
|
81
|
+
ts TEXT NOT NULL DEFAULT (datetime('now')),
|
|
82
|
+
failure_count INTEGER DEFAULT 0,
|
|
83
|
+
success_count INTEGER DEFAULT 0,
|
|
84
|
+
lessons_count INTEGER DEFAULT 0,
|
|
85
|
+
file_path TEXT,
|
|
86
|
+
metadata TEXT
|
|
87
|
+
);
|
|
88
|
+
|
|
89
|
+
-- ============================================================
|
|
90
|
+
-- Seed: versión inicial
|
|
91
|
+
-- ============================================================
|
|
92
92
|
INSERT OR IGNORE INTO schema_version (version) VALUES ('001');
|
|
@@ -1,58 +1,58 @@
|
|
|
1
|
-
-- ============================================================
|
|
2
|
-
-- Kevin 0.2.0 — Migration 003: Signal Quality (additive)
|
|
3
|
-
-- ============================================================
|
|
4
|
-
-- Backward-compatible, additive only. All new columns are
|
|
5
|
-
-- nullable or carry a NOT NULL DEFAULT so legacy rows keep
|
|
6
|
-
-- working without a destructive rebuild. The partial UNIQUE
|
|
7
|
-
-- index excludes NULL fingerprints so legacy error memories
|
|
8
|
-
-- do not collide. The schema_version table (created by 001)
|
|
9
|
-
-- guarantees this file runs at most once per DB.
|
|
10
|
-
-- ============================================================
|
|
11
|
-
|
|
12
|
-
-- 1. memories: Signal Quality columns.
|
|
13
|
-
-- project_id — first-class scoping dimension (D2-11).
|
|
14
|
-
-- fingerprint — stable hash of normalized error content, salted by project_id (D2-14).
|
|
15
|
-
-- origin — distinguishes reflector-sourced vs agent-sourced memories (D2-06),
|
|
16
|
-
-- with a CHECK enum and DEFAULT 'agent' so legacy rows backfill cleanly.
|
|
17
|
-
ALTER TABLE memories ADD COLUMN project_id TEXT;
|
|
18
|
-
ALTER TABLE memories ADD COLUMN fingerprint TEXT;
|
|
19
|
-
ALTER TABLE memories ADD COLUMN origin TEXT NOT NULL DEFAULT 'agent'
|
|
20
|
-
CHECK(origin IN ('reflector', 'agent', 'pattern', 'retrospective'));
|
|
21
|
-
|
|
22
|
-
-- 2. tool_calls: same scoping/fingerprint columns for dedup and PatternMiner.
|
|
23
|
-
ALTER TABLE tool_calls ADD COLUMN project_id TEXT;
|
|
24
|
-
ALTER TABLE tool_calls ADD COLUMN fingerprint TEXT;
|
|
25
|
-
|
|
26
|
-
-- 3. Partial UNIQUE: one reflector-sourced error memory per (project_id, fingerprint).
|
|
27
|
-
-- NULL fingerprints are excluded (no dedup for non-error memories or legacy rows).
|
|
28
|
-
CREATE UNIQUE INDEX IF NOT EXISTS uq_memories_error_fp
|
|
29
|
-
ON memories (project_id, fingerprint)
|
|
30
|
-
WHERE type = 'error' AND fingerprint IS NOT NULL AND origin = 'reflector';
|
|
31
|
-
|
|
32
|
-
-- 4. kevin_metrics: seeded counters surfaced by kevin_status (D2-07 / K2-004).
|
|
33
|
-
CREATE TABLE IF NOT EXISTS kevin_metrics (
|
|
34
|
-
key TEXT PRIMARY KEY,
|
|
35
|
-
value INTEGER NOT NULL DEFAULT 0,
|
|
36
|
-
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
37
|
-
);
|
|
38
|
-
|
|
39
|
-
INSERT OR IGNORE INTO kevin_metrics (key, value) VALUES
|
|
40
|
-
('tokens_injected_pre_prompt', 0),
|
|
41
|
-
('tokens_injected_compacting', 0),
|
|
42
|
-
('reflections_throttled', 0),
|
|
43
|
-
('duplicate_suppressions', 0),
|
|
44
|
-
('tool_calls_deduped', 0),
|
|
45
|
-
('patterns_mined', 0);
|
|
46
|
-
|
|
47
|
-
-- 5. kevin_settings: opt-in feature flags (PatternMiner off, tool_calls dedup off).
|
|
48
|
-
CREATE TABLE IF NOT EXISTS kevin_settings (
|
|
49
|
-
key TEXT PRIMARY KEY,
|
|
50
|
-
value TEXT NOT NULL
|
|
51
|
-
);
|
|
52
|
-
|
|
53
|
-
INSERT OR IGNORE INTO kevin_settings (key, value) VALUES
|
|
54
|
-
('patternminer_enabled', '0'),
|
|
55
|
-
('tool_calls_dedup_enabled', '0');
|
|
56
|
-
|
|
57
|
-
-- 6. Seed version 003.
|
|
1
|
+
-- ============================================================
|
|
2
|
+
-- Kevin 0.2.0 — Migration 003: Signal Quality (additive)
|
|
3
|
+
-- ============================================================
|
|
4
|
+
-- Backward-compatible, additive only. All new columns are
|
|
5
|
+
-- nullable or carry a NOT NULL DEFAULT so legacy rows keep
|
|
6
|
+
-- working without a destructive rebuild. The partial UNIQUE
|
|
7
|
+
-- index excludes NULL fingerprints so legacy error memories
|
|
8
|
+
-- do not collide. The schema_version table (created by 001)
|
|
9
|
+
-- guarantees this file runs at most once per DB.
|
|
10
|
+
-- ============================================================
|
|
11
|
+
|
|
12
|
+
-- 1. memories: Signal Quality columns.
|
|
13
|
+
-- project_id — first-class scoping dimension (D2-11).
|
|
14
|
+
-- fingerprint — stable hash of normalized error content, salted by project_id (D2-14).
|
|
15
|
+
-- origin — distinguishes reflector-sourced vs agent-sourced memories (D2-06),
|
|
16
|
+
-- with a CHECK enum and DEFAULT 'agent' so legacy rows backfill cleanly.
|
|
17
|
+
ALTER TABLE memories ADD COLUMN project_id TEXT;
|
|
18
|
+
ALTER TABLE memories ADD COLUMN fingerprint TEXT;
|
|
19
|
+
ALTER TABLE memories ADD COLUMN origin TEXT NOT NULL DEFAULT 'agent'
|
|
20
|
+
CHECK(origin IN ('reflector', 'agent', 'pattern', 'retrospective'));
|
|
21
|
+
|
|
22
|
+
-- 2. tool_calls: same scoping/fingerprint columns for dedup and PatternMiner.
|
|
23
|
+
ALTER TABLE tool_calls ADD COLUMN project_id TEXT;
|
|
24
|
+
ALTER TABLE tool_calls ADD COLUMN fingerprint TEXT;
|
|
25
|
+
|
|
26
|
+
-- 3. Partial UNIQUE: one reflector-sourced error memory per (project_id, fingerprint).
|
|
27
|
+
-- NULL fingerprints are excluded (no dedup for non-error memories or legacy rows).
|
|
28
|
+
CREATE UNIQUE INDEX IF NOT EXISTS uq_memories_error_fp
|
|
29
|
+
ON memories (project_id, fingerprint)
|
|
30
|
+
WHERE type = 'error' AND fingerprint IS NOT NULL AND origin = 'reflector';
|
|
31
|
+
|
|
32
|
+
-- 4. kevin_metrics: seeded counters surfaced by kevin_status (D2-07 / K2-004).
|
|
33
|
+
CREATE TABLE IF NOT EXISTS kevin_metrics (
|
|
34
|
+
key TEXT PRIMARY KEY,
|
|
35
|
+
value INTEGER NOT NULL DEFAULT 0,
|
|
36
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
INSERT OR IGNORE INTO kevin_metrics (key, value) VALUES
|
|
40
|
+
('tokens_injected_pre_prompt', 0),
|
|
41
|
+
('tokens_injected_compacting', 0),
|
|
42
|
+
('reflections_throttled', 0),
|
|
43
|
+
('duplicate_suppressions', 0),
|
|
44
|
+
('tool_calls_deduped', 0),
|
|
45
|
+
('patterns_mined', 0);
|
|
46
|
+
|
|
47
|
+
-- 5. kevin_settings: opt-in feature flags (PatternMiner off, tool_calls dedup off).
|
|
48
|
+
CREATE TABLE IF NOT EXISTS kevin_settings (
|
|
49
|
+
key TEXT PRIMARY KEY,
|
|
50
|
+
value TEXT NOT NULL
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
INSERT OR IGNORE INTO kevin_settings (key, value) VALUES
|
|
54
|
+
('patternminer_enabled', '0'),
|
|
55
|
+
('tool_calls_dedup_enabled', '0');
|
|
56
|
+
|
|
57
|
+
-- 6. Seed version 003.
|
|
58
58
|
INSERT OR IGNORE INTO schema_version (version) VALUES ('003');
|