@jmtrin/opencode-kevin 0.5.0 → 0.6.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 +580 -436
- package/dist/migrations/007_v06_pull.sql +145 -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/ContextInjector.d.ts +15 -0
- package/dist/plugin/ContextInjector.js +46 -11
- package/dist/plugin/ContextInjector.js.map +1 -1
- package/dist/plugin/Curator.d.ts +96 -0
- package/dist/plugin/Curator.js +252 -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 +19 -0
- package/dist/plugin/MemoryService.js +150 -19
- package/dist/plugin/MemoryService.js.map +1 -1
- package/dist/plugin/Migrate.js +20 -0
- 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/Retrospective.d.ts +1 -0
- package/dist/plugin/Retrospective.js +12 -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 +3 -1
- package/dist/plugin/index.js +221 -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 +47 -1
- package/dist/plugin/kevin_audit.js +93 -1
- package/dist/plugin/kevin_audit.js.map +1 -1
- 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 +39 -0
- package/dist/plugin/metrics.js.map +1 -1
- package/dist/plugin/replay-types.d.ts +6 -6
- package/dist/plugin/replay.js +10 -0
- package/dist/plugin/replay.js.map +1 -1
- package/migrations/007_v06_pull.sql +145 -0
- package/package.json +1 -1
package/dist/plugin/Migrate.js
CHANGED
|
@@ -58,6 +58,26 @@ const DEFAULT_POST_APPLY_HOOKS = {
|
|
|
58
58
|
.prepare("UPDATE kevin_metrics SET value = (SELECT COUNT(*) FROM kevin_injections WHERE outcome = 'inconclusive') WHERE key = 'injections_inconclusive'")
|
|
59
59
|
.run();
|
|
60
60
|
},
|
|
61
|
+
// v0.6.0 (K6-002 / plan §6, D6-08) — Pull: three re-derivations, all
|
|
62
|
+
// idempotent by re-derivation (same discipline as "006", D5-13).
|
|
63
|
+
// 1. Back-fill `inferable = 0` for the four non-`error` types still NULL:
|
|
64
|
+
// they are `non_inferable` by rules 1 and 2 of plan §5.3
|
|
65
|
+
// unconditionally. Guarded by `inferable IS NULL` so a re-run cannot
|
|
66
|
+
// overwrite a classification produced later by inferability.classify().
|
|
67
|
+
// `error` rows are left NULL and classified lazily.
|
|
68
|
+
// 2-3. proposals_created / artifact_writes_total are re-derived from
|
|
69
|
+
// their tables; a missing row makes the UPDATE a harmless no-op.
|
|
70
|
+
"007": (store) => {
|
|
71
|
+
store
|
|
72
|
+
.prepare("UPDATE memories SET inferable = 0 WHERE inferable IS NULL AND type IN ('decision','rule','solution','pattern')")
|
|
73
|
+
.run();
|
|
74
|
+
store
|
|
75
|
+
.prepare("UPDATE kevin_metrics SET value = (SELECT COUNT(*) FROM curation_proposals) WHERE key = 'proposals_created'")
|
|
76
|
+
.run();
|
|
77
|
+
store
|
|
78
|
+
.prepare("UPDATE kevin_metrics SET value = (SELECT COUNT(*) FROM artifact_writes WHERE outcome = 'written') WHERE key = 'artifact_writes_total'")
|
|
79
|
+
.run();
|
|
80
|
+
},
|
|
61
81
|
};
|
|
62
82
|
export class Migrate {
|
|
63
83
|
store;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Migrate.js","sourceRoot":"","sources":["../../plugin/Migrate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Migrate.js","sourceRoot":"","sources":["../../plugin/Migrate.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,6 +40,12 @@ export interface InjectionContext {
|
|
|
40
40
|
/** Failing tool_calls count for this fingerprint in the current session
|
|
41
41
|
* (0 = never recurred after injection). */
|
|
42
42
|
recurrenceCount: number;
|
|
43
|
+
/** v0.6.0 (K6-022 / plan §5.8) — the `injection_confidence_floor`
|
|
44
|
+
* setting, read once per plan/inject call by the ContextInjector.
|
|
45
|
+
* When present, a memory whose `confidence` is below it is rejected by
|
|
46
|
+
* the zero branch (before the seen-set). Undefined disables the branch:
|
|
47
|
+
* memories without a computed confidence are never dropped by it. */
|
|
48
|
+
confidenceFloor?: number;
|
|
43
49
|
}
|
|
44
50
|
/**
|
|
45
51
|
* v0.5.0 (K5-006 / plan §5.2, D5-04) — the reason a memory was rejected
|
|
@@ -47,7 +53,7 @@ export interface InjectionContext {
|
|
|
47
53
|
* `injections_blocked_*` counter; a silent boolean is an unmeasurable
|
|
48
54
|
* policy (principle 16).
|
|
49
55
|
*/
|
|
50
|
-
export type GateReason = "ok" | "seen_this_session" | "ignored" | "not_active" | "recurrence" | "weak";
|
|
56
|
+
export type GateReason = "ok" | "low_confidence" | "seen_this_session" | "ignored" | "not_active" | "recurrence" | "weak";
|
|
51
57
|
export interface GateVerdict {
|
|
52
58
|
readonly allowed: boolean;
|
|
53
59
|
readonly reason: GateReason;
|
|
@@ -88,6 +94,9 @@ export declare const QualityGate: {
|
|
|
88
94
|
* Branch order preserves the v0.4.0 sequence with `ignored` inserted
|
|
89
95
|
* second:
|
|
90
96
|
*
|
|
97
|
+
* 0. `confidence < ctx.confidenceFloor` → `low_confidence` (v0.6.0,
|
|
98
|
+
* K6-022 — runs FIRST: it is the cheapest check, and a memory below
|
|
99
|
+
* the floor should not consume a seen-set slot it will never use)
|
|
91
100
|
* 1. seen this session → `seen_this_session`
|
|
92
101
|
* 2. `memory.ignored === true` → `ignored`
|
|
93
102
|
* 3. status !== 'active' → `not_active`
|
|
@@ -99,6 +108,10 @@ export declare const QualityGate: {
|
|
|
99
108
|
* `ignored` is a human verdict (D5-07) and is enforced even in debug
|
|
100
109
|
* mode: the flag excludes a memory from retrieval entirely, so the gate
|
|
101
110
|
* is only ever asked about it defensively.
|
|
111
|
+
*
|
|
112
|
+
* The floor comparison is `>=`-admissive: a memory exactly AT the floor
|
|
113
|
+
* passes the branch (asserted in K6-022). A floor of '0' admits
|
|
114
|
+
* everything the other five branches allow.
|
|
102
115
|
*/
|
|
103
116
|
canInjectVerdict(memory: {
|
|
104
117
|
id: string;
|
|
@@ -106,5 +119,6 @@ export declare const QualityGate: {
|
|
|
106
119
|
strength?: "strong" | "weak";
|
|
107
120
|
isActionable?: boolean;
|
|
108
121
|
ignored?: boolean;
|
|
122
|
+
confidence?: number;
|
|
109
123
|
}, ctx: InjectionContext, qualityGateEnabled?: boolean): GateVerdict;
|
|
110
124
|
};
|
|
@@ -70,6 +70,9 @@ export const QualityGate = {
|
|
|
70
70
|
* Branch order preserves the v0.4.0 sequence with `ignored` inserted
|
|
71
71
|
* second:
|
|
72
72
|
*
|
|
73
|
+
* 0. `confidence < ctx.confidenceFloor` → `low_confidence` (v0.6.0,
|
|
74
|
+
* K6-022 — runs FIRST: it is the cheapest check, and a memory below
|
|
75
|
+
* the floor should not consume a seen-set slot it will never use)
|
|
73
76
|
* 1. seen this session → `seen_this_session`
|
|
74
77
|
* 2. `memory.ignored === true` → `ignored`
|
|
75
78
|
* 3. status !== 'active' → `not_active`
|
|
@@ -81,8 +84,17 @@ export const QualityGate = {
|
|
|
81
84
|
* `ignored` is a human verdict (D5-07) and is enforced even in debug
|
|
82
85
|
* mode: the flag excludes a memory from retrieval entirely, so the gate
|
|
83
86
|
* is only ever asked about it defensively.
|
|
87
|
+
*
|
|
88
|
+
* The floor comparison is `>=`-admissive: a memory exactly AT the floor
|
|
89
|
+
* passes the branch (asserted in K6-022). A floor of '0' admits
|
|
90
|
+
* everything the other five branches allow.
|
|
84
91
|
*/
|
|
85
92
|
canInjectVerdict(memory, ctx, qualityGateEnabled = true) {
|
|
93
|
+
if (memory.confidence !== undefined &&
|
|
94
|
+
ctx.confidenceFloor !== undefined &&
|
|
95
|
+
memory.confidence < ctx.confidenceFloor) {
|
|
96
|
+
return { allowed: false, reason: "low_confidence" };
|
|
97
|
+
}
|
|
86
98
|
if (ctx.seenThisSession.has(memory.id)) {
|
|
87
99
|
return { allowed: false, reason: "seen_this_session" };
|
|
88
100
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QualityGate.js","sourceRoot":"","sources":["../../plugin/QualityGate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;;;;;;;;;;;;GAaG;AAEH;qEACqE;AACrE,MAAM,CAAC,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CAC9D,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAC1B,CAAC;AAEF,MAAM,UAAU,mBAAmB,CAAC,UAAkB;IACrD,OAAO,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC5C,CAAC;
|
|
1
|
+
{"version":3,"file":"QualityGate.js","sourceRoot":"","sources":["../../plugin/QualityGate.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,9 @@ import { mkdirSync, writeFileSync } from "node:fs";
|
|
|
2
2
|
import { homedir } from "node:os";
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
import { uuidv7 } from "./uuid.js";
|
|
5
|
-
|
|
5
|
+
// v0.6.0 (K6-004 / plan §8.16) — exported so tests can assert that every
|
|
6
|
+
// METRIC_KEYS entry has a label by iterating the keys (not by counting).
|
|
7
|
+
export const METRIC_KEY_LABELS = {
|
|
6
8
|
tokens_injected_pre_prompt: "Tokens inyectados (pre-prompt)",
|
|
7
9
|
tokens_injected_compacting: "Tokens inyectados (compacting)",
|
|
8
10
|
reflections_throttled: "Reflexiones throttled",
|
|
@@ -30,6 +32,15 @@ const METRIC_KEY_LABELS = {
|
|
|
30
32
|
feedback_positive_total: "Feedback positivo total",
|
|
31
33
|
feedback_negative_total: "Feedback negativo total",
|
|
32
34
|
memories_archived: "Memorias archivadas",
|
|
35
|
+
// v0.6.0 (K6-004 / plan §8.16) — the K6 metric keys need their own
|
|
36
|
+
// Spanish labels; the audit regression forbids raw-key fallback for any
|
|
37
|
+
// key in METRIC_KEYS.
|
|
38
|
+
proposals_created: "Propuestas de curación creadas",
|
|
39
|
+
proposals_approved: "Propuestas aprobadas",
|
|
40
|
+
proposals_rejected: "Propuestas rechazadas",
|
|
41
|
+
artifact_writes_total: "Escrituras de artefacto (escritas)",
|
|
42
|
+
artifact_writes_noop: "Escrituras de artefacto (sin cambios)",
|
|
43
|
+
injections_blocked_confidence: "Inyecciones bloqueadas (confianza baja)",
|
|
33
44
|
};
|
|
34
45
|
function originLabel(origin) {
|
|
35
46
|
if (origin === "reflector")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Retrospective.js","sourceRoot":"","sources":["../../plugin/Retrospective.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAkCnC,MAAM,iBAAiB,GAA2B;
|
|
1
|
+
{"version":3,"file":"Retrospective.js","sourceRoot":"","sources":["../../plugin/Retrospective.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* K6-016 — v0.6.0 pull — v2 domain probe (plan §5.7, D6-13).
|
|
3
|
+
*
|
|
4
|
+
* Duck-typed, exception-safe, zero-throw. Inspects the plugin input object
|
|
5
|
+
* for a `skill` domain exposing a callable `source` and a `reference` domain
|
|
6
|
+
* exposing a callable `add`. It never imports a v2 type, never dereferences
|
|
7
|
+
* without a guard, and never throws — an unexpected shape returns the
|
|
8
|
+
* all-false result.
|
|
9
|
+
*/
|
|
10
|
+
export interface Capabilities {
|
|
11
|
+
readonly skills: boolean;
|
|
12
|
+
readonly references: boolean;
|
|
13
|
+
readonly apiVersion: string | null;
|
|
14
|
+
}
|
|
15
|
+
export declare function probe(input: unknown): Capabilities;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* K6-016 — v0.6.0 pull — v2 domain probe (plan §5.7, D6-13).
|
|
3
|
+
*
|
|
4
|
+
* Duck-typed, exception-safe, zero-throw. Inspects the plugin input object
|
|
5
|
+
* for a `skill` domain exposing a callable `source` and a `reference` domain
|
|
6
|
+
* exposing a callable `add`. It never imports a v2 type, never dereferences
|
|
7
|
+
* without a guard, and never throws — an unexpected shape returns the
|
|
8
|
+
* all-false result.
|
|
9
|
+
*/
|
|
10
|
+
const ALL_FALSE = {
|
|
11
|
+
skills: false,
|
|
12
|
+
references: false,
|
|
13
|
+
apiVersion: null,
|
|
14
|
+
};
|
|
15
|
+
function hasCallable(input, domainKey, memberKey) {
|
|
16
|
+
const domain = input[domainKey];
|
|
17
|
+
return (typeof domain === "object" &&
|
|
18
|
+
domain !== null &&
|
|
19
|
+
typeof domain[memberKey] === "function");
|
|
20
|
+
}
|
|
21
|
+
export function probe(input) {
|
|
22
|
+
if (typeof input !== "object" || input === null) {
|
|
23
|
+
return ALL_FALSE;
|
|
24
|
+
}
|
|
25
|
+
try {
|
|
26
|
+
const record = input;
|
|
27
|
+
const apiVersion = typeof record.apiVersion === "string"
|
|
28
|
+
? record.apiVersion
|
|
29
|
+
: null;
|
|
30
|
+
return {
|
|
31
|
+
skills: hasCallable(record, "skill", "source"),
|
|
32
|
+
references: hasCallable(record, "reference", "add"),
|
|
33
|
+
apiVersion,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
// a Proxy whose getter throws must degrade to the all-false result,
|
|
38
|
+
// never propagate (zero-throw contract, plan §5.7)
|
|
39
|
+
return ALL_FALSE;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=capabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../plugin/capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,MAAM,SAAS,GAAiB;IAC/B,MAAM,EAAE,KAAK;IACb,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,IAAI;CAChB,CAAC;AAEF,SAAS,WAAW,CACnB,KAA8B,EAC9B,SAAiB,EACjB,SAAiB;IAEjB,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CACN,OAAO,MAAM,KAAK,QAAQ;QAC1B,MAAM,KAAK,IAAI;QACf,OAAQ,MAAkC,CAAC,SAAS,CAAC,KAAK,UAAU,CACpE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,KAAc;IACnC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACjD,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,KAAgC,CAAC;QAChD,MAAM,UAAU,GACf,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ;YACpC,CAAC,CAAE,MAAM,CAAC,UAAqB;YAC/B,CAAC,CAAC,IAAI,CAAC;QACT,OAAO;YACN,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC;YAC9C,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC;YACnD,UAAU;SACV,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACR,oEAAoE;QACpE,mDAAmD;QACnD,OAAO,SAAS,CAAC;IAClB,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified diff between `before` and `after` for `path`, in git's format:
|
|
3
|
+
* `--- a/<path>` / `+++ b/<path>` headers, `@@ -l,s +l,s @@` hunk headers
|
|
4
|
+
* (count omitted when 1, `0,0` for an empty side), three lines of context and
|
|
5
|
+
* adjacent hunks merged when their context windows overlap. Identical inputs
|
|
6
|
+
* yield the empty string.
|
|
7
|
+
*/
|
|
8
|
+
export declare function unifiedDiff(path: string, before: string, after: string): string;
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
// v0.6.0 (K6-006 / plan §5.2, D6-05) — a minimal deterministic unified-diff
|
|
2
|
+
// generator. Pure, dependency-free, byte-for-byte compatible with
|
|
3
|
+
// `git diff -U3 --no-index` for the fixtures the tests compare.
|
|
4
|
+
//
|
|
5
|
+
// It exists for exactly one reason: approval prompts must show a diff, never
|
|
6
|
+
// prose (D6-05). Determinism is a hard requirement: the output is persisted
|
|
7
|
+
// into `curation_proposals.diff` and compared across runs. No timestamps, no
|
|
8
|
+
// `Object.keys` iteration, no `Set` iteration — arrays only.
|
|
9
|
+
const CONTEXT = 3;
|
|
10
|
+
/**
|
|
11
|
+
* Split text into logical lines. A trailing newline is not part of the line
|
|
12
|
+
* model, so a file that merely gains or loses its final newline produces no
|
|
13
|
+
* spurious final-line hunk.
|
|
14
|
+
*/
|
|
15
|
+
function linesOf(text) {
|
|
16
|
+
if (text === "")
|
|
17
|
+
return [];
|
|
18
|
+
const parts = text.split("\n");
|
|
19
|
+
if (parts[parts.length - 1] === "")
|
|
20
|
+
parts.pop();
|
|
21
|
+
return parts;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* LCS over lines via dynamic programming, then a deterministic walk emitting
|
|
25
|
+
* context / deletion / addition ops. Within each change region deletions are
|
|
26
|
+
* emitted before additions, matching git's block ordering exactly.
|
|
27
|
+
*/
|
|
28
|
+
function computeOps(a, b) {
|
|
29
|
+
const m = a.length;
|
|
30
|
+
const n = b.length;
|
|
31
|
+
const w = n + 1;
|
|
32
|
+
const dp = new Int32Array((m + 1) * w);
|
|
33
|
+
for (let i = m - 1; i >= 0; i--) {
|
|
34
|
+
for (let j = n - 1; j >= 0; j--) {
|
|
35
|
+
dp[i * w + j] =
|
|
36
|
+
a[i] === b[j]
|
|
37
|
+
? dp[(i + 1) * w + j + 1] + 1
|
|
38
|
+
: Math.max(dp[(i + 1) * w + j], dp[i * w + j + 1]);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const ops = [];
|
|
42
|
+
const pendingDel = [];
|
|
43
|
+
const pendingAdd = [];
|
|
44
|
+
const flush = () => {
|
|
45
|
+
for (const line of pendingDel)
|
|
46
|
+
ops.push({ type: "del", line });
|
|
47
|
+
for (const line of pendingAdd)
|
|
48
|
+
ops.push({ type: "add", line });
|
|
49
|
+
pendingDel.length = 0;
|
|
50
|
+
pendingAdd.length = 0;
|
|
51
|
+
};
|
|
52
|
+
let i = 0;
|
|
53
|
+
let j = 0;
|
|
54
|
+
while (i < m && j < n) {
|
|
55
|
+
if (a[i] === b[j]) {
|
|
56
|
+
flush();
|
|
57
|
+
ops.push({ type: "ctx", line: a[i] });
|
|
58
|
+
i++;
|
|
59
|
+
j++;
|
|
60
|
+
}
|
|
61
|
+
else if (dp[(i + 1) * w + j] >= dp[i * w + j + 1]) {
|
|
62
|
+
pendingDel.push(a[i]);
|
|
63
|
+
i++;
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
pendingAdd.push(b[j]);
|
|
67
|
+
j++;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
flush();
|
|
71
|
+
while (i < m) {
|
|
72
|
+
pendingDel.push(a[i]);
|
|
73
|
+
i++;
|
|
74
|
+
}
|
|
75
|
+
flush();
|
|
76
|
+
while (j < n) {
|
|
77
|
+
pendingAdd.push(b[j]);
|
|
78
|
+
j++;
|
|
79
|
+
}
|
|
80
|
+
flush();
|
|
81
|
+
return ops;
|
|
82
|
+
}
|
|
83
|
+
function buildHunks(ops) {
|
|
84
|
+
// Maximal change regions: runs of ops containing at least one del/add.
|
|
85
|
+
const regions = [];
|
|
86
|
+
let regionStart = -1;
|
|
87
|
+
for (let k = 0; k < ops.length; k++) {
|
|
88
|
+
if (ops[k].type !== "ctx") {
|
|
89
|
+
if (regionStart === -1)
|
|
90
|
+
regionStart = k;
|
|
91
|
+
}
|
|
92
|
+
else if (regionStart !== -1) {
|
|
93
|
+
regions.push([regionStart, k]);
|
|
94
|
+
regionStart = -1;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if (regionStart !== -1)
|
|
98
|
+
regions.push([regionStart, ops.length]);
|
|
99
|
+
// Extend each region by CONTEXT lines and merge overlapping windows.
|
|
100
|
+
const windows = [];
|
|
101
|
+
for (const [rs, re] of regions) {
|
|
102
|
+
const start = Math.max(0, rs - CONTEXT);
|
|
103
|
+
const end = Math.min(ops.length, re + CONTEXT);
|
|
104
|
+
const prev = windows[windows.length - 1];
|
|
105
|
+
if (prev !== undefined && start <= prev.end) {
|
|
106
|
+
prev.end = end;
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
windows.push({ start, end });
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
const hunks = [];
|
|
113
|
+
for (const win of windows) {
|
|
114
|
+
let beforeStart = 0;
|
|
115
|
+
let afterStart = 0;
|
|
116
|
+
let countA = 0;
|
|
117
|
+
let countB = 0;
|
|
118
|
+
for (let k = 0; k < win.end; k++) {
|
|
119
|
+
const op = ops[k];
|
|
120
|
+
const inside = k >= win.start;
|
|
121
|
+
if (op.type === "del") {
|
|
122
|
+
if (!inside)
|
|
123
|
+
beforeStart++;
|
|
124
|
+
if (inside)
|
|
125
|
+
countA++;
|
|
126
|
+
}
|
|
127
|
+
else if (op.type === "add") {
|
|
128
|
+
if (!inside)
|
|
129
|
+
afterStart++;
|
|
130
|
+
if (inside)
|
|
131
|
+
countB++;
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
if (!inside) {
|
|
135
|
+
beforeStart++;
|
|
136
|
+
afterStart++;
|
|
137
|
+
}
|
|
138
|
+
if (inside) {
|
|
139
|
+
countA++;
|
|
140
|
+
countB++;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
// 1-based start lines; a side with zero lines starts at 0.
|
|
145
|
+
const startA = countA > 0 ? beforeStart + 1 : 0;
|
|
146
|
+
const startB = countB > 0 ? afterStart + 1 : 0;
|
|
147
|
+
const rangeA = countA === 1 ? `-${startA}` : `-${startA},${countA}`;
|
|
148
|
+
const rangeB = countB === 1 ? `+${startB}` : `+${startB},${countB}`;
|
|
149
|
+
const lines = [];
|
|
150
|
+
for (let k = win.start; k < win.end; k++) {
|
|
151
|
+
const op = ops[k];
|
|
152
|
+
if (op.type === "del")
|
|
153
|
+
lines.push(`-${op.line}`);
|
|
154
|
+
else if (op.type === "add")
|
|
155
|
+
lines.push(`+${op.line}`);
|
|
156
|
+
else
|
|
157
|
+
lines.push(` ${op.line}`);
|
|
158
|
+
}
|
|
159
|
+
hunks.push({ header: `@@ ${rangeA} ${rangeB} @@`, lines });
|
|
160
|
+
}
|
|
161
|
+
return hunks;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Unified diff between `before` and `after` for `path`, in git's format:
|
|
165
|
+
* `--- a/<path>` / `+++ b/<path>` headers, `@@ -l,s +l,s @@` hunk headers
|
|
166
|
+
* (count omitted when 1, `0,0` for an empty side), three lines of context and
|
|
167
|
+
* adjacent hunks merged when their context windows overlap. Identical inputs
|
|
168
|
+
* yield the empty string.
|
|
169
|
+
*/
|
|
170
|
+
export function unifiedDiff(path, before, after) {
|
|
171
|
+
const ops = computeOps(linesOf(before), linesOf(after));
|
|
172
|
+
const hunks = buildHunks(ops);
|
|
173
|
+
if (hunks.length === 0)
|
|
174
|
+
return "";
|
|
175
|
+
const parts = [];
|
|
176
|
+
for (const hunk of hunks) {
|
|
177
|
+
parts.push(hunk.header);
|
|
178
|
+
parts.push(...hunk.lines);
|
|
179
|
+
}
|
|
180
|
+
const header = `--- a/${path}\n+++ b/${path}\n`;
|
|
181
|
+
return `${header}${parts.join("\n")}\n`;
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../plugin/diff.ts"],"names":[],"mappings":"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"}
|
package/dist/plugin/index.d.ts
CHANGED
|
@@ -4,11 +4,13 @@ export interface KevinPluginOptions {
|
|
|
4
4
|
migrationsDir?: string;
|
|
5
5
|
retrospectivesDir?: string;
|
|
6
6
|
throttleMs?: number;
|
|
7
|
+
/** v0.6.0 (K6-018) — test-only override for the pull-bundle root. */
|
|
8
|
+
materializerRoot?: string;
|
|
7
9
|
}
|
|
8
10
|
/**
|
|
9
11
|
* v0.4.0 (K4-021) — settings surfaced by `kevin_config` (plan §8.8).
|
|
10
12
|
* Unknown keys are rejected on `set` unless `strict: false`.
|
|
11
13
|
*/
|
|
12
|
-
export declare const KEVIN_CONFIG_KEYS: readonly ["quality_gate_enabled", "lesson_snippet_injection", "patternminer_enabled", "cross_project_enabled", "llm_reflection_enabled", "tool_calls_dedup_enabled", "deterministic_retrieval", "pre_prompt_budget_tokens", "archive_after_days"];
|
|
14
|
+
export declare const KEVIN_CONFIG_KEYS: readonly ["quality_gate_enabled", "lesson_snippet_injection", "patternminer_enabled", "cross_project_enabled", "llm_reflection_enabled", "tool_calls_dedup_enabled", "deterministic_retrieval", "pre_prompt_budget_tokens", "archive_after_days", "curation_enabled", "agents_md_path", "skill_emission_enabled", "reference_emission_enabled", "injection_confidence_floor"];
|
|
13
15
|
export declare const KevinPlugin: Plugin;
|
|
14
16
|
export default KevinPlugin;
|