@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.
Files changed (61) hide show
  1. package/README.md +580 -436
  2. package/dist/migrations/007_v06_pull.sql +145 -0
  3. package/dist/plugin/Archiver.js +4 -3
  4. package/dist/plugin/Archiver.js.map +1 -1
  5. package/dist/plugin/ArtifactWriter.d.ts +50 -0
  6. package/dist/plugin/ArtifactWriter.js +240 -0
  7. package/dist/plugin/ArtifactWriter.js.map +1 -0
  8. package/dist/plugin/ContextInjector.d.ts +15 -0
  9. package/dist/plugin/ContextInjector.js +46 -11
  10. package/dist/plugin/ContextInjector.js.map +1 -1
  11. package/dist/plugin/Curator.d.ts +96 -0
  12. package/dist/plugin/Curator.js +252 -0
  13. package/dist/plugin/Curator.js.map +1 -0
  14. package/dist/plugin/Feedback.js +4 -3
  15. package/dist/plugin/Feedback.js.map +1 -1
  16. package/dist/plugin/Materializer.d.ts +59 -0
  17. package/dist/plugin/Materializer.js +237 -0
  18. package/dist/plugin/Materializer.js.map +1 -0
  19. package/dist/plugin/MemoryService.d.ts +19 -0
  20. package/dist/plugin/MemoryService.js +150 -19
  21. package/dist/plugin/MemoryService.js.map +1 -1
  22. package/dist/plugin/Migrate.js +20 -0
  23. package/dist/plugin/Migrate.js.map +1 -1
  24. package/dist/plugin/QualityGate.d.ts +15 -1
  25. package/dist/plugin/QualityGate.js +12 -0
  26. package/dist/plugin/QualityGate.js.map +1 -1
  27. package/dist/plugin/Retrospective.d.ts +1 -0
  28. package/dist/plugin/Retrospective.js +12 -1
  29. package/dist/plugin/Retrospective.js.map +1 -1
  30. package/dist/plugin/capabilities.d.ts +15 -0
  31. package/dist/plugin/capabilities.js +42 -0
  32. package/dist/plugin/capabilities.js.map +1 -0
  33. package/dist/plugin/diff.d.ts +8 -0
  34. package/dist/plugin/diff.js +183 -0
  35. package/dist/plugin/diff.js.map +1 -0
  36. package/dist/plugin/index.d.ts +3 -1
  37. package/dist/plugin/index.js +221 -2
  38. package/dist/plugin/index.js.map +1 -1
  39. package/dist/plugin/inferability.d.ts +32 -0
  40. package/dist/plugin/inferability.js +89 -0
  41. package/dist/plugin/inferability.js.map +1 -0
  42. package/dist/plugin/kevin_approve.d.ts +34 -0
  43. package/dist/plugin/kevin_approve.js +50 -0
  44. package/dist/plugin/kevin_approve.js.map +1 -0
  45. package/dist/plugin/kevin_audit.d.ts +47 -1
  46. package/dist/plugin/kevin_audit.js +93 -1
  47. package/dist/plugin/kevin_audit.js.map +1 -1
  48. package/dist/plugin/kevin_propose.d.ts +23 -0
  49. package/dist/plugin/kevin_propose.js +15 -0
  50. package/dist/plugin/kevin_propose.js.map +1 -0
  51. package/dist/plugin/kevin_publish.d.ts +38 -0
  52. package/dist/plugin/kevin_publish.js +19 -0
  53. package/dist/plugin/kevin_publish.js.map +1 -0
  54. package/dist/plugin/metrics.d.ts +12 -1
  55. package/dist/plugin/metrics.js +39 -0
  56. package/dist/plugin/metrics.js.map +1 -1
  57. package/dist/plugin/replay-types.d.ts +6 -6
  58. package/dist/plugin/replay.js +10 -0
  59. package/dist/plugin/replay.js.map +1 -1
  60. package/migrations/007_v06_pull.sql +145 -0
  61. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kevin_approve.js","sourceRoot":"","sources":["../../plugin/kevin_approve.ts"],"names":[],"mappings":"AAiDA,MAAM,UAAU,YAAY,CAC3B,KAAY,EACZ,aAA4B,EAC5B,OAAgB,EAChB,MAAsB,EACtB,OAAuB,EACvB,IAAiB;IAEjB,MAAM,GAAG,GAAG,KAAK;SACf,OAAO,CACP;yCACsC,CACtC;SACA,GAAG,CAAC,IAAI,CAAC,UAAU,CAA4B,CAAC;IAClD,IAAI,CAAC,GAAG,EAAE,CAAC;QACV,OAAO;YACN,KAAK,EAAE,WAAW;YAClB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,OAAO,EAAE,wBAAwB,IAAI,CAAC,UAAU,IAAI;SACpD,CAAC;IACH,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO;YACN,KAAK,EAAE,aAAa;YACpB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,OAAO,EAAE,aAAa,IAAI,CAAC,UAAU,QAAQ,GAAG,CAAC,MAAM,gBAAgB;SACvE,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC9C,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC;QACvC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAC5D,CAAC;IAED,yEAAyE;IACzE,wEAAwE;IACxE,yEAAyE;IACzE,sEAAsE;IACtE,oEAAoE;IACpE,oEAAoE;IACpE,iDAAiD;IACjD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACpD,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAC/C,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;IAClE,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC;IACvC,OAAO;QACN,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,MAAM,EAAE,SAAS;QACjB,OAAO;QACP,OAAO;KACP,CAAC;AACH,CAAC;AAED,SAAS,SAAS;IACjB,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAChE,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { Store } from "./Store.js";
2
+ import type { Capabilities } from "./capabilities.js";
2
3
  import type { Metrics } from "./metrics.js";
3
4
  /**
4
5
  * v0.5.0 (K5-016 / plan §5.7) — `kevin_audit`.
@@ -12,6 +13,11 @@ import type { Metrics } from "./metrics.js";
12
13
  * Pre-006 databases degrade gracefully: any block that fails (missing column
13
14
  * or table) falls back to its zero value and the report is flagged
14
15
  * `"partial": true` instead of throwing.
16
+ *
17
+ * v0.6.0 (K6-023 / plan §5.8) — the `channels` and `curation` blocks are the
18
+ * release's own scoreboard. On a pre-007 database they are **omitted** (not
19
+ * zero-valued) and `"partial": true` is set: a report that cannot answer
20
+ * "do the pull channels beat push?" must say so rather than suggest it can.
15
21
  */
16
22
  export interface AuditReport {
17
23
  memories: {
@@ -44,6 +50,46 @@ export interface AuditReport {
44
50
  compacting: number;
45
51
  };
46
52
  settings: Record<string, string>;
53
+ channels?: ChannelReport;
54
+ curation?: CurationReport;
47
55
  partial: boolean;
48
56
  }
49
- export declare function buildAudit(store: Store, metrics: Metrics): AuditReport;
57
+ /**
58
+ * v0.6.0 (K6-023 / plan §5.8) — three-channel comparison on the same axes.
59
+ * `skill_emission` / `reference_emission` distinguish the three states a
60
+ * channel can be in: "unavailable" (v1 host, no domain on the plugin input),
61
+ * "off" (capable host, setting '0'), "on" (capable host, setting '1').
62
+ * Collapsing "unavailable" and "off" would make "my host is too old"
63
+ * indistinguishable from "I turned it off".
64
+ */
65
+ export type EmissionState = "on" | "off" | "unavailable";
66
+ export interface ChannelReport {
67
+ push: {
68
+ tokens_pre_prompt: number;
69
+ tokens_compacting: number;
70
+ injections_total: number;
71
+ precision_rate: number;
72
+ coverage_rate: number;
73
+ budget_tokens: number;
74
+ };
75
+ pull: {
76
+ proposals_created: number;
77
+ proposals_approved: number;
78
+ proposals_rejected: number;
79
+ artifact_writes_total: number;
80
+ artifact_writes_noop: number;
81
+ references_registered: number;
82
+ skills_registered: number;
83
+ skill_emission: EmissionState;
84
+ reference_emission: EmissionState;
85
+ };
86
+ }
87
+ export interface CurationReport {
88
+ eligible: number;
89
+ curated: number;
90
+ inferable: number;
91
+ non_inferable: number;
92
+ unknown: number;
93
+ proposals_by_status: Record<string, number>;
94
+ }
95
+ export declare function buildAudit(store: Store, metrics: Metrics, capabilities?: Capabilities): AuditReport;
@@ -1,3 +1,9 @@
1
+ import { effectivePrePromptCap } from "./ContextInjector.js";
2
+ const ALL_FALSE_CAPABILITIES = {
3
+ skills: false,
4
+ references: false,
5
+ apiVersion: null,
6
+ };
1
7
  function groupCounts(store, column) {
2
8
  const rows = store
3
9
  .prepare(`SELECT ${column} AS k, COUNT(*) AS n FROM memories GROUP BY ${column}`)
@@ -12,7 +18,7 @@ function scalar(store, sql) {
12
18
  const row = store.prepare(sql).get();
13
19
  return row.n ?? 0;
14
20
  }
15
- export function buildAudit(store, metrics) {
21
+ export function buildAudit(store, metrics, capabilities = ALL_FALSE_CAPABILITIES) {
16
22
  let partial = false;
17
23
  // Memories block: `total` + the three GROUP BYs are pre-006 safe; the
18
24
  // lifecycle counters need the 006 columns and fall back separately.
@@ -128,6 +134,90 @@ export function buildAudit(store, metrics) {
128
134
  catch {
129
135
  partial = true;
130
136
  }
137
+ // v0.6.0 (K6-023 / plan §5.8) — channels + curation. Both blocks are
138
+ // gated on migration 007's schema: on a pre-007 database they are
139
+ // OMITTED (not zero-valued) and `partial` is set, so the release's
140
+ // scoreboard is never presented as computed when it cannot be.
141
+ let channels;
142
+ let curation;
143
+ let hasSchema007 = false;
144
+ try {
145
+ store.prepare("SELECT 1 FROM curation_proposals LIMIT 1").get();
146
+ hasSchema007 = true;
147
+ }
148
+ catch {
149
+ hasSchema007 = false;
150
+ }
151
+ if (hasSchema007) {
152
+ try {
153
+ const emission = (capable, key) => {
154
+ if (!capable)
155
+ return "unavailable";
156
+ return settings[key] === "1" ? "on" : "off";
157
+ };
158
+ const registered = (key) => {
159
+ const row = store
160
+ .prepare("SELECT value FROM kevin_metrics WHERE key = ?")
161
+ .get(key);
162
+ return row?.value ?? 0;
163
+ };
164
+ channels = {
165
+ push: {
166
+ tokens_pre_prompt: metrics.get("tokens_injected_pre_prompt"),
167
+ tokens_compacting: metrics.get("tokens_injected_compacting"),
168
+ injections_total: metrics.get("injections_total"),
169
+ precision_rate: metrics.precisionRate(),
170
+ coverage_rate: metrics.coverageRate(),
171
+ // The EFFECTIVE cap (K6-021 clamp semantics), not the raw
172
+ // setting: the channel comparison must use the budget the
173
+ // push channel actually charges against.
174
+ budget_tokens: effectivePrePromptCap(settings.pre_prompt_budget_tokens),
175
+ },
176
+ pull: {
177
+ proposals_created: metrics.get("proposals_created"),
178
+ // "approved" is the human decision: approved + applied.
179
+ proposals_approved: metrics.get("proposals_approved"),
180
+ proposals_rejected: metrics.get("proposals_rejected"),
181
+ artifact_writes_total: metrics.get("artifact_writes_total"),
182
+ artifact_writes_noop: metrics.get("artifact_writes_noop"),
183
+ references_registered: registered("references_registered"),
184
+ skills_registered: registered("skills_registered"),
185
+ skill_emission: emission(capabilities.skills, "skill_emission_enabled"),
186
+ reference_emission: emission(capabilities.references, "reference_emission_enabled"),
187
+ },
188
+ };
189
+ }
190
+ catch {
191
+ partial = true;
192
+ channels = undefined;
193
+ }
194
+ try {
195
+ const proposalRows = store
196
+ .prepare("SELECT status, COUNT(*) AS n FROM curation_proposals GROUP BY status")
197
+ .all();
198
+ const byStatus = {};
199
+ for (const r of proposalRows) {
200
+ byStatus[r.status] = r.n;
201
+ }
202
+ curation = {
203
+ // The Curator predicate is `inferable != 1` (plan §5.5): an
204
+ // unclassified (NULL) memory must not be silently withheld.
205
+ eligible: scalar(store, "SELECT COUNT(*) AS n FROM memories WHERE inferable IS NOT 1"),
206
+ curated: scalar(store, "SELECT COUNT(*) AS n FROM memories WHERE curated = 1"),
207
+ inferable: scalar(store, "SELECT COUNT(*) AS n FROM memories WHERE inferable = 1"),
208
+ non_inferable: scalar(store, "SELECT COUNT(*) AS n FROM memories WHERE inferable = 0"),
209
+ unknown: scalar(store, "SELECT COUNT(*) AS n FROM memories WHERE inferable IS NULL"),
210
+ proposals_by_status: byStatus,
211
+ };
212
+ }
213
+ catch {
214
+ partial = true;
215
+ curation = undefined;
216
+ }
217
+ }
218
+ else {
219
+ partial = true;
220
+ }
131
221
  return {
132
222
  memories,
133
223
  injections,
@@ -135,6 +225,8 @@ export function buildAudit(store, metrics) {
135
225
  feedback,
136
226
  tokens,
137
227
  settings,
228
+ channels,
229
+ curation,
138
230
  partial,
139
231
  };
140
232
  }
@@ -1 +1 @@
1
- {"version":3,"file":"kevin_audit.js","sourceRoot":"","sources":["../../plugin/kevin_audit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kevin_audit.js","sourceRoot":"","sources":["../../plugin/kevin_audit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAqG7D,MAAM,sBAAsB,GAAiB;IAC5C,MAAM,EAAE,KAAK;IACb,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,IAAI;CAChB,CAAC;AAEF,SAAS,WAAW,CAAC,KAAY,EAAE,MAAc;IAChD,MAAM,IAAI,GAAG,KAAK;SAChB,OAAO,CACP,UAAU,MAAM,+CAA+C,MAAM,EAAE,CACvE;SACA,GAAG,EAAuC,CAAC;IAC7C,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACtB,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,SAAS,MAAM,CAAC,KAAY,EAAE,GAAW;IACxC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAmB,CAAC;IACtD,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,UAAU,CACzB,KAAY,EACZ,OAAgB,EAChB,eAA6B,sBAAsB;IAEnD,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,sEAAsE;IACtE,oEAAoE;IACpE,IAAI,QAAQ,GAA4B;QACvC,KAAK,EAAE,CAAC;QACR,SAAS,EAAE,EAAE;QACb,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,CAAC;QACX,aAAa,EAAE,CAAC;QAChB,sBAAsB,EAAE,CAAC;KACzB,CAAC;IACF,IAAI,CAAC;QACJ,QAAQ,GAAG;YACV,GAAG,QAAQ;YACX,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,oCAAoC,CAAC;YAC1D,SAAS,EAAE,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC;YACvC,SAAS,EAAE,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC;YACvC,OAAO,EAAE,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC;SACnC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,GAAG,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,CAAC;QACJ,QAAQ,GAAG;YACV,GAAG,QAAQ;YACX,OAAO,EAAE,MAAM,CACd,KAAK,EACL,sDAAsD,CACtD;YACD,QAAQ,EAAE,MAAM,CACf,KAAK,EACL,8DAA8D,CAC9D;YACD,aAAa,EAAE,MAAM,CACpB,KAAK,EACL,yFAAyF,CACzF;YACD,sBAAsB,EAAE,MAAM,CAC7B,KAAK,EACL,8FAA8F,CAC9F;SACD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,GAAG,IAAI,CAAC;IAChB,CAAC;IAED,mEAAmE;IACnE,sEAAsE;IACtE,IAAI,UAAU,GAA8B;QAC3C,KAAK,EAAE,CAAC;QACR,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,CAAC;QACd,YAAY,EAAE,CAAC;QACf,UAAU,EAAE,CAAC;QACb,cAAc,EAAE,CAAC;QACjB,aAAa,EAAE,CAAC;KAChB,CAAC;IACF,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,KAAK;aAChB,OAAO,CACP,sEAAsE,CACtE;aACA,GAAG,EAAsC,CAAC;QAC5C,MAAM,MAAM,GAA2B;YACtC,UAAU,EAAE,CAAC;YACb,SAAS,EAAE,CAAC;YACZ,WAAW,EAAE,CAAC;YACd,YAAY,EAAE,CAAC;SACf,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACtB,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;QACD,UAAU,GAAG;YACZ,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5C,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,cAAc,EAAE,OAAO,CAAC,aAAa,EAAE;YACvC,aAAa,EAAE,OAAO,CAAC,YAAY,EAAE;SACrC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,GAAG,IAAI,CAAC;IAChB,CAAC;IAED,wEAAwE;IACxE,IAAI,QAAQ,GAA4B;QACvC,QAAQ,EAAE,CAAC;QACX,QAAQ,EAAE,CAAC;QACX,UAAU,EAAE,EAAE;KACd,CAAC;IACF,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,KAAK;aAChB,OAAO,CACP,qEAAqE,CACrE;aACA,GAAG,EAAsC,CAAC;QAC5C,MAAM,SAAS,GAA2B,EAAE,CAAC;QAC7C,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACtB,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QACD,QAAQ,GAAG;YACV,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;YAChD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;YAChD,UAAU,EAAE,SAAS;SACrB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,GAAG,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAE1C,MAAM,MAAM,GAAG;QACd,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;QACrD,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;KACrD,CAAC;IAEF,IAAI,QAAQ,GAA2B,EAAE,CAAC;IAC1C,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,KAAK;aAChB,OAAO,CAAC,uCAAuC,CAAC;aAChD,GAAG,EAAsC,CAAC;QAC5C,QAAQ,GAAG,EAAE,CAAC;QACd,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACtB,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QAC3B,CAAC;IACF,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,GAAG,IAAI,CAAC;IAChB,CAAC;IAED,qEAAqE;IACrE,kEAAkE;IAClE,mEAAmE;IACnE,+DAA+D;IAC/D,IAAI,QAAmC,CAAC;IACxC,IAAI,QAAoC,CAAC;IACzC,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,CAAC;QACJ,KAAK,CAAC,OAAO,CAAC,0CAA0C,CAAC,CAAC,GAAG,EAAE,CAAC;QAChE,YAAY,GAAG,IAAI,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACR,YAAY,GAAG,KAAK,CAAC;IACtB,CAAC;IACD,IAAI,YAAY,EAAE,CAAC;QAClB,IAAI,CAAC;YACJ,MAAM,QAAQ,GAAG,CAAC,OAAgB,EAAE,GAAW,EAAiB,EAAE;gBACjE,IAAI,CAAC,OAAO;oBAAE,OAAO,aAAa,CAAC;gBACnC,OAAO,QAAQ,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;YAC7C,CAAC,CAAC;YACF,MAAM,UAAU,GAAG,CAAC,GAAW,EAAU,EAAE;gBAC1C,MAAM,GAAG,GAAG,KAAK;qBACf,OAAO,CAAC,+CAA+C,CAAC;qBACxD,GAAG,CAAC,GAAG,CAAkC,CAAC;gBAC5C,OAAO,GAAG,EAAE,KAAK,IAAI,CAAC,CAAC;YACxB,CAAC,CAAC;YACF,QAAQ,GAAG;gBACV,IAAI,EAAE;oBACL,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;oBAC5D,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;oBAC5D,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;oBACjD,cAAc,EAAE,OAAO,CAAC,aAAa,EAAE;oBACvC,aAAa,EAAE,OAAO,CAAC,YAAY,EAAE;oBACrC,0DAA0D;oBAC1D,0DAA0D;oBAC1D,yCAAyC;oBACzC,aAAa,EAAE,qBAAqB,CACnC,QAAQ,CAAC,wBAAwB,CACjC;iBACD;gBACD,IAAI,EAAE;oBACL,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;oBACnD,wDAAwD;oBACxD,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;oBACrD,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;oBACrD,qBAAqB,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;oBAC3D,oBAAoB,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;oBACzD,qBAAqB,EAAE,UAAU,CAAC,uBAAuB,CAAC;oBAC1D,iBAAiB,EAAE,UAAU,CAAC,mBAAmB,CAAC;oBAClD,cAAc,EAAE,QAAQ,CACvB,YAAY,CAAC,MAAM,EACnB,wBAAwB,CACxB;oBACD,kBAAkB,EAAE,QAAQ,CAC3B,YAAY,CAAC,UAAU,EACvB,4BAA4B,CAC5B;iBACD;aACD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,GAAG,IAAI,CAAC;YACf,QAAQ,GAAG,SAAS,CAAC;QACtB,CAAC;QACD,IAAI,CAAC;YACJ,MAAM,YAAY,GAAG,KAAK;iBACxB,OAAO,CACP,sEAAsE,CACtE;iBACA,GAAG,EAAqC,CAAC;YAC3C,MAAM,QAAQ,GAA2B,EAAE,CAAC;YAC5C,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;gBAC9B,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1B,CAAC;YACD,QAAQ,GAAG;gBACV,4DAA4D;gBAC5D,4DAA4D;gBAC5D,QAAQ,EAAE,MAAM,CACf,KAAK,EACL,6DAA6D,CAC7D;gBACD,OAAO,EAAE,MAAM,CACd,KAAK,EACL,sDAAsD,CACtD;gBACD,SAAS,EAAE,MAAM,CAChB,KAAK,EACL,wDAAwD,CACxD;gBACD,aAAa,EAAE,MAAM,CACpB,KAAK,EACL,wDAAwD,CACxD;gBACD,OAAO,EAAE,MAAM,CACd,KAAK,EACL,4DAA4D,CAC5D;gBACD,mBAAmB,EAAE,QAAQ;aAC7B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,GAAG,IAAI,CAAC;YACf,QAAQ,GAAG,SAAS,CAAC;QACtB,CAAC;IACF,CAAC;SAAM,CAAC;QACP,OAAO,GAAG,IAAI,CAAC;IAChB,CAAC;IAED,OAAO;QACN,QAAQ;QACR,UAAU;QACV,OAAO;QACP,QAAQ;QACR,MAAM;QACN,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,OAAO;KACP,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"}
@@ -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"];
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 28
41
+ * (K6-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>;
@@ -29,6 +29,15 @@ 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",
32
41
  ];
33
42
  const DEFAULT_FLUSH_MS = 1000;
34
43
  function zeroCache() {
@@ -96,6 +105,33 @@ export class Metrics {
96
105
  this.dirty.add(key);
97
106
  this.scheduleFlush();
98
107
  }
108
+ /**
109
+ * v0.6.0 (K6-018/019 / plan §5.8) — the pull-channel registration
110
+ * counters. These live OUTSIDE `METRIC_KEYS`, which is frozen at 28
111
+ * (K6-004 acceptance, the verified cumulative ladder), but persist to
112
+ * the same `kevin_metrics` table so `kevin_audit`'s channels block can
113
+ * read them by SQL (K6-023). They are written immediately (no debounce):
114
+ * they change at most twice per process, on session start.
115
+ */
116
+ incrRegistered(key, by = 1) {
117
+ if (this.closed)
118
+ return;
119
+ const store = this.store;
120
+ store.transaction(() => {
121
+ store.exec(`CREATE TABLE IF NOT EXISTS kevin_metrics (
122
+ key TEXT PRIMARY KEY,
123
+ value INTEGER NOT NULL DEFAULT 0,
124
+ updated_at TEXT NOT NULL DEFAULT (datetime('now'))
125
+ )`);
126
+ store
127
+ .prepare(`INSERT INTO kevin_metrics (key, value, updated_at)
128
+ VALUES (?, ?, datetime('now'))
129
+ ON CONFLICT(key) DO UPDATE SET
130
+ value = value + excluded.value,
131
+ updated_at = datetime('now')`)
132
+ .run(key, by);
133
+ });
134
+ }
99
135
  /**
100
136
  * Returns a snapshot of the cache. The returned object always contains all
101
137
  * METRIC_KEYS, even if the DB has no rows yet. Does NOT flush.
@@ -148,6 +184,8 @@ export class Metrics {
148
184
  /**
149
185
  * v0.5.0 (K5-004 / plan §5.2, D5-02) — the five `injections_blocked_*`
150
186
  * counters keyed by their short names. Consumed by `kevin_audit`.
187
+ * v0.6.0 (K6-004 / plan §8.3) — sixth member keyed `confidence`
188
+ * (the low_confidence gate branch, K6-022).
151
189
  * Computed from the cached counters — does NOT flush.
152
190
  */
153
191
  blockedSnapshot() {
@@ -157,6 +195,7 @@ export class Metrics {
157
195
  recurrence: this.cache.get("injections_blocked_recurrence") ?? 0,
158
196
  stale: this.cache.get("injections_blocked_stale") ?? 0,
159
197
  ignored: this.cache.get("injections_blocked_ignored") ?? 0,
198
+ confidence: this.cache.get("injections_blocked_confidence") ?? 0,
160
199
  };
161
200
  }
162
201
  /** 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":"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"}
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../plugin/metrics.ts"],"names":[],"mappings":"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"}
@@ -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;
@@ -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;
@@ -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;
@@ -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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"}