@zhixuan92/multi-model-agent-core 4.7.9 → 4.7.10
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 +1 -72
- package/dist/config/schema.d.ts +0 -2
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +0 -2
- package/dist/config/schema.js.map +1 -1
- package/dist/events/task-envelope.d.ts +11 -1
- package/dist/events/task-envelope.d.ts.map +1 -1
- package/dist/events/task-envelope.js +35 -4
- package/dist/events/task-envelope.js.map +1 -1
- package/dist/index.d.ts +0 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -8
- package/dist/index.js.map +1 -1
- package/dist/{review → lifecycle/handlers}/parse-review-report.d.ts +1 -1
- package/dist/lifecycle/handlers/parse-review-report.d.ts.map +1 -0
- package/dist/{review → lifecycle/handlers}/parse-review-report.js +2 -2
- package/dist/lifecycle/handlers/parse-review-report.js.map +1 -0
- package/dist/lifecycle/handlers/quality-review-prompt.d.ts +6 -0
- package/dist/lifecycle/handlers/quality-review-prompt.d.ts.map +1 -0
- package/dist/lifecycle/handlers/quality-review-prompt.js +42 -0
- package/dist/lifecycle/handlers/quality-review-prompt.js.map +1 -0
- package/dist/lifecycle/handlers/review-stage.js +4 -4
- package/dist/lifecycle/handlers/review-stage.js.map +1 -1
- package/dist/lifecycle/handlers/rework-prompt.d.ts +6 -0
- package/dist/lifecycle/handlers/rework-prompt.d.ts.map +1 -0
- package/dist/lifecycle/handlers/rework-prompt.js +18 -0
- package/dist/lifecycle/handlers/rework-prompt.js.map +1 -0
- package/dist/lifecycle/handlers/rework-stage.js +2 -2
- package/dist/lifecycle/handlers/rework-stage.js.map +1 -1
- package/dist/lifecycle/handlers/spec-review-prompt.d.ts +7 -0
- package/dist/lifecycle/handlers/spec-review-prompt.d.ts.map +1 -0
- package/dist/lifecycle/handlers/spec-review-prompt.js +39 -0
- package/dist/lifecycle/handlers/spec-review-prompt.js.map +1 -0
- package/dist/{review → lifecycle/handlers}/tier-policy.d.ts +1 -1
- package/dist/lifecycle/handlers/tier-policy.d.ts.map +1 -0
- package/dist/lifecycle/handlers/tier-policy.js.map +1 -0
- package/dist/lifecycle/lifecycle-driver.d.ts.map +1 -1
- package/dist/lifecycle/lifecycle-driver.js +14 -4
- package/dist/lifecycle/lifecycle-driver.js.map +1 -1
- package/dist/lifecycle/review-verdict-mapping.d.ts.map +1 -0
- package/dist/lifecycle/review-verdict-mapping.js.map +1 -0
- package/dist/lifecycle/task-executor.js +1 -1
- package/dist/lifecycle/task-executor.js.map +1 -1
- package/dist/lifecycle/tool-config-types.d.ts +0 -6
- package/dist/lifecycle/tool-config-types.d.ts.map +1 -1
- package/dist/reporting/report-parser-slots/research-report.d.ts +0 -3
- package/dist/reporting/report-parser-slots/research-report.d.ts.map +1 -1
- package/dist/reporting/report-parser-slots/research-report.js +0 -5
- package/dist/reporting/report-parser-slots/research-report.js.map +1 -1
- package/dist/research/web-fetch.d.ts +24 -4
- package/dist/research/web-fetch.d.ts.map +1 -1
- package/dist/research/web-fetch.js +57 -42
- package/dist/research/web-fetch.js.map +1 -1
- package/dist/stores/batch-registry.d.ts +0 -15
- package/dist/stores/batch-registry.d.ts.map +1 -1
- package/dist/stores/batch-registry.js +2 -0
- package/dist/stores/batch-registry.js.map +1 -1
- package/dist/stores/project-context-registry.d.ts +4 -11
- package/dist/stores/project-context-registry.d.ts.map +1 -1
- package/dist/stores/project-context-registry.js +4 -6
- package/dist/stores/project-context-registry.js.map +1 -1
- package/dist/tools/audit/tool-config.d.ts.map +1 -1
- package/dist/tools/audit/tool-config.js +1 -5
- package/dist/tools/audit/tool-config.js.map +1 -1
- package/dist/tools/debug/tool-config.d.ts.map +1 -1
- package/dist/tools/debug/tool-config.js +1 -5
- package/dist/tools/debug/tool-config.js.map +1 -1
- package/dist/tools/delegate/tool-config.d.ts.map +1 -1
- package/dist/tools/delegate/tool-config.js +0 -6
- package/dist/tools/delegate/tool-config.js.map +1 -1
- package/dist/tools/execute-plan/tool-config.d.ts.map +1 -1
- package/dist/tools/execute-plan/tool-config.js +0 -6
- package/dist/tools/execute-plan/tool-config.js.map +1 -1
- package/dist/tools/investigate/tool-config.d.ts.map +1 -1
- package/dist/tools/investigate/tool-config.js +0 -4
- package/dist/tools/investigate/tool-config.js.map +1 -1
- package/dist/tools/review/tool-config.d.ts.map +1 -1
- package/dist/tools/review/tool-config.js +1 -5
- package/dist/tools/review/tool-config.js.map +1 -1
- package/dist/tools/shared/severity-ladder.d.ts +2 -0
- package/dist/tools/shared/severity-ladder.d.ts.map +1 -0
- package/dist/tools/shared/severity-ladder.js +9 -0
- package/dist/tools/shared/severity-ladder.js.map +1 -0
- package/dist/types/config.d.ts +0 -1
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types.d.ts +0 -10
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -5
- package/dist/review/index.d.ts +0 -5
- package/dist/review/index.d.ts.map +0 -1
- package/dist/review/index.js +0 -8
- package/dist/review/index.js.map +0 -1
- package/dist/review/parse-review-report.d.ts.map +0 -1
- package/dist/review/parse-review-report.js.map +0 -1
- package/dist/review/review-types.d.ts +0 -2
- package/dist/review/review-types.d.ts.map +0 -1
- package/dist/review/review-types.js +0 -6
- package/dist/review/review-types.js.map +0 -1
- package/dist/review/review-verdict-mapping.d.ts.map +0 -1
- package/dist/review/review-verdict-mapping.js.map +0 -1
- package/dist/review/skipped-result.d.ts +0 -8
- package/dist/review/skipped-result.d.ts.map +0 -1
- package/dist/review/skipped-result.js +0 -4
- package/dist/review/skipped-result.js.map +0 -1
- package/dist/review/templates/annotator-audit.d.ts +0 -3
- package/dist/review/templates/annotator-audit.d.ts.map +0 -1
- package/dist/review/templates/annotator-audit.js +0 -20
- package/dist/review/templates/annotator-audit.js.map +0 -1
- package/dist/review/templates/annotator-debug.d.ts +0 -3
- package/dist/review/templates/annotator-debug.d.ts.map +0 -1
- package/dist/review/templates/annotator-debug.js +0 -19
- package/dist/review/templates/annotator-debug.js.map +0 -1
- package/dist/review/templates/annotator-investigate.d.ts +0 -3
- package/dist/review/templates/annotator-investigate.d.ts.map +0 -1
- package/dist/review/templates/annotator-investigate.js +0 -17
- package/dist/review/templates/annotator-investigate.js.map +0 -1
- package/dist/review/templates/annotator-review.d.ts +0 -3
- package/dist/review/templates/annotator-review.d.ts.map +0 -1
- package/dist/review/templates/annotator-review.js +0 -22
- package/dist/review/templates/annotator-review.js.map +0 -1
- package/dist/review/templates/annotator-shared.d.ts +0 -23
- package/dist/review/templates/annotator-shared.d.ts.map +0 -1
- package/dist/review/templates/annotator-shared.js +0 -51
- package/dist/review/templates/annotator-shared.js.map +0 -1
- package/dist/review/templates/finding-criteria.d.ts +0 -15
- package/dist/review/templates/finding-criteria.d.ts.map +0 -1
- package/dist/review/templates/finding-criteria.js +0 -39
- package/dist/review/templates/finding-criteria.js.map +0 -1
- package/dist/review/templates/quality-review-audit.d.ts +0 -3
- package/dist/review/templates/quality-review-audit.d.ts.map +0 -1
- package/dist/review/templates/quality-review-audit.js +0 -10
- package/dist/review/templates/quality-review-audit.js.map +0 -1
- package/dist/review/templates/quality-review-debug.d.ts +0 -3
- package/dist/review/templates/quality-review-debug.d.ts.map +0 -1
- package/dist/review/templates/quality-review-debug.js +0 -10
- package/dist/review/templates/quality-review-debug.js.map +0 -1
- package/dist/review/templates/quality-review-investigate.d.ts +0 -3
- package/dist/review/templates/quality-review-investigate.d.ts.map +0 -1
- package/dist/review/templates/quality-review-investigate.js +0 -10
- package/dist/review/templates/quality-review-investigate.js.map +0 -1
- package/dist/review/templates/quality-review-review.d.ts +0 -3
- package/dist/review/templates/quality-review-review.d.ts.map +0 -1
- package/dist/review/templates/quality-review-review.js +0 -10
- package/dist/review/templates/quality-review-review.js.map +0 -1
- package/dist/review/templates/quality-review.d.ts +0 -9
- package/dist/review/templates/quality-review.d.ts.map +0 -1
- package/dist/review/templates/quality-review.js +0 -89
- package/dist/review/templates/quality-review.js.map +0 -1
- package/dist/review/templates/rework.d.ts +0 -3
- package/dist/review/templates/rework.d.ts.map +0 -1
- package/dist/review/templates/rework.js +0 -48
- package/dist/review/templates/rework.js.map +0 -1
- package/dist/review/templates/shared.d.ts +0 -67
- package/dist/review/templates/shared.d.ts.map +0 -1
- package/dist/review/templates/shared.js +0 -2
- package/dist/review/templates/shared.js.map +0 -1
- package/dist/review/templates/spec-review.d.ts +0 -10
- package/dist/review/templates/spec-review.d.ts.map +0 -1
- package/dist/review/templates/spec-review.js +0 -75
- package/dist/review/templates/spec-review.js.map +0 -1
- package/dist/review/tier-policy.d.ts.map +0 -1
- package/dist/review/tier-policy.js.map +0 -1
- package/dist/stores/context-block-project-cap.d.ts +0 -14
- package/dist/stores/context-block-project-cap.d.ts.map +0 -1
- package/dist/stores/context-block-project-cap.js +0 -80
- package/dist/stores/context-block-project-cap.js.map +0 -1
- package/dist/stores/file-backed-context-block-store.d.ts +0 -81
- package/dist/stores/file-backed-context-block-store.d.ts.map +0 -1
- package/dist/stores/file-backed-context-block-store.js +0 -410
- package/dist/stores/file-backed-context-block-store.js.map +0 -1
- package/dist/stores/index.d.ts +0 -4
- package/dist/stores/index.d.ts.map +0 -1
- package/dist/stores/index.js +0 -5
- package/dist/stores/index.js.map +0 -1
- /package/dist/{review → lifecycle/handlers}/tier-policy.js +0 -0
- /package/dist/{review → lifecycle}/review-verdict-mapping.d.ts +0 -0
- /package/dist/{review → lifecycle}/review-verdict-mapping.js +0 -0
|
@@ -1,410 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* FileBackedContextBlockStore — disk-backed implementation of
|
|
3
|
-
* `ContextBlockStore` so context blocks survive daemon restarts.
|
|
4
|
-
*
|
|
5
|
-
* Per the wire-telemetry-gaps plan, Gap 4: round-over-round audit is the
|
|
6
|
-
* documented use case for context blocks; a memory-only store loses
|
|
7
|
-
* everything on `npm run serve` cycles, breaking the recipe. This store
|
|
8
|
-
* persists to disk and reloads lazily on first access.
|
|
9
|
-
*
|
|
10
|
-
* Layout: `<homeDir>/.multi-model/context-blocks/<sha256(projectCwd)>/<id>.txt`
|
|
11
|
-
* (content) + `<id>.meta.json` ({ createdAt, ttlMs, lengthChars, sha256 }).
|
|
12
|
-
* Storing in the user home (not the project tree) keeps repos clean —
|
|
13
|
-
* no `.gitignore` entries needed — while the per-project hash subdir
|
|
14
|
-
* preserves project isolation.
|
|
15
|
-
*
|
|
16
|
-
* Operational properties:
|
|
17
|
-
* - **Authoritative cwd**: per-project subdir is `sha256(path.resolve(projectCwd))`.
|
|
18
|
-
* NOT daemon cwd, NOT task cwd.
|
|
19
|
-
* - **Permissions**: directories `0700`, files `0600`. Audit findings
|
|
20
|
-
* can carry sensitive code excerpts; user-only access by default.
|
|
21
|
-
* - **TTL**: 7 days default. Enforced on `get()` (lazy delete on
|
|
22
|
-
* stale read), at the start of `register()` (opportunistic GC if
|
|
23
|
-
* last sweep was over `gcCheckIntervalMs` ago), and via
|
|
24
|
-
* `runIdleSweep()` for periodic timer-driven sweeps.
|
|
25
|
-
* - **Size caps**: per-block 1 MiB, per-store 100 MiB total — measured
|
|
26
|
-
* via `Buffer.byteLength(content, 'utf8')` so multi-byte content
|
|
27
|
-
* can't sneak past the cap. Oldest-first eviction when total cap
|
|
28
|
-
* is exceeded.
|
|
29
|
-
* - **Atomic writes**: temp-file → fsync → rename. GC treats orphaned
|
|
30
|
-
* pairs (content without metadata or vice versa) as corrupt and
|
|
31
|
-
* deletes both — recovers cleanly from daemon SIGKILL mid-write.
|
|
32
|
-
*
|
|
33
|
-
* Pinning is a no-op on this implementation — disk persistence is
|
|
34
|
-
* stronger than the in-memory pin contract. The `pin`/`unpin` methods
|
|
35
|
-
* exist on the interface for API symmetry and to satisfy the LRU-skip
|
|
36
|
-
* contract that batch-registry expects, but disk eviction always
|
|
37
|
-
* respects TTL only.
|
|
38
|
-
*/
|
|
39
|
-
import { createHash, randomUUID } from 'node:crypto';
|
|
40
|
-
import * as fs from 'node:fs';
|
|
41
|
-
import * as os from 'node:os';
|
|
42
|
-
import * as path from 'node:path';
|
|
43
|
-
const DEFAULT_TTL_MS = 7 * 24 * 60 * 60 * 1000;
|
|
44
|
-
const DEFAULT_GC_INTERVAL_MS = 60 * 60 * 1000;
|
|
45
|
-
const DEFAULT_MAX_BLOCK_BYTES = 1 * 1024 * 1024;
|
|
46
|
-
const DEFAULT_MAX_TOTAL_BYTES = 100 * 1024 * 1024;
|
|
47
|
-
export class FileBackedContextBlockStore {
|
|
48
|
-
/** Absolute root: `<homeDir>/.multi-model/context-blocks/<sha256(projectCwd)>`.
|
|
49
|
-
* Public so tests can read meta files directly without re-deriving the path. */
|
|
50
|
-
rootDir;
|
|
51
|
-
_ttlMs;
|
|
52
|
-
gcCheckIntervalMs;
|
|
53
|
-
maxBlockBytes;
|
|
54
|
-
maxTotalBytes;
|
|
55
|
-
lastSweepMs = 0;
|
|
56
|
-
/** Pin counts are kept in memory only — they're an active-batch
|
|
57
|
-
* protection signal, not a persistence concern. Lost on restart;
|
|
58
|
-
* TTL-based GC handles the recovery side. */
|
|
59
|
-
pinCounts = new Map();
|
|
60
|
-
maxBlocksPerProject;
|
|
61
|
-
constructor(projectCwd, opts = {}) {
|
|
62
|
-
const home = opts.homeDir ?? os.homedir();
|
|
63
|
-
let canonical;
|
|
64
|
-
try {
|
|
65
|
-
canonical = fs.realpathSync(path.resolve(projectCwd));
|
|
66
|
-
}
|
|
67
|
-
catch {
|
|
68
|
-
// Path doesn't exist on disk yet — fall back to absolute. The store is
|
|
69
|
-
// still usable for callers who pass a future cwd; symlink-collapse
|
|
70
|
-
// semantics only kick in once the path exists.
|
|
71
|
-
canonical = path.resolve(projectCwd);
|
|
72
|
-
}
|
|
73
|
-
const projectHash = createHash('sha256').update(canonical).digest('hex');
|
|
74
|
-
this.rootDir = path.join(home, '.multi-model', 'context-blocks', projectHash);
|
|
75
|
-
this._ttlMs = opts.ttlMs ?? DEFAULT_TTL_MS;
|
|
76
|
-
this.gcCheckIntervalMs = opts.gcCheckIntervalMs ?? DEFAULT_GC_INTERVAL_MS;
|
|
77
|
-
this.maxBlockBytes = opts.maxBlockBytes ?? DEFAULT_MAX_BLOCK_BYTES;
|
|
78
|
-
this.maxTotalBytes = opts.maxTotalBytes ?? DEFAULT_MAX_TOTAL_BYTES;
|
|
79
|
-
this.maxBlocksPerProject = opts.maxBlocksPerProject ?? 500;
|
|
80
|
-
this.ensureRoot();
|
|
81
|
-
}
|
|
82
|
-
register(content, opts = {}) {
|
|
83
|
-
const sha256 = createHash('sha256').update(content).digest('hex');
|
|
84
|
-
// 4.2.3+: fall back to the class-level _ttlMs default (configured at
|
|
85
|
-
// construction) rather than a hardcoded constant. Earlier draft of
|
|
86
|
-
// the plan literally said `?? 28_800_000` which broke the
|
|
87
|
-
// "lazy-deletes on get when entry is past TTL" pre-existing test —
|
|
88
|
-
// that test constructs the store with `ttlMs: 1` and then calls
|
|
89
|
-
// `register('x')` (no opts), expecting the per-call TTL to inherit
|
|
90
|
-
// the class default.
|
|
91
|
-
const ttlMs = opts.ttlMs ?? this._ttlMs;
|
|
92
|
-
// DEDUPE: look for existing block in this project with matching content sha
|
|
93
|
-
if (!opts.id) {
|
|
94
|
-
const existing = this.findByContentSha(sha256);
|
|
95
|
-
if (existing) {
|
|
96
|
-
// Bump mtime + reset TTL on the existing block
|
|
97
|
-
const now = Date.now();
|
|
98
|
-
const metaContent = JSON.parse(fs.readFileSync(this.metaPath(existing), 'utf8'));
|
|
99
|
-
metaContent.ttlMs = ttlMs;
|
|
100
|
-
metaContent.createdAt = now;
|
|
101
|
-
fs.writeFileSync(this.metaPath(existing), JSON.stringify(metaContent), { mode: 0o600 });
|
|
102
|
-
fs.utimesSync(this.contentPath(existing), now / 1000, now / 1000);
|
|
103
|
-
fs.utimesSync(this.metaPath(existing), now / 1000, now / 1000);
|
|
104
|
-
return { id: existing, lengthChars: content.length, sha256 };
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
const byteSize = Buffer.byteLength(content, 'utf8');
|
|
108
|
-
if (byteSize > this.maxBlockBytes) {
|
|
109
|
-
throw new Error(`Context block exceeds per-block cap of ${this.maxBlockBytes} bytes (got ${byteSize}).`);
|
|
110
|
-
}
|
|
111
|
-
const id = opts.id ?? randomUUID();
|
|
112
|
-
const now = Date.now();
|
|
113
|
-
const meta = {
|
|
114
|
-
createdAt: now,
|
|
115
|
-
ttlMs,
|
|
116
|
-
lengthChars: content.length,
|
|
117
|
-
sha256,
|
|
118
|
-
};
|
|
119
|
-
// Opportunistic GC + size-cap enforcement before we write.
|
|
120
|
-
if (now - this.lastSweepMs > this.gcCheckIntervalMs) {
|
|
121
|
-
this.runIdleSweep(now, this._ttlMs);
|
|
122
|
-
this.lastSweepMs = now;
|
|
123
|
-
}
|
|
124
|
-
this.evictUntilFits(byteSize);
|
|
125
|
-
this.sweepInnerLruIfNeeded();
|
|
126
|
-
this.atomicWrite(this.contentPath(id), content);
|
|
127
|
-
this.atomicWrite(this.metaPath(id), JSON.stringify(meta) + '\n');
|
|
128
|
-
return { id, lengthChars: content.length, sha256 };
|
|
129
|
-
}
|
|
130
|
-
get(id) {
|
|
131
|
-
const meta = this.readMeta(id);
|
|
132
|
-
if (!meta)
|
|
133
|
-
return undefined;
|
|
134
|
-
const now = Date.now();
|
|
135
|
-
if (now - meta.createdAt > meta.ttlMs) {
|
|
136
|
-
// Expired: lazy-delete (matches in-memory store semantics)
|
|
137
|
-
this.deleteFiles(id);
|
|
138
|
-
return undefined;
|
|
139
|
-
}
|
|
140
|
-
try {
|
|
141
|
-
return fs.readFileSync(this.contentPath(id), 'utf8');
|
|
142
|
-
}
|
|
143
|
-
catch {
|
|
144
|
-
// Content missing but meta present — orphan; clean up.
|
|
145
|
-
this.deleteFiles(id);
|
|
146
|
-
return undefined;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
delete(id) {
|
|
150
|
-
const existed = fs.existsSync(this.contentPath(id)) || fs.existsSync(this.metaPath(id));
|
|
151
|
-
this.deleteFiles(id);
|
|
152
|
-
this.pinCounts.delete(id);
|
|
153
|
-
return existed;
|
|
154
|
-
}
|
|
155
|
-
pin(id) {
|
|
156
|
-
this.pinCounts.set(id, (this.pinCounts.get(id) ?? 0) + 1);
|
|
157
|
-
}
|
|
158
|
-
unpin(id) {
|
|
159
|
-
const cur = this.pinCounts.get(id) ?? 0;
|
|
160
|
-
if (cur <= 1)
|
|
161
|
-
this.pinCounts.delete(id);
|
|
162
|
-
else
|
|
163
|
-
this.pinCounts.set(id, cur - 1);
|
|
164
|
-
}
|
|
165
|
-
refcount(id) {
|
|
166
|
-
return this.pinCounts.get(id) ?? 0;
|
|
167
|
-
}
|
|
168
|
-
runIdleSweep(now, idleTtlMs) {
|
|
169
|
-
let evicted = 0;
|
|
170
|
-
for (const id of this.listIds()) {
|
|
171
|
-
if ((this.pinCounts.get(id) ?? 0) > 0)
|
|
172
|
-
continue;
|
|
173
|
-
const meta = this.readMeta(id);
|
|
174
|
-
if (!meta) {
|
|
175
|
-
// Orphan content (no meta) — corrupt half-write recovery
|
|
176
|
-
this.deleteFiles(id);
|
|
177
|
-
evicted++;
|
|
178
|
-
continue;
|
|
179
|
-
}
|
|
180
|
-
// Use the entry's stored ttlMs (may differ from caller's idleTtlMs)
|
|
181
|
-
// OR caller's idleTtlMs, whichever is shorter — caller wins for
|
|
182
|
-
// explicit forced sweeps.
|
|
183
|
-
const effectiveTtl = Math.min(meta.ttlMs, idleTtlMs);
|
|
184
|
-
if (now - meta.createdAt > effectiveTtl) {
|
|
185
|
-
this.deleteFiles(id);
|
|
186
|
-
evicted++;
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
return evicted;
|
|
190
|
-
}
|
|
191
|
-
get ttlMs() {
|
|
192
|
-
return this._ttlMs;
|
|
193
|
-
}
|
|
194
|
-
/** Number of entries currently on disk (counted by id, not by file —
|
|
195
|
-
* orphan halves count once). */
|
|
196
|
-
get size() {
|
|
197
|
-
return this.listIds().length;
|
|
198
|
-
}
|
|
199
|
-
/** Delete every block. Used by project-registry on idle eviction. */
|
|
200
|
-
clear() {
|
|
201
|
-
for (const id of this.listIds())
|
|
202
|
-
this.deleteFiles(id);
|
|
203
|
-
this.pinCounts.clear();
|
|
204
|
-
}
|
|
205
|
-
/** Sum of all on-disk content bytes (no caching — fresh read each call).
|
|
206
|
-
* Used by tests + `evictUntilFits`. */
|
|
207
|
-
totalBytesOnDisk() {
|
|
208
|
-
let total = 0;
|
|
209
|
-
for (const id of this.listIds()) {
|
|
210
|
-
try {
|
|
211
|
-
total += fs.statSync(this.contentPath(id)).size;
|
|
212
|
-
}
|
|
213
|
-
catch {
|
|
214
|
-
// missing file — skip
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
return total;
|
|
218
|
-
}
|
|
219
|
-
// ── private helpers ────────────────────────────────────────────────
|
|
220
|
-
ensureRoot() {
|
|
221
|
-
fs.mkdirSync(this.rootDir, { recursive: true, mode: 0o700 });
|
|
222
|
-
}
|
|
223
|
-
contentPath(id) {
|
|
224
|
-
return path.join(this.rootDir, `${id}.txt`);
|
|
225
|
-
}
|
|
226
|
-
metaPath(id) {
|
|
227
|
-
return path.join(this.rootDir, `${id}.meta.json`);
|
|
228
|
-
}
|
|
229
|
-
listIds() {
|
|
230
|
-
let entries;
|
|
231
|
-
try {
|
|
232
|
-
entries = fs.readdirSync(this.rootDir);
|
|
233
|
-
}
|
|
234
|
-
catch {
|
|
235
|
-
return [];
|
|
236
|
-
}
|
|
237
|
-
const ids = new Set();
|
|
238
|
-
for (const name of entries) {
|
|
239
|
-
if (name.endsWith('.meta.json'))
|
|
240
|
-
ids.add(name.slice(0, -'.meta.json'.length));
|
|
241
|
-
else if (name.endsWith('.txt'))
|
|
242
|
-
ids.add(name.slice(0, -'.txt'.length));
|
|
243
|
-
}
|
|
244
|
-
return [...ids];
|
|
245
|
-
}
|
|
246
|
-
readMeta(id) {
|
|
247
|
-
try {
|
|
248
|
-
const raw = fs.readFileSync(this.metaPath(id), 'utf8');
|
|
249
|
-
const parsed = JSON.parse(raw);
|
|
250
|
-
if (typeof parsed.createdAt === 'number'
|
|
251
|
-
&& typeof parsed.ttlMs === 'number'
|
|
252
|
-
&& typeof parsed.lengthChars === 'number'
|
|
253
|
-
&& typeof parsed.sha256 === 'string') {
|
|
254
|
-
return parsed;
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
catch {
|
|
258
|
-
// unreadable / corrupt
|
|
259
|
-
}
|
|
260
|
-
return undefined;
|
|
261
|
-
}
|
|
262
|
-
deleteFiles(id) {
|
|
263
|
-
try {
|
|
264
|
-
fs.unlinkSync(this.contentPath(id));
|
|
265
|
-
}
|
|
266
|
-
catch { /* ignore */ }
|
|
267
|
-
try {
|
|
268
|
-
fs.unlinkSync(this.metaPath(id));
|
|
269
|
-
}
|
|
270
|
-
catch { /* ignore */ }
|
|
271
|
-
}
|
|
272
|
-
/**
|
|
273
|
-
* Atomic write: temp-file → fsync → rename. Recovers cleanly from
|
|
274
|
-
* daemon SIGKILL mid-write — readers either see the old content or
|
|
275
|
-
* the new content, never a partial write. The .tmp suffix uses a
|
|
276
|
-
* random nonce so concurrent writers don't collide.
|
|
277
|
-
*
|
|
278
|
-
* Defensive: `ensureRoot()` runs once at construction, but the
|
|
279
|
-
* rootDir can disappear between construction and write — e.g. an
|
|
280
|
-
* external rm, a maintenance script, or (historically) a startup-time
|
|
281
|
-
* project-cap sweep that ran in a different process. Re-creating the
|
|
282
|
-
* dir here is idempotent and cheap; the alternative is an ENOENT that
|
|
283
|
-
* crashes the entire batch and burns its findings.
|
|
284
|
-
*/
|
|
285
|
-
atomicWrite(targetPath, content) {
|
|
286
|
-
fs.mkdirSync(path.dirname(targetPath), { recursive: true, mode: 0o700 });
|
|
287
|
-
const tmpPath = `${targetPath}.tmp.${process.pid}.${randomUUID()}`;
|
|
288
|
-
const fd = fs.openSync(tmpPath, 'w', 0o600);
|
|
289
|
-
try {
|
|
290
|
-
fs.writeSync(fd, content);
|
|
291
|
-
fs.fsyncSync(fd);
|
|
292
|
-
}
|
|
293
|
-
finally {
|
|
294
|
-
fs.closeSync(fd);
|
|
295
|
-
}
|
|
296
|
-
fs.renameSync(tmpPath, targetPath);
|
|
297
|
-
}
|
|
298
|
-
/** TTL pass first; if still at or above maxBlocksPerProject, evict oldest-mtime block(s) until under cap. */
|
|
299
|
-
sweepInnerLruIfNeeded() {
|
|
300
|
-
if (!fs.existsSync(this.rootDir))
|
|
301
|
-
return;
|
|
302
|
-
// TTL pass
|
|
303
|
-
const now = Date.now();
|
|
304
|
-
const files = fs.readdirSync(this.rootDir);
|
|
305
|
-
for (const file of files) {
|
|
306
|
-
if (!file.endsWith('.meta.json'))
|
|
307
|
-
continue;
|
|
308
|
-
try {
|
|
309
|
-
const meta = JSON.parse(fs.readFileSync(path.join(this.rootDir, file), 'utf8'));
|
|
310
|
-
if (typeof meta.createdAt === 'number' && typeof meta.ttlMs === 'number' && now > meta.createdAt + meta.ttlMs) {
|
|
311
|
-
const id = file.slice(0, -'.meta.json'.length);
|
|
312
|
-
try {
|
|
313
|
-
fs.unlinkSync(path.join(this.rootDir, `${id}.txt`));
|
|
314
|
-
}
|
|
315
|
-
catch { }
|
|
316
|
-
try {
|
|
317
|
-
fs.unlinkSync(path.join(this.rootDir, `${id}.meta.json`));
|
|
318
|
-
}
|
|
319
|
-
catch { }
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
catch { /* skip malformed */ }
|
|
323
|
-
}
|
|
324
|
-
// LRU pass
|
|
325
|
-
let blockIds = fs.readdirSync(this.rootDir)
|
|
326
|
-
.filter(f => f.endsWith('.txt'))
|
|
327
|
-
.map(f => f.slice(0, -'.txt'.length));
|
|
328
|
-
while (blockIds.length >= this.maxBlocksPerProject) {
|
|
329
|
-
// Find oldest-mtime block
|
|
330
|
-
let oldestId = null;
|
|
331
|
-
let oldestMtime = Infinity;
|
|
332
|
-
for (const id of blockIds) {
|
|
333
|
-
try {
|
|
334
|
-
const m = fs.statSync(path.join(this.rootDir, `${id}.txt`)).mtimeMs;
|
|
335
|
-
if (m < oldestMtime) {
|
|
336
|
-
oldestMtime = m;
|
|
337
|
-
oldestId = id;
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
catch { /* skip */ }
|
|
341
|
-
}
|
|
342
|
-
if (!oldestId)
|
|
343
|
-
break;
|
|
344
|
-
try {
|
|
345
|
-
fs.unlinkSync(path.join(this.rootDir, `${oldestId}.txt`));
|
|
346
|
-
}
|
|
347
|
-
catch { }
|
|
348
|
-
try {
|
|
349
|
-
fs.unlinkSync(path.join(this.rootDir, `${oldestId}.meta.json`));
|
|
350
|
-
}
|
|
351
|
-
catch { }
|
|
352
|
-
blockIds = blockIds.filter(i => i !== oldestId);
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
/**
|
|
356
|
-
* Oldest-first eviction loop until total disk usage + incoming bytes
|
|
357
|
-
* fits under maxTotalBytes. Pinned entries are skipped (matches
|
|
358
|
-
* in-memory store semantics — pinned blocks are held by an active
|
|
359
|
-
* batch and shouldn't be evicted mid-run).
|
|
360
|
-
*/
|
|
361
|
-
evictUntilFits(incomingBytes) {
|
|
362
|
-
let total = this.totalBytesOnDisk();
|
|
363
|
-
if (total + incomingBytes <= this.maxTotalBytes)
|
|
364
|
-
return;
|
|
365
|
-
const candidates = [];
|
|
366
|
-
for (const id of this.listIds()) {
|
|
367
|
-
if ((this.pinCounts.get(id) ?? 0) > 0)
|
|
368
|
-
continue;
|
|
369
|
-
const meta = this.readMeta(id);
|
|
370
|
-
if (!meta)
|
|
371
|
-
continue;
|
|
372
|
-
let bytes = 0;
|
|
373
|
-
try {
|
|
374
|
-
bytes = fs.statSync(this.contentPath(id)).size;
|
|
375
|
-
}
|
|
376
|
-
catch {
|
|
377
|
-
continue;
|
|
378
|
-
}
|
|
379
|
-
candidates.push({ id, createdAt: meta.createdAt, bytes });
|
|
380
|
-
}
|
|
381
|
-
// Oldest-first
|
|
382
|
-
candidates.sort((a, b) => a.createdAt - b.createdAt);
|
|
383
|
-
for (const c of candidates) {
|
|
384
|
-
if (total + incomingBytes <= this.maxTotalBytes)
|
|
385
|
-
break;
|
|
386
|
-
this.deleteFiles(c.id);
|
|
387
|
-
total -= c.bytes;
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
/** Scan this project's meta files for one whose recorded sha256 matches `sha256`. Returns the id, or null. */
|
|
391
|
-
findByContentSha(sha256) {
|
|
392
|
-
if (!fs.existsSync(this.rootDir))
|
|
393
|
-
return null;
|
|
394
|
-
const files = fs.readdirSync(this.rootDir);
|
|
395
|
-
for (const file of files) {
|
|
396
|
-
if (!file.endsWith('.meta.json'))
|
|
397
|
-
continue;
|
|
398
|
-
try {
|
|
399
|
-
const meta = JSON.parse(fs.readFileSync(path.join(this.rootDir, file), 'utf8'));
|
|
400
|
-
if (meta.sha256 === sha256)
|
|
401
|
-
return file.slice(0, -'.meta.json'.length);
|
|
402
|
-
}
|
|
403
|
-
catch {
|
|
404
|
-
// Skip malformed meta files
|
|
405
|
-
}
|
|
406
|
-
}
|
|
407
|
-
return null;
|
|
408
|
-
}
|
|
409
|
-
}
|
|
410
|
-
//# sourceMappingURL=file-backed-context-block-store.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file-backed-context-block-store.js","sourceRoot":"","sources":["../../src/stores/file-backed-context-block-store.ts"],"names":[],"mappings":"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"}
|
package/dist/stores/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/stores/index.ts"],"names":[],"mappings":"AAEA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC"}
|
package/dist/stores/index.js
DELETED
package/dist/stores/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/stores/index.ts"],"names":[],"mappings":"AAAA,wEAAwE;AAExE,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|