@dsh-enhanced/assistant-memory-learning 0.0.0-stage → 0.1.53

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
package/lib/store.d.ts ADDED
@@ -0,0 +1,43 @@
1
+ import type { MemoryLearningReviewRequest } from '@dsh-enhanced/assistant-growth-contract';
2
+ import type { LearningCursor, LearningIntent, LearningJob, LearningSnapshot, LearningState } from './types.js';
3
+ type Feed = 'delivery' | 'evaluation';
4
+ type Grant = Readonly<{
5
+ authorityId: string;
6
+ configDigest: string;
7
+ maxExtractions: number;
8
+ }>;
9
+ export declare class LearningStoreError extends Error {
10
+ readonly code: 'invalid-input' | 'conflict' | 'corrupt' | 'closed';
11
+ constructor(code: 'invalid-input' | 'conflict' | 'corrupt' | 'closed', message: string);
12
+ }
13
+ export declare class LearningStore {
14
+ #private;
15
+ constructor(path: string, grant: Grant);
16
+ close(): void;
17
+ cursor(lane: string, feed: Feed): LearningCursor | undefined;
18
+ stage(input: {
19
+ lane: string;
20
+ feed: Feed;
21
+ cursor: LearningCursor;
22
+ sequence: number;
23
+ subject: string;
24
+ intent?: LearningIntent;
25
+ maxPending: number;
26
+ supersede?: boolean;
27
+ }): boolean;
28
+ get(id: string): LearningJob | undefined;
29
+ pending(lane: string): LearningJob[];
30
+ counts(lane: string): Record<LearningState, number>;
31
+ freeze(id: string, snapshotInput: LearningSnapshot): LearningJob;
32
+ bind(id: string, definitionHash: string): LearningJob;
33
+ claim(id: string, definitionHash: string, occurrenceId: string): LearningJob;
34
+ saveRequest(id: string, occurrenceId: string, requestInput: MemoryLearningReviewRequest): LearningJob;
35
+ settle(id: string, state: Extract<LearningState, 'adopted' | 'rejected' | 'noop' | 'failed' | 'unknown' | 'superseded'>, reason: string, resultDigest?: string, occurrenceId?: string): void;
36
+ interrupt(lane: string): void;
37
+ availability(): {
38
+ remainingExtractions: number;
39
+ available: boolean;
40
+ };
41
+ }
42
+ export {};
43
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,yCAAyC,CAAA;AAC1F,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE9G,KAAK,IAAI,GAAG,UAAU,GAAG,YAAY,CAAA;AACrC,KAAK,KAAK,GAAG,QAAQ,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAU5F,qBAAa,kBAAmB,SAAQ,KAAK;IAC/B,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ;gBAAzD,IAAI,EAAE,eAAe,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,EAAE,OAAO,EAAE,MAAM;CAGhG;AAsHD,qBAAa,aAAa;;gBAKZ,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK;IAkCtC,KAAK,IAAI,IAAI;IA4Db,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,cAAc,GAAG,SAAS;IAQ5D,KAAK,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,cAAc,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QACjG,MAAM,CAAC,EAAE,cAAc,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO;IAgD9E,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IACxC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE;IAMpC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC;IAQnD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,GAAG,WAAW;IAehE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,WAAW;IASrD,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,WAAW;IAa5E,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,2BAA2B,GAAG,WAAW;IAmBrG,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,aAAa,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,YAAY,CAAC,EACrH,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI;IAkBrE,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI7B,YAAY,IAAI;QAAE,oBAAoB,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE;CAIrE"}
package/lib/store.js ADDED
@@ -0,0 +1,524 @@
1
+ import { chmodSync, closeSync, constants, lstatSync, mkdirSync, openSync, realpathSync } from 'node:fs';
2
+ import { dirname, isAbsolute, normalize } from 'node:path';
3
+ import { DatabaseSync } from 'node:sqlite';
4
+ import { canonicalGrowthJson, growthObjectDigest, validateMemoryLearningOwner, validateMemoryLearningReviewRequest, } from '@dsh-enhanced/assistant-growth-contract';
5
+ const DIGEST = /^[a-f0-9]{64}$/u;
6
+ const ID = /^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$/u;
7
+ const ACTIVE = ['pending', 'queued', 'running', 'unknown'];
8
+ const TERMINAL = ['adopted', 'rejected', 'noop', 'failed', 'superseded'];
9
+ export class LearningStoreError extends Error {
10
+ code;
11
+ constructor(code, message) {
12
+ super(message);
13
+ this.code = code;
14
+ this.name = 'LearningStoreError';
15
+ }
16
+ }
17
+ function fail(code, message) { throw new LearningStoreError(code, message); }
18
+ function identifier(value, label) {
19
+ if (typeof value !== 'string' || !ID.test(value))
20
+ fail('invalid-input', `${label} is invalid`);
21
+ }
22
+ function digest(value, label) {
23
+ if (typeof value !== 'string' || !DIGEST.test(value))
24
+ fail('invalid-input', `${label} is invalid`);
25
+ }
26
+ function integer(value, label, minimum = 0) {
27
+ if (!Number.isSafeInteger(value) || value < minimum)
28
+ fail('invalid-input', `${label} is invalid`);
29
+ }
30
+ function fields(value, required, optional = []) {
31
+ if (!value || typeof value !== 'object' || Array.isArray(value)
32
+ || ![Object.prototype, null].includes(Object.getPrototypeOf(value)))
33
+ fail('invalid-input', 'object is invalid');
34
+ const descriptors = Object.getOwnPropertyDescriptors(value);
35
+ if (Reflect.ownKeys(value).some(key => typeof key !== 'string' || ![...required, ...optional].includes(key))
36
+ || required.some(key => !Object.hasOwn(descriptors, key))
37
+ || Object.values(descriptors).some(field => !field.enumerable || !('value' in field)))
38
+ fail('invalid-input', 'object fields are invalid');
39
+ return value;
40
+ }
41
+ function normalizedText(value, label, bytes) {
42
+ if (typeof value !== 'string' || value.length === 0 || value !== value.normalize('NFC').trim()
43
+ || !value.isWellFormed() || value.includes('\0') || Buffer.byteLength(value) > bytes)
44
+ fail('invalid-input', `${label} is invalid`);
45
+ }
46
+ function sourceText(value, label) {
47
+ if (typeof value !== 'string' || !value.trim() || !value.isWellFormed() || value.includes('\0')
48
+ || Buffer.byteLength(value) > 65_536)
49
+ fail('invalid-input', `${label} is invalid`);
50
+ }
51
+ function canonical(value) { return canonicalGrowthJson(value); }
52
+ function parse(value, label) {
53
+ try {
54
+ return JSON.parse(value);
55
+ }
56
+ catch {
57
+ return fail('corrupt', `${label} is invalid JSON`);
58
+ }
59
+ }
60
+ function safeIntent(input, grant) {
61
+ const raw = fields(input, ['configDigest', 'owner', 'kind', 'subject', 'inboxId', 'createdAt', 'expiresAt'], ['expectedSourceDigest', 'canonical']);
62
+ digest(raw.configDigest, 'configDigest');
63
+ if (raw.configDigest !== grant.configDigest)
64
+ fail('conflict', 'intent config digest differs from grant');
65
+ try {
66
+ validateMemoryLearningOwner(raw.owner);
67
+ }
68
+ catch {
69
+ return fail('invalid-input', 'owner is invalid');
70
+ }
71
+ // Extraction authority and Delivery owner route are independently configured.
72
+ // The immutable config digest fixes the complete owner, not equality of ids.
73
+ if (raw.kind !== 'fact' && raw.kind !== 'experience')
74
+ fail('invalid-input', 'kind is invalid');
75
+ identifier(raw.subject, 'subject');
76
+ identifier(raw.inboxId, 'inboxId');
77
+ integer(raw.createdAt, 'createdAt');
78
+ integer(raw.expiresAt, 'expiresAt', 1);
79
+ if (raw.expiresAt <= raw.createdAt)
80
+ fail('invalid-input', 'intent is already expired');
81
+ if (Object.hasOwn(raw, 'expectedSourceDigest'))
82
+ digest(raw.expectedSourceDigest, 'expectedSourceDigest');
83
+ if (Object.hasOwn(raw, 'canonical')) {
84
+ const item = fields(raw.canonical, ['outcomeId', 'version', 'digest', 'objectiveStatus']);
85
+ identifier(item.outcomeId, 'outcomeId');
86
+ integer(item.version, 'canonical version', 1);
87
+ digest(item.digest, 'canonical digest');
88
+ if (item.objectiveStatus !== 'achieved' && item.objectiveStatus !== 'not-achieved')
89
+ fail('invalid-input', 'objective status is invalid');
90
+ }
91
+ if (raw.kind === 'experience' && raw.canonical === undefined)
92
+ fail('invalid-input', 'experience needs canonical outcome');
93
+ return JSON.parse(canonical(input));
94
+ }
95
+ function safeCursor(feed, value, sequence) {
96
+ integer(sequence, 'sequence');
97
+ if (feed === 'delivery') {
98
+ const raw = fields(value, ['protocol', 'epoch', 'scopeKey', 'sequence']);
99
+ if (raw.protocol !== 'assistant-delivery/owner-foreground-source-cursor/v1')
100
+ fail('invalid-input', 'delivery cursor protocol is invalid');
101
+ identifier(raw.epoch, 'epoch');
102
+ normalizedText(raw.scopeKey, 'scopeKey', 512);
103
+ integer(raw.sequence, 'cursor sequence');
104
+ if (raw.sequence < sequence)
105
+ fail('invalid-input', 'delivery cursor precedes item');
106
+ }
107
+ else {
108
+ const raw = fields(value, ['scopeKey', 'watermark']);
109
+ normalizedText(raw.scopeKey, 'scopeKey', 512);
110
+ integer(raw.watermark, 'watermark');
111
+ if (raw.watermark < sequence)
112
+ fail('invalid-input', 'evaluation cursor precedes item');
113
+ }
114
+ return JSON.parse(canonical(value));
115
+ }
116
+ function safeSnapshot(input, intent) {
117
+ const raw = fields(input, ['model', 'source', 'ownerStatement', 'assistantReply', 'targets'], ['ownerFeedback']);
118
+ const model = fields(raw.model, ['provider', 'model'], ['reasoningEffort']);
119
+ for (const key of Object.keys(model))
120
+ normalizedText(model[key], `model ${key}`, 256);
121
+ const source = fields(raw.source, ['inboxId', 'sourceDigest', 'contentDigest'], ['canonical']);
122
+ identifier(source.inboxId, 'source inboxId');
123
+ digest(source.sourceDigest, 'sourceDigest');
124
+ digest(source.contentDigest, 'contentDigest');
125
+ if (source.inboxId !== intent.inboxId || (intent.expectedSourceDigest !== undefined && source.sourceDigest !== intent.expectedSourceDigest))
126
+ fail('conflict', 'snapshot source differs from intent');
127
+ if (Object.hasOwn(source, 'canonical')) {
128
+ const outcome = fields(source.canonical, ['outcomeId', 'version', 'digest', 'objectiveStatus']);
129
+ identifier(outcome.outcomeId, 'outcomeId');
130
+ integer(outcome.version, 'version', 1);
131
+ digest(outcome.digest, 'digest');
132
+ if (outcome.objectiveStatus !== 'achieved' && outcome.objectiveStatus !== 'not-achieved')
133
+ fail('invalid-input', 'objective status is invalid');
134
+ }
135
+ if (canonical(source.canonical ?? null) !== canonical(intent.canonical ?? null))
136
+ fail('conflict', 'snapshot canonical revision differs from intent');
137
+ sourceText(raw.ownerStatement, 'ownerStatement');
138
+ sourceText(raw.assistantReply, 'assistantReply');
139
+ if (Object.hasOwn(raw, 'ownerFeedback'))
140
+ sourceText(raw.ownerFeedback, 'ownerFeedback');
141
+ if (!Array.isArray(raw.targets) || raw.targets.length > 100)
142
+ fail('invalid-input', 'targets are invalid');
143
+ for (const target of raw.targets) {
144
+ const item = fields(target, ['id', 'version', 'kind', 'content'], ['knowledge']);
145
+ identifier(item.id, 'target id');
146
+ integer(item.version, 'target version', 1);
147
+ if (item.kind !== 'fact' && item.kind !== 'experience')
148
+ fail('invalid-input', 'target kind is invalid');
149
+ normalizedText(item.content, 'target content', 4096);
150
+ if (Object.hasOwn(item, 'knowledge'))
151
+ canonical(item.knowledge);
152
+ }
153
+ return JSON.parse(canonical(input));
154
+ }
155
+ function privateFile(path) {
156
+ const stat = lstatSync(path);
157
+ if (!stat.isFile() || stat.isSymbolicLink() || stat.nlink !== 1 || (stat.mode & 0o077) !== 0
158
+ || (process.getuid?.() !== undefined && stat.uid !== process.getuid?.()))
159
+ fail('corrupt', 'database file is not private');
160
+ }
161
+ function privatePaths(path) {
162
+ if (!isAbsolute(path) || normalize(path) !== path)
163
+ fail('invalid-input', 'database path is not canonical absolute');
164
+ const parent = dirname(path);
165
+ mkdirSync(parent, { recursive: true, mode: 0o700 });
166
+ const dir = lstatSync(parent);
167
+ if (!dir.isDirectory() || dir.isSymbolicLink() || realpathSync(parent) !== parent || (dir.mode & 0o077) !== 0
168
+ || (process.getuid?.() !== undefined && dir.uid !== process.getuid?.()))
169
+ fail('corrupt', 'database parent is not private');
170
+ try {
171
+ lstatSync(path);
172
+ }
173
+ catch (error) {
174
+ if (!error || typeof error !== 'object' || !('code' in error) || error.code !== 'ENOENT')
175
+ throw error;
176
+ closeSync(openSync(path, constants.O_CREAT | constants.O_EXCL | constants.O_RDWR | constants.O_NOFOLLOW, 0o600));
177
+ chmodSync(path, 0o600);
178
+ }
179
+ privateFile(path);
180
+ for (const suffix of ['-wal', '-shm']) {
181
+ try {
182
+ privateFile(`${path}${suffix}`);
183
+ }
184
+ catch (error) {
185
+ if (!error || typeof error !== 'object' || !('code' in error) || error.code !== 'ENOENT')
186
+ throw error;
187
+ }
188
+ }
189
+ }
190
+ export class LearningStore {
191
+ #db;
192
+ #grant;
193
+ #closed = false;
194
+ constructor(path, grant) {
195
+ const raw = fields(grant, ['authorityId', 'configDigest', 'maxExtractions']);
196
+ identifier(raw.authorityId, 'authorityId');
197
+ digest(raw.configDigest, 'configDigest');
198
+ integer(raw.maxExtractions, 'maxExtractions', 1);
199
+ this.#grant = { authorityId: raw.authorityId, configDigest: raw.configDigest, maxExtractions: raw.maxExtractions };
200
+ if (path !== ':memory:')
201
+ privatePaths(path);
202
+ this.#db = new DatabaseSync(path);
203
+ try {
204
+ this.#db.exec('PRAGMA foreign_keys=ON; PRAGMA busy_timeout=5000; PRAGMA synchronous=FULL;');
205
+ if (path !== ':memory:') {
206
+ const mode = this.#db.prepare('PRAGMA journal_mode=WAL').get();
207
+ if (mode.journal_mode.toLowerCase() !== 'wal')
208
+ fail('corrupt', 'WAL mode unavailable');
209
+ privatePaths(path);
210
+ }
211
+ const version = this.#db.prepare('PRAGMA user_version').get().user_version;
212
+ if (version === 0) {
213
+ if (this.#db.prepare("SELECT 1 FROM sqlite_master WHERE name NOT LIKE 'sqlite_%' LIMIT 1").get())
214
+ fail('corrupt', 'unversioned database contains objects');
215
+ this.#db.exec(`BEGIN IMMEDIATE;
216
+ CREATE TABLE grant_record (authority_id TEXT PRIMARY KEY, config_digest TEXT NOT NULL, max_extractions INTEGER NOT NULL, consumed INTEGER NOT NULL DEFAULT 0) STRICT;
217
+ CREATE TABLE cursors (lane TEXT NOT NULL, feed TEXT NOT NULL, cursor_json TEXT NOT NULL, sequence INTEGER NOT NULL, PRIMARY KEY(lane,feed)) STRICT, WITHOUT ROWID;
218
+ CREATE TABLE jobs (id TEXT PRIMARY KEY, lane TEXT NOT NULL, subject TEXT NOT NULL, intent_json TEXT NOT NULL, digest TEXT NOT NULL,
219
+ state TEXT NOT NULL, snapshot_json TEXT, definition_hash TEXT, occurrence_id TEXT, request_json TEXT, result_digest TEXT, reason TEXT) STRICT;
220
+ CREATE INDEX jobs_lane_state ON jobs(lane,state);
221
+ `);
222
+ this.#db.prepare('INSERT INTO grant_record(authority_id,config_digest,max_extractions,consumed) VALUES(?,?,?,0)')
223
+ .run(this.#grant.authorityId, this.#grant.configDigest, this.#grant.maxExtractions);
224
+ this.#db.exec('PRAGMA user_version=1; COMMIT;');
225
+ }
226
+ else if (version !== 1)
227
+ fail('corrupt', 'unsupported schema version');
228
+ this.#checkGrant();
229
+ const integrity = this.#db.prepare('PRAGMA quick_check').get();
230
+ if (integrity.quick_check !== 'ok')
231
+ fail('corrupt', 'database integrity check failed');
232
+ }
233
+ catch (error) {
234
+ this.#db.close();
235
+ throw error;
236
+ }
237
+ }
238
+ close() { if (!this.#closed) {
239
+ this.#closed = true;
240
+ this.#db.close();
241
+ } }
242
+ #checkGrant() {
243
+ if (this.#closed)
244
+ fail('closed', 'store is closed');
245
+ const row = this.#db.prepare('SELECT authority_id,config_digest,max_extractions,consumed FROM grant_record').all();
246
+ if (row.length !== 1 || row[0].authority_id !== this.#grant.authorityId
247
+ || row[0].config_digest !== this.#grant.configDigest || row[0].max_extractions !== this.#grant.maxExtractions)
248
+ fail('conflict', 'immutable grant differs');
249
+ integer(row[0].consumed, 'consumed');
250
+ if (row[0].consumed > this.#grant.maxExtractions)
251
+ fail('corrupt', 'extraction quota is corrupt');
252
+ return row[0].consumed;
253
+ }
254
+ #transaction(action) {
255
+ this.#checkGrant();
256
+ this.#db.exec('BEGIN IMMEDIATE');
257
+ try {
258
+ const result = action();
259
+ this.#db.exec('COMMIT');
260
+ return result;
261
+ }
262
+ catch (error) {
263
+ this.#db.exec('ROLLBACK');
264
+ throw error;
265
+ }
266
+ }
267
+ #job(row) {
268
+ identifier(row.lane, 'stored lane');
269
+ const intent = safeIntent(parse(row.intent_json, 'intent'), this.#grant);
270
+ const expectedId = this.#id(intent);
271
+ if (row.id !== expectedId || row.subject !== intent.subject || ![...ACTIVE, ...TERMINAL].includes(row.state))
272
+ fail('corrupt', 'stored job identity is invalid');
273
+ const snapshot = row.snapshot_json === null ? null : safeSnapshot(parse(row.snapshot_json, 'snapshot'), intent);
274
+ const expectedDigest = growthObjectDigest(snapshot === null ? intent : { intent, snapshot });
275
+ if (row.digest !== expectedDigest)
276
+ fail('corrupt', 'stored job digest differs');
277
+ if ((row.state === 'pending' && snapshot !== null)
278
+ || (['queued', 'running', 'unknown'].includes(row.state) && snapshot === null)
279
+ || (row.definition_hash !== null && !DIGEST.test(row.definition_hash))
280
+ || (row.occurrence_id !== null && !ID.test(row.occurrence_id)) || (row.result_digest !== null && !DIGEST.test(row.result_digest)))
281
+ fail('corrupt', 'stored job state is inconsistent');
282
+ if (row.definition_hash !== null && snapshot === null)
283
+ fail('corrupt', 'unfrozen job has definition');
284
+ if ((row.state === 'running' || row.state === 'unknown') && (row.definition_hash === null || row.occurrence_id === null))
285
+ fail('corrupt', 'claimed job lacks immutable binding');
286
+ if (row.state === 'queued' && (row.occurrence_id !== null || row.request_json !== null || row.reason !== null))
287
+ fail('corrupt', 'queued job has claim or settlement');
288
+ if (row.state === 'pending' && (row.definition_hash !== null || row.occurrence_id !== null
289
+ || row.request_json !== null || row.reason !== null))
290
+ fail('corrupt', 'pending job has claim or settlement');
291
+ if (TERMINAL.includes(row.state) && (row.reason === null || (!['superseded', 'failed'].includes(row.state)
292
+ && (snapshot === null || row.definition_hash === null || row.occurrence_id === null))))
293
+ fail('corrupt', 'terminal job lacks evidence or reason');
294
+ if (row.reason !== null)
295
+ normalizedText(row.reason, 'reason', 512);
296
+ if (row.request_json !== null && row.occurrence_id === null)
297
+ fail('corrupt', 'request lacks claim');
298
+ let request = null;
299
+ if (row.request_json !== null) {
300
+ try {
301
+ request = validateMemoryLearningReviewRequest(parse(row.request_json, 'request'));
302
+ }
303
+ catch {
304
+ return fail('corrupt', 'stored request is invalid');
305
+ }
306
+ if (canonical(request.owner) !== canonical(intent.owner) || canonical(request.source) !== canonical(snapshot.source)
307
+ || request.operationId !== row.id)
308
+ fail('corrupt', 'stored request binding differs');
309
+ }
310
+ return { id: row.id, intent, digest: row.digest, state: row.state, snapshot, definitionHash: row.definition_hash,
311
+ occurrenceId: row.occurrence_id, request, resultDigest: row.result_digest, reason: row.reason };
312
+ }
313
+ #id(intent) {
314
+ return `memory-learning:${growthObjectDigest({ authorityId: this.#grant.authorityId, kind: intent.kind,
315
+ subject: intent.subject, revision: intent.canonical ?? intent.expectedSourceDigest ?? intent.inboxId })}`;
316
+ }
317
+ #read(id) {
318
+ const row = this.#db.prepare('SELECT * FROM jobs WHERE id=?').get(id);
319
+ return row === undefined ? undefined : { ...this.#job(row), lane: row.lane };
320
+ }
321
+ cursor(lane, feed) {
322
+ this.#checkGrant();
323
+ identifier(lane, 'lane');
324
+ if (feed !== 'delivery' && feed !== 'evaluation')
325
+ fail('invalid-input', 'feed is invalid');
326
+ const row = this.#db.prepare('SELECT cursor_json,sequence FROM cursors WHERE lane=? AND feed=?').get(lane, feed);
327
+ if (!row)
328
+ return undefined;
329
+ try {
330
+ return safeCursor(feed, parse(row.cursor_json, 'cursor'), row.sequence);
331
+ }
332
+ catch {
333
+ return fail('corrupt', 'stored cursor is invalid');
334
+ }
335
+ }
336
+ stage(input) {
337
+ identifier(input.lane, 'lane');
338
+ identifier(input.subject, 'subject');
339
+ if (input.feed !== 'delivery' && input.feed !== 'evaluation')
340
+ fail('invalid-input', 'feed is invalid');
341
+ const cursor = safeCursor(input.feed, input.cursor, input.sequence);
342
+ integer(input.maxPending, 'maxPending', 1);
343
+ if (input.maxPending > 1000)
344
+ fail('invalid-input', 'maxPending exceeds bound');
345
+ const intent = input.intent === undefined ? undefined : safeIntent(input.intent, this.#grant);
346
+ if (intent && intent.subject !== input.subject)
347
+ fail('conflict', 'stage subject differs from intent');
348
+ if (input.supersede !== undefined && typeof input.supersede !== 'boolean')
349
+ fail('invalid-input', 'supersede is invalid');
350
+ return this.#transaction(() => {
351
+ const previous = this.cursor(input.lane, input.feed);
352
+ const previousRow = this.#db.prepare('SELECT cursor_json,sequence FROM cursors WHERE lane=? AND feed=?').get(input.lane, input.feed);
353
+ if (previous) {
354
+ if (previous.scopeKey !== cursor.scopeKey || ('epoch' in previous && 'epoch' in cursor && previous.epoch !== cursor.epoch))
355
+ fail('conflict', 'cursor scope or epoch changed');
356
+ if (input.sequence <= previousRow.sequence) {
357
+ if (input.sequence === previousRow.sequence && canonical(cursor) !== previousRow.cursor_json)
358
+ fail('conflict', 'cursor replay differs');
359
+ return true;
360
+ }
361
+ }
362
+ const proposedId = intent === undefined ? undefined : this.#id(intent);
363
+ const active = this.#db.prepare("SELECT id, state FROM jobs WHERE lane=? AND state IN ('pending','queued','running','unknown')").all(input.lane);
364
+ const superseded = input.supersede
365
+ ? active.filter(item => {
366
+ const previousJob = this.#read(item.id);
367
+ return previousJob.id !== proposedId && previousJob.intent.kind === 'experience' && previousJob.intent.subject === input.subject;
368
+ }) : [];
369
+ if (intent) {
370
+ const id = this.#id(intent);
371
+ const existing = this.#read(id);
372
+ if (existing && (existing.lane !== input.lane || canonical(existing.intent.owner) !== canonical(intent.owner)
373
+ || existing.intent.configDigest !== intent.configDigest || existing.intent.inboxId !== intent.inboxId
374
+ || existing.intent.kind !== intent.kind || canonical(existing.intent.canonical ?? null) !== canonical(intent.canonical ?? null)
375
+ || existing.intent.expectedSourceDigest !== intent.expectedSourceDigest))
376
+ fail('conflict', 'job identity collision');
377
+ if (!existing) {
378
+ if (active.length - superseded.length >= input.maxPending)
379
+ return false;
380
+ this.#db.prepare(`INSERT INTO jobs(id,lane,subject,intent_json,digest,state,snapshot_json,definition_hash,occurrence_id,request_json,result_digest,reason)
381
+ VALUES(?,?,?,?,?,'pending',NULL,NULL,NULL,NULL,NULL,NULL)`)
382
+ .run(id, input.lane, intent.subject, canonical(intent), growthObjectDigest(intent));
383
+ }
384
+ }
385
+ for (const old of superseded)
386
+ this.#db.prepare("UPDATE jobs SET state='superseded',reason='new-canonical-revision' WHERE id=?").run(old.id);
387
+ this.#db.prepare(`INSERT INTO cursors(lane,feed,cursor_json,sequence) VALUES(?,?,?,?)
388
+ ON CONFLICT(lane,feed) DO UPDATE SET cursor_json=excluded.cursor_json,sequence=excluded.sequence`)
389
+ .run(input.lane, input.feed, canonical(cursor), input.sequence);
390
+ return true;
391
+ });
392
+ }
393
+ get(id) { this.#checkGrant(); identifier(id, 'id'); const job = this.#read(id); if (!job)
394
+ return undefined; const { lane: _lane, ...result } = job; return result; }
395
+ pending(lane) {
396
+ this.#checkGrant();
397
+ identifier(lane, 'lane');
398
+ const rows = this.#db.prepare("SELECT * FROM jobs WHERE lane=? AND state IN ('pending','queued','running','unknown') ORDER BY rowid").all(lane);
399
+ if (rows.length > 1000)
400
+ fail('corrupt', 'pending set is unbounded');
401
+ return rows.map(row => this.#job(row));
402
+ }
403
+ counts(lane) {
404
+ this.#checkGrant();
405
+ identifier(lane, 'lane');
406
+ const counts = { pending: 0, queued: 0, running: 0, unknown: 0,
407
+ adopted: 0, rejected: 0, noop: 0, failed: 0, superseded: 0 };
408
+ const rows = this.#db.prepare('SELECT * FROM jobs WHERE lane=? ORDER BY rowid').all(lane);
409
+ for (const row of rows)
410
+ counts[this.#job(row).state]++;
411
+ return counts;
412
+ }
413
+ freeze(id, snapshotInput) {
414
+ identifier(id, 'id');
415
+ return this.#transaction(() => {
416
+ const job = this.#read(id);
417
+ if (!job)
418
+ fail('invalid-input', 'job not found');
419
+ const snapshot = safeSnapshot(snapshotInput, job.intent);
420
+ if (job.state !== 'pending') {
421
+ if (job.snapshot !== null && canonical(job.snapshot) === canonical(snapshot))
422
+ return job;
423
+ fail('conflict', 'job snapshot is immutable');
424
+ }
425
+ const frozenDigest = growthObjectDigest({ intent: job.intent, snapshot });
426
+ this.#db.prepare("UPDATE jobs SET snapshot_json=?,digest=?,state='queued' WHERE id=? AND state='pending'")
427
+ .run(canonical(snapshot), frozenDigest, id);
428
+ return this.#read(id);
429
+ });
430
+ }
431
+ bind(id, definitionHash) {
432
+ identifier(id, 'id');
433
+ digest(definitionHash, 'definitionHash');
434
+ return this.#transaction(() => {
435
+ const job = this.#read(id);
436
+ if (!job || job.state !== 'queued')
437
+ fail('conflict', 'job is not queued');
438
+ if (job.definitionHash && job.definitionHash !== definitionHash)
439
+ fail('conflict', 'definition is immutable');
440
+ if (!job.definitionHash)
441
+ this.#db.prepare('UPDATE jobs SET definition_hash=? WHERE id=?').run(definitionHash, id);
442
+ return this.#read(id);
443
+ });
444
+ }
445
+ claim(id, definitionHash, occurrenceId) {
446
+ identifier(id, 'id');
447
+ digest(definitionHash, 'definitionHash');
448
+ identifier(occurrenceId, 'occurrenceId');
449
+ return this.#transaction(() => {
450
+ const job = this.#read(id);
451
+ if (!job || job.state !== 'queued' || job.definitionHash !== definitionHash || job.occurrenceId !== null)
452
+ fail('conflict', 'job is not claimable');
453
+ const consumed = this.#checkGrant();
454
+ if (consumed >= this.#grant.maxExtractions)
455
+ fail('conflict', 'extraction quota exhausted');
456
+ this.#db.prepare('UPDATE grant_record SET consumed=consumed+1 WHERE authority_id=?').run(this.#grant.authorityId);
457
+ this.#db.prepare("UPDATE jobs SET state='running',occurrence_id=? WHERE id=? AND state='queued'").run(occurrenceId, id);
458
+ return this.#read(id);
459
+ });
460
+ }
461
+ saveRequest(id, occurrenceId, requestInput) {
462
+ identifier(id, 'id');
463
+ identifier(occurrenceId, 'occurrenceId');
464
+ let request;
465
+ try {
466
+ request = validateMemoryLearningReviewRequest(requestInput);
467
+ }
468
+ catch {
469
+ return fail('invalid-input', 'review request is invalid');
470
+ }
471
+ return this.#transaction(() => {
472
+ const job = this.#read(id);
473
+ if (!job || job.state !== 'running' || job.occurrenceId !== occurrenceId)
474
+ fail('conflict', 'claim is not running');
475
+ if (request.operationId !== id
476
+ || canonical(request.owner) !== canonical(job.intent.owner) || canonical(request.source) !== canonical(job.snapshot.source))
477
+ fail('conflict', 'review request differs from frozen source or session');
478
+ if (job.request !== null) {
479
+ if (canonical(job.request) !== canonical(request))
480
+ fail('conflict', 'review request is immutable');
481
+ return job;
482
+ }
483
+ this.#db.prepare('UPDATE jobs SET request_json=? WHERE id=? AND state=\'running\' AND request_json IS NULL')
484
+ .run(canonical(request), id);
485
+ return this.#read(id);
486
+ });
487
+ }
488
+ settle(id, state, reason, resultDigest, occurrenceId) {
489
+ identifier(id, 'id');
490
+ normalizedText(reason, 'reason', 512);
491
+ if (![...TERMINAL, 'unknown'].includes(state))
492
+ fail('invalid-input', 'settlement state is invalid');
493
+ if (resultDigest !== undefined)
494
+ digest(resultDigest, 'resultDigest');
495
+ if (occurrenceId !== undefined)
496
+ identifier(occurrenceId, 'occurrenceId');
497
+ this.#transaction(() => {
498
+ const job = this.#read(id);
499
+ if (!job)
500
+ fail('invalid-input', 'job not found');
501
+ if (occurrenceId !== undefined && job.occurrenceId !== occurrenceId)
502
+ fail('conflict', 'occurrence differs');
503
+ if (TERMINAL.includes(job.state)) {
504
+ if (job.state === state && job.reason === reason && job.resultDigest === (resultDigest ?? null))
505
+ return;
506
+ fail('conflict', 'terminal job is immutable');
507
+ }
508
+ if (state === 'unknown' && job.state !== 'running')
509
+ fail('conflict', 'only running jobs become unknown');
510
+ if (state !== 'superseded' && state !== 'failed' && state !== 'unknown' && job.state !== 'running' && job.state !== 'unknown')
511
+ fail('conflict', 'job has not been claimed');
512
+ this.#db.prepare('UPDATE jobs SET state=?,reason=?,result_digest=? WHERE id=?').run(state, reason, resultDigest ?? null, id);
513
+ });
514
+ }
515
+ interrupt(lane) {
516
+ identifier(lane, 'lane');
517
+ this.#transaction(() => { this.#db.prepare("UPDATE jobs SET state='unknown',reason='interrupted' WHERE lane=? AND state='running'").run(lane); });
518
+ }
519
+ availability() {
520
+ const remainingExtractions = this.#grant.maxExtractions - this.#checkGrant();
521
+ return { remainingExtractions, available: remainingExtractions > 0 };
522
+ }
523
+ }
524
+ //# sourceMappingURL=store.js.map