@omgbase/astro 0.3.0 → 0.3.1
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/digest.d.ts +67 -0
- package/dist/digest.d.ts.map +1 -0
- package/dist/digest.js +142 -0
- package/dist/digest.js.map +1 -0
- package/dist/index.d.ts +8 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/live.d.ts +97 -0
- package/dist/live.d.ts.map +1 -0
- package/dist/live.js +254 -0
- package/dist/live.js.map +1 -0
- package/dist/loader.d.ts +16 -0
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +10 -6
- package/dist/loader.js.map +1 -1
- package/dist/local.d.ts +1 -1
- package/dist/local.d.ts.map +1 -1
- package/dist/local.js +2 -1
- package/dist/local.js.map +1 -1
- package/dist/remote.d.ts +30 -1
- package/dist/remote.d.ts.map +1 -1
- package/dist/remote.js +63 -12
- package/dist/remote.js.map +1 -1
- package/dist/transport.d.ts +13 -0
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +20 -1
- package/dist/transport.js.map +1 -1
- package/dist/watch.d.ts +25 -5
- package/dist/watch.d.ts.map +1 -1
- package/dist/watch.js +164 -53
- package/dist/watch.js.map +1 -1
- package/package.json +2 -1
package/dist/loader.d.ts
CHANGED
|
@@ -54,6 +54,22 @@ export type OmgLoaderRemoteOptions = OmgLoaderBaseOptions & {
|
|
|
54
54
|
stale?: undefined;
|
|
55
55
|
};
|
|
56
56
|
export type OmgLoaderOptions = OmgLoaderLocalOptions | OmgLoaderRemoteOptions | OmgLoaderBaseOptions;
|
|
57
|
+
/** The connection-related subset of loader options shared by `omgLoader` and `omgLiveLoader`. */
|
|
58
|
+
export interface TransportOptions {
|
|
59
|
+
url?: string | undefined;
|
|
60
|
+
token?: string | undefined;
|
|
61
|
+
headers?: Record<string, string> | undefined;
|
|
62
|
+
headerLines?: string[] | undefined;
|
|
63
|
+
workspace?: string | undefined;
|
|
64
|
+
stale?: boolean | undefined;
|
|
65
|
+
repo?: string | undefined;
|
|
66
|
+
transport?: Transport | undefined;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Pick the transport for a loader: an explicit `transport`, else remote when
|
|
70
|
+
* `url` is set, else local when `workspace` is set.
|
|
71
|
+
*/
|
|
72
|
+
export declare function resolveTransport(opts: TransportOptions, who?: string): Transport;
|
|
57
73
|
/**
|
|
58
74
|
* Astro Content Layer loader backed by omgbase.
|
|
59
75
|
*
|
package/dist/loader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,eAAe,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGhD,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAsC,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAElF,MAAM,WAAW,oBAAoB;IACnC,+EAA+E;IAC/E,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,MAAM,CAAC;IACpC;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,WAAW,KAAK,MAAM,CAAC,CAAC;IAC9C;;;;OAIG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,GAAG;IACzD,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,oBAAoB,GAAG;IAC1D;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,qBAAqB,GAAG,sBAAsB,GAAG,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,eAAe,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGhD,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAsC,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAElF,MAAM,WAAW,oBAAoB;IACnC,+EAA+E;IAC/E,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,MAAM,CAAC;IACpC;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,WAAW,KAAK,MAAM,CAAC,CAAC;IAC9C;;;;OAIG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,GAAG;IACzD,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,oBAAoB,GAAG;IAC1D;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,qBAAqB,GAAG,sBAAsB,GAAG,oBAAoB,CAAC;AAErG,iGAAiG;AACjG,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAC7C,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CACnC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,EAAE,GAAG,SAAc,GAAG,SAAS,CAuBrF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAwCxD"}
|
package/dist/loader.js
CHANGED
|
@@ -3,10 +3,14 @@ import { createRemoteTransport } from "./remote.js";
|
|
|
3
3
|
import { defaultSlug } from "./map.js";
|
|
4
4
|
import { defaultHref } from "./links.js";
|
|
5
5
|
import { startWatch, stopWatch, syncEntries } from "./watch.js";
|
|
6
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Pick the transport for a loader: an explicit `transport`, else remote when
|
|
8
|
+
* `url` is set, else local when `workspace` is set.
|
|
9
|
+
*/
|
|
10
|
+
export function resolveTransport(opts, who = "omgLoader") {
|
|
7
11
|
if (opts.transport)
|
|
8
12
|
return opts.transport;
|
|
9
|
-
if (
|
|
13
|
+
if (opts.url) {
|
|
10
14
|
const remote = {
|
|
11
15
|
url: opts.url,
|
|
12
16
|
...(opts.token !== undefined ? { token: opts.token } : {}),
|
|
@@ -16,7 +20,7 @@ function resolveTransport(opts) {
|
|
|
16
20
|
};
|
|
17
21
|
return createRemoteTransport(remote);
|
|
18
22
|
}
|
|
19
|
-
if (
|
|
23
|
+
if (opts.workspace) {
|
|
20
24
|
const local = {
|
|
21
25
|
workspace: opts.workspace,
|
|
22
26
|
...(opts.repo !== undefined ? { repo: opts.repo } : {}),
|
|
@@ -24,7 +28,7 @@ function resolveTransport(opts) {
|
|
|
24
28
|
};
|
|
25
29
|
return createLocalTransport(local);
|
|
26
30
|
}
|
|
27
|
-
throw new Error(
|
|
31
|
+
throw new Error(`${who} requires either \`workspace\` (local) or \`url\` (Streamable HTTP MCP), or an explicit \`transport\``);
|
|
28
32
|
}
|
|
29
33
|
/**
|
|
30
34
|
* Astro Content Layer loader backed by omgbase.
|
|
@@ -56,8 +60,8 @@ export function omgLoader(opts) {
|
|
|
56
60
|
};
|
|
57
61
|
try {
|
|
58
62
|
context.logger.info(`querying omgbase (${transport.kind})`);
|
|
59
|
-
const { seen } = await syncEntries(context, transport, syncOpts);
|
|
60
|
-
context.logger.info(`loaded ${seen} entries from omgbase`);
|
|
63
|
+
const { seen, hydrated, written } = await syncEntries(context, transport, syncOpts);
|
|
64
|
+
context.logger.info(`loaded ${seen} entries from omgbase (${hydrated} fetched, ${written} updated)`);
|
|
61
65
|
if (context.watcher && watchOpt !== false) {
|
|
62
66
|
await startWatch(context, transport, { ...syncOpts, watch: watchOpt });
|
|
63
67
|
// Watch owns the transport lifetime.
|
package/dist/loader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAA8B,MAAM,YAAY,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAA+B,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,WAAW,EAAoB,MAAM,UAAU,CAAC;AACzD,OAAO,EAAE,WAAW,EAAoB,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAoB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
|
package/dist/local.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Store } from "@omgbase/core";
|
|
2
|
-
import type
|
|
2
|
+
import { type ChangesPage, type ChangesSinceOptions, type DocOutEdge, type HydrateOptions, type HydratedDoc, type OutEdgesOptions, type QueryHit, type QueryOptions, type Transport } from "./transport.js";
|
|
3
3
|
export interface LocalTransportOptions {
|
|
4
4
|
/** Path to the omgbase workspace root (directory containing `.omgbase/`). */
|
|
5
5
|
workspace: string;
|
package/dist/local.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../src/local.ts"],"names":[],"mappings":"AAEA,OAAO,EAML,KAAK,KAAK,EAEX,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../src/local.ts"],"names":[],"mappings":"AAEA,OAAO,EAML,KAAK,KAAK,EAEX,MAAM,eAAe,CAAC;AACvB,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACxB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,SAAS,EACf,MAAM,gBAAgB,CAAC;AAGxB,MAAM,WAAW,qBAAqB;IACpC,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AA2CD;;GAEG;AACH,qBAAa,cAAe,YAAW,SAAS;IAC9C,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAC/B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;gBAEpB,IAAI,EAAE,qBAAqB;IAMvC,IAAI,KAAK,IAAI,KAAK,CAEjB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,SAAS,IAAI,MAAM,GAAG,IAAI,CAE7B;IAED,OAAO,CAAC,WAAW;IAOb,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAiB9C,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAWrD,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAwBtD,YAAY,CAAC,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAAC,WAAW,CAAC;IAaxE,KAAK,IAAI,IAAI;CAGd;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,GAAG,cAAc,CAEhF"}
|
package/dist/local.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { existsSync } from "node:fs";
|
|
2
2
|
import { join, resolve } from "node:path";
|
|
3
3
|
import { Workspace, freshnessSweep, oqxRun, docsRead, changesSince, } from "@omgbase/core";
|
|
4
|
+
import { outEdgesQuery, } from "./transport.js";
|
|
4
5
|
import { contentHashOf, stripFrontmatter } from "./map.js";
|
|
5
6
|
function resolveRepo(ws, slug) {
|
|
6
7
|
if (slug) {
|
|
@@ -95,7 +96,7 @@ export class LocalTransport {
|
|
|
95
96
|
if (opts.ids.length === 0)
|
|
96
97
|
return [];
|
|
97
98
|
const wanted = new Set(opts.ids);
|
|
98
|
-
const result = oqxRun(this.ws.store, this.repo.repoId,
|
|
99
|
+
const result = oqxRun(this.ws.store, this.repo.repoId, outEdgesQuery(opts.ids));
|
|
99
100
|
const out = [];
|
|
100
101
|
const seen = new Set();
|
|
101
102
|
for (const h of result.hits) {
|
package/dist/local.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.js","sourceRoot":"","sources":["../src/local.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EACL,SAAS,EACT,cAAc,EACd,MAAM,EACN,QAAQ,EACR,YAAY,GAGb,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"local.js","sourceRoot":"","sources":["../src/local.ts"],"names":[],"mappings":"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"}
|
package/dist/remote.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { type McpEngineClient } from "@omgbase/sync";
|
|
2
|
+
import { type ChangesPage, type ChangesSinceOptions, type DocOutEdge, type HydrateOptions, type HydratedDoc, type OutEdgesOptions, type QueryHit, type QueryOptions, type Transport } from "./transport.js";
|
|
2
3
|
/** Parse a CLI-style `-H "Name: value"` line into a header pair. */
|
|
3
4
|
export declare function parseHeaderLine(line: string): [string, string];
|
|
4
5
|
/**
|
|
@@ -24,7 +25,25 @@ export interface RemoteTransportOptions {
|
|
|
24
25
|
token?: string;
|
|
25
26
|
/** Default repo slug passed to MCP tools when the call omits `repo`. */
|
|
26
27
|
repo?: string;
|
|
28
|
+
/**
|
|
29
|
+
* Connection factory (defaults to `connectHttpEngine`). Exposed so tests can
|
|
30
|
+
* inject a fake client; production code never needs to set it.
|
|
31
|
+
*/
|
|
32
|
+
connect?: (spec: {
|
|
33
|
+
url: string;
|
|
34
|
+
headers?: Record<string, string>;
|
|
35
|
+
}) => Promise<ToolClient>;
|
|
27
36
|
}
|
|
37
|
+
/** The slice of `McpEngineClient` the transport uses. */
|
|
38
|
+
export type ToolClient = Pick<McpEngineClient, "callTool" | "close">;
|
|
39
|
+
/**
|
|
40
|
+
* Does this error mean the MCP session/connection behind the client is gone,
|
|
41
|
+
* so a fresh connection (rather than the same request again) might succeed?
|
|
42
|
+
*
|
|
43
|
+
* Covers the Streamable HTTP "Session not found" (JSON-RPC -32001) a restarted
|
|
44
|
+
* server returns for a stale session id, plus connection-level failures.
|
|
45
|
+
*/
|
|
46
|
+
export declare function isConnectionLost(err: unknown): boolean;
|
|
28
47
|
/**
|
|
29
48
|
* Remote transport over Streamable HTTP MCP — the same path as
|
|
30
49
|
* `omg sync --server https://…` / `connectHttpEngine`.
|
|
@@ -36,9 +55,19 @@ export declare class RemoteTransport implements Transport {
|
|
|
36
55
|
private readonly url;
|
|
37
56
|
private readonly headers;
|
|
38
57
|
private readonly repo;
|
|
58
|
+
private readonly connect;
|
|
39
59
|
private client;
|
|
40
60
|
constructor(opts: RemoteTransportOptions);
|
|
41
61
|
private ensureClient;
|
|
62
|
+
/** Drop the cached client, closing it best-effort (it may already be dead). */
|
|
63
|
+
private dropClient;
|
|
64
|
+
/**
|
|
65
|
+
* Call a tool on the long-lived client. If the call fails because the
|
|
66
|
+
* session or connection is gone (server restarted, Streamable HTTP session
|
|
67
|
+
* expired), reconnect and retry exactly once. Any other error, and the
|
|
68
|
+
* retry's own error, propagate unchanged.
|
|
69
|
+
*/
|
|
70
|
+
private callTool;
|
|
42
71
|
query(opts: QueryOptions): Promise<QueryHit[]>;
|
|
43
72
|
hydrate(opts: HydrateOptions): Promise<HydratedDoc[]>;
|
|
44
73
|
outEdges(opts: OutEdgesOptions): Promise<DocOutEdge[]>;
|
package/dist/remote.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACxB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,SAAS,EACf,MAAM,gBAAgB,CAAC;AAGxB,oEAAoE;AACpE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAS9D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAWzB;AAED,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,sFAAsF;IACtF,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,mFAAmF;IACnF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAClC,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;CAC3B;AAED,yDAAyD;AACzD,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC;AAErE;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAStD;AAqBD;;;;;GAKG;AACH,qBAAa,eAAgB,YAAW,SAAS;IAC/C,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqB;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiD;IACzE,OAAO,CAAC,MAAM,CAA2B;gBAE7B,IAAI,EAAE,sBAAsB;YAO1B,YAAY;IAS1B,+EAA+E;YACjE,UAAU;IAWxB;;;;;OAKG;YACW,QAAQ;IAYhB,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAgB9C,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAuBrD,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IA0BtD,YAAY,CAAC,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAAC,WAAW,CAAC;IAkBlE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,sBAAsB,GAAG,eAAe,CAEnF"}
|
package/dist/remote.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { connectHttpEngine } from "@omgbase/sync";
|
|
2
|
+
import { outEdgesQuery, } from "./transport.js";
|
|
2
3
|
import { contentHashOf, stripFrontmatter } from "./map.js";
|
|
3
4
|
/** Parse a CLI-style `-H "Name: value"` line into a header pair. */
|
|
4
5
|
export function parseHeaderLine(line) {
|
|
@@ -29,6 +30,28 @@ export function resolveHeaders(opts) {
|
|
|
29
30
|
}
|
|
30
31
|
return out;
|
|
31
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Does this error mean the MCP session/connection behind the client is gone,
|
|
35
|
+
* so a fresh connection (rather than the same request again) might succeed?
|
|
36
|
+
*
|
|
37
|
+
* Covers the Streamable HTTP "Session not found" (JSON-RPC -32001) a restarted
|
|
38
|
+
* server returns for a stale session id, plus connection-level failures.
|
|
39
|
+
*/
|
|
40
|
+
export function isConnectionLost(err) {
|
|
41
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
42
|
+
if (/session not found/i.test(msg))
|
|
43
|
+
return true;
|
|
44
|
+
if (/-32001/.test(msg))
|
|
45
|
+
return true;
|
|
46
|
+
if (/\b(ECONNREFUSED|ECONNRESET|EPIPE|ETIMEDOUT|ENOTFOUND|EAI_AGAIN)\b/.test(msg))
|
|
47
|
+
return true;
|
|
48
|
+
if (/fetch failed|socket hang up/i.test(msg))
|
|
49
|
+
return true;
|
|
50
|
+
const code = err?.code;
|
|
51
|
+
if (code === -32001)
|
|
52
|
+
return true;
|
|
53
|
+
return typeof code === "string" && /^E(CONNREFUSED|CONNRESET|PIPE|TIMEDOUT|NOTFOUND|AI_AGAIN)$/.test(code);
|
|
54
|
+
}
|
|
32
55
|
const HYDRATE_CHUNK = 100;
|
|
33
56
|
/**
|
|
34
57
|
* Remote transport over Streamable HTTP MCP — the same path as
|
|
@@ -41,30 +64,63 @@ export class RemoteTransport {
|
|
|
41
64
|
url;
|
|
42
65
|
headers;
|
|
43
66
|
repo;
|
|
67
|
+
connect;
|
|
44
68
|
client = null;
|
|
45
69
|
constructor(opts) {
|
|
46
70
|
this.url = opts.url;
|
|
47
71
|
this.headers = resolveHeaders(opts);
|
|
48
72
|
this.repo = opts.repo;
|
|
73
|
+
this.connect = opts.connect ?? connectHttpEngine;
|
|
49
74
|
}
|
|
50
75
|
async ensureClient() {
|
|
51
76
|
if (this.client)
|
|
52
77
|
return this.client;
|
|
53
|
-
this.client = await
|
|
78
|
+
this.client = await this.connect({
|
|
54
79
|
url: this.url,
|
|
55
80
|
...(Object.keys(this.headers).length > 0 ? { headers: this.headers } : {}),
|
|
56
81
|
});
|
|
57
82
|
return this.client;
|
|
58
83
|
}
|
|
59
|
-
|
|
84
|
+
/** Drop the cached client, closing it best-effort (it may already be dead). */
|
|
85
|
+
async dropClient() {
|
|
86
|
+
const client = this.client;
|
|
87
|
+
this.client = null;
|
|
88
|
+
if (!client)
|
|
89
|
+
return;
|
|
90
|
+
try {
|
|
91
|
+
await client.close();
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
// A dead session can't be closed cleanly; nothing to do.
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Call a tool on the long-lived client. If the call fails because the
|
|
99
|
+
* session or connection is gone (server restarted, Streamable HTTP session
|
|
100
|
+
* expired), reconnect and retry exactly once. Any other error, and the
|
|
101
|
+
* retry's own error, propagate unchanged.
|
|
102
|
+
*/
|
|
103
|
+
async callTool(name, args) {
|
|
60
104
|
const client = await this.ensureClient();
|
|
105
|
+
try {
|
|
106
|
+
return await client.callTool(name, args);
|
|
107
|
+
}
|
|
108
|
+
catch (err) {
|
|
109
|
+
if (!isConnectionLost(err))
|
|
110
|
+
throw err;
|
|
111
|
+
await this.dropClient();
|
|
112
|
+
const fresh = await this.ensureClient();
|
|
113
|
+
return await fresh.callTool(name, args);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
async query(opts) {
|
|
61
117
|
const args = { query: opts.query };
|
|
62
118
|
if (opts.limit !== undefined)
|
|
63
119
|
args.limit = opts.limit;
|
|
64
120
|
const repo = opts.repo ?? this.repo;
|
|
65
121
|
if (repo !== undefined)
|
|
66
122
|
args.repo = repo;
|
|
67
|
-
const result = await
|
|
123
|
+
const result = await this.callTool("query", args);
|
|
68
124
|
if (result.consumer === "count" || result.consumer === "exists") {
|
|
69
125
|
throw new Error(`omgLoader query must return document hits, got consumer=${result.consumer}`);
|
|
70
126
|
}
|
|
@@ -74,7 +130,6 @@ export class RemoteTransport {
|
|
|
74
130
|
});
|
|
75
131
|
}
|
|
76
132
|
async hydrate(opts) {
|
|
77
|
-
const client = await this.ensureClient();
|
|
78
133
|
const repo = opts.repo ?? this.repo;
|
|
79
134
|
const out = [];
|
|
80
135
|
for (let i = 0; i < opts.ids.length; i += HYDRATE_CHUNK) {
|
|
@@ -82,7 +137,7 @@ export class RemoteTransport {
|
|
|
82
137
|
const args = { docs: chunk };
|
|
83
138
|
if (repo !== undefined)
|
|
84
139
|
args.repo = repo;
|
|
85
|
-
const result = await
|
|
140
|
+
const result = await this.callTool("docs_get_many", args);
|
|
86
141
|
for (const item of result.items ?? []) {
|
|
87
142
|
out.push({
|
|
88
143
|
id: item.docId,
|
|
@@ -101,7 +156,7 @@ export class RemoteTransport {
|
|
|
101
156
|
return [];
|
|
102
157
|
const wanted = new Set(opts.ids);
|
|
103
158
|
const hits = await this.query({
|
|
104
|
-
query:
|
|
159
|
+
query: outEdgesQuery(opts.ids),
|
|
105
160
|
...(opts.repo !== undefined ? { repo: opts.repo } : {}),
|
|
106
161
|
});
|
|
107
162
|
const out = [];
|
|
@@ -126,7 +181,6 @@ export class RemoteTransport {
|
|
|
126
181
|
return out;
|
|
127
182
|
}
|
|
128
183
|
async changesSince(opts = {}) {
|
|
129
|
-
const client = await this.ensureClient();
|
|
130
184
|
const args = {};
|
|
131
185
|
if (opts.cursor !== undefined)
|
|
132
186
|
args.cursor = opts.cursor;
|
|
@@ -135,7 +189,7 @@ export class RemoteTransport {
|
|
|
135
189
|
const repo = opts.repo ?? this.repo;
|
|
136
190
|
if (repo !== undefined)
|
|
137
191
|
args.repo = repo;
|
|
138
|
-
const page = await
|
|
192
|
+
const page = await this.callTool("changes_since", args);
|
|
139
193
|
return {
|
|
140
194
|
digests: page.digests ?? [],
|
|
141
195
|
head: page.head,
|
|
@@ -143,10 +197,7 @@ export class RemoteTransport {
|
|
|
143
197
|
};
|
|
144
198
|
}
|
|
145
199
|
async close() {
|
|
146
|
-
|
|
147
|
-
await this.client.close();
|
|
148
|
-
this.client = null;
|
|
149
|
-
}
|
|
200
|
+
await this.dropClient();
|
|
150
201
|
}
|
|
151
202
|
}
|
|
152
203
|
export function createRemoteTransport(opts) {
|
package/dist/remote.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote.js","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAwB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"remote.js","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAwB,MAAM,eAAe,CAAC;AACxE,OAAO,EACL,aAAa,GAUd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE3D,oEAAoE;AACpE,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,4CAA4C,IAAI,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACvC,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC;IAC3D,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACvB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAI9B;IACC,MAAM,GAAG,GAA2B,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;IAChE,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;QAC1C,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QAC5C,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IACpB,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,eAAe,CAAC,CAAC;QAClF,IAAI,CAAC,OAAO;YAAE,GAAG,CAAC,aAAa,GAAG,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC;IAC3D,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AA6BD;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7D,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,mEAAmE,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/F,IAAI,8BAA8B,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1D,MAAM,IAAI,GAAI,GAAiC,EAAE,IAAI,CAAC;IACtD,IAAI,IAAI,KAAK,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACjC,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,4DAA4D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7G,CAAC;AAmBD,MAAM,aAAa,GAAG,GAAG,CAAC;AAE1B;;;;;GAKG;AACH,MAAM,OAAO,eAAe;IACjB,IAAI,GAAG,QAAiB,CAAC;IACjB,GAAG,CAAS;IACZ,OAAO,CAAyB;IAChC,IAAI,CAAqB;IACzB,OAAO,CAAiD;IACjE,MAAM,GAAsB,IAAI,CAAC;IAEzC,YAAY,IAA4B;QACtC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,iBAAiB,CAAC;IACnD,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YAC/B,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC3E,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,+EAA+E;IACvE,KAAK,CAAC,UAAU;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;QAAC,MAAM,CAAC;YACP,yDAAyD;QAC3D,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,QAAQ,CAAI,IAAY,EAAE,IAA6B;QACnE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACzC,IAAI,CAAC;YACH,OAAO,MAAM,MAAM,CAAC,QAAQ,CAAI,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;gBAAE,MAAM,GAAG,CAAC;YACtC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YACxC,OAAO,MAAM,KAAK,CAAC,QAAQ,CAAI,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAkB;QAC5B,MAAM,IAAI,GAA4B,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAC5D,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;QACpC,IAAI,IAAI,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAkB,OAAO,EAAE,IAAI,CAAC,CAAC;QACnE,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAChE,MAAM,IAAI,KAAK,CAAC,2DAA2D,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChG,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACnC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;YAChC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAoB;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;QACpC,MAAM,GAAG,GAAkB,EAAE,CAAC;QAE9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,aAAa,EAAE,CAAC;YACxD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC;YACnD,MAAM,IAAI,GAA4B,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YACtD,IAAI,IAAI,KAAK,SAAS;gBAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAoB,eAAe,EAAE,IAAI,CAAC,CAAC;YAC7E,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;gBACtC,GAAG,CAAC,IAAI,CAAC;oBACP,EAAE,EAAE,IAAI,CAAC,KAAK;oBACd,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,UAAU,EAAE,IAAI,CAAC,UAAU;oBAC3B,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;oBACpC,WAAW,EAAE,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC;oBACzD,GAAG,EAAE,IAAI,CAAC,GAAG;iBACd,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAqB;QAClC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC;YAC5B,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;YAC9B,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxD,CAAC,CAAC;QACH,MAAM,GAAG,GAAiB,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACvD,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACvD,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC/C,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC;gBAAE,SAAS;YACzC,MAAM,GAAG,GAAG,GAAG,GAAG,KAAK,GAAG,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,GAAG,CAAC,IAAI,CAAC;gBACP,GAAG;gBACH,GAAG;gBACH,OAAO,EAAE,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;aAC9D,CAAC,CAAC;QACL,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAA4B,EAAE;QAC/C,MAAM,IAAI,GAA4B,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACzD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;QACpC,IAAI,IAAI,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACzC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAI7B,eAAe,EAAE,IAAI,CAAC,CAAC;QAC1B,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;YAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,KAAK;SACnC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,UAAU,qBAAqB,CAAC,IAA4B;IAChE,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC"}
|
package/dist/transport.d.ts
CHANGED
|
@@ -52,6 +52,19 @@ export interface OutEdgesOptions {
|
|
|
52
52
|
ids: string[];
|
|
53
53
|
repo?: string;
|
|
54
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Largest source-id set for which {@link outEdgesQuery} filters by `$src` in
|
|
57
|
+
* OQX instead of scanning every document edge in the repo. A request-time
|
|
58
|
+
* loader asks for one doc's edges; the build-time loader asks for a whole
|
|
59
|
+
* collection's, where the repo-wide scan is the cheaper shape.
|
|
60
|
+
*/
|
|
61
|
+
export declare const OUT_EDGES_PREDICATE_MAX_IDS = 25;
|
|
62
|
+
/**
|
|
63
|
+
* OQX for the document out-edges of `ids`. OQX has no list literals, so small
|
|
64
|
+
* id sets become an `||` chain of `$src == "…"` tests; larger sets fall back to
|
|
65
|
+
* the repo-wide edge scan and are filtered client-side by the transport.
|
|
66
|
+
*/
|
|
67
|
+
export declare function outEdgesQuery(ids: string[]): string;
|
|
55
68
|
/**
|
|
56
69
|
* Transport seam: local `@omgbase/core` or remote Streamable HTTP MCP.
|
|
57
70
|
* Both paths share query → hydrate; optional `changesSince` enables remote watch.
|
package/dist/transport.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,6DAA6D;AAC7D,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACpD,8EAA8E;IAC9E,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,wFAAwF;IACxF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,8EAA8E;AAC9E,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,+CAA+C;IAC/C,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;IAClC,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACtD;;;OAGG;IACH,QAAQ,CAAC,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACxD,+DAA+D;IAC/D,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAChE,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC"}
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,6DAA6D;AAC7D,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACpD,8EAA8E;IAC9E,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,wFAAwF;IACxF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,8EAA8E;AAC9E,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,+CAA+C;IAC/C,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAE9C;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,CAMnD;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;IAClC,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACtD;;;OAGG;IACH,QAAQ,CAAC,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACxD,+DAA+D;IAC/D,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAChE,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC"}
|
package/dist/transport.js
CHANGED
|
@@ -1,2 +1,21 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Largest source-id set for which {@link outEdgesQuery} filters by `$src` in
|
|
3
|
+
* OQX instead of scanning every document edge in the repo. A request-time
|
|
4
|
+
* loader asks for one doc's edges; the build-time loader asks for a whole
|
|
5
|
+
* collection's, where the repo-wide scan is the cheaper shape.
|
|
6
|
+
*/
|
|
7
|
+
export const OUT_EDGES_PREDICATE_MAX_IDS = 25;
|
|
8
|
+
/**
|
|
9
|
+
* OQX for the document out-edges of `ids`. OQX has no list literals, so small
|
|
10
|
+
* id sets become an `||` chain of `$src == "…"` tests; larger sets fall back to
|
|
11
|
+
* the repo-wide edge scan and are filtered client-side by the transport.
|
|
12
|
+
*/
|
|
13
|
+
export function outEdgesQuery(ids) {
|
|
14
|
+
const base = `select $src, $dst, $dst_path from edges where dst_kind == "document"`;
|
|
15
|
+
const unique = [...new Set(ids)];
|
|
16
|
+
if (unique.length === 0 || unique.length > OUT_EDGES_PREDICATE_MAX_IDS)
|
|
17
|
+
return base;
|
|
18
|
+
const predicate = unique.map((id) => `$src == ${JSON.stringify(id)}`).join(" || ");
|
|
19
|
+
return `${base} && (${predicate})`;
|
|
20
|
+
}
|
|
2
21
|
//# sourceMappingURL=transport.js.map
|
package/dist/transport.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AA2DA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAE9C;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,GAAa;IACzC,MAAM,IAAI,GAAG,sEAAsE,CAAC;IACpF,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,2BAA2B;QAAE,OAAO,IAAI,CAAC;IACpF,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnF,OAAO,GAAG,IAAI,QAAQ,SAAS,GAAG,CAAC;AACrC,CAAC"}
|
package/dist/watch.d.ts
CHANGED
|
@@ -7,16 +7,35 @@ export type WatchOption = boolean | {
|
|
|
7
7
|
intervalMs?: number;
|
|
8
8
|
};
|
|
9
9
|
export declare function stopWatch(collection: string): Promise<void>;
|
|
10
|
-
export
|
|
10
|
+
export interface SyncResult {
|
|
11
|
+
/** Docs matched by the query (entries kept in the store). */
|
|
12
|
+
seen: number;
|
|
13
|
+
/** Entries re-parsed/re-rendered and written to the store. */
|
|
14
|
+
written: number;
|
|
15
|
+
/** Docs whose bodies were fetched from omg this pass. */
|
|
16
|
+
hydrated: number;
|
|
17
|
+
}
|
|
18
|
+
interface SyncOptions {
|
|
11
19
|
query: string;
|
|
12
20
|
limit?: number;
|
|
13
21
|
repo?: string;
|
|
14
22
|
slug: (ctx: SlugContext) => string;
|
|
15
23
|
href: false | ((ctx: HrefContext) => string);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Hash-first sync of one collection into Astro's data store.
|
|
27
|
+
*
|
|
28
|
+
* 1. Query with `$content_hash` projected.
|
|
29
|
+
* 2. Reuse any stored entry whose hash, path and hit projections are unchanged.
|
|
30
|
+
* 3. `docs_get_many` only new/changed docs.
|
|
31
|
+
* 4. Rebuild the href map for the whole collection (unchanged docs contribute
|
|
32
|
+
* the slug/href remembered in their digest) and, only when it moved, fetch
|
|
33
|
+
* edges and re-hydrate the unchanged docs whose link targets changed.
|
|
34
|
+
* 5. Map, rewrite links, render, and store just those docs.
|
|
35
|
+
*
|
|
36
|
+
* A no-change reload therefore costs one query and nothing else.
|
|
37
|
+
*/
|
|
38
|
+
export declare function syncEntries(context: LoaderContext, transport: Transport, opts: SyncOptions): Promise<SyncResult>;
|
|
20
39
|
/**
|
|
21
40
|
* After the initial load, keep the collection fresh in `astro dev`.
|
|
22
41
|
*
|
|
@@ -35,4 +54,5 @@ export declare function startWatch(context: LoaderContext, transport: Transport,
|
|
|
35
54
|
href: false | ((ctx: HrefContext) => string);
|
|
36
55
|
watch: WatchOption;
|
|
37
56
|
}): Promise<void>;
|
|
57
|
+
export {};
|
|
38
58
|
//# sourceMappingURL=watch.d.ts.map
|
package/dist/watch.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../src/watch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../src/watch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAY,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EAKL,KAAK,WAAW,EAGjB,MAAM,YAAY,CAAC;AAepB,MAAM,MAAM,WAAW,GACnB,OAAO,GACP;IACE,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AASN,wBAAsB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKjE;AAED,MAAM,WAAW,UAAU;IACzB,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,WAAW;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,MAAM,CAAC;IACnC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,WAAW,KAAK,MAAM,CAAC,CAAC;CAC9C;AAgDD;;;;;;;;;;;;GAYG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,UAAU,CAAC,CA4JrB;AAED;;;;;;;;;GASG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE;IACJ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,MAAM,CAAC;IACnC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,WAAW,KAAK,MAAM,CAAC,CAAC;IAC7C,KAAK,EAAE,WAAW,CAAC;CACpB,GACA,OAAO,CAAC,IAAI,CAAC,CAsHf"}
|