@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.
Files changed (64) hide show
  1. package/README.md +29 -4
  2. package/dist/brain.d.ts.map +1 -1
  3. package/dist/brain.js +119 -44
  4. package/dist/brain.js.map +1 -1
  5. package/dist/checkpoint.d.ts +6 -0
  6. package/dist/checkpoint.d.ts.map +1 -0
  7. package/dist/checkpoint.js +137 -0
  8. package/dist/checkpoint.js.map +1 -0
  9. package/dist/cli.js +162 -7
  10. package/dist/cli.js.map +1 -1
  11. package/dist/cost.d.ts +3 -0
  12. package/dist/cost.d.ts.map +1 -0
  13. package/dist/cost.js +49 -0
  14. package/dist/cost.js.map +1 -0
  15. package/dist/digest.d.ts +2 -1
  16. package/dist/digest.d.ts.map +1 -1
  17. package/dist/digest.js +18 -2
  18. package/dist/digest.js.map +1 -1
  19. package/dist/engine.d.ts +0 -2
  20. package/dist/engine.d.ts.map +1 -1
  21. package/dist/engine.js +0 -2
  22. package/dist/engine.js.map +1 -1
  23. package/dist/health.d.ts +9 -0
  24. package/dist/health.d.ts.map +1 -0
  25. package/dist/health.js +222 -0
  26. package/dist/health.js.map +1 -0
  27. package/dist/interface.d.ts +15 -2
  28. package/dist/interface.d.ts.map +1 -1
  29. package/dist/interface.js +47 -3
  30. package/dist/interface.js.map +1 -1
  31. package/dist/internal.d.ts +3 -0
  32. package/dist/internal.d.ts.map +1 -0
  33. package/dist/internal.js +3 -0
  34. package/dist/internal.js.map +1 -0
  35. package/dist/loader.js +54 -3
  36. package/dist/loader.js.map +1 -1
  37. package/dist/policy-engine.js +7 -7
  38. package/dist/policy-engine.js.map +1 -1
  39. package/dist/preflight.d.ts +5 -3
  40. package/dist/preflight.d.ts.map +1 -1
  41. package/dist/preflight.js +144 -20
  42. package/dist/preflight.js.map +1 -1
  43. package/dist/route-resolver.d.ts.map +1 -1
  44. package/dist/route-resolver.js +47 -6
  45. package/dist/route-resolver.js.map +1 -1
  46. package/dist/slo.d.ts +4 -0
  47. package/dist/slo.d.ts.map +1 -0
  48. package/dist/slo.js +147 -0
  49. package/dist/slo.js.map +1 -0
  50. package/dist/store.d.ts +10 -0
  51. package/dist/store.d.ts.map +1 -1
  52. package/dist/store.js +165 -12
  53. package/dist/store.js.map +1 -1
  54. package/dist/types.d.ts +75 -4
  55. package/dist/types.d.ts.map +1 -1
  56. package/package.json +9 -1
  57. package/dist/agent-preflight.d.ts +0 -6
  58. package/dist/agent-preflight.d.ts.map +0 -1
  59. package/dist/agent-preflight.js +0 -55
  60. package/dist/agent-preflight.js.map +0 -1
  61. package/dist/preflight-action.d.ts +0 -3
  62. package/dist/preflight-action.d.ts.map +0 -1
  63. package/dist/preflight-action.js +0 -101
  64. package/dist/preflight-action.js.map +0 -1
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Agent CMDB
2
2
 
3
3
  [![CI](https://github.com/vikas53953/agent-cmdb-policy-brain/actions/workflows/ci.yml/badge.svg)](https://github.com/vikas53953/agent-cmdb-policy-brain/actions/workflows/ci.yml)
4
- ![Tests](https://img.shields.io/badge/tests-153_passing-brightgreen)
4
+ ![Tests](https://img.shields.io/badge/tests-200%2B_passing-brightgreen)
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
- | V2.0 | Planned | Health monitors, circuit breakers, SLOs, cost tracking, checkpoint/resume |
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
- - 153 tests passing
272
+ - 200+ tests passing
248
273
  - strict TypeScript clean
249
274
  - clean `dist/` build
@@ -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;AAiBpB,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBlE;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAc1E;AAED,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAOxF;AAED,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAkB7F;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,CA8BtB;AAED,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,WAAW,CAAC,CAyCtB;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,CAuBf;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;AA8MD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAEjF"}
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 { appendChange } from './store.js';
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
- const index = await readBrainIndex(brainDir);
80
- if (index.entities.some((candidate) => candidate.id === normalizedEntity.id)) {
81
- throw new Error(`Brain entity already exists: ${normalizedEntity.id}.`);
82
- }
83
- if (index.entities.some((candidate) => candidate.filePath === normalizedEntity.filePath)) {
84
- throw new Error(`Brain entity filePath already exists: ${normalizedEntity.filePath}.`);
85
- }
86
- const entityPath = resolveEntityPath(brainDir, normalizedEntity.filePath);
87
- await mkdir(dirname(entityPath), { recursive: true });
88
- await writeNewEntityFile(entityPath, normalizedEntity.filePath, sanitizeMarkdown(content));
89
- index.entities.push(normalizedEntity);
90
- index.updatedAt = normalizedEntity.lastUpdated;
91
- await writeBrainIndex(brainDir, index);
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
- const index = await readBrainIndex(brainDir);
107
- const entityIndex = index.entities.findIndex((candidate) => candidate.id === normalizedInput.entityId);
108
- if (entityIndex === -1) {
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
- const index = await readBrainIndex(brainDir);
144
- const entity = index.entities.find((candidate) => candidate.id === normalizedId);
145
- if (!entity) {
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: index.updatedAt,
159
- before: entity
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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"}