@lore-co/core 0.1.16 → 0.1.18

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 (56) hide show
  1. package/dist/auth-schemas.d.ts +11 -0
  2. package/dist/auth-schemas.d.ts.map +1 -1
  3. package/dist/auth-schemas.js +9 -1
  4. package/dist/auth-schemas.js.map +1 -1
  5. package/dist/canonical-json.d.ts +19 -0
  6. package/dist/canonical-json.d.ts.map +1 -0
  7. package/dist/canonical-json.js +228 -0
  8. package/dist/canonical-json.js.map +1 -0
  9. package/dist/conflict-detector.d.ts.map +1 -1
  10. package/dist/conflict-detector.js +30 -14
  11. package/dist/conflict-detector.js.map +1 -1
  12. package/dist/engine.d.ts +38 -6
  13. package/dist/engine.d.ts.map +1 -1
  14. package/dist/engine.js +118 -25
  15. package/dist/engine.js.map +1 -1
  16. package/dist/guard-schemas.d.ts +217 -1
  17. package/dist/guard-schemas.d.ts.map +1 -1
  18. package/dist/guard-schemas.js +92 -11
  19. package/dist/guard-schemas.js.map +1 -1
  20. package/dist/index.d.ts +6 -0
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +6 -0
  23. package/dist/index.js.map +1 -1
  24. package/dist/integration-contract.d.ts +498 -0
  25. package/dist/integration-contract.d.ts.map +1 -0
  26. package/dist/integration-contract.js +581 -0
  27. package/dist/integration-contract.js.map +1 -0
  28. package/dist/operational-metrics.d.ts +165 -0
  29. package/dist/operational-metrics.d.ts.map +1 -0
  30. package/dist/operational-metrics.js +216 -0
  31. package/dist/operational-metrics.js.map +1 -0
  32. package/dist/pilot-schemas.d.ts +80 -0
  33. package/dist/pilot-schemas.d.ts.map +1 -1
  34. package/dist/platform-admin-schemas.d.ts +408 -0
  35. package/dist/platform-admin-schemas.d.ts.map +1 -0
  36. package/dist/platform-admin-schemas.js +237 -0
  37. package/dist/platform-admin-schemas.js.map +1 -0
  38. package/dist/ports.d.ts +85 -8
  39. package/dist/ports.d.ts.map +1 -1
  40. package/dist/ports.js +231 -1
  41. package/dist/ports.js.map +1 -1
  42. package/dist/reliability-schemas.d.ts +723 -0
  43. package/dist/reliability-schemas.d.ts.map +1 -0
  44. package/dist/reliability-schemas.js +750 -0
  45. package/dist/reliability-schemas.js.map +1 -0
  46. package/dist/schemas.d.ts +205 -0
  47. package/dist/schemas.d.ts.map +1 -1
  48. package/dist/schemas.js +166 -1
  49. package/dist/schemas.js.map +1 -1
  50. package/dist/session-schemas.d.ts +80 -0
  51. package/dist/session-schemas.d.ts.map +1 -1
  52. package/dist/snapshot-schemas.d.ts +3503 -0
  53. package/dist/snapshot-schemas.d.ts.map +1 -0
  54. package/dist/snapshot-schemas.js +507 -0
  55. package/dist/snapshot-schemas.js.map +1 -0
  56. package/package.json +21 -1
package/dist/ports.d.ts CHANGED
@@ -1,4 +1,42 @@
1
1
  import type { AgentInteraction, AgentTask, CandidateMemory, DetectedMemoryConflict, InsertMemoryResult, ListMemoriesDto, ListMemoriesResponse, Memory, MemoryConflictAnalysis, MemoryConflict, MemoryScope, MemoryUpdate, ObserveResponse, ProposalMetadata, ProposalRecord, ProposeMemoryResult, ReviewProposalDto, ReviewProposalResponse, RetrievalHit, UpdateWorkspaceLearningPolicy, WorkspaceLearningPolicy } from "./schemas.js";
2
+ import type { ReliableGuardCheckResponse, ReliableObservationResponse, ReliableTurnResponse } from "./snapshot-schemas.js";
3
+ export declare const MAX_PROVIDER_RETRY_AFTER_MS: number;
4
+ export declare const MAX_EXTRACTION_PROVIDER_RESPONSE_BYTES: number;
5
+ export declare const MAX_EMBEDDING_PROVIDER_RESPONSE_BYTES: number;
6
+ export declare const MAX_EXTRACTED_MEMORY_CANDIDATES = 100;
7
+ export type ProviderFailureKind = "caller_aborted" | "deadline_exceeded" | "authentication" | "rate_limited" | "unavailable" | "rejected" | "malformed_response" | "dimension_mismatch" | "configuration";
8
+ export interface ProviderCallOptions {
9
+ signal?: AbortSignal;
10
+ /** Absolute Unix timestamp in milliseconds. */
11
+ deadlineAt?: number;
12
+ }
13
+ export declare class ProviderError extends Error {
14
+ readonly kind: ProviderFailureKind;
15
+ readonly code: ProviderFailureKind;
16
+ readonly retryable: boolean;
17
+ readonly statusCode: number | null;
18
+ readonly status: number | null;
19
+ readonly retryAfterMs: number | null;
20
+ /** Bounded retry delay in milliseconds. */
21
+ readonly retryAfter: number | null;
22
+ constructor(kind: ProviderFailureKind, options?: {
23
+ statusCode?: number;
24
+ retryAfterMs?: number | null;
25
+ cause?: unknown;
26
+ });
27
+ }
28
+ export interface ProviderCallSignal {
29
+ signal: AbortSignal;
30
+ deadlineAt: number;
31
+ deadlineSignal: AbortSignal;
32
+ }
33
+ export declare function createProviderCallSignal(options: ProviderCallOptions, defaultTimeoutMs: number): ProviderCallSignal;
34
+ export declare function providerAbortError(reason?: unknown): ProviderError;
35
+ export declare function normalizeProviderCallError(error: unknown, options: ProviderCallOptions, call: ProviderCallSignal): unknown;
36
+ export declare function parseProviderRetryAfter(value: string | null | undefined, now?: number): number | null;
37
+ export declare function providerErrorFromHttpStatus(statusCode: number, retryAfter?: string | null): ProviderError;
38
+ export declare function isProviderError(error: unknown): error is ProviderError;
39
+ export declare function readBoundedProviderJson(response: Response, maximumBytes: number): Promise<unknown>;
2
40
  export interface FindActiveCandidatesOptions {
3
41
  workspaceId?: string;
4
42
  keywords?: readonly string[];
@@ -11,10 +49,21 @@ export interface SupersedeMemoryResult {
11
49
  memory: Memory;
12
50
  supersededMemory: Memory;
13
51
  }
52
+ export interface MemoryMutationFence {
53
+ type: "background_job_claim";
54
+ workspaceId: string;
55
+ jobId: string;
56
+ claimToken: string;
57
+ jobKind: "capture_extract" | "memory_embed";
58
+ }
59
+ export declare class MemoryMutationFenceLostError extends Error {
60
+ constructor();
61
+ }
14
62
  export interface RepositoryContext {
15
63
  workspaceId?: string;
64
+ mutationFence?: MemoryMutationFence;
16
65
  }
17
- export interface WorkspaceRepositoryContext {
66
+ export interface WorkspaceRepositoryContext extends ProviderCallOptions {
18
67
  workspaceId: string;
19
68
  }
20
69
  export interface MemoryConflictDetectionInput {
@@ -29,15 +78,15 @@ export interface MemoryConflictAnalyzer {
29
78
  analyze(input: {
30
79
  proposal: Memory;
31
80
  target: Memory;
32
- }): Promise<MemoryConflictAnalysis>;
81
+ }, options?: ProviderCallOptions): Promise<MemoryConflictAnalysis>;
33
82
  }
34
83
  export interface InsertMemoryConflictResult {
35
84
  conflict: MemoryConflict;
36
85
  inserted: boolean;
37
86
  }
38
87
  export interface MemoryRepository {
39
- insert(memory: Memory): Promise<InsertMemoryResult>;
40
- propose(memory: Memory, metadata: ProposalMetadata, conflicts?: readonly MemoryConflict[]): Promise<ProposeMemoryResult>;
88
+ insert(memory: Memory, context?: RepositoryContext): Promise<InsertMemoryResult>;
89
+ propose(memory: Memory, metadata: ProposalMetadata, conflicts?: readonly MemoryConflict[], context?: RepositoryContext): Promise<ProposeMemoryResult>;
41
90
  get(id: string, context?: RepositoryContext): Promise<Memory | null>;
42
91
  getProposal(memoryId: string, context?: RepositoryContext): Promise<ProposalRecord | null>;
43
92
  addProposalConflict(conflict: MemoryConflict, context: WorkspaceRepositoryContext): Promise<InsertMemoryConflictResult>;
@@ -50,18 +99,31 @@ export interface MemoryRepository {
50
99
  findActiveScopeCandidates(scope: MemoryScope, options?: FindActiveCandidatesOptions): Promise<Memory[]>;
51
100
  supersede(memoryId: string, replacement: Memory, context?: RepositoryContext): Promise<SupersedeMemoryResult>;
52
101
  }
102
+ export interface MemoryExtractionOptions extends ProviderCallOptions {
103
+ /**
104
+ * Durable processors need provider failures so they can apply the job
105
+ * retry/dead-letter policy. Interactive callers retain hybrid fallback.
106
+ */
107
+ propagateProviderErrors?: boolean;
108
+ }
53
109
  export interface MemoryExtractor {
54
- extract(interaction: AgentInteraction): Promise<CandidateMemory[]>;
110
+ extract(interaction: AgentInteraction, options?: MemoryExtractionOptions): Promise<CandidateMemory[]>;
55
111
  }
56
112
  export interface LearningExtractor extends MemoryExtractor {
57
113
  }
58
114
  export interface MemoryRetriever {
59
- retrieve(task: AgentTask, context?: {
60
- workspaceId?: string;
61
- }): Promise<RetrievalHit[]>;
115
+ retrieve(task: AgentTask, context?: RetrievalContext): Promise<RetrievalHit[]>;
116
+ retrieveWithDiagnostics?(task: AgentTask, context?: RetrievalContext): Promise<RetrievalExecution>;
62
117
  }
63
118
  export interface LearningRetriever extends MemoryRetriever {
64
119
  }
120
+ export interface RetrievalContext extends ProviderCallOptions {
121
+ workspaceId?: string;
122
+ }
123
+ export interface RetrievalExecution {
124
+ hits: RetrievalHit[];
125
+ mode: "hybrid" | "lexical_only" | "semantic_unavailable";
126
+ }
65
127
  export interface AgentAdapter<TInteraction = unknown, TTask = unknown, TPreparedTask = unknown> {
66
128
  readonly id: string;
67
129
  observe(input: TInteraction): Promise<ObserveResponse>;
@@ -71,4 +133,19 @@ export interface AgentAdapter<TInteraction = unknown, TTask = unknown, TPrepared
71
133
  toInteraction?(input: TInteraction): AgentInteraction | Promise<AgentInteraction>;
72
134
  toTask?(input: TTask): AgentTask | Promise<AgentTask>;
73
135
  }
136
+ /**
137
+ * Vendor-neutral Reliability v1 capture operations. Hosts retain ownership of
138
+ * their event boundary, stable identities, and any local queue.
139
+ */
140
+ export interface ReliableCaptureAdapter<TObservationInput = unknown, TTurnInput = unknown> {
141
+ observeEventReliable(input: TObservationInput): Promise<ReliableObservationResponse>;
142
+ processTurnReliable(input: TTurnInput, idempotencyKey?: string): Promise<ReliableTurnResponse>;
143
+ }
144
+ /**
145
+ * Vendor-neutral Reliability v1 Guard operation. Implementing this port does
146
+ * not by itself claim that a host has a mutation boundary or can enforce it.
147
+ */
148
+ export interface ReliableGuardAdapter<TGuardInput = unknown> {
149
+ guardCheckReliable(input: TGuardInput): Promise<ReliableGuardCheckResponse>;
150
+ }
74
151
  //# sourceMappingURL=ports.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../src/ports.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../src/ports.ts"],"names":[],"mappings":"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"}
package/dist/ports.js CHANGED
@@ -1,2 +1,232 @@
1
- export {};
1
+ export const MAX_PROVIDER_RETRY_AFTER_MS = 24 * 60 * 60_000;
2
+ export const MAX_EXTRACTION_PROVIDER_RESPONSE_BYTES = 1024 * 1024;
3
+ export const MAX_EMBEDDING_PROVIDER_RESPONSE_BYTES = 512 * 1024;
4
+ export const MAX_EXTRACTED_MEMORY_CANDIDATES = 100;
5
+ const PROVIDER_FAILURE_MESSAGES = {
6
+ caller_aborted: "Provider request was cancelled.",
7
+ deadline_exceeded: "Provider request exceeded its deadline.",
8
+ authentication: "Provider authentication failed.",
9
+ rate_limited: "Provider rate limit was reached.",
10
+ unavailable: "Provider is temporarily unavailable.",
11
+ rejected: "Provider rejected the request.",
12
+ malformed_response: "Provider returned an invalid response.",
13
+ dimension_mismatch: "Provider returned an unexpected embedding size.",
14
+ configuration: "Provider configuration is invalid.",
15
+ };
16
+ const RETRYABLE_PROVIDER_FAILURES = new Set([
17
+ "deadline_exceeded",
18
+ "rate_limited",
19
+ "unavailable",
20
+ ]);
21
+ const NETWORK_ERROR_CODES = new Set([
22
+ "ECONNABORTED",
23
+ "ECONNREFUSED",
24
+ "ECONNRESET",
25
+ "EHOSTUNREACH",
26
+ "ENETDOWN",
27
+ "ENETUNREACH",
28
+ "ENOTFOUND",
29
+ "EPIPE",
30
+ "ETIMEDOUT",
31
+ "UND_ERR_CONNECT_TIMEOUT",
32
+ "UND_ERR_HEADERS_TIMEOUT",
33
+ "UND_ERR_SOCKET",
34
+ ]);
35
+ export class ProviderError extends Error {
36
+ kind;
37
+ code;
38
+ retryable;
39
+ statusCode;
40
+ status;
41
+ retryAfterMs;
42
+ /** Bounded retry delay in milliseconds. */
43
+ retryAfter;
44
+ constructor(kind, options = {}) {
45
+ super(PROVIDER_FAILURE_MESSAGES[kind], {
46
+ ...(options.cause === undefined ? {} : { cause: options.cause }),
47
+ });
48
+ this.name = "ProviderError";
49
+ this.kind = kind;
50
+ this.code = kind;
51
+ this.retryable = RETRYABLE_PROVIDER_FAILURES.has(kind);
52
+ this.statusCode =
53
+ options.statusCode !== undefined &&
54
+ Number.isInteger(options.statusCode) &&
55
+ options.statusCode >= 100 &&
56
+ options.statusCode <= 599
57
+ ? options.statusCode
58
+ : null;
59
+ this.status = this.statusCode;
60
+ this.retryAfterMs =
61
+ options.retryAfterMs !== undefined &&
62
+ options.retryAfterMs !== null &&
63
+ Number.isFinite(options.retryAfterMs) &&
64
+ options.retryAfterMs >= 0
65
+ ? Math.min(Math.ceil(options.retryAfterMs), MAX_PROVIDER_RETRY_AFTER_MS)
66
+ : null;
67
+ this.retryAfter = this.retryAfterMs;
68
+ }
69
+ }
70
+ export function createProviderCallSignal(options, defaultTimeoutMs) {
71
+ if (!Number.isInteger(defaultTimeoutMs) || defaultTimeoutMs < 1) {
72
+ throw new ProviderError("configuration");
73
+ }
74
+ if (options.deadlineAt !== undefined &&
75
+ (!Number.isFinite(options.deadlineAt) || options.deadlineAt < 0)) {
76
+ throw new ProviderError("configuration");
77
+ }
78
+ if (options.signal?.aborted === true) {
79
+ throw providerAbortError(options.signal.reason);
80
+ }
81
+ const deadlineAt = Math.min(Date.now() + defaultTimeoutMs, options.deadlineAt ?? Number.POSITIVE_INFINITY);
82
+ const remainingMs = Math.ceil(deadlineAt - Date.now());
83
+ if (remainingMs <= 0) {
84
+ throw new ProviderError("deadline_exceeded");
85
+ }
86
+ const deadlineSignal = AbortSignal.timeout(Math.min(remainingMs, 2_147_483_647));
87
+ return {
88
+ deadlineAt,
89
+ deadlineSignal,
90
+ signal: options.signal === undefined
91
+ ? deadlineSignal
92
+ : AbortSignal.any([options.signal, deadlineSignal]),
93
+ };
94
+ }
95
+ export function providerAbortError(reason) {
96
+ return new ProviderError(reason instanceof Error && reason.name === "TimeoutError"
97
+ ? "deadline_exceeded"
98
+ : "caller_aborted", { ...(reason === undefined ? {} : { cause: reason }) });
99
+ }
100
+ export function normalizeProviderCallError(error, options, call) {
101
+ if (error instanceof ProviderError) {
102
+ return error;
103
+ }
104
+ if (options.signal?.aborted === true) {
105
+ return providerAbortError(options.signal.reason);
106
+ }
107
+ if (call.deadlineSignal.aborted || Date.now() >= call.deadlineAt) {
108
+ return new ProviderError("deadline_exceeded", { cause: error });
109
+ }
110
+ for (let current = error, depth = 0; current !== undefined && depth < 5; depth += 1) {
111
+ const code = typeof current === "object" &&
112
+ current !== null &&
113
+ "code" in current &&
114
+ typeof current.code === "string"
115
+ ? current.code.toUpperCase()
116
+ : null;
117
+ if (code !== null && NETWORK_ERROR_CODES.has(code)) {
118
+ return new ProviderError("unavailable", { cause: error });
119
+ }
120
+ current =
121
+ typeof current === "object" &&
122
+ current !== null &&
123
+ "cause" in current
124
+ ? current.cause
125
+ : undefined;
126
+ }
127
+ if (error instanceof TypeError &&
128
+ /\b(?:fetch failed|network|socket|connection)\b/iu.test(error.message)) {
129
+ return new ProviderError("unavailable", { cause: error });
130
+ }
131
+ return error;
132
+ }
133
+ export function parseProviderRetryAfter(value, now = Date.now()) {
134
+ const normalized = value?.trim();
135
+ if (normalized === undefined || normalized === "") {
136
+ return null;
137
+ }
138
+ const seconds = Number(normalized);
139
+ const delay = Number.isFinite(seconds)
140
+ ? Math.ceil(seconds * 1_000)
141
+ : Date.parse(normalized) - now;
142
+ if (!Number.isFinite(delay) || delay < 0) {
143
+ return null;
144
+ }
145
+ return Math.min(delay, MAX_PROVIDER_RETRY_AFTER_MS);
146
+ }
147
+ export function providerErrorFromHttpStatus(statusCode, retryAfter) {
148
+ if (!Number.isInteger(statusCode) || statusCode < 100 || statusCode > 599) {
149
+ return new ProviderError("malformed_response");
150
+ }
151
+ if (statusCode === 401 || statusCode === 403) {
152
+ return new ProviderError("authentication", { statusCode });
153
+ }
154
+ if (statusCode === 408) {
155
+ return new ProviderError("deadline_exceeded", { statusCode });
156
+ }
157
+ if (statusCode === 429) {
158
+ return new ProviderError("rate_limited", {
159
+ statusCode,
160
+ retryAfterMs: parseProviderRetryAfter(retryAfter),
161
+ });
162
+ }
163
+ if (statusCode === 425 || statusCode >= 500) {
164
+ return new ProviderError("unavailable", {
165
+ statusCode,
166
+ retryAfterMs: parseProviderRetryAfter(retryAfter),
167
+ });
168
+ }
169
+ return new ProviderError("rejected", { statusCode });
170
+ }
171
+ export function isProviderError(error) {
172
+ return error instanceof ProviderError;
173
+ }
174
+ export async function readBoundedProviderJson(response, maximumBytes) {
175
+ if (!Number.isInteger(maximumBytes) || maximumBytes < 1) {
176
+ throw new ProviderError("configuration");
177
+ }
178
+ const declaredLength = response.headers.get("content-length");
179
+ if (declaredLength !== null &&
180
+ Number.isFinite(Number(declaredLength)) &&
181
+ Number(declaredLength) > maximumBytes) {
182
+ await response.body?.cancel();
183
+ throw new ProviderError("malformed_response");
184
+ }
185
+ const reader = response.body?.getReader();
186
+ if (reader === undefined) {
187
+ throw new ProviderError("malformed_response");
188
+ }
189
+ const chunks = [];
190
+ let total = 0;
191
+ try {
192
+ while (true) {
193
+ const chunk = await reader.read();
194
+ if (chunk.done) {
195
+ break;
196
+ }
197
+ total += chunk.value.byteLength;
198
+ if (total > maximumBytes) {
199
+ await reader.cancel();
200
+ throw new ProviderError("malformed_response");
201
+ }
202
+ chunks.push(chunk.value);
203
+ }
204
+ const bytes = new Uint8Array(total);
205
+ let offset = 0;
206
+ for (const chunk of chunks) {
207
+ bytes.set(chunk, offset);
208
+ offset += chunk.byteLength;
209
+ }
210
+ return JSON.parse(new TextDecoder("utf-8", { fatal: true }).decode(bytes));
211
+ }
212
+ catch (error) {
213
+ if (error instanceof ProviderError) {
214
+ throw error;
215
+ }
216
+ if (error instanceof Error &&
217
+ (error.name === "AbortError" || error.name === "TimeoutError")) {
218
+ throw error;
219
+ }
220
+ throw new ProviderError("malformed_response", { cause: error });
221
+ }
222
+ finally {
223
+ reader.releaseLock();
224
+ }
225
+ }
226
+ export class MemoryMutationFenceLostError extends Error {
227
+ constructor() {
228
+ super("Memory mutation claim is no longer active");
229
+ this.name = "MemoryMutationFenceLostError";
230
+ }
231
+ }
2
232
  //# sourceMappingURL=ports.js.map
package/dist/ports.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ports.js","sourceRoot":"","sources":["../src/ports.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"ports.js","sourceRoot":"","sources":["../src/ports.ts"],"names":[],"mappings":"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"}