@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
|
@@ -4,6 +4,14 @@ import { type GateReason } from "./QualityGate.js";
|
|
|
4
4
|
import { type Metrics } from "./metrics.js";
|
|
5
5
|
export declare const QUALITY_GATE_SETTING = "quality_gate_enabled";
|
|
6
6
|
export declare const SNIPPET_INJECTION_SETTING = "lesson_snippet_injection";
|
|
7
|
+
/**
|
|
8
|
+
* v0.6.0 (K6-023 / plan §5.8) — the effective pre-prompt budget shared by
|
|
9
|
+
* `ContextInjector.prePromptCap()` and `kevin_audit`'s channels block
|
|
10
|
+
* (budget_tokens). Single source of truth for the K6-021 clamp:
|
|
11
|
+
* default 400 when the raw value is missing/non-numeric, clamped to
|
|
12
|
+
* [0, 4000]; 0 means "push off".
|
|
13
|
+
*/
|
|
14
|
+
export declare function effectivePrePromptCap(raw: string | undefined): number;
|
|
7
15
|
export interface ChatMessage {
|
|
8
16
|
role: string;
|
|
9
17
|
content: string;
|
|
@@ -142,6 +150,13 @@ export declare class ContextInjector {
|
|
|
142
150
|
* read at call time from `pre_prompt_budget_tokens` (seeded "900" by
|
|
143
151
|
* migration 006). Clamped to [100, 4000]; a non-numeric value falls
|
|
144
152
|
* back to 900. `kevin_trace` reports the value used via `plan().cap`.
|
|
153
|
+
*
|
|
154
|
+
* v0.6.0 (K6-021 / plan §5.8) — default becomes "400" and the lower
|
|
155
|
+
* clamp bound drops to **0**: the roadmap's kill criterion K1 prescribes
|
|
156
|
+
* cutting the push budget to zero when coverage is poor, and v0.5's
|
|
157
|
+
* [100, 4000] clamp made that response unimplementable. A non-numeric
|
|
158
|
+
* value falls back to 400. `onSystemTransform` treats 0 as off and
|
|
159
|
+
* returns before any retrieval (see K6-021 acceptance).
|
|
145
160
|
*/
|
|
146
161
|
private prePromptCap;
|
|
147
162
|
/**
|
|
@@ -4,13 +4,26 @@ import { estimateTokens } from "./metrics.js";
|
|
|
4
4
|
import { STOP_WORDS } from "./query-tokenizer.js";
|
|
5
5
|
export const QUALITY_GATE_SETTING = "quality_gate_enabled";
|
|
6
6
|
export const SNIPPET_INJECTION_SETTING = "lesson_snippet_injection";
|
|
7
|
+
/**
|
|
8
|
+
* v0.6.0 (K6-023 / plan §5.8) — the effective pre-prompt budget shared by
|
|
9
|
+
* `ContextInjector.prePromptCap()` and `kevin_audit`'s channels block
|
|
10
|
+
* (budget_tokens). Single source of truth for the K6-021 clamp:
|
|
11
|
+
* default 400 when the raw value is missing/non-numeric, clamped to
|
|
12
|
+
* [0, 4000]; 0 means "push off".
|
|
13
|
+
*/
|
|
14
|
+
export function effectivePrePromptCap(raw) {
|
|
15
|
+
const n = Number(raw);
|
|
16
|
+
if (!Number.isFinite(n))
|
|
17
|
+
return 400;
|
|
18
|
+
return Math.min(4000, Math.max(0, Math.round(n)));
|
|
19
|
+
}
|
|
7
20
|
// v0.4.0 default pre-prompt budget. v0.5.0 (K5-017 / plan §8.11, D5-11):
|
|
8
21
|
// kept as the compile-time fallback, but the EFFECTIVE cap is read at call
|
|
9
|
-
// time from the `pre_prompt_budget_tokens` setting (
|
|
10
|
-
//
|
|
11
|
-
//
|
|
12
|
-
//
|
|
13
|
-
//
|
|
22
|
+
// time from the `pre_prompt_budget_tokens` setting. v0.6.0 (K6-021 / plan
|
|
23
|
+
// §5.8): the setting's default becomes "400" and the lower clamp bound
|
|
24
|
+
// drops to 0 (off) — the confound fix in K5-005 showed a large share of
|
|
25
|
+
// injections are `inconclusive`, and the roadmap's kill criterion K1
|
|
26
|
+
// requires "off" to be a reachable, supported configuration.
|
|
14
27
|
const SYSTEM_TRANSFORM_TOKENS = 900;
|
|
15
28
|
const COMPACTING_TOKENS = 2000;
|
|
16
29
|
// v0.5.0 (K5-007 / plan §8.10, D5-04) — every rejection reason maps 1:1 to
|
|
@@ -19,6 +32,8 @@ const COMPACTING_TOKENS = 2000;
|
|
|
19
32
|
// `ok` reason admits and must never increment anything.
|
|
20
33
|
const BLOCKED_METRIC = {
|
|
21
34
|
ok: null,
|
|
35
|
+
// v0.6.0 (K6-022 / plan §5.8) — sixth reason, sixth counter.
|
|
36
|
+
low_confidence: "injections_blocked_confidence",
|
|
22
37
|
seen_this_session: "injections_blocked_seen",
|
|
23
38
|
ignored: "injections_blocked_ignored",
|
|
24
39
|
not_active: "injections_blocked_stale",
|
|
@@ -283,6 +298,13 @@ Consider adding this convention to AGENTS.md:
|
|
|
283
298
|
*/
|
|
284
299
|
evaluate(memories, sessionId) {
|
|
285
300
|
const qualityGateEnabled = this.memoryService.getSetting(QUALITY_GATE_SETTING, "1") === "1";
|
|
301
|
+
// v0.6.0 (K6-022 / plan §5.8) — the floor is read ONCE per
|
|
302
|
+
// plan/inject call (this method is the shared gate evaluation),
|
|
303
|
+
// never per memory. A non-numeric setting degrades to undefined,
|
|
304
|
+
// which disables the branch for every memory this call.
|
|
305
|
+
const rawFloor = this.memoryService.getSetting("injection_confidence_floor", "0.6");
|
|
306
|
+
const floor = Number(rawFloor);
|
|
307
|
+
const confidenceFloor = Number.isFinite(floor) ? floor : undefined;
|
|
286
308
|
const seen = new Set(this.seenBySession.get(sessionId) ?? []);
|
|
287
309
|
const recurrences = this.ledger?.postInjectionRecurrencesFor(sessionId) ??
|
|
288
310
|
new Map();
|
|
@@ -297,6 +319,9 @@ Consider adding this convention to AGENTS.md:
|
|
|
297
319
|
// v0.5.0 (K5-009) — the `ignored` flag is now a first-class
|
|
298
320
|
// Memory field via mapRow (D5-07).
|
|
299
321
|
ignored: m.ignored === true,
|
|
322
|
+
// v0.6.0 (K6-022) — the memory's computed confidence
|
|
323
|
+
// (may be null for rows without evidence).
|
|
324
|
+
confidence: m.confidence ?? undefined,
|
|
300
325
|
}, {
|
|
301
326
|
seenThisSession: seen,
|
|
302
327
|
// v0.4.0 (K4-025) — plan §5.1 rule 4: a causal pattern
|
|
@@ -310,6 +335,7 @@ Consider adding this convention to AGENTS.md:
|
|
|
310
335
|
: m.fingerprint
|
|
311
336
|
? (recurrences.get(m.fingerprint) ?? 0)
|
|
312
337
|
: 0,
|
|
338
|
+
confidenceFloor,
|
|
313
339
|
}, qualityGateEnabled);
|
|
314
340
|
verdicts.push({ ...verdict, memory: m });
|
|
315
341
|
}
|
|
@@ -320,13 +346,16 @@ Consider adding this convention to AGENTS.md:
|
|
|
320
346
|
* read at call time from `pre_prompt_budget_tokens` (seeded "900" by
|
|
321
347
|
* migration 006). Clamped to [100, 4000]; a non-numeric value falls
|
|
322
348
|
* back to 900. `kevin_trace` reports the value used via `plan().cap`.
|
|
349
|
+
*
|
|
350
|
+
* v0.6.0 (K6-021 / plan §5.8) — default becomes "400" and the lower
|
|
351
|
+
* clamp bound drops to **0**: the roadmap's kill criterion K1 prescribes
|
|
352
|
+
* cutting the push budget to zero when coverage is poor, and v0.5's
|
|
353
|
+
* [100, 4000] clamp made that response unimplementable. A non-numeric
|
|
354
|
+
* value falls back to 400. `onSystemTransform` treats 0 as off and
|
|
355
|
+
* returns before any retrieval (see K6-021 acceptance).
|
|
323
356
|
*/
|
|
324
357
|
prePromptCap() {
|
|
325
|
-
|
|
326
|
-
const n = Number(raw);
|
|
327
|
-
if (!Number.isFinite(n))
|
|
328
|
-
return 900;
|
|
329
|
-
return Math.min(4000, Math.max(100, Math.round(n)));
|
|
358
|
+
return effectivePrePromptCap(this.memoryService.getSetting("pre_prompt_budget_tokens", "400"));
|
|
330
359
|
}
|
|
331
360
|
/**
|
|
332
361
|
* v0.4.0 (K4-017) — QualityGate admission: filters the ranked slice to
|
|
@@ -469,10 +498,16 @@ Consider adding this convention to AGENTS.md:
|
|
|
469
498
|
return tokens.join(" ");
|
|
470
499
|
}
|
|
471
500
|
onSystemTransform(input, output) {
|
|
501
|
+
// v0.6.0 (K6-021 / plan §5.8) — a cap of 0 means off: return before
|
|
502
|
+
// any retrieval, gate evaluation or metric write. "Off" must not
|
|
503
|
+
// run a hidden query and throw away the result.
|
|
504
|
+
const cap = this.prePromptCap();
|
|
505
|
+
if (cap === 0)
|
|
506
|
+
return;
|
|
472
507
|
const query = this.deriveQuery(input.messages);
|
|
473
508
|
if (!query)
|
|
474
509
|
return;
|
|
475
|
-
const block = this.inject(query, "context",
|
|
510
|
+
const block = this.inject(query, "context", cap, "tokens_injected_pre_prompt", input.sessionID ?? "");
|
|
476
511
|
if (block)
|
|
477
512
|
output.system.push(block);
|
|
478
513
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextInjector.js","sourceRoot":"","sources":["../../plugin/ContextInjector.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ContextInjector.js","sourceRoot":"","sources":["../../plugin/ContextInjector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { MemoryService } from "./MemoryService.js";
|
|
2
|
+
import type { Store } from "./Store.js";
|
|
3
|
+
import type { Metrics } from "./metrics.js";
|
|
4
|
+
export interface MinedConvention {
|
|
5
|
+
/** Caller-supplied, derived from the normalized statement (D7-11). */
|
|
6
|
+
readonly fingerprint: string;
|
|
7
|
+
/** Human-readable rule statement. */
|
|
8
|
+
readonly statement: string;
|
|
9
|
+
/** Distinct sessions in which the pattern held. */
|
|
10
|
+
readonly support: number;
|
|
11
|
+
readonly kind: "sequence" | "co_edit";
|
|
12
|
+
}
|
|
13
|
+
export declare class ConventionMiner {
|
|
14
|
+
private readonly store;
|
|
15
|
+
private readonly memoryService;
|
|
16
|
+
private readonly projectId;
|
|
17
|
+
private readonly metrics;
|
|
18
|
+
constructor(store: Store, memoryService: MemoryService, projectId: string, metrics?: Metrics | null);
|
|
19
|
+
/** v0.7.0 (K7-010) — the `sequence` miner over successful tool_calls. */
|
|
20
|
+
mineSequence(minSupport?: number): MinedConvention[];
|
|
21
|
+
/** v0.7.0 (K7-011) — the `co_edit` miner over same-session file writes. */
|
|
22
|
+
mineCoEdit(minSupport?: number): MinedConvention[];
|
|
23
|
+
/** v0.7.0 (K7-012) — mine both kinds in one call. */
|
|
24
|
+
mine(minSupport?: number): MinedConvention[];
|
|
25
|
+
/**
|
|
26
|
+
* v0.7.0 (K7-012 / plan §5.4, D7-11) — emit mined(conventions) as `rule`
|
|
27
|
+
* memories. Returns the number of memories created or refreshed and
|
|
28
|
+
* increments `conventions_mined`. Runs on session.idle only, behind
|
|
29
|
+
* convention_mining_enabled. The fingerprint derives from the statement,
|
|
30
|
+
* so a re-mine of an unchanged convention collides and supersedes.
|
|
31
|
+
*/
|
|
32
|
+
emit(conventions: MinedConvention[]): number;
|
|
33
|
+
private materialize;
|
|
34
|
+
private fetchToolCalls;
|
|
35
|
+
}
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import { fingerprint } from "./fingerprint.js";
|
|
2
|
+
const DEFAULT_MIN_SUPPORT = 5;
|
|
3
|
+
export class ConventionMiner {
|
|
4
|
+
store;
|
|
5
|
+
memoryService;
|
|
6
|
+
projectId;
|
|
7
|
+
metrics;
|
|
8
|
+
constructor(store, memoryService, projectId, metrics) {
|
|
9
|
+
this.store = store;
|
|
10
|
+
this.memoryService = memoryService;
|
|
11
|
+
this.projectId = projectId;
|
|
12
|
+
this.metrics = metrics ?? null;
|
|
13
|
+
// `memoryService` is retained for emission (K7-012); mining itself is
|
|
14
|
+
// store-only.
|
|
15
|
+
void this.memoryService;
|
|
16
|
+
}
|
|
17
|
+
/** v0.7.0 (K7-010) — the `sequence` miner over successful tool_calls. */
|
|
18
|
+
mineSequence(minSupport = DEFAULT_MIN_SUPPORT) {
|
|
19
|
+
const rows = this.fetchToolCalls();
|
|
20
|
+
if (rows.length === 0)
|
|
21
|
+
return [];
|
|
22
|
+
// Group successful calls by session in execution order (ts ASC, then id
|
|
23
|
+
// as a deterministic tie-break).
|
|
24
|
+
const bySession = new Map();
|
|
25
|
+
const sorted = [...rows]
|
|
26
|
+
.filter((r) => r.success === 1)
|
|
27
|
+
.sort((a, b) => a.session_id === b.session_id
|
|
28
|
+
? compareTs(a.ts, b.ts) || a.id.localeCompare(b.id)
|
|
29
|
+
: a.session_id.localeCompare(b.session_id));
|
|
30
|
+
for (const r of sorted) {
|
|
31
|
+
const list = bySession.get(r.session_id) ?? [];
|
|
32
|
+
list.push(r);
|
|
33
|
+
bySession.set(r.session_id, list);
|
|
34
|
+
}
|
|
35
|
+
const map = new Map();
|
|
36
|
+
const record = (key, statement, sessionId) => {
|
|
37
|
+
let cand = map.get(key);
|
|
38
|
+
if (!cand) {
|
|
39
|
+
cand = { key, statement, sessions: new Set() };
|
|
40
|
+
map.set(key, cand);
|
|
41
|
+
}
|
|
42
|
+
cand.sessions.add(sessionId);
|
|
43
|
+
};
|
|
44
|
+
for (const [sessionId, list] of bySession) {
|
|
45
|
+
if (list.length < 2)
|
|
46
|
+
continue;
|
|
47
|
+
for (let i = 0; i < list.length - 1; i++) {
|
|
48
|
+
const a = list[i];
|
|
49
|
+
const b = list[i + 1];
|
|
50
|
+
const aTok = tokenOf(a);
|
|
51
|
+
const bTok = tokenOf(b);
|
|
52
|
+
const key2 = `seq::${aTok}::${bTok}`;
|
|
53
|
+
const stmt2 = statementForSequence(aTok, bTok);
|
|
54
|
+
record(key2, stmt2, sessionId);
|
|
55
|
+
if (i + 2 < list.length) {
|
|
56
|
+
const c = list[i + 2];
|
|
57
|
+
const cTok = tokenOf(c);
|
|
58
|
+
const key3 = `seq::${aTok}::${bTok}::${cTok}`;
|
|
59
|
+
const stmt3 = statementForSequence3(aTok, bTok, cTok);
|
|
60
|
+
record(key3, stmt3, sessionId);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return this.materialize(map, minSupport, "sequence");
|
|
65
|
+
}
|
|
66
|
+
/** v0.7.0 (K7-011) — the `co_edit` miner over same-session file writes. */
|
|
67
|
+
mineCoEdit(minSupport = DEFAULT_MIN_SUPPORT) {
|
|
68
|
+
const rows = this.fetchToolCalls();
|
|
69
|
+
if (rows.length === 0)
|
|
70
|
+
return [];
|
|
71
|
+
// Successful file writes (broad: any success call mentioning a path) per
|
|
72
|
+
// session. Pairs span two different directory prefixes.
|
|
73
|
+
const bySession = new Map();
|
|
74
|
+
const sorted = [...rows]
|
|
75
|
+
.filter((r) => r.success === 1 && pathOf(r) !== null)
|
|
76
|
+
.sort((a, b) => a.session_id === b.session_id
|
|
77
|
+
? compareTs(a.ts, b.ts) || a.id.localeCompare(b.id)
|
|
78
|
+
: a.session_id.localeCompare(b.session_id));
|
|
79
|
+
for (const r of sorted) {
|
|
80
|
+
const list = bySession.get(r.session_id) ?? [];
|
|
81
|
+
list.push(pathOf(r));
|
|
82
|
+
bySession.set(r.session_id, list);
|
|
83
|
+
}
|
|
84
|
+
const map = new Map();
|
|
85
|
+
const record = (key, statement, sessionId) => {
|
|
86
|
+
let cand = map.get(key);
|
|
87
|
+
if (!cand) {
|
|
88
|
+
cand = { key, statement, sessions: new Set() };
|
|
89
|
+
map.set(key, cand);
|
|
90
|
+
}
|
|
91
|
+
cand.sessions.add(sessionId);
|
|
92
|
+
};
|
|
93
|
+
for (const [sessionId, paths] of bySession) {
|
|
94
|
+
const unique = [...new Set(paths)];
|
|
95
|
+
if (unique.length < 2)
|
|
96
|
+
continue;
|
|
97
|
+
// Bounded enumeration: a large session must not explode into an
|
|
98
|
+
// O(n²) pair set. Cap distinct prefixes per session at 40.
|
|
99
|
+
const limit = Math.min(unique.length, 40);
|
|
100
|
+
for (let i = 0; i < limit; i++) {
|
|
101
|
+
const pA = unique[i];
|
|
102
|
+
for (let j = i + 1; j < limit; j++) {
|
|
103
|
+
const pB = unique[j];
|
|
104
|
+
const prefixA = dirOf(pA);
|
|
105
|
+
const prefixB = dirOf(pB);
|
|
106
|
+
if (prefixA === prefixB)
|
|
107
|
+
continue;
|
|
108
|
+
const [lo, hi] = prefixA < prefixB ? [prefixA, prefixB] : [prefixB, prefixA];
|
|
109
|
+
const key = `coedit::${lo}::${hi}`;
|
|
110
|
+
const stmt = `every new file under ${lo}/ is accompanied by a change under ${hi}/`;
|
|
111
|
+
record(key, stmt, sessionId);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return this.materialize(map, minSupport, "co_edit");
|
|
116
|
+
}
|
|
117
|
+
/** v0.7.0 (K7-012) — mine both kinds in one call. */
|
|
118
|
+
mine(minSupport = DEFAULT_MIN_SUPPORT) {
|
|
119
|
+
return [
|
|
120
|
+
...this.mineSequence(minSupport),
|
|
121
|
+
...this.mineCoEdit(minSupport),
|
|
122
|
+
].sort((a, b) => a.statement.localeCompare(b.statement));
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* v0.7.0 (K7-012 / plan §5.4, D7-11) — emit mined(conventions) as `rule`
|
|
126
|
+
* memories. Returns the number of memories created or refreshed and
|
|
127
|
+
* increments `conventions_mined`. Runs on session.idle only, behind
|
|
128
|
+
* convention_mining_enabled. The fingerprint derives from the statement,
|
|
129
|
+
* so a re-mine of an unchanged convention collides and supersedes.
|
|
130
|
+
*/
|
|
131
|
+
emit(conventions) {
|
|
132
|
+
let emitted = 0;
|
|
133
|
+
for (const c of conventions) {
|
|
134
|
+
const derivedFingerprint = fingerprint(c.statement, this.projectId);
|
|
135
|
+
// save() derives the fingerprint-based supersede/collision path for
|
|
136
|
+
// `rule` types automatically, so re-emitting an unchanged convention
|
|
137
|
+
// refreshes rather than duplicates.
|
|
138
|
+
this.memoryService.save({
|
|
139
|
+
type: "rule",
|
|
140
|
+
origin: "pattern",
|
|
141
|
+
scope: "project",
|
|
142
|
+
projectId: this.projectId,
|
|
143
|
+
fingerprint: derivedFingerprint,
|
|
144
|
+
content: c.statement,
|
|
145
|
+
relevanceScore: 0.5,
|
|
146
|
+
sourceTool: "ConventionMiner",
|
|
147
|
+
});
|
|
148
|
+
this.metrics?.incr("conventions_mined", 1);
|
|
149
|
+
emitted += 1;
|
|
150
|
+
}
|
|
151
|
+
return emitted;
|
|
152
|
+
}
|
|
153
|
+
materialize(map, minSupport, kind) {
|
|
154
|
+
const out = [];
|
|
155
|
+
for (const cand of map.values()) {
|
|
156
|
+
if (cand.sessions.size < minSupport)
|
|
157
|
+
continue;
|
|
158
|
+
out.push({
|
|
159
|
+
fingerprint: fingerprint(cand.statement, this.projectId),
|
|
160
|
+
statement: cand.statement,
|
|
161
|
+
support: cand.sessions.size,
|
|
162
|
+
kind,
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
// Deterministic order: lexicographic by statement (ties are resolved).
|
|
166
|
+
return out.sort((a, b) => a.statement.localeCompare(b.statement));
|
|
167
|
+
}
|
|
168
|
+
fetchToolCalls() {
|
|
169
|
+
const rows = this.store
|
|
170
|
+
.prepare(`SELECT id, session_id, ts, tool, success, args_summary
|
|
171
|
+
FROM tool_calls
|
|
172
|
+
WHERE project_id = ?
|
|
173
|
+
ORDER BY session_id, ts`)
|
|
174
|
+
.all(this.projectId);
|
|
175
|
+
return rows;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
// ---------------------------------------------------------------------------
|
|
179
|
+
// Helpers — deterministic token/path extraction. Every value is normalized so
|
|
180
|
+
// the same underlying fact never collides via a JavaScript type difference.
|
|
181
|
+
// ---------------------------------------------------------------------------
|
|
182
|
+
/** `<tool>:<first path segment>` token for sequence mining. */
|
|
183
|
+
function tokenOf(r) {
|
|
184
|
+
const seg = firstPathSegment(r.args_summary);
|
|
185
|
+
return `${r.tool}:${seg}`;
|
|
186
|
+
}
|
|
187
|
+
function compareTs(a, b) {
|
|
188
|
+
return a.localeCompare(b);
|
|
189
|
+
}
|
|
190
|
+
/** First path segment of the first path-like argument, else "*". */
|
|
191
|
+
function firstPathSegment(argsSummary) {
|
|
192
|
+
const paths = pathSegments(argsSummary);
|
|
193
|
+
const first = paths[0];
|
|
194
|
+
if (!first)
|
|
195
|
+
return "*";
|
|
196
|
+
return first.split("/").filter(Boolean)[0] ?? "*";
|
|
197
|
+
}
|
|
198
|
+
/** All path segments found in args_summary, in appearance order. */
|
|
199
|
+
function pathSegments(argsSummary) {
|
|
200
|
+
const text = argsSummary ?? "";
|
|
201
|
+
const found = [];
|
|
202
|
+
// Try JSON object string values first.
|
|
203
|
+
try {
|
|
204
|
+
const parsed = JSON.parse(text);
|
|
205
|
+
if (typeof parsed === "object" &&
|
|
206
|
+
parsed !== null &&
|
|
207
|
+
!Array.isArray(parsed)) {
|
|
208
|
+
for (const v of Object.values(parsed)) {
|
|
209
|
+
if (typeof v === "string" && /\//.test(v) && !v.includes(" ")) {
|
|
210
|
+
found.push(v.replace(/\\/g, "/").toLowerCase().trim());
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
catch {
|
|
216
|
+
/* not JSON */
|
|
217
|
+
}
|
|
218
|
+
if (found.length === 0) {
|
|
219
|
+
const m = text.match(/[^\s"':,=]*\/[^\s"':,=]*/g);
|
|
220
|
+
for (const tok of m ?? []) {
|
|
221
|
+
found.push(tok.replace(/\\/g, "/").toLowerCase().trim());
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
return found;
|
|
225
|
+
}
|
|
226
|
+
/** Directory of a path (drop the filename). `src/routes/user.ts` → `src/routes`. */
|
|
227
|
+
function dirOf(p) {
|
|
228
|
+
const segs = p.split("/").filter(Boolean);
|
|
229
|
+
segs.pop();
|
|
230
|
+
return segs.join("/") || "*";
|
|
231
|
+
}
|
|
232
|
+
/** A deterministic path for a call if it is a file write/read on disk. */
|
|
233
|
+
function pathOf(r) {
|
|
234
|
+
const segs = pathSegments(r.args_summary);
|
|
235
|
+
return segs[0] ?? null;
|
|
236
|
+
}
|
|
237
|
+
function statementForSequence(a, b) {
|
|
238
|
+
return `every ${a} is immediately followed by ${b}`;
|
|
239
|
+
}
|
|
240
|
+
function statementForSequence3(a, b, c) {
|
|
241
|
+
return `every ${a} is followed by ${b} and then ${c}`;
|
|
242
|
+
}
|
|
243
|
+
//# sourceMappingURL=ConventionMiner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConventionMiner.js","sourceRoot":"","sources":["../../plugin/ConventionMiner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { type ArtifactWriter } from "./ArtifactWriter.js";
|
|
2
|
+
import type { MemoryService } from "./MemoryService.js";
|
|
3
|
+
import type { Store } from "./Store.js";
|
|
4
|
+
import type { Metrics } from "./metrics.js";
|
|
5
|
+
/**
|
|
6
|
+
* K6-012/013 — v0.6.0 pull — candidate selection, line rendering and the
|
|
7
|
+
* proposal lifecycle (plan §5.4/§5.5).
|
|
8
|
+
*
|
|
9
|
+
* Deliberately fs-free: this module holds NO filesystem capability — reads
|
|
10
|
+
* and writes are delegated to the `ArtifactWriter` at the call site (D6-01).
|
|
11
|
+
*/
|
|
12
|
+
export interface CurationCandidate {
|
|
13
|
+
readonly memoryId: string;
|
|
14
|
+
/** The single AGENTS.md bullet. */
|
|
15
|
+
readonly line: string;
|
|
16
|
+
readonly confidence: number;
|
|
17
|
+
/** e.g. "verified 3×, last 2026-08-04". */
|
|
18
|
+
readonly evidence: string;
|
|
19
|
+
}
|
|
20
|
+
export type ProposalKind = "agents_md" | "skill" | "reference";
|
|
21
|
+
export type ProposalStatus = "pending" | "approved" | "rejected" | "applied" | "superseded";
|
|
22
|
+
export type ProposalTransition = "approve" | "reject" | "apply" | "supersede";
|
|
23
|
+
/** Plan §5.4 — the row shape of §6's `curation_proposals` table, surfaced. */
|
|
24
|
+
export interface CurationProposal {
|
|
25
|
+
readonly id: string;
|
|
26
|
+
readonly kind: ProposalKind;
|
|
27
|
+
readonly targetPath: string;
|
|
28
|
+
readonly memoryIds: readonly string[];
|
|
29
|
+
readonly proposedText: string;
|
|
30
|
+
readonly diff: string;
|
|
31
|
+
readonly status: ProposalStatus;
|
|
32
|
+
readonly createdAt: string;
|
|
33
|
+
}
|
|
34
|
+
export declare function firstSentence(content: string): string;
|
|
35
|
+
export declare class Curator {
|
|
36
|
+
private readonly store;
|
|
37
|
+
private readonly memoryService;
|
|
38
|
+
private readonly projectId;
|
|
39
|
+
private readonly metrics;
|
|
40
|
+
constructor(store: Store, memoryService: MemoryService, projectId: string, metrics?: Metrics | null);
|
|
41
|
+
/**
|
|
42
|
+
* Plan §5.4 selection predicate — all clauses must hold, evaluated
|
|
43
|
+
* verbatim. The confidence floor cannot be expressed in SQL (it is the
|
|
44
|
+
* two-sided formula of `computeConfidence`), so the cheap clauses run
|
|
45
|
+
* in SQL and confidence is computed and filtered per row in JS.
|
|
46
|
+
*
|
|
47
|
+
* The floor is `confidence >= 0.6` where the feedback arm of D6-09 also
|
|
48
|
+
* clears it: `computeConfidence` credits one positive human verdict at
|
|
49
|
+
* 0.05 (K5-010), so a row with `feedback_positive = 1` and no causal
|
|
50
|
+
* evidence scores 0.55 — yet D6-09's warrant is "either the world
|
|
51
|
+
* verified it twice, or a human verified it once". The disjunction
|
|
52
|
+
* (K6-012 acceptance) is the floor's complement for the feedback arm.
|
|
53
|
+
*
|
|
54
|
+
* Ordered by `confidence DESC, updated_at DESC`, capped at 20 lines and
|
|
55
|
+
* 4000 characters of content, whichever binds first. The char budget
|
|
56
|
+
* counts the raw content length: rendered lines are truncated to 160
|
|
57
|
+
* chars, so a rendered-line budget could never bind before the line cap.
|
|
58
|
+
*/
|
|
59
|
+
candidates(limit?: number): CurationCandidate[];
|
|
60
|
+
/**
|
|
61
|
+
* Renders the block sorted by memory id (D6-10): confidence orders
|
|
62
|
+
* selection, id orders output. Adding one candidate to a set of ten
|
|
63
|
+
* must change exactly one line of the rendered block.
|
|
64
|
+
*/
|
|
65
|
+
renderBlock(candidates: CurationCandidate[]): string;
|
|
66
|
+
/**
|
|
67
|
+
* Plan §5.4 — strict dry run (D5-08): plan only, never write. Returns a
|
|
68
|
+
* pending proposal per call, or [] when no candidate clears the floor.
|
|
69
|
+
*
|
|
70
|
+
* The proposal is a whole-block proposal: the persisted `proposed_text`
|
|
71
|
+
* is the merged block (current block in the file + new candidate lines),
|
|
72
|
+
* so approving it replaces the file block with exactly what was reviewed.
|
|
73
|
+
* The current block is learned from `plan().before` — the Curator has no
|
|
74
|
+
* fs capability, the writer reads (D6-01). Both plan calls are
|
|
75
|
+
* deterministic, so a second propose() with unchanged inputs reproduces
|
|
76
|
+
* the persisted diff byte-identically.
|
|
77
|
+
*
|
|
78
|
+
* A new proposal supersedes prior pending (or rejected) rows for the
|
|
79
|
+
* same (project_id, kind, target_path) triple — §5.5's regeneration
|
|
80
|
+
* arrow. Rows are never deleted (the audit trail is append-only).
|
|
81
|
+
*
|
|
82
|
+
* The schema's `memory_id` column is singular while a whole-block
|
|
83
|
+
* proposal carries several ids; the contributing ids are stored joined
|
|
84
|
+
* by "," (uuidv7 ids contain no comma) and split on read.
|
|
85
|
+
*/
|
|
86
|
+
propose(kind: ProposalKind, writer: ArtifactWriter): CurationProposal[];
|
|
87
|
+
/**
|
|
88
|
+
* Plan §5.5 state machine, as explicit transitions with an exhaustive
|
|
89
|
+
* switch — an unknown transition or an illegal source state throws
|
|
90
|
+
* rather than silently no-oping. `decided_at` stamps approve/reject/
|
|
91
|
+
* supersede, `applied_at` stamps apply.
|
|
92
|
+
*/
|
|
93
|
+
transition(proposalId: string, transition: ProposalTransition): ProposalStatus;
|
|
94
|
+
/** Plan §5.6 target paths. agents_md is a setting; skill/reference live under ~/.opencode-kevin. */
|
|
95
|
+
private targetPathFor;
|
|
96
|
+
}
|