@telepath-computer/autofile 0.3.0 → 0.4.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/README.md +33 -19
- package/dist/blobs.d.ts +9 -22
- package/dist/blobs.js +35 -171
- package/dist/blobs.js.map +1 -1
- package/dist/cli.js +15 -9
- package/dist/cli.js.map +1 -1
- package/dist/http.d.ts +2 -2
- package/dist/http.js +10 -5
- package/dist/http.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/json.d.ts +3 -1
- package/dist/json.js +81 -2
- package/dist/json.js.map +1 -1
- package/dist/mcp-resources.d.ts +31 -0
- package/dist/mcp-resources.js +111 -0
- package/dist/mcp-resources.js.map +1 -0
- package/dist/mcp-tools.d.ts +113 -0
- package/dist/mcp-tools.js +89 -0
- package/dist/mcp-tools.js.map +1 -0
- package/dist/mcp-upload.d.ts +16 -0
- package/dist/mcp-upload.js +81 -0
- package/dist/mcp-upload.js.map +1 -0
- package/dist/mcp-watch.d.ts +18 -0
- package/dist/mcp-watch.js +165 -0
- package/dist/mcp-watch.js.map +1 -0
- package/dist/schema.d.ts +1 -1
- package/dist/schema.js +8 -2
- package/dist/schema.js.map +1 -1
- package/dist/server.d.ts +2 -2
- package/dist/server.js +58 -38
- package/dist/server.js.map +1 -1
- package/dist/store.d.ts +90 -110
- package/dist/store.js +532 -524
- package/dist/store.js.map +1 -1
- package/dist/watch.d.ts +6 -18
- package/dist/watch.js +73 -191
- package/dist/watch.js.map +1 -1
- package/package.json +7 -1
package/README.md
CHANGED
|
@@ -6,9 +6,9 @@ Autofile is designed for:
|
|
|
6
6
|
|
|
7
7
|
- **No ambiguity on input.** Every kind of information has one defined place and type, with clear instructions for how it is filed.
|
|
8
8
|
- **Efficient retrieval.** Agents find what they need by keyword search, by matching on typed properties, and by following links between records.
|
|
9
|
-
- **
|
|
9
|
+
- **Shared access.** Agents and programs use the same records, types and attachments through MCP or the library.
|
|
10
10
|
|
|
11
|
-
Autofile is an [MCP](https://modelcontextprotocol.io) server. Agents use
|
|
11
|
+
Autofile is an [MCP](https://modelcontextprotocol.io) server and a library. Agents use its tools and resources; programs can embed the same store through the `Autofile` class.
|
|
12
12
|
|
|
13
13
|
## Install
|
|
14
14
|
|
|
@@ -32,38 +32,52 @@ For another client, add an MCP server whose command is `autofile`, with no argum
|
|
|
32
32
|
|
|
33
33
|
Autofile starts with no types. Ask your agent to file something: it proposes a type, such as `contact` with the fields a contact needs, and creates it once you agree. It then files records of that type, and finds them again by search, by field value, or by following links between records.
|
|
34
34
|
|
|
35
|
-
##
|
|
35
|
+
## Choose a store
|
|
36
36
|
|
|
37
|
-
Autofile
|
|
37
|
+
Autofile uses a default store until the `storage` setting selects another. Changing that setting moves no records and takes effect when clients restart Autofile. See [storage configuration](spec/storage.md#folders) for the current implementation and [Commands](spec/index.md#commands) for other settings.
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
~/.autofile/data/
|
|
41
|
-
_types/contact.json the declaration of the type contact
|
|
42
|
-
contact/priya-narayan.json a record of that type
|
|
43
|
-
_blobs/9f86d081…0a08.pdf a file stored with a record
|
|
44
|
-
```
|
|
39
|
+
## Serve over HTTP
|
|
45
40
|
|
|
46
|
-
|
|
41
|
+
For clients that connect over HTTP, such as a web page, run:
|
|
47
42
|
|
|
48
43
|
```sh
|
|
49
|
-
autofile
|
|
44
|
+
autofile serve
|
|
50
45
|
```
|
|
51
46
|
|
|
52
|
-
|
|
47
|
+
This serves the same tools and resources at `http://127.0.0.1:7319/mcp` until stopped. Autofile does not authenticate HTTP clients: anything that can reach the address can read and change every record. It therefore listens only on this machine by default, and accepts requests from web pages only when they are served from this machine. [Serving over HTTP](spec/index.md#serving-over-http) explains how to change the address, the port, and the web pages it accepts.
|
|
53
48
|
|
|
54
|
-
##
|
|
49
|
+
## Use as a library
|
|
55
50
|
|
|
56
|
-
|
|
51
|
+
Install the package in your project with `npm install @telepath-computer/autofile`, then import the ES module:
|
|
57
52
|
|
|
58
|
-
```
|
|
59
|
-
autofile
|
|
53
|
+
```js
|
|
54
|
+
import { Autofile } from "@telepath-computer/autofile";
|
|
55
|
+
|
|
56
|
+
const store = new Autofile({ folder: "./records" });
|
|
57
|
+
try {
|
|
58
|
+
const { records } = await store.records.find({ q: "dentist" });
|
|
59
|
+
for (const record of records) console.log(record.title ?? record.uri);
|
|
60
|
+
} finally {
|
|
61
|
+
await store.close();
|
|
62
|
+
}
|
|
60
63
|
```
|
|
61
64
|
|
|
62
|
-
|
|
65
|
+
The `folder` option is the path of a store in the current implementation; [Storage](spec/storage.md) describes its format. Importing starts no server or watcher, and construction does no I/O. The first operation initializes the store if needed. [Library API](spec/index.md#library-api) covers writing records, declaring types, blobs, change subscriptions and errors.
|
|
66
|
+
|
|
67
|
+
Record addresses use `autofile:///<type>/<key>`, type declarations use `autofile:///_types/<name>`, and attachments use `autofile:///_blobs/<hash>.<ext>`. Keep and reuse these addresses as opaque identifiers; they do not tell a client how data is stored.
|
|
68
|
+
|
|
69
|
+
Upload an attachment before writing the record that holds it. `blobs.put(bytes, mediaType)` takes a `Uint8Array` and returns an address; put that address in a field marked `"format": "blob"` in the type schema. For an open store with a `document` type that declares `title` and `attachment` fields:
|
|
70
|
+
|
|
71
|
+
```js
|
|
72
|
+
const uri = await store.blobs.put(new TextEncoder().encode("Meeting notes"), "text/plain");
|
|
73
|
+
await store.records.create("document", { title: "Meeting notes", attachment: uri });
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Records may share an attachment address. MCP clients use `upload_blob` with base64 bytes and a media type, or an absolute local file path over stdio, then put the returned address in the record. Record writes accept neither data URIs nor local paths in blob fields.
|
|
63
77
|
|
|
64
78
|
## Specification
|
|
65
79
|
|
|
66
|
-
[spec/index.md](spec/index.md) describes
|
|
80
|
+
[spec/index.md](spec/index.md) describes records, types, links, attachments, the MCP tools and resources, and the commands. [Storage](spec/storage.md) specifies the on-disk format, and [Implementation](spec/implementation.md) describes the code.
|
|
67
81
|
|
|
68
82
|
## Development
|
|
69
83
|
|
package/dist/blobs.d.ts
CHANGED
|
@@ -1,34 +1,21 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Parses, checks, and persists blob-field inputs. Candidate preparation is
|
|
3
|
-
* deliberately separate from persistence so a refused record write cannot
|
|
4
|
-
* leave a blob behind.
|
|
5
|
-
*/
|
|
1
|
+
/** Stores explicitly uploaded attachments and checks their canonical addresses. */
|
|
6
2
|
/** Largest blob that fits in one MCP message after base64 encoding. */
|
|
7
3
|
export declare const MAX_BLOB_BYTES = 7340032;
|
|
8
4
|
/** Canonical names Autofile recognizes in its blob folder. */
|
|
9
5
|
export declare const BLOB_NAME_PATTERN: RegExp;
|
|
10
6
|
/** Canonical URIs Autofile recognizes for stored blobs. */
|
|
11
7
|
export declare const BLOB_URI_PATTERN: RegExp;
|
|
12
|
-
/**
|
|
13
|
-
export
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
|
|
20
|
-
message: string;
|
|
21
|
-
}
|
|
22
|
-
/** Returns whether the value has one of the three syntactic blob input forms. */
|
|
23
|
-
export declare function isBlobInput(value: unknown): value is string;
|
|
24
|
-
/** Checks and materializes one candidate without changing the blob folder. */
|
|
25
|
-
export declare function prepareBlob(value: string, blobFolder: string, allowLocalPaths: boolean): Promise<PreparedBlob | BlobRefusal>;
|
|
26
|
-
/** Stores checked blobs atomically, skipping any destination already present. */
|
|
27
|
-
export declare function writePreparedBlobs(blobFolder: string, blobs: Iterable<PreparedBlob>): Promise<void>;
|
|
8
|
+
/** Stores one attachment atomically, reusing an existing regular file. */
|
|
9
|
+
export declare function writeBlob(blobFolder: string, bytes: Buffer, mediaType: string): Promise<string>;
|
|
10
|
+
/** Reports unavailable or oversized bytes for a canonical attachment address. */
|
|
11
|
+
export declare function blobReferenceProblem(blobFolder: string, uri: string): Promise<string | undefined>;
|
|
12
|
+
/** Checks the bare media type accepted by explicit uploads. */
|
|
13
|
+
export declare function isMediaType(value: unknown): value is string;
|
|
14
|
+
/** Gives the upload size and the accepted limit in the existing refusal form. */
|
|
15
|
+
export declare function blobSizeProblem(size: number): string;
|
|
28
16
|
/** Deletes the named canonical blob resources when they still exist. */
|
|
29
17
|
export declare function deleteBlobUris(blobFolder: string, uris: Iterable<string>): Promise<void>;
|
|
30
18
|
/** Returns the canonical blob name from a URI. */
|
|
31
19
|
export declare function blobNameFromUri(uri: string): string | undefined;
|
|
32
20
|
/** Builds the canonical URI for a recognized blob name. */
|
|
33
21
|
export declare function blobUri(name: string): string;
|
|
34
|
-
export {};
|
package/dist/blobs.js
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Parses, checks, and persists blob-field inputs. Candidate preparation is
|
|
3
|
-
* deliberately separate from persistence so a refused record write cannot
|
|
4
|
-
* leave a blob behind.
|
|
5
|
-
*/
|
|
1
|
+
/** Stores explicitly uploaded attachments and checks their canonical addresses. */
|
|
6
2
|
import { createHash, randomUUID } from "node:crypto";
|
|
7
3
|
import { constants } from "node:fs";
|
|
8
4
|
import { lstat, mkdir, open, rename, unlink, writeFile } from "node:fs/promises";
|
|
9
|
-
import { basename, dirname,
|
|
5
|
+
import { basename, dirname, join } from "node:path";
|
|
10
6
|
import { extension as extensionForMimeType } from "mime-types";
|
|
11
7
|
const BLOB_EXTENSION_PATTERN_SOURCE = "[a-z0-9_-]+";
|
|
12
8
|
/** Largest blob that fits in one MCP message after base64 encoding. */
|
|
@@ -15,69 +11,40 @@ export const MAX_BLOB_BYTES = 7_340_032;
|
|
|
15
11
|
export const BLOB_NAME_PATTERN = new RegExp(`^[a-f0-9]{64}(?:\\.${BLOB_EXTENSION_PATTERN_SOURCE})?$`, "u");
|
|
16
12
|
/** Canonical URIs Autofile recognizes for stored blobs. */
|
|
17
13
|
export const BLOB_URI_PATTERN = new RegExp(`^autofile:///_blobs/([a-f0-9]{64}(?:\\.${BLOB_EXTENSION_PATTERN_SOURCE})?)$`, "u");
|
|
18
|
-
const SOURCE_READ_CHUNK_BYTES = 64 * 1024;
|
|
19
14
|
const blobExtensionPattern = new RegExp(`^${BLOB_EXTENSION_PATTERN_SOURCE}$`, "u");
|
|
20
|
-
/**
|
|
21
|
-
export function
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
export async function prepareBlob(value, blobFolder, allowLocalPaths) {
|
|
27
|
-
const blobName = blobNameFromUri(value);
|
|
28
|
-
if (blobName !== undefined) {
|
|
29
|
-
const details = await storedBlobDetails(blobFolder, blobName);
|
|
30
|
-
if (details === undefined)
|
|
31
|
-
return { message: `references a blob that does not exist: ${value}` };
|
|
32
|
-
if (details.size > MAX_BLOB_BYTES)
|
|
33
|
-
return sizeRefusal(details.size);
|
|
34
|
-
return { uri: value, name: blobName };
|
|
35
|
-
}
|
|
36
|
-
if (isAbsolute(value)) {
|
|
37
|
-
if (!allowLocalPaths) {
|
|
38
|
-
return { message: "local paths are accepted only over stdio, not HTTP" };
|
|
39
|
-
}
|
|
40
|
-
const source = await openRegularFile(value, false);
|
|
41
|
-
if (source === undefined)
|
|
42
|
-
return { message: `path does not exist or is not a file: ${value}` };
|
|
43
|
-
try {
|
|
44
|
-
if (source.size > MAX_BLOB_BYTES)
|
|
45
|
-
return sizeRefusal(source.size);
|
|
46
|
-
const bytes = await readSourceFile(source.handle);
|
|
47
|
-
if ("message" in bytes)
|
|
48
|
-
return bytes;
|
|
49
|
-
return preparedBytes(bytes, pathExtension(value));
|
|
50
|
-
}
|
|
51
|
-
finally {
|
|
52
|
-
await source.handle.close();
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
const data = parseDataUri(value);
|
|
56
|
-
if (data === undefined)
|
|
57
|
-
return { message: "must be a blob URI, an absolute path, or a base64 data URI" };
|
|
58
|
-
if (data.size > MAX_BLOB_BYTES)
|
|
59
|
-
return sizeRefusal(data.size);
|
|
60
|
-
return preparedBytes(Buffer.from(data.base64, "base64"), data.extension);
|
|
61
|
-
}
|
|
62
|
-
/** Stores checked blobs atomically, skipping any destination already present. */
|
|
63
|
-
export async function writePreparedBlobs(blobFolder, blobs) {
|
|
64
|
-
const pending = [...blobs].filter((blob) => blob.bytes !== undefined);
|
|
65
|
-
if (pending.length === 0)
|
|
66
|
-
return;
|
|
15
|
+
/** Stores one attachment atomically, reusing an existing regular file. */
|
|
16
|
+
export async function writeBlob(blobFolder, bytes, mediaType) {
|
|
17
|
+
const extension = extensionForMimeType(mediaType.toLowerCase());
|
|
18
|
+
const suffix = extension === false ? undefined : normalizeExtension(extension);
|
|
19
|
+
const digest = createHash("sha256").update(bytes).digest("hex");
|
|
20
|
+
const name = `${digest}${suffix === undefined ? "" : `.${suffix}`}`;
|
|
67
21
|
await mkdir(blobFolder, { recursive: true });
|
|
68
22
|
if (!await isDirectory(blobFolder)) {
|
|
69
23
|
throw Object.assign(new Error("blob folder is not a directory"), { code: "ENOTDIR" });
|
|
70
24
|
}
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
25
|
+
const path = join(blobFolder, name);
|
|
26
|
+
if (!await isRegularFile(path))
|
|
27
|
+
await writeBlobAtomically(path, bytes);
|
|
28
|
+
return blobUri(name);
|
|
29
|
+
}
|
|
30
|
+
/** Reports unavailable or oversized bytes for a canonical attachment address. */
|
|
31
|
+
export async function blobReferenceProblem(blobFolder, uri) {
|
|
32
|
+
const name = blobNameFromUri(uri);
|
|
33
|
+
const details = name === undefined ? undefined : await storedBlobDetails(blobFolder, name);
|
|
34
|
+
if (details === undefined)
|
|
35
|
+
return `references a blob that does not exist: ${uri}`;
|
|
36
|
+
return details.size > MAX_BLOB_BYTES ? blobSizeProblem(details.size) : undefined;
|
|
37
|
+
}
|
|
38
|
+
/** Checks the bare media type accepted by explicit uploads. */
|
|
39
|
+
export function isMediaType(value) {
|
|
40
|
+
if (typeof value !== "string")
|
|
41
|
+
return false;
|
|
42
|
+
const token = "[!#$%&'*+.^_`|~0-9A-Za-z-]+";
|
|
43
|
+
return new RegExp(`^${token}/${token}$`, "u").test(value);
|
|
44
|
+
}
|
|
45
|
+
/** Gives the upload size and the accepted limit in the existing refusal form. */
|
|
46
|
+
export function blobSizeProblem(size) {
|
|
47
|
+
return `blob is ${String(size)} bytes; limit is ${String(MAX_BLOB_BYTES)} bytes`;
|
|
81
48
|
}
|
|
82
49
|
/** Deletes the named canonical blob resources when they still exist. */
|
|
83
50
|
export async function deleteBlobUris(blobFolder, uris) {
|
|
@@ -98,106 +65,20 @@ export async function deleteBlobUris(blobFolder, uris) {
|
|
|
98
65
|
}
|
|
99
66
|
/** Returns the canonical blob name from a URI. */
|
|
100
67
|
export function blobNameFromUri(uri) {
|
|
101
|
-
return BLOB_URI_PATTERN.exec(uri)?.[1];
|
|
68
|
+
return typeof uri === "string" ? BLOB_URI_PATTERN.exec(uri)?.[1] : undefined;
|
|
102
69
|
}
|
|
103
70
|
/** Builds the canonical URI for a recognized blob name. */
|
|
104
71
|
export function blobUri(name) {
|
|
105
72
|
return `autofile:///_blobs/${name}`;
|
|
106
73
|
}
|
|
107
|
-
function preparedBytes(bytes, extension) {
|
|
108
|
-
const digest = createHash("sha256").update(bytes).digest("hex");
|
|
109
|
-
const name = `${digest}${extension === undefined ? "" : `.${extension}`}`;
|
|
110
|
-
return { uri: blobUri(name), name, bytes };
|
|
111
|
-
}
|
|
112
|
-
function parseDataUri(value) {
|
|
113
|
-
if (value.slice(0, "data:".length).toLowerCase() !== "data:")
|
|
114
|
-
return undefined;
|
|
115
|
-
const comma = value.indexOf(",", "data:".length);
|
|
116
|
-
if (comma === -1)
|
|
117
|
-
return undefined;
|
|
118
|
-
const header = value.slice("data:".length, comma);
|
|
119
|
-
const marker = ";base64";
|
|
120
|
-
if (header.slice(-marker.length).toLowerCase() !== marker)
|
|
121
|
-
return undefined;
|
|
122
|
-
const metadata = header.slice(0, -marker.length);
|
|
123
|
-
const base64 = value.slice(comma + 1);
|
|
124
|
-
if (!isCanonicalBase64(base64))
|
|
125
|
-
return undefined;
|
|
126
|
-
const [mediaType = "", ...parameters] = metadata.split(";");
|
|
127
|
-
if ((mediaType !== "" && !isMediaType(mediaType))
|
|
128
|
-
|| parameters.some((parameter) => !isMediaTypeParameter(parameter))) {
|
|
129
|
-
return undefined;
|
|
130
|
-
}
|
|
131
|
-
const normalizedMediaType = mediaType === "" ? "text/plain" : mediaType.toLowerCase();
|
|
132
|
-
const usualExtension = extensionForMimeType(normalizedMediaType);
|
|
133
|
-
const extension = usualExtension === false ? undefined : normalizeExtension(usualExtension);
|
|
134
|
-
return {
|
|
135
|
-
base64,
|
|
136
|
-
...(extension === undefined ? {} : { extension }),
|
|
137
|
-
size: decodedBase64Size(base64),
|
|
138
|
-
};
|
|
139
|
-
}
|
|
140
|
-
function isCanonicalBase64(value) {
|
|
141
|
-
if (value.length % 4 !== 0)
|
|
142
|
-
return false;
|
|
143
|
-
const padding = value.endsWith("==") ? 2 : value.endsWith("=") ? 1 : 0;
|
|
144
|
-
const contentLength = value.length - padding;
|
|
145
|
-
if (padding === 2 && contentLength % 4 !== 2)
|
|
146
|
-
return false;
|
|
147
|
-
if (padding === 1 && contentLength % 4 !== 3)
|
|
148
|
-
return false;
|
|
149
|
-
for (let index = 0; index < contentLength; index += 1) {
|
|
150
|
-
const code = value.charCodeAt(index);
|
|
151
|
-
if (!(code >= 0x41 && code <= 0x5a)
|
|
152
|
-
&& !(code >= 0x61 && code <= 0x7a)
|
|
153
|
-
&& !(code >= 0x30 && code <= 0x39)
|
|
154
|
-
&& code !== 0x2b
|
|
155
|
-
&& code !== 0x2f) {
|
|
156
|
-
return false;
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
if (padding > 0) {
|
|
160
|
-
const finalCode = value.charCodeAt(contentLength - 1);
|
|
161
|
-
const finalSextet = finalCode >= 0x41 && finalCode <= 0x5a
|
|
162
|
-
? finalCode - 0x41
|
|
163
|
-
: finalCode >= 0x61 && finalCode <= 0x7a
|
|
164
|
-
? finalCode - 0x61 + 26
|
|
165
|
-
: finalCode >= 0x30 && finalCode <= 0x39
|
|
166
|
-
? finalCode - 0x30 + 52
|
|
167
|
-
: finalCode === 0x2b ? 62 : 63;
|
|
168
|
-
const unusedBits = padding === 2 ? 4 : 2;
|
|
169
|
-
if ((finalSextet & ((1 << unusedBits) - 1)) !== 0)
|
|
170
|
-
return false;
|
|
171
|
-
}
|
|
172
|
-
return true;
|
|
173
|
-
}
|
|
174
|
-
function decodedBase64Size(value) {
|
|
175
|
-
if (value.length === 0)
|
|
176
|
-
return 0;
|
|
177
|
-
const padding = value.endsWith("==") ? 2 : value.endsWith("=") ? 1 : 0;
|
|
178
|
-
return value.length / 4 * 3 - padding;
|
|
179
|
-
}
|
|
180
|
-
function isMediaType(value) {
|
|
181
|
-
const token = "[!#$%&'*+.^_`|~0-9A-Za-z-]+";
|
|
182
|
-
return new RegExp(`^${token}/${token}$`, "u").test(value);
|
|
183
|
-
}
|
|
184
|
-
function isMediaTypeParameter(value) {
|
|
185
|
-
return /^[!#$%&'*+.^_`|~0-9A-Za-z-]+=[^\s,;]+$/u.test(value);
|
|
186
|
-
}
|
|
187
|
-
function pathExtension(path) {
|
|
188
|
-
return normalizeExtension(extname(basename(path)).slice(1));
|
|
189
|
-
}
|
|
190
74
|
function normalizeExtension(extension) {
|
|
191
75
|
const normalized = extension.toLowerCase();
|
|
192
76
|
return blobExtensionPattern.test(normalized) ? normalized : undefined;
|
|
193
77
|
}
|
|
194
|
-
function sizeRefusal(size) {
|
|
195
|
-
return { message: `blob is ${String(size)} bytes; limit is ${String(MAX_BLOB_BYTES)} bytes` };
|
|
196
|
-
}
|
|
197
78
|
async function storedBlobDetails(blobFolder, name) {
|
|
198
79
|
if (!await isDirectory(blobFolder))
|
|
199
80
|
return undefined;
|
|
200
|
-
const file = await openRegularFile(join(blobFolder, name)
|
|
81
|
+
const file = await openRegularFile(join(blobFolder, name));
|
|
201
82
|
if (file === undefined)
|
|
202
83
|
return undefined;
|
|
203
84
|
try {
|
|
@@ -207,27 +88,10 @@ async function storedBlobDetails(blobFolder, name) {
|
|
|
207
88
|
await file.handle.close();
|
|
208
89
|
}
|
|
209
90
|
}
|
|
210
|
-
async function
|
|
211
|
-
const chunks = [];
|
|
212
|
-
let size = 0;
|
|
213
|
-
while (true) {
|
|
214
|
-
// The extra byte proves the source is too large without allowing a file that grew after stat,
|
|
215
|
-
// or a regular special file with an inaccurate size, to make this read unbounded.
|
|
216
|
-
const remainingWithSentinel = MAX_BLOB_BYTES + 1 - size;
|
|
217
|
-
const buffer = Buffer.alloc(Math.min(SOURCE_READ_CHUNK_BYTES, remainingWithSentinel));
|
|
218
|
-
const { bytesRead } = await handle.read(buffer, 0, buffer.byteLength, null);
|
|
219
|
-
if (bytesRead === 0)
|
|
220
|
-
return Buffer.concat(chunks, size);
|
|
221
|
-
size += bytesRead;
|
|
222
|
-
if (size > MAX_BLOB_BYTES)
|
|
223
|
-
return sizeRefusal(size);
|
|
224
|
-
chunks.push(bytesRead === buffer.byteLength ? buffer : buffer.subarray(0, bytesRead));
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
async function openRegularFile(path, noFollow) {
|
|
91
|
+
async function openRegularFile(path) {
|
|
228
92
|
let handle;
|
|
229
93
|
try {
|
|
230
|
-
handle = await open(path, constants.O_RDONLY | constants.O_NONBLOCK |
|
|
94
|
+
handle = await open(path, constants.O_RDONLY | constants.O_NONBLOCK | constants.O_NOFOLLOW);
|
|
231
95
|
}
|
|
232
96
|
catch (error) {
|
|
233
97
|
if (hasCode(error, "ENOENT")
|
package/dist/blobs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blobs.js","sourceRoot":"","sources":["../src/blobs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"blobs.js","sourceRoot":"","sources":["../src/blobs.ts"],"names":[],"mappings":"AAAA,mFAAmF;AAEnF,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAmB,MAAM,kBAAkB,CAAC;AAClG,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEpD,OAAO,EAAE,SAAS,IAAI,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAE/D,MAAM,6BAA6B,GAAG,aAAa,CAAC;AAEpD,uEAAuE;AACvE,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC;AACxC,8DAA8D;AAC9D,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,MAAM,CACzC,sBAAsB,6BAA6B,KAAK,EACxD,GAAG,CACJ,CAAC;AACF,2DAA2D;AAC3D,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,MAAM,CACxC,0CAA0C,6BAA6B,MAAM,EAC7E,GAAG,CACJ,CAAC;AAEF,MAAM,oBAAoB,GAAG,IAAI,MAAM,CAAC,IAAI,6BAA6B,GAAG,EAAE,GAAG,CAAC,CAAC;AAEnF,0EAA0E;AAC1E,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,UAAkB,EAAE,KAAa,EAAE,SAAiB;IAClF,MAAM,SAAS,GAAG,oBAAoB,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC/E,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChE,MAAM,IAAI,GAAG,GAAG,MAAM,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,EAAE,CAAC;IACpE,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;QACnC,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,gCAAgC,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IACxF,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,MAAM,aAAa,CAAC,IAAI,CAAC;QAAE,MAAM,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;AACvB,CAAC;AAED,iFAAiF;AACjF,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,UAAkB,EAAE,GAAW;IACxE,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC3F,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,0CAA0C,GAAG,EAAE,CAAC;IAClF,OAAO,OAAO,CAAC,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACnF,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,MAAM,KAAK,GAAG,6BAA6B,CAAC;IAC5C,OAAO,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,WAAW,MAAM,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC;AACnF,CAAC;AAED,wEAAwE;AACxE,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,UAAkB,EAAE,IAAsB;IAC7E,IAAI,CAAC,MAAM,WAAW,CAAC,UAAU,CAAC;QAAE,OAAO;IAC3C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,IAAI,KAAK,SAAS;YAAE,SAAS;QACjC,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC;gBAAE,MAAM,KAAK,CAAC;QAC3E,CAAC;IACH,CAAC;AACH,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/E,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,OAAO,sBAAsB,IAAI,EAAE,CAAC;AACtC,CAAC;AAOD,SAAS,kBAAkB,CAAC,SAAiB;IAC3C,MAAM,UAAU,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;IAC3C,OAAO,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;AACxE,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,UAAkB,EAAE,IAAY;IAC/D,IAAI,CAAC,MAAM,WAAW,CAAC,UAAU,CAAC;QAAE,OAAO,SAAS,CAAC;IACrD,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3D,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACzC,IAAI,CAAC;QACH,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;YAAS,CAAC;QACT,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,IAAY;IACzC,IAAI,MAAkB,CAAC;IACvB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,IAAI,CACjB,IAAI,EACJ,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CACjE,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IACE,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC;eACrB,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC;eACzB,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;eACvB,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;eACvB,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,EAC3B,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IACD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACtB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,IAAY,EAAE,KAAa;IAC5D,MAAM,aAAa,GAAG,IAAI,CACxB,OAAO,CAAC,IAAI,CAAC,EACb,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,UAAU,EAAE,EAAE,CAC5D,CAAC;IACF,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,MAAM,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC;gBAAE,MAAM,YAAY,CAAC;QAC3D,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,IAAY;IACrC,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC3C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC;YAAE,OAAO,KAAK,CAAC;QACxE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,IAAY;IACvC,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC;YAAE,OAAO,KAAK,CAAC;QACxE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,KAAc,EAAE,IAAY;IAC3C,OAAO,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;AAC1E,CAAC"}
|
package/dist/cli.js
CHANGED
|
@@ -4,8 +4,8 @@ import { StdioServerTransport, serveStdio } from "@modelcontextprotocol/server/s
|
|
|
4
4
|
import { getSetting, getSettings, isSettingName, parsePort, setSetting, unsetSetting, } from "./config.js";
|
|
5
5
|
import { startHttpServer } from "./http.js";
|
|
6
6
|
import { buildServer } from "./server.js";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
7
|
+
import { Autofile } from "./index.js";
|
|
8
|
+
import { watchResources, } from "./mcp-watch.js";
|
|
9
9
|
const usage = `Usage:
|
|
10
10
|
autofile
|
|
11
11
|
autofile serve [--host <host>] [--port <port>]
|
|
@@ -64,24 +64,27 @@ async function main(args) {
|
|
|
64
64
|
}
|
|
65
65
|
async function runStdio() {
|
|
66
66
|
const settings = await getSettings();
|
|
67
|
-
const store =
|
|
67
|
+
const store = new Autofile({ folder: settings.storage });
|
|
68
68
|
let connectedServer;
|
|
69
69
|
let watcher;
|
|
70
70
|
let handle;
|
|
71
71
|
let stopping;
|
|
72
72
|
const stop = () => {
|
|
73
73
|
stopping ??= Promise.all([
|
|
74
|
-
|
|
74
|
+
(async () => {
|
|
75
|
+
await watcher?.close();
|
|
76
|
+
await store.close();
|
|
77
|
+
})(),
|
|
75
78
|
handle?.close() ?? Promise.resolve(),
|
|
76
79
|
]).then(() => undefined);
|
|
77
80
|
return stopping;
|
|
78
81
|
};
|
|
79
|
-
watcher = await
|
|
82
|
+
watcher = await watchResources(store, async (batch) => {
|
|
80
83
|
const server = connectedServer;
|
|
81
84
|
if (server === undefined || !server.isConnected())
|
|
82
85
|
return;
|
|
83
86
|
try {
|
|
84
|
-
const uris = new Set(batch.changes.
|
|
87
|
+
const uris = new Set(batch.changes.map(({ uri }) => uri));
|
|
85
88
|
for (const uri of uris) {
|
|
86
89
|
await server.server.sendResourceUpdated({ uri });
|
|
87
90
|
}
|
|
@@ -93,7 +96,10 @@ async function runStdio() {
|
|
|
93
96
|
if (server.isConnected())
|
|
94
97
|
throw error;
|
|
95
98
|
}
|
|
96
|
-
}, reportError)
|
|
99
|
+
}, reportError).catch(async (error) => {
|
|
100
|
+
await store.close();
|
|
101
|
+
throw error;
|
|
102
|
+
});
|
|
97
103
|
handle = serveStdio(async () => {
|
|
98
104
|
const server = await buildServer(store);
|
|
99
105
|
connectedServer = server;
|
|
@@ -124,8 +130,8 @@ async function serve(args) {
|
|
|
124
130
|
...(overrides.host === undefined ? {} : { host: overrides.host }),
|
|
125
131
|
...(overrides.port === undefined ? {} : { port: overrides.port }),
|
|
126
132
|
};
|
|
127
|
-
const store =
|
|
128
|
-
const running = await startHttpServer(store,
|
|
133
|
+
const store = new Autofile({ folder: settings.storage });
|
|
134
|
+
const running = await startHttpServer(store, http, reportError);
|
|
129
135
|
process.stderr.write(`autofile: listening on ${running.endpoint.href}\n`);
|
|
130
136
|
const stop = () => {
|
|
131
137
|
void running.close().catch((error) => {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,+EAA+E;AAE/E,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAEtF,OAAO,EACL,UAAU,EACV,WAAW,EACX,aAAa,EACb,SAAS,EACT,UAAU,EACV,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/http.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/** Mounts Autofile's transport-independent MCP server on Node's HTTP server. */
|
|
2
2
|
import { type HttpSettings } from "./config.js";
|
|
3
|
-
import type {
|
|
3
|
+
import type { Autofile } from "./index.js";
|
|
4
4
|
export interface RunningHttpServer {
|
|
5
5
|
endpoint: URL;
|
|
6
6
|
closed: Promise<void>;
|
|
7
7
|
close(): Promise<void>;
|
|
8
8
|
}
|
|
9
9
|
/** Starts one modern-only Streamable HTTP endpoint around a process-shared store. */
|
|
10
|
-
export declare function startHttpServer(store:
|
|
10
|
+
export declare function startHttpServer(store: Autofile, settings: HttpSettings, onError: (error: Error) => void): Promise<RunningHttpServer>;
|
package/dist/http.js
CHANGED
|
@@ -4,24 +4,27 @@ import { toNodeHandler } from "@modelcontextprotocol/node";
|
|
|
4
4
|
import { createMcpHandler } from "@modelcontextprotocol/server";
|
|
5
5
|
import { normalizeHttpOrigin } from "./config.js";
|
|
6
6
|
import { buildServer } from "./server.js";
|
|
7
|
-
import {
|
|
7
|
+
import { watchResources } from "./mcp-watch.js";
|
|
8
8
|
const MAX_REQUEST_BODY_BYTES = 64 * 1024 * 1024;
|
|
9
9
|
const CORS_ALLOW_HEADERS = "Content-Type, MCP-Protocol-Version, Mcp-Method, Mcp-Name";
|
|
10
10
|
/** Starts one modern-only Streamable HTTP endpoint around a process-shared store. */
|
|
11
|
-
export async function startHttpServer(store,
|
|
11
|
+
export async function startHttpServer(store, settings, onError) {
|
|
12
12
|
const handler = createMcpHandler(() => buildServer(store), {
|
|
13
13
|
legacy: "reject",
|
|
14
14
|
maxRequestBodySize: MAX_REQUEST_BODY_BYTES,
|
|
15
15
|
onerror: onError,
|
|
16
16
|
});
|
|
17
|
-
const watcher = await
|
|
18
|
-
const uris = new Set(batch.changes.
|
|
17
|
+
const watcher = await watchResources(store, (batch) => {
|
|
18
|
+
const uris = new Set(batch.changes.map(({ uri }) => uri));
|
|
19
19
|
for (const uri of uris) {
|
|
20
20
|
handler.notify.resourceUpdated(uri);
|
|
21
21
|
}
|
|
22
22
|
if (batch.listChanged)
|
|
23
23
|
handler.notify.resourcesChanged();
|
|
24
|
-
}, onError)
|
|
24
|
+
}, onError).catch(async (error) => {
|
|
25
|
+
await Promise.all([store.close(), handler.close()]);
|
|
26
|
+
throw error;
|
|
27
|
+
});
|
|
25
28
|
const serveMcp = toNodeHandler(handler, { maxRequestBodySize: MAX_REQUEST_BODY_BYTES });
|
|
26
29
|
const allowedOrigins = new Set(settings.origins);
|
|
27
30
|
const allowedHosts = new Set([
|
|
@@ -46,6 +49,7 @@ export async function startHttpServer(store, dataFolder, settings, onError) {
|
|
|
46
49
|
}
|
|
47
50
|
catch (error) {
|
|
48
51
|
await Promise.all([watcher.close(), handler.close()]);
|
|
52
|
+
await store.close();
|
|
49
53
|
throw error;
|
|
50
54
|
}
|
|
51
55
|
const endpoint = new URL(`http://${urlHost(settings.host)}:${settings.port}/mcp`);
|
|
@@ -62,6 +66,7 @@ export async function startHttpServer(store, dataFolder, settings, onError) {
|
|
|
62
66
|
httpServer.close();
|
|
63
67
|
httpServer.closeAllConnections();
|
|
64
68
|
await Promise.all([watcher.close(), handler.close(), closed]);
|
|
69
|
+
await store.close();
|
|
65
70
|
}
|
|
66
71
|
}
|
|
67
72
|
async function routeRequest(request, response, allowedOrigins, allowedHosts, serveMcp) {
|
package/dist/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAEhF,OAAO,EAAE,YAAY,EAA6C,MAAM,WAAW,CAAC;AAEpF,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,EAAE,mBAAmB,EAAqB,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** The embedding interface. Importing it starts no server or watcher. */
|
|
2
|
+
export { Autofile, AutofileError } from "./store.js";
|
|
3
|
+
export type { AutofileProblem, AutofileRecord, ChangeEvent, RecordQuery, RecordQueryResult, TypeChanges, TypeDeclaration, TypeDefinition, WatchOptions, } from "./store.js";
|
|
4
|
+
export type { JsonObject, JsonPrimitive, JsonValue } from "./json.js";
|
|
5
|
+
export type { FormatField, PreparedSchema } from "./schema.js";
|
package/dist/index.js
ADDED