@polpo-ai/core 0.15.47 → 0.15.49

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 (87) hide show
  1. package/dist/__tests__/brain-contracts.test.d.ts +2 -0
  2. package/dist/__tests__/brain-contracts.test.d.ts.map +1 -0
  3. package/dist/__tests__/brain-contracts.test.js +366 -0
  4. package/dist/__tests__/brain-contracts.test.js.map +1 -0
  5. package/dist/__tests__/brain-local.test.d.ts +2 -0
  6. package/dist/__tests__/brain-local.test.d.ts.map +1 -0
  7. package/dist/__tests__/brain-local.test.js +627 -0
  8. package/dist/__tests__/brain-local.test.js.map +1 -0
  9. package/dist/__tests__/brain-service.test.d.ts +2 -0
  10. package/dist/__tests__/brain-service.test.d.ts.map +1 -0
  11. package/dist/__tests__/brain-service.test.js +193 -0
  12. package/dist/__tests__/brain-service.test.js.map +1 -0
  13. package/dist/adapter.d.ts +5 -0
  14. package/dist/adapter.d.ts.map +1 -1
  15. package/dist/brain/chunking.d.ts +13 -0
  16. package/dist/brain/chunking.d.ts.map +1 -0
  17. package/dist/brain/chunking.js +99 -0
  18. package/dist/brain/chunking.js.map +1 -0
  19. package/dist/brain/contracts.d.ts +15 -0
  20. package/dist/brain/contracts.d.ts.map +1 -0
  21. package/dist/brain/contracts.js +361 -0
  22. package/dist/brain/contracts.js.map +1 -0
  23. package/dist/brain/errors.d.ts +7 -0
  24. package/dist/brain/errors.d.ts.map +1 -0
  25. package/dist/brain/errors.js +11 -0
  26. package/dist/brain/errors.js.map +1 -0
  27. package/dist/brain/in-memory-store.d.ts +59 -0
  28. package/dist/brain/in-memory-store.d.ts.map +1 -0
  29. package/dist/brain/in-memory-store.js +797 -0
  30. package/dist/brain/in-memory-store.js.map +1 -0
  31. package/dist/brain/index.d.ts +24 -0
  32. package/dist/brain/index.d.ts.map +1 -0
  33. package/dist/brain/index.js +14 -0
  34. package/dist/brain/index.js.map +1 -0
  35. package/dist/brain/ingestion.d.ts +23 -0
  36. package/dist/brain/ingestion.d.ts.map +1 -0
  37. package/dist/brain/ingestion.js +161 -0
  38. package/dist/brain/ingestion.js.map +1 -0
  39. package/dist/brain/lifecycle.d.ts +6 -0
  40. package/dist/brain/lifecycle.d.ts.map +1 -0
  41. package/dist/brain/lifecycle.js +50 -0
  42. package/dist/brain/lifecycle.js.map +1 -0
  43. package/dist/brain/parsers.d.ts +7 -0
  44. package/dist/brain/parsers.d.ts.map +1 -0
  45. package/dist/brain/parsers.js +47 -0
  46. package/dist/brain/parsers.js.map +1 -0
  47. package/dist/brain/ports.d.ts +18 -0
  48. package/dist/brain/ports.d.ts.map +1 -0
  49. package/dist/brain/ports.js +2 -0
  50. package/dist/brain/ports.js.map +1 -0
  51. package/dist/brain/reading.d.ts +25 -0
  52. package/dist/brain/reading.d.ts.map +1 -0
  53. package/dist/brain/reading.js +96 -0
  54. package/dist/brain/reading.js.map +1 -0
  55. package/dist/brain/retrieval.d.ts +19 -0
  56. package/dist/brain/retrieval.d.ts.map +1 -0
  57. package/dist/brain/retrieval.js +134 -0
  58. package/dist/brain/retrieval.js.map +1 -0
  59. package/dist/brain/scope.d.ts +5 -0
  60. package/dist/brain/scope.d.ts.map +1 -0
  61. package/dist/brain/scope.js +26 -0
  62. package/dist/brain/scope.js.map +1 -0
  63. package/dist/brain/service.d.ts +68 -0
  64. package/dist/brain/service.d.ts.map +1 -0
  65. package/dist/brain/service.js +2 -0
  66. package/dist/brain/service.js.map +1 -0
  67. package/dist/brain/store-errors.d.ts +17 -0
  68. package/dist/brain/store-errors.d.ts.map +1 -0
  69. package/dist/brain/store-errors.js +39 -0
  70. package/dist/brain/store-errors.js.map +1 -0
  71. package/dist/brain/stores.d.ts +44 -0
  72. package/dist/brain/stores.d.ts.map +1 -0
  73. package/dist/brain/stores.js +2 -0
  74. package/dist/brain/stores.js.map +1 -0
  75. package/dist/brain/types.d.ts +300 -0
  76. package/dist/brain/types.d.ts.map +1 -0
  77. package/dist/brain/types.js +43 -0
  78. package/dist/brain/types.js.map +1 -0
  79. package/dist/brain/validation.d.ts +12 -0
  80. package/dist/brain/validation.d.ts.map +1 -0
  81. package/dist/brain/validation.js +129 -0
  82. package/dist/brain/validation.js.map +1 -0
  83. package/dist/index.d.ts +1 -0
  84. package/dist/index.d.ts.map +1 -1
  85. package/dist/index.js +2 -0
  86. package/dist/index.js.map +1 -1
  87. package/package.json +5 -1
@@ -0,0 +1,361 @@
1
+ import { nanoid } from "nanoid";
2
+ import { BrainContractError } from "./errors.js";
3
+ import { normalizeBrainScope } from "./scope.js";
4
+ import { BRAIN_INGESTION_JOB_STATUSES, BRAIN_INGESTION_OPERATIONS, BRAIN_SOURCE_STATUSES, BRAIN_SOURCE_TYPES, BRAIN_TRUST_LEVELS, BRAIN_VERSION_STATUSES, } from "./types.js";
5
+ import { finiteNumber, isoTimestamp, nonNegativeInteger, normalizeBrainFailure, normalizeBrainMetadata, optionalText, optionalTimestamp, positiveInteger, requiredText, } from "./validation.js";
6
+ export const MAX_BRAIN_SOURCE_LABEL_CHARACTERS = 512;
7
+ export const MAX_BRAIN_CHUNK_CONTENT_CHARACTERS = 128_000;
8
+ const sourceTypes = new Set(BRAIN_SOURCE_TYPES);
9
+ const sourceStatuses = new Set(BRAIN_SOURCE_STATUSES);
10
+ const trustLevels = new Set(BRAIN_TRUST_LEVELS);
11
+ const versionStatuses = new Set(BRAIN_VERSION_STATUSES);
12
+ const ingestionStatuses = new Set(BRAIN_INGESTION_JOB_STATUSES);
13
+ const ingestionOperations = new Set(BRAIN_INGESTION_OPERATIONS);
14
+ function enumValue(value, values, path, code, label) {
15
+ if (typeof value !== "string" || !values.has(value)) {
16
+ throw new BrainContractError(`Unknown Brain ${label}: ${String(value)}`, code, path);
17
+ }
18
+ return value;
19
+ }
20
+ function normalizeTrust(value, code = "invalid_source") {
21
+ return enumValue(value, trustLevels, "trust", code, "trust level");
22
+ }
23
+ function normalizeOptionalFailure(value, path, code) {
24
+ return value === undefined
25
+ ? undefined
26
+ : normalizeBrainFailure(value, path, code);
27
+ }
28
+ function assertTimestampOrder(createdAt, updatedAt, code) {
29
+ if (Date.parse(updatedAt) < Date.parse(createdAt)) {
30
+ throw new BrainContractError("updatedAt cannot precede createdAt", code, "updatedAt");
31
+ }
32
+ }
33
+ function normalizeSourceRecord(input) {
34
+ const status = enumValue(input.status, sourceStatuses, "status", "invalid_source", "source status");
35
+ const currentVersion = optionalText(input.currentVersion, "currentVersion", 512, "invalid_source");
36
+ if (status === "pending" && currentVersion) {
37
+ throw new BrainContractError("A pending Brain source cannot have a current version", "invalid_source", "currentVersion");
38
+ }
39
+ if (status === "indexed" && !currentVersion) {
40
+ throw new BrainContractError("An indexed Brain source requires a current version", "invalid_source", "currentVersion");
41
+ }
42
+ const failure = normalizeOptionalFailure(input.failure, "failure", "invalid_source");
43
+ if (status === "failed" && !failure) {
44
+ throw new BrainContractError("A failed Brain source requires failure details", "invalid_source", "failure");
45
+ }
46
+ const createdAt = isoTimestamp(input.createdAt, "createdAt", "invalid_source");
47
+ const updatedAt = isoTimestamp(input.updatedAt, "updatedAt", "invalid_source");
48
+ assertTimestampOrder(createdAt, updatedAt, "invalid_source");
49
+ return Object.freeze({
50
+ id: requiredText(input.id, "id", 512, "invalid_source"),
51
+ scope: normalizeBrainScope(input.scope),
52
+ type: enumValue(input.type, sourceTypes, "type", "invalid_source", "source type"),
53
+ label: requiredText(input.label, "label", MAX_BRAIN_SOURCE_LABEL_CHARACTERS, "invalid_source"),
54
+ status,
55
+ trust: normalizeTrust(input.trust),
56
+ ...(currentVersion ? { currentVersion } : {}),
57
+ ...(failure ? { failure } : {}),
58
+ metadata: normalizeBrainMetadata(input.metadata),
59
+ createdAt,
60
+ updatedAt,
61
+ });
62
+ }
63
+ export function createBrainSource(input, factory = {}) {
64
+ if (!input || typeof input !== "object") {
65
+ throw new BrainContractError("Brain source input must be an object", "invalid_source");
66
+ }
67
+ const at = isoTimestamp(factory.now?.() ?? new Date(), "now", "invalid_source");
68
+ return normalizeSourceRecord({
69
+ id: input.id ?? factory.createId?.() ?? `brain-${nanoid(16)}`,
70
+ scope: input.scope,
71
+ type: input.type,
72
+ label: input.label,
73
+ status: "pending",
74
+ trust: input.trust,
75
+ metadata: input.metadata ?? {},
76
+ createdAt: at,
77
+ updatedAt: at,
78
+ });
79
+ }
80
+ export function normalizeBrainSource(value) {
81
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
82
+ throw new BrainContractError("Brain source must be an object", "invalid_source");
83
+ }
84
+ return normalizeSourceRecord(value);
85
+ }
86
+ function normalizeVersionRecord(input) {
87
+ const status = enumValue(input.status, versionStatuses, "status", "invalid_version", "version status");
88
+ const failure = normalizeOptionalFailure(input.failure, "failure", "invalid_version");
89
+ if (status === "failed" && !failure) {
90
+ throw new BrainContractError("A failed Brain source version requires failure details", "invalid_version", "failure");
91
+ }
92
+ const createdAt = isoTimestamp(input.createdAt, "createdAt", "invalid_version");
93
+ const updatedAt = isoTimestamp(input.updatedAt, "updatedAt", "invalid_version");
94
+ assertTimestampOrder(createdAt, updatedAt, "invalid_version");
95
+ const indexedAt = optionalTimestamp(input.indexedAt, "indexedAt", "invalid_version");
96
+ if (status === "indexed" && !indexedAt) {
97
+ throw new BrainContractError("An indexed Brain source version requires indexedAt", "invalid_version", "indexedAt");
98
+ }
99
+ const byteSize = input.byteSize === undefined
100
+ ? undefined
101
+ : nonNegativeInteger(input.byteSize, "byteSize", "invalid_version", Number.MAX_SAFE_INTEGER);
102
+ return Object.freeze({
103
+ sourceId: requiredText(input.sourceId, "sourceId", 512, "invalid_version"),
104
+ version: requiredText(input.version, "version", 512, "invalid_version"),
105
+ status,
106
+ ...(input.contentType === undefined
107
+ ? {}
108
+ : {
109
+ contentType: requiredText(input.contentType, "contentType", 256, "invalid_version"),
110
+ }),
111
+ ...(byteSize === undefined ? {} : { byteSize }),
112
+ ...(input.contentHash === undefined
113
+ ? {}
114
+ : {
115
+ contentHash: requiredText(input.contentHash, "contentHash", 512, "invalid_version"),
116
+ }),
117
+ ...(failure ? { failure } : {}),
118
+ metadata: normalizeBrainMetadata(input.metadata),
119
+ createdAt,
120
+ updatedAt,
121
+ ...(indexedAt ? { indexedAt } : {}),
122
+ });
123
+ }
124
+ export function createBrainSourceVersion(input, factory = {}) {
125
+ if (!input || typeof input !== "object") {
126
+ throw new BrainContractError("Brain source version input must be an object", "invalid_version");
127
+ }
128
+ const status = input.status ?? "pending";
129
+ if (status !== "pending" && status !== "indexing") {
130
+ throw new BrainContractError("New Brain source versions may only be pending or indexing", "invalid_version", "status");
131
+ }
132
+ const at = isoTimestamp(factory.now?.() ?? new Date(), "now", "invalid_version");
133
+ return normalizeVersionRecord({
134
+ ...input,
135
+ status,
136
+ metadata: input.metadata ?? {},
137
+ createdAt: at,
138
+ updatedAt: at,
139
+ });
140
+ }
141
+ export function normalizeBrainSourceVersion(value) {
142
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
143
+ throw new BrainContractError("Brain source version must be an object", "invalid_version");
144
+ }
145
+ return normalizeVersionRecord(value);
146
+ }
147
+ export function normalizeBrainCitation(value) {
148
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
149
+ throw new BrainContractError("Brain citation must be an object", "invalid_citation", "citation");
150
+ }
151
+ const candidate = value;
152
+ const uri = optionalText(candidate.uri, "citation.uri", 4_096, "invalid_citation");
153
+ if (uri) {
154
+ let parsed;
155
+ try {
156
+ parsed = new URL(uri);
157
+ }
158
+ catch {
159
+ throw new BrainContractError("citation.uri must be an absolute HTTP(S) URL", "invalid_citation", "citation.uri");
160
+ }
161
+ if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
162
+ throw new BrainContractError("citation.uri must use HTTP or HTTPS", "invalid_citation", "citation.uri");
163
+ }
164
+ }
165
+ const capturedAt = optionalTimestamp(candidate.capturedAt, "citation.capturedAt", "invalid_citation");
166
+ return Object.freeze({
167
+ sourceId: requiredText(candidate.sourceId, "citation.sourceId", 512, "invalid_citation"),
168
+ version: requiredText(candidate.version, "citation.version", 512, "invalid_citation"),
169
+ chunkId: requiredText(candidate.chunkId, "citation.chunkId", 512, "invalid_citation"),
170
+ label: requiredText(candidate.label, "citation.label", MAX_BRAIN_SOURCE_LABEL_CHARACTERS, "invalid_citation"),
171
+ ...(uri ? { uri } : {}),
172
+ ...(candidate.locator === undefined
173
+ ? {}
174
+ : {
175
+ locator: requiredText(candidate.locator, "citation.locator", 2_048, "invalid_citation"),
176
+ }),
177
+ ...(capturedAt ? { capturedAt } : {}),
178
+ });
179
+ }
180
+ export function createBrainChunk(input) {
181
+ if (!input || typeof input !== "object") {
182
+ throw new BrainContractError("Brain chunk input must be an object", "invalid_chunk");
183
+ }
184
+ const id = requiredText(input.id, "id", 512, "invalid_chunk");
185
+ const sourceId = requiredText(input.sourceId, "sourceId", 512, "invalid_chunk");
186
+ const version = requiredText(input.version, "version", 512, "invalid_chunk");
187
+ const citation = normalizeBrainCitation(input.citation);
188
+ if (citation.sourceId !== sourceId
189
+ || citation.version !== version
190
+ || citation.chunkId !== id) {
191
+ throw new BrainContractError("Brain chunk citation must reference the same chunk, source, and version", "invalid_chunk", "citation");
192
+ }
193
+ const tokenCount = input.tokenCount === undefined
194
+ ? undefined
195
+ : nonNegativeInteger(input.tokenCount, "tokenCount", "invalid_chunk", 1_000_000);
196
+ return Object.freeze({
197
+ id,
198
+ sourceId,
199
+ version,
200
+ index: nonNegativeInteger(input.index, "index", "invalid_chunk"),
201
+ content: requiredText(input.content, "content", MAX_BRAIN_CHUNK_CONTENT_CHARACTERS, "invalid_chunk"),
202
+ citation,
203
+ ...(tokenCount === undefined ? {} : { tokenCount }),
204
+ metadata: normalizeBrainMetadata(input.metadata),
205
+ });
206
+ }
207
+ export function normalizeBrainChunk(value) {
208
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
209
+ throw new BrainContractError("Brain chunk must be an object", "invalid_chunk");
210
+ }
211
+ return createBrainChunk(value);
212
+ }
213
+ function normalizeScores(value) {
214
+ if (value === undefined)
215
+ return Object.freeze({});
216
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
217
+ throw new BrainContractError("Brain retrieval scores must be an object", "invalid_retrieval_result", "scores");
218
+ }
219
+ const candidate = value;
220
+ const keyword = candidate.keyword === undefined
221
+ ? undefined
222
+ : finiteNumber(candidate.keyword, "scores.keyword", "invalid_retrieval_result");
223
+ const semantic = candidate.semantic === undefined
224
+ ? undefined
225
+ : finiteNumber(candidate.semantic, "scores.semantic", "invalid_retrieval_result");
226
+ const rerank = candidate.rerank === undefined
227
+ ? undefined
228
+ : finiteNumber(candidate.rerank, "scores.rerank", "invalid_retrieval_result");
229
+ return Object.freeze({
230
+ ...(keyword === undefined ? {} : { keyword }),
231
+ ...(semantic === undefined ? {} : { semantic }),
232
+ ...(rerank === undefined ? {} : { rerank }),
233
+ });
234
+ }
235
+ export function createBrainRetrievalResult(input) {
236
+ if (!input || typeof input !== "object") {
237
+ throw new BrainContractError("Brain retrieval result input must be an object", "invalid_retrieval_result");
238
+ }
239
+ return Object.freeze({
240
+ scope: normalizeBrainScope(input.scope),
241
+ chunk: normalizeBrainChunk(input.chunk),
242
+ score: finiteNumber(input.score, "score", "invalid_retrieval_result"),
243
+ scores: normalizeScores(input.scores),
244
+ trust: normalizeTrust(input.trust, "invalid_retrieval_result"),
245
+ });
246
+ }
247
+ function normalizeIngestionJobRecord(input) {
248
+ const status = enumValue(input.status, ingestionStatuses, "status", "invalid_ingestion_job", "ingestion job status");
249
+ const attempt = nonNegativeInteger(input.attempt, "attempt", "invalid_ingestion_job", 100);
250
+ const maxAttempts = positiveInteger(input.maxAttempts, "maxAttempts", "invalid_ingestion_job", 100);
251
+ if (attempt > maxAttempts) {
252
+ throw new BrainContractError("attempt cannot exceed maxAttempts", "invalid_ingestion_job", "attempt");
253
+ }
254
+ const claimedBy = optionalText(input.claimedBy, "claimedBy", 512, "invalid_ingestion_job");
255
+ const claimToken = optionalText(input.claimToken, "claimToken", 512, "invalid_ingestion_job");
256
+ const leaseExpiresAt = optionalTimestamp(input.leaseExpiresAt, "leaseExpiresAt", "invalid_ingestion_job");
257
+ if (status === "processing") {
258
+ if (!claimedBy || !claimToken || !leaseExpiresAt || attempt === 0) {
259
+ throw new BrainContractError("A processing Brain ingestion job requires a worker, claim token, lease, and positive attempt", "invalid_ingestion_job", "status");
260
+ }
261
+ }
262
+ else if (claimedBy || claimToken || leaseExpiresAt) {
263
+ throw new BrainContractError("Only a processing Brain ingestion job may retain claim state", "invalid_ingestion_job", "claimToken");
264
+ }
265
+ const failure = normalizeOptionalFailure(input.failure, "failure", "invalid_ingestion_job");
266
+ if (status === "failed" && !failure) {
267
+ throw new BrainContractError("A failed Brain ingestion job requires failure details", "invalid_ingestion_job", "failure");
268
+ }
269
+ if (status !== "failed" && failure) {
270
+ throw new BrainContractError("Only a failed Brain ingestion job may retain failure details", "invalid_ingestion_job", "failure");
271
+ }
272
+ const createdAt = isoTimestamp(input.createdAt, "createdAt", "invalid_ingestion_job");
273
+ const updatedAt = isoTimestamp(input.updatedAt, "updatedAt", "invalid_ingestion_job");
274
+ assertTimestampOrder(createdAt, updatedAt, "invalid_ingestion_job");
275
+ const availableAt = isoTimestamp(input.availableAt, "availableAt", "invalid_ingestion_job");
276
+ if (leaseExpiresAt && Date.parse(leaseExpiresAt) <= Date.parse(updatedAt)) {
277
+ throw new BrainContractError("leaseExpiresAt must follow updatedAt", "invalid_ingestion_job", "leaseExpiresAt");
278
+ }
279
+ const completedAt = optionalTimestamp(input.completedAt, "completedAt", "invalid_ingestion_job");
280
+ if (status === "completed" && !completedAt) {
281
+ throw new BrainContractError("A completed Brain ingestion job requires completedAt", "invalid_ingestion_job", "completedAt");
282
+ }
283
+ if (status !== "completed" && completedAt) {
284
+ throw new BrainContractError("Only a completed Brain ingestion job may have completedAt", "invalid_ingestion_job", "completedAt");
285
+ }
286
+ return Object.freeze({
287
+ id: requiredText(input.id, "id", 512, "invalid_ingestion_job"),
288
+ scope: normalizeBrainScope(input.scope),
289
+ sourceId: requiredText(input.sourceId, "sourceId", 512, "invalid_ingestion_job"),
290
+ version: requiredText(input.version, "version", 512, "invalid_ingestion_job"),
291
+ operation: enumValue(input.operation, ingestionOperations, "operation", "invalid_ingestion_job", "ingestion operation"),
292
+ dedupeKey: requiredText(input.dedupeKey, "dedupeKey", 1_024, "invalid_ingestion_job"),
293
+ status,
294
+ attempt,
295
+ maxAttempts,
296
+ availableAt,
297
+ ...(claimedBy ? { claimedBy } : {}),
298
+ ...(claimToken ? { claimToken } : {}),
299
+ ...(leaseExpiresAt ? { leaseExpiresAt } : {}),
300
+ ...(failure ? { failure } : {}),
301
+ createdAt,
302
+ updatedAt,
303
+ ...(completedAt ? { completedAt } : {}),
304
+ });
305
+ }
306
+ export function createBrainIngestionJob(input, factory = {}) {
307
+ if (!input || typeof input !== "object") {
308
+ throw new BrainContractError("Brain ingestion job input must be an object", "invalid_ingestion_job");
309
+ }
310
+ const at = isoTimestamp(factory.now?.() ?? input.updatedAt ?? input.createdAt ?? new Date(), "now", "invalid_ingestion_job");
311
+ return normalizeIngestionJobRecord({
312
+ ...input,
313
+ id: input.id ?? factory.createId?.() ?? `brain-job-${nanoid(16)}`,
314
+ status: input.status ?? "pending",
315
+ attempt: input.attempt ?? 0,
316
+ maxAttempts: input.maxAttempts ?? 3,
317
+ availableAt: input.availableAt ?? at,
318
+ createdAt: input.createdAt ?? at,
319
+ updatedAt: input.updatedAt ?? at,
320
+ });
321
+ }
322
+ export function normalizeBrainIngestionJob(value) {
323
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
324
+ throw new BrainContractError("Brain ingestion job must be an object", "invalid_ingestion_job");
325
+ }
326
+ return normalizeIngestionJobRecord(value);
327
+ }
328
+ export function normalizeBrainAccessDecision(value) {
329
+ const fallback = Object.freeze({
330
+ allowed: false,
331
+ reason: "invalid_policy_decision",
332
+ });
333
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
334
+ return fallback;
335
+ }
336
+ const candidate = value;
337
+ if (typeof candidate.allowed !== "boolean")
338
+ return fallback;
339
+ let reason;
340
+ try {
341
+ reason = requiredText(candidate.reason, "reason", 512, "invalid_access_decision");
342
+ }
343
+ catch {
344
+ return fallback;
345
+ }
346
+ let matchedScope;
347
+ if (candidate.matchedScope !== undefined) {
348
+ try {
349
+ matchedScope = normalizeBrainScope(candidate.matchedScope);
350
+ }
351
+ catch {
352
+ return fallback;
353
+ }
354
+ }
355
+ return Object.freeze({
356
+ allowed: candidate.allowed,
357
+ reason,
358
+ ...(matchedScope ? { matchedScope } : {}),
359
+ });
360
+ }
361
+ //# sourceMappingURL=contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/brain/contracts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export type BrainContractErrorCode = "invalid_access_decision" | "invalid_chunk" | "invalid_citation" | "invalid_ingestion_job" | "invalid_metadata" | "invalid_retrieval_result" | "invalid_scope" | "invalid_source" | "invalid_transition" | "invalid_version";
2
+ export declare class BrainContractError extends TypeError {
3
+ readonly code: BrainContractErrorCode;
4
+ readonly path?: string;
5
+ constructor(message: string, code: BrainContractErrorCode, path?: string);
6
+ }
7
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/brain/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,sBAAsB,GAC9B,yBAAyB,GACzB,eAAe,GACf,kBAAkB,GAClB,uBAAuB,GACvB,kBAAkB,GAClB,0BAA0B,GAC1B,eAAe,GACf,gBAAgB,GAChB,oBAAoB,GACpB,iBAAiB,CAAC;AAEtB,qBAAa,kBAAmB,SAAQ,SAAS;IAC/C,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;gBAGrB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,sBAAsB,EAC5B,IAAI,CAAC,EAAE,MAAM;CAOhB"}
@@ -0,0 +1,11 @@
1
+ export class BrainContractError extends TypeError {
2
+ code;
3
+ path;
4
+ constructor(message, code, path) {
5
+ super(message);
6
+ this.name = "BrainContractError";
7
+ this.code = code;
8
+ this.path = path;
9
+ }
10
+ }
11
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/brain/errors.ts"],"names":[],"mappings":"AAYA,MAAM,OAAO,kBAAmB,SAAQ,SAAS;IACtC,IAAI,CAAyB;IAC7B,IAAI,CAAU;IAEvB,YACE,OAAe,EACf,IAA4B,EAC5B,IAAa;QAEb,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF"}
@@ -0,0 +1,59 @@
1
+ import type { BrainEmbeddingProvider } from "./ports.js";
2
+ import type { BrainChunkStore, BrainIngestionJobStore, BrainSourceStore, BrainVersionStore } from "./stores.js";
3
+ import type { BrainCandidateSearchQuery, BrainChunk, BrainEnqueueResult, BrainIngestionJob, BrainJobClaimInput, BrainJobFailureInput, BrainJobMutationInput, BrainPublishVersionInput, BrainReplaceVersionChunksInput, BrainRetrievalResult, BrainScope, BrainSource, BrainSourceListQuery, BrainSourceListResult, BrainSourceRef, BrainSourceVersion, BrainStoreSnapshot, BrainVersionRef } from "./types.js";
4
+ export interface InMemoryBrainStoreOptions {
5
+ readonly snapshot?: BrainStoreSnapshot;
6
+ readonly now?: () => Date | string;
7
+ readonly createId?: () => string;
8
+ readonly embeddingProvider?: BrainEmbeddingProvider;
9
+ readonly embeddingFailureMode?: "fallback" | "strict";
10
+ }
11
+ export declare class InMemoryBrainStore implements BrainSourceStore, BrainVersionStore, BrainChunkStore, BrainIngestionJobStore {
12
+ private readonly sources;
13
+ private readonly versions;
14
+ private readonly chunks;
15
+ private readonly jobs;
16
+ private readonly jobsByDedupe;
17
+ private readonly vectors;
18
+ private readonly now;
19
+ private readonly createId;
20
+ private readonly embeddingProvider?;
21
+ private readonly embeddingFailureMode;
22
+ constructor(options?: InMemoryBrainStoreOptions);
23
+ private at;
24
+ private source;
25
+ private version;
26
+ createSource(value: BrainSource): Promise<BrainSource>;
27
+ getSource(ref: BrainSourceRef): Promise<BrainSource | null>;
28
+ listSources(query: BrainSourceListQuery): Promise<BrainSourceListResult>;
29
+ updateSource(value: BrainSource, options?: {
30
+ readonly expectedUpdatedAt?: string;
31
+ }): Promise<BrainSource>;
32
+ publishVersion(input: BrainPublishVersionInput): Promise<BrainSource>;
33
+ deleteSource(ref: BrainSourceRef): Promise<void>;
34
+ createVersion(scope: BrainScope, value: BrainSourceVersion): Promise<BrainSourceVersion>;
35
+ getVersion(ref: BrainVersionRef): Promise<BrainSourceVersion | null>;
36
+ listVersions(ref: BrainSourceRef): Promise<readonly BrainSourceVersion[]>;
37
+ updateVersion(scope: BrainScope, value: BrainSourceVersion, options?: {
38
+ readonly expectedUpdatedAt?: string;
39
+ }): Promise<BrainSourceVersion>;
40
+ deleteVersion(ref: BrainVersionRef): Promise<void>;
41
+ replaceVersionChunks(input: BrainReplaceVersionChunksInput): Promise<void>;
42
+ listVersionChunks(ref: BrainVersionRef): Promise<readonly BrainChunk[]>;
43
+ searchCandidates(query: BrainCandidateSearchQuery): Promise<readonly BrainRetrievalResult[]>;
44
+ deleteVersionChunks(ref: BrainVersionRef): Promise<void>;
45
+ deleteSourceChunks(ref: BrainSourceRef): Promise<void>;
46
+ enqueueJob(value: BrainIngestionJob): Promise<BrainEnqueueResult>;
47
+ getJob(ref: {
48
+ readonly scope: BrainScope;
49
+ readonly jobId: string;
50
+ }): Promise<BrainIngestionJob | null>;
51
+ claimNextJob(input: BrainJobClaimInput): Promise<BrainIngestionJob | null>;
52
+ private claimedJob;
53
+ completeJob(input: BrainJobMutationInput): Promise<BrainIngestionJob>;
54
+ failJob(input: BrainJobFailureInput): Promise<BrainIngestionJob>;
55
+ cancelJob(input: BrainJobMutationInput): Promise<BrainIngestionJob>;
56
+ snapshot(): BrainStoreSnapshot;
57
+ private restore;
58
+ }
59
+ //# sourceMappingURL=in-memory-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-memory-store.d.ts","sourceRoot":"","sources":["../../src/brain/in-memory-store.ts"],"names":[],"mappings":"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"}