audrey 1.3.0 → 2.1.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 (185) hide show
  1. package/CHANGELOG.md +71 -0
  2. package/README.md +70 -71
  3. package/SECURITY.md +2 -3
  4. package/dist/mcp-server/config.d.ts +1 -1
  5. package/dist/mcp-server/config.d.ts.map +1 -1
  6. package/dist/mcp-server/config.js +31 -3
  7. package/dist/mcp-server/config.js.map +1 -1
  8. package/dist/mcp-server/index.d.ts +6 -2
  9. package/dist/mcp-server/index.d.ts.map +1 -1
  10. package/dist/mcp-server/index.js +151 -19
  11. package/dist/mcp-server/index.js.map +1 -1
  12. package/dist/mcp-server/tool-schemas.d.ts +46 -0
  13. package/dist/mcp-server/tool-schemas.d.ts.map +1 -1
  14. package/dist/mcp-server/tool-schemas.js +20 -1
  15. package/dist/mcp-server/tool-schemas.js.map +1 -1
  16. package/dist/src/action-key.d.ts.map +1 -1
  17. package/dist/src/action-key.js +7 -7
  18. package/dist/src/action-key.js.map +1 -1
  19. package/dist/src/adaptive.d.ts +2 -2
  20. package/dist/src/adaptive.d.ts.map +1 -1
  21. package/dist/src/adaptive.js.map +1 -1
  22. package/dist/src/affect.d.ts +2 -2
  23. package/dist/src/affect.d.ts.map +1 -1
  24. package/dist/src/affect.js.map +1 -1
  25. package/dist/src/audrey.d.ts +9 -6
  26. package/dist/src/audrey.d.ts.map +1 -1
  27. package/dist/src/audrey.js +210 -57
  28. package/dist/src/audrey.js.map +1 -1
  29. package/dist/src/autopilot.d.ts +1 -1
  30. package/dist/src/autopilot.d.ts.map +1 -1
  31. package/dist/src/autopilot.js +47 -224
  32. package/dist/src/autopilot.js.map +1 -1
  33. package/dist/src/capsule.d.ts +4 -17
  34. package/dist/src/capsule.d.ts.map +1 -1
  35. package/dist/src/capsule.js +21 -20
  36. package/dist/src/capsule.js.map +1 -1
  37. package/dist/src/causal.d.ts +4 -4
  38. package/dist/src/causal.d.ts.map +1 -1
  39. package/dist/src/causal.js.map +1 -1
  40. package/dist/src/chatgpt-auth.d.ts +77 -0
  41. package/dist/src/chatgpt-auth.d.ts.map +1 -0
  42. package/dist/src/chatgpt-auth.js +887 -0
  43. package/dist/src/chatgpt-auth.js.map +1 -0
  44. package/dist/src/chatgpt-llm.d.ts +18 -0
  45. package/dist/src/chatgpt-llm.d.ts.map +1 -0
  46. package/dist/src/chatgpt-llm.js +157 -0
  47. package/dist/src/chatgpt-llm.js.map +1 -0
  48. package/dist/src/consolidate.d.ts +3 -3
  49. package/dist/src/consolidate.d.ts.map +1 -1
  50. package/dist/src/consolidate.js +30 -2
  51. package/dist/src/consolidate.js.map +1 -1
  52. package/dist/src/controller.d.ts +7 -1
  53. package/dist/src/controller.d.ts.map +1 -1
  54. package/dist/src/controller.js +88 -14
  55. package/dist/src/controller.js.map +1 -1
  56. package/dist/src/db.d.ts +8 -7
  57. package/dist/src/db.d.ts.map +1 -1
  58. package/dist/src/db.js +127 -46
  59. package/dist/src/db.js.map +1 -1
  60. package/dist/src/decay.d.ts +2 -2
  61. package/dist/src/decay.d.ts.map +1 -1
  62. package/dist/src/decay.js.map +1 -1
  63. package/dist/src/embedding.d.ts.map +1 -1
  64. package/dist/src/embedding.js +19 -3
  65. package/dist/src/embedding.js.map +1 -1
  66. package/dist/src/encode.d.ts +16 -2
  67. package/dist/src/encode.d.ts.map +1 -1
  68. package/dist/src/encode.js +56 -17
  69. package/dist/src/encode.js.map +1 -1
  70. package/dist/src/events.d.ts +24 -7
  71. package/dist/src/events.d.ts.map +1 -1
  72. package/dist/src/events.js +130 -3
  73. package/dist/src/events.js.map +1 -1
  74. package/dist/src/export.d.ts +3 -2
  75. package/dist/src/export.d.ts.map +1 -1
  76. package/dist/src/export.js +9 -2
  77. package/dist/src/export.js.map +1 -1
  78. package/dist/src/feedback.d.ts +2 -2
  79. package/dist/src/feedback.d.ts.map +1 -1
  80. package/dist/src/feedback.js.map +1 -1
  81. package/dist/src/forget.d.ts +5 -5
  82. package/dist/src/forget.d.ts.map +1 -1
  83. package/dist/src/forget.js +6 -2
  84. package/dist/src/forget.js.map +1 -1
  85. package/dist/src/fts.d.ts +13 -13
  86. package/dist/src/fts.d.ts.map +1 -1
  87. package/dist/src/fts.js +4 -4
  88. package/dist/src/fts.js.map +1 -1
  89. package/dist/src/grounding.d.ts +5 -5
  90. package/dist/src/grounding.d.ts.map +1 -1
  91. package/dist/src/grounding.js +24 -11
  92. package/dist/src/grounding.js.map +1 -1
  93. package/dist/src/hybrid-recall.d.ts +7 -10
  94. package/dist/src/hybrid-recall.d.ts.map +1 -1
  95. package/dist/src/hybrid-recall.js +25 -57
  96. package/dist/src/hybrid-recall.js.map +1 -1
  97. package/dist/src/impact.d.ts +2 -2
  98. package/dist/src/impact.d.ts.map +1 -1
  99. package/dist/src/impact.js.map +1 -1
  100. package/dist/src/import.d.ts +42 -5
  101. package/dist/src/import.d.ts.map +1 -1
  102. package/dist/src/import.js +101 -42
  103. package/dist/src/import.js.map +1 -1
  104. package/dist/src/index.d.ts +3 -0
  105. package/dist/src/index.d.ts.map +1 -1
  106. package/dist/src/index.js +2 -0
  107. package/dist/src/index.js.map +1 -1
  108. package/dist/src/interference.d.ts +2 -2
  109. package/dist/src/interference.d.ts.map +1 -1
  110. package/dist/src/interference.js.map +1 -1
  111. package/dist/src/introspect.d.ts +2 -2
  112. package/dist/src/introspect.d.ts.map +1 -1
  113. package/dist/src/introspect.js.map +1 -1
  114. package/dist/src/llm-shared.d.ts +10 -0
  115. package/dist/src/llm-shared.d.ts.map +1 -0
  116. package/dist/src/llm-shared.js +20 -0
  117. package/dist/src/llm-shared.js.map +1 -0
  118. package/dist/src/llm.d.ts +2 -1
  119. package/dist/src/llm.d.ts.map +1 -1
  120. package/dist/src/llm.js +13 -22
  121. package/dist/src/llm.js.map +1 -1
  122. package/dist/src/migrate.d.ts +2 -2
  123. package/dist/src/migrate.d.ts.map +1 -1
  124. package/dist/src/migrate.js +34 -40
  125. package/dist/src/migrate.js.map +1 -1
  126. package/dist/src/preflight.d.ts +2 -0
  127. package/dist/src/preflight.d.ts.map +1 -1
  128. package/dist/src/preflight.js +5 -1
  129. package/dist/src/preflight.js.map +1 -1
  130. package/dist/src/project-memory.d.ts +14 -0
  131. package/dist/src/project-memory.d.ts.map +1 -0
  132. package/dist/src/project-memory.js +135 -0
  133. package/dist/src/project-memory.js.map +1 -0
  134. package/dist/src/project.d.ts +2 -0
  135. package/dist/src/project.d.ts.map +1 -1
  136. package/dist/src/project.js +12 -0
  137. package/dist/src/project.js.map +1 -1
  138. package/dist/src/promote.d.ts +2 -2
  139. package/dist/src/promote.d.ts.map +1 -1
  140. package/dist/src/promote.js +2 -26
  141. package/dist/src/promote.js.map +1 -1
  142. package/dist/src/recall-scoring.d.ts +14 -0
  143. package/dist/src/recall-scoring.d.ts.map +1 -0
  144. package/dist/src/recall-scoring.js +167 -0
  145. package/dist/src/recall-scoring.js.map +1 -0
  146. package/dist/src/recall.d.ts +3 -3
  147. package/dist/src/recall.d.ts.map +1 -1
  148. package/dist/src/recall.js +31 -168
  149. package/dist/src/recall.js.map +1 -1
  150. package/dist/src/rollback.d.ts +15 -3
  151. package/dist/src/rollback.d.ts.map +1 -1
  152. package/dist/src/rollback.js +118 -25
  153. package/dist/src/rollback.js.map +1 -1
  154. package/dist/src/routes.d.ts.map +1 -1
  155. package/dist/src/routes.js +102 -33
  156. package/dist/src/routes.js.map +1 -1
  157. package/dist/src/rules-compiler.d.ts +4 -0
  158. package/dist/src/rules-compiler.d.ts.map +1 -1
  159. package/dist/src/rules-compiler.js +34 -2
  160. package/dist/src/rules-compiler.js.map +1 -1
  161. package/dist/src/server.d.ts +2 -0
  162. package/dist/src/server.d.ts.map +1 -1
  163. package/dist/src/server.js +96 -38
  164. package/dist/src/server.js.map +1 -1
  165. package/dist/src/shell-command.d.ts.map +1 -1
  166. package/dist/src/shell-command.js +24 -7
  167. package/dist/src/shell-command.js.map +1 -1
  168. package/dist/src/sqlite.d.ts +31 -0
  169. package/dist/src/sqlite.d.ts.map +1 -0
  170. package/dist/src/sqlite.js +113 -0
  171. package/dist/src/sqlite.js.map +1 -0
  172. package/dist/src/success-checks.d.ts +41 -0
  173. package/dist/src/success-checks.d.ts.map +1 -0
  174. package/dist/src/success-checks.js +164 -0
  175. package/dist/src/success-checks.js.map +1 -0
  176. package/dist/src/tool-trace.d.ts +2 -2
  177. package/dist/src/tool-trace.d.ts.map +1 -1
  178. package/dist/src/tool-trace.js.map +1 -1
  179. package/dist/src/types.d.ts +8 -2
  180. package/dist/src/types.d.ts.map +1 -1
  181. package/dist/src/validate.d.ts +4 -4
  182. package/dist/src/validate.d.ts.map +1 -1
  183. package/dist/src/validate.js +23 -9
  184. package/dist/src/validate.js.map +1 -1
  185. package/package.json +12 -23
@@ -4,6 +4,7 @@ import { buildPreflight } from './preflight.js';
4
4
  import { buildReflexReportFromPreflight } from './reflexes.js';
5
5
  import { redact, truncateRedactedText } from './redact.js';
6
6
  import { requireAgent } from './utils.js';
7
+ import { compileSuccessChecks, readSuccessChecks, verifySuccessChecks, } from './success-checks.js';
7
8
  const DEFAULT_FAILURE_DECAY_DAYS = 7;
8
9
  function parseMetadata(value) {
9
10
  if (!value)
@@ -144,13 +145,37 @@ function exactActionState(audrey, action, failureDecayDays, actorAgent) {
144
145
  actorAgent,
145
146
  ...(since ? { since } : {}),
146
147
  });
148
+ // Every recorded failure of this action counts, whatever contract the
149
+ // current call declares: a renamed or dropped check must not hide one. The
150
+ // contract only decides which later success recovers a checked failure.
147
151
  const latestSuccess = latestSucceededEvent(events);
148
- const failures = events
149
- .filter(event => event.outcome === 'failed')
150
- .filter(event => !latestSuccess || eventOrder(event, latestSuccess) > 0);
152
+ const checkedSuccesses = new Map();
153
+ for (const event of events) {
154
+ const metadata = parseMetadata(event.metadata);
155
+ const verification = metadata.guard_verification;
156
+ if (event.outcome === 'succeeded' &&
157
+ typeof metadata.guard_contract_digest === 'string' &&
158
+ verification?.status === 'passed' &&
159
+ verification.contract_digest === metadata.guard_contract_digest) {
160
+ const prior = checkedSuccesses.get(metadata.guard_contract_digest);
161
+ if (!prior || eventOrder(prior, event) < 0)
162
+ checkedSuccesses.set(metadata.guard_contract_digest, event);
163
+ }
164
+ }
165
+ const recoveredBy = (failure) => {
166
+ const contract = parseMetadata(failure.metadata).guard_contract_digest;
167
+ const success = typeof contract === 'string' ? checkedSuccesses.get(contract) : latestSuccess;
168
+ return success && eventOrder(failure, success) < 0 ? success : undefined;
169
+ };
170
+ const failedEvents = events.filter(event => event.outcome === 'failed');
171
+ const failures = failedEvents.filter(event => !recoveredBy(event));
151
172
  if (failures.length > 0 || !latestSuccess)
152
173
  return { failures };
153
- const recoveredFailures = events.filter(event => event.outcome === 'failed' && eventOrder(event, latestSuccess) < 0);
174
+ const recoveredFailures = failedEvents.filter(event => recoveredBy(event));
175
+ const recovery = latestSucceededEvent(recoveredFailures.flatMap(event => {
176
+ const success = recoveredBy(event);
177
+ return success ? [success] : [];
178
+ }));
154
179
  const recoveredFailureMemoryIds = recoveredFailures.flatMap(event => {
155
180
  const linkedId = parseMetadata(event.metadata).failure_memory_id;
156
181
  if (typeof linkedId === 'string' && linkedId.length > 0)
@@ -168,7 +193,7 @@ function exactActionState(audrey, action, failureDecayDays, actorAgent) {
168
193
  return {
169
194
  failures,
170
195
  ...(recoveredFailures.length > 0
171
- ? { recoveredBy: latestSuccess, recoveredFailures, recoveredFailureMemoryIds }
196
+ ? { recoveredBy: recovery, recoveredFailures, recoveredFailureMemoryIds }
172
197
  : {}),
173
198
  };
174
199
  }
@@ -179,7 +204,10 @@ export class MemoryController {
179
204
  this.audrey = audrey;
180
205
  this.failureDecayDays = options.failureDecayDays ?? DEFAULT_FAILURE_DECAY_DAYS;
181
206
  }
182
- async beforeAction(action) {
207
+ async beforeAction(action, options = {}) {
208
+ if ('successChecks' in action || 'successChecks' in options) {
209
+ throw new Error('successChecks require the receipt API: use Audrey.beforeAction and Audrey.afterAction');
210
+ }
183
211
  const evaluation = await this.evaluate(action, {
184
212
  tool: action.tool,
185
213
  actionDigest: action.actionDigest,
@@ -192,6 +220,7 @@ export class MemoryController {
192
220
  includeStatus: true,
193
221
  recordEvent: true,
194
222
  scope: 'agent',
223
+ ...options,
195
224
  });
196
225
  return evaluation.controller;
197
226
  }
@@ -215,6 +244,8 @@ export class MemoryController {
215
244
  async evaluate(action, options) {
216
245
  const tool = options.tool ?? action.tool ?? 'guard';
217
246
  const actorAgent = requireAgent(options.agent, this.audrey.agent);
247
+ // Validate before preflight creates a receipt or changes retrieval state.
248
+ const successChecks = compileSuccessChecks(options.successChecks);
218
249
  const preflight = await buildPreflight(this.audrey, action.action, {
219
250
  ...options,
220
251
  tool,
@@ -357,6 +388,7 @@ export class MemoryController {
357
388
  preflight_evidence_ids: evidenceIds,
358
389
  prior_failure_acknowledged: acknowledgedPriorFailure,
359
390
  exact_repeat_failure_block: exactRepeatedFailure,
391
+ ...(successChecks ? { guard_success_checks: successChecks } : {}),
360
392
  }), receiptId, actorAgent);
361
393
  const guardDecision = {
362
394
  receipt_id: receiptId,
@@ -376,6 +408,7 @@ export class MemoryController {
376
408
  recommended_actions: finalRecommendedActions,
377
409
  evidence_ids: evidenceIds,
378
410
  recent_failures: preflight.recent_failures,
411
+ ...(successChecks ? { required_checks: successChecks.checks.map(check => check.id) } : {}),
379
412
  ...(preflight.status ? { status: preflight.status } : {}),
380
413
  ...(preflight.capsule ? { capsule: preflight.capsule } : {}),
381
414
  };
@@ -414,9 +447,15 @@ export class MemoryController {
414
447
  metadata: {
415
448
  ...(outcome.metadata ?? {}),
416
449
  audrey_guard_action_key: guardActionKey(outcome.action),
450
+ // This legacy path has no receipt and cannot verify a declared goal.
451
+ guard_contract_digest: null,
452
+ guard_verification: null,
453
+ guard_reported_outcome: null,
454
+ guard_block_overridden: false,
455
+ guard_override_reason: null,
417
456
  },
418
457
  });
419
- if (outcome.outcome !== 'failed')
458
+ if (outcome.outcome !== 'failed' || outcome.metadata?.read_only === true)
420
459
  return;
421
460
  const content = failureMemoryContent(outcome.action, tool, outcome.errorSummary);
422
461
  if (!content)
@@ -438,6 +477,18 @@ export async function beforeAction(audrey, action, options = {}) {
438
477
  return new MemoryController(audrey).beforeActionDecision(action, options);
439
478
  }
440
479
  export function afterAction(audrey, input) {
480
+ // Acquire the writer lock before reading the receipt's outcome. A deferred
481
+ // check followed by independent writes lets concurrent hook processes record
482
+ // duplicate outcomes and apply the same evidence feedback more than once.
483
+ const notifications = [];
484
+ const result = audrey.db
485
+ .transaction(() => recordActionOutcome(audrey, input, notifications))
486
+ .immediate();
487
+ for (const notify of notifications)
488
+ notify();
489
+ return result;
490
+ }
491
+ function recordActionOutcome(audrey, input, notifications) {
441
492
  if (!input.receiptId || input.receiptId.trim().length === 0) {
442
493
  throw new Error('receiptId is required');
443
494
  }
@@ -446,7 +497,10 @@ export function afterAction(audrey, input) {
446
497
  if (!receipt) {
447
498
  throw new Error(`guard receipt not found: ${input.receiptId}`);
448
499
  }
449
- const outcome = input.outcome ?? 'unknown';
500
+ const reportedOutcome = input.outcome ?? 'unknown';
501
+ if (!['succeeded', 'failed', 'blocked', 'skipped', 'unknown'].includes(reportedOutcome)) {
502
+ throw new Error('Invalid Guard outcome');
503
+ }
450
504
  const receiptMetadata = parseMetadata(receipt.metadata);
451
505
  if (!isGuardBeforeReceipt(receiptMetadata)) {
452
506
  throw new Error(`not a guard receipt: ${input.receiptId}`);
@@ -454,6 +508,17 @@ export function afterAction(audrey, input) {
454
508
  if (getGuardOutcomeEvent(audrey, input.receiptId, actorAgent)) {
455
509
  throw new Error(`guard receipt already has an outcome: ${input.receiptId}`);
456
510
  }
511
+ const successChecks = readSuccessChecks(receiptMetadata.guard_success_checks);
512
+ const checked = successChecks
513
+ ? verifySuccessChecks(successChecks, input.output, reportedOutcome)
514
+ : undefined;
515
+ const outcome = checked?.outcome ?? reportedOutcome;
516
+ const checkFailure = checked?.verification.status === 'failed'
517
+ ? `Required success checks failed: ${checked.verification.checks
518
+ .filter(check => check.status === 'failed')
519
+ .map(check => check.id)
520
+ .join(', ')}.`
521
+ : undefined;
457
522
  let overrideReason;
458
523
  if (outcome === 'succeeded' && receiptMetadata.preflight_decision === 'block') {
459
524
  if (receiptMetadata.exact_repeat_failure_block === true) {
@@ -475,7 +540,7 @@ export function afterAction(audrey, input) {
475
540
  input: input.input,
476
541
  output: input.output,
477
542
  outcome,
478
- errorSummary: input.errorSummary,
543
+ errorSummary: input.errorSummary ?? checkFailure,
479
544
  cwd: input.cwd ?? receipt.cwd ?? undefined,
480
545
  files: input.files,
481
546
  metadata: {
@@ -487,12 +552,20 @@ export function afterAction(audrey, input) {
487
552
  preflight_decision: receiptMetadata.preflight_decision,
488
553
  preflight_warning_count: receiptMetadata.preflight_warning_count,
489
554
  audrey_guard_action_key: receiptMetadata.audrey_guard_action_key,
490
- ...(overrideReason
491
- ? { guard_block_overridden: true, guard_override_reason: overrideReason }
492
- : {}),
555
+ // These fields are authoritative receipt-derived data, never caller
556
+ // metadata. A later unverified success cannot clear a failed check.
557
+ guard_contract_digest: successChecks?.digest ?? null,
558
+ guard_verification: checked?.verification ?? null,
559
+ guard_reported_outcome: checked ? reportedOutcome : null,
560
+ guard_block_overridden: overrideReason !== undefined,
561
+ guard_override_reason: overrideReason ?? null,
562
+ // Read-only commands never reach the receipt path (Autopilot skips
563
+ // their preflight), so a caller labelling a failure read-only would
564
+ // only be hiding it from failure learning.
565
+ read_only: receiptMetadata.read_only === true,
493
566
  },
494
567
  retainDetails: input.retainDetails,
495
- });
568
+ }, notifications);
496
569
  const validated = [];
497
570
  for (const [id, feedbackOutcome] of feedbackEntries) {
498
571
  if (!receiptEvidenceIds.has(id)) {
@@ -504,7 +577,7 @@ export function afterAction(audrey, input) {
504
577
  });
505
578
  continue;
506
579
  }
507
- const feedback = audrey.validate({ id, outcome: feedbackOutcome, agent: actorAgent });
580
+ const feedback = audrey.validate({ id, outcome: feedbackOutcome, agent: actorAgent }, notifications);
508
581
  if (feedback) {
509
582
  validated.push({ id, outcome: feedbackOutcome, validated: true, result: feedback });
510
583
  }
@@ -521,6 +594,7 @@ export function afterAction(audrey, input) {
521
594
  receipt_id: input.receiptId,
522
595
  post_event_id: result.event.id,
523
596
  outcome,
597
+ ...(checked ? { reported_outcome: reportedOutcome, verification: checked.verification } : {}),
524
598
  validated_evidence: validated,
525
599
  learning_summary: summarizeLearning(validated),
526
600
  };
@@ -1 +1 @@
1
- {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/controller.ts"],"names":[],"mappings":"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"}
package/dist/src/db.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import Database from 'better-sqlite3';
2
- export declare function createVec0Tables(db: Database.Database, dimensions: number): void;
1
+ import Database from './sqlite.js';
2
+ export declare function createVec0Tables(db: Database, dimensions: number): void;
3
3
  export type VecSyncSource = 'episodes' | 'semantics' | 'procedures';
4
4
  /**
5
5
  * The vec0 tables mirror live rows only. A forgotten or superseded episode,
@@ -16,7 +16,7 @@ export declare function liveRowClause(source: VecSyncSource, alias?: string): st
16
16
  * carries an embedding. Safe to call for a row that was just superseded,
17
17
  * restored, or deleted.
18
18
  */
19
- export declare function refreshVectorRow(db: Database.Database, source: VecSyncSource, id: string): void;
19
+ export declare function refreshVectorRow(db: Database, source: VecSyncSource, id: string): void;
20
20
  /**
21
21
  * Drops every vector whose source row is no longer live and returns how
22
22
  * many it dropped. Stores written before every writer kept dead rows out of
@@ -27,14 +27,15 @@ export declare function refreshVectorRow(db: Database.Database, source: VecSyncS
27
27
  * such rows back at any time. The maintenance sweep therefore calls this
28
28
  * whenever memoryStatus() reports a surplus.
29
29
  */
30
- export declare function reconcileVectorIndex(db: Database.Database): number;
31
- export declare function dropVec0Tables(db: Database.Database): void;
30
+ export declare function reconcileVectorIndex(db: Database): number;
31
+ export declare function dropVec0Tables(db: Database): void;
32
32
  export declare function createDatabase(dataDir: string, options?: {
33
33
  dimensions?: number;
34
+ sharedStore?: boolean;
34
35
  }): {
35
- db: Database.Database;
36
+ db: Database;
36
37
  migrated: boolean;
37
38
  };
38
39
  export declare function readStoredDimensions(dataDir: string): number | null;
39
- export declare function closeDatabase(db: Database.Database): void;
40
+ export declare function closeDatabase(db: Database): void;
40
41
  //# sourceMappingURL=db.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/db.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AA8QtC,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAIhF;AAED,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,WAAW,GAAG,YAAY,CAAC;AA2CpE;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,SAAK,GAAG,MAAM,CAKvE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAkB/F;AAID;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAalE;AAQD,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAY1D;AAqcD,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GACpC;IAAE,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAkE9C;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAcnE;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAIzD"}
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/db.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,aAAa,CAAC;AAuRnC,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAIvE;AAED,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,WAAW,GAAG,YAAY,CAAC;AA2CpE;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,SAAK,GAAG,MAAM,CAKvE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAkBtF;AAID;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,QAAQ,GAAG,MAAM,CAazD;AAQD,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAYjD;AAkfD,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GAC3D;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAgGrC;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAcnE;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAIhD"}
package/dist/src/db.js CHANGED
@@ -1,7 +1,8 @@
1
- import Database from 'better-sqlite3';
1
+ import Database from './sqlite.js';
2
2
  import * as sqliteVec from 'sqlite-vec';
3
3
  import { join } from 'node:path';
4
- import { mkdirSync, existsSync } from 'node:fs';
4
+ import { mkdirSync, existsSync, openSync, closeSync, fchmodSync, chmodSync, constants, } from 'node:fs';
5
+ import { checkoutRoot } from './project.js';
5
6
  import { createFTSTables, backfillFTS } from './fts.js';
6
7
  import { requireAgent } from './utils.js';
7
8
  const SCHEMA = `
@@ -479,7 +480,7 @@ function addColumnIfMissing(db, table, column, definition) {
479
480
  db.exec(`ALTER TABLE ${table} ADD COLUMN ${column} ${definition}`);
480
481
  }
481
482
  }
482
- const SCHEMA_VERSION = 16;
483
+ const SCHEMA_VERSION = 17;
483
484
  const MIGRATIONS = [
484
485
  {
485
486
  version: 1,
@@ -719,6 +720,36 @@ const MIGRATIONS = [
719
720
  `);
720
721
  },
721
722
  },
723
+ {
724
+ version: 17,
725
+ up(db) {
726
+ addColumnIfMissing(db, 'memory_anchors', 'last_checked_at', 'TEXT');
727
+ addColumnIfMissing(db, 'consolidation_runs', 'rollback_data', 'TEXT');
728
+ db.exec(`
729
+ UPDATE memory_anchors SET last_checked_at = last_verified_at;
730
+ CREATE INDEX IF NOT EXISTS idx_memory_anchors_checked
731
+ ON memory_anchors(agent, project_root, last_checked_at);
732
+ `);
733
+ const rows = db
734
+ .prepare(`
735
+ SELECT a.id, e.agent, e.context FROM memory_anchors a
736
+ JOIN episodes e ON e.id = a.memory_id WHERE a.memory_type = 'episodic'
737
+ `)
738
+ .all();
739
+ for (const row of rows) {
740
+ db.prepare('UPDATE memory_anchors SET agent = ? WHERE id = ?').run(row.agent, row.id);
741
+ try {
742
+ const context = JSON.parse(row.context ?? '{}');
743
+ if (typeof context.cwd === 'string' && existsSync(context.cwd)) {
744
+ db.prepare('UPDATE OR IGNORE memory_anchors SET project_root = ? WHERE id = ?').run(checkoutRoot(context.cwd), row.id);
745
+ }
746
+ }
747
+ catch {
748
+ /* An unavailable checkout keeps its last known anchor. */
749
+ }
750
+ }
751
+ },
752
+ },
722
753
  ];
723
754
  function runMigrations(db) {
724
755
  const row = db.prepare("SELECT value FROM audrey_config WHERE key = 'schema_version'").get();
@@ -735,59 +766,109 @@ function runMigrations(db) {
735
766
  })();
736
767
  }
737
768
  }
769
+ /** Retry lock acquisition only; failed transactions roll back before retrying. */
770
+ function retryBusy(operation) {
771
+ const deadline = Date.now() + 5000;
772
+ const sleeper = new Int32Array(new SharedArrayBuffer(4));
773
+ for (;;) {
774
+ try {
775
+ return operation();
776
+ }
777
+ catch (error) {
778
+ const code = error.errcode;
779
+ if (code === undefined || ![5, 6].includes(code & 0xff) || Date.now() >= deadline)
780
+ throw error;
781
+ Atomics.wait(sleeper, 0, 0, 20);
782
+ }
783
+ }
784
+ }
738
785
  export function createDatabase(dataDir, options = {}) {
739
786
  let { dimensions } = options;
740
787
  let migrated = false;
741
- mkdirSync(dataDir, { recursive: true });
788
+ const sharedStore = options.sharedStore ?? process.env.AUDREY_SHARED_STORE === '1';
789
+ mkdirSync(dataDir, { recursive: true, mode: sharedStore ? 0o770 : 0o700 });
742
790
  const dbPath = join(dataDir, 'audrey.db');
743
- const db = new Database(dbPath);
744
- db.pragma('journal_mode = WAL');
745
- db.pragma('foreign_keys = ON');
746
- db.pragma('busy_timeout = 5000');
747
- // Tuned for memory-store workloads (synchronous=NORMAL is durable under WAL,
748
- // 64 MiB page cache + 256 MiB mmap reduce read syscalls on hot recall paths).
749
- // AUDREY_PRAGMA_DEFAULTS=0 reverts to better-sqlite3 defaults.
750
- if (process.env.AUDREY_PRAGMA_DEFAULTS !== '0') {
751
- db.pragma('synchronous = NORMAL');
752
- db.pragma('cache_size = -65536');
753
- db.pragma('mmap_size = 268435456');
754
- db.pragma('temp_store = MEMORY');
755
- }
756
- db.exec(SCHEMA);
757
- runMigrations(db);
758
- if (dimensions == null) {
759
- const stored = db.prepare("SELECT value FROM audrey_config WHERE key = 'dimensions'").get();
760
- if (stored) {
761
- dimensions = parseInt(stored.value, 10);
791
+ // Protect the file before SQLite can write content or create WAL sidecars.
792
+ if (!sharedStore) {
793
+ const fd = openSync(dbPath, constants.O_CREAT | constants.O_RDWR | (constants.O_NOFOLLOW ?? 0), 0o600);
794
+ try {
795
+ if (process.platform !== 'win32')
796
+ fchmodSync(fd, 0o600);
762
797
  }
763
- }
764
- if (dimensions != null) {
765
- if (!Number.isInteger(dimensions) || dimensions <= 0) {
766
- throw new Error(`dimensions must be a positive integer, got: ${dimensions}`);
798
+ finally {
799
+ closeSync(fd);
767
800
  }
768
- sqliteVec.load(db);
769
- const existing = db
770
- .prepare("SELECT value FROM audrey_config WHERE key = 'dimensions'")
771
- .get();
772
- if (existing) {
773
- const storedDims = parseInt(existing.value, 10);
774
- if (storedDims !== dimensions) {
775
- dropVec0Tables(db);
776
- db.prepare("UPDATE audrey_config SET value = ? WHERE key = 'dimensions'").run(String(dimensions));
777
- migrated = true;
801
+ if (process.platform !== 'win32') {
802
+ for (const suffix of ['-wal', '-shm']) {
803
+ try {
804
+ chmodSync(dbPath + suffix, 0o600);
805
+ }
806
+ catch (error) {
807
+ if (error.code !== 'ENOENT')
808
+ throw error;
809
+ }
778
810
  }
779
811
  }
780
- else {
781
- db.prepare("INSERT INTO audrey_config (key, value) VALUES ('dimensions', ?)").run(String(dimensions));
782
- }
783
- createVec0Tables(db, dimensions);
784
- migrateVec0AgentPartitions(db, dimensions);
785
- reconcileVectorIndexOnce(db);
786
- if (!migrated && migrateEmbeddingsToVec0(db, dimensions)) {
787
- migrated = true;
812
+ }
813
+ const db = new Database(dbPath);
814
+ try {
815
+ retryBusy(() => db.pragma('journal_mode = WAL'));
816
+ db.pragma('foreign_keys = ON');
817
+ db.pragma('busy_timeout = 5000');
818
+ // Tuned for memory-store workloads (synchronous=NORMAL is durable under WAL,
819
+ // 64 MiB page cache + 256 MiB mmap reduce read syscalls on hot recall paths).
820
+ // AUDREY_PRAGMA_DEFAULTS=0 uses SQLite defaults apart from WAL, foreign keys, and busy timeout.
821
+ if (process.env.AUDREY_PRAGMA_DEFAULTS !== '0') {
822
+ db.pragma('synchronous = NORMAL');
823
+ db.pragma('cache_size = -65536');
824
+ db.pragma('mmap_size = 268435456');
825
+ db.pragma('temp_store = MEMORY');
788
826
  }
827
+ sqliteVec.load(db);
828
+ const initialize = db.transaction(() => {
829
+ db.exec(SCHEMA);
830
+ runMigrations(db);
831
+ if (dimensions == null) {
832
+ const stored = db
833
+ .prepare("SELECT value FROM audrey_config WHERE key = 'dimensions'")
834
+ .get();
835
+ if (stored) {
836
+ dimensions = parseInt(stored.value, 10);
837
+ }
838
+ }
839
+ if (dimensions != null) {
840
+ if (!Number.isInteger(dimensions) || dimensions <= 0) {
841
+ throw new Error(`dimensions must be a positive integer, got: ${dimensions}`);
842
+ }
843
+ const existing = db
844
+ .prepare("SELECT value FROM audrey_config WHERE key = 'dimensions'")
845
+ .get();
846
+ if (existing) {
847
+ const storedDims = parseInt(existing.value, 10);
848
+ if (storedDims !== dimensions) {
849
+ dropVec0Tables(db);
850
+ db.prepare("UPDATE audrey_config SET value = ? WHERE key = 'dimensions'").run(String(dimensions));
851
+ migrated = true;
852
+ }
853
+ }
854
+ else {
855
+ db.prepare("INSERT INTO audrey_config (key, value) VALUES ('dimensions', ?)").run(String(dimensions));
856
+ }
857
+ createVec0Tables(db, dimensions);
858
+ migrateVec0AgentPartitions(db, dimensions);
859
+ reconcileVectorIndexOnce(db);
860
+ if (!migrated && migrateEmbeddingsToVec0(db, dimensions)) {
861
+ migrated = true;
862
+ }
863
+ }
864
+ });
865
+ retryBusy(() => initialize.immediate());
866
+ return { db, migrated };
867
+ }
868
+ catch (error) {
869
+ db.close();
870
+ throw error;
789
871
  }
790
- return { db, migrated };
791
872
  }
792
873
  export function readStoredDimensions(dataDir) {
793
874
  const dbPath = join(dataDir, 'audrey.db');