@jmtrin/opencode-kevin 0.4.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.
Files changed (76) hide show
  1. package/README.md +580 -360
  2. package/dist/migrations/006_v05_glassbox.sql +118 -0
  3. package/dist/migrations/007_v06_pull.sql +145 -0
  4. package/dist/plugin/Archiver.d.ts +42 -0
  5. package/dist/plugin/Archiver.js +99 -0
  6. package/dist/plugin/Archiver.js.map +1 -0
  7. package/dist/plugin/ArtifactWriter.d.ts +50 -0
  8. package/dist/plugin/ArtifactWriter.js +240 -0
  9. package/dist/plugin/ArtifactWriter.js.map +1 -0
  10. package/dist/plugin/ContextInjector.d.ts +87 -0
  11. package/dist/plugin/ContextInjector.js +212 -44
  12. package/dist/plugin/ContextInjector.js.map +1 -1
  13. package/dist/plugin/Curator.d.ts +96 -0
  14. package/dist/plugin/Curator.js +252 -0
  15. package/dist/plugin/Curator.js.map +1 -0
  16. package/dist/plugin/Feedback.d.ts +67 -0
  17. package/dist/plugin/Feedback.js +138 -0
  18. package/dist/plugin/Feedback.js.map +1 -0
  19. package/dist/plugin/InjectionLedger.d.ts +9 -2
  20. package/dist/plugin/InjectionLedger.js +63 -9
  21. package/dist/plugin/InjectionLedger.js.map +1 -1
  22. package/dist/plugin/Materializer.d.ts +59 -0
  23. package/dist/plugin/Materializer.js +237 -0
  24. package/dist/plugin/Materializer.js.map +1 -0
  25. package/dist/plugin/MemoryService.d.ts +38 -0
  26. package/dist/plugin/MemoryService.js +265 -30
  27. package/dist/plugin/MemoryService.js.map +1 -1
  28. package/dist/plugin/Migrate.js +41 -0
  29. package/dist/plugin/Migrate.js.map +1 -1
  30. package/dist/plugin/QualityGate.d.ts +53 -0
  31. package/dist/plugin/QualityGate.js +50 -8
  32. package/dist/plugin/QualityGate.js.map +1 -1
  33. package/dist/plugin/Retrospective.d.ts +1 -0
  34. package/dist/plugin/Retrospective.js +24 -1
  35. package/dist/plugin/Retrospective.js.map +1 -1
  36. package/dist/plugin/capabilities.d.ts +15 -0
  37. package/dist/plugin/capabilities.js +42 -0
  38. package/dist/plugin/capabilities.js.map +1 -0
  39. package/dist/plugin/confidence.d.ts +3 -1
  40. package/dist/plugin/confidence.js +14 -2
  41. package/dist/plugin/confidence.js.map +1 -1
  42. package/dist/plugin/diff.d.ts +8 -0
  43. package/dist/plugin/diff.js +183 -0
  44. package/dist/plugin/diff.js.map +1 -0
  45. package/dist/plugin/index.d.ts +3 -1
  46. package/dist/plugin/index.js +371 -0
  47. package/dist/plugin/index.js.map +1 -1
  48. package/dist/plugin/inferability.d.ts +32 -0
  49. package/dist/plugin/inferability.js +89 -0
  50. package/dist/plugin/inferability.js.map +1 -0
  51. package/dist/plugin/kevin_approve.d.ts +34 -0
  52. package/dist/plugin/kevin_approve.js +50 -0
  53. package/dist/plugin/kevin_approve.js.map +1 -0
  54. package/dist/plugin/kevin_audit.d.ts +95 -0
  55. package/dist/plugin/kevin_audit.js +233 -0
  56. package/dist/plugin/kevin_audit.js.map +1 -0
  57. package/dist/plugin/kevin_propose.d.ts +23 -0
  58. package/dist/plugin/kevin_propose.js +15 -0
  59. package/dist/plugin/kevin_propose.js.map +1 -0
  60. package/dist/plugin/kevin_publish.d.ts +38 -0
  61. package/dist/plugin/kevin_publish.js +19 -0
  62. package/dist/plugin/kevin_publish.js.map +1 -0
  63. package/dist/plugin/kevin_why.js +23 -2
  64. package/dist/plugin/kevin_why.js.map +1 -1
  65. package/dist/plugin/metrics.d.ts +32 -1
  66. package/dist/plugin/metrics.js +86 -2
  67. package/dist/plugin/metrics.js.map +1 -1
  68. package/dist/plugin/replay-types.d.ts +327 -0
  69. package/dist/plugin/replay-types.js +65 -0
  70. package/dist/plugin/replay-types.js.map +1 -0
  71. package/dist/plugin/replay.d.ts +36 -0
  72. package/dist/plugin/replay.js +203 -0
  73. package/dist/plugin/replay.js.map +1 -0
  74. package/migrations/006_v05_glassbox.sql +118 -0
  75. package/migrations/007_v06_pull.sql +145 -0
  76. package/package.json +3 -2
@@ -40,6 +40,23 @@ 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;
49
+ }
50
+ /**
51
+ * v0.5.0 (K5-006 / plan §5.2, D5-04) — the reason a memory was rejected
52
+ * (or admitted). Every rejection reason maps 1:1 to an
53
+ * `injections_blocked_*` counter; a silent boolean is an unmeasurable
54
+ * policy (principle 16).
55
+ */
56
+ export type GateReason = "ok" | "low_confidence" | "seen_this_session" | "ignored" | "not_active" | "recurrence" | "weak";
57
+ export interface GateVerdict {
58
+ readonly allowed: boolean;
59
+ readonly reason: GateReason;
43
60
  }
44
61
  export declare const QualityGate: {
45
62
  /**
@@ -61,6 +78,10 @@ export declare const QualityGate: {
61
78
  * 4. it is actionable AND strong — weak lessons with generic suggestions
62
79
  * are never injected (unless `qualityGateEnabled = false` for debug,
63
80
  * K4-023).
81
+ *
82
+ * v0.5.0 (K5-006 / plan §5.2, D5-04) — the boolean form is a thin
83
+ * wrapper over `canInjectVerdict`; the reason is never discarded by
84
+ * callers that use the verdict form.
64
85
  */
65
86
  canInject(memory: {
66
87
  id: string;
@@ -68,4 +89,36 @@ export declare const QualityGate: {
68
89
  strength?: "strong" | "weak";
69
90
  isActionable?: boolean;
70
91
  }, ctx: InjectionContext, qualityGateEnabled?: boolean): boolean;
92
+ /**
93
+ * v0.5.0 (K5-006 / plan §5.2, D5-04) — the verdict form of `canInject`.
94
+ * Branch order preserves the v0.4.0 sequence with `ignored` inserted
95
+ * second:
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)
100
+ * 1. seen this session → `seen_this_session`
101
+ * 2. `memory.ignored === true` → `ignored`
102
+ * 3. status !== 'active' → `not_active`
103
+ * 4. recurrence in session → `recurrence`
104
+ * 5. weak / not actionable → `weak` (skipped entirely when
105
+ * `qualityGateEnabled === false` — the debug flag bypasses the
106
+ * quality check only, never the seen/ignored/status/recurrence bans)
107
+ *
108
+ * `ignored` is a human verdict (D5-07) and is enforced even in debug
109
+ * mode: the flag excludes a memory from retrieval entirely, so the gate
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.
115
+ */
116
+ canInjectVerdict(memory: {
117
+ id: string;
118
+ status?: string;
119
+ strength?: "strong" | "weak";
120
+ isActionable?: boolean;
121
+ ignored?: boolean;
122
+ confidence?: number;
123
+ }, ctx: InjectionContext, qualityGateEnabled?: boolean): GateVerdict;
71
124
  };
@@ -57,22 +57,64 @@ export const QualityGate = {
57
57
  * 4. it is actionable AND strong — weak lessons with generic suggestions
58
58
  * are never injected (unless `qualityGateEnabled = false` for debug,
59
59
  * K4-023).
60
+ *
61
+ * v0.5.0 (K5-006 / plan §5.2, D5-04) — the boolean form is a thin
62
+ * wrapper over `canInjectVerdict`; the reason is never discarded by
63
+ * callers that use the verdict form.
60
64
  */
61
65
  canInject(memory, ctx, qualityGateEnabled = true) {
62
- if (ctx.seenThisSession.has(memory.id))
63
- return false;
66
+ return this.canInjectVerdict(memory, ctx, qualityGateEnabled).allowed;
67
+ },
68
+ /**
69
+ * v0.5.0 (K5-006 / plan §5.2, D5-04) — the verdict form of `canInject`.
70
+ * Branch order preserves the v0.4.0 sequence with `ignored` inserted
71
+ * second:
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)
76
+ * 1. seen this session → `seen_this_session`
77
+ * 2. `memory.ignored === true` → `ignored`
78
+ * 3. status !== 'active' → `not_active`
79
+ * 4. recurrence in session → `recurrence`
80
+ * 5. weak / not actionable → `weak` (skipped entirely when
81
+ * `qualityGateEnabled === false` — the debug flag bypasses the
82
+ * quality check only, never the seen/ignored/status/recurrence bans)
83
+ *
84
+ * `ignored` is a human verdict (D5-07) and is enforced even in debug
85
+ * mode: the flag excludes a memory from retrieval entirely, so the gate
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.
91
+ */
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
+ }
98
+ if (ctx.seenThisSession.has(memory.id)) {
99
+ return { allowed: false, reason: "seen_this_session" };
100
+ }
101
+ if (memory.ignored === true) {
102
+ return { allowed: false, reason: "ignored" };
103
+ }
64
104
  if (memory.status !== undefined && memory.status !== "active") {
65
- return false;
105
+ return { allowed: false, reason: "not_active" };
106
+ }
107
+ if (ctx.recurrenceCount > 0) {
108
+ return { allowed: false, reason: "recurrence" };
66
109
  }
67
- if (ctx.recurrenceCount > 0)
68
- return false;
69
110
  if (!memory.isActionable || memory.strength === "weak") {
70
- if (qualityGateEnabled)
71
- return false;
111
+ if (qualityGateEnabled) {
112
+ return { allowed: false, reason: "weak" };
113
+ }
72
114
  // K4-023 debug mode: weak lessons are admitted but must be
73
115
  // flagged by the caller (ContextInjector adds the marker).
74
116
  }
75
- return true;
117
+ return { allowed: true, reason: "ok" };
76
118
  },
77
119
  };
78
120
  //# sourceMappingURL=QualityGate.js.map
@@ -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;AA6BD,MAAM,CAAC,MAAM,WAAW,GAAG;IAC1B;;;OAGG;IACH,eAAe,CACd,QAAiC,EACjC,SAAiB;QAEjB,IAAI,QAAQ,EAAE,IAAI;YAAE,OAAO,QAAQ,CAAC,IAAI,CAAC;QACzC,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,sEAAsE;IACtE,QAAQ,CACP,MAAqB,EACrB,QAAiC,EACjC,SAAiB;QAEjB,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACvD,6DAA6D;QAC7D,2DAA2D;QAC3D,8DAA8D;QAC9D,MAAM,YAAY,GAAG,CAAC,OAAO,IAAI,QAAQ,EAAE,IAAI,IAAI,IAAI,CAAC;QACxD,MAAM,QAAQ,GACb,QAAQ,EAAE,IAAI,IAAI,IAAI,IAAI,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;QACrE,OAAO;YACN,SAAS,EAAE,OAAO;YAClB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,YAAY;YACZ,QAAQ;SACR,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,SAAS,CACR,MAKC,EACD,GAAqB,EACrB,kBAAkB,GAAG,IAAI;QAEzB,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAAE,OAAO,KAAK,CAAC;QACrD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/D,OAAO,KAAK,CAAC;QACd,CAAC;QACD,IAAI,GAAG,CAAC,eAAe,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;YACxD,IAAI,kBAAkB;gBAAE,OAAO,KAAK,CAAC;YACrC,2DAA2D;YAC3D,2DAA2D;QAC5D,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC"}
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;AA0DD,MAAM,CAAC,MAAM,WAAW,GAAG;IAC1B;;;OAGG;IACH,eAAe,CACd,QAAiC,EACjC,SAAiB;QAEjB,IAAI,QAAQ,EAAE,IAAI;YAAE,OAAO,QAAQ,CAAC,IAAI,CAAC;QACzC,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,sEAAsE;IACtE,QAAQ,CACP,MAAqB,EACrB,QAAiC,EACjC,SAAiB;QAEjB,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACvD,6DAA6D;QAC7D,2DAA2D;QAC3D,8DAA8D;QAC9D,MAAM,YAAY,GAAG,CAAC,OAAO,IAAI,QAAQ,EAAE,IAAI,IAAI,IAAI,CAAC;QACxD,MAAM,QAAQ,GACb,QAAQ,EAAE,IAAI,IAAI,IAAI,IAAI,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;QACrE,OAAO;YACN,SAAS,EAAE,OAAO;YAClB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,YAAY;YACZ,QAAQ;SACR,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,SAAS,CACR,MAKC,EACD,GAAqB,EACrB,kBAAkB,GAAG,IAAI;QAEzB,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,kBAAkB,CAAC,CAAC,OAAO,CAAC;IACvE,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,gBAAgB,CACf,MAQC,EACD,GAAqB,EACrB,kBAAkB,GAAG,IAAI;QAEzB,IACC,MAAM,CAAC,UAAU,KAAK,SAAS;YAC/B,GAAG,CAAC,eAAe,KAAK,SAAS;YACjC,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,eAAe,EACtC,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;QACrD,CAAC;QACD,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;YACxC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;QACxD,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAC7B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAC9C,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;QACjD,CAAC;QACD,IAAI,GAAG,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;QACjD,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;YACxD,IAAI,kBAAkB,EAAE,CAAC;gBACxB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YAC3C,CAAC;YACD,2DAA2D;YAC3D,2DAA2D;QAC5D,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACxC,CAAC;CACD,CAAC"}
@@ -4,6 +4,7 @@ import type { Metrics } from "./metrics.js";
4
4
  export interface RetrospectiveOptions {
5
5
  dir?: string;
6
6
  }
7
+ export declare const METRIC_KEY_LABELS: Record<string, string>;
7
8
  export declare class Retrospective {
8
9
  private store;
9
10
  private memoryService;
@@ -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
- const METRIC_KEY_LABELS = {
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",
@@ -18,6 +20,27 @@ const METRIC_KEY_LABELS = {
18
20
  patterns_causal: "Patrones causales",
19
21
  causal_links: "Enlaces causales",
20
22
  memories_superseded: "Memorias superadas",
23
+ // v0.5.0 (K5-004 / plan §8.3) — the K5 metric keys need their own
24
+ // Spanish labels; the e2e BUG-014 regression test forbids raw-key
25
+ // fallback for any key in METRIC_KEYS.
26
+ injections_inconclusive: "Inyecciones sin conclusión",
27
+ injections_blocked_seen: "Inyecciones bloqueadas (ya vistas)",
28
+ injections_blocked_weak: "Inyecciones bloqueadas (débiles)",
29
+ injections_blocked_recurrence: "Inyecciones bloqueadas (recurrentes)",
30
+ injections_blocked_stale: "Inyecciones bloqueadas (obsoletas)",
31
+ injections_blocked_ignored: "Inyecciones bloqueadas (ignoradas)",
32
+ feedback_positive_total: "Feedback positivo total",
33
+ feedback_negative_total: "Feedback negativo total",
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)",
21
44
  };
22
45
  function originLabel(origin) {
23
46
  if (origin === "reflector")
@@ -1 +1 @@
1
- {"version":3,"file":"Retrospective.js","sourceRoot":"","sources":["../../plugin/Retrospective.ts"],"names":[],"mappings":"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"}
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"}
@@ -3,4 +3,6 @@ export declare const CONFIDENCE_MAX = 0.95;
3
3
  export declare const CONFIDENCE_BASE = 0.5;
4
4
  export declare const EVIDENCE_STEP = 0.1;
5
5
  export declare const RECURRENCE_PENALTY = 0.15;
6
- export declare function computeConfidence(evidenceCount: number, recurrenceCount: number): number;
6
+ export declare const FEEDBACK_POSITIVE_STEP = 0.05;
7
+ export declare const FEEDBACK_NEGATIVE_STEP = 0.1;
8
+ export declare function computeConfidence(evidenceCount: number, recurrenceCount: number, positiveFeedback?: number, negativeFeedback?: number): number;
@@ -9,15 +9,27 @@
9
9
  //
10
10
  // Used by `MemoryService.promoteToPattern`, `MemoryService.mapRow` and
11
11
  // `kevin_why` — keep the formula here, never inline it again.
12
+ //
13
+ // v0.5.0 (K5-010 / plan §5.3, D5-02) — human feedback joins the formula as
14
+ // a second, independent evidence axis. Steps are deliberately SMALLER than
15
+ // the causal steps: feedback is sparse, one-sided, and judgemental, while
16
+ // evidence_count counts confirmed, reproducible fixes. A single negative
17
+ // verdict (0.1) can offset one confirmed fix (0.1), but cannot alone sink
18
+ // a well-evidenced pattern — the causal evidence must agree (plan §5.3,
19
+ // "feedback cannot override causal evidence, only nudge it").
12
20
  export const CONFIDENCE_MIN = 0.05;
13
21
  export const CONFIDENCE_MAX = 0.95;
14
22
  export const CONFIDENCE_BASE = 0.5;
15
23
  export const EVIDENCE_STEP = 0.1;
16
24
  export const RECURRENCE_PENALTY = 0.15;
17
- export function computeConfidence(evidenceCount, recurrenceCount) {
25
+ export const FEEDBACK_POSITIVE_STEP = 0.05;
26
+ export const FEEDBACK_NEGATIVE_STEP = 0.1;
27
+ export function computeConfidence(evidenceCount, recurrenceCount, positiveFeedback = 0, negativeFeedback = 0) {
18
28
  const raw = CONFIDENCE_BASE +
19
29
  EVIDENCE_STEP * evidenceCount -
20
- RECURRENCE_PENALTY * recurrenceCount;
30
+ RECURRENCE_PENALTY * recurrenceCount +
31
+ FEEDBACK_POSITIVE_STEP * positiveFeedback -
32
+ FEEDBACK_NEGATIVE_STEP * negativeFeedback;
21
33
  return Math.min(CONFIDENCE_MAX, Math.max(CONFIDENCE_MIN, raw));
22
34
  }
23
35
  //# sourceMappingURL=confidence.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"confidence.js","sourceRoot":"","sources":["../../plugin/confidence.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,EAAE;AACF,0EAA0E;AAC1E,sEAAsE;AACtE,oEAAoE;AACpE,mEAAmE;AACnE,EAAE;AACF,qFAAqF;AACrF,EAAE;AACF,uEAAuE;AACvE,8DAA8D;AAE9D,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AACnC,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AACnC,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC;AACnC,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC;AACjC,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEvC,MAAM,UAAU,iBAAiB,CAChC,aAAqB,EACrB,eAAuB;IAEvB,MAAM,GAAG,GACR,eAAe;QACf,aAAa,GAAG,aAAa;QAC7B,kBAAkB,GAAG,eAAe,CAAC;IACtC,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;AAChE,CAAC"}
1
+ {"version":3,"file":"confidence.js","sourceRoot":"","sources":["../../plugin/confidence.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,EAAE;AACF,0EAA0E;AAC1E,sEAAsE;AACtE,oEAAoE;AACpE,mEAAmE;AACnE,EAAE;AACF,qFAAqF;AACrF,EAAE;AACF,uEAAuE;AACvE,8DAA8D;AAC9D,EAAE;AACF,2EAA2E;AAC3E,2EAA2E;AAC3E,0EAA0E;AAC1E,yEAAyE;AACzE,0EAA0E;AAC1E,wEAAwE;AACxE,8DAA8D;AAE9D,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AACnC,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AACnC,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC;AACnC,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC;AACjC,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AACvC,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAC3C,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAE1C,MAAM,UAAU,iBAAiB,CAChC,aAAqB,EACrB,eAAuB,EACvB,gBAAgB,GAAG,CAAC,EACpB,gBAAgB,GAAG,CAAC;IAEpB,MAAM,GAAG,GACR,eAAe;QACf,aAAa,GAAG,aAAa;QAC7B,kBAAkB,GAAG,eAAe;QACpC,sBAAsB,GAAG,gBAAgB;QACzC,sBAAsB,GAAG,gBAAgB,CAAC;IAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;AAChE,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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"}
@@ -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"];
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;