@opendatalabs/personal-server-ts-server 1.3.3 → 1.3.4
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/storage/hierarchy.d.ts +7 -0
- package/dist/storage/hierarchy.d.ts.map +1 -1
- package/dist/storage/hierarchy.js +42 -1
- package/dist/storage/hierarchy.js.map +1 -1
- package/dist/storage/node-data-storage.d.ts.map +1 -1
- package/dist/storage/node-data-storage.js +4 -1
- package/dist/storage/node-data-storage.js.map +1 -1
- package/dist/ui/ps-lite-debug.js +430 -104
- package/package.json +3 -3
|
@@ -14,7 +14,14 @@ export declare function writeBlockManifest(options: HierarchyManagerOptions, sco
|
|
|
14
14
|
export declare function readScopeBlocks(options: HierarchyManagerOptions, scope: string, collectedAt: string, readOptions: {
|
|
15
15
|
cursor?: string;
|
|
16
16
|
maxBytes: number;
|
|
17
|
+
blockIds?: readonly string[];
|
|
17
18
|
}): Promise<ReadScopeBlocksResponse>;
|
|
19
|
+
/**
|
|
20
|
+
* Manifest as a table of contents. Unlike the internal reader this returns null
|
|
21
|
+
* for a scope that was stored before block sidecars existed, so callers can
|
|
22
|
+
* degrade instead of failing.
|
|
23
|
+
*/
|
|
24
|
+
export declare function readScopeBlockManifest(options: HierarchyManagerOptions, scope: string, collectedAt: string): Promise<DataBlockManifest | null>;
|
|
18
25
|
export declare function hasScopeBlocks(options: HierarchyManagerOptions, scope: string, collectedAt: string): Promise<boolean>;
|
|
19
26
|
/** List version filenames for a scope, newest first. Empty array if scope dir doesn't exist. */
|
|
20
27
|
export declare function listVersions(options: HierarchyManagerOptions, scope: string): Promise<string[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hierarchy.d.ts","sourceRoot":"","sources":["../../src/storage/hierarchy.ts"],"names":[],"mappings":"AAcA,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAIL,KAAK,uBAAuB,EAC5B,KAAK,WAAW,EACjB,MAAM,yDAAyD,CAAC;AACjE,OAAO,
|
|
1
|
+
{"version":3,"file":"hierarchy.d.ts","sourceRoot":"","sources":["../../src/storage/hierarchy.ts"],"names":[],"mappings":"AAcA,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAIL,KAAK,uBAAuB,EAC5B,KAAK,WAAW,EACjB,MAAM,yDAAyD,CAAC;AACjE,OAAO,EAKL,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC7B,MAAM,sDAAsD,CAAC;AAO9D,sDAAsD;AACtD,wBAAsB,aAAa,CACjC,OAAO,EAAE,uBAAuB,EAChC,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,WAAW,CAAC,CAuBtB;AAED,iCAAiC;AACjC,wBAAsB,YAAY,CAChC,OAAO,EAAE,uBAAuB,EAChC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,gBAAgB,CAAC,CAI3B;AAED,0EAA0E;AAC1E,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,uBAAuB,EAChC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,CAgB/C;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,uBAAuB,EAChC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,EAAE,cAAc,EAAE,GACvB,OAAO,CAAC,IAAI,CAAC,CAiCf;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,uBAAuB,EAChC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B,GACA,OAAO,CAAC,uBAAuB,CAAC,CAsFlC;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,uBAAuB,EAChC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAYnC;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,uBAAuB,EAChC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CAUlB;AAED,gGAAgG;AAChG,wBAAsB,YAAY,CAChC,OAAO,EAAE,uBAAuB,EAChC,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,EAAE,CAAC,CAmBnB;AAED;wFACwF;AACxF,wBAAsB,cAAc,CAClC,OAAO,EAAE,uBAAuB,EAChC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAQf;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,uBAAuB,EAChC,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAKf"}
|
|
@@ -3,7 +3,7 @@ import { dirname, join, relative } from "node:path";
|
|
|
3
3
|
import { randomUUID } from "node:crypto";
|
|
4
4
|
import { DataFileEnvelopeSchema, } from "@opendatalabs/vana-sdk/browser";
|
|
5
5
|
import { buildDataFilePath, buildScopeDir, filenameToTimestamp, } from "@opendatalabs/personal-server-ts-core/storage/hierarchy";
|
|
6
|
-
import { DataBlockStorageError, encodeDataBlockCursor, validateDataBlockCursor, } from "@opendatalabs/personal-server-ts-core/storage/blocks";
|
|
6
|
+
import { DataBlockStorageError, encodeDataBlockCursor, selectScopeBlocksByIds, validateDataBlockCursor, } from "@opendatalabs/personal-server-ts-core/storage/blocks";
|
|
7
7
|
import { previewJsonEnvelopePrefix } from "@opendatalabs/personal-server-ts-core/storage/preview";
|
|
8
8
|
const TEXT_PAGE_MEDIA_TYPE = "text/plain; charset=utf-8";
|
|
9
9
|
const textEncoder = new TextEncoder();
|
|
@@ -67,6 +67,17 @@ export async function writeBlockManifest(options, scope, collectedAt, manifest,
|
|
|
67
67
|
}
|
|
68
68
|
export async function readScopeBlocks(options, scope, collectedAt, readOptions) {
|
|
69
69
|
const manifest = await readBlockManifest(options, scope, collectedAt);
|
|
70
|
+
if (readOptions.blockIds?.length) {
|
|
71
|
+
const selection = await selectScopeBlocksByIds(manifest, readOptions.blockIds, { maxBytes: readOptions.maxBytes }, (blockId) => readBlockPayloadIfPresent(options, scope, collectedAt, blockId));
|
|
72
|
+
return {
|
|
73
|
+
scope: manifest.scope,
|
|
74
|
+
collectedAt: manifest.collectedAt,
|
|
75
|
+
...(manifest.schemaId ? { schemaId: manifest.schemaId } : {}),
|
|
76
|
+
contentKind: manifest.contentKind,
|
|
77
|
+
blocks: selection.blocks,
|
|
78
|
+
warnings: [...manifest.warnings, ...selection.warnings],
|
|
79
|
+
};
|
|
80
|
+
}
|
|
70
81
|
const cursor = readOptions.cursor
|
|
71
82
|
? validateDataBlockCursor(readOptions.cursor, { scope, collectedAt })
|
|
72
83
|
: undefined;
|
|
@@ -124,6 +135,23 @@ export async function readScopeBlocks(options, scope, collectedAt, readOptions)
|
|
|
124
135
|
warnings: manifest.warnings,
|
|
125
136
|
};
|
|
126
137
|
}
|
|
138
|
+
/**
|
|
139
|
+
* Manifest as a table of contents. Unlike the internal reader this returns null
|
|
140
|
+
* for a scope that was stored before block sidecars existed, so callers can
|
|
141
|
+
* degrade instead of failing.
|
|
142
|
+
*/
|
|
143
|
+
export async function readScopeBlockManifest(options, scope, collectedAt) {
|
|
144
|
+
try {
|
|
145
|
+
return await readBlockManifest(options, scope, collectedAt);
|
|
146
|
+
}
|
|
147
|
+
catch (err) {
|
|
148
|
+
if (err instanceof DataBlockStorageError &&
|
|
149
|
+
err.code === "block_manifest_not_found") {
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
throw err;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
127
155
|
export async function hasScopeBlocks(options, scope, collectedAt) {
|
|
128
156
|
try {
|
|
129
157
|
await access(buildBlockManifestPath(options.dataDir, scope, collectedAt));
|
|
@@ -200,6 +228,19 @@ async function readBlockPayload(options, scope, collectedAt, blockId) {
|
|
|
200
228
|
throw err;
|
|
201
229
|
}
|
|
202
230
|
}
|
|
231
|
+
/** Payload read for block-addressed selection: a missing id is a warning, not a throw. */
|
|
232
|
+
async function readBlockPayloadIfPresent(options, scope, collectedAt, blockId) {
|
|
233
|
+
try {
|
|
234
|
+
return await readBlockPayload(options, scope, collectedAt, blockId);
|
|
235
|
+
}
|
|
236
|
+
catch (err) {
|
|
237
|
+
if (err instanceof DataBlockStorageError &&
|
|
238
|
+
err.code === "block_payload_not_found") {
|
|
239
|
+
return null;
|
|
240
|
+
}
|
|
241
|
+
throw err;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
203
244
|
function pageBlock(block, offsetBytes, maxBytes) {
|
|
204
245
|
const text = typeof block.value === "string" ? block.value : JSON.stringify(block.value);
|
|
205
246
|
const bytes = textEncoder.encode(text);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hierarchy.js","sourceRoot":"","sources":["../../src/storage/hierarchy.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hierarchy.js","sourceRoot":"","sources":["../../src/storage/hierarchy.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,OAAO,EACP,MAAM,EACN,MAAM,EACN,IAAI,EACJ,EAAE,GACH,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,sBAAsB,GAEvB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,mBAAmB,GAGpB,MAAM,yDAAyD,CAAC;AACjE,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,GAIxB,MAAM,sDAAsD,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,uDAAuD,CAAC;AAElG,MAAM,oBAAoB,GAAG,2BAA2B,CAAC;AACzD,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AACtC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAEtC,sDAAsD;AACtD,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAgC,EAChC,QAA0B;IAE1B,MAAM,QAAQ,GAAG,iBAAiB,CAChC,OAAO,CAAC,OAAO,EACf,QAAQ,CAAC,KAAK,EACd,QAAQ,CAAC,WAAW,CACrB,CAAC;IACF,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE9B,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEtC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,EAAE,CAAC;IAEnD,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5C,MAAM,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAEjC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEnC,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC;QACjD,SAAS,EAAE,KAAK,CAAC,IAAI;KACtB,CAAC;AACJ,CAAC;AAED,iCAAiC;AACjC,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAgC,EAChC,KAAa,EACb,WAAmB;IAEnB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClD,OAAO,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAgC,EAChC,KAAa,EACb,WAAmB,EACnB,QAAgB;IAEhB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACzC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QAClC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACzC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;QACnE,OAAO,yBAAyB,CAC9B,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAC/C,QAAQ,EACR,EAAE,eAAe,EAAE,KAAK,CAAC,IAAI,GAAG,SAAS,EAAE,CAC5C,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAgC,EAChC,KAAa,EACb,WAAmB,EACnB,QAA2B,EAC3B,MAAwB;IAExB,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,GAAG,GAAG,QAAQ,UAAU,EAAE,EAAE,CAAC;IAE7C,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,IAAI,CAAC;QACH,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,SAAS,CACb,qBAAqB,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,EACxC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EACrB,OAAO,CACR,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,MAAM,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAE3B,MAAM,YAAY,GAAG,sBAAsB,CACzC,OAAO,CAAC,OAAO,EACf,KAAK,EACL,WAAW,CACZ,CAAC;QACF,MAAM,gBAAgB,GAAG,GAAG,YAAY,QAAQ,UAAU,EAAE,EAAE,CAAC;QAC/D,MAAM,SAAS,CACb,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EACjC,OAAO,CACR,CAAC;QACF,MAAM,MAAM,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAgC,EAChC,KAAa,EACb,WAAmB,EACnB,WAIC;IAED,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IAEtE,IAAI,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QACjC,MAAM,SAAS,GAAG,MAAM,sBAAsB,CAC5C,QAAQ,EACR,WAAW,CAAC,QAAQ,EACpB,EAAE,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,EAClC,CAAC,OAAO,EAAE,EAAE,CACV,yBAAyB,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,CAClE,CAAC;QACF,OAAO;YACL,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,QAAQ,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC;SACxD,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM;QAC/B,CAAC,CAAC,uBAAuB,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;QACrE,CAAC,CAAC,SAAS,CAAC;IAEd,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACzB,MAAM,IAAI,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAG,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,MAAM,MAAM,GAAqB,EAAE,CAAC;IACpC,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,SAAS,GAAG,UAAU,CAAC;IAC3B,IAAI,UAA8B,CAAC;IAEnC,OAAO,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAE,CAAC;QACxC,MAAM,MAAM,GAAG,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,IAAI,MAAM,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAC5B,SAAS,EAAE,CAAC;YACZ,SAAS;QACX,CAAC;QACD,IACE,MAAM,CAAC,MAAM,GAAG,CAAC;YACjB,MAAM,KAAK,CAAC;YACZ,UAAU,GAAG,GAAG,CAAC,SAAS,GAAG,QAAQ;YAErC,MAAM;QAER,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1E,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAG,UAAU,CAAC,CAAC;QAC7D,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QAEnC,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAClC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YAC7B,MAAM;QACR,CAAC;QAED,SAAS,EAAE,CAAC;QAEZ,IAAI,UAAU,IAAI,QAAQ;YAAE,MAAM;IACpC,CAAC;IAED,OAAO;QACL,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,MAAM;QACN,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM;YAChE,CAAC,CAAC;gBACE,UAAU,EAAE,qBAAqB,CAAC;oBAChC,KAAK;oBACL,WAAW;oBACX,UAAU,EAAE,SAAS;oBACrB,GAAG,CAAC,UAAU,KAAK,SAAS;wBAC1B,CAAC,CAAC,EAAE;wBACJ,CAAC,CAAC,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC;iBACtC,CAAC;aACH;YACH,CAAC,CAAC,EAAE,CAAC;QACP,QAAQ,EAAE,QAAQ,CAAC,QAAQ;KAC5B,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAgC,EAChC,KAAa,EACb,WAAmB;IAEnB,IAAI,CAAC;QACH,OAAO,MAAM,iBAAiB,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IAC9D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IACE,GAAG,YAAY,qBAAqB;YACpC,GAAG,CAAC,IAAI,KAAK,0BAA0B,EACvC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAgC,EAChC,KAAa,EACb,WAAmB;IAEnB,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,sBAAsB,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,gGAAgG;AAChG,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAgC,EAChC,KAAa;IAEb,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAEvD,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrD,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,MAAM,SAAS,GAAG,OAAO;SACtB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;SAClC,IAAI,EAAE;SACN,OAAO,EAAE,CAAC;IAEb,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED;wFACwF;AACxF,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAgC,EAChC,KAAa,EACb,WAAmB;IAEnB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IACxE,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,GAAG,CAAC;IAClE,CAAC;IACD,MAAM,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;AACzD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAgC,EAChC,KAAa;IAEb,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACvD,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,MAAM,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;IAC5E,MAAM,EAAE,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,OAAgC,EAChC,KAAa,EACb,WAAmB;IAEnB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CACf,MAAM,QAAQ,CACZ,sBAAsB,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,EAC3D,OAAO,CACR,CACmB,CAAC;IACzB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrD,MAAM,IAAI,qBAAqB,CAC7B,0BAA0B,EAC1B,gCAAgC,KAAK,OAAO,WAAW,EAAE,CAC1D,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,OAAgC,EAChC,KAAa,EACb,WAAmB,EACnB,OAAe;IAEf,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CACf,MAAM,QAAQ,CACZ,qBAAqB,CACnB,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,EAClD,OAAO,CACR,EACD,OAAO,CACR,CACgB,CAAC;IACtB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrD,MAAM,IAAI,qBAAqB,CAC7B,yBAAyB,EACzB,+BAA+B,KAAK,OAAO,WAAW,KAAK,OAAO,EAAE,CACrE,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,0FAA0F;AAC1F,KAAK,UAAU,yBAAyB,CACtC,OAAgC,EAChC,KAAa,EACb,WAAmB,EACnB,OAAe;IAEf,IAAI,CAAC;QACH,OAAO,MAAM,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IACE,GAAG,YAAY,qBAAqB;YACpC,GAAG,CAAC,IAAI,KAAK,yBAAyB,EACtC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAChB,KAAqB,EACrB,WAAmB,EACnB,QAAgB;IAEhB,MAAM,IAAI,GACR,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,WAAW,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,QAAQ,EAAE,CAAC;QACjD,OAAO,EAAE,KAAK,EAAE,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IAE1D,OAAO;QACL,KAAK,EAAE;YACL,GAAG,KAAK;YACR,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,UAAU,KAAK,IAAI,GAAG,GAAG;YAC5C,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC;gBAC5C,CAAC,CAAC,KAAK,CAAC,SAAS;gBACjB,CAAC,CAAC,oBAAoB;YACxB,KAAK;YACL,SAAS,EAAE,GAAG,GAAG,KAAK;YACtB,SAAS,EAAE,GAAG,GAAG,KAAK,CAAC,MAAM;SAC9B;QACD,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnD,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,OAAgC,EAChC,KAAa,EACb,WAAmB;IAEnB,MAAM,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,EAAE;QAC3D,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CACpB,OAAe,EACf,KAAa,EACb,WAAmB;IAEnB,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,sBAAsB,CAC7B,OAAe,EACf,KAAa,EACb,WAAmB;IAEnB,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,EAAE,eAAe,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,qBAAqB,CAAC,GAAW,EAAE,OAAe;IACzD,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC1D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-data-storage.d.ts","sourceRoot":"","sources":["../../src/storage/node-data-storage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"node-data-storage.d.ts","sourceRoot":"","sources":["../../src/storage/node-data-storage.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yDAAyD,CAAC;AACvG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qDAAqD,CAAC;AACxF,OAAO,KAAK,EAGV,eAAe,EAEhB,MAAM,6CAA6C,CAAC;AAGrD,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,uBAAuB,CAAC;CAC3C;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,mBAAmB,GACxB,eAAe,CA+GjB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { deleteAllForScope, deleteDataFile, readDataFile, readDataFilePreview, hasScopeBlocks, readScopeBlocks, writeBlockManifest, writeDataFile, } from "./hierarchy.js";
|
|
1
|
+
import { deleteAllForScope, deleteDataFile, readDataFile, readDataFilePreview, hasScopeBlocks, readScopeBlockManifest, readScopeBlocks, writeBlockManifest, writeDataFile, } from "./hierarchy.js";
|
|
2
2
|
export function createNodeDataStorage(deps) {
|
|
3
3
|
return {
|
|
4
4
|
kind: "node-fs-sqlite",
|
|
@@ -41,6 +41,9 @@ export function createNodeDataStorage(deps) {
|
|
|
41
41
|
hasScopeBlocks(scope, collectedAt) {
|
|
42
42
|
return hasScopeBlocks(deps.hierarchyOptions, scope, collectedAt);
|
|
43
43
|
},
|
|
44
|
+
readBlockManifest(scope, collectedAt) {
|
|
45
|
+
return readScopeBlockManifest(deps.hierarchyOptions, scope, collectedAt);
|
|
46
|
+
},
|
|
44
47
|
writeEnvelope(envelope) {
|
|
45
48
|
return writeDataFile(deps.hierarchyOptions, envelope);
|
|
46
49
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-data-storage.js","sourceRoot":"","sources":["../../src/storage/node-data-storage.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"node-data-storage.js","sourceRoot":"","sources":["../../src/storage/node-data-storage.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/ps-lite-debug.js
CHANGED
|
@@ -106401,6 +106401,101 @@ function assignBlockIds(blocks) {
|
|
|
106401
106401
|
}));
|
|
106402
106402
|
}
|
|
106403
106403
|
|
|
106404
|
+
// ../core/dist/storage/blocks/select.js
|
|
106405
|
+
var MAX_SELECTED_BLOCK_IDS = 50;
|
|
106406
|
+
var WARNING_ID_SAMPLE = 10;
|
|
106407
|
+
var TEXT_PAGE_MEDIA_TYPE = "text/plain; charset=utf-8";
|
|
106408
|
+
var textEncoder2 = new TextEncoder();
|
|
106409
|
+
var textDecoder = new TextDecoder();
|
|
106410
|
+
async function selectScopeBlocksByIds(manifest, blockIds, options, loadBlock) {
|
|
106411
|
+
const maxBytes = Math.max(1, options.maxBytes);
|
|
106412
|
+
const refById = new Map(manifest.blocks.map((ref) => [ref.id, ref]));
|
|
106413
|
+
const requested = [];
|
|
106414
|
+
const seen = /* @__PURE__ */ new Set();
|
|
106415
|
+
let cappedIds = 0;
|
|
106416
|
+
for (const blockId of blockIds) {
|
|
106417
|
+
if (typeof blockId !== "string" || !blockId || seen.has(blockId))
|
|
106418
|
+
continue;
|
|
106419
|
+
seen.add(blockId);
|
|
106420
|
+
if (requested.length >= MAX_SELECTED_BLOCK_IDS) {
|
|
106421
|
+
cappedIds += 1;
|
|
106422
|
+
continue;
|
|
106423
|
+
}
|
|
106424
|
+
requested.push(blockId);
|
|
106425
|
+
}
|
|
106426
|
+
const blocks = [];
|
|
106427
|
+
const missingIds = [];
|
|
106428
|
+
const skippedIds = [];
|
|
106429
|
+
const warnings = [];
|
|
106430
|
+
let bytes2 = 0;
|
|
106431
|
+
for (let index = 0; index < requested.length; index += 1) {
|
|
106432
|
+
const blockId = requested[index];
|
|
106433
|
+
const ref = refById.get(blockId);
|
|
106434
|
+
if (!ref) {
|
|
106435
|
+
missingIds.push(blockId);
|
|
106436
|
+
continue;
|
|
106437
|
+
}
|
|
106438
|
+
if (blocks.length > 0 && bytes2 + ref.sizeBytes > maxBytes) {
|
|
106439
|
+
skippedIds.push(...requested.slice(index));
|
|
106440
|
+
break;
|
|
106441
|
+
}
|
|
106442
|
+
const block = await loadBlock(blockId);
|
|
106443
|
+
if (!block) {
|
|
106444
|
+
missingIds.push(blockId);
|
|
106445
|
+
continue;
|
|
106446
|
+
}
|
|
106447
|
+
const page = pageBlock(block, maxBytes - bytes2);
|
|
106448
|
+
blocks.push(page.block);
|
|
106449
|
+
bytes2 += page.block.sizeBytes;
|
|
106450
|
+
if (page.truncated) {
|
|
106451
|
+
skippedIds.push(...requested.slice(index + 1));
|
|
106452
|
+
break;
|
|
106453
|
+
}
|
|
106454
|
+
}
|
|
106455
|
+
if (cappedIds > 0) {
|
|
106456
|
+
warnings.push({
|
|
106457
|
+
code: "block_selection_capped",
|
|
106458
|
+
message: `${cappedIds} block ids beyond the ${MAX_SELECTED_BLOCK_IDS} id limit were ignored`
|
|
106459
|
+
});
|
|
106460
|
+
}
|
|
106461
|
+
if (missingIds.length > 0) {
|
|
106462
|
+
warnings.push({
|
|
106463
|
+
code: "block_not_found",
|
|
106464
|
+
message: `${missingIds.length} requested block ids are not in this scope: ${summarizeIds(missingIds)}`
|
|
106465
|
+
});
|
|
106466
|
+
}
|
|
106467
|
+
if (skippedIds.length > 0) {
|
|
106468
|
+
warnings.push({
|
|
106469
|
+
code: "block_selection_truncated",
|
|
106470
|
+
message: `maxBytes reached; ${skippedIds.length} requested blocks were not returned: ${summarizeIds(skippedIds)}. Request them in a follow-up read.`
|
|
106471
|
+
});
|
|
106472
|
+
}
|
|
106473
|
+
return { blocks, warnings };
|
|
106474
|
+
}
|
|
106475
|
+
function summarizeIds(ids) {
|
|
106476
|
+
const sample = ids.slice(0, WARNING_ID_SAMPLE).join(", ");
|
|
106477
|
+
return ids.length > WARNING_ID_SAMPLE ? `${sample}, ...(${ids.length - WARNING_ID_SAMPLE} more)` : sample;
|
|
106478
|
+
}
|
|
106479
|
+
function pageBlock(block, maxBytes) {
|
|
106480
|
+
const text = typeof block.value === "string" ? block.value : JSON.stringify(block.value);
|
|
106481
|
+
const bytes2 = textEncoder2.encode(text);
|
|
106482
|
+
if (bytes2.length <= maxBytes) {
|
|
106483
|
+
return { block, truncated: false };
|
|
106484
|
+
}
|
|
106485
|
+
const end = Math.max(1, maxBytes);
|
|
106486
|
+
return {
|
|
106487
|
+
block: {
|
|
106488
|
+
...block,
|
|
106489
|
+
path: `${block.path}[bytes 0:${end}]`,
|
|
106490
|
+
mediaType: block.mediaType.startsWith("text/") ? block.mediaType : TEXT_PAGE_MEDIA_TYPE,
|
|
106491
|
+
value: textDecoder.decode(bytes2.slice(0, end)),
|
|
106492
|
+
sizeBytes: end,
|
|
106493
|
+
truncated: true
|
|
106494
|
+
},
|
|
106495
|
+
truncated: true
|
|
106496
|
+
};
|
|
106497
|
+
}
|
|
106498
|
+
|
|
106404
106499
|
// ../core/dist/storage/blocks/errors.js
|
|
106405
106500
|
var DataBlockStorageError = class extends Error {
|
|
106406
106501
|
code;
|
|
@@ -106413,9 +106508,9 @@ var DataBlockStorageError = class extends Error {
|
|
|
106413
106508
|
|
|
106414
106509
|
// ../core/dist/storage/preview.js
|
|
106415
106510
|
var DEFAULT_PREVIEW_NODE_BUDGET = 15e3;
|
|
106416
|
-
var
|
|
106511
|
+
var textEncoder3 = new TextEncoder();
|
|
106417
106512
|
function utf8Length(text) {
|
|
106418
|
-
return
|
|
106513
|
+
return textEncoder3.encode(text).byteLength;
|
|
106419
106514
|
}
|
|
106420
106515
|
function clipToUtf8Bytes(text, maxBytes) {
|
|
106421
106516
|
if (maxBytes <= 0)
|
|
@@ -106710,9 +106805,9 @@ function summarizeScopes(entries, options) {
|
|
|
106710
106805
|
var DEFAULT_INDEXED_DB_NAME = "personal-server-lite-storage";
|
|
106711
106806
|
var DEFAULT_INDEXED_DB_STORE = "state";
|
|
106712
106807
|
var DEFAULT_INDEXED_DB_KEY = "data-storage-v1";
|
|
106713
|
-
var
|
|
106714
|
-
var
|
|
106715
|
-
var
|
|
106808
|
+
var TEXT_PAGE_MEDIA_TYPE2 = "text/plain; charset=utf-8";
|
|
106809
|
+
var textEncoder4 = new TextEncoder();
|
|
106810
|
+
var textDecoder2 = new TextDecoder();
|
|
106716
106811
|
function schemaIdFromEnvelope(envelope) {
|
|
106717
106812
|
const schemaId = envelope.schemaId;
|
|
106718
106813
|
return typeof schemaId === "string" ? schemaId : void 0;
|
|
@@ -107067,6 +107162,17 @@ async function createPersistentPsLiteStorage(adapter, persistence = createIndexe
|
|
|
107067
107162
|
}, "Block sidecar cache write failed; serving read from local envelope");
|
|
107068
107163
|
}
|
|
107069
107164
|
}
|
|
107165
|
+
if (options.blockIds?.length) {
|
|
107166
|
+
const selection = await selectScopeBlocksByIds(manifest, options.blockIds, { maxBytes: options.maxBytes }, async (blockId) => inMemoryBlocks?.find((candidate) => candidate.id === blockId) ?? await readBlockPayloadFromStores(fileStore, fallbackStore, blockPayloadPath(scope, collectedAt2, blockId)));
|
|
107167
|
+
return {
|
|
107168
|
+
scope: manifest.scope,
|
|
107169
|
+
collectedAt: manifest.collectedAt,
|
|
107170
|
+
...manifest.schemaId ? { schemaId: manifest.schemaId } : {},
|
|
107171
|
+
contentKind: manifest.contentKind,
|
|
107172
|
+
blocks: selection.blocks,
|
|
107173
|
+
warnings: [...manifest.warnings, ...selection.warnings]
|
|
107174
|
+
};
|
|
107175
|
+
}
|
|
107070
107176
|
const cursorResult = options.cursor ? validateDataBlockCursor(options.cursor, { scope, collectedAt: collectedAt2 }) : { ok: true, cursor: null };
|
|
107071
107177
|
if (!cursorResult.ok) {
|
|
107072
107178
|
throw new DataBlockStorageError("cursor_invalid", cursorResult.error.message);
|
|
@@ -107109,7 +107215,7 @@ async function createPersistentPsLiteStorage(adapter, persistence = createIndexe
|
|
|
107109
107215
|
blocks.length = 0;
|
|
107110
107216
|
continue;
|
|
107111
107217
|
}
|
|
107112
|
-
const page =
|
|
107218
|
+
const page = pageBlock2(block, offset, maxBytes - bytes2);
|
|
107113
107219
|
blocks.push(page.block);
|
|
107114
107220
|
bytes2 += page.block.sizeBytes;
|
|
107115
107221
|
if (page.nextOffset !== void 0) {
|
|
@@ -107135,10 +107241,12 @@ async function createPersistentPsLiteStorage(adapter, persistence = createIndexe
|
|
|
107135
107241
|
warnings: manifest.warnings
|
|
107136
107242
|
};
|
|
107137
107243
|
},
|
|
107138
|
-
async
|
|
107244
|
+
async readBlockManifest(scope, collectedAt2) {
|
|
107139
107245
|
const manifestPath = blockManifestPath(scope, collectedAt2);
|
|
107140
|
-
|
|
107141
|
-
|
|
107246
|
+
return await fileStore.readBlockManifest?.(manifestPath) ?? (fileStore === fallbackStore ? null : await fallbackStore.readBlockManifest?.(manifestPath)) ?? null;
|
|
107247
|
+
},
|
|
107248
|
+
async hasScopeBlocks(scope, collectedAt2) {
|
|
107249
|
+
return Boolean(await storagePort.readBlockManifest?.(scope, collectedAt2));
|
|
107142
107250
|
},
|
|
107143
107251
|
async canReadScopeBlocks(scope, collectedAt2) {
|
|
107144
107252
|
if (await storagePort.hasScopeBlocks?.(scope, collectedAt2)) {
|
|
@@ -107319,20 +107427,20 @@ async function createPersistentPsLiteStorage(adapter, persistence = createIndexe
|
|
|
107319
107427
|
async function readPreviewFromFileStore(store, path, maxBytes) {
|
|
107320
107428
|
return await store.readEnvelopePreview?.(path, { maxBytes }) ?? null;
|
|
107321
107429
|
}
|
|
107322
|
-
function
|
|
107430
|
+
function pageBlock2(block, offsetBytes, maxBytes) {
|
|
107323
107431
|
const text = typeof block.value === "string" ? block.value : JSON.stringify(block.value);
|
|
107324
|
-
const bytes2 =
|
|
107432
|
+
const bytes2 = textEncoder4.encode(text);
|
|
107325
107433
|
if (offsetBytes <= 0 && bytes2.length <= maxBytes) {
|
|
107326
107434
|
return { block };
|
|
107327
107435
|
}
|
|
107328
107436
|
const start = Math.min(Math.max(0, offsetBytes), bytes2.length);
|
|
107329
107437
|
const end = Math.min(bytes2.length, start + Math.max(1, maxBytes));
|
|
107330
|
-
const value =
|
|
107438
|
+
const value = textDecoder2.decode(bytes2.slice(start, end));
|
|
107331
107439
|
return {
|
|
107332
107440
|
block: {
|
|
107333
107441
|
...block,
|
|
107334
107442
|
path: `${block.path}[bytes ${start}:${end}]`,
|
|
107335
|
-
mediaType: block.mediaType.startsWith("text/") ? block.mediaType :
|
|
107443
|
+
mediaType: block.mediaType.startsWith("text/") ? block.mediaType : TEXT_PAGE_MEDIA_TYPE2,
|
|
107336
107444
|
value,
|
|
107337
107445
|
sizeBytes: end - start,
|
|
107338
107446
|
truncated: end < bytes2.length
|
|
@@ -110114,6 +110222,53 @@ var McpDataReadError = class extends Error {
|
|
|
110114
110222
|
};
|
|
110115
110223
|
function createMcpDataReadClient(options) {
|
|
110116
110224
|
const basePath = options.basePath ?? "/v1/data";
|
|
110225
|
+
async function authorizeScopeRead(params) {
|
|
110226
|
+
const safeScope = encodeURIComponent(params.scope);
|
|
110227
|
+
const signingUri = `${basePath}/${safeScope}`;
|
|
110228
|
+
const authorization = await signMcpGranteeRequest({
|
|
110229
|
+
account: options.granteeAccount,
|
|
110230
|
+
aud: options.serverOrigin,
|
|
110231
|
+
method: "GET",
|
|
110232
|
+
uri: signingUri,
|
|
110233
|
+
grantId: params.grantId
|
|
110234
|
+
});
|
|
110235
|
+
const url2 = new URL(signingUri, options.serverOrigin).toString();
|
|
110236
|
+
const request2 = new Request(url2, {
|
|
110237
|
+
method: "GET",
|
|
110238
|
+
headers: { Authorization: authorization }
|
|
110239
|
+
});
|
|
110240
|
+
try {
|
|
110241
|
+
const authResult = await options.dataApiDeps.auth.authorizeBuilderRead({
|
|
110242
|
+
request: request2,
|
|
110243
|
+
scope: params.scope,
|
|
110244
|
+
grantId: params.grantId,
|
|
110245
|
+
fileId: params.fileId
|
|
110246
|
+
});
|
|
110247
|
+
return { request: request2, authResult };
|
|
110248
|
+
} catch (err2) {
|
|
110249
|
+
if (err2 instanceof ProtocolError) {
|
|
110250
|
+
throw new McpDataReadError(err2.code, err2.toJSON());
|
|
110251
|
+
}
|
|
110252
|
+
throw err2;
|
|
110253
|
+
}
|
|
110254
|
+
}
|
|
110255
|
+
async function writeReadAccessLog(request2, params) {
|
|
110256
|
+
const logId = options.dataApiDeps.createLogId?.() ?? crypto.randomUUID();
|
|
110257
|
+
const timestamp = (options.dataApiDeps.now ?? (() => /* @__PURE__ */ new Date()))().toISOString();
|
|
110258
|
+
const ipAddress = request2.headers.get("x-forwarded-for") ?? request2.headers.get("x-real-ip") ?? "unknown";
|
|
110259
|
+
const userAgent = request2.headers.get("user-agent") ?? "unknown";
|
|
110260
|
+
await options.dataApiDeps.accessLogWriter.write({
|
|
110261
|
+
logId,
|
|
110262
|
+
grantId: params.authResult?.grantId ?? params.grantId,
|
|
110263
|
+
builder: params.authResult?.builder ?? options.granteeAccount.address,
|
|
110264
|
+
action: "read",
|
|
110265
|
+
scope: params.scope,
|
|
110266
|
+
timestamp,
|
|
110267
|
+
ipAddress,
|
|
110268
|
+
userAgent
|
|
110269
|
+
});
|
|
110270
|
+
return { logId, timestamp, ipAddress, userAgent };
|
|
110271
|
+
}
|
|
110117
110272
|
return {
|
|
110118
110273
|
async listScopes({ scopePrefix, limit, offset } = {}) {
|
|
110119
110274
|
const params = new URLSearchParams();
|
|
@@ -110157,7 +110312,7 @@ function createMcpDataReadClient(options) {
|
|
|
110157
110312
|
hasBlocks
|
|
110158
110313
|
};
|
|
110159
110314
|
},
|
|
110160
|
-
async readScopeBlocks({ scope, grantId, cursor, maxBytes }) {
|
|
110315
|
+
async readScopeBlocks({ scope, grantId, cursor, maxBytes, blockIds }) {
|
|
110161
110316
|
const storage = options.dataApiDeps.storage;
|
|
110162
110317
|
if (!storage.readScopeBlocks) {
|
|
110163
110318
|
throw new McpDataReadError(503, {
|
|
@@ -110177,54 +110332,19 @@ function createMcpDataReadClient(options) {
|
|
|
110177
110332
|
message: `No data found for scope "${scope}"`
|
|
110178
110333
|
});
|
|
110179
110334
|
}
|
|
110180
|
-
const
|
|
110181
|
-
|
|
110182
|
-
|
|
110183
|
-
|
|
110184
|
-
aud: options.serverOrigin,
|
|
110185
|
-
method: "GET",
|
|
110186
|
-
uri: signingUri,
|
|
110187
|
-
grantId
|
|
110188
|
-
});
|
|
110189
|
-
const url2 = new URL(signingUri, options.serverOrigin).toString();
|
|
110190
|
-
const request2 = new Request(url2, {
|
|
110191
|
-
method: "GET",
|
|
110192
|
-
headers: { Authorization: authorization }
|
|
110335
|
+
const { request: request2, authResult } = await authorizeScopeRead({
|
|
110336
|
+
scope,
|
|
110337
|
+
grantId,
|
|
110338
|
+
fileId: selectedEntry.fileId ?? void 0
|
|
110193
110339
|
});
|
|
110194
|
-
let authResult;
|
|
110195
|
-
try {
|
|
110196
|
-
authResult = await options.dataApiDeps.auth.authorizeBuilderRead({
|
|
110197
|
-
request: request2,
|
|
110198
|
-
scope,
|
|
110199
|
-
grantId,
|
|
110200
|
-
fileId: selectedEntry.fileId ?? void 0
|
|
110201
|
-
});
|
|
110202
|
-
} catch (err2) {
|
|
110203
|
-
if (err2 instanceof ProtocolError) {
|
|
110204
|
-
throw new McpDataReadError(err2.code, err2.toJSON());
|
|
110205
|
-
}
|
|
110206
|
-
throw err2;
|
|
110207
|
-
}
|
|
110208
110340
|
try {
|
|
110209
110341
|
const result = await storage.readScopeBlocks(scope, selectedEntry.collectedAt, {
|
|
110210
110342
|
cursor,
|
|
110211
|
-
maxBytes: maxBytes ?? 16384
|
|
110343
|
+
maxBytes: maxBytes ?? 16384,
|
|
110344
|
+
...blockIds?.length ? { blockIds } : {}
|
|
110212
110345
|
});
|
|
110213
|
-
const logId =
|
|
110214
|
-
|
|
110215
|
-
const ipAddress = request2.headers.get("x-forwarded-for") ?? request2.headers.get("x-real-ip") ?? "unknown";
|
|
110216
|
-
const userAgent = request2.headers.get("user-agent") ?? "unknown";
|
|
110217
|
-
await options.dataApiDeps.accessLogWriter.write({
|
|
110218
|
-
logId,
|
|
110219
|
-
grantId: authResult?.grantId ?? grantId,
|
|
110220
|
-
builder: authResult?.builder ?? options.granteeAccount.address,
|
|
110221
|
-
action: "read",
|
|
110222
|
-
scope,
|
|
110223
|
-
timestamp,
|
|
110224
|
-
ipAddress,
|
|
110225
|
-
userAgent
|
|
110226
|
-
});
|
|
110227
|
-
if (authResult?.grantId && authResult.builder && !cursor && !result.nextCursor) {
|
|
110346
|
+
const { logId, timestamp, ipAddress, userAgent } = await writeReadAccessLog(request2, { scope, grantId, authResult });
|
|
110347
|
+
if (authResult?.grantId && authResult.builder && !cursor && !blockIds?.length && !result.nextCursor) {
|
|
110228
110348
|
reportPersonalServerReadFulfillment(options.dataApiDeps, {
|
|
110229
110349
|
builder: authResult.builder,
|
|
110230
110350
|
fileId: selectedEntry.fileId ?? void 0,
|
|
@@ -110254,6 +110374,26 @@ function createMcpDataReadClient(options) {
|
|
|
110254
110374
|
throw err2;
|
|
110255
110375
|
}
|
|
110256
110376
|
},
|
|
110377
|
+
async readBlockManifest({ scope, grantId }) {
|
|
110378
|
+
const storage = options.dataApiDeps.storage;
|
|
110379
|
+
if (!storage.readBlockManifest)
|
|
110380
|
+
return null;
|
|
110381
|
+
const selectedEntry = storage.findEntry({ scope });
|
|
110382
|
+
if (!selectedEntry) {
|
|
110383
|
+
throw new McpDataReadError(404, {
|
|
110384
|
+
error: "NOT_FOUND",
|
|
110385
|
+
message: `No data found for scope "${scope}"`
|
|
110386
|
+
});
|
|
110387
|
+
}
|
|
110388
|
+
const { request: request2, authResult } = await authorizeScopeRead({
|
|
110389
|
+
scope,
|
|
110390
|
+
grantId,
|
|
110391
|
+
fileId: selectedEntry.fileId ?? void 0
|
|
110392
|
+
});
|
|
110393
|
+
const manifest = await storage.readBlockManifest(scope, selectedEntry.collectedAt);
|
|
110394
|
+
await writeReadAccessLog(request2, { scope, grantId, authResult });
|
|
110395
|
+
return manifest;
|
|
110396
|
+
},
|
|
110257
110397
|
async readRawScopeFile({ scope, grantId, at: at3, fileId }) {
|
|
110258
110398
|
const storage = options.dataApiDeps.storage;
|
|
110259
110399
|
const selectedEntry = storage.findEntry({
|
|
@@ -110936,7 +111076,7 @@ var MiniSearch = class _MiniSearch {
|
|
|
110936
111076
|
* @param document The document to be indexed
|
|
110937
111077
|
*/
|
|
110938
111078
|
add(document2) {
|
|
110939
|
-
const { extractField, stringifyField, tokenize, processTerm, fields, idField } = this._options;
|
|
111079
|
+
const { extractField, stringifyField, tokenize, processTerm: processTerm2, fields, idField } = this._options;
|
|
110940
111080
|
const id2 = extractField(document2, idField);
|
|
110941
111081
|
if (id2 == null) {
|
|
110942
111082
|
throw new Error(`MiniSearch: document does not have ID field "${idField}"`);
|
|
@@ -110955,7 +111095,7 @@ var MiniSearch = class _MiniSearch {
|
|
|
110955
111095
|
const uniqueTerms = new Set(tokens).size;
|
|
110956
111096
|
this.addFieldLength(shortDocumentId, fieldId, this._documentCount - 1, uniqueTerms);
|
|
110957
111097
|
for (const term of tokens) {
|
|
110958
|
-
const processedTerm =
|
|
111098
|
+
const processedTerm = processTerm2(term, field);
|
|
110959
111099
|
if (Array.isArray(processedTerm)) {
|
|
110960
111100
|
for (const t10 of processedTerm) {
|
|
110961
111101
|
this.addTerm(fieldId, shortDocumentId, t10);
|
|
@@ -111017,7 +111157,7 @@ var MiniSearch = class _MiniSearch {
|
|
|
111017
111157
|
* @param document The document to be removed
|
|
111018
111158
|
*/
|
|
111019
111159
|
remove(document2) {
|
|
111020
|
-
const { tokenize, processTerm, extractField, stringifyField, fields, idField } = this._options;
|
|
111160
|
+
const { tokenize, processTerm: processTerm2, extractField, stringifyField, fields, idField } = this._options;
|
|
111021
111161
|
const id2 = extractField(document2, idField);
|
|
111022
111162
|
if (id2 == null) {
|
|
111023
111163
|
throw new Error(`MiniSearch: document does not have ID field "${idField}"`);
|
|
@@ -111035,7 +111175,7 @@ var MiniSearch = class _MiniSearch {
|
|
|
111035
111175
|
const uniqueTerms = new Set(tokens).size;
|
|
111036
111176
|
this.removeFieldLength(shortId, fieldId, this._documentCount, uniqueTerms);
|
|
111037
111177
|
for (const term of tokens) {
|
|
111038
|
-
const processedTerm =
|
|
111178
|
+
const processedTerm = processTerm2(term, field);
|
|
111039
111179
|
if (Array.isArray(processedTerm)) {
|
|
111040
111180
|
for (const t10 of processedTerm) {
|
|
111041
111181
|
this.removeTerm(fieldId, shortId, t10);
|
|
@@ -111772,8 +111912,8 @@ var MiniSearch = class _MiniSearch {
|
|
|
111772
111912
|
const results2 = query.queries.map((subquery) => this.executeQuery(subquery, options2));
|
|
111773
111913
|
return this.combineResults(results2, options2.combineWith);
|
|
111774
111914
|
}
|
|
111775
|
-
const { tokenize, processTerm, searchOptions: globalSearchOptions } = this._options;
|
|
111776
|
-
const options = { tokenize, processTerm, ...globalSearchOptions, ...searchOptions };
|
|
111915
|
+
const { tokenize, processTerm: processTerm2, searchOptions: globalSearchOptions } = this._options;
|
|
111916
|
+
const options = { tokenize, processTerm: processTerm2, ...globalSearchOptions, ...searchOptions };
|
|
111777
111917
|
const { tokenize: searchTokenize, processTerm: searchProcessTerm } = options;
|
|
111778
111918
|
const terms = searchTokenize(query).flatMap((term) => searchProcessTerm(term)).filter((term) => !!term);
|
|
111779
111919
|
const queries = terms.map(termToQuerySpec(options));
|
|
@@ -112177,16 +112317,86 @@ var SPACE_OR_PUNCTUATION = /[\n\r\p{Z}\p{P}]+/u;
|
|
|
112177
112317
|
// ../core/dist/mcp/search/index.js
|
|
112178
112318
|
var SEARCH_FIELDS = ["title", "text", "preview"];
|
|
112179
112319
|
var STORE_FIELDS = ["id", "scope", "source", "title", "preview", "blockRef"];
|
|
112320
|
+
var PREFIX_MIN_TERM_CHARS = 4;
|
|
112321
|
+
var MIN_TERM_CHARS = 2;
|
|
112322
|
+
var STOPWORDS = /* @__PURE__ */ new Set([
|
|
112323
|
+
"a",
|
|
112324
|
+
"an",
|
|
112325
|
+
"and",
|
|
112326
|
+
"are",
|
|
112327
|
+
"as",
|
|
112328
|
+
"at",
|
|
112329
|
+
"be",
|
|
112330
|
+
"but",
|
|
112331
|
+
"by",
|
|
112332
|
+
"did",
|
|
112333
|
+
"do",
|
|
112334
|
+
"does",
|
|
112335
|
+
"for",
|
|
112336
|
+
"from",
|
|
112337
|
+
"had",
|
|
112338
|
+
"has",
|
|
112339
|
+
"have",
|
|
112340
|
+
"he",
|
|
112341
|
+
"how",
|
|
112342
|
+
"i",
|
|
112343
|
+
"if",
|
|
112344
|
+
"in",
|
|
112345
|
+
"is",
|
|
112346
|
+
"it",
|
|
112347
|
+
"its",
|
|
112348
|
+
"me",
|
|
112349
|
+
"my",
|
|
112350
|
+
"no",
|
|
112351
|
+
"not",
|
|
112352
|
+
"of",
|
|
112353
|
+
"on",
|
|
112354
|
+
"or",
|
|
112355
|
+
"our",
|
|
112356
|
+
"she",
|
|
112357
|
+
"so",
|
|
112358
|
+
"that",
|
|
112359
|
+
"the",
|
|
112360
|
+
"their",
|
|
112361
|
+
"them",
|
|
112362
|
+
"then",
|
|
112363
|
+
"there",
|
|
112364
|
+
"they",
|
|
112365
|
+
"this",
|
|
112366
|
+
"to",
|
|
112367
|
+
"was",
|
|
112368
|
+
"we",
|
|
112369
|
+
"were",
|
|
112370
|
+
"what",
|
|
112371
|
+
"when",
|
|
112372
|
+
"where",
|
|
112373
|
+
"which",
|
|
112374
|
+
"who",
|
|
112375
|
+
"why",
|
|
112376
|
+
"will",
|
|
112377
|
+
"with",
|
|
112378
|
+
"you",
|
|
112379
|
+
"your"
|
|
112380
|
+
]);
|
|
112381
|
+
var SCORE_FLOOR_RATIO = 0.25;
|
|
112382
|
+
function processTerm(term) {
|
|
112383
|
+
const normalized = term.toLowerCase();
|
|
112384
|
+
if (normalized.length < MIN_TERM_CHARS)
|
|
112385
|
+
return null;
|
|
112386
|
+
return STOPWORDS.has(normalized) ? null : normalized;
|
|
112387
|
+
}
|
|
112388
|
+
var MINISEARCH_OPTIONS = {
|
|
112389
|
+
idField: "id",
|
|
112390
|
+
fields: SEARCH_FIELDS,
|
|
112391
|
+
storeFields: STORE_FIELDS,
|
|
112392
|
+
processTerm,
|
|
112393
|
+
searchOptions: {
|
|
112394
|
+
boost: { title: 2, preview: 1.2, text: 1 },
|
|
112395
|
+
prefix: (term) => term.length >= PREFIX_MIN_TERM_CHARS
|
|
112396
|
+
}
|
|
112397
|
+
};
|
|
112180
112398
|
function createMiniSearch() {
|
|
112181
|
-
return new MiniSearch(
|
|
112182
|
-
idField: "id",
|
|
112183
|
-
fields: SEARCH_FIELDS,
|
|
112184
|
-
storeFields: STORE_FIELDS,
|
|
112185
|
-
searchOptions: {
|
|
112186
|
-
boost: { title: 2, preview: 1.2, text: 1 },
|
|
112187
|
-
prefix: true
|
|
112188
|
-
}
|
|
112189
|
-
});
|
|
112399
|
+
return new MiniSearch(MINISEARCH_OPTIONS);
|
|
112190
112400
|
}
|
|
112191
112401
|
function toHit(result) {
|
|
112192
112402
|
return {
|
|
@@ -112214,24 +112424,18 @@ var MiniSearchIndex = class _MiniSearchIndex {
|
|
|
112214
112424
|
return index;
|
|
112215
112425
|
}
|
|
112216
112426
|
static load(serialized) {
|
|
112217
|
-
return new _MiniSearchIndex(MiniSearch.loadJSON(serialized,
|
|
112218
|
-
idField: "id",
|
|
112219
|
-
fields: SEARCH_FIELDS,
|
|
112220
|
-
storeFields: STORE_FIELDS,
|
|
112221
|
-
searchOptions: {
|
|
112222
|
-
boost: { title: 2, preview: 1.2, text: 1 },
|
|
112223
|
-
prefix: true
|
|
112224
|
-
}
|
|
112225
|
-
}));
|
|
112427
|
+
return new _MiniSearchIndex(MiniSearch.loadJSON(serialized, MINISEARCH_OPTIONS));
|
|
112226
112428
|
}
|
|
112227
112429
|
add(documents) {
|
|
112228
112430
|
this.index.addAll(documents);
|
|
112229
112431
|
}
|
|
112230
112432
|
search({ query, scopes, limit = 20 }) {
|
|
112231
112433
|
const allowedScopes = scopes ? new Set(scopes) : null;
|
|
112232
|
-
|
|
112434
|
+
const results = this.index.search(query, {
|
|
112233
112435
|
filter: allowedScopes ? (result) => allowedScopes.has(String(result.scope)) : void 0
|
|
112234
|
-
})
|
|
112436
|
+
});
|
|
112437
|
+
const scoreFloor = (results[0]?.score ?? 0) * SCORE_FLOOR_RATIO;
|
|
112438
|
+
return results.filter((result) => result.score >= scoreFloor).slice(0, limit).map(toHit);
|
|
112235
112439
|
}
|
|
112236
112440
|
serialize() {
|
|
112237
112441
|
return JSON.stringify(this.index);
|
|
@@ -112346,7 +112550,7 @@ var rawScopeFileInputSchema = {
|
|
|
112346
112550
|
var STRUCTURED_CONTENT_TEXT_LIMIT_BYTES = 64 * 1024;
|
|
112347
112551
|
var resultTextEncoder = new TextEncoder();
|
|
112348
112552
|
function textResult(value, isError = false) {
|
|
112349
|
-
const text = typeof value === "string" ? value : JSON.stringify(value
|
|
112553
|
+
const text = typeof value === "string" ? value : JSON.stringify(value);
|
|
112350
112554
|
const textBytes = resultTextEncoder.encode(text).byteLength;
|
|
112351
112555
|
const structuredContent = !isError && textBytes <= STRUCTURED_CONTENT_TEXT_LIMIT_BYTES && typeof value === "object" && value !== null && !Array.isArray(value) ? value : void 0;
|
|
112352
112556
|
return {
|
|
@@ -112385,6 +112589,25 @@ function uniqueSources(connection) {
|
|
|
112385
112589
|
}
|
|
112386
112590
|
return Array.from(set2).sort();
|
|
112387
112591
|
}
|
|
112592
|
+
function normalizeBlockIdsInput(value) {
|
|
112593
|
+
if (!Array.isArray(value))
|
|
112594
|
+
return [];
|
|
112595
|
+
const blockIds = [];
|
|
112596
|
+
const seen = /* @__PURE__ */ new Set();
|
|
112597
|
+
for (const raw of value) {
|
|
112598
|
+
if (typeof raw !== "string")
|
|
112599
|
+
continue;
|
|
112600
|
+
const blockId = raw.trim();
|
|
112601
|
+
if (!blockId || blockId.length > BLOCK_ID_MAX_CHARS || seen.has(blockId)) {
|
|
112602
|
+
continue;
|
|
112603
|
+
}
|
|
112604
|
+
seen.add(blockId);
|
|
112605
|
+
blockIds.push(blockId);
|
|
112606
|
+
if (blockIds.length >= MAX_SELECTED_BLOCK_IDS)
|
|
112607
|
+
break;
|
|
112608
|
+
}
|
|
112609
|
+
return blockIds;
|
|
112610
|
+
}
|
|
112388
112611
|
function normalizeScopeListInput(value) {
|
|
112389
112612
|
if (!Array.isArray(value))
|
|
112390
112613
|
return [];
|
|
@@ -112402,28 +112625,33 @@ function normalizeScopeListInput(value) {
|
|
|
112402
112625
|
}
|
|
112403
112626
|
return scopes;
|
|
112404
112627
|
}
|
|
112628
|
+
var MAX_MCP_TOOL_TIMEOUT_MS = 9e4;
|
|
112405
112629
|
var DEFAULT_SEARCH_LIMIT = 5;
|
|
112406
112630
|
var MAX_SEARCH_LIMIT = 50;
|
|
112407
112631
|
var MAX_SEARCH_SCOPES = 200;
|
|
112408
112632
|
var DEFAULT_SEARCH_MAX_SCOPES = MAX_SEARCH_SCOPES;
|
|
112409
112633
|
var DEFAULT_SEARCH_TIMEOUT_MS = 3e4;
|
|
112410
|
-
var MAX_SEARCH_TIMEOUT_MS =
|
|
112634
|
+
var MAX_SEARCH_TIMEOUT_MS = MAX_MCP_TOOL_TIMEOUT_MS;
|
|
112411
112635
|
var DEFAULT_SEARCH_DISCOVERY_TIMEOUT_MS = 2e3;
|
|
112412
|
-
var MAX_SEARCH_TOTAL_TIMEOUT_MS =
|
|
112636
|
+
var MAX_SEARCH_TOTAL_TIMEOUT_MS = MAX_MCP_TOOL_TIMEOUT_MS;
|
|
112413
112637
|
var DEFAULT_READ_SCOPE_MAX_BYTES = 64 * 1024;
|
|
112414
112638
|
var MAX_READ_SCOPE_MAX_BYTES = 5 * 1024 * 1024;
|
|
112415
112639
|
var DEFAULT_READ_SCOPE_TIMEOUT_MS = 6e4;
|
|
112416
|
-
var MAX_READ_SCOPE_TIMEOUT_MS =
|
|
112640
|
+
var MAX_READ_SCOPE_TIMEOUT_MS = MAX_MCP_TOOL_TIMEOUT_MS;
|
|
112417
112641
|
var DEFAULT_READ_FILE_TIMEOUT_MS = 6e4;
|
|
112418
|
-
var MAX_READ_FILE_TIMEOUT_MS =
|
|
112642
|
+
var MAX_READ_FILE_TIMEOUT_MS = MAX_MCP_TOOL_TIMEOUT_MS;
|
|
112419
112643
|
var DEFAULT_READ_FILE_MAX_BYTES = 10 * 1024 * 1024;
|
|
112420
112644
|
var MAX_READ_FILE_MAX_BYTES = 25 * 1024 * 1024;
|
|
112421
112645
|
var DEFAULT_SEARCH_MAX_BYTES = 64 * 1024;
|
|
112422
112646
|
var MAX_SEARCH_MAX_BYTES = 1024 * 1024;
|
|
112423
112647
|
var DEFAULT_SCOPE_METADATA_TIMEOUT_MS = 2e3;
|
|
112424
|
-
var
|
|
112648
|
+
var DEFAULT_LIST_BLOCKS_LIMIT = 100;
|
|
112649
|
+
var MAX_LIST_BLOCKS_LIMIT = 500;
|
|
112650
|
+
var LIST_BLOCKS_TIMEOUT_MS = 15e3;
|
|
112651
|
+
var SEARCH_MAX_PAGES_PER_SCOPE = 256;
|
|
112425
112652
|
var SEARCH_QUERY_MAX_CHARS = 256;
|
|
112426
112653
|
var SEARCH_SCOPE_MAX_CHARS = 128;
|
|
112654
|
+
var BLOCK_ID_MAX_CHARS = 128;
|
|
112427
112655
|
var SEARCH_REQUESTED_SCOPES_LIMIT = MAX_SEARCH_SCOPES * 2;
|
|
112428
112656
|
var SEARCH_SKIPPED_SCOPES_LIMIT = 50;
|
|
112429
112657
|
var SEARCH_PREVIEW_CHARS = 600;
|
|
@@ -112797,10 +113025,11 @@ var requestScopeAccess = {
|
|
|
112797
113025
|
var readScope = {
|
|
112798
113026
|
name: "read_scope",
|
|
112799
113027
|
title: "Read scope",
|
|
112800
|
-
description: "Read approved scope blocks.
|
|
113028
|
+
description: "Read approved scope blocks. Pass blockIds to fetch exact blocks; otherwise page with nextCursor.",
|
|
112801
113029
|
inputSchema: {
|
|
112802
113030
|
scope: external_exports.string().min(1).describe("Exact scope id."),
|
|
112803
113031
|
cursor: external_exports.string().min(1).optional(),
|
|
113032
|
+
blockIds: external_exports.array(external_exports.string().min(1).max(BLOCK_ID_MAX_CHARS)).min(1).max(MAX_SELECTED_BLOCK_IDS).optional().describe("Block ids from a search hit's blockRef or list_scope_blocks. Ignores cursor; maxBytes still applies."),
|
|
112804
113033
|
maxBytes: external_exports.number().int().min(1).max(MAX_READ_SCOPE_MAX_BYTES).optional(),
|
|
112805
113034
|
timeoutMs: external_exports.number().int().min(1e3).max(MAX_READ_SCOPE_TIMEOUT_MS).optional()
|
|
112806
113035
|
},
|
|
@@ -112818,6 +113047,7 @@ var readScope = {
|
|
|
112818
113047
|
}, true);
|
|
112819
113048
|
}
|
|
112820
113049
|
const cursor = typeof args.cursor === "string" ? args.cursor : void 0;
|
|
113050
|
+
const blockIds = normalizeBlockIdsInput(args.blockIds);
|
|
112821
113051
|
const maxBytes = typeof args.maxBytes === "number" ? clampInteger(args.maxBytes, DEFAULT_READ_SCOPE_MAX_BYTES, 1, MAX_READ_SCOPE_MAX_BYTES) : DEFAULT_READ_SCOPE_MAX_BYTES;
|
|
112822
113052
|
const timeoutMs = clampInteger(args.timeoutMs, DEFAULT_READ_SCOPE_TIMEOUT_MS, 1e3, MAX_READ_SCOPE_TIMEOUT_MS);
|
|
112823
113053
|
let guidance;
|
|
@@ -112843,7 +113073,8 @@ var readScope = {
|
|
|
112843
113073
|
scope,
|
|
112844
113074
|
grantId: grant.grantId,
|
|
112845
113075
|
cursor,
|
|
112846
|
-
maxBytes
|
|
113076
|
+
maxBytes,
|
|
113077
|
+
...blockIds.length > 0 ? { blockIds } : {}
|
|
112847
113078
|
}), timeoutMs, `read blocks for ${scope}`);
|
|
112848
113079
|
const nextCursor = result.nextCursor ?? null;
|
|
112849
113080
|
return textResult({
|
|
@@ -112861,7 +113092,8 @@ var readScope = {
|
|
|
112861
113092
|
hasMore: Boolean(result.nextCursor),
|
|
112862
113093
|
maxBytes,
|
|
112863
113094
|
timeoutMs,
|
|
112864
|
-
returnedBlocks: result.blocks.length
|
|
113095
|
+
returnedBlocks: result.blocks.length,
|
|
113096
|
+
...blockIds.length > 0 ? { requestedBlockIds: blockIds } : {}
|
|
112865
113097
|
}
|
|
112866
113098
|
});
|
|
112867
113099
|
} catch (err2) {
|
|
@@ -112889,6 +113121,92 @@ var readScope = {
|
|
|
112889
113121
|
}
|
|
112890
113122
|
}
|
|
112891
113123
|
};
|
|
113124
|
+
var listScopeBlocks = {
|
|
113125
|
+
name: "list_scope_blocks",
|
|
113126
|
+
title: "List scope blocks",
|
|
113127
|
+
description: "Scope table of contents: block ids, paths, sizes. Feed ids to read_scope blockIds.",
|
|
113128
|
+
inputSchema: {
|
|
113129
|
+
scope: external_exports.string().min(1).describe("Exact scope id."),
|
|
113130
|
+
offset: external_exports.number().int().min(0).optional(),
|
|
113131
|
+
limit: external_exports.number().int().min(1).max(MAX_LIST_BLOCKS_LIMIT).optional()
|
|
113132
|
+
},
|
|
113133
|
+
async handler(args, { connection, readClient }) {
|
|
113134
|
+
const scope = typeof args.scope === "string" ? args.scope : null;
|
|
113135
|
+
if (!scope) {
|
|
113136
|
+
return textResult({ error: "scope is required and must be a string" }, true);
|
|
113137
|
+
}
|
|
113138
|
+
const grant = resolveGrantForScope(connection, scope);
|
|
113139
|
+
if (!grant) {
|
|
113140
|
+
return textResult({
|
|
113141
|
+
error: "scope_not_granted",
|
|
113142
|
+
message: `Scope '${scope}' is not covered by any grant on this MCP connection.`,
|
|
113143
|
+
grantedScopes: uniqueScopes(connection)
|
|
113144
|
+
}, true);
|
|
113145
|
+
}
|
|
113146
|
+
if (typeof readClient.readBlockManifest !== "function") {
|
|
113147
|
+
return textResult({
|
|
113148
|
+
scope,
|
|
113149
|
+
blocks: [],
|
|
113150
|
+
manifestAvailable: false,
|
|
113151
|
+
reason: "this server build does not expose block manifests",
|
|
113152
|
+
nextStep: "Use read_scope with nextCursor, or search_personal_context."
|
|
113153
|
+
});
|
|
113154
|
+
}
|
|
113155
|
+
const offset = clampInteger(args.offset, 0, 0, Number.MAX_SAFE_INTEGER);
|
|
113156
|
+
const limit = clampInteger(args.limit, DEFAULT_LIST_BLOCKS_LIMIT, 1, MAX_LIST_BLOCKS_LIMIT);
|
|
113157
|
+
try {
|
|
113158
|
+
const manifest = await withTimeout(readClient.readBlockManifest({ scope, grantId: grant.grantId }), LIST_BLOCKS_TIMEOUT_MS, `read block manifest for ${scope}`);
|
|
113159
|
+
if (!manifest) {
|
|
113160
|
+
return textResult({
|
|
113161
|
+
scope,
|
|
113162
|
+
grantId: grant.grantId,
|
|
113163
|
+
blocks: [],
|
|
113164
|
+
manifestAvailable: false,
|
|
113165
|
+
reason: "no block manifest for this scope yet; it may still be indexing",
|
|
113166
|
+
nextStep: "Use read_scope with nextCursor, or search_personal_context."
|
|
113167
|
+
});
|
|
113168
|
+
}
|
|
113169
|
+
const page = manifest.blocks.slice(offset, offset + limit);
|
|
113170
|
+
const nextOffset = offset + page.length;
|
|
113171
|
+
return textResult({
|
|
113172
|
+
scope,
|
|
113173
|
+
grantId: grant.grantId,
|
|
113174
|
+
collectedAt: manifest.collectedAt,
|
|
113175
|
+
contentKind: manifest.contentKind,
|
|
113176
|
+
manifestAvailable: true,
|
|
113177
|
+
totalBlocks: manifest.blocks.length,
|
|
113178
|
+
blocks: page.map((block) => ({
|
|
113179
|
+
id: block.id,
|
|
113180
|
+
path: block.path,
|
|
113181
|
+
sizeBytes: block.sizeBytes,
|
|
113182
|
+
...block.itemCount === void 0 ? {} : { itemCount: block.itemCount }
|
|
113183
|
+
})),
|
|
113184
|
+
warnings: manifest.warnings,
|
|
113185
|
+
page: {
|
|
113186
|
+
offset,
|
|
113187
|
+
limit,
|
|
113188
|
+
returnedBlocks: page.length,
|
|
113189
|
+
...nextOffset < manifest.blocks.length ? { nextOffset } : {}
|
|
113190
|
+
}
|
|
113191
|
+
});
|
|
113192
|
+
} catch (err2) {
|
|
113193
|
+
if (err2 instanceof OperationTimeoutError) {
|
|
113194
|
+
return textResult({
|
|
113195
|
+
error: "scope_blocks_timeout",
|
|
113196
|
+
message: err2.message,
|
|
113197
|
+
timeoutMs: err2.timeoutMs
|
|
113198
|
+
}, true);
|
|
113199
|
+
}
|
|
113200
|
+
if (err2 instanceof McpDataReadError) {
|
|
113201
|
+
return textResult({ error: "data_read_failed", status: err2.status, body: err2.body }, true);
|
|
113202
|
+
}
|
|
113203
|
+
return textResult({
|
|
113204
|
+
error: "tool_handler_error",
|
|
113205
|
+
message: err2 instanceof Error ? err2.message : String(err2)
|
|
113206
|
+
}, true);
|
|
113207
|
+
}
|
|
113208
|
+
}
|
|
113209
|
+
};
|
|
112892
113210
|
function encodeSearchCursor(payload) {
|
|
112893
113211
|
const json2 = JSON.stringify(payload);
|
|
112894
113212
|
const bytes2 = new TextEncoder().encode(json2);
|
|
@@ -113033,7 +113351,6 @@ var searchPersonalContext = {
|
|
|
113033
113351
|
}
|
|
113034
113352
|
let cursor = scopeIndex === startScopeIndex ? initialBlockCursor : void 0;
|
|
113035
113353
|
let pageCount = 0;
|
|
113036
|
-
let scopeHasMatch = false;
|
|
113037
113354
|
let scopeTruncated = false;
|
|
113038
113355
|
let scopeSearched = false;
|
|
113039
113356
|
try {
|
|
@@ -113063,9 +113380,13 @@ var searchPersonalContext = {
|
|
|
113063
113380
|
}), perScopeTimeoutMs, `read blocks for ${scope}`);
|
|
113064
113381
|
const pageText = blockPageSearchText(result.blocks);
|
|
113065
113382
|
const { documents, textById } = blockPageSearchDocuments(scope, result.blocks);
|
|
113066
|
-
const pageHits = documents.length > 0 ? MiniSearchIndex.build(documents).search({
|
|
113067
|
-
|
|
113068
|
-
|
|
113383
|
+
const pageHits = documents.length > 0 ? MiniSearchIndex.build(documents).search({
|
|
113384
|
+
query,
|
|
113385
|
+
limit: limit - matches.length
|
|
113386
|
+
}) : [];
|
|
113387
|
+
for (const pageHit of pageHits) {
|
|
113388
|
+
if (matches.length >= limit)
|
|
113389
|
+
break;
|
|
113069
113390
|
const hitText = textById.get(pageHit.id) ?? pageText;
|
|
113070
113391
|
matches.push({
|
|
113071
113392
|
scope,
|
|
@@ -113073,9 +113394,13 @@ var searchPersonalContext = {
|
|
|
113073
113394
|
collectedAt: result.collectedAt,
|
|
113074
113395
|
preview: previewMatch(hitText, miniSearchMatchIndex(hitText, pageHit.terms)),
|
|
113075
113396
|
searchedChars: pageText.length,
|
|
113076
|
-
truncated: Boolean(result.nextCursor)
|
|
113397
|
+
truncated: Boolean(result.nextCursor),
|
|
113398
|
+
// The id of the block that matched, so the caller can fetch it
|
|
113399
|
+
// with read_scope({ blockIds }) instead of walking cursors.
|
|
113400
|
+
...pageHit.blockRef ? { blockRef: pageHit.blockRef } : {},
|
|
113401
|
+
score: pageHit.score,
|
|
113402
|
+
terms: pageHit.terms
|
|
113077
113403
|
});
|
|
113078
|
-
scopeHasMatch = true;
|
|
113079
113404
|
}
|
|
113080
113405
|
if (result.nextCursor) {
|
|
113081
113406
|
cursor = result.nextCursor;
|
|
@@ -113104,7 +113429,7 @@ var searchPersonalContext = {
|
|
|
113104
113429
|
}
|
|
113105
113430
|
if (matches.length >= limit) {
|
|
113106
113431
|
const nextScopeIndex = scopeIndex + 1;
|
|
113107
|
-
if (nextScopeIndex < resolved.scopes.length) {
|
|
113432
|
+
if (!nextSearchCursor && nextScopeIndex < resolved.scopes.length) {
|
|
113108
113433
|
nextSearchCursor = encodeSearchCursor({
|
|
113109
113434
|
scopeIndex: nextScopeIndex
|
|
113110
113435
|
});
|
|
@@ -113113,6 +113438,7 @@ var searchPersonalContext = {
|
|
|
113113
113438
|
}
|
|
113114
113439
|
}
|
|
113115
113440
|
const elapsedMs = Date.now() - startedAt;
|
|
113441
|
+
matches.sort((a10, b10) => (b10.score ?? -1) - (a10.score ?? -1));
|
|
113116
113442
|
return textResult({
|
|
113117
113443
|
query,
|
|
113118
113444
|
results: matches,
|
|
@@ -113197,7 +113523,7 @@ var getScopeFile = {
|
|
|
113197
113523
|
contentIncluded: false,
|
|
113198
113524
|
reason: !includeContent ? "includeContent=false" : "file exceeds maxBytes for inline MCP tool response",
|
|
113199
113525
|
nextStep: "Use resources/read with resourceUri if your MCP client supports resources, or retry with a higher maxBytes if appropriate."
|
|
113200
|
-
}
|
|
113526
|
+
})
|
|
113201
113527
|
},
|
|
113202
113528
|
{
|
|
113203
113529
|
type: "resource_link",
|
|
@@ -113223,7 +113549,7 @@ var getScopeFile = {
|
|
|
113223
113549
|
...base,
|
|
113224
113550
|
contentIncluded: true,
|
|
113225
113551
|
resourceType: "blob"
|
|
113226
|
-
}
|
|
113552
|
+
})
|
|
113227
113553
|
},
|
|
113228
113554
|
{
|
|
113229
113555
|
type: "resource",
|
|
@@ -113268,6 +113594,7 @@ var MCP_TOOLS = [
|
|
|
113268
113594
|
listGrantedScopes,
|
|
113269
113595
|
requestScopeAccess,
|
|
113270
113596
|
readScope,
|
|
113597
|
+
listScopeBlocks,
|
|
113271
113598
|
getScopeFile,
|
|
113272
113599
|
searchPersonalContext
|
|
113273
113600
|
];
|
|
@@ -123583,10 +123910,9 @@ data:
|
|
|
123583
123910
|
var DEFAULT_SERVER_NAME = "vana-personal-server-mcp";
|
|
123584
123911
|
var DEFAULT_SERVER_VERSION = "0.0.1";
|
|
123585
123912
|
var DEFAULT_MCP_TOOL_TIMEOUT_MS = 3e4;
|
|
123586
|
-
var MAX_MCP_TOOL_TIMEOUT_MS = 9e4;
|
|
123587
123913
|
var MCP_TOOL_TIMEOUT_GRACE_MS = 1e3;
|
|
123588
123914
|
var QUERY_PREVIEW_CHARS = 120;
|
|
123589
|
-
var
|
|
123915
|
+
var textEncoder5 = new TextEncoder();
|
|
123590
123916
|
var McpToolTimeoutError = class extends Error {
|
|
123591
123917
|
tool;
|
|
123592
123918
|
timeoutMs;
|
|
@@ -123679,7 +124005,7 @@ function extractActivityFinishParams(tool, result) {
|
|
|
123679
124005
|
return {};
|
|
123680
124006
|
}
|
|
123681
124007
|
function bytes(value) {
|
|
123682
|
-
return
|
|
124008
|
+
return textEncoder5.encode(value).byteLength;
|
|
123683
124009
|
}
|
|
123684
124010
|
function estimatePayloadMetrics(result) {
|
|
123685
124011
|
const textBytes = result.content?.reduce((total, item) => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opendatalabs/personal-server-ts-server",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.4",
|
|
4
4
|
"description": "Hono HTTP server for the Vana Personal Server — routes, middleware, composition root",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -44,8 +44,8 @@
|
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
46
|
"@hono/node-server": "^1.19.13",
|
|
47
|
-
"@opendatalabs/personal-server-ts-core": "1.3.
|
|
48
|
-
"@opendatalabs/personal-server-ts-lite": "1.3.
|
|
47
|
+
"@opendatalabs/personal-server-ts-core": "1.3.4",
|
|
48
|
+
"@opendatalabs/personal-server-ts-lite": "1.3.4",
|
|
49
49
|
"@opendatalabs/vana-sdk": "3.13.0",
|
|
50
50
|
"better-sqlite3": "^12.11.1",
|
|
51
51
|
"hono": "^4.12.27",
|