@lore-co/core 0.1.17 → 0.1.19

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 (60) hide show
  1. package/dist/auth-schemas.d.ts +92 -4
  2. package/dist/auth-schemas.d.ts.map +1 -1
  3. package/dist/auth-schemas.js +77 -0
  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 +5 -0
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +5 -0
  23. package/dist/index.js.map +1 -1
  24. package/dist/integration-contract.d.ts +612 -0
  25. package/dist/integration-contract.d.ts.map +1 -0
  26. package/dist/integration-contract.js +679 -0
  27. package/dist/integration-contract.js.map +1 -0
  28. package/dist/native-coding-agents.d.ts +1 -1
  29. package/dist/native-coding-agents.d.ts.map +1 -1
  30. package/dist/native-coding-agents.js +2 -0
  31. package/dist/native-coding-agents.js.map +1 -1
  32. package/dist/operational-metrics.d.ts +165 -0
  33. package/dist/operational-metrics.d.ts.map +1 -0
  34. package/dist/operational-metrics.js +216 -0
  35. package/dist/operational-metrics.js.map +1 -0
  36. package/dist/pilot-schemas.d.ts +80 -0
  37. package/dist/pilot-schemas.d.ts.map +1 -1
  38. package/dist/platform-admin-schemas.d.ts +171 -8
  39. package/dist/platform-admin-schemas.d.ts.map +1 -1
  40. package/dist/platform-admin-schemas.js +89 -1
  41. package/dist/platform-admin-schemas.js.map +1 -1
  42. package/dist/ports.d.ts +85 -8
  43. package/dist/ports.d.ts.map +1 -1
  44. package/dist/ports.js +231 -1
  45. package/dist/ports.js.map +1 -1
  46. package/dist/reliability-schemas.d.ts +723 -0
  47. package/dist/reliability-schemas.d.ts.map +1 -0
  48. package/dist/reliability-schemas.js +750 -0
  49. package/dist/reliability-schemas.js.map +1 -0
  50. package/dist/schemas.d.ts +205 -0
  51. package/dist/schemas.d.ts.map +1 -1
  52. package/dist/schemas.js +166 -1
  53. package/dist/schemas.js.map +1 -1
  54. package/dist/session-schemas.d.ts +80 -0
  55. package/dist/session-schemas.d.ts.map +1 -1
  56. package/dist/snapshot-schemas.d.ts +3503 -0
  57. package/dist/snapshot-schemas.d.ts.map +1 -0
  58. package/dist/snapshot-schemas.js +507 -0
  59. package/dist/snapshot-schemas.js.map +1 -0
  60. package/package.json +21 -1
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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"}