@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.
- package/README.md +149 -20
- package/config.template.json +59 -1
- package/dist/agent/dreaming/accept.d.ts +43 -0
- package/dist/agent/dreaming/accept.d.ts.map +1 -0
- package/dist/agent/dreaming/accept.js +230 -0
- package/dist/agent/dreaming/accept.js.map +1 -0
- package/dist/agent/dreaming/applier.d.ts +77 -0
- package/dist/agent/dreaming/applier.d.ts.map +1 -0
- package/dist/agent/dreaming/applier.js +406 -0
- package/dist/agent/dreaming/applier.js.map +1 -0
- package/dist/agent/dreaming/audit.d.ts +27 -0
- package/dist/agent/dreaming/audit.d.ts.map +1 -0
- package/dist/agent/dreaming/audit.js +100 -0
- package/dist/agent/dreaming/audit.js.map +1 -0
- package/dist/agent/dreaming/compactor.d.ts +66 -0
- package/dist/agent/dreaming/compactor.d.ts.map +1 -0
- package/dist/agent/dreaming/compactor.js +306 -0
- package/dist/agent/dreaming/compactor.js.map +1 -0
- package/dist/agent/dreaming/config.d.ts +19 -0
- package/dist/agent/dreaming/config.d.ts.map +1 -0
- package/dist/agent/dreaming/config.js +107 -0
- package/dist/agent/dreaming/config.js.map +1 -0
- package/dist/agent/dreaming/episodic.d.ts +42 -0
- package/dist/agent/dreaming/episodic.d.ts.map +1 -0
- package/dist/agent/dreaming/episodic.js +116 -0
- package/dist/agent/dreaming/episodic.js.map +1 -0
- package/dist/agent/dreaming/gather.d.ts +31 -0
- package/dist/agent/dreaming/gather.d.ts.map +1 -0
- package/dist/agent/dreaming/gather.js +55 -0
- package/dist/agent/dreaming/gather.js.map +1 -0
- package/dist/agent/dreaming/index.d.ts +87 -0
- package/dist/agent/dreaming/index.d.ts.map +1 -0
- package/dist/agent/dreaming/index.js +377 -0
- package/dist/agent/dreaming/index.js.map +1 -0
- package/dist/agent/dreaming/migrate-cli.d.ts +17 -0
- package/dist/agent/dreaming/migrate-cli.d.ts.map +1 -0
- package/dist/agent/dreaming/migrate-cli.js +42 -0
- package/dist/agent/dreaming/migrate-cli.js.map +1 -0
- package/dist/agent/dreaming/migrate.d.ts +72 -0
- package/dist/agent/dreaming/migrate.d.ts.map +1 -0
- package/dist/agent/dreaming/migrate.js +374 -0
- package/dist/agent/dreaming/migrate.js.map +1 -0
- package/dist/agent/dreaming/report.d.ts +39 -0
- package/dist/agent/dreaming/report.d.ts.map +1 -0
- package/dist/agent/dreaming/report.js +121 -0
- package/dist/agent/dreaming/report.js.map +1 -0
- package/dist/agent/dreaming/reviewer.d.ts +43 -0
- package/dist/agent/dreaming/reviewer.d.ts.map +1 -0
- package/dist/agent/dreaming/reviewer.js +249 -0
- package/dist/agent/dreaming/reviewer.js.map +1 -0
- package/dist/agent/dreaming/staleness.d.ts +68 -0
- package/dist/agent/dreaming/staleness.d.ts.map +1 -0
- package/dist/agent/dreaming/staleness.js +281 -0
- package/dist/agent/dreaming/staleness.js.map +1 -0
- package/dist/agent/dreaming/types.d.ts +130 -0
- package/dist/agent/dreaming/types.d.ts.map +1 -0
- package/dist/agent/dreaming/types.js +10 -0
- package/dist/agent/dreaming/types.js.map +1 -0
- package/dist/agent/knowledge/archive-db.d.ts +114 -0
- package/dist/agent/knowledge/archive-db.d.ts.map +1 -0
- package/dist/agent/knowledge/archive-db.js +474 -0
- package/dist/agent/knowledge/archive-db.js.map +1 -0
- package/dist/agent/knowledge/chunk.d.ts +21 -0
- package/dist/agent/knowledge/chunk.d.ts.map +1 -0
- package/dist/agent/knowledge/chunk.js +67 -0
- package/dist/agent/knowledge/chunk.js.map +1 -0
- package/dist/agent/knowledge/config.d.ts +20 -0
- package/dist/agent/knowledge/config.d.ts.map +1 -0
- package/dist/agent/knowledge/config.js +143 -0
- package/dist/agent/knowledge/config.js.map +1 -0
- package/dist/agent/knowledge/graph-demo.d.ts +25 -0
- package/dist/agent/knowledge/graph-demo.d.ts.map +1 -0
- package/dist/agent/knowledge/graph-demo.js +132 -0
- package/dist/agent/knowledge/graph-demo.js.map +1 -0
- package/dist/agent/knowledge/index.d.ts +24 -0
- package/dist/agent/knowledge/index.d.ts.map +1 -0
- package/dist/agent/knowledge/index.js +50 -0
- package/dist/agent/knowledge/index.js.map +1 -0
- package/dist/agent/knowledge/indexer.d.ts +34 -0
- package/dist/agent/knowledge/indexer.d.ts.map +1 -0
- package/dist/agent/knowledge/indexer.js +271 -0
- package/dist/agent/knowledge/indexer.js.map +1 -0
- package/dist/agent/knowledge/lifecycle.d.ts +91 -0
- package/dist/agent/knowledge/lifecycle.d.ts.map +1 -0
- package/dist/agent/knowledge/lifecycle.js +205 -0
- package/dist/agent/knowledge/lifecycle.js.map +1 -0
- package/dist/agent/knowledge/provenance.d.ts +15 -0
- package/dist/agent/knowledge/provenance.d.ts.map +1 -0
- package/dist/agent/knowledge/provenance.js +37 -0
- package/dist/agent/knowledge/provenance.js.map +1 -0
- package/dist/agent/knowledge/reindex-cli.d.ts +13 -0
- package/dist/agent/knowledge/reindex-cli.d.ts.map +1 -0
- package/dist/agent/knowledge/reindex-cli.js +53 -0
- package/dist/agent/knowledge/reindex-cli.js.map +1 -0
- package/dist/agent/knowledge/reindex-spawn.d.ts +30 -0
- package/dist/agent/knowledge/reindex-spawn.d.ts.map +1 -0
- package/dist/agent/knowledge/reindex-spawn.js +97 -0
- package/dist/agent/knowledge/reindex-spawn.js.map +1 -0
- package/dist/agent/knowledge/shared-promote.d.ts +18 -0
- package/dist/agent/knowledge/shared-promote.d.ts.map +1 -0
- package/dist/agent/knowledge/shared-promote.js +29 -0
- package/dist/agent/knowledge/shared-promote.js.map +1 -0
- package/dist/agent/knowledge/shared-writer.d.ts +24 -0
- package/dist/agent/knowledge/shared-writer.d.ts.map +1 -0
- package/dist/agent/knowledge/shared-writer.js +97 -0
- package/dist/agent/knowledge/shared-writer.js.map +1 -0
- package/dist/agent/knowledge/types.d.ts +83 -0
- package/dist/agent/knowledge/types.d.ts.map +1 -0
- package/dist/agent/knowledge/types.js +12 -0
- package/dist/agent/knowledge/types.js.map +1 -0
- package/dist/agent/knowledge/wiki.d.ts +107 -0
- package/dist/agent/knowledge/wiki.d.ts.map +1 -0
- package/dist/agent/knowledge/wiki.js +415 -0
- package/dist/agent/knowledge/wiki.js.map +1 -0
- package/dist/agent/memory-metrics.d.ts +48 -0
- package/dist/agent/memory-metrics.d.ts.map +1 -0
- package/dist/agent/memory-metrics.js +156 -0
- package/dist/agent/memory-metrics.js.map +1 -0
- package/dist/agent/runner.d.ts +24 -1
- package/dist/agent/runner.d.ts.map +1 -1
- package/dist/agent/runner.js +82 -6
- package/dist/agent/runner.js.map +1 -1
- package/dist/agent/skill-learning/config.d.ts +18 -0
- package/dist/agent/skill-learning/config.d.ts.map +1 -0
- package/dist/agent/skill-learning/config.js +71 -0
- package/dist/agent/skill-learning/config.js.map +1 -0
- package/dist/agent/skill-learning/curator.d.ts +45 -0
- package/dist/agent/skill-learning/curator.d.ts.map +1 -0
- package/dist/agent/skill-learning/curator.js +171 -0
- package/dist/agent/skill-learning/curator.js.map +1 -0
- package/dist/agent/skill-learning/index.d.ts +79 -0
- package/dist/agent/skill-learning/index.d.ts.map +1 -0
- package/dist/agent/skill-learning/index.js +308 -0
- package/dist/agent/skill-learning/index.js.map +1 -0
- package/dist/agent/skill-learning/metrics.d.ts +13 -0
- package/dist/agent/skill-learning/metrics.d.ts.map +1 -0
- package/dist/agent/skill-learning/metrics.js +109 -0
- package/dist/agent/skill-learning/metrics.js.map +1 -0
- package/dist/agent/skill-learning/notifier.d.ts +111 -0
- package/dist/agent/skill-learning/notifier.d.ts.map +1 -0
- package/dist/agent/skill-learning/notifier.js +398 -0
- package/dist/agent/skill-learning/notifier.js.map +1 -0
- package/dist/agent/skill-learning/reviewer.d.ts +61 -0
- package/dist/agent/skill-learning/reviewer.d.ts.map +1 -0
- package/dist/agent/skill-learning/reviewer.js +271 -0
- package/dist/agent/skill-learning/reviewer.js.map +1 -0
- package/dist/agent/skill-learning/telemetry.d.ts +22 -0
- package/dist/agent/skill-learning/telemetry.d.ts.map +1 -0
- package/dist/agent/skill-learning/telemetry.js +90 -0
- package/dist/agent/skill-learning/telemetry.js.map +1 -0
- package/dist/agent/skill-learning/trigger.d.ts +23 -0
- package/dist/agent/skill-learning/trigger.d.ts.map +1 -0
- package/dist/agent/skill-learning/trigger.js +44 -0
- package/dist/agent/skill-learning/trigger.js.map +1 -0
- package/dist/agent/skill-learning/types.d.ts +165 -0
- package/dist/agent/skill-learning/types.d.ts.map +1 -0
- package/dist/agent/skill-learning/types.js +11 -0
- package/dist/agent/skill-learning/types.js.map +1 -0
- package/dist/agent/skill-learning/writer.d.ts +37 -0
- package/dist/agent/skill-learning/writer.d.ts.map +1 -0
- package/dist/agent/skill-learning/writer.js +223 -0
- package/dist/agent/skill-learning/writer.js.map +1 -0
- package/dist/agent/workspace-loader.d.ts +83 -6
- package/dist/agent/workspace-loader.d.ts.map +1 -1
- package/dist/agent/workspace-loader.js +207 -14
- package/dist/agent/workspace-loader.js.map +1 -1
- package/dist/api/gateway-router.d.ts +2 -0
- package/dist/api/gateway-router.d.ts.map +1 -1
- package/dist/api/gateway-router.js +293 -6
- package/dist/api/gateway-router.js.map +1 -1
- package/dist/api/skills-router.d.ts +2 -2
- package/dist/api/skills-router.d.ts.map +1 -1
- package/dist/api/skills-router.js +61 -1
- package/dist/api/skills-router.js.map +1 -1
- package/dist/apps/agent-manager.d.ts +7 -0
- package/dist/apps/agent-manager.d.ts.map +1 -1
- package/dist/apps/agent-manager.js +13 -1
- package/dist/apps/agent-manager.js.map +1 -1
- package/dist/config/migrator.d.ts +2 -0
- package/dist/config/migrator.d.ts.map +1 -1
- package/dist/config/migrator.js +72 -1
- package/dist/config/migrator.js.map +1 -1
- package/dist/history/cleanup.d.ts +7 -0
- package/dist/history/cleanup.d.ts.map +1 -1
- package/dist/history/cleanup.js +27 -0
- package/dist/history/cleanup.js.map +1 -1
- package/dist/history/db.d.ts +65 -0
- package/dist/history/db.d.ts.map +1 -1
- package/dist/history/db.js +261 -0
- package/dist/history/db.js.map +1 -1
- package/dist/index.js +122 -20
- package/dist/index.js.map +1 -1
- package/dist/session/process.d.ts +10 -0
- package/dist/session/process.d.ts.map +1 -1
- package/dist/session/process.js +86 -1
- package/dist/session/process.js.map +1 -1
- package/dist/skills/loader.d.ts +8 -0
- package/dist/skills/loader.d.ts.map +1 -1
- package/dist/skills/loader.js +29 -1
- package/dist/skills/loader.js.map +1 -1
- package/dist/types.d.ts +116 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/ui/web-ui.d.ts.map +1 -1
- package/dist/ui/web-ui.js +1126 -3
- package/dist/ui/web-ui.js.map +1 -1
- package/mcp/package.json +2 -1
- package/mcp/server.ts +2 -0
- package/mcp/tools/memory/archive-reader.test.ts +212 -0
- package/mcp/tools/memory/archive-reader.ts +253 -0
- package/mcp/tools/memory/module.ts +152 -0
- package/mcp/tools/memory/retrieval-recorder.ts +66 -0
- package/mcp/tools/skills/module.ts +28 -0
- package/package.json +1 -1
- 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"}
|