@edihasaj/recall 0.5.2

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 (63) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +409 -0
  3. package/dist/chunk-4CV4JOE5.js +27 -0
  4. package/dist/chunk-4CV4JOE5.js.map +1 -0
  5. package/dist/chunk-A5UIRZU6.js +469 -0
  6. package/dist/chunk-A5UIRZU6.js.map +1 -0
  7. package/dist/chunk-AYHFPCGY.js +964 -0
  8. package/dist/chunk-AYHFPCGY.js.map +1 -0
  9. package/dist/chunk-DNFKAHS6.js +204 -0
  10. package/dist/chunk-DNFKAHS6.js.map +1 -0
  11. package/dist/chunk-GC5XMBG4.js +551 -0
  12. package/dist/chunk-GC5XMBG4.js.map +1 -0
  13. package/dist/chunk-IILLSHLM.js +3021 -0
  14. package/dist/chunk-IILLSHLM.js.map +1 -0
  15. package/dist/chunk-LVQW6WHK.js +146 -0
  16. package/dist/chunk-LVQW6WHK.js.map +1 -0
  17. package/dist/chunk-LZ6PMQRX.js +955 -0
  18. package/dist/chunk-LZ6PMQRX.js.map +1 -0
  19. package/dist/chunk-PC43MBX5.js +2960 -0
  20. package/dist/chunk-PC43MBX5.js.map +1 -0
  21. package/dist/chunk-VEPXEHRZ.js +1763 -0
  22. package/dist/chunk-VEPXEHRZ.js.map +1 -0
  23. package/dist/cleanup-TVOX2S2S.js +28 -0
  24. package/dist/cleanup-TVOX2S2S.js.map +1 -0
  25. package/dist/cli.js +3425 -0
  26. package/dist/cli.js.map +1 -0
  27. package/dist/daemon.js +1298 -0
  28. package/dist/daemon.js.map +1 -0
  29. package/dist/dispatcher-UGMU6THT.js +15 -0
  30. package/dist/dispatcher-UGMU6THT.js.map +1 -0
  31. package/dist/keychain-5QG52ANO.js +22 -0
  32. package/dist/keychain-5QG52ANO.js.map +1 -0
  33. package/dist/mcp.js +21 -0
  34. package/dist/mcp.js.map +1 -0
  35. package/dist/quality-Z7LPMMBC.js +17 -0
  36. package/dist/quality-Z7LPMMBC.js.map +1 -0
  37. package/dist/sync-server.js +225 -0
  38. package/dist/sync-server.js.map +1 -0
  39. package/dist/tasks-UOLSPXJQ.js +61 -0
  40. package/dist/tasks-UOLSPXJQ.js.map +1 -0
  41. package/dist/usage-CY3V72YN.js +101 -0
  42. package/dist/usage-CY3V72YN.js.map +1 -0
  43. package/drizzle/0000_initial_create.sql +240 -0
  44. package/drizzle/0001_rich_liz_osborn.sql +21 -0
  45. package/drizzle/0002_unknown_spot.sql +18 -0
  46. package/drizzle/0003_red_wendigo.sql +19 -0
  47. package/drizzle/0004_early_carlie_cooper.sql +1 -0
  48. package/drizzle/0005_simple_emma_frost.sql +96 -0
  49. package/drizzle/0006_keen_mongoose.sql +2 -0
  50. package/drizzle/0007_flawless_maximus.sql +15 -0
  51. package/drizzle/meta/0000_snapshot.json +1630 -0
  52. package/drizzle/meta/0001_snapshot.json +1773 -0
  53. package/drizzle/meta/0002_snapshot.json +1891 -0
  54. package/drizzle/meta/0003_snapshot.json +2014 -0
  55. package/drizzle/meta/0004_snapshot.json +2022 -0
  56. package/drizzle/meta/0005_snapshot.json +2064 -0
  57. package/drizzle/meta/0006_snapshot.json +2078 -0
  58. package/drizzle/meta/0007_snapshot.json +2183 -0
  59. package/drizzle/meta/_journal.json +62 -0
  60. package/package.json +64 -0
  61. package/scripts/recall-claude +7 -0
  62. package/scripts/recall-codex +7 -0
  63. package/scripts/recall-session +71 -0
@@ -0,0 +1,469 @@
1
+ import {
2
+ __export
3
+ } from "./chunk-4CV4JOE5.js";
4
+
5
+ // src/db/schema.ts
6
+ var schema_exports = {};
7
+ __export(schema_exports, {
8
+ activityEvents: () => activityEvents,
9
+ approvalRequests: () => approvalRequests,
10
+ auditTrail: () => auditTrail,
11
+ contradictions: () => contradictions,
12
+ evalSessions: () => evalSessions,
13
+ feedbackEvents: () => feedbackEvents,
14
+ historyInjections: () => historyInjections,
15
+ historySnippetEmbeddings: () => historySnippetEmbeddings,
16
+ historySnippets: () => historySnippets,
17
+ hookCalls: () => hookCalls,
18
+ implicitSignals: () => implicitSignals,
19
+ llmUsage: () => llmUsage,
20
+ maintenanceCleanupLog: () => maintenanceCleanupLog,
21
+ memories: () => memories,
22
+ memoryEmbeddings: () => memoryEmbeddings,
23
+ memoryInjections: () => memoryInjections,
24
+ memoryMaintenanceTasks: () => memoryMaintenanceTasks,
25
+ policyRules: () => policyRules,
26
+ qualitySnapshots: () => qualitySnapshots,
27
+ syncState: () => syncState
28
+ });
29
+ import { sqliteTable, text, integer, real, blob, index, uniqueIndex } from "drizzle-orm/sqlite-core";
30
+ var memories = sqliteTable("memories", {
31
+ id: text("id").primaryKey(),
32
+ type: text("type", {
33
+ enum: ["rule", "command", "gotcha", "decision", "review_pattern"]
34
+ }).notNull(),
35
+ text: text("text").notNull(),
36
+ scope: text("scope", {
37
+ enum: ["session", "path", "repo", "team", "global"]
38
+ }).notNull(),
39
+ path_scope: text("path_scope"),
40
+ repo: text("repo"),
41
+ status: text("status", {
42
+ enum: ["transient", "candidate", "active", "rejected"]
43
+ }).notNull(),
44
+ confidence: real("confidence").notNull().default(0),
45
+ source: text("source", {
46
+ enum: [
47
+ "user_correction",
48
+ "user_reported_review",
49
+ "repo_scan",
50
+ "config_parse"
51
+ ]
52
+ }).notNull(),
53
+ evidence: text("evidence", { mode: "json" }).notNull().default("[]"),
54
+ capture_context: text("capture_context", { mode: "json" }),
55
+ supersedes: text("supersedes"),
56
+ dedupe_key: text("dedupe_key"),
57
+ created_at: text("created_at").notNull(),
58
+ updated_at: text("updated_at").notNull(),
59
+ last_validated_at: text("last_validated_at"),
60
+ last_injected_at: text("last_injected_at"),
61
+ injection_count: integer("injection_count").notNull().default(0),
62
+ override_count: integer("override_count").notNull().default(0),
63
+ repetition_count: integer("repetition_count").notNull().default(0),
64
+ // Phase 2: sync + embeddings
65
+ team_id: text("team_id"),
66
+ sync_version: integer("sync_version").notNull().default(0),
67
+ // When false, the memory stays queryable via MCP but is excluded from the
68
+ // auto-injected SessionStart context block. Used to suppress noisy
69
+ // command-type memories that the agent re-derives from the repo anyway.
70
+ auto_inject: integer("auto_inject", { mode: "boolean" }).notNull().default(true)
71
+ }, (table) => [
72
+ index("idx_memories_repo").on(table.repo),
73
+ index("idx_memories_status").on(table.status),
74
+ index("idx_memories_repo_status").on(table.repo, table.status),
75
+ index("idx_memories_team").on(table.team_id),
76
+ uniqueIndex("uq_memories_dedupe_key").on(table.dedupe_key)
77
+ ]);
78
+ var memoryEmbeddings = sqliteTable("memory_embeddings", {
79
+ memory_id: text("memory_id").primaryKey().references(() => memories.id, { onDelete: "cascade" }),
80
+ model: text("model").notNull(),
81
+ embedding_dimensions: integer("embedding_dimensions").notNull(),
82
+ index_dimensions: integer("index_dimensions").notNull(),
83
+ version: text("version").notNull(),
84
+ content_hash: text("content_hash").notNull(),
85
+ updated_at: text("updated_at").notNull(),
86
+ embedding: blob("embedding", { mode: "buffer" }).notNull()
87
+ }, (table) => [
88
+ index("idx_memory_embeddings_model").on(table.model),
89
+ index("idx_memory_embeddings_updated").on(table.updated_at)
90
+ ]);
91
+ var historySnippets = sqliteTable("history_snippets", {
92
+ id: text("id").primaryKey(),
93
+ repo: text("repo"),
94
+ session_id: text("session_id"),
95
+ kind: text("kind", {
96
+ enum: ["session_summary", "correction_summary", "decision_summary", "review_summary", "compile_summary", "repo_synthesis"]
97
+ }).notNull(),
98
+ text: text("text").notNull(),
99
+ dedupe_key: text("dedupe_key"),
100
+ source_activity_ids: text("source_activity_ids", { mode: "json" }).notNull().default("[]"),
101
+ created_at: text("created_at").notNull(),
102
+ updated_at: text("updated_at").notNull()
103
+ }, (table) => [
104
+ index("idx_history_repo").on(table.repo),
105
+ index("idx_history_session").on(table.session_id),
106
+ index("idx_history_kind").on(table.kind),
107
+ index("idx_history_created").on(table.created_at),
108
+ uniqueIndex("uq_history_snippets_dedupe_key").on(table.dedupe_key)
109
+ ]);
110
+ var historySnippetEmbeddings = sqliteTable("history_snippet_embeddings", {
111
+ snippet_id: text("snippet_id").primaryKey().references(() => historySnippets.id, { onDelete: "cascade" }),
112
+ model: text("model").notNull(),
113
+ embedding_dimensions: integer("embedding_dimensions").notNull(),
114
+ index_dimensions: integer("index_dimensions").notNull(),
115
+ version: text("version").notNull(),
116
+ content_hash: text("content_hash").notNull(),
117
+ updated_at: text("updated_at").notNull(),
118
+ embedding: blob("embedding", { mode: "buffer" }).notNull()
119
+ }, (table) => [
120
+ index("idx_history_embeddings_model").on(table.model),
121
+ index("idx_history_embeddings_updated").on(table.updated_at)
122
+ ]);
123
+ var historyInjections = sqliteTable("history_injections", {
124
+ id: text("id").primaryKey(),
125
+ snippet_id: text("snippet_id").notNull().references(() => historySnippets.id, { onDelete: "cascade" }),
126
+ session_id: text("session_id").notNull(),
127
+ repo: text("repo"),
128
+ injected_at: text("injected_at").notNull()
129
+ }, (table) => [
130
+ index("idx_history_injections_snippet").on(table.snippet_id),
131
+ index("idx_history_injections_session").on(table.session_id),
132
+ index("idx_history_injections_repo").on(table.repo),
133
+ uniqueIndex("uq_history_injections_snippet_session").on(table.snippet_id, table.session_id)
134
+ ]);
135
+ var feedbackEvents = sqliteTable("feedback_events", {
136
+ id: text("id").primaryKey(),
137
+ memory_id: text("memory_id").notNull().references(() => memories.id),
138
+ session_id: text("session_id").notNull(),
139
+ injected: integer("injected", { mode: "boolean" }).notNull(),
140
+ outcome: text("outcome", {
141
+ enum: ["followed", "overridden", "ignored", "contradicted"]
142
+ }).notNull(),
143
+ timestamp: text("timestamp").notNull()
144
+ }, (table) => [
145
+ index("idx_feedback_memory").on(table.memory_id),
146
+ index("idx_feedback_session").on(table.session_id)
147
+ ]);
148
+ var memoryInjections = sqliteTable("memory_injections", {
149
+ id: text("id").primaryKey(),
150
+ memory_id: text("memory_id").notNull().references(() => memories.id, { onDelete: "cascade" }),
151
+ session_id: text("session_id").notNull(),
152
+ repo: text("repo"),
153
+ injected_at: text("injected_at").notNull(),
154
+ outcome: text("outcome", {
155
+ enum: ["followed", "overridden", "ignored", "contradicted"]
156
+ }),
157
+ outcome_at: text("outcome_at")
158
+ }, (table) => [
159
+ index("idx_memory_injections_memory").on(table.memory_id),
160
+ index("idx_memory_injections_session").on(table.session_id),
161
+ uniqueIndex("uq_memory_injections_memory_session").on(table.memory_id, table.session_id)
162
+ ]);
163
+ var activityEvents = sqliteTable("activity_events", {
164
+ id: text("id").primaryKey(),
165
+ session_id: text("session_id"),
166
+ repo: text("repo"),
167
+ path: text("path"),
168
+ // source is a free-form string tagged as "<transport>[:<client>]"
169
+ // (e.g. "mcp", "mcp:claude-code", "hook:codex", "cli", "daemon").
170
+ // The runtime regex in src/types.ts validates the shape.
171
+ source: text("source").notNull(),
172
+ event_type: text("event_type", {
173
+ enum: [
174
+ "compile",
175
+ "query",
176
+ "scan",
177
+ "correction",
178
+ "review",
179
+ "feedback",
180
+ "signal",
181
+ "session_start",
182
+ "session_event",
183
+ "session_end",
184
+ "tool_call"
185
+ ]
186
+ }).notNull(),
187
+ memory_ids: text("memory_ids", { mode: "json" }).notNull().default("[]"),
188
+ dedupe_key: text("dedupe_key"),
189
+ request: text("request", { mode: "json" }).notNull().default("{}"),
190
+ result: text("result", { mode: "json" }).notNull().default("{}"),
191
+ created_at: text("created_at").notNull()
192
+ }, (table) => [
193
+ index("idx_activity_session").on(table.session_id),
194
+ index("idx_activity_repo").on(table.repo),
195
+ index("idx_activity_event_type").on(table.event_type),
196
+ index("idx_activity_created").on(table.created_at),
197
+ uniqueIndex("uq_activity_events_dedupe_key").on(table.dedupe_key)
198
+ ]);
199
+ var hookCalls = sqliteTable("hook_calls", {
200
+ id: text("id").primaryKey(),
201
+ event: text("event", {
202
+ enum: ["session_started", "prompt_submitted", "tool_invoked", "session_ended"]
203
+ }).notNull(),
204
+ agent: text("agent").notNull(),
205
+ dedupe_key: text("dedupe_key"),
206
+ duration_ms: integer("duration_ms").notNull(),
207
+ ok: integer("ok", { mode: "boolean" }).notNull(),
208
+ created_at: text("created_at").notNull()
209
+ }, (table) => [
210
+ index("idx_hook_calls_event").on(table.event),
211
+ index("idx_hook_calls_agent").on(table.agent),
212
+ index("idx_hook_calls_created").on(table.created_at),
213
+ uniqueIndex("uq_hook_calls_dedupe_key").on(table.dedupe_key)
214
+ ]);
215
+ var syncState = sqliteTable("sync_state", {
216
+ id: text("id").primaryKey(),
217
+ // "local" singleton
218
+ remote_url: text("remote_url"),
219
+ team_id: text("team_id"),
220
+ last_push_at: text("last_push_at"),
221
+ last_pull_at: text("last_pull_at"),
222
+ last_push_version: integer("last_push_version").notNull().default(0),
223
+ last_pull_version: integer("last_pull_version").notNull().default(0)
224
+ });
225
+ var evalSessions = sqliteTable("eval_sessions", {
226
+ id: text("id").primaryKey(),
227
+ repo: text("repo").notNull(),
228
+ started_at: text("started_at").notNull(),
229
+ ended_at: text("ended_at"),
230
+ memories_injected: integer("memories_injected").notNull().default(0),
231
+ memories_followed: integer("memories_followed").notNull().default(0),
232
+ memories_overridden: integer("memories_overridden").notNull().default(0),
233
+ user_corrections: integer("user_corrections").notNull().default(0),
234
+ test_passes: integer("test_passes").notNull().default(0),
235
+ test_failures: integer("test_failures").notNull().default(0)
236
+ }, (table) => [
237
+ index("idx_eval_repo").on(table.repo)
238
+ ]);
239
+ var policyRules = sqliteTable("policy_rules", {
240
+ id: text("id").primaryKey(),
241
+ org_id: text("org_id").notNull(),
242
+ rule_type: text("rule_type", {
243
+ enum: [
244
+ "min_confidence",
245
+ "require_approval",
246
+ "allowed_sources",
247
+ "blocked_scopes",
248
+ "auto_approve_pattern",
249
+ "max_active_per_repo",
250
+ "require_evidence_count"
251
+ ]
252
+ }).notNull(),
253
+ config: text("config", { mode: "json" }).notNull().default("{}"),
254
+ enabled: integer("enabled", { mode: "boolean" }).notNull().default(true),
255
+ created_at: text("created_at").notNull(),
256
+ updated_at: text("updated_at").notNull()
257
+ }, (table) => [
258
+ index("idx_policy_org").on(table.org_id)
259
+ ]);
260
+ var approvalRequests = sqliteTable("approval_requests", {
261
+ id: text("id").primaryKey(),
262
+ memory_id: text("memory_id").notNull().references(() => memories.id),
263
+ org_id: text("org_id").notNull(),
264
+ requested_by: text("requested_by").notNull(),
265
+ status: text("status", {
266
+ enum: ["pending", "approved", "denied"]
267
+ }).notNull().default("pending"),
268
+ reviewed_by: text("reviewed_by"),
269
+ reason: text("reason"),
270
+ created_at: text("created_at").notNull(),
271
+ resolved_at: text("resolved_at")
272
+ }, (table) => [
273
+ index("idx_approval_org").on(table.org_id),
274
+ index("idx_approval_status").on(table.status)
275
+ ]);
276
+ var contradictions = sqliteTable("contradictions", {
277
+ id: text("id").primaryKey(),
278
+ memory_a_id: text("memory_a_id").notNull().references(() => memories.id),
279
+ memory_b_id: text("memory_b_id").notNull().references(() => memories.id),
280
+ contradiction_type: text("contradiction_type", {
281
+ enum: ["direct_negation", "conflicting_rules", "scope_overlap", "superseded"]
282
+ }).notNull(),
283
+ severity: text("severity", { enum: ["low", "medium", "high"] }).notNull(),
284
+ description: text("description").notNull(),
285
+ resolved: integer("resolved", { mode: "boolean" }).notNull().default(false),
286
+ resolution: text("resolution"),
287
+ detected_at: text("detected_at").notNull(),
288
+ resolved_at: text("resolved_at")
289
+ }, (table) => [
290
+ index("idx_contradictions_resolved").on(table.resolved)
291
+ ]);
292
+ var auditTrail = sqliteTable("audit_trail", {
293
+ id: text("id").primaryKey(),
294
+ memory_id: text("memory_id").notNull(),
295
+ action: text("action", {
296
+ enum: [
297
+ "created",
298
+ "promoted",
299
+ "demoted",
300
+ "rejected",
301
+ "confirmed",
302
+ "reactivated",
303
+ "edited",
304
+ "pruned",
305
+ "policy_applied",
306
+ "approval_requested",
307
+ "approval_resolved",
308
+ "contradiction_detected",
309
+ "contradiction_resolved",
310
+ "rolled_back"
311
+ ]
312
+ }).notNull(),
313
+ actor: text("actor").notNull(),
314
+ before_snapshot: text("before_snapshot"),
315
+ after_snapshot: text("after_snapshot"),
316
+ reason: text("reason"),
317
+ timestamp: text("timestamp").notNull()
318
+ }, (table) => [
319
+ index("idx_audit_memory").on(table.memory_id),
320
+ index("idx_audit_timestamp").on(table.timestamp)
321
+ ]);
322
+ var memoryMaintenanceTasks = sqliteTable("memory_maintenance_tasks", {
323
+ id: text("id").primaryKey(),
324
+ kind: text("kind", {
325
+ enum: [
326
+ "summarize_history",
327
+ "merge_duplicates",
328
+ "refine_candidate",
329
+ "summarize_session",
330
+ "synthesize_repo",
331
+ "verify_capture"
332
+ ]
333
+ }).notNull(),
334
+ status: text("status", {
335
+ enum: ["pending", "claimed", "submitted", "completed", "abandoned"]
336
+ }).notNull(),
337
+ priority: integer("priority").notNull().default(0),
338
+ repo: text("repo"),
339
+ target_key: text("target_key").notNull(),
340
+ payload: text("payload", { mode: "json" }).notNull(),
341
+ result: text("result", { mode: "json" }),
342
+ failure_reason: text("failure_reason"),
343
+ claimed_by: text("claimed_by"),
344
+ claimed_at: text("claimed_at"),
345
+ claim_expires_at: text("claim_expires_at"),
346
+ submitted_at: text("submitted_at"),
347
+ completed_at: text("completed_at"),
348
+ created_at: text("created_at").notNull(),
349
+ attempts: integer("attempts").notNull().default(0),
350
+ max_attempts: integer("max_attempts").notNull().default(3)
351
+ }, (table) => [
352
+ index("idx_mmt_status_priority").on(table.status, table.priority, table.created_at),
353
+ index("idx_mmt_repo_status").on(table.repo, table.status),
354
+ index("idx_mmt_claim_expires").on(table.claim_expires_at),
355
+ index("idx_mmt_kind_target").on(table.kind, table.target_key)
356
+ ]);
357
+ var implicitSignals = sqliteTable("implicit_signals", {
358
+ id: text("id").primaryKey(),
359
+ memory_id: text("memory_id").notNull().references(() => memories.id),
360
+ session_id: text("session_id").notNull(),
361
+ signal_type: text("signal_type", {
362
+ enum: [
363
+ "test_pass",
364
+ "test_fail",
365
+ "file_unchanged",
366
+ "file_rewritten",
367
+ "task_accepted",
368
+ "task_rejected"
369
+ ]
370
+ }).notNull(),
371
+ timestamp: text("timestamp").notNull(),
372
+ context: text("context")
373
+ }, (table) => [
374
+ index("idx_implicit_memory").on(table.memory_id),
375
+ index("idx_implicit_session").on(table.session_id)
376
+ ]);
377
+ var llmUsage = sqliteTable("llm_usage", {
378
+ id: text("id").primaryKey(),
379
+ provider: text("provider").notNull(),
380
+ model: text("model").notNull(),
381
+ task_kind: text("task_kind").notNull(),
382
+ task_id: text("task_id"),
383
+ repo: text("repo"),
384
+ prompt_tokens: integer("prompt_tokens").notNull().default(0),
385
+ completion_tokens: integer("completion_tokens").notNull().default(0),
386
+ total_tokens: integer("total_tokens").notNull().default(0),
387
+ cost_usd: real("cost_usd"),
388
+ duration_ms: integer("duration_ms").notNull().default(0),
389
+ ok: integer("ok", { mode: "boolean" }).notNull().default(true),
390
+ error: text("error"),
391
+ created_at: text("created_at").notNull()
392
+ }, (table) => [
393
+ index("idx_llm_usage_created").on(table.created_at),
394
+ index("idx_llm_usage_provider_model").on(table.provider, table.model),
395
+ index("idx_llm_usage_task_kind").on(table.task_kind),
396
+ index("idx_llm_usage_repo").on(table.repo)
397
+ ]);
398
+ var qualitySnapshots = sqliteTable("quality_snapshots", {
399
+ id: text("id").primaryKey(),
400
+ taken_at: text("taken_at").notNull(),
401
+ window_start: text("window_start").notNull(),
402
+ window_end: text("window_end").notNull(),
403
+ injections_total: integer("injections_total").notNull(),
404
+ injections_resolved: integer("injections_resolved").notNull(),
405
+ injections_followed: integer("injections_followed").notNull(),
406
+ injections_overridden: integer("injections_overridden").notNull(),
407
+ injections_contradicted: integer("injections_contradicted").notNull(),
408
+ injections_ignored: integer("injections_ignored").notNull(),
409
+ followed_rate_resolved: real("followed_rate_resolved"),
410
+ active_rule_count: integer("active_rule_count").notNull(),
411
+ active_command_count: integer("active_command_count").notNull(),
412
+ candidate_correction_count: integer("candidate_correction_count").notNull(),
413
+ history_injections_total: integer("history_injections_total").notNull().default(0),
414
+ history_snippets_injected: integer("history_snippets_injected").notNull().default(0),
415
+ notes: text("notes")
416
+ }, (table) => [
417
+ index("idx_quality_snapshots_taken").on(table.taken_at)
418
+ ]);
419
+ var maintenanceCleanupLog = sqliteTable("maintenance_cleanup_log", {
420
+ id: text("id").primaryKey(),
421
+ run_id: text("run_id").notNull(),
422
+ action: text("action", {
423
+ enum: [
424
+ "dedupe_exact_merge",
425
+ "reject_fragment_candidate",
426
+ "promote_repeat_correction",
427
+ "suppress_unproductive_command",
428
+ "globalize_cross_repo"
429
+ ]
430
+ }).notNull(),
431
+ memory_id: text("memory_id").notNull(),
432
+ related_memory_id: text("related_memory_id"),
433
+ before_snapshot: text("before_snapshot", { mode: "json" }),
434
+ after_snapshot: text("after_snapshot", { mode: "json" }),
435
+ details: text("details", { mode: "json" }).notNull().default("{}"),
436
+ reverted: integer("reverted", { mode: "boolean" }).notNull().default(false),
437
+ reverted_at: text("reverted_at"),
438
+ created_at: text("created_at").notNull()
439
+ }, (table) => [
440
+ index("idx_cleanup_log_run").on(table.run_id),
441
+ index("idx_cleanup_log_memory").on(table.memory_id),
442
+ index("idx_cleanup_log_action").on(table.action),
443
+ index("idx_cleanup_log_created").on(table.created_at)
444
+ ]);
445
+
446
+ export {
447
+ memories,
448
+ memoryEmbeddings,
449
+ historySnippets,
450
+ historySnippetEmbeddings,
451
+ historyInjections,
452
+ feedbackEvents,
453
+ memoryInjections,
454
+ activityEvents,
455
+ hookCalls,
456
+ syncState,
457
+ evalSessions,
458
+ policyRules,
459
+ approvalRequests,
460
+ contradictions,
461
+ auditTrail,
462
+ memoryMaintenanceTasks,
463
+ implicitSignals,
464
+ llmUsage,
465
+ qualitySnapshots,
466
+ maintenanceCleanupLog,
467
+ schema_exports
468
+ };
469
+ //# sourceMappingURL=chunk-A5UIRZU6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/db/schema.ts"],"sourcesContent":["import { sqliteTable, text, integer, real, blob, index, uniqueIndex } from \"drizzle-orm/sqlite-core\";\n\nexport const memories = sqliteTable(\"memories\", {\n id: text(\"id\").primaryKey(),\n type: text(\"type\", {\n enum: [\"rule\", \"command\", \"gotcha\", \"decision\", \"review_pattern\"],\n }).notNull(),\n text: text(\"text\").notNull(),\n scope: text(\"scope\", {\n enum: [\"session\", \"path\", \"repo\", \"team\", \"global\"],\n }).notNull(),\n path_scope: text(\"path_scope\"),\n repo: text(\"repo\"),\n status: text(\"status\", {\n enum: [\"transient\", \"candidate\", \"active\", \"rejected\"],\n }).notNull(),\n confidence: real(\"confidence\").notNull().default(0),\n source: text(\"source\", {\n enum: [\n \"user_correction\",\n \"user_reported_review\",\n \"repo_scan\",\n \"config_parse\",\n ],\n }).notNull(),\n evidence: text(\"evidence\", { mode: \"json\" }).notNull().default(\"[]\"),\n capture_context: text(\"capture_context\", { mode: \"json\" }),\n supersedes: text(\"supersedes\"),\n dedupe_key: text(\"dedupe_key\"),\n created_at: text(\"created_at\").notNull(),\n updated_at: text(\"updated_at\").notNull(),\n last_validated_at: text(\"last_validated_at\"),\n last_injected_at: text(\"last_injected_at\"),\n injection_count: integer(\"injection_count\").notNull().default(0),\n override_count: integer(\"override_count\").notNull().default(0),\n repetition_count: integer(\"repetition_count\").notNull().default(0),\n // Phase 2: sync + embeddings\n team_id: text(\"team_id\"),\n sync_version: integer(\"sync_version\").notNull().default(0),\n // When false, the memory stays queryable via MCP but is excluded from the\n // auto-injected SessionStart context block. Used to suppress noisy\n // command-type memories that the agent re-derives from the repo anyway.\n auto_inject: integer(\"auto_inject\", { mode: \"boolean\" }).notNull().default(true),\n}, (table) => ([\n index(\"idx_memories_repo\").on(table.repo),\n index(\"idx_memories_status\").on(table.status),\n index(\"idx_memories_repo_status\").on(table.repo, table.status),\n index(\"idx_memories_team\").on(table.team_id),\n uniqueIndex(\"uq_memories_dedupe_key\").on(table.dedupe_key),\n]));\n\nexport const memoryEmbeddings = sqliteTable(\"memory_embeddings\", {\n memory_id: text(\"memory_id\")\n .primaryKey()\n .references(() => memories.id, { onDelete: \"cascade\" }),\n model: text(\"model\").notNull(),\n embedding_dimensions: integer(\"embedding_dimensions\").notNull(),\n index_dimensions: integer(\"index_dimensions\").notNull(),\n version: text(\"version\").notNull(),\n content_hash: text(\"content_hash\").notNull(),\n updated_at: text(\"updated_at\").notNull(),\n embedding: blob(\"embedding\", { mode: \"buffer\" }).notNull(),\n}, (table) => ([\n index(\"idx_memory_embeddings_model\").on(table.model),\n index(\"idx_memory_embeddings_updated\").on(table.updated_at),\n]));\n\nexport const historySnippets = sqliteTable(\"history_snippets\", {\n id: text(\"id\").primaryKey(),\n repo: text(\"repo\"),\n session_id: text(\"session_id\"),\n kind: text(\"kind\", {\n enum: [\"session_summary\", \"correction_summary\", \"decision_summary\", \"review_summary\", \"compile_summary\", \"repo_synthesis\"],\n }).notNull(),\n text: text(\"text\").notNull(),\n dedupe_key: text(\"dedupe_key\"),\n source_activity_ids: text(\"source_activity_ids\", { mode: \"json\" }).notNull().default(\"[]\"),\n created_at: text(\"created_at\").notNull(),\n updated_at: text(\"updated_at\").notNull(),\n}, (table) => ([\n index(\"idx_history_repo\").on(table.repo),\n index(\"idx_history_session\").on(table.session_id),\n index(\"idx_history_kind\").on(table.kind),\n index(\"idx_history_created\").on(table.created_at),\n uniqueIndex(\"uq_history_snippets_dedupe_key\").on(table.dedupe_key),\n]));\n\nexport const historySnippetEmbeddings = sqliteTable(\"history_snippet_embeddings\", {\n snippet_id: text(\"snippet_id\")\n .primaryKey()\n .references(() => historySnippets.id, { onDelete: \"cascade\" }),\n model: text(\"model\").notNull(),\n embedding_dimensions: integer(\"embedding_dimensions\").notNull(),\n index_dimensions: integer(\"index_dimensions\").notNull(),\n version: text(\"version\").notNull(),\n content_hash: text(\"content_hash\").notNull(),\n updated_at: text(\"updated_at\").notNull(),\n embedding: blob(\"embedding\", { mode: \"buffer\" }).notNull(),\n}, (table) => ([\n index(\"idx_history_embeddings_model\").on(table.model),\n index(\"idx_history_embeddings_updated\").on(table.updated_at),\n]));\n\nexport const historyInjections = sqliteTable(\"history_injections\", {\n id: text(\"id\").primaryKey(),\n snippet_id: text(\"snippet_id\")\n .notNull()\n .references(() => historySnippets.id, { onDelete: \"cascade\" }),\n session_id: text(\"session_id\").notNull(),\n repo: text(\"repo\"),\n injected_at: text(\"injected_at\").notNull(),\n}, (table) => ([\n index(\"idx_history_injections_snippet\").on(table.snippet_id),\n index(\"idx_history_injections_session\").on(table.session_id),\n index(\"idx_history_injections_repo\").on(table.repo),\n uniqueIndex(\"uq_history_injections_snippet_session\").on(table.snippet_id, table.session_id),\n]));\n\nexport const feedbackEvents = sqliteTable(\"feedback_events\", {\n id: text(\"id\").primaryKey(),\n memory_id: text(\"memory_id\")\n .notNull()\n .references(() => memories.id),\n session_id: text(\"session_id\").notNull(),\n injected: integer(\"injected\", { mode: \"boolean\" }).notNull(),\n outcome: text(\"outcome\", {\n enum: [\"followed\", \"overridden\", \"ignored\", \"contradicted\"],\n }).notNull(),\n timestamp: text(\"timestamp\").notNull(),\n}, (table) => ([\n index(\"idx_feedback_memory\").on(table.memory_id),\n index(\"idx_feedback_session\").on(table.session_id),\n]));\n\nexport const memoryInjections = sqliteTable(\"memory_injections\", {\n id: text(\"id\").primaryKey(),\n memory_id: text(\"memory_id\")\n .notNull()\n .references(() => memories.id, { onDelete: \"cascade\" }),\n session_id: text(\"session_id\").notNull(),\n repo: text(\"repo\"),\n injected_at: text(\"injected_at\").notNull(),\n outcome: text(\"outcome\", {\n enum: [\"followed\", \"overridden\", \"ignored\", \"contradicted\"],\n }),\n outcome_at: text(\"outcome_at\"),\n}, (table) => ([\n index(\"idx_memory_injections_memory\").on(table.memory_id),\n index(\"idx_memory_injections_session\").on(table.session_id),\n uniqueIndex(\"uq_memory_injections_memory_session\").on(table.memory_id, table.session_id),\n]));\n\n// Session/query activity log\nexport const activityEvents = sqliteTable(\"activity_events\", {\n id: text(\"id\").primaryKey(),\n session_id: text(\"session_id\"),\n repo: text(\"repo\"),\n path: text(\"path\"),\n // source is a free-form string tagged as \"<transport>[:<client>]\"\n // (e.g. \"mcp\", \"mcp:claude-code\", \"hook:codex\", \"cli\", \"daemon\").\n // The runtime regex in src/types.ts validates the shape.\n source: text(\"source\").notNull(),\n event_type: text(\"event_type\", {\n enum: [\n \"compile\",\n \"query\",\n \"scan\",\n \"correction\",\n \"review\",\n \"feedback\",\n \"signal\",\n \"session_start\",\n \"session_event\",\n \"session_end\",\n \"tool_call\",\n ],\n }).notNull(),\n memory_ids: text(\"memory_ids\", { mode: \"json\" }).notNull().default(\"[]\"),\n dedupe_key: text(\"dedupe_key\"),\n request: text(\"request\", { mode: \"json\" }).notNull().default(\"{}\"),\n result: text(\"result\", { mode: \"json\" }).notNull().default(\"{}\"),\n created_at: text(\"created_at\").notNull(),\n}, (table) => ([\n index(\"idx_activity_session\").on(table.session_id),\n index(\"idx_activity_repo\").on(table.repo),\n index(\"idx_activity_event_type\").on(table.event_type),\n index(\"idx_activity_created\").on(table.created_at),\n uniqueIndex(\"uq_activity_events_dedupe_key\").on(table.dedupe_key),\n]));\n\nexport const hookCalls = sqliteTable(\"hook_calls\", {\n id: text(\"id\").primaryKey(),\n event: text(\"event\", {\n enum: [\"session_started\", \"prompt_submitted\", \"tool_invoked\", \"session_ended\"],\n }).notNull(),\n agent: text(\"agent\").notNull(),\n dedupe_key: text(\"dedupe_key\"),\n duration_ms: integer(\"duration_ms\").notNull(),\n ok: integer(\"ok\", { mode: \"boolean\" }).notNull(),\n created_at: text(\"created_at\").notNull(),\n}, (table) => ([\n index(\"idx_hook_calls_event\").on(table.event),\n index(\"idx_hook_calls_agent\").on(table.agent),\n index(\"idx_hook_calls_created\").on(table.created_at),\n uniqueIndex(\"uq_hook_calls_dedupe_key\").on(table.dedupe_key),\n]));\n\n// Phase 2: sync state tracking\nexport const syncState = sqliteTable(\"sync_state\", {\n id: text(\"id\").primaryKey(), // \"local\" singleton\n remote_url: text(\"remote_url\"),\n team_id: text(\"team_id\"),\n last_push_at: text(\"last_push_at\"),\n last_pull_at: text(\"last_pull_at\"),\n last_push_version: integer(\"last_push_version\").notNull().default(0),\n last_pull_version: integer(\"last_pull_version\").notNull().default(0),\n});\n\n// Phase 2: evaluation sessions\nexport const evalSessions = sqliteTable(\"eval_sessions\", {\n id: text(\"id\").primaryKey(),\n repo: text(\"repo\").notNull(),\n started_at: text(\"started_at\").notNull(),\n ended_at: text(\"ended_at\"),\n memories_injected: integer(\"memories_injected\").notNull().default(0),\n memories_followed: integer(\"memories_followed\").notNull().default(0),\n memories_overridden: integer(\"memories_overridden\").notNull().default(0),\n user_corrections: integer(\"user_corrections\").notNull().default(0),\n test_passes: integer(\"test_passes\").notNull().default(0),\n test_failures: integer(\"test_failures\").notNull().default(0),\n}, (table) => ([\n index(\"idx_eval_repo\").on(table.repo),\n]));\n\n// Phase 3: policy rules\nexport const policyRules = sqliteTable(\"policy_rules\", {\n id: text(\"id\").primaryKey(),\n org_id: text(\"org_id\").notNull(),\n rule_type: text(\"rule_type\", {\n enum: [\n \"min_confidence\",\n \"require_approval\",\n \"allowed_sources\",\n \"blocked_scopes\",\n \"auto_approve_pattern\",\n \"max_active_per_repo\",\n \"require_evidence_count\",\n ],\n }).notNull(),\n config: text(\"config\", { mode: \"json\" }).notNull().default(\"{}\"),\n enabled: integer(\"enabled\", { mode: \"boolean\" }).notNull().default(true),\n created_at: text(\"created_at\").notNull(),\n updated_at: text(\"updated_at\").notNull(),\n}, (table) => ([\n index(\"idx_policy_org\").on(table.org_id),\n]));\n\n// Phase 3: approval queue\nexport const approvalRequests = sqliteTable(\"approval_requests\", {\n id: text(\"id\").primaryKey(),\n memory_id: text(\"memory_id\")\n .notNull()\n .references(() => memories.id),\n org_id: text(\"org_id\").notNull(),\n requested_by: text(\"requested_by\").notNull(),\n status: text(\"status\", {\n enum: [\"pending\", \"approved\", \"denied\"],\n }).notNull().default(\"pending\"),\n reviewed_by: text(\"reviewed_by\"),\n reason: text(\"reason\"),\n created_at: text(\"created_at\").notNull(),\n resolved_at: text(\"resolved_at\"),\n}, (table) => ([\n index(\"idx_approval_org\").on(table.org_id),\n index(\"idx_approval_status\").on(table.status),\n]));\n\n// Phase 3: contradictions\nexport const contradictions = sqliteTable(\"contradictions\", {\n id: text(\"id\").primaryKey(),\n memory_a_id: text(\"memory_a_id\")\n .notNull()\n .references(() => memories.id),\n memory_b_id: text(\"memory_b_id\")\n .notNull()\n .references(() => memories.id),\n contradiction_type: text(\"contradiction_type\", {\n enum: [\"direct_negation\", \"conflicting_rules\", \"scope_overlap\", \"superseded\"],\n }).notNull(),\n severity: text(\"severity\", { enum: [\"low\", \"medium\", \"high\"] }).notNull(),\n description: text(\"description\").notNull(),\n resolved: integer(\"resolved\", { mode: \"boolean\" }).notNull().default(false),\n resolution: text(\"resolution\"),\n detected_at: text(\"detected_at\").notNull(),\n resolved_at: text(\"resolved_at\"),\n}, (table) => ([\n index(\"idx_contradictions_resolved\").on(table.resolved),\n]));\n\n// Phase 3: audit trail\nexport const auditTrail = sqliteTable(\"audit_trail\", {\n id: text(\"id\").primaryKey(),\n memory_id: text(\"memory_id\").notNull(),\n action: text(\"action\", {\n enum: [\n \"created\", \"promoted\", \"demoted\", \"rejected\", \"confirmed\",\n \"reactivated\", \"edited\", \"pruned\", \"policy_applied\",\n \"approval_requested\", \"approval_resolved\",\n \"contradiction_detected\", \"contradiction_resolved\", \"rolled_back\",\n ],\n }).notNull(),\n actor: text(\"actor\").notNull(),\n before_snapshot: text(\"before_snapshot\"),\n after_snapshot: text(\"after_snapshot\"),\n reason: text(\"reason\"),\n timestamp: text(\"timestamp\").notNull(),\n}, (table) => ([\n index(\"idx_audit_memory\").on(table.memory_id),\n index(\"idx_audit_timestamp\").on(table.timestamp),\n]));\n\n// Tier-2 delegated maintenance tasks\nexport const memoryMaintenanceTasks = sqliteTable(\"memory_maintenance_tasks\", {\n id: text(\"id\").primaryKey(),\n kind: text(\"kind\", {\n enum: [\n \"summarize_history\",\n \"merge_duplicates\",\n \"refine_candidate\",\n \"summarize_session\",\n \"synthesize_repo\",\n \"verify_capture\",\n ],\n }).notNull(),\n status: text(\"status\", {\n enum: [\"pending\", \"claimed\", \"submitted\", \"completed\", \"abandoned\"],\n }).notNull(),\n priority: integer(\"priority\").notNull().default(0),\n repo: text(\"repo\"),\n target_key: text(\"target_key\").notNull(),\n payload: text(\"payload\", { mode: \"json\" }).notNull(),\n result: text(\"result\", { mode: \"json\" }),\n failure_reason: text(\"failure_reason\"),\n claimed_by: text(\"claimed_by\"),\n claimed_at: text(\"claimed_at\"),\n claim_expires_at: text(\"claim_expires_at\"),\n submitted_at: text(\"submitted_at\"),\n completed_at: text(\"completed_at\"),\n created_at: text(\"created_at\").notNull(),\n attempts: integer(\"attempts\").notNull().default(0),\n max_attempts: integer(\"max_attempts\").notNull().default(3),\n}, (table) => ([\n index(\"idx_mmt_status_priority\").on(table.status, table.priority, table.created_at),\n index(\"idx_mmt_repo_status\").on(table.repo, table.status),\n index(\"idx_mmt_claim_expires\").on(table.claim_expires_at),\n index(\"idx_mmt_kind_target\").on(table.kind, table.target_key),\n]));\n\n// Phase 2: implicit feedback signals\nexport const implicitSignals = sqliteTable(\"implicit_signals\", {\n id: text(\"id\").primaryKey(),\n memory_id: text(\"memory_id\")\n .notNull()\n .references(() => memories.id),\n session_id: text(\"session_id\").notNull(),\n signal_type: text(\"signal_type\", {\n enum: [\n \"test_pass\",\n \"test_fail\",\n \"file_unchanged\",\n \"file_rewritten\",\n \"task_accepted\",\n \"task_rejected\",\n ],\n }).notNull(),\n timestamp: text(\"timestamp\").notNull(),\n context: text(\"context\"),\n}, (table) => ([\n index(\"idx_implicit_memory\").on(table.memory_id),\n index(\"idx_implicit_session\").on(table.session_id),\n]));\n\n// LLM usage tracking for daemon-owned maintenance dispatcher\nexport const llmUsage = sqliteTable(\"llm_usage\", {\n id: text(\"id\").primaryKey(),\n provider: text(\"provider\").notNull(),\n model: text(\"model\").notNull(),\n task_kind: text(\"task_kind\").notNull(),\n task_id: text(\"task_id\"),\n repo: text(\"repo\"),\n prompt_tokens: integer(\"prompt_tokens\").notNull().default(0),\n completion_tokens: integer(\"completion_tokens\").notNull().default(0),\n total_tokens: integer(\"total_tokens\").notNull().default(0),\n cost_usd: real(\"cost_usd\"),\n duration_ms: integer(\"duration_ms\").notNull().default(0),\n ok: integer(\"ok\", { mode: \"boolean\" }).notNull().default(true),\n error: text(\"error\"),\n created_at: text(\"created_at\").notNull(),\n}, (table) => ([\n index(\"idx_llm_usage_created\").on(table.created_at),\n index(\"idx_llm_usage_provider_model\").on(table.provider, table.model),\n index(\"idx_llm_usage_task_kind\").on(table.task_kind),\n index(\"idx_llm_usage_repo\").on(table.repo),\n]));\n\n// Phase-4 quality snapshots — periodic sample of injection-outcome ratios\n// so we can compare followed-rate before/after cleanup tuning over weeks.\nexport const qualitySnapshots = sqliteTable(\"quality_snapshots\", {\n id: text(\"id\").primaryKey(),\n taken_at: text(\"taken_at\").notNull(),\n window_start: text(\"window_start\").notNull(),\n window_end: text(\"window_end\").notNull(),\n injections_total: integer(\"injections_total\").notNull(),\n injections_resolved: integer(\"injections_resolved\").notNull(),\n injections_followed: integer(\"injections_followed\").notNull(),\n injections_overridden: integer(\"injections_overridden\").notNull(),\n injections_contradicted: integer(\"injections_contradicted\").notNull(),\n injections_ignored: integer(\"injections_ignored\").notNull(),\n followed_rate_resolved: real(\"followed_rate_resolved\"),\n active_rule_count: integer(\"active_rule_count\").notNull(),\n active_command_count: integer(\"active_command_count\").notNull(),\n candidate_correction_count: integer(\"candidate_correction_count\").notNull(),\n history_injections_total: integer(\"history_injections_total\").notNull().default(0),\n history_snippets_injected: integer(\"history_snippets_injected\").notNull().default(0),\n notes: text(\"notes\"),\n}, (table) => ([\n index(\"idx_quality_snapshots_taken\").on(table.taken_at),\n]));\n\n// Phase-1 deterministic cleanup log (revertable, no LLM required)\nexport const maintenanceCleanupLog = sqliteTable(\"maintenance_cleanup_log\", {\n id: text(\"id\").primaryKey(),\n run_id: text(\"run_id\").notNull(),\n action: text(\"action\", {\n enum: [\n \"dedupe_exact_merge\",\n \"reject_fragment_candidate\",\n \"promote_repeat_correction\",\n \"suppress_unproductive_command\",\n \"globalize_cross_repo\",\n ],\n }).notNull(),\n memory_id: text(\"memory_id\").notNull(),\n related_memory_id: text(\"related_memory_id\"),\n before_snapshot: text(\"before_snapshot\", { mode: \"json\" }),\n after_snapshot: text(\"after_snapshot\", { mode: \"json\" }),\n details: text(\"details\", { mode: \"json\" }).notNull().default(\"{}\"),\n reverted: integer(\"reverted\", { mode: \"boolean\" }).notNull().default(false),\n reverted_at: text(\"reverted_at\"),\n created_at: text(\"created_at\").notNull(),\n}, (table) => ([\n index(\"idx_cleanup_log_run\").on(table.run_id),\n index(\"idx_cleanup_log_memory\").on(table.memory_id),\n index(\"idx_cleanup_log_action\").on(table.action),\n index(\"idx_cleanup_log_created\").on(table.created_at),\n]));\n"],"mappings":"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","names":[]}