@jmtrin/opencode-kevin 0.5.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 +268 -122
- 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 +145 -0
- package/dist/migrations/008_v07_truth.sql +124 -0
- package/dist/plugin/Archiver.js +4 -3
- package/dist/plugin/Archiver.js.map +1 -1
- package/dist/plugin/ArtifactWriter.d.ts +50 -0
- package/dist/plugin/ArtifactWriter.js +240 -0
- package/dist/plugin/ArtifactWriter.js.map +1 -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/ContextInjector.d.ts +15 -0
- package/dist/plugin/ContextInjector.js +46 -11
- package/dist/plugin/ContextInjector.js.map +1 -1
- 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.d.ts +96 -0
- package/dist/plugin/Curator.js +283 -0
- package/dist/plugin/Curator.js.map +1 -0
- package/dist/plugin/Feedback.js +4 -3
- package/dist/plugin/Feedback.js.map +1 -1
- package/dist/plugin/Materializer.d.ts +59 -0
- package/dist/plugin/Materializer.js +237 -0
- package/dist/plugin/Materializer.js.map +1 -0
- package/dist/plugin/MemoryService.d.ts +37 -0
- package/dist/plugin/MemoryService.js +241 -20
- package/dist/plugin/MemoryService.js.map +1 -1
- package/dist/plugin/Migrate.js +51 -2
- package/dist/plugin/Migrate.js.map +1 -1
- package/dist/plugin/QualityGate.d.ts +15 -1
- package/dist/plugin/QualityGate.js +12 -0
- package/dist/plugin/QualityGate.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.d.ts +1 -0
- package/dist/plugin/Retrospective.js +20 -1
- package/dist/plugin/Retrospective.js.map +1 -1
- package/dist/plugin/capabilities.d.ts +15 -0
- package/dist/plugin/capabilities.js +42 -0
- package/dist/plugin/capabilities.js.map +1 -0
- package/dist/plugin/diff.d.ts +8 -0
- package/dist/plugin/diff.js +183 -0
- package/dist/plugin/diff.js.map +1 -0
- package/dist/plugin/index.d.ts +8 -1
- package/dist/plugin/index.js +354 -2
- package/dist/plugin/index.js.map +1 -1
- package/dist/plugin/inferability.d.ts +32 -0
- package/dist/plugin/inferability.js +89 -0
- package/dist/plugin/inferability.js.map +1 -0
- package/dist/plugin/kevin_approve.d.ts +34 -0
- package/dist/plugin/kevin_approve.js +50 -0
- package/dist/plugin/kevin_approve.js.map +1 -0
- package/dist/plugin/kevin_audit.d.ts +87 -1
- package/dist/plugin/kevin_audit.js +190 -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/kevin_propose.d.ts +23 -0
- package/dist/plugin/kevin_propose.js +15 -0
- package/dist/plugin/kevin_propose.js.map +1 -0
- package/dist/plugin/kevin_publish.d.ts +38 -0
- package/dist/plugin/kevin_publish.js +19 -0
- package/dist/plugin/kevin_publish.js.map +1 -0
- package/dist/plugin/metrics.d.ts +12 -1
- package/dist/plugin/metrics.js +49 -0
- package/dist/plugin/metrics.js.map +1 -1
- package/dist/plugin/replay-types.d.ts +8 -8
- package/dist/plugin/replay.js +10 -0
- package/dist/plugin/replay.js.map +1 -1
- 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 +145 -0
- package/migrations/008_v07_truth.sql +124 -0
- package/package.json +3 -2
|
@@ -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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ArtifactWriter } from "./ArtifactWriter.js";
|
|
2
|
+
import type { Curator, ProposalKind } from "./Curator.js";
|
|
3
|
+
/**
|
|
4
|
+
* K6-014 — v0.6.0 pull — `kevin_propose` tool logic.
|
|
5
|
+
*
|
|
6
|
+
* Strict dry run in the exact sense of v0.5 `kevin_trace` (D5-08): creates
|
|
7
|
+
* `pending` rows and returns their unified diffs. No disk write, no `curated`
|
|
8
|
+
* flag, no metric beyond `proposals_created` (which `Curator.propose()`
|
|
9
|
+
* itself increments).
|
|
10
|
+
*/
|
|
11
|
+
export interface ProposedChange {
|
|
12
|
+
readonly id: string;
|
|
13
|
+
readonly kind: ProposalKind;
|
|
14
|
+
readonly targetPath: string;
|
|
15
|
+
readonly memoryIds: readonly string[];
|
|
16
|
+
readonly status: "pending";
|
|
17
|
+
readonly createdAt: string;
|
|
18
|
+
readonly diff: string;
|
|
19
|
+
}
|
|
20
|
+
export interface ProposeResult {
|
|
21
|
+
readonly proposals: readonly ProposedChange[];
|
|
22
|
+
}
|
|
23
|
+
export declare function kevinPropose(curator: Curator, writer: ArtifactWriter, kind: ProposalKind): ProposeResult;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export function kevinPropose(curator, writer, kind) {
|
|
2
|
+
const proposals = curator.propose(kind, writer);
|
|
3
|
+
return {
|
|
4
|
+
proposals: proposals.map((p) => ({
|
|
5
|
+
id: p.id,
|
|
6
|
+
kind: p.kind,
|
|
7
|
+
targetPath: p.targetPath,
|
|
8
|
+
memoryIds: [...p.memoryIds],
|
|
9
|
+
status: "pending",
|
|
10
|
+
createdAt: p.createdAt,
|
|
11
|
+
diff: p.diff,
|
|
12
|
+
})),
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=kevin_propose.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kevin_propose.js","sourceRoot":"","sources":["../../plugin/kevin_propose.ts"],"names":[],"mappings":"AA0BA,MAAM,UAAU,YAAY,CAC3B,OAAgB,EAChB,MAAsB,EACtB,IAAkB;IAElB,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAChD,OAAO;QACN,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAChC,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;YAC3B,MAAM,EAAE,SAAkB;YAC1B,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,IAAI,EAAE,CAAC,CAAC,IAAI;SACZ,CAAC,CAAC;KACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { ArtifactWriter } from "./ArtifactWriter.js";
|
|
2
|
+
import type { MaterializedBundle, Materializer } from "./Materializer.js";
|
|
3
|
+
import type { MemoryService } from "./MemoryService.js";
|
|
4
|
+
import type { Capabilities } from "./capabilities.js";
|
|
5
|
+
/**
|
|
6
|
+
* K6-020 — v0.6.0 pull — `kevin_publish` tool logic.
|
|
7
|
+
*
|
|
8
|
+
* Regenerates the pull-channel bundles on demand. Writes only through the
|
|
9
|
+
* `ArtifactWriter` and only to the Materializer's targets (D6-01, D6-07):
|
|
10
|
+
* `~/.opencode-kevin/skills/project-knowledge.md` and
|
|
11
|
+
* `~/.opencode-kevin/refs/<topic>.md`. `agents_md_path` is unreachable
|
|
12
|
+
* here by construction — the paths come from `bundleTargets()`, never from
|
|
13
|
+
* a setting — and that is asserted in the integration test even when the
|
|
14
|
+
* setting points inside `~/.opencode-kevin/`.
|
|
15
|
+
*
|
|
16
|
+
* Registration is a session-start concern (K6-018/019), not this tool's:
|
|
17
|
+
* the output reports the emission state honestly (`"unavailable"` on a v1
|
|
18
|
+
* host, `"off"` for a '0' setting, `"on"` when session start registers)
|
|
19
|
+
* instead of pretending success.
|
|
20
|
+
*/
|
|
21
|
+
export type EmissionState = "on" | "off" | "unavailable";
|
|
22
|
+
export interface PublishResult {
|
|
23
|
+
readonly bundles: readonly {
|
|
24
|
+
readonly topic: string;
|
|
25
|
+
readonly outcome: MaterializedBundle["outcome"];
|
|
26
|
+
}[];
|
|
27
|
+
readonly emission: {
|
|
28
|
+
readonly skill: EmissionState;
|
|
29
|
+
readonly reference: EmissionState;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
export interface PublishDeps {
|
|
33
|
+
readonly materializer: Materializer;
|
|
34
|
+
readonly writer: ArtifactWriter;
|
|
35
|
+
readonly memoryService: MemoryService;
|
|
36
|
+
readonly capabilities: Capabilities;
|
|
37
|
+
}
|
|
38
|
+
export declare function kevinPublish(deps: PublishDeps): PublishResult;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
function emissionState(capable, setting) {
|
|
2
|
+
if (!capable)
|
|
3
|
+
return "unavailable";
|
|
4
|
+
return setting === "1" ? "on" : "off";
|
|
5
|
+
}
|
|
6
|
+
export function kevinPublish(deps) {
|
|
7
|
+
const bundles = deps.materializer.materialize(deps.writer);
|
|
8
|
+
return {
|
|
9
|
+
bundles: bundles.map((b) => ({
|
|
10
|
+
topic: b.topic,
|
|
11
|
+
outcome: b.outcome,
|
|
12
|
+
})),
|
|
13
|
+
emission: {
|
|
14
|
+
skill: emissionState(deps.capabilities.skills, deps.memoryService.getSetting("skill_emission_enabled", "0")),
|
|
15
|
+
reference: emissionState(deps.capabilities.references, deps.memoryService.getSetting("reference_emission_enabled", "0")),
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=kevin_publish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kevin_publish.js","sourceRoot":"","sources":["../../plugin/kevin_publish.ts"],"names":[],"mappings":"AA0CA,SAAS,aAAa,CACrB,OAAgB,EAChB,OAA2B;IAE3B,IAAI,CAAC,OAAO;QAAE,OAAO,aAAa,CAAC;IACnC,OAAO,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAiB;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3D,OAAO;QACN,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5B,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,OAAO,EAAE,CAAC,CAAC,OAAO;SAClB,CAAC,CAAC;QACH,QAAQ,EAAE;YACT,KAAK,EAAE,aAAa,CACnB,IAAI,CAAC,YAAY,CAAC,MAAM,EACxB,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAC5D;YACD,SAAS,EAAE,aAAa,CACvB,IAAI,CAAC,YAAY,CAAC,UAAU,EAC5B,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAChE;SACD;KACD,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"];
|
|
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.
|
|
@@ -35,6 +35,15 @@ export declare class Metrics {
|
|
|
35
35
|
constructor(store: Store, flushMs?: number);
|
|
36
36
|
private loadFromDb;
|
|
37
37
|
incr(key: MetricKey, by?: number): void;
|
|
38
|
+
/**
|
|
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 33
|
|
41
|
+
* (K7-004 acceptance, the verified cumulative ladder), but persist to
|
|
42
|
+
* the same `kevin_metrics` table so `kevin_audit`'s channels block can
|
|
43
|
+
* read them by SQL (K6-023). They are written immediately (no debounce):
|
|
44
|
+
* they change at most twice per process, on session start.
|
|
45
|
+
*/
|
|
46
|
+
incrRegistered(key: "skills_registered" | "references_registered", by?: number): void;
|
|
38
47
|
/**
|
|
39
48
|
* Returns a snapshot of the cache. The returned object always contains all
|
|
40
49
|
* METRIC_KEYS, even if the DB has no rows yet. Does NOT flush.
|
|
@@ -67,6 +76,8 @@ export declare class Metrics {
|
|
|
67
76
|
/**
|
|
68
77
|
* v0.5.0 (K5-004 / plan §5.2, D5-02) — the five `injections_blocked_*`
|
|
69
78
|
* counters keyed by their short names. Consumed by `kevin_audit`.
|
|
79
|
+
* v0.6.0 (K6-004 / plan §8.3) — sixth member keyed `confidence`
|
|
80
|
+
* (the low_confidence gate branch, K6-022).
|
|
70
81
|
* Computed from the cached counters — does NOT flush.
|
|
71
82
|
*/
|
|
72
83
|
blockedSnapshot(): Record<string, number>;
|
package/dist/plugin/metrics.js
CHANGED
|
@@ -29,6 +29,25 @@ export const METRIC_KEYS = [
|
|
|
29
29
|
"feedback_positive_total",
|
|
30
30
|
"feedback_negative_total",
|
|
31
31
|
"memories_archived",
|
|
32
|
+
// v0.6.0 (K6-004 / plan §8.3) — order matches migration 007's seed block.
|
|
33
|
+
// injections_blocked_confidence is the sixth member of the blocked
|
|
34
|
+
// family and MUST be counted like the other five (Principle 16).
|
|
35
|
+
"proposals_created",
|
|
36
|
+
"proposals_approved",
|
|
37
|
+
"proposals_rejected",
|
|
38
|
+
"artifact_writes_total",
|
|
39
|
+
"artifact_writes_noop",
|
|
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",
|
|
32
51
|
];
|
|
33
52
|
const DEFAULT_FLUSH_MS = 1000;
|
|
34
53
|
function zeroCache() {
|
|
@@ -96,6 +115,33 @@ export class Metrics {
|
|
|
96
115
|
this.dirty.add(key);
|
|
97
116
|
this.scheduleFlush();
|
|
98
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* v0.6.0 (K6-018/019 / plan §5.8) — the pull-channel registration
|
|
120
|
+
* counters. These live OUTSIDE `METRIC_KEYS`, which is frozen at 33
|
|
121
|
+
* (K7-004 acceptance, the verified cumulative ladder), but persist to
|
|
122
|
+
* the same `kevin_metrics` table so `kevin_audit`'s channels block can
|
|
123
|
+
* read them by SQL (K6-023). They are written immediately (no debounce):
|
|
124
|
+
* they change at most twice per process, on session start.
|
|
125
|
+
*/
|
|
126
|
+
incrRegistered(key, by = 1) {
|
|
127
|
+
if (this.closed)
|
|
128
|
+
return;
|
|
129
|
+
const store = this.store;
|
|
130
|
+
store.transaction(() => {
|
|
131
|
+
store.exec(`CREATE TABLE IF NOT EXISTS kevin_metrics (
|
|
132
|
+
key TEXT PRIMARY KEY,
|
|
133
|
+
value INTEGER NOT NULL DEFAULT 0,
|
|
134
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
135
|
+
)`);
|
|
136
|
+
store
|
|
137
|
+
.prepare(`INSERT INTO kevin_metrics (key, value, updated_at)
|
|
138
|
+
VALUES (?, ?, datetime('now'))
|
|
139
|
+
ON CONFLICT(key) DO UPDATE SET
|
|
140
|
+
value = value + excluded.value,
|
|
141
|
+
updated_at = datetime('now')`)
|
|
142
|
+
.run(key, by);
|
|
143
|
+
});
|
|
144
|
+
}
|
|
99
145
|
/**
|
|
100
146
|
* Returns a snapshot of the cache. The returned object always contains all
|
|
101
147
|
* METRIC_KEYS, even if the DB has no rows yet. Does NOT flush.
|
|
@@ -148,6 +194,8 @@ export class Metrics {
|
|
|
148
194
|
/**
|
|
149
195
|
* v0.5.0 (K5-004 / plan §5.2, D5-02) — the five `injections_blocked_*`
|
|
150
196
|
* counters keyed by their short names. Consumed by `kevin_audit`.
|
|
197
|
+
* v0.6.0 (K6-004 / plan §8.3) — sixth member keyed `confidence`
|
|
198
|
+
* (the low_confidence gate branch, K6-022).
|
|
151
199
|
* Computed from the cached counters — does NOT flush.
|
|
152
200
|
*/
|
|
153
201
|
blockedSnapshot() {
|
|
@@ -157,6 +205,7 @@ export class Metrics {
|
|
|
157
205
|
recurrence: this.cache.get("injections_blocked_recurrence") ?? 0,
|
|
158
206
|
stale: this.cache.get("injections_blocked_stale") ?? 0,
|
|
159
207
|
ignored: this.cache.get("injections_blocked_ignored") ?? 0,
|
|
208
|
+
confidence: this.cache.get("injections_blocked_confidence") ?? 0,
|
|
160
209
|
};
|
|
161
210
|
}
|
|
162
211
|
/** True iff a debounced flush is scheduled. Useful for tests. */
|
|
@@ -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;
|
|
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;IAC/B,0EAA0E;IAC1E,wEAAwE;IACxE,wEAAwE;IACxE,qEAAqE;IACrE,2DAA2D;IAC3D,oBAAoB;IACpB,uBAAuB;IACvB,mBAAmB;IACnB,oBAAoB;IACpB,0BAA0B;CACjB,CAAC;AAIX,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAE9B,SAAS,SAAS;IACjB,MAAM,CAAC,GAAG,IAAI,GAAG,EAAqB,CAAC;IACvC,KAAK,MAAM,CAAC,IAAI,WAAW;QAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzC,OAAO,CAAC,CAAC;AACV,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IAC1C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AACjD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,OAAO,OAAO;IAQD;IAPD,KAAK,CAAyB;IAC9B,KAAK,GAAmB,IAAI,GAAG,EAAE,CAAC;IAC3C,UAAU,GAAyC,IAAI,CAAC;IAC/C,OAAO,CAAS;IACzB,MAAM,GAAG,KAAK,CAAC;IAEvB,YACkB,KAAY,EAC7B,UAAkB,gBAAgB;QADjB,UAAK,GAAL,KAAK,CAAO;QAG7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,SAAS,EAAE,CAAC;QACzB,IAAI,CAAC,UAAU,EAAE,CAAC;IACnB,CAAC;IAEO,UAAU;QACjB,uEAAuE;QACvE,qEAAqE;QACrE,+DAA+D;QAC/D,IAAI,IAAI,GAAqC,EAAE,CAAC;QAChD,IAAI,CAAC;YACJ,IAAI,GAAG,IAAI,CAAC,KAAK;iBACf,OAAO,CAAC,sCAAsC,CAAC;iBAC/C,GAAG,EAAsC,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACR,IAAI,GAAG,EAAE,CAAC;QACX,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAgB,CAAC,EAAE,CAAC;gBAC1C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAgB,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YACjD,CAAC;QACF,CAAC;IACF,CAAC;IAED,IAAI,CAAC,GAAc,EAAE,EAAE,GAAG,CAAC;QAC1B,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,GAAG,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,aAAa,EAAE,CAAC;IACtB,CAAC;IAED;;;;;;;OAOG;IACH,cAAc,CACb,GAAkD,EAClD,EAAE,GAAG,CAAC;QAEN,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;YACtB,KAAK,CAAC,IAAI,CACT;;;;eAIW,CACX,CAAC;YACF,KAAK;iBACH,OAAO,CACP;;;;2CAIsC,CACtC;iBACA,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,QAAQ;QACP,MAAM,GAAG,GAAG,EAA+B,CAAC;QAC5C,KAAK,MAAM,CAAC,IAAI,WAAW;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7D,OAAO,GAAG,CAAC;IACZ,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,GAAc;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED;;;;;;;;;;OAUG;IACH,aAAa;QACZ,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC9D,MAAM,QAAQ,GACb,SAAS,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7D,IAAI,QAAQ,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;;OAMG;IACH,YAAY;QACX,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,KAAK,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC;QACzB,MAAM,QAAQ,GACb,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;YAC7C,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC,CAAC;IACtC,CAAC;IAED;;;;;;OAMG;IACH,eAAe;QACd,OAAO;YACN,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,IAAI,CAAC;YACpD,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,IAAI,CAAC;YACpD,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,+BAA+B,CAAC,IAAI,CAAC;YAChE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,IAAI,CAAC;YACtD,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,IAAI,CAAC;YAC1D,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,+BAA+B,CAAC,IAAI,CAAC;SAChE,CAAC;IACH,CAAC;IAED,iEAAiE;IACjE,gBAAgB;QACf,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC;IACjC,CAAC;IAED;;;;;;OAMG;IACH,KAAK;QACJ,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,OAAO;QACR,CAAC;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;YACtB,KAAK,CAAC,IAAI,CACT;;;;eAIW,CACX,CAAC;YACF,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAC3B;;;;2CAIuC,CACvC,CAAC;YACF,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC3B,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACvC,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,KAAK;QACJ,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,UAAU,EAAE,CAAC;IACnB,CAAC;IAEO,aAAa;QACpB,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI;YAAE,OAAO;QACrC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;YACjC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,KAAK,EAAE,CAAC;QACd,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACjB,kEAAkE;QAClE,MAAM,CAAC,GAAG,IAAI,CAAC,UAEd,CAAC;QACF,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;IACb,CAAC;IAEO,UAAU;QACjB,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC9B,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACxB,CAAC;IACF,CAAC;CACD"}
|
|
@@ -27,13 +27,13 @@ export declare const replayEventSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodOb
|
|
|
27
27
|
}, "strip", z.ZodTypeAny, {
|
|
28
28
|
at: string;
|
|
29
29
|
sessionId: string;
|
|
30
|
-
text: string;
|
|
31
30
|
kind: "chat.message";
|
|
31
|
+
text: string;
|
|
32
32
|
}, {
|
|
33
33
|
at: string;
|
|
34
34
|
sessionId: string;
|
|
35
|
-
text: string;
|
|
36
35
|
kind: "chat.message";
|
|
36
|
+
text: string;
|
|
37
37
|
}>, z.ZodObject<{
|
|
38
38
|
kind: z.ZodLiteral<"tool.before">;
|
|
39
39
|
at: z.ZodString;
|
|
@@ -143,13 +143,13 @@ export declare const replayTranscriptSchema: z.ZodObject<{
|
|
|
143
143
|
}, "strip", z.ZodTypeAny, {
|
|
144
144
|
at: string;
|
|
145
145
|
sessionId: string;
|
|
146
|
-
text: string;
|
|
147
146
|
kind: "chat.message";
|
|
147
|
+
text: string;
|
|
148
148
|
}, {
|
|
149
149
|
at: string;
|
|
150
150
|
sessionId: string;
|
|
151
|
-
text: string;
|
|
152
151
|
kind: "chat.message";
|
|
152
|
+
text: string;
|
|
153
153
|
}>, z.ZodObject<{
|
|
154
154
|
kind: z.ZodLiteral<"tool.before">;
|
|
155
155
|
at: z.ZodString;
|
|
@@ -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;
|
|
@@ -245,8 +245,8 @@ export declare const replayTranscriptSchema: z.ZodObject<{
|
|
|
245
245
|
} | {
|
|
246
246
|
at: string;
|
|
247
247
|
sessionId: string;
|
|
248
|
-
text: string;
|
|
249
248
|
kind: "chat.message";
|
|
249
|
+
text: string;
|
|
250
250
|
} | {
|
|
251
251
|
at: string;
|
|
252
252
|
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;
|
|
@@ -286,8 +286,8 @@ export declare const replayTranscriptSchema: z.ZodObject<{
|
|
|
286
286
|
} | {
|
|
287
287
|
at: string;
|
|
288
288
|
sessionId: string;
|
|
289
|
-
text: string;
|
|
290
289
|
kind: "chat.message";
|
|
290
|
+
text: string;
|
|
291
291
|
} | {
|
|
292
292
|
at: string;
|
|
293
293
|
sessionId: string;
|
package/dist/plugin/replay.js
CHANGED
|
@@ -22,6 +22,16 @@ export async function replay(transcript, opts) {
|
|
|
22
22
|
store
|
|
23
23
|
.prepare("UPDATE kevin_settings SET value = '1' WHERE key = 'deterministic_retrieval'")
|
|
24
24
|
.run();
|
|
25
|
+
// v0.6.0 (K6-022) — the release floor (0.6) blocks every
|
|
26
|
+
// single-observation memory the v0.5-era fixture exercises; the replay
|
|
27
|
+
// harness preserves the v0.5 push semantics it was recorded under, the
|
|
28
|
+
// same opt-out the legacy plugin harnesses apply.
|
|
29
|
+
store
|
|
30
|
+
.prepare("INSERT OR IGNORE INTO kevin_settings (key, value) VALUES ('injection_confidence_floor', '0')")
|
|
31
|
+
.run();
|
|
32
|
+
store
|
|
33
|
+
.prepare("UPDATE kevin_settings SET value = '0' WHERE key = 'injection_confidence_floor'")
|
|
34
|
+
.run();
|
|
25
35
|
const metrics = new Metrics(store);
|
|
26
36
|
const memoryService = new MemoryService(store, metrics);
|
|
27
37
|
const observer = new ToolCallObserver(store, metrics);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replay.js","sourceRoot":"","sources":["../../plugin/replay.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"replay.js","sourceRoot":"","sources":["../../plugin/replay.ts"],"names":[],"mappings":"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"}
|
|
@@ -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');
|