@0xmaxma/claude-gateway 1.6.9 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. package/README.md +149 -20
  2. package/config.template.json +59 -1
  3. package/dist/agent/dreaming/accept.d.ts +43 -0
  4. package/dist/agent/dreaming/accept.d.ts.map +1 -0
  5. package/dist/agent/dreaming/accept.js +230 -0
  6. package/dist/agent/dreaming/accept.js.map +1 -0
  7. package/dist/agent/dreaming/applier.d.ts +77 -0
  8. package/dist/agent/dreaming/applier.d.ts.map +1 -0
  9. package/dist/agent/dreaming/applier.js +406 -0
  10. package/dist/agent/dreaming/applier.js.map +1 -0
  11. package/dist/agent/dreaming/audit.d.ts +27 -0
  12. package/dist/agent/dreaming/audit.d.ts.map +1 -0
  13. package/dist/agent/dreaming/audit.js +100 -0
  14. package/dist/agent/dreaming/audit.js.map +1 -0
  15. package/dist/agent/dreaming/compactor.d.ts +66 -0
  16. package/dist/agent/dreaming/compactor.d.ts.map +1 -0
  17. package/dist/agent/dreaming/compactor.js +306 -0
  18. package/dist/agent/dreaming/compactor.js.map +1 -0
  19. package/dist/agent/dreaming/config.d.ts +19 -0
  20. package/dist/agent/dreaming/config.d.ts.map +1 -0
  21. package/dist/agent/dreaming/config.js +107 -0
  22. package/dist/agent/dreaming/config.js.map +1 -0
  23. package/dist/agent/dreaming/episodic.d.ts +42 -0
  24. package/dist/agent/dreaming/episodic.d.ts.map +1 -0
  25. package/dist/agent/dreaming/episodic.js +116 -0
  26. package/dist/agent/dreaming/episodic.js.map +1 -0
  27. package/dist/agent/dreaming/gather.d.ts +31 -0
  28. package/dist/agent/dreaming/gather.d.ts.map +1 -0
  29. package/dist/agent/dreaming/gather.js +55 -0
  30. package/dist/agent/dreaming/gather.js.map +1 -0
  31. package/dist/agent/dreaming/index.d.ts +87 -0
  32. package/dist/agent/dreaming/index.d.ts.map +1 -0
  33. package/dist/agent/dreaming/index.js +377 -0
  34. package/dist/agent/dreaming/index.js.map +1 -0
  35. package/dist/agent/dreaming/migrate-cli.d.ts +17 -0
  36. package/dist/agent/dreaming/migrate-cli.d.ts.map +1 -0
  37. package/dist/agent/dreaming/migrate-cli.js +42 -0
  38. package/dist/agent/dreaming/migrate-cli.js.map +1 -0
  39. package/dist/agent/dreaming/migrate.d.ts +72 -0
  40. package/dist/agent/dreaming/migrate.d.ts.map +1 -0
  41. package/dist/agent/dreaming/migrate.js +374 -0
  42. package/dist/agent/dreaming/migrate.js.map +1 -0
  43. package/dist/agent/dreaming/report.d.ts +39 -0
  44. package/dist/agent/dreaming/report.d.ts.map +1 -0
  45. package/dist/agent/dreaming/report.js +121 -0
  46. package/dist/agent/dreaming/report.js.map +1 -0
  47. package/dist/agent/dreaming/reviewer.d.ts +43 -0
  48. package/dist/agent/dreaming/reviewer.d.ts.map +1 -0
  49. package/dist/agent/dreaming/reviewer.js +249 -0
  50. package/dist/agent/dreaming/reviewer.js.map +1 -0
  51. package/dist/agent/dreaming/staleness.d.ts +68 -0
  52. package/dist/agent/dreaming/staleness.d.ts.map +1 -0
  53. package/dist/agent/dreaming/staleness.js +281 -0
  54. package/dist/agent/dreaming/staleness.js.map +1 -0
  55. package/dist/agent/dreaming/types.d.ts +130 -0
  56. package/dist/agent/dreaming/types.d.ts.map +1 -0
  57. package/dist/agent/dreaming/types.js +10 -0
  58. package/dist/agent/dreaming/types.js.map +1 -0
  59. package/dist/agent/knowledge/archive-db.d.ts +114 -0
  60. package/dist/agent/knowledge/archive-db.d.ts.map +1 -0
  61. package/dist/agent/knowledge/archive-db.js +474 -0
  62. package/dist/agent/knowledge/archive-db.js.map +1 -0
  63. package/dist/agent/knowledge/chunk.d.ts +21 -0
  64. package/dist/agent/knowledge/chunk.d.ts.map +1 -0
  65. package/dist/agent/knowledge/chunk.js +67 -0
  66. package/dist/agent/knowledge/chunk.js.map +1 -0
  67. package/dist/agent/knowledge/config.d.ts +20 -0
  68. package/dist/agent/knowledge/config.d.ts.map +1 -0
  69. package/dist/agent/knowledge/config.js +143 -0
  70. package/dist/agent/knowledge/config.js.map +1 -0
  71. package/dist/agent/knowledge/graph-demo.d.ts +25 -0
  72. package/dist/agent/knowledge/graph-demo.d.ts.map +1 -0
  73. package/dist/agent/knowledge/graph-demo.js +132 -0
  74. package/dist/agent/knowledge/graph-demo.js.map +1 -0
  75. package/dist/agent/knowledge/index.d.ts +24 -0
  76. package/dist/agent/knowledge/index.d.ts.map +1 -0
  77. package/dist/agent/knowledge/index.js +50 -0
  78. package/dist/agent/knowledge/index.js.map +1 -0
  79. package/dist/agent/knowledge/indexer.d.ts +34 -0
  80. package/dist/agent/knowledge/indexer.d.ts.map +1 -0
  81. package/dist/agent/knowledge/indexer.js +271 -0
  82. package/dist/agent/knowledge/indexer.js.map +1 -0
  83. package/dist/agent/knowledge/lifecycle.d.ts +91 -0
  84. package/dist/agent/knowledge/lifecycle.d.ts.map +1 -0
  85. package/dist/agent/knowledge/lifecycle.js +205 -0
  86. package/dist/agent/knowledge/lifecycle.js.map +1 -0
  87. package/dist/agent/knowledge/provenance.d.ts +15 -0
  88. package/dist/agent/knowledge/provenance.d.ts.map +1 -0
  89. package/dist/agent/knowledge/provenance.js +37 -0
  90. package/dist/agent/knowledge/provenance.js.map +1 -0
  91. package/dist/agent/knowledge/reindex-cli.d.ts +13 -0
  92. package/dist/agent/knowledge/reindex-cli.d.ts.map +1 -0
  93. package/dist/agent/knowledge/reindex-cli.js +53 -0
  94. package/dist/agent/knowledge/reindex-cli.js.map +1 -0
  95. package/dist/agent/knowledge/reindex-spawn.d.ts +30 -0
  96. package/dist/agent/knowledge/reindex-spawn.d.ts.map +1 -0
  97. package/dist/agent/knowledge/reindex-spawn.js +97 -0
  98. package/dist/agent/knowledge/reindex-spawn.js.map +1 -0
  99. package/dist/agent/knowledge/shared-promote.d.ts +18 -0
  100. package/dist/agent/knowledge/shared-promote.d.ts.map +1 -0
  101. package/dist/agent/knowledge/shared-promote.js +29 -0
  102. package/dist/agent/knowledge/shared-promote.js.map +1 -0
  103. package/dist/agent/knowledge/shared-writer.d.ts +24 -0
  104. package/dist/agent/knowledge/shared-writer.d.ts.map +1 -0
  105. package/dist/agent/knowledge/shared-writer.js +97 -0
  106. package/dist/agent/knowledge/shared-writer.js.map +1 -0
  107. package/dist/agent/knowledge/types.d.ts +83 -0
  108. package/dist/agent/knowledge/types.d.ts.map +1 -0
  109. package/dist/agent/knowledge/types.js +12 -0
  110. package/dist/agent/knowledge/types.js.map +1 -0
  111. package/dist/agent/knowledge/wiki.d.ts +107 -0
  112. package/dist/agent/knowledge/wiki.d.ts.map +1 -0
  113. package/dist/agent/knowledge/wiki.js +415 -0
  114. package/dist/agent/knowledge/wiki.js.map +1 -0
  115. package/dist/agent/memory-metrics.d.ts +48 -0
  116. package/dist/agent/memory-metrics.d.ts.map +1 -0
  117. package/dist/agent/memory-metrics.js +156 -0
  118. package/dist/agent/memory-metrics.js.map +1 -0
  119. package/dist/agent/runner.d.ts +24 -1
  120. package/dist/agent/runner.d.ts.map +1 -1
  121. package/dist/agent/runner.js +82 -6
  122. package/dist/agent/runner.js.map +1 -1
  123. package/dist/agent/skill-learning/config.d.ts +18 -0
  124. package/dist/agent/skill-learning/config.d.ts.map +1 -0
  125. package/dist/agent/skill-learning/config.js +71 -0
  126. package/dist/agent/skill-learning/config.js.map +1 -0
  127. package/dist/agent/skill-learning/curator.d.ts +45 -0
  128. package/dist/agent/skill-learning/curator.d.ts.map +1 -0
  129. package/dist/agent/skill-learning/curator.js +171 -0
  130. package/dist/agent/skill-learning/curator.js.map +1 -0
  131. package/dist/agent/skill-learning/index.d.ts +79 -0
  132. package/dist/agent/skill-learning/index.d.ts.map +1 -0
  133. package/dist/agent/skill-learning/index.js +308 -0
  134. package/dist/agent/skill-learning/index.js.map +1 -0
  135. package/dist/agent/skill-learning/metrics.d.ts +13 -0
  136. package/dist/agent/skill-learning/metrics.d.ts.map +1 -0
  137. package/dist/agent/skill-learning/metrics.js +109 -0
  138. package/dist/agent/skill-learning/metrics.js.map +1 -0
  139. package/dist/agent/skill-learning/notifier.d.ts +111 -0
  140. package/dist/agent/skill-learning/notifier.d.ts.map +1 -0
  141. package/dist/agent/skill-learning/notifier.js +398 -0
  142. package/dist/agent/skill-learning/notifier.js.map +1 -0
  143. package/dist/agent/skill-learning/reviewer.d.ts +61 -0
  144. package/dist/agent/skill-learning/reviewer.d.ts.map +1 -0
  145. package/dist/agent/skill-learning/reviewer.js +271 -0
  146. package/dist/agent/skill-learning/reviewer.js.map +1 -0
  147. package/dist/agent/skill-learning/telemetry.d.ts +22 -0
  148. package/dist/agent/skill-learning/telemetry.d.ts.map +1 -0
  149. package/dist/agent/skill-learning/telemetry.js +90 -0
  150. package/dist/agent/skill-learning/telemetry.js.map +1 -0
  151. package/dist/agent/skill-learning/trigger.d.ts +23 -0
  152. package/dist/agent/skill-learning/trigger.d.ts.map +1 -0
  153. package/dist/agent/skill-learning/trigger.js +44 -0
  154. package/dist/agent/skill-learning/trigger.js.map +1 -0
  155. package/dist/agent/skill-learning/types.d.ts +165 -0
  156. package/dist/agent/skill-learning/types.d.ts.map +1 -0
  157. package/dist/agent/skill-learning/types.js +11 -0
  158. package/dist/agent/skill-learning/types.js.map +1 -0
  159. package/dist/agent/skill-learning/writer.d.ts +37 -0
  160. package/dist/agent/skill-learning/writer.d.ts.map +1 -0
  161. package/dist/agent/skill-learning/writer.js +223 -0
  162. package/dist/agent/skill-learning/writer.js.map +1 -0
  163. package/dist/agent/workspace-loader.d.ts +83 -6
  164. package/dist/agent/workspace-loader.d.ts.map +1 -1
  165. package/dist/agent/workspace-loader.js +207 -14
  166. package/dist/agent/workspace-loader.js.map +1 -1
  167. package/dist/api/gateway-router.d.ts +2 -0
  168. package/dist/api/gateway-router.d.ts.map +1 -1
  169. package/dist/api/gateway-router.js +293 -6
  170. package/dist/api/gateway-router.js.map +1 -1
  171. package/dist/api/skills-router.d.ts +2 -2
  172. package/dist/api/skills-router.d.ts.map +1 -1
  173. package/dist/api/skills-router.js +61 -1
  174. package/dist/api/skills-router.js.map +1 -1
  175. package/dist/apps/agent-manager.d.ts +7 -0
  176. package/dist/apps/agent-manager.d.ts.map +1 -1
  177. package/dist/apps/agent-manager.js +13 -1
  178. package/dist/apps/agent-manager.js.map +1 -1
  179. package/dist/config/migrator.d.ts +2 -0
  180. package/dist/config/migrator.d.ts.map +1 -1
  181. package/dist/config/migrator.js +72 -1
  182. package/dist/config/migrator.js.map +1 -1
  183. package/dist/history/cleanup.d.ts +7 -0
  184. package/dist/history/cleanup.d.ts.map +1 -1
  185. package/dist/history/cleanup.js +27 -0
  186. package/dist/history/cleanup.js.map +1 -1
  187. package/dist/history/db.d.ts +65 -0
  188. package/dist/history/db.d.ts.map +1 -1
  189. package/dist/history/db.js +261 -0
  190. package/dist/history/db.js.map +1 -1
  191. package/dist/index.js +122 -20
  192. package/dist/index.js.map +1 -1
  193. package/dist/session/process.d.ts +10 -0
  194. package/dist/session/process.d.ts.map +1 -1
  195. package/dist/session/process.js +86 -1
  196. package/dist/session/process.js.map +1 -1
  197. package/dist/skills/loader.d.ts +8 -0
  198. package/dist/skills/loader.d.ts.map +1 -1
  199. package/dist/skills/loader.js +29 -1
  200. package/dist/skills/loader.js.map +1 -1
  201. package/dist/types.d.ts +116 -0
  202. package/dist/types.d.ts.map +1 -1
  203. package/dist/ui/web-ui.d.ts.map +1 -1
  204. package/dist/ui/web-ui.js +1126 -3
  205. package/dist/ui/web-ui.js.map +1 -1
  206. package/mcp/package.json +2 -1
  207. package/mcp/server.ts +2 -0
  208. package/mcp/tools/memory/archive-reader.test.ts +212 -0
  209. package/mcp/tools/memory/archive-reader.ts +253 -0
  210. package/mcp/tools/memory/module.ts +152 -0
  211. package/mcp/tools/memory/retrieval-recorder.ts +66 -0
  212. package/mcp/tools/skills/module.ts +28 -0
  213. package/package.json +1 -1
  214. package/resource/claude_gateway.svg +1038 -112
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Types for nightly memory "dreaming" (issue #325, Part C).
3
+ *
4
+ * P2 slice = `propose` (dry-run) only: a print-only reviewer proposes memory
5
+ * consolidation ops which are written to a DREAMS.md diary + JSONL audit — the
6
+ * gateway mutates NO memory file. `auto` mode (applying ops) is a P3 follow-up.
7
+ */
8
+ export type DreamMode = 'propose' | 'auto';
9
+ export type DreamOpKind = 'add' | 'replace' | 'remove';
10
+ export type DreamFile = 'MEMORY.md' | 'USER.md';
11
+ /**
12
+ * Which memory tier an op writes to (planning-65).
13
+ * - `durable` → an evergreen file (`MEMORY.md`/`USER.md`), injected every session.
14
+ * - `episodic` → a `memory/<topic>.md` note, searched on demand (task-log).
15
+ * Absent ⇒ `durable` (back-compat with pre-routing proposals).
16
+ */
17
+ export type DreamTier = 'durable' | 'episodic';
18
+ /** Raw archive-staleness-GC config under `gateway.dreaming.staleness` (planning-66). */
19
+ export interface StalenessConfig {
20
+ enabled?: boolean;
21
+ staleTtlDays?: number;
22
+ keepImportance?: number;
23
+ minRetrievalKeep?: number;
24
+ supersession?: boolean;
25
+ recordRetrievals?: boolean;
26
+ }
27
+ /** Fully-resolved staleness config (defaults applied, values sanitized). */
28
+ export interface ResolvedStalenessCfg {
29
+ enabled: boolean;
30
+ staleTtlDays: number;
31
+ keepImportance: number;
32
+ minRetrievalKeep: number;
33
+ supersession: boolean;
34
+ recordRetrievals: boolean;
35
+ }
36
+ /** Partial config as it appears under `gateway.dreaming` / a per-agent override. */
37
+ export interface DreamingConfig {
38
+ enabled?: boolean;
39
+ mode?: DreamMode;
40
+ dreamHour?: number;
41
+ /** Minute-of-hour (0–59, default 0) the dream fires at, paired with `dreamHour`. */
42
+ dreamMinute?: number;
43
+ dreamTimezone?: string;
44
+ quietMinutes?: number;
45
+ lookbackDays?: number;
46
+ maxChangesPerRun?: number;
47
+ reviewModel?: string;
48
+ promotionThreshold?: number;
49
+ minRecallCount?: number;
50
+ /**
51
+ * planning-67: when true (default), the nightly dream (auto mode) drains an
52
+ * over-budget MEMORY.md by routing episodic task-log to `memory/<topic>.md`
53
+ * automatically (archive-safe), instead of relying on manual `dreaming:migrate`.
54
+ * A clean kill-switch: false ⇒ prior behavior (manual CLI only).
55
+ */
56
+ autoRouteOut?: boolean;
57
+ /**
58
+ * planning-68: spread agents' nightly runs across a window instead of all
59
+ * firing at `dreamHour:00`. A deterministic per-agent jitter in
60
+ * `[0, staggerWindowMinutes*60s)` is added to the scheduled delay. Default 30;
61
+ * clamped to `[0,55]` so the offset never crosses the next hour. 0 = disabled.
62
+ */
63
+ staggerWindowMinutes?: number;
64
+ staleness?: StalenessConfig;
65
+ }
66
+ /** Fully-resolved config (defaults applied, timezone normalized). */
67
+ export interface ResolvedDreamingCfg {
68
+ enabled: boolean;
69
+ mode: DreamMode;
70
+ dreamHour: number;
71
+ dreamMinute: number;
72
+ dreamTimezone: string;
73
+ quietMinutes: number;
74
+ lookbackDays: number;
75
+ maxChangesPerRun: number;
76
+ reviewModel: string;
77
+ promotionThreshold: number;
78
+ minRecallCount: number;
79
+ autoRouteOut: boolean;
80
+ staggerWindowMinutes: number;
81
+ staleness: ResolvedStalenessCfg;
82
+ }
83
+ /** One proposed memory-consolidation op (never applied in propose mode). */
84
+ export interface DreamProposal {
85
+ op: DreamOpKind;
86
+ /**
87
+ * Target evergreen file for a `durable` op. Omitted for `episodic` ops, which
88
+ * route by `topic` into `memory/<topic>.md` instead.
89
+ */
90
+ file?: DreamFile;
91
+ /** Tier this op writes to; absent ⇒ 'durable' (back-compat). */
92
+ tier?: DreamTier;
93
+ /** For `episodic` ops: the `memory/<topic>.md` slug (`^[a-z0-9-]{1,64}$`). */
94
+ topic?: string;
95
+ /** Substring anchor for `replace`/`remove`. */
96
+ target?: string;
97
+ /** New text for `add`/`replace`. */
98
+ content?: string;
99
+ reason: string;
100
+ score: number;
101
+ recallCount: number;
102
+ }
103
+ export interface DreamReviewResult {
104
+ summary: string;
105
+ proposals: DreamProposal[];
106
+ /** Tokens the reviewer spent (input+output), for the net-token ledger. 0 if unknown. */
107
+ tokensSpent: number;
108
+ timedOut?: boolean;
109
+ /**
110
+ * Diagnostics (#353) for a failed run: WHY the reviewer produced no usable
111
+ * output (e.g. 'timeout', 'spawn-error: …', 'nonzero-exit:1', 'spawn-throw: …')
112
+ * and a bounded tail of the child's stderr (an API error such as
113
+ * overloaded_error). Absent on success. Logged by dreamOnce so an
114
+ * `outcome=error` run is debuggable instead of opaque.
115
+ */
116
+ failureReason?: string;
117
+ stderrTail?: string;
118
+ }
119
+ export type DreamOutcome = 'proposed' | 'no-changes' | 'skipped-disabled' | 'skipped-quiet' | 'skipped-empty' | 'error';
120
+ export interface DreamRunResult {
121
+ outcome: DreamOutcome;
122
+ proposalCount: number;
123
+ tokensSpent: number;
124
+ mode: DreamMode;
125
+ /** Ops actually applied to memory (auto mode only; 0 in propose mode). */
126
+ appliedCount?: number;
127
+ /** Terminal-state entries the deterministic compactor archived (auto mode; #337). */
128
+ compactedCount?: number;
129
+ }
130
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/agent/dreaming/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ /**
3
+ * Types for nightly memory "dreaming" (issue #325, Part C).
4
+ *
5
+ * P2 slice = `propose` (dry-run) only: a print-only reviewer proposes memory
6
+ * consolidation ops which are written to a DREAMS.md diary + JSONL audit — the
7
+ * gateway mutates NO memory file. `auto` mode (applying ops) is a P3 follow-up.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/agent/dreaming/types.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Per-agent knowledge archive — SQLite/FTS5 substrate (planning-64 K0).
3
+ *
4
+ * One `kb.sqlite` per agent, alongside `history.db`. Backed by `node:sqlite`
5
+ * `DatabaseSync` (zero new dependency — the same substrate `src/history/db.ts`
6
+ * uses, which already runs FTS5). Schema adapted from openclaw memory-core,
7
+ * trimmed for v1 (FTS5-only; no vector table yet).
8
+ *
9
+ * IMPORTANT: `DatabaseSync` is synchronous. Every method here blocks. Callers
10
+ * MUST run indexing/queries OFF the gateway event loop (the nightly dreaming
11
+ * spawn or an out-of-process tool) — never on the HTTP read path (#277 lesson).
12
+ * K0 ships this as dormant infrastructure; no gateway runtime path calls it yet.
13
+ */
14
+ import type { ArchiveChunkRow, ArchiveProvenanceRow, ArchiveRecallRow, ArchiveSourceRow } from './types';
15
+ /** A chunk plus its recall + provenance metadata, ready to persist. */
16
+ export interface ChunkWithMeta {
17
+ chunk: ArchiveChunkRow;
18
+ recall: ArchiveRecallRow;
19
+ provenance: ArchiveProvenanceRow;
20
+ /**
21
+ * Stable, reindex-surviving identity of the archive ENTRY (markdown block) this
22
+ * chunk belongs to (planning-66). `null` for content outside any entry block
23
+ * (evergreen prose, section headers). Keyed to `kb_entry_lifecycle`.
24
+ */
25
+ entryHash?: string | null;
26
+ }
27
+ /** One archive-entry lifecycle row (planning-66), joined with its max importance. */
28
+ export interface LifecycleRow {
29
+ entryHash: string;
30
+ path: string;
31
+ firstSeen: number;
32
+ lastRetrieved: number | null;
33
+ retrievalCount: number;
34
+ supersededBy: string | null;
35
+ invalidAt: number | null;
36
+ /** MAX importance across the chunks carrying this entry_hash (null = none set). */
37
+ importance: number | null;
38
+ }
39
+ export declare class ArchiveDB {
40
+ private readonly db;
41
+ private readonly dbPath;
42
+ private readonly tokenizer;
43
+ private readonly stmts;
44
+ private constructor();
45
+ static forPath(dbPath: string, tokenizer?: string): ArchiveDB;
46
+ static evict(dbPath: string): void;
47
+ private _initSchema;
48
+ /** Look up an indexed source by its workspace-relative path. */
49
+ getSource(relPath: string): ArchiveSourceRow | undefined;
50
+ /**
51
+ * Replace a file's index atomically: delete its old chunks, upsert the source
52
+ * row, insert the fresh chunks (+ recall + provenance), then upsert the entry
53
+ * lifecycle rows for ALL of the file's blocks. Runs in a transaction so a
54
+ * failure never leaves a half-indexed file.
55
+ *
56
+ * `entryBlocks` (planning-66) is the FULL set of archive-entry blocks in the file
57
+ * — one lifecycle row each — NOT derived from chunks: a single FTS chunk can span
58
+ * several blocks, so per-chunk upsert would miss the inner ones. Empty for
59
+ * non-archive-tier files (evergreen/pinned/shared get no lifecycle).
60
+ */
61
+ replaceSource(source: Omit<ArchiveSourceRow, 'id'>, chunks: ChunkWithMeta[], entryBlocks?: Array<{
62
+ entryHash: string;
63
+ firstSeen: number;
64
+ }>): void;
65
+ /** Remove a source and all its chunks (file disappeared). */
66
+ deleteSource(relPath: string): void;
67
+ private _deleteChunksForPath;
68
+ /** All indexed source paths. */
69
+ listSourcePaths(): string[];
70
+ /** Current index revision (bumped on every mutation). */
71
+ getRevision(): number;
72
+ /** Total chunk count (test/introspection helper). */
73
+ chunkCount(): number;
74
+ /** Provenance row for a chunk (test/introspection helper). */
75
+ getProvenance(chunkId: string): ArchiveProvenanceRow | undefined;
76
+ /** Append a retrieval event (Node-side seed for tests + aggregation symmetry). */
77
+ logRetrieval(entryHash: string, retrievedAt: number): void;
78
+ /**
79
+ * Fold the append-only retrieval log into per-entry lifecycle: bump each entry's
80
+ * `last_retrieved` to the newest hit and add the hit count, then delete the
81
+ * folded rows (bounded by the max rowid read, so a concurrent append after this
82
+ * read survives to the next GC). Returns how many log rows were folded. A hit for
83
+ * an entry_hash no longer in lifecycle (its text changed → new hash) updates 0
84
+ * rows and is harmlessly dropped.
85
+ */
86
+ aggregateRetrievalLog(): number;
87
+ /** All lifecycle rows, joined with the MAX importance across their chunks. */
88
+ listLifecycle(): LifecycleRow[];
89
+ /** Read one lifecycle row (test/introspection helper). */
90
+ getLifecycle(entryHash: string): LifecycleRow | undefined;
91
+ /** Mark `entryHash` superseded by `bySpec` (or clear when null). */
92
+ setSuperseded(entryHash: string, bySpec: string | null): void;
93
+ /**
94
+ * Populate the (previously inert) provenance `supersedes_key` for every chunk of
95
+ * a superseded entry — so the search-side provenance reflects supersession too,
96
+ * not just the lifecycle table. Best-effort mirror of {@link setSuperseded}.
97
+ */
98
+ setSupersedesKeyForEntry(entryHash: string, key: string): void;
99
+ /** Stamp (soft-invalidate) or clear an entry's invalidation. */
100
+ stampInvalid(entryHash: string, invalidAt: number | null): void;
101
+ /**
102
+ * Keyword search over chunk text (FTS5 BM25). K0 helper for tests/introspection;
103
+ * the ranked, agent-facing `memory_search` tool is K1. Returns best matches
104
+ * first. Query tokens are quoted so punctuation can't inject FTS syntax.
105
+ */
106
+ search(query: string, limit?: number): ArchiveChunkRow[];
107
+ /**
108
+ * Close the handle AND drop it from the singleton cache, so a later
109
+ * `forPath(samePath)` opens a fresh handle instead of returning this closed one
110
+ * (whose statements would throw). Mirrors `evict()`.
111
+ */
112
+ close(): void;
113
+ }
114
+ //# sourceMappingURL=archive-db.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archive-db.d.ts","sourceRoot":"","sources":["../../../src/agent/knowledge/archive-db.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAKjB,uEAAuE;AACvE,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,eAAe,CAAC;IACvB,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,EAAE,oBAAoB,CAAC;IACjC;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,qFAAqF;AACrF,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,mFAAmF;IACnF,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAe;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAQpB;IAEF,OAAO;IAuCP,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,SAAc,GAAG,SAAS;IAMlE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAKlC,OAAO,CAAC,WAAW;IAiInB,gEAAgE;IAChE,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAaxD;;;;;;;;;;OAUG;IACH,aAAa,CACX,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,EACpC,MAAM,EAAE,aAAa,EAAE,EACvB,WAAW,GAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAM,GAChE,IAAI;IA8CP,6DAA6D;IAC7D,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAmBnC,OAAO,CAAC,oBAAoB;IAK5B,gCAAgC;IAChC,eAAe,IAAI,MAAM,EAAE;IAK3B,yDAAyD;IACzD,WAAW,IAAI,MAAM;IAOrB,qDAAqD;IACrD,UAAU,IAAI,MAAM;IAKpB,8DAA8D;IAC9D,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAehE,kFAAkF;IAClF,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAM1D;;;;;;;OAOG;IACH,qBAAqB,IAAI,MAAM;IAsC/B,8EAA8E;IAC9E,aAAa,IAAI,YAAY,EAAE;IAsB/B,0DAA0D;IAC1D,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIzD,oEAAoE;IACpE,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAM7D;;;;OAIG;IACH,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAS9D,gEAAgE;IAChE,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAO/D;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,eAAe,EAAE;IAwBpD;;;;OAIG;IACH,KAAK,IAAI,IAAI;CAId"}