@pylabmit/agent-cmdb 1.5.0 → 2.0.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 +29 -4
- package/dist/brain.d.ts.map +1 -1
- package/dist/brain.js +119 -44
- package/dist/brain.js.map +1 -1
- package/dist/checkpoint.d.ts +6 -0
- package/dist/checkpoint.d.ts.map +1 -0
- package/dist/checkpoint.js +137 -0
- package/dist/checkpoint.js.map +1 -0
- package/dist/cli.js +162 -7
- package/dist/cli.js.map +1 -1
- package/dist/cost.d.ts +3 -0
- package/dist/cost.d.ts.map +1 -0
- package/dist/cost.js +49 -0
- package/dist/cost.js.map +1 -0
- package/dist/digest.d.ts +2 -1
- package/dist/digest.d.ts.map +1 -1
- package/dist/digest.js +18 -2
- package/dist/digest.js.map +1 -1
- package/dist/engine.d.ts +0 -2
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +0 -2
- package/dist/engine.js.map +1 -1
- package/dist/health.d.ts +9 -0
- package/dist/health.d.ts.map +1 -0
- package/dist/health.js +222 -0
- package/dist/health.js.map +1 -0
- package/dist/interface.d.ts +15 -2
- package/dist/interface.d.ts.map +1 -1
- package/dist/interface.js +47 -3
- package/dist/interface.js.map +1 -1
- package/dist/internal.d.ts +3 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +3 -0
- package/dist/internal.js.map +1 -0
- package/dist/loader.js +54 -3
- package/dist/loader.js.map +1 -1
- package/dist/policy-engine.js +7 -7
- package/dist/policy-engine.js.map +1 -1
- package/dist/preflight.d.ts +5 -3
- package/dist/preflight.d.ts.map +1 -1
- package/dist/preflight.js +144 -20
- package/dist/preflight.js.map +1 -1
- package/dist/route-resolver.d.ts.map +1 -1
- package/dist/route-resolver.js +47 -6
- package/dist/route-resolver.js.map +1 -1
- package/dist/slo.d.ts +4 -0
- package/dist/slo.d.ts.map +1 -0
- package/dist/slo.js +147 -0
- package/dist/slo.js.map +1 -0
- package/dist/store.d.ts +10 -0
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +165 -12
- package/dist/store.js.map +1 -1
- package/dist/types.d.ts +75 -4
- package/dist/types.d.ts.map +1 -1
- package/package.json +9 -1
- package/dist/agent-preflight.d.ts +0 -6
- package/dist/agent-preflight.d.ts.map +0 -1
- package/dist/agent-preflight.js +0 -55
- package/dist/agent-preflight.js.map +0 -1
- package/dist/preflight-action.d.ts +0 -3
- package/dist/preflight-action.d.ts.map +0 -1
- package/dist/preflight-action.js +0 -101
- package/dist/preflight-action.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Agent CMDB
|
|
2
2
|
|
|
3
3
|
[](https://github.com/vikas53953/agent-cmdb-policy-brain/actions/workflows/ci.yml)
|
|
4
|
-

|
|
5
5
|
|
|
6
6
|
Policy enforcement and memory for AI agents.
|
|
7
7
|
|
|
@@ -64,7 +64,7 @@ const cmdb = createAgentCmdb({
|
|
|
64
64
|
storeDir: './agent-cmdb/state'
|
|
65
65
|
});
|
|
66
66
|
|
|
67
|
-
const result = cmdb.preflight({
|
|
67
|
+
const result = await cmdb.preflight({
|
|
68
68
|
profile: 'research-agent',
|
|
69
69
|
action: 'web_search',
|
|
70
70
|
tool: 'serpapi',
|
|
@@ -82,6 +82,13 @@ if (!result.allowed) {
|
|
|
82
82
|
}
|
|
83
83
|
```
|
|
84
84
|
|
|
85
|
+
> [!WARNING]
|
|
86
|
+
> Agent CMDB evaluates policy. It does not intercept tool calls. Your agent must call `preflight()` before every action you want governed.
|
|
87
|
+
|
|
88
|
+
### Migration note for 1.5.1
|
|
89
|
+
|
|
90
|
+
Agent CMDB now defaults to deny when no policy matches. If you want unknown actions to require human approval instead of being blocked, add an explicit catch-all `approval_required` rule to your control plane.
|
|
91
|
+
|
|
85
92
|
## Agent Memory (Brain)
|
|
86
93
|
|
|
87
94
|
Agent CMDB includes an optional local knowledge base. No database, no embeddings - just markdown files that agents read before acting and update after.
|
|
@@ -108,6 +115,19 @@ await cmdb.writeEntity({
|
|
|
108
115
|
await cmdb.generateDailyDigest('research-agent');
|
|
109
116
|
```
|
|
110
117
|
|
|
118
|
+
## Runtime Reliability
|
|
119
|
+
|
|
120
|
+
V2 adds runtime reliability helpers behind the same `createAgentCmdb()` interface:
|
|
121
|
+
|
|
122
|
+
- Source health monitors record source success/failure and persist status in `state/health.json`.
|
|
123
|
+
- Circuit breaker state is derived from source health: `up` is closed, `down` is open, and `half-open` allows a recovery probe.
|
|
124
|
+
- Preflight skips down sources when a fallback exists, and denies with `all-sources-down` when no route source is available.
|
|
125
|
+
- Agent SLOs track allow-rate in a bounded rolling cache under `state/slo-cache/`.
|
|
126
|
+
- Cost summaries aggregate evidence `tokenCount` and `estimatedCost` by profile/date/source.
|
|
127
|
+
- Checkpoints save and load long-running task state under `state/checkpoints/` with tamper warnings on read.
|
|
128
|
+
|
|
129
|
+
These features do not intercept calls automatically. Your agent still calls `cmdb.preflight()` and reports source success/failure through the CMDB instance.
|
|
130
|
+
|
|
111
131
|
## Control Plane
|
|
112
132
|
|
|
113
133
|
Agent CMDB reads YAML or JSON.
|
|
@@ -170,7 +190,8 @@ The product roadmap lives in [docs/agent-cmdb-roadmap.md](docs/agent-cmdb-roadma
|
|
|
170
190
|
| --- | --- | --- |
|
|
171
191
|
| V1.0 | Shipped | Policy engine, source routing, CMDB inventory, evidence store, graph, brain, digest |
|
|
172
192
|
| V1.5 | Shipped | npm packaging, dry-run, source freshness, doctor command |
|
|
173
|
-
|
|
|
193
|
+
| V1.5.1 | Shipped | single audited preflight, default-deny, tamper-evident JSONL, hardened sanitization |
|
|
194
|
+
| V2.0 | Shipped | Health monitors, circuit breakers, SLOs, cost tracking, checkpoint/resume |
|
|
174
195
|
| V3.0 | Planned | Isolation, rate limiting, DLP inspection, trust scoring, schedules, webhooks |
|
|
175
196
|
| V4.0 | Planned | REST/MCP API, dashboard, policy versioning, templates, incident response |
|
|
176
197
|
|
|
@@ -186,6 +207,10 @@ npx agent-cmdb route --profile research-agent --intent web_research
|
|
|
186
207
|
npx agent-cmdb brain list --brain-dir ./agent-cmdb/brain
|
|
187
208
|
npx agent-cmdb brain search --brain-dir ./agent-cmdb/brain --keyword security
|
|
188
209
|
npx agent-cmdb digest --profile research-agent --brain-dir ./agent-cmdb/brain
|
|
210
|
+
npx agent-cmdb health
|
|
211
|
+
npx agent-cmdb health reset --source serpapi
|
|
212
|
+
npx agent-cmdb slo --profile research-agent
|
|
213
|
+
npx agent-cmdb cost --profile research-agent --date 2026-05-24
|
|
189
214
|
npx agent-cmdb report
|
|
190
215
|
```
|
|
191
216
|
|
|
@@ -244,6 +269,6 @@ npm run build
|
|
|
244
269
|
|
|
245
270
|
Current verification target:
|
|
246
271
|
|
|
247
|
-
-
|
|
272
|
+
- 200+ tests passing
|
|
248
273
|
- strict TypeScript clean
|
|
249
274
|
- clean `dist/` build
|
package/dist/brain.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brain.d.ts","sourceRoot":"","sources":["../src/brain.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,eAAe,EAEhB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"brain.d.ts","sourceRoot":"","sources":["../src/brain.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,eAAe,EAEhB,MAAM,YAAY,CAAC;AAmBpB,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBlE;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAE1E;AAkBD,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAExF;AAWD,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAoB7F;AAED,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,eAAe,CAAC,EAC1D,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,WAAW,CAAC,CAgCtB;AAED,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,WAAW,CAAC,CAiDtB;AAED,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAkCf;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAkBtG;AAED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAMnG;AAkQD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAEjF"}
|
package/dist/brain.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
|
-
import { mkdir, readFile, rename, rm, writeFile } from 'node:fs/promises';
|
|
2
|
+
import { mkdir, readFile, rename, rm, stat, writeFile } from 'node:fs/promises';
|
|
3
3
|
import { dirname, relative, resolve, sep } from 'node:path';
|
|
4
|
-
import {
|
|
5
|
-
import { sanitizeText } from './store.js';
|
|
4
|
+
import { setTimeout as delay } from 'node:timers/promises';
|
|
5
|
+
import { appendChange, detectInjectionWarnings, sanitizeText } from './store.js';
|
|
6
6
|
const staleThresholdMs = 604_800_000;
|
|
7
7
|
const entityIdPattern = /^[a-z0-9][a-z0-9-]*$/;
|
|
8
8
|
const brainVersion = '1.0';
|
|
9
|
+
const lockStaleMs = 30_000;
|
|
10
|
+
const lockWaitMs = 5_000;
|
|
9
11
|
const brainDirs = [
|
|
10
12
|
'entities/people',
|
|
11
13
|
'entities/companies',
|
|
@@ -34,6 +36,9 @@ export async function initBrainDir(brainDir) {
|
|
|
34
36
|
}
|
|
35
37
|
}
|
|
36
38
|
export async function readBrainIndex(brainDir) {
|
|
39
|
+
return readBrainIndexUnlocked(brainDir);
|
|
40
|
+
}
|
|
41
|
+
async function readBrainIndexUnlocked(brainDir) {
|
|
37
42
|
try {
|
|
38
43
|
const content = await readFile(indexPath(brainDir), 'utf8');
|
|
39
44
|
return parseBrainIndex(JSON.parse(content));
|
|
@@ -50,6 +55,9 @@ export async function readBrainIndex(brainDir) {
|
|
|
50
55
|
}
|
|
51
56
|
}
|
|
52
57
|
export async function writeBrainIndex(brainDir, index) {
|
|
58
|
+
await withIndexLock(brainDir, () => writeBrainIndexUnlocked(brainDir, index));
|
|
59
|
+
}
|
|
60
|
+
async function writeBrainIndexUnlocked(brainDir, index) {
|
|
53
61
|
await mkdir(brainDir, { recursive: true });
|
|
54
62
|
const normalizedIndex = parseBrainIndex(index);
|
|
55
63
|
const target = indexPath(brainDir);
|
|
@@ -66,29 +74,33 @@ export async function readEntity(brainDir, entityId) {
|
|
|
66
74
|
}
|
|
67
75
|
const content = await readFile(resolveEntityPath(brainDir, entity.filePath), 'utf8');
|
|
68
76
|
const ageMs = Math.max(0, Date.now() - new Date(entity.lastUpdated).getTime());
|
|
77
|
+
const warnings = detectInjectionWarnings(content);
|
|
69
78
|
return {
|
|
70
79
|
entity,
|
|
71
80
|
content,
|
|
72
81
|
ageMs,
|
|
73
|
-
stale: ageMs > staleThresholdMs
|
|
82
|
+
stale: ageMs > staleThresholdMs,
|
|
83
|
+
warnings: warnings.length > 0 ? warnings : undefined
|
|
74
84
|
};
|
|
75
85
|
}
|
|
76
86
|
export async function createEntity(brainDir, storeDir, entity, content, actor) {
|
|
77
87
|
await initBrainDir(brainDir);
|
|
78
88
|
const normalizedEntity = normalizeNewEntity(entity, actor);
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
89
|
+
await withIndexLock(brainDir, async () => {
|
|
90
|
+
const index = await readBrainIndexUnlocked(brainDir);
|
|
91
|
+
if (index.entities.some((candidate) => candidate.id === normalizedEntity.id)) {
|
|
92
|
+
throw new Error(`Brain entity already exists: ${normalizedEntity.id}.`);
|
|
93
|
+
}
|
|
94
|
+
if (index.entities.some((candidate) => candidate.filePath === normalizedEntity.filePath)) {
|
|
95
|
+
throw new Error(`Brain entity filePath already exists: ${normalizedEntity.filePath}.`);
|
|
96
|
+
}
|
|
97
|
+
const entityPath = resolveEntityPath(brainDir, normalizedEntity.filePath);
|
|
98
|
+
await mkdir(dirname(entityPath), { recursive: true });
|
|
99
|
+
await writeNewEntityFile(entityPath, normalizedEntity.filePath, sanitizeMarkdown(content));
|
|
100
|
+
index.entities.push(normalizedEntity);
|
|
101
|
+
index.updatedAt = normalizedEntity.lastUpdated;
|
|
102
|
+
await writeBrainIndexUnlocked(brainDir, index);
|
|
103
|
+
});
|
|
92
104
|
await appendChange(storeDir, {
|
|
93
105
|
target: `brain.${normalizedEntity.id}`,
|
|
94
106
|
targetType: 'memory',
|
|
@@ -103,26 +115,32 @@ export async function createEntity(brainDir, storeDir, entity, content, actor) {
|
|
|
103
115
|
export async function writeEntity(brainDir, storeDir, input) {
|
|
104
116
|
await initBrainDir(brainDir);
|
|
105
117
|
const normalizedInput = normalizeWriteInput(input);
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
118
|
+
let updatedEntity;
|
|
119
|
+
await withIndexLock(brainDir, async () => {
|
|
120
|
+
const index = await readBrainIndexUnlocked(brainDir);
|
|
121
|
+
const entityIndex = index.entities.findIndex((candidate) => candidate.id === normalizedInput.entityId);
|
|
122
|
+
if (entityIndex === -1) {
|
|
123
|
+
throw new Error(`Unknown brain entity: ${normalizedInput.entityId}.`);
|
|
124
|
+
}
|
|
125
|
+
const entity = index.entities[entityIndex];
|
|
126
|
+
const entityPath = resolveEntityPath(brainDir, entity.filePath);
|
|
127
|
+
const sanitizedContent = sanitizeMarkdown(normalizedInput.content);
|
|
128
|
+
const nextContent = normalizedInput.appendOnly
|
|
129
|
+
? `${await readTextIfExists(entityPath)}\n---\n## Update - ${new Date().toISOString()}\n\n${sanitizedContent}`.trim()
|
|
130
|
+
: sanitizedContent;
|
|
131
|
+
await writeFile(entityPath, nextContent, 'utf8');
|
|
132
|
+
updatedEntity = {
|
|
133
|
+
...entity,
|
|
134
|
+
lastUpdated: new Date().toISOString(),
|
|
135
|
+
lastUpdatedBy: normalizedInput.actor
|
|
136
|
+
};
|
|
137
|
+
index.entities[entityIndex] = updatedEntity;
|
|
138
|
+
index.updatedAt = updatedEntity.lastUpdated;
|
|
139
|
+
await writeBrainIndexUnlocked(brainDir, index);
|
|
140
|
+
});
|
|
141
|
+
if (!updatedEntity) {
|
|
109
142
|
throw new Error(`Unknown brain entity: ${normalizedInput.entityId}.`);
|
|
110
143
|
}
|
|
111
|
-
const entity = index.entities[entityIndex];
|
|
112
|
-
const entityPath = resolveEntityPath(brainDir, entity.filePath);
|
|
113
|
-
const sanitizedContent = sanitizeMarkdown(normalizedInput.content);
|
|
114
|
-
const nextContent = normalizedInput.appendOnly
|
|
115
|
-
? `${await readTextIfExists(entityPath)}\n---\n## Update - ${new Date().toISOString()}\n\n${sanitizedContent}`.trim()
|
|
116
|
-
: sanitizedContent;
|
|
117
|
-
await writeFile(entityPath, nextContent, 'utf8');
|
|
118
|
-
const updatedEntity = {
|
|
119
|
-
...entity,
|
|
120
|
-
lastUpdated: new Date().toISOString(),
|
|
121
|
-
lastUpdatedBy: normalizedInput.actor
|
|
122
|
-
};
|
|
123
|
-
index.entities[entityIndex] = updatedEntity;
|
|
124
|
-
index.updatedAt = updatedEntity.lastUpdated;
|
|
125
|
-
await writeBrainIndex(brainDir, index);
|
|
126
144
|
await appendChange(storeDir, {
|
|
127
145
|
target: `brain.${updatedEntity.id}`,
|
|
128
146
|
targetType: 'memory',
|
|
@@ -140,23 +158,32 @@ export async function writeEntity(brainDir, storeDir, input) {
|
|
|
140
158
|
export async function deleteEntity(brainDir, storeDir, entityId, actor, reason) {
|
|
141
159
|
await initBrainDir(brainDir);
|
|
142
160
|
const normalizedId = normalizeEntityId(entityId);
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
161
|
+
let deletedEntity;
|
|
162
|
+
let changedAt = '';
|
|
163
|
+
await withIndexLock(brainDir, async () => {
|
|
164
|
+
const index = await readBrainIndexUnlocked(brainDir);
|
|
165
|
+
const entity = index.entities.find((candidate) => candidate.id === normalizedId);
|
|
166
|
+
if (!entity) {
|
|
167
|
+
throw new Error(`Unknown brain entity: ${normalizedId}.`);
|
|
168
|
+
}
|
|
169
|
+
await rm(resolveEntityPath(brainDir, entity.filePath), { force: true });
|
|
170
|
+
index.entities = index.entities.filter((candidate) => candidate.id !== normalizedId);
|
|
171
|
+
index.updatedAt = new Date().toISOString();
|
|
172
|
+
await writeBrainIndexUnlocked(brainDir, index);
|
|
173
|
+
deletedEntity = entity;
|
|
174
|
+
changedAt = index.updatedAt;
|
|
175
|
+
});
|
|
176
|
+
if (!deletedEntity) {
|
|
146
177
|
throw new Error(`Unknown brain entity: ${normalizedId}.`);
|
|
147
178
|
}
|
|
148
|
-
await rm(resolveEntityPath(brainDir, entity.filePath), { force: true });
|
|
149
|
-
index.entities = index.entities.filter((candidate) => candidate.id !== normalizedId);
|
|
150
|
-
index.updatedAt = new Date().toISOString();
|
|
151
|
-
await writeBrainIndex(brainDir, index);
|
|
152
179
|
await appendChange(storeDir, {
|
|
153
180
|
target: `brain.${normalizedId}`,
|
|
154
181
|
targetType: 'memory',
|
|
155
182
|
action: 'delete',
|
|
156
183
|
actor: sanitizeText(actor),
|
|
157
184
|
reason: sanitizeText(reason),
|
|
158
|
-
changedAt
|
|
159
|
-
before:
|
|
185
|
+
changedAt,
|
|
186
|
+
before: deletedEntity
|
|
160
187
|
});
|
|
161
188
|
}
|
|
162
189
|
export async function searchEntities(brainDir, query) {
|
|
@@ -312,6 +339,54 @@ function normalizeTrustLevel(trust) {
|
|
|
312
339
|
function indexPath(brainDir) {
|
|
313
340
|
return resolve(brainDir, 'index.json');
|
|
314
341
|
}
|
|
342
|
+
async function withIndexLock(brainDir, operation) {
|
|
343
|
+
await acquireIndexLock(brainDir);
|
|
344
|
+
try {
|
|
345
|
+
return await operation();
|
|
346
|
+
}
|
|
347
|
+
finally {
|
|
348
|
+
await rm(lockPath(brainDir), { force: true });
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
async function acquireIndexLock(brainDir) {
|
|
352
|
+
await mkdir(brainDir, { recursive: true });
|
|
353
|
+
const lock = lockPath(brainDir);
|
|
354
|
+
const startedAt = Date.now();
|
|
355
|
+
for (;;) {
|
|
356
|
+
try {
|
|
357
|
+
await writeFile(lock, `${process.pid}:${new Date().toISOString()}\n`, { encoding: 'utf8', flag: 'wx' });
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
360
|
+
catch (error) {
|
|
361
|
+
if (!isNodeError(error, 'EEXIST')) {
|
|
362
|
+
throw error;
|
|
363
|
+
}
|
|
364
|
+
const stale = await isStaleLock(lock);
|
|
365
|
+
if (stale) {
|
|
366
|
+
await rm(lock, { force: true });
|
|
367
|
+
continue;
|
|
368
|
+
}
|
|
369
|
+
if (Date.now() - startedAt > lockWaitMs) {
|
|
370
|
+
throw new Error('Timed out waiting for brain index lock.');
|
|
371
|
+
}
|
|
372
|
+
await delay(100);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
async function isStaleLock(lock) {
|
|
377
|
+
try {
|
|
378
|
+
const metadata = await stat(lock);
|
|
379
|
+
return Date.now() - metadata.mtimeMs > lockStaleMs;
|
|
380
|
+
}
|
|
381
|
+
catch (error) {
|
|
382
|
+
if (isNodeError(error, 'ENOENT'))
|
|
383
|
+
return true;
|
|
384
|
+
throw error;
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
function lockPath(brainDir) {
|
|
388
|
+
return resolve(brainDir, '.index.lock');
|
|
389
|
+
}
|
|
315
390
|
async function readTextIfExists(filePath) {
|
|
316
391
|
try {
|
|
317
392
|
return await readFile(filePath, 'utf8');
|
package/dist/brain.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brain.js","sourceRoot":"","sources":["../src/brain.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"brain.js","sourceRoot":"","sources":["../src/brain.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { AgentCheckpoint } from './types.js';
|
|
2
|
+
export declare function saveCheckpoint(storeDir: string, checkpoint: AgentCheckpoint): Promise<void>;
|
|
3
|
+
export declare function loadCheckpoint(storeDir: string, id: string): Promise<AgentCheckpoint | null>;
|
|
4
|
+
export declare function listCheckpoints(storeDir: string, profile?: string): Promise<AgentCheckpoint[]>;
|
|
5
|
+
export declare function deleteCheckpoint(storeDir: string, id: string): Promise<void>;
|
|
6
|
+
//# sourceMappingURL=checkpoint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../src/checkpoint.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAIlD,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAIjG;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAgBlG;AAED,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAUpG;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAElF"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { access, mkdir } from 'node:fs/promises';
|
|
2
|
+
import { dirname, join } from 'node:path';
|
|
3
|
+
import { deleteJsonState, listJsonStateFiles, readJsonState, sanitizeText, writeJsonState } from './store.js';
|
|
4
|
+
const checkpointDir = 'checkpoints';
|
|
5
|
+
export async function saveCheckpoint(storeDir, checkpoint) {
|
|
6
|
+
const normalized = parseCheckpoint(checkpoint);
|
|
7
|
+
await mkdir(dirname(join(storeDir, checkpointPath(normalized.id))), { recursive: true });
|
|
8
|
+
await writeJsonState(storeDir, checkpointPath(normalized.id), normalized, parseCheckpoint);
|
|
9
|
+
}
|
|
10
|
+
export async function loadCheckpoint(storeDir, id) {
|
|
11
|
+
const safeId = safeCheckpointId(id);
|
|
12
|
+
try {
|
|
13
|
+
await access(join(storeDir, checkpointPath(safeId)));
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
if (error && typeof error === 'object' && 'code' in error && error.code === 'ENOENT') {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
throw error;
|
|
20
|
+
}
|
|
21
|
+
try {
|
|
22
|
+
return await readJsonState(storeDir, checkpointPath(safeId), emptyCheckpoint(safeId), parseCheckpoint);
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
throw error;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export async function listCheckpoints(storeDir, profile) {
|
|
29
|
+
const normalizedProfile = profile ? safeProfile(profile) : undefined;
|
|
30
|
+
const files = (await listJsonStateFiles(storeDir, checkpointDir)).filter((file) => file.endsWith('.json'));
|
|
31
|
+
const checkpoints = (await Promise.all(files.map((file) => loadCheckpoint(storeDir, file.replace(/\.json$/, ''))))).filter((checkpoint) => Boolean(checkpoint));
|
|
32
|
+
return checkpoints
|
|
33
|
+
.filter((checkpoint) => !normalizedProfile || checkpoint.profile === normalizedProfile)
|
|
34
|
+
.sort((left, right) => right.updatedAt.localeCompare(left.updatedAt));
|
|
35
|
+
}
|
|
36
|
+
export async function deleteCheckpoint(storeDir, id) {
|
|
37
|
+
await deleteJsonState(storeDir, checkpointPath(safeCheckpointId(id)));
|
|
38
|
+
}
|
|
39
|
+
function checkpointPath(id) {
|
|
40
|
+
return `${checkpointDir}/${safeCheckpointId(id)}.json`;
|
|
41
|
+
}
|
|
42
|
+
function emptyCheckpoint(id) {
|
|
43
|
+
return {
|
|
44
|
+
id,
|
|
45
|
+
profile: 'unknown',
|
|
46
|
+
taskDescription: 'missing',
|
|
47
|
+
currentStep: 0,
|
|
48
|
+
totalSteps: 0,
|
|
49
|
+
completedSteps: [],
|
|
50
|
+
pendingSteps: [],
|
|
51
|
+
state: {},
|
|
52
|
+
createdAt: new Date(0).toISOString(),
|
|
53
|
+
updatedAt: new Date(0).toISOString(),
|
|
54
|
+
prevHash: 'genesis'
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
function parseCheckpoint(value) {
|
|
58
|
+
const record = requireRecord(value, 'Checkpoint');
|
|
59
|
+
return {
|
|
60
|
+
id: safeCheckpointId(readString(record, 'id', 'Checkpoint id')),
|
|
61
|
+
profile: safeProfile(readString(record, 'profile', 'Checkpoint profile')),
|
|
62
|
+
taskDescription: sanitizeText(readString(record, 'taskDescription', 'Checkpoint taskDescription')),
|
|
63
|
+
currentStep: readNumber(record, 'currentStep', 'Checkpoint currentStep'),
|
|
64
|
+
totalSteps: readNumber(record, 'totalSteps', 'Checkpoint totalSteps'),
|
|
65
|
+
completedSteps: readStringArray(record, 'completedSteps', 'Checkpoint completedSteps').map((step) => sanitizeText(step)),
|
|
66
|
+
pendingSteps: readStringArray(record, 'pendingSteps', 'Checkpoint pendingSteps').map((step) => sanitizeText(step)),
|
|
67
|
+
state: sanitizeState(record.state),
|
|
68
|
+
createdAt: readString(record, 'createdAt', 'Checkpoint createdAt'),
|
|
69
|
+
updatedAt: readString(record, 'updatedAt', 'Checkpoint updatedAt'),
|
|
70
|
+
prevHash: typeof record.prevHash === 'string' ? record.prevHash : 'genesis',
|
|
71
|
+
warnings: Array.isArray(record.warnings)
|
|
72
|
+
? record.warnings.filter((warning) => typeof warning === 'string')
|
|
73
|
+
: undefined
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
function sanitizeState(value) {
|
|
77
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
78
|
+
return {};
|
|
79
|
+
return Object.fromEntries(Object.entries(value).map(([key, entryValue]) => [
|
|
80
|
+
sanitizeText(key),
|
|
81
|
+
sanitizeJsonValue(entryValue)
|
|
82
|
+
]));
|
|
83
|
+
}
|
|
84
|
+
function sanitizeJsonValue(value) {
|
|
85
|
+
if (typeof value === 'string')
|
|
86
|
+
return sanitizeText(value);
|
|
87
|
+
if (Array.isArray(value))
|
|
88
|
+
return value.map(sanitizeJsonValue);
|
|
89
|
+
if (value && typeof value === 'object')
|
|
90
|
+
return sanitizeState(value);
|
|
91
|
+
return value;
|
|
92
|
+
}
|
|
93
|
+
function safeCheckpointId(value) {
|
|
94
|
+
if (!/^[A-Za-z0-9][A-Za-z0-9_-]*$/.test(value)) {
|
|
95
|
+
throw new Error('Checkpoint id must be a safe identifier.');
|
|
96
|
+
}
|
|
97
|
+
return value;
|
|
98
|
+
}
|
|
99
|
+
function safeProfile(value) {
|
|
100
|
+
if (!/^[A-Za-z0-9][A-Za-z0-9_-]*$/.test(value)) {
|
|
101
|
+
throw new Error('Checkpoint profile must be a safe identifier.');
|
|
102
|
+
}
|
|
103
|
+
return value;
|
|
104
|
+
}
|
|
105
|
+
function requireRecord(value, label) {
|
|
106
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
107
|
+
throw new Error(`${label} must be an object.`);
|
|
108
|
+
}
|
|
109
|
+
return value;
|
|
110
|
+
}
|
|
111
|
+
function readString(record, key, label) {
|
|
112
|
+
const value = record[key];
|
|
113
|
+
if (typeof value !== 'string' || value.trim().length === 0) {
|
|
114
|
+
throw new Error(`${label} must be a non-empty string.`);
|
|
115
|
+
}
|
|
116
|
+
return value;
|
|
117
|
+
}
|
|
118
|
+
function readStringArray(record, key, label) {
|
|
119
|
+
const value = record[key];
|
|
120
|
+
if (!Array.isArray(value)) {
|
|
121
|
+
throw new Error(`${label} must be an array.`);
|
|
122
|
+
}
|
|
123
|
+
return value.map((entry) => {
|
|
124
|
+
if (typeof entry !== 'string' || entry.trim().length === 0) {
|
|
125
|
+
throw new Error(`${label} must contain non-empty strings.`);
|
|
126
|
+
}
|
|
127
|
+
return entry;
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
function readNumber(record, key, label) {
|
|
131
|
+
const value = record[key];
|
|
132
|
+
if (typeof value !== 'number' || !Number.isFinite(value) || value < 0) {
|
|
133
|
+
throw new Error(`${label} must be a non-negative number.`);
|
|
134
|
+
}
|
|
135
|
+
return value;
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=checkpoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpoint.js","sourceRoot":"","sources":["../src/checkpoint.ts"],"names":[],"mappings":"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"}
|