@pellux/goodvibes-daemon-sdk 0.38.0 → 1.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.
- package/dist/artifact-upload.d.ts.map +1 -1
- package/dist/artifact-upload.js +53 -2
- package/dist/context.d.ts +17 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/control-routes.d.ts.map +1 -1
- package/dist/control-routes.js +12 -3
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/integration-route-types.d.ts +62 -0
- package/dist/integration-route-types.d.ts.map +1 -1
- package/dist/integration-routes.d.ts.map +1 -1
- package/dist/integration-routes.js +45 -0
- package/dist/memory-record-body.d.ts +22 -0
- package/dist/memory-record-body.d.ts.map +1 -0
- package/dist/memory-record-body.js +110 -0
- package/dist/operator.js +15 -0
- package/dist/runtime-route-types.d.ts +46 -3
- package/dist/runtime-route-types.d.ts.map +1 -1
- package/dist/runtime-session-lifecycle-routes.d.ts +14 -0
- package/dist/runtime-session-lifecycle-routes.d.ts.map +1 -0
- package/dist/runtime-session-lifecycle-routes.js +68 -0
- package/dist/runtime-session-register.d.ts +9 -0
- package/dist/runtime-session-register.d.ts.map +1 -0
- package/dist/runtime-session-register.js +56 -0
- package/dist/runtime-session-routes.d.ts +40 -8
- package/dist/runtime-session-routes.d.ts.map +1 -1
- package/dist/runtime-session-routes.js +100 -65
- package/dist/sessions.d.ts.map +1 -1
- package/dist/sessions.js +16 -5
- package/dist/system-route-types.d.ts +48 -0
- package/dist/system-route-types.d.ts.map +1 -1
- package/dist/system-routes.d.ts.map +1 -1
- package/dist/system-routes.js +59 -7
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifact-upload.d.ts","sourceRoot":"","sources":["../src/artifact-upload.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE7D,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzD,WAAW,CAAC,IAAI,MAAM,CAAC;IACvB,gBAAgB,CAAC,CAAC,KAAK,EAAE;QACvB,QAAQ,CAAC,MAAM,EACX,cAAc,CAAC,UAAU,CAAC,GAC1B,aAAa,CAAC,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC,GAC3C,QAAQ,CAAC,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;QAC3C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACxC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACxC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1C,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC9C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;KACzD,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;CACzC;
|
|
1
|
+
{"version":3,"file":"artifact-upload.d.ts","sourceRoot":"","sources":["../src/artifact-upload.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE7D,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzD,WAAW,CAAC,IAAI,MAAM,CAAC;IACvB,gBAAgB,CAAC,CAAC,KAAK,EAAE;QACvB,QAAQ,CAAC,MAAM,EACX,cAAc,CAAC,UAAU,CAAC,GAC1B,aAAa,CAAC,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC,GAC3C,QAAQ,CAAC,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;QAC3C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACxC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACxC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1C,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC9C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;KACzD,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;CACzC;AAsED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAGrE;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAE7D;AAED,wBAAsB,+BAA+B,CACnD,aAAa,EAAE,uBAAuB,EACtC,GAAG,EAAE,OAAO,GACX,OAAO,CAAC,oBAAoB,GAAG,QAAQ,CAAC,CAM1C"}
|
package/dist/artifact-upload.js
CHANGED
|
@@ -22,6 +22,46 @@ function artifactSizeError(maxBytes) {
|
|
|
22
22
|
code: 'ARTIFACT_UPLOAD_TOO_LARGE',
|
|
23
23
|
});
|
|
24
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Reads and discards a request body reader to completion.
|
|
27
|
+
*
|
|
28
|
+
* Bun (and Node) keep-alive connection reuse depends on the previous
|
|
29
|
+
* request's body having been fully read off the wire. `stream.cancel()`
|
|
30
|
+
* signals "stop delivering chunks to me" but does not, in practice, drain the
|
|
31
|
+
* underlying connection buffer — leaving the connection's NEXT request
|
|
32
|
+
* stalled for several seconds waiting for the runtime to notice the
|
|
33
|
+
* connection is actually free (verified directly against a bare
|
|
34
|
+
* `Bun.serve()`, no SDK code involved: cancelling left a follow-up request on
|
|
35
|
+
* the same connection stuck for ~12s; fully draining resolved it to ~0ms).
|
|
36
|
+
* Best-effort: a drain failure must not mask the original 413.
|
|
37
|
+
*/
|
|
38
|
+
async function drainReader(reader) {
|
|
39
|
+
try {
|
|
40
|
+
for (;;) {
|
|
41
|
+
const { done } = await reader.read();
|
|
42
|
+
if (done)
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// Best-effort.
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async function drainUnreadBody(body) {
|
|
51
|
+
if (!body)
|
|
52
|
+
return;
|
|
53
|
+
const reader = body.getReader();
|
|
54
|
+
try {
|
|
55
|
+
await drainReader(reader);
|
|
56
|
+
}
|
|
57
|
+
finally {
|
|
58
|
+
reader.releaseLock();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
async function earlyOversizeResponse(maxBytes, body) {
|
|
62
|
+
await drainUnreadBody(body);
|
|
63
|
+
return jsonErrorResponse({ error: `Artifact exceeds the ${maxBytes}-byte limit.` }, { status: 413 });
|
|
64
|
+
}
|
|
25
65
|
export function isJsonContentType(contentType) {
|
|
26
66
|
const lower = (contentType ?? '').split(';')[0]?.trim().toLowerCase() ?? '';
|
|
27
67
|
return lower === '' || lower === 'application/json' || lower.endsWith('+json');
|
|
@@ -160,7 +200,12 @@ async function createArtifactFromStreamingMultipart(artifactStore, req) {
|
|
|
160
200
|
return artifactId instanceof Response ? artifactId : { artifact, artifactId, fields: spooled.fields };
|
|
161
201
|
}
|
|
162
202
|
catch (error) {
|
|
163
|
-
|
|
203
|
+
// spoolMultipartUpload drains any unread body bytes itself (both the
|
|
204
|
+
// Content-Length precheck and the mid-read catch) before rethrowing, so
|
|
205
|
+
// the connection is left healthy for reuse regardless of which error
|
|
206
|
+
// this is.
|
|
207
|
+
const status = error instanceof GoodVibesSdkError && error.status ? error.status : 400;
|
|
208
|
+
return jsonErrorResponse(error, { status });
|
|
164
209
|
}
|
|
165
210
|
finally {
|
|
166
211
|
await spooled?.cleanup();
|
|
@@ -175,7 +220,7 @@ async function createArtifactFromRawBody(artifactStore, req) {
|
|
|
175
220
|
const maxBytes = artifactStore.getMaxBytes?.();
|
|
176
221
|
const sizeBytes = readContentLength(req);
|
|
177
222
|
if (typeof maxBytes === 'number' && typeof sizeBytes === 'number' && sizeBytes > maxBytes) {
|
|
178
|
-
return
|
|
223
|
+
return earlyOversizeResponse(maxBytes, req.body);
|
|
179
224
|
}
|
|
180
225
|
const artifact = await createArtifactFromStream(artifactStore, {
|
|
181
226
|
stream: req.body,
|
|
@@ -293,6 +338,7 @@ async function spoolMultipartUpload(req, maxFileBytes) {
|
|
|
293
338
|
if (typeof maxFileBytes === 'number'
|
|
294
339
|
&& typeof contentLength === 'number'
|
|
295
340
|
&& contentLength > maxFileBytes + MAX_MULTIPART_BODY_OVERHEAD_BYTES) {
|
|
341
|
+
await drainUnreadBody(req.body);
|
|
296
342
|
throw artifactSizeError(maxFileBytes);
|
|
297
343
|
}
|
|
298
344
|
const tempDir = await mkdtemp(join(tmpdir(), 'goodvibes-upload-'));
|
|
@@ -443,6 +489,11 @@ async function spoolMultipartUpload(req, maxFileBytes) {
|
|
|
443
489
|
};
|
|
444
490
|
}
|
|
445
491
|
catch (error) {
|
|
492
|
+
// Any early exit here (size cap, malformed boundary, truncated part, …)
|
|
493
|
+
// can leave bytes unread on the wire. Drain them before rethrowing so the
|
|
494
|
+
// connection stays healthy for reuse instead of stalling the caller's
|
|
495
|
+
// next request — see drainReader's doc comment.
|
|
496
|
+
await drainReader(reader);
|
|
446
497
|
await cleanupTempDir(tempDir, error);
|
|
447
498
|
throw error;
|
|
448
499
|
}
|
package/dist/context.d.ts
CHANGED
|
@@ -139,13 +139,18 @@ export interface DaemonPlatformStatusRouteHandlers {
|
|
|
139
139
|
getWorktrees(): MaybeResponse;
|
|
140
140
|
getIntelligence(): MaybeResponse;
|
|
141
141
|
}
|
|
142
|
-
/** Route handlers for the memory subsystem: diagnostics, vector stats, review queue, rebuild, and
|
|
142
|
+
/** Route handlers for the memory subsystem: diagnostics, vector stats, review queue, rebuild, embedding config, and canonical-store record CRUD/search. */
|
|
143
143
|
export interface DaemonMemoryRouteHandlers {
|
|
144
144
|
getMemoryDoctor(): MaybeResponse;
|
|
145
145
|
getMemoryVectorStats(): MaybeResponse;
|
|
146
146
|
getMemoryReviewQueue(url: URL): MaybeResponse;
|
|
147
147
|
postMemoryVectorRebuild(req: Request): MaybeResponse;
|
|
148
148
|
postMemoryEmbeddingDefault(req: Request): MaybeResponse;
|
|
149
|
+
postMemoryRecordAdd(req: Request): MaybeResponse;
|
|
150
|
+
postMemoryRecordSearch(req: Request): MaybeResponse;
|
|
151
|
+
getMemoryRecord(id: string): MaybeResponse;
|
|
152
|
+
postMemoryRecordReview(id: string, req: Request): MaybeResponse;
|
|
153
|
+
deleteMemoryRecord(id: string): MaybeResponse;
|
|
149
154
|
}
|
|
150
155
|
/** Route handlers for local auth administration: users, passwords, sessions, and bootstrap file management. */
|
|
151
156
|
export interface DaemonLocalAuthAdminRouteHandlers {
|
|
@@ -186,6 +191,12 @@ export interface DaemonSystemRouteHandlers {
|
|
|
186
191
|
approvalAction(approvalId: string, action: 'claim' | 'approve' | 'deny' | 'cancel', req: Request): MaybeResponse;
|
|
187
192
|
getConfig(req: Request): MaybeResponse;
|
|
188
193
|
postConfig(req: Request): MaybeResponse;
|
|
194
|
+
/**
|
|
195
|
+
* `credentials.get` — admin + read:config. Returns secret-free credential
|
|
196
|
+
* STATUS metadata for the daemon's shared store (never plaintext). An optional
|
|
197
|
+
* `?key=` query narrows to a single caller-named credential.
|
|
198
|
+
*/
|
|
199
|
+
getCredentials(req: Request): MaybeResponse;
|
|
189
200
|
}
|
|
190
201
|
/** Route handlers for remote peer management: pair requests, peer tokens, remote work, and node host contract. */
|
|
191
202
|
export interface DaemonRemoteManagementRouteHandlers {
|
|
@@ -298,15 +309,20 @@ export interface DaemonMultimodalRouteHandlers {
|
|
|
298
309
|
/** Route handlers for shared session management: creation, messaging, steering, follow-up, and SSE events. */
|
|
299
310
|
export interface DaemonRuntimeSessionRouteHandlers {
|
|
300
311
|
createSharedSession(req: Request): MaybeResponse;
|
|
312
|
+
registerSharedSession(req: Request): MaybeResponse;
|
|
301
313
|
getSharedSession(sessionId: string): MaybeResponse;
|
|
302
314
|
closeSharedSession(sessionId: string, req: Request): MaybeResponse;
|
|
303
315
|
reopenSharedSession(sessionId: string, req: Request): MaybeResponse;
|
|
316
|
+
detachSharedSession(sessionId: string, req: Request): MaybeResponse;
|
|
317
|
+
/** Hard-delete a shared session (see CHANGELOG 1.0.0). Distinct from close: the record is gone, not preserved. */
|
|
318
|
+
deleteSharedSession(sessionId: string, req: Request): MaybeResponse;
|
|
304
319
|
getSharedSessionMessages(sessionId: string, url: URL): MaybeResponse;
|
|
305
320
|
getSharedSessionInputs(sessionId: string, url: URL): MaybeResponse;
|
|
306
321
|
postSharedSessionMessage(sessionId: string, req: Request): MaybeResponse;
|
|
307
322
|
postSharedSessionSteer(sessionId: string, req: Request): MaybeResponse;
|
|
308
323
|
postSharedSessionFollowUp(sessionId: string, req: Request): MaybeResponse;
|
|
309
324
|
cancelSharedSessionInput(sessionId: string, inputId: string, req: Request): MaybeResponse;
|
|
325
|
+
deliverSharedSessionInput(sessionId: string, inputId: string, req: Request): MaybeResponse;
|
|
310
326
|
getSharedSessionEvents(sessionId: string, req: Request): MaybeResponse;
|
|
311
327
|
}
|
|
312
328
|
/** Route handlers for runtime task lifecycle: creation, status, and action dispatch (cancel/retry). */
|
package/dist/context.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,uGAAuG;AACvG,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEzD,gGAAgG;AAChG,MAAM,WAAW,iCACf,SAAQ,iCAAiC,EACvC,mCAAmC;CAAG;AAE1C,uDAAuD;AACvD,MAAM,WAAW,iCAAiC;IAChD,SAAS,IAAI,aAAa,CAAC;CAC5B;AAED,4JAA4J;AAC5J,MAAM,WAAW,2BACf,SAAQ,0BAA0B,EAChC,4BAA4B,EAC5B,0BAA0B,EAC1B,8BAA8B,EAC9B,yBAAyB,EACzB,mCAAmC,EACnC,4BAA4B,EAC5B,wBAAwB,EACxB,kCAAkC;CAAG;AAEzC,iFAAiF;AACjF,MAAM,WAAW,kCAAkC;IACjD,sBAAsB,IAAI,aAAa,CAAC;IACxC,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACrD,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAClD,iBAAiB,IAAI,aAAa,CAAC;CACpC;AAED,8FAA8F;AAC9F,MAAM,WAAW,6BACf,SAAQ,qCAAqC,EAC3C,oCAAoC,EACpC,2BAA2B;CAAG;AAElC,gGAAgG;AAChG,MAAM,WAAW,qCAAqC;IACpD,SAAS,IAAI,aAAa,CAAC;IAC3B,qBAAqB,IAAI,aAAa,CAAC;IACvC,wBAAwB,IAAI,aAAa,CAAC;CAC3C;AAED,yDAAyD;AACzD,MAAM,WAAW,2BAA2B;IAC1C,aAAa,IAAI,aAAa,CAAC;IAC/B,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,CAAC;CAChD;AAED,wFAAwF;AACxF,MAAM,WAAW,0BACf,SAAQ,kCAAkC,EACxC,iCAAiC;CAAG;AAExC,mEAAmE;AACnE,MAAM,WAAW,kCAAkC;IACjD,2JAA2J;IAC3J,sBAAsB,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,aAAa,CAAC;CAClD;AAED,kFAAkF;AAClF,MAAM,WAAW,uBACf,SAAQ,+BAA+B,EACrC,8BAA8B;CAAG;AAErC,gEAAgE;AAChE,MAAM,WAAW,+BAA+B;IAC9C,mBAAmB,IAAI,aAAa,CAAC;CACtC;AAED,uGAAuG;AACvG,MAAM,WAAW,0BAA0B;IACzC,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACvC,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACvC,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAC5C,uBAAuB,IAAI,aAAa,CAAC;IACzC,mBAAmB,IAAI,aAAa,CAAC;IACrC,kBAAkB,IAAI,aAAa,CAAC;IACpC,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC;IAC1D,uBAAuB,IAAI,aAAa,CAAC;IACzC,sBAAsB,IAAI,aAAa,CAAC;IACxC,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAG,aAAa,CAAC;IAC3C,gBAAgB,CAAC,GAAG,EAAE,GAAG,GAAG,aAAa,CAAC;IAC1C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAAC;IAClD,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACnE,6BAA6B,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;CAC5D;AAED,2GAA2G;AAC3G,MAAM,WAAW,4BAA4B;IAC3C,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAClD,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAChD,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAChD,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAChD,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACjD,0BAA0B,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACxD,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACpD,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAClD,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACrD,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACnD,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACrD,wBAAwB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;CACvD;AAED,wIAAwI;AACxI,MAAM,WAAW,0BAA0B;IACzC,WAAW,IAAI,aAAa,CAAC;IAC7B,kBAAkB,IAAI,aAAa,CAAC;IACpC,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAAC;IAC1D,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,aAAa,CAAC;IACrE,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,aAAa,CAAC;IAChE,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,aAAa,CAAC;IAC3D,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,aAAa,CAAC;IAClE,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,aAAa,CAAC;IAC9D,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACjH,sBAAsB,IAAI,aAAa,CAAC;IACxC,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAAC;IAC9D,eAAe,IAAI,aAAa,CAAC;IACjC,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAAC;IACvD,oBAAoB,IAAI,aAAa,CAAC;IACtC,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAAC;IAC5D,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAC9E,iBAAiB,IAAI,aAAa,CAAC;IACnC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAAC;IACzD,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAClF,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACvE,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACnE,2BAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAC1E,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACvE,kBAAkB,IAAI,aAAa,CAAC;IACpC,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAChE,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACjE,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC;IACpD,gBAAgB,IAAI,aAAa,CAAC;IAClC,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,aAAa,CAAC;CAC/D;AAED,yIAAyI;AACzI,MAAM,WAAW,8BACf,SAAQ,sCAAsC,EAC5C,2BAA2B,EAC3B,gCAAgC,EAChC,iCAAiC,EACjC,iCAAiC,EACjC,yBAAyB,EACzB,iCAAiC,EACjC,wBAAwB,EACxB,2BAA2B;CAAG;AAElC,wGAAwG;AACxG,MAAM,WAAW,sCAAsC;IACrD,SAAS,IAAI,aAAa,CAAC;IAC3B,qBAAqB,IAAI,aAAa,CAAC;IACvC,mBAAmB,IAAI,aAAa,CAAC;IACrC,wBAAwB,IAAI,aAAa,CAAC;IAC1C,2JAA2J;IAC3J,sBAAsB,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,aAAa,CAAC;CAClD;AAED,gEAAgE;AAChE,MAAM,WAAW,gCAAgC;IAC/C,iBAAiB,IAAI,aAAa,CAAC;CACpC;AAED,oIAAoI;AACpI,MAAM,WAAW,iCAAiC;IAChD,SAAS,IAAI,aAAa,CAAC;IAC3B,WAAW,IAAI,aAAa,CAAC;IAC7B,YAAY,IAAI,aAAa,CAAC;IAC9B,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,CAAC;IAC/C,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,CAAC;IACpD,WAAW,IAAI,aAAa,CAAC;IAC7B,mBAAmB,IAAI,aAAa,CAAC;IACrC,aAAa,IAAI,aAAa,CAAC;IAC/B,YAAY,IAAI,aAAa,CAAC;IAC9B,eAAe,IAAI,aAAa,CAAC;CAClC;AAED,uHAAuH;AACvH,MAAM,WAAW,yBAAyB;IACxC,eAAe,IAAI,aAAa,CAAC;IACjC,oBAAoB,IAAI,aAAa,CAAC;IACtC,oBAAoB,CAAC,GAAG,EAAE,GAAG,GAAG,aAAa,CAAC;IAC9C,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACrD,0BAA0B,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;CACzD;AAED,+GAA+G;AAC/G,MAAM,WAAW,iCAAiC;IAChD,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAC1C,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAC/C,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACnE,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACrE,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACvE,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;CAClD;AAED,yDAAyD;AACzD,MAAM,WAAW,wBAAwB;IACvC,SAAS,IAAI,aAAa,CAAC;IAC3B,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;CAC5C;AAED,gDAAgD;AAChD,MAAM,WAAW,2BAA2B;IAC1C,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;CACxC;AAED,8GAA8G;AAC9G,MAAM,WAAW,yBAAyB;IACxC,WAAW,IAAI,aAAa,CAAC;IAC7B,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACzC,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAC7D,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAChG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAC9D,gBAAgB,IAAI,aAAa,CAAC;IAClC,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAC5C,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAC1C,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACzC,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAC5C,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAC9C,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAC9C,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAC9C,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAClE,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACnE,YAAY,IAAI,aAAa,CAAC;IAC9B,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACjH,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACvC,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;CACzC;AAED,kHAAkH;AAClH,MAAM,WAAW,mCAAmC;IAClD,qBAAqB,IAAI,aAAa,CAAC;IACvC,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACzE,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACxE,cAAc,IAAI,aAAa,CAAC;IAChC,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACnE,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACnE,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAClE,aAAa,IAAI,aAAa,CAAC;IAC/B,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAC9D,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAC9D,yBAAyB,IAAI,aAAa,CAAC;CAC5C;AAED,uHAAuH;AACvH,MAAM,WAAW,4BAA6B,SAAQ,sCAAsC;IAC1F,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,aAAa,CAAC;IAC5C,mBAAmB,CAAC,GAAG,EAAE,GAAG,GAAG,aAAa,CAAC;IAC7C,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAG,aAAa,CAAC;IAC3C,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,aAAa,CAAC;IAC5C,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,aAAa,CAAC;IACtD,sBAAsB,IAAI,aAAa,CAAC;IACxC,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,CAAC;IACjD,2BAA2B,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,CAAC;IACvD,6BAA6B,CAAC,GAAG,EAAE,GAAG,GAAG,aAAa,CAAC;IACvD,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,aAAa,CAAC;IACzC,yBAAyB,IAAI,aAAa,CAAC;IAC3C,uBAAuB,CAAC,GAAG,EAAE,GAAG,GAAG,aAAa,CAAC;IACjD,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAG,aAAa,CAAC;IAC3C,sBAAsB,CAAC,GAAG,EAAE,GAAG,GAAG,aAAa,CAAC;IAChD,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,CAAC;IACjD,mBAAmB,CAAC,GAAG,EAAE,GAAG,GAAG,aAAa,CAAC;IAC7C,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,CAAC;IAC9C,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,CAAC;IAClD,4BAA4B,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,CAAC;IACxD,gBAAgB,IAAI,aAAa,CAAC;IAClC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC;IAC9C,mBAAmB,CAAC,GAAG,EAAE,GAAG,GAAG,aAAa,CAAC;IAC7C,qBAAqB,CAAC,GAAG,EAAE,GAAG,GAAG,aAAa,CAAC;IAC/C,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,CAAC;IAChD,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACpD,2BAA2B,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACzD,+BAA+B,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAC7D,4BAA4B,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAC1D,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACrD,4BAA4B,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAC1D,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACjD,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAC9C,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACjD,wBAAwB,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAClE,4BAA4B,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACtE,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAChE,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAC/C,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAClD,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACvD,uBAAuB,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACjE,+BAA+B,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACzE,6BAA6B,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAC3D,kCAAkC,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAChE,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;CACtD;AAED,+DAA+D;AAC/D,MAAM,WAAW,sCAAsC;IACrD,2BAA2B,CAAC,GAAG,EAAE,GAAG,GAAG,aAAa,CAAC;IACrD,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;IAC1D,0BAA0B,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACxD,iCAAiC,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;CAChF;AAED,4GAA4G;AAC5G,MAAM,WAAW,wBACf,SAAQ,wBAAwB,EAC9B,4BAA4B,EAC5B,2BAA2B,EAC3B,gCAAgC,EAChC,6BAA6B;CAAG;AAEpC,iGAAiG;AACjG,MAAM,WAAW,wBAAwB;IACvC,cAAc,IAAI,aAAa,CAAC;IAChC,iBAAiB,IAAI,aAAa,CAAC;IACnC,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,aAAa,CAAC;IACxC,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAC1C,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAChD,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAC1C,wBAAwB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;CACvD;AAED,0EAA0E;AAC1E,MAAM,WAAW,4BAA4B;IAC3C,qBAAqB,IAAI,aAAa,CAAC;IACvC,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;CAC5C;AAED,6FAA6F;AAC7F,MAAM,WAAW,2BAA2B;IAC1C,YAAY,IAAI,aAAa,CAAC;IAC9B,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAC1C,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,CAAC;IAC/C,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;CACrE;AAED,sFAAsF;AACtF,MAAM,WAAW,gCAAgC;IAC/C,iBAAiB,IAAI,aAAa,CAAC;IACnC,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAC9C,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAChD,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;CAChD;AAED,qGAAqG;AACrG,MAAM,WAAW,6BAA6B;IAC5C,mBAAmB,IAAI,aAAa,CAAC;IACrC,sBAAsB,IAAI,aAAa,CAAC;IACxC,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACnD,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAClD,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;CACtD;AAED,8GAA8G;AAC9G,MAAM,WAAW,iCAAiC;IAChD,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACjD,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,CAAC;IACnD,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACnE,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACpE,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,aAAa,CAAC;IACrE,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,aAAa,CAAC;IACnE,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACzE,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACvE,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAC1E,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAC1F,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;CACxE;AAED,uGAAuG;AACvG,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACtC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;IAC9C,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAC3F,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAAC;CAC/C;AAED,gHAAgH;AAChH,MAAM,WAAW,oCAAoC;IACnD,kJAAkJ;IAClJ,iBAAiB,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,aAAa,CAAC;IAC5C,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAC/C,kJAAkJ;IAClJ,iBAAiB,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,aAAa,CAAC;IAC5C,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC;IAC/C,sBAAsB,IAAI,aAAa,CAAC;IACxC,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACrD,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAC5F,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAC/D,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAChE,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACtF,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAChE,YAAY,IAAI,aAAa,CAAC;IAC9B,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAC1C,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAChE,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IACtF,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;IAChE,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC;CACnD;AAED,iFAAiF;AACjF,MAAM,WAAW,0BACf,SAAQ,iCAAiC,EACvC,8BAA8B,EAC9B,oCAAoC,EACpC,iCAAiC;CAAG;AAExC,sDAAsD;AACtD,MAAM,WAAW,iCAAiC;IAChD,iBAAiB,IAAI,aAAa,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,sBACf,SAAQ,iCAAiC,EACvC,2BAA2B,EAC3B,6BAA6B,EAC7B,0BAA0B,EAC1B,uBAAuB,EACvB,0BAA0B;CAAG"}
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control-routes.d.ts","sourceRoot":"","sources":["../src/control-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"control-routes.d.ts","sourceRoot":"","sources":["../src/control-routes.ts"],"names":[],"mappings":"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"}
|
package/dist/control-routes.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { isRuntimeEventDomain } from '@pellux/goodvibes-contracts';
|
|
2
|
+
import { SDKErrorCodes } from '@pellux/goodvibes-errors';
|
|
2
3
|
import { jsonErrorResponse } from './error-response.js';
|
|
3
4
|
import { createRouteBodySchema, createRouteBodySchemaRegistry, serializableJsonResponse, } from './route-helpers.js';
|
|
4
5
|
const controlBodySchemas = createRouteBodySchemaRegistry({
|
|
@@ -90,12 +91,17 @@ export function createDaemonControlRouteHandlers(context) {
|
|
|
90
91
|
const method = context.gatewayMethods.get(methodId);
|
|
91
92
|
return method
|
|
92
93
|
? serializableJsonResponse({ method })
|
|
93
|
-
:
|
|
94
|
+
// Machine-readable: METHOD_NOT_FOUND distinguishes "this id isn't cataloged at
|
|
95
|
+
// all" from NOT_INVOKABLE ("cataloged but refuses dispatch") so a capability
|
|
96
|
+
// probe (e.g. webui's isMethodUnavailableError) never has to string-match
|
|
97
|
+
// "Unknown gateway method".
|
|
98
|
+
: jsonErrorResponse({ error: 'Unknown gateway method', code: SDKErrorCodes.METHOD_NOT_FOUND }, { status: 404 });
|
|
94
99
|
},
|
|
95
100
|
invokeGatewayMethod: async (methodId, req) => {
|
|
96
101
|
const descriptor = context.gatewayMethods.get(methodId);
|
|
97
|
-
if (!descriptor)
|
|
98
|
-
return jsonErrorResponse({ error: 'Unknown gateway method' }, { status: 404 });
|
|
102
|
+
if (!descriptor) {
|
|
103
|
+
return jsonErrorResponse({ error: 'Unknown gateway method', code: SDKErrorCodes.METHOD_NOT_FOUND }, { status: 404 });
|
|
104
|
+
}
|
|
99
105
|
const access = descriptor.access ?? 'admin';
|
|
100
106
|
if (access === 'admin' || access === 'remote-peer') {
|
|
101
107
|
const admin = context.requireAdmin(req);
|
|
@@ -143,6 +149,9 @@ export function createDaemonControlRouteHandlers(context) {
|
|
|
143
149
|
principalId: principal.principalId,
|
|
144
150
|
principalKind: principal.principalKind,
|
|
145
151
|
scopes: principal.scopes,
|
|
152
|
+
// Carry admin so the per-channel scope filter (e.g. read:sessions on
|
|
153
|
+
// session-update) honors the single-admin-token collapse.
|
|
154
|
+
admin: principal.admin,
|
|
146
155
|
});
|
|
147
156
|
},
|
|
148
157
|
};
|
package/dist/index.d.ts
CHANGED
|
@@ -11,8 +11,8 @@ export type { AuthenticatedPrincipal, AuthenticatedPrincipalKind, AuthenticatedP
|
|
|
11
11
|
export { createRouteBodySchema, createRouteBodySchemaRegistry, isJsonRecord, missingScopes, readBoundedBodyInteger, readBoundedInteger, readBoundedPositiveInteger, readChannelConversationKind, readChannelLifecycleAction, readOptionalBoundedInteger, readOptionalStringField, readStringArrayField, scopeMatches, } from './route-helpers.js';
|
|
12
12
|
export type { BoundedIntegerOptions, ChannelConversationKind, ChannelLifecycleAction, JsonBody, JsonRecord, RouteBodySchema, } from './route-helpers.js';
|
|
13
13
|
export type { ChannelAgentToolDefinitionLike, ChannelAllowlistInput, ChannelAuthorizeActionInput, ChannelDirectoryQuery, ChannelDirectoryScope, ChannelPluginServiceLike, ChannelPolicyServiceLike, ChannelSurface, ChannelTargetResolutionInput, DaemonChannelRouteContext, SurfaceRegistryLike, } from './channel-route-types.js';
|
|
14
|
-
export type { ChannelAccountRegistryLike, DaemonIntegrationRouteContext, IntegrationHelperServiceLike, IntegrationRuntimeStoreLike, MemoryEmbeddingRegistryLike, MemoryRegistryLike, ProviderRuntimeSnapshotServiceLike, RuntimeEventDomain as DaemonRuntimeEventDomain, UserAuthManagerLike, } from './integration-route-types.js';
|
|
15
|
-
export type { ApprovalBrokerLike, AutomationDeliveryGuarantee, AutomationRouteBindingKind, AutomationSessionPolicy, AutomationSurfaceKind, AutomationThreadPolicy, ConfigManagerLike as DaemonSystemConfigManagerLike, DaemonApiClientKind, DaemonSystemRouteContext, IntegrationApprovalSnapshotSourceLike, PlatformServiceManagerLike, RouteBindingManagerLike, RouteBindingPatchInput, RouteBindingRecordInput, WatcherKind, WatcherRecord, WatcherRegistryLike, WorkspaceSwapManagerLike, } from './system-route-types.js';
|
|
14
|
+
export type { ChannelAccountRegistryLike, DaemonIntegrationRouteContext, IntegrationHelperServiceLike, IntegrationRuntimeStoreLike, MemoryEmbeddingRegistryLike, MemoryRegistryLike, MemoryProvenanceLinkInput, MemoryRecordAddInput, MemoryRecordReviewInput, MemoryRecordSearchFilterInput, ProviderRuntimeSnapshotServiceLike, RuntimeEventDomain as DaemonRuntimeEventDomain, UserAuthManagerLike, } from './integration-route-types.js';
|
|
15
|
+
export type { ApprovalBrokerLike, AutomationDeliveryGuarantee, AutomationRouteBindingKind, AutomationSessionPolicy, AutomationSurfaceKind, AutomationThreadPolicy, ConfigManagerLike as DaemonSystemConfigManagerLike, CredentialStatusProviderLike, CredentialStatusRecord, DaemonApiClientKind, DaemonSystemRouteContext, IntegrationApprovalSnapshotSourceLike, PlatformServiceManagerLike, RouteBindingManagerLike, RouteBindingPatchInput, RouteBindingRecordInput, WatcherKind, WatcherRecord, WatcherRegistryLike, WorkspaceSwapManagerLike, } from './system-route-types.js';
|
|
16
16
|
export type { AuthenticatedPrincipalLike, AutomationScheduleDefinition, DaemonKnowledgeRouteContext, KnowledgeGraphqlAccessLike, KnowledgeGraphqlResultLike, KnowledgeGraphqlServiceLike, KnowledgePacketDetail, KnowledgeProjectionTargetKind, KnowledgeServiceLike, } from './knowledge-route-types.js';
|
|
17
17
|
export type { ArtifactKind, ArtifactStoreLike, DaemonMediaRouteContext, FetchExtractMode, MediaArtifact, MediaProviderLike, MediaProviderRegistryLike, MultimodalAnalysisResult, MultimodalDetail, MultimodalServiceLike, VoiceAudioArtifact, VoiceServiceLike, VoiceSynthesisStreamLike, WebSearchSafeSearch, WebSearchServiceLike, WebSearchTimeRange, WebSearchVerbosity, } from './media-route-types.js';
|
|
18
18
|
export { createArtifactFromUploadRequest, isArtifactUploadRequest, isJsonContentType, } from './artifact-upload.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,11 +38,73 @@ export interface ProviderRuntimeSnapshotServiceLike {
|
|
|
38
38
|
getSnapshot(providerId: string): Promise<unknown | null>;
|
|
39
39
|
getUsageSnapshot(providerId: string): Promise<unknown | null>;
|
|
40
40
|
}
|
|
41
|
+
/** A provenance link on a memory record, as carried on the wire. */
|
|
42
|
+
export interface MemoryProvenanceLinkInput {
|
|
43
|
+
readonly kind: string;
|
|
44
|
+
readonly ref: string;
|
|
45
|
+
readonly label?: string | undefined;
|
|
46
|
+
}
|
|
47
|
+
/** The add-record body, structurally compatible with the SDK's MemoryAddOptions. */
|
|
48
|
+
export interface MemoryRecordAddInput {
|
|
49
|
+
readonly cls: string;
|
|
50
|
+
readonly summary: string;
|
|
51
|
+
readonly scope?: string | undefined;
|
|
52
|
+
readonly detail?: string | undefined;
|
|
53
|
+
readonly tags?: readonly string[] | undefined;
|
|
54
|
+
readonly provenance?: readonly MemoryProvenanceLinkInput[] | undefined;
|
|
55
|
+
readonly review?: {
|
|
56
|
+
readonly state?: string | undefined;
|
|
57
|
+
readonly confidence?: number | undefined;
|
|
58
|
+
readonly reviewedBy?: string | undefined;
|
|
59
|
+
readonly staleReason?: string | undefined;
|
|
60
|
+
} | undefined;
|
|
61
|
+
}
|
|
62
|
+
/** The search filter body, structurally compatible with the SDK's MemorySearchFilter. */
|
|
63
|
+
export interface MemoryRecordSearchFilterInput {
|
|
64
|
+
readonly scope?: string | undefined;
|
|
65
|
+
readonly cls?: string | undefined;
|
|
66
|
+
readonly tags?: readonly string[] | undefined;
|
|
67
|
+
readonly query?: string | undefined;
|
|
68
|
+
readonly semantic?: boolean | undefined;
|
|
69
|
+
readonly since?: number | undefined;
|
|
70
|
+
readonly reviewState?: string | readonly string[] | undefined;
|
|
71
|
+
readonly minConfidence?: number | undefined;
|
|
72
|
+
readonly provenanceKinds?: readonly string[] | undefined;
|
|
73
|
+
readonly staleOnly?: boolean | undefined;
|
|
74
|
+
readonly limit?: number | undefined;
|
|
75
|
+
}
|
|
76
|
+
/** The review-update body, structurally compatible with the SDK's MemoryReviewPatch. */
|
|
77
|
+
export interface MemoryRecordReviewInput {
|
|
78
|
+
readonly state?: string | undefined;
|
|
79
|
+
readonly confidence?: number | undefined;
|
|
80
|
+
readonly reviewedBy?: string | undefined;
|
|
81
|
+
readonly staleReason?: string | undefined;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* The memory subsystem the daemon exposes to its routes. The concrete SDK
|
|
85
|
+
* `MemoryRegistry` satisfies this structurally (method params are compared
|
|
86
|
+
* bivariantly, exactly as `reviewQueue`'s `scope?: string` already binds to the
|
|
87
|
+
* registry's `scope?: MemoryScope`). The route layer stays decoupled from the SDK
|
|
88
|
+
* store types — it hands loose bodies in and serializes whatever comes back.
|
|
89
|
+
*/
|
|
41
90
|
export interface MemoryRegistryLike {
|
|
42
91
|
doctor(): Promise<unknown>;
|
|
43
92
|
vectorStats(): unknown;
|
|
44
93
|
rebuildVectorsAsync(): Promise<unknown>;
|
|
45
94
|
reviewQueue(limit?: number, scope?: string): unknown[];
|
|
95
|
+
add(opts: MemoryRecordAddInput): Promise<unknown>;
|
|
96
|
+
/**
|
|
97
|
+
* Search honoring the recall-honesty contract; returns the honest envelope the
|
|
98
|
+
* route serializes verbatim. `filter`/`options` are optional so the concrete
|
|
99
|
+
* MemoryRegistry (whose defaults make BOTH params optional) binds bivariantly,
|
|
100
|
+
* exactly as `reviewQueue`'s optional params already do.
|
|
101
|
+
*/
|
|
102
|
+
honestSearch(filter?: MemoryRecordSearchFilterInput, options?: {
|
|
103
|
+
readonly recall?: boolean | undefined;
|
|
104
|
+
}): unknown;
|
|
105
|
+
get(id: string): unknown | null;
|
|
106
|
+
review(id: string, patch: MemoryRecordReviewInput): unknown | null;
|
|
107
|
+
delete(id: string): boolean;
|
|
46
108
|
}
|
|
47
109
|
export interface MemoryEmbeddingRegistryLike {
|
|
48
110
|
setDefaultProvider(providerId: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integration-route-types.d.ts","sourceRoot":"","sources":["../src/integration-route-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,YAAY,EAAE,kBAAkB,EAAE,CAAC;AAEnC,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,IAAI;QACV,QAAQ,CAAC,UAAU,EAAE;YACnB,QAAQ,CAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACjD,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,4BAA4B;IAC3C,WAAW,IAAI,OAAO,CAAC;IACvB,kBAAkB,IAAI,OAAO,CAAC;IAC9B,eAAe,IAAI,OAAO,CAAC;IAC3B,qBAAqB,IAAI,OAAO,CAAC;IACjC,wBAAwB,IAAI,OAAO,CAAC;IACpC,mBAAmB,IAAI,OAAO,CAAC;IAC/B,gBAAgB,IAAI,OAAO,CAAC;IAC5B,iBAAiB,IAAI,OAAO,CAAC;IAC7B,iBAAiB,IAAI,OAAO,CAAC;IAC7B,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,mBAAmB,IAAI,OAAO,CAAC;IAC/B,yBAAyB,IAAI,OAAO,CAAC;IACrC,qBAAqB,IAAI,OAAO,CAAC;IACjC,mBAAmB,IAAI,OAAO,CAAC;IAC/B,uBAAuB,IAAI,OAAO,CAAC;IACnC,oBAAoB,IAAI,OAAO,CAAC;IAChC,UAAU,IAAI,SAAS,OAAO,EAAE,CAAC;IACjC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC5D,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,kBAAkB,EAAE,GAAG,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtG,eAAe,IAAI,2BAA2B,GAAG,IAAI,CAAC;CACvD;AAED,MAAM,WAAW,0BAA0B;IACzC,YAAY,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,kCAAkC;IACjD,aAAa,IAAI,OAAO,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC;IAC7C,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACzD,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;CAC/D;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3B,WAAW,IAAI,OAAO,CAAC;IACvB,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"integration-route-types.d.ts","sourceRoot":"","sources":["../src/integration-route-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integration-routes.d.ts","sourceRoot":"","sources":["../src/integration-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAC;AAEnE,OAAO,KAAK,EAAE,6BAA6B,EAAoD,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"integration-routes.d.ts","sourceRoot":"","sources":["../src/integration-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAC;AAEnE,OAAO,KAAK,EAAE,6BAA6B,EAAoD,MAAM,8BAA8B,CAAC;AAmEpI,wBAAgB,oCAAoC,CAClD,OAAO,EAAE,6BAA6B,GACrC,8BAA8B,CA4LhC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsonErrorResponse } from './error-response.js';
|
|
2
2
|
import { createRouteBodySchema, createRouteBodySchemaRegistry, readBoundedPositiveInteger, readOptionalStringField, readStringArrayField, } from './route-helpers.js';
|
|
3
|
+
import { parseMemoryRecordAddBody, parseMemoryRecordReviewBody, parseMemoryRecordSearchBody, } from './memory-record-body.js';
|
|
3
4
|
const MAX_LOCAL_AUTH_ROLES = 32;
|
|
4
5
|
const integrationBodySchemas = createRouteBodySchemaRegistry({
|
|
5
6
|
embeddingDefault: createRouteBodySchema('POST /api/memory/embedding/default', (body) => {
|
|
@@ -117,6 +118,50 @@ export function createDaemonIntegrationRouteHandlers(context) {
|
|
|
117
118
|
return jsonErrorResponse(error, { status: 400 });
|
|
118
119
|
}
|
|
119
120
|
},
|
|
121
|
+
// Canonical-store record CRUD/search. The daemon is the single writer; a client
|
|
122
|
+
// surface reaches its store ONLY through these routes and never opens the file.
|
|
123
|
+
postMemoryRecordAdd: async (req) => {
|
|
124
|
+
const body = await context.parseJsonBody(req);
|
|
125
|
+
if (body instanceof Response)
|
|
126
|
+
return body;
|
|
127
|
+
const input = parseMemoryRecordAddBody(body);
|
|
128
|
+
if (input instanceof Response)
|
|
129
|
+
return input;
|
|
130
|
+
try {
|
|
131
|
+
const record = await context.memoryRegistry.add(input);
|
|
132
|
+
return Response.json({ record }, { status: 201 });
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
return jsonErrorResponse(error, { status: 400 });
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
postMemoryRecordSearch: async (req) => {
|
|
139
|
+
const body = await context.parseJsonBody(req);
|
|
140
|
+
if (body instanceof Response)
|
|
141
|
+
return body;
|
|
142
|
+
const { filter, recall } = parseMemoryRecordSearchBody(body);
|
|
143
|
+
return Response.json(context.memoryRegistry.honestSearch(filter, { recall }));
|
|
144
|
+
},
|
|
145
|
+
getMemoryRecord: (id) => {
|
|
146
|
+
const record = context.memoryRegistry.get(id);
|
|
147
|
+
return record
|
|
148
|
+
? Response.json({ record })
|
|
149
|
+
: jsonErrorResponse({ error: 'Unknown memory record', code: 'MEMORY_RECORD_NOT_FOUND' }, { status: 404 });
|
|
150
|
+
},
|
|
151
|
+
postMemoryRecordReview: async (id, req) => {
|
|
152
|
+
const body = await context.parseJsonBody(req);
|
|
153
|
+
if (body instanceof Response)
|
|
154
|
+
return body;
|
|
155
|
+
const patch = parseMemoryRecordReviewBody(body);
|
|
156
|
+
const record = context.memoryRegistry.review(id, patch);
|
|
157
|
+
return record
|
|
158
|
+
? Response.json({ record })
|
|
159
|
+
: jsonErrorResponse({ error: 'Unknown memory record', code: 'MEMORY_RECORD_NOT_FOUND' }, { status: 404 });
|
|
160
|
+
},
|
|
161
|
+
deleteMemoryRecord: (id) => {
|
|
162
|
+
const deleted = context.memoryRegistry.delete(id);
|
|
163
|
+
return Response.json({ id, deleted });
|
|
164
|
+
},
|
|
120
165
|
getLocalAuth: (req) => {
|
|
121
166
|
const admin = context.requireAdmin(req);
|
|
122
167
|
if (admin)
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* memory-record-body.ts — request-body parsers for the daemon-owned memory record
|
|
3
|
+
* routes (add / search / update-review).
|
|
4
|
+
*
|
|
5
|
+
* These build the loose, wire-shaped input objects the route handlers hand to the
|
|
6
|
+
* memory registry. Validation is honest but forgiving of extra fields: required
|
|
7
|
+
* fields missing → 400 with a stated reason; unknown enum-ish values are passed
|
|
8
|
+
* through for the store to normalize (the store already clamps confidence and
|
|
9
|
+
* normalizes scope/reviewState), never silently dropped.
|
|
10
|
+
*/
|
|
11
|
+
import { type JsonRecord } from './route-helpers.js';
|
|
12
|
+
import type { MemoryRecordAddInput, MemoryRecordReviewInput, MemoryRecordSearchFilterInput } from './integration-route-types.js';
|
|
13
|
+
/** Parse POST /api/memory/records — cls and summary are required. */
|
|
14
|
+
export declare function parseMemoryRecordAddBody(body: JsonRecord): MemoryRecordAddInput | Response;
|
|
15
|
+
/** Parse POST /api/memory/records/search — every field optional; unknowns ignored. */
|
|
16
|
+
export declare function parseMemoryRecordSearchBody(body: JsonRecord): {
|
|
17
|
+
readonly filter: MemoryRecordSearchFilterInput;
|
|
18
|
+
readonly recall: boolean;
|
|
19
|
+
};
|
|
20
|
+
/** Parse POST /api/memory/records/:id/review — all review fields optional; id comes from the path. */
|
|
21
|
+
export declare function parseMemoryRecordReviewBody(body: JsonRecord): MemoryRecordReviewInput;
|
|
22
|
+
//# sourceMappingURL=memory-record-body.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-record-body.d.ts","sourceRoot":"","sources":["../src/memory-record-body.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAA+D,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAClH,OAAO,KAAK,EAEV,oBAAoB,EACpB,uBAAuB,EACvB,6BAA6B,EAC9B,MAAM,8BAA8B,CAAC;AA+CtC,qEAAqE;AACrE,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,UAAU,GAAG,oBAAoB,GAAG,QAAQ,CAmB1F;AAED,sFAAsF;AACtF,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,UAAU,GACf;IAAE,QAAQ,CAAC,MAAM,EAAE,6BAA6B,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAe9E;AAED,sGAAsG;AACtG,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,UAAU,GAAG,uBAAuB,CAWrF"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* memory-record-body.ts — request-body parsers for the daemon-owned memory record
|
|
3
|
+
* routes (add / search / update-review).
|
|
4
|
+
*
|
|
5
|
+
* These build the loose, wire-shaped input objects the route handlers hand to the
|
|
6
|
+
* memory registry. Validation is honest but forgiving of extra fields: required
|
|
7
|
+
* fields missing → 400 with a stated reason; unknown enum-ish values are passed
|
|
8
|
+
* through for the store to normalize (the store already clamps confidence and
|
|
9
|
+
* normalizes scope/reviewState), never silently dropped.
|
|
10
|
+
*/
|
|
11
|
+
import { jsonErrorResponse } from './error-response.js';
|
|
12
|
+
import { isJsonRecord, readOptionalStringField, readStringArrayField } from './route-helpers.js';
|
|
13
|
+
function readOptionalNumberField(body, key) {
|
|
14
|
+
const value = body[key];
|
|
15
|
+
return typeof value === 'number' && Number.isFinite(value) ? value : undefined;
|
|
16
|
+
}
|
|
17
|
+
function readOptionalBooleanField(body, key) {
|
|
18
|
+
const value = body[key];
|
|
19
|
+
return typeof value === 'boolean' ? value : undefined;
|
|
20
|
+
}
|
|
21
|
+
/** Parse a provenance link array: each entry needs kind+ref; label is optional. Invalid entries are skipped. */
|
|
22
|
+
function readProvenanceField(body, max = 64) {
|
|
23
|
+
const value = body.provenance;
|
|
24
|
+
if (!Array.isArray(value))
|
|
25
|
+
return undefined;
|
|
26
|
+
const output = [];
|
|
27
|
+
for (let index = 0; index < value.length && index < max; index++) {
|
|
28
|
+
const entry = value[index];
|
|
29
|
+
if (!isJsonRecord(entry))
|
|
30
|
+
continue;
|
|
31
|
+
const kind = readOptionalStringField(entry, 'kind');
|
|
32
|
+
const ref = readOptionalStringField(entry, 'ref');
|
|
33
|
+
if (!kind || !ref)
|
|
34
|
+
continue;
|
|
35
|
+
const label = readOptionalStringField(entry, 'label');
|
|
36
|
+
output.push({ kind, ref, ...(label ? { label } : {}) });
|
|
37
|
+
}
|
|
38
|
+
return output.length > 0 ? output : undefined;
|
|
39
|
+
}
|
|
40
|
+
function readReviewField(body) {
|
|
41
|
+
const value = body.review;
|
|
42
|
+
if (!isJsonRecord(value))
|
|
43
|
+
return undefined;
|
|
44
|
+
const state = readOptionalStringField(value, 'state');
|
|
45
|
+
const confidence = readOptionalNumberField(value, 'confidence');
|
|
46
|
+
const reviewedBy = readOptionalStringField(value, 'reviewedBy');
|
|
47
|
+
const staleReason = readOptionalStringField(value, 'staleReason');
|
|
48
|
+
if (state === undefined && confidence === undefined && reviewedBy === undefined && staleReason === undefined) {
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
...(state ? { state } : {}),
|
|
53
|
+
...(confidence !== undefined ? { confidence } : {}),
|
|
54
|
+
...(reviewedBy ? { reviewedBy } : {}),
|
|
55
|
+
...(staleReason ? { staleReason } : {}),
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/** Parse POST /api/memory/records — cls and summary are required. */
|
|
59
|
+
export function parseMemoryRecordAddBody(body) {
|
|
60
|
+
const cls = readOptionalStringField(body, 'cls');
|
|
61
|
+
const summary = readOptionalStringField(body, 'summary');
|
|
62
|
+
if (!cls)
|
|
63
|
+
return jsonErrorResponse({ error: 'Missing cls', code: 'INVALID_REQUEST' }, { status: 400 });
|
|
64
|
+
if (!summary)
|
|
65
|
+
return jsonErrorResponse({ error: 'Missing summary', code: 'INVALID_REQUEST' }, { status: 400 });
|
|
66
|
+
const scope = readOptionalStringField(body, 'scope');
|
|
67
|
+
const detail = readOptionalStringField(body, 'detail');
|
|
68
|
+
const tags = readStringArrayField(body, 'tags');
|
|
69
|
+
const provenance = readProvenanceField(body);
|
|
70
|
+
const review = readReviewField(body);
|
|
71
|
+
return {
|
|
72
|
+
cls,
|
|
73
|
+
summary,
|
|
74
|
+
...(scope ? { scope } : {}),
|
|
75
|
+
...(detail ? { detail } : {}),
|
|
76
|
+
...(tags ? { tags } : {}),
|
|
77
|
+
...(provenance ? { provenance } : {}),
|
|
78
|
+
...(review ? { review } : {}),
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
/** Parse POST /api/memory/records/search — every field optional; unknowns ignored. */
|
|
82
|
+
export function parseMemoryRecordSearchBody(body) {
|
|
83
|
+
const filter = {
|
|
84
|
+
...(readOptionalStringField(body, 'scope') ? { scope: readOptionalStringField(body, 'scope') } : {}),
|
|
85
|
+
...(readOptionalStringField(body, 'cls') ? { cls: readOptionalStringField(body, 'cls') } : {}),
|
|
86
|
+
...(readStringArrayField(body, 'tags') ? { tags: readStringArrayField(body, 'tags') } : {}),
|
|
87
|
+
...(readOptionalStringField(body, 'query') ? { query: readOptionalStringField(body, 'query') } : {}),
|
|
88
|
+
...(readOptionalBooleanField(body, 'semantic') !== undefined ? { semantic: readOptionalBooleanField(body, 'semantic') } : {}),
|
|
89
|
+
...(readOptionalNumberField(body, 'since') !== undefined ? { since: readOptionalNumberField(body, 'since') } : {}),
|
|
90
|
+
...(readStringArrayField(body, 'reviewState') ? { reviewState: readStringArrayField(body, 'reviewState') } : {}),
|
|
91
|
+
...(readOptionalNumberField(body, 'minConfidence') !== undefined ? { minConfidence: readOptionalNumberField(body, 'minConfidence') } : {}),
|
|
92
|
+
...(readStringArrayField(body, 'provenanceKinds') ? { provenanceKinds: readStringArrayField(body, 'provenanceKinds') } : {}),
|
|
93
|
+
...(readOptionalBooleanField(body, 'staleOnly') !== undefined ? { staleOnly: readOptionalBooleanField(body, 'staleOnly') } : {}),
|
|
94
|
+
...(readOptionalNumberField(body, 'limit') !== undefined ? { limit: readOptionalNumberField(body, 'limit') } : {}),
|
|
95
|
+
};
|
|
96
|
+
return { filter, recall: readOptionalBooleanField(body, 'recall') === true };
|
|
97
|
+
}
|
|
98
|
+
/** Parse POST /api/memory/records/:id/review — all review fields optional; id comes from the path. */
|
|
99
|
+
export function parseMemoryRecordReviewBody(body) {
|
|
100
|
+
const state = readOptionalStringField(body, 'state');
|
|
101
|
+
const confidence = readOptionalNumberField(body, 'confidence');
|
|
102
|
+
const reviewedBy = readOptionalStringField(body, 'reviewedBy');
|
|
103
|
+
const staleReason = readOptionalStringField(body, 'staleReason');
|
|
104
|
+
return {
|
|
105
|
+
...(state ? { state } : {}),
|
|
106
|
+
...(confidence !== undefined ? { confidence } : {}),
|
|
107
|
+
...(reviewedBy ? { reviewedBy } : {}),
|
|
108
|
+
...(staleReason ? { staleReason } : {}),
|
|
109
|
+
};
|
|
110
|
+
}
|