jazz-tools 2.0.0-alpha.49 → 2.0.0-alpha.50
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/bin/docs-index.db +0 -0
- package/bin/docs-index.txt +1653 -634
- package/bin/native/jazz-tools-darwin-arm64 +0 -0
- package/bin/native/jazz-tools-darwin-x64 +0 -0
- package/bin/native/jazz-tools-linux-arm64 +0 -0
- package/bin/native/jazz-tools-linux-x64 +0 -0
- package/dist/better-auth-adapter/index.test.js +5 -5
- package/dist/better-auth-adapter/index.test.js.map +1 -1
- package/dist/cli.js +13 -3
- package/dist/cli.js.map +1 -1
- package/dist/cli.test.js +20 -1
- package/dist/cli.test.js.map +1 -1
- package/dist/dev/dev-server.d.ts +0 -3
- package/dist/dev/dev-server.d.ts.map +1 -1
- package/dist/dev/dev-server.js +0 -3
- package/dist/dev/dev-server.js.map +1 -1
- package/dist/dev/dev-server.test.js +1 -0
- package/dist/dev/dev-server.test.js.map +1 -1
- package/dist/dev/managed-runtime.d.ts.map +1 -1
- package/dist/dev/managed-runtime.js +4 -4
- package/dist/dev/managed-runtime.js.map +1 -1
- package/dist/dev/managed-runtime.test.js +41 -0
- package/dist/dev/managed-runtime.test.js.map +1 -1
- package/dist/dev/sveltekit.d.ts +37 -7
- package/dist/dev/sveltekit.d.ts.map +1 -1
- package/dist/dev/sveltekit.js +103 -77
- package/dist/dev/sveltekit.js.map +1 -1
- package/dist/dev/sveltekit.test.js +38 -18
- package/dist/dev/sveltekit.test.js.map +1 -1
- package/dist/dev/vite.d.ts +0 -3
- package/dist/dev/vite.d.ts.map +1 -1
- package/dist/dev/vite.js.map +1 -1
- package/dist/dev-tools/extension-panel.d.ts.map +1 -1
- package/dist/dev-tools/extension-panel.js +0 -12
- package/dist/dev-tools/extension-panel.js.map +1 -1
- package/dist/mcp/backend-naive.d.ts.map +1 -1
- package/dist/mcp/backend-naive.js +22 -3
- package/dist/mcp/backend-naive.js.map +1 -1
- package/dist/mcp/backend-naive.test.js +9 -6
- package/dist/mcp/backend-naive.test.js.map +1 -1
- package/dist/mcp/backend-sqlite.js +2 -2
- package/dist/mcp/backend-sqlite.js.map +1 -1
- package/dist/mcp/build-index.d.ts +2 -38
- package/dist/mcp/build-index.d.ts.map +1 -1
- package/dist/mcp/build-index.js +5 -145
- package/dist/mcp/build-index.js.map +1 -1
- package/dist/mcp/fallback-no-sqlite.test.d.ts +2 -0
- package/dist/mcp/fallback-no-sqlite.test.d.ts.map +1 -0
- package/dist/mcp/fallback-no-sqlite.test.js +135 -0
- package/dist/mcp/fallback-no-sqlite.test.js.map +1 -0
- package/dist/mcp/parse.d.ts +39 -0
- package/dist/mcp/parse.d.ts.map +1 -0
- package/dist/mcp/parse.js +154 -0
- package/dist/mcp/parse.js.map +1 -0
- package/dist/permissions/index.d.ts +1 -1
- package/dist/permissions/index.d.ts.map +1 -1
- package/dist/permissions/index.js +13 -3
- package/dist/permissions/index.js.map +1 -1
- package/dist/permissions/index.test.js +40 -0
- package/dist/permissions/index.test.js.map +1 -1
- package/dist/react-native/db.test.js +3 -0
- package/dist/react-native/db.test.js.map +1 -1
- package/dist/react-native/jazz-rn-runtime-adapter.d.ts +3 -8
- package/dist/react-native/jazz-rn-runtime-adapter.d.ts.map +1 -1
- package/dist/react-native/jazz-rn-runtime-adapter.js +3 -27
- package/dist/react-native/jazz-rn-runtime-adapter.js.map +1 -1
- package/dist/react-native/jazz-rn-runtime-adapter.test.js +11 -38
- package/dist/react-native/jazz-rn-runtime-adapter.test.js.map +1 -1
- package/dist/runtime/auth-secret-store.d.ts +2 -1
- package/dist/runtime/auth-secret-store.d.ts.map +1 -1
- package/dist/runtime/auth-secret-store.js +16 -7
- package/dist/runtime/auth-secret-store.js.map +1 -1
- package/dist/runtime/auth-secret-store.test.js +14 -0
- package/dist/runtime/auth-secret-store.test.js.map +1 -1
- package/dist/runtime/client-tests/for-request.test.js +2 -89
- package/dist/runtime/client-tests/for-request.test.js.map +1 -1
- package/dist/runtime/client-tests/support.d.ts +1 -2
- package/dist/runtime/client-tests/support.d.ts.map +1 -1
- package/dist/runtime/client-tests/support.js +1 -2
- package/dist/runtime/client-tests/support.js.map +1 -1
- package/dist/runtime/client.d.ts +8 -142
- package/dist/runtime/client.d.ts.map +1 -1
- package/dist/runtime/client.js +19 -569
- package/dist/runtime/client.js.map +1 -1
- package/dist/runtime/client.mutations.test.js +1 -52
- package/dist/runtime/client.mutations.test.js.map +1 -1
- package/dist/runtime/client.test.js +1 -46
- package/dist/runtime/client.test.js.map +1 -1
- package/dist/runtime/context.d.ts +1 -1
- package/dist/runtime/db-runtime-module.d.ts +0 -2
- package/dist/runtime/db-runtime-module.d.ts.map +1 -1
- package/dist/runtime/db-runtime-module.js.map +1 -1
- package/dist/runtime/db.d.ts +11 -10
- package/dist/runtime/db.d.ts.map +1 -1
- package/dist/runtime/db.js +56 -205
- package/dist/runtime/db.js.map +1 -1
- package/dist/runtime/db.persisted.test.js +0 -1
- package/dist/runtime/db.persisted.test.js.map +1 -1
- package/dist/runtime/db.transaction.test.js +4 -76
- package/dist/runtime/db.transaction.test.js.map +1 -1
- package/dist/runtime/db.transport.test.js +4 -4
- package/dist/runtime/db.transport.test.js.map +1 -1
- package/dist/runtime/index.d.ts +1 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +1 -1
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/napi.sqlite-compat.test.js +35 -17
- package/dist/runtime/napi.sqlite-compat.test.js.map +1 -1
- package/dist/runtime/permissions.repro.test.js +85 -0
- package/dist/runtime/permissions.repro.test.js.map +1 -1
- package/dist/runtime/sync-telemetry.js +49 -24
- package/dist/runtime/sync-telemetry.js.map +1 -1
- package/dist/runtime/sync-telemetry.test.js +16 -4
- package/dist/runtime/sync-telemetry.test.js.map +1 -1
- package/dist/runtime/wasm-runtime-module.d.ts +1 -1
- package/dist/runtime/wasm-runtime-module.d.ts.map +1 -1
- package/dist/runtime/wasm-runtime-module.js +2 -3
- package/dist/runtime/wasm-runtime-module.js.map +1 -1
- package/dist/runtime/worker-bridge.d.ts +1 -5
- package/dist/runtime/worker-bridge.d.ts.map +1 -1
- package/dist/runtime/worker-bridge.js +0 -16
- package/dist/runtime/worker-bridge.js.map +1 -1
- package/dist/svelte/index.d.ts +1 -0
- package/dist/svelte/index.d.ts.map +1 -1
- package/dist/svelte/index.js +1 -0
- package/dist/svelte/local-first-auth.svelte.d.ts +49 -0
- package/dist/svelte/local-first-auth.svelte.d.ts.map +1 -0
- package/dist/svelte/local-first-auth.svelte.js +115 -0
- package/dist/svelte/local-first-auth.svelte.test.js +292 -0
- package/dist/svelte/rune-patterns.svelte.test.js +12 -13
- package/dist/testing/index.test.js +2 -2
- package/dist/testing/index.test.js.map +1 -1
- package/dist/typed-app.d.ts +3 -3
- package/dist/typed-app.d.ts.map +1 -1
- package/dist/typed-app.js +5 -0
- package/dist/typed-app.js.map +1 -1
- package/dist/vue/index.d.ts +1 -0
- package/dist/vue/index.d.ts.map +1 -1
- package/dist/vue/index.js +1 -0
- package/dist/vue/index.js.map +1 -1
- package/dist/vue/use-local-first-auth.d.ts +52 -0
- package/dist/vue/use-local-first-auth.d.ts.map +1 -0
- package/dist/vue/use-local-first-auth.js +123 -0
- package/dist/vue/use-local-first-auth.js.map +1 -0
- package/dist/vue/use-local-first-auth.test.d.ts +2 -0
- package/dist/vue/use-local-first-auth.test.d.ts.map +1 -0
- package/dist/vue/use-local-first-auth.test.js +237 -0
- package/dist/vue/use-local-first-auth.test.js.map +1 -0
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-index.js","sourceRoot":"","sources":["../../src/mcp/build-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"build-index.js","sourceRoot":"","sources":["../../src/mcp/build-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fallback-no-sqlite.test.d.ts","sourceRoot":"","sources":["../../src/mcp/fallback-no-sqlite.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reproduces a user report: installing the MCP server under Node.js < 22
|
|
3
|
+
* (no `node:sqlite`) crashed with ERR_UNKNOWN_BUILTIN_MODULE instead of
|
|
4
|
+
* falling back to text search.
|
|
5
|
+
*
|
|
6
|
+
* Spawns the real server via the shim with a module hook that makes
|
|
7
|
+
* `node:sqlite` unavailable (see __fixtures__/block-node-sqlite.*), then
|
|
8
|
+
* drives it over stdio like a real MCP client.
|
|
9
|
+
*
|
|
10
|
+
* Requires: `pnpm build` before running (dist/mcp/server.js must exist).
|
|
11
|
+
*/
|
|
12
|
+
import { afterEach, beforeEach, describe, expect, it } from "vitest";
|
|
13
|
+
import { spawn } from "node:child_process";
|
|
14
|
+
import { dirname, join } from "node:path";
|
|
15
|
+
import { fileURLToPath } from "node:url";
|
|
16
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
17
|
+
const shimPath = join(here, "../../bin/jazz-tools.js");
|
|
18
|
+
const registerHook = join(here, "__fixtures__/block-node-sqlite.register.mjs");
|
|
19
|
+
function spawnMcpWithoutSqlite() {
|
|
20
|
+
const proc = spawn(process.execPath, ["--import", registerHook, shimPath, "mcp"], {
|
|
21
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
22
|
+
});
|
|
23
|
+
let stderrBuf = "";
|
|
24
|
+
proc.stderr.on("data", (c) => {
|
|
25
|
+
stderrBuf += c.toString("utf8");
|
|
26
|
+
});
|
|
27
|
+
const queued = [];
|
|
28
|
+
const waiters = [];
|
|
29
|
+
let buf = "";
|
|
30
|
+
proc.stdout.on("data", (chunk) => {
|
|
31
|
+
buf += chunk.toString("utf8");
|
|
32
|
+
const parts = buf.split("\n");
|
|
33
|
+
buf = parts.pop() ?? "";
|
|
34
|
+
for (const line of parts) {
|
|
35
|
+
if (!line.trim())
|
|
36
|
+
continue;
|
|
37
|
+
const waiter = waiters.shift();
|
|
38
|
+
if (waiter) {
|
|
39
|
+
waiter(line);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
queued.push(line);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
let exitCode = null;
|
|
47
|
+
const exited = new Promise((resolve) => {
|
|
48
|
+
proc.on("close", (code) => {
|
|
49
|
+
exitCode = code ?? 0;
|
|
50
|
+
resolve(exitCode);
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
const server = {
|
|
54
|
+
send(msg) {
|
|
55
|
+
proc.stdin.write(JSON.stringify(msg) + "\n");
|
|
56
|
+
},
|
|
57
|
+
recv() {
|
|
58
|
+
return new Promise((resolve, reject) => {
|
|
59
|
+
const line = queued.shift();
|
|
60
|
+
if (line !== undefined) {
|
|
61
|
+
resolve(JSON.parse(line));
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
let settled = false;
|
|
65
|
+
waiters.push((l) => {
|
|
66
|
+
if (settled)
|
|
67
|
+
return;
|
|
68
|
+
settled = true;
|
|
69
|
+
resolve(JSON.parse(l));
|
|
70
|
+
});
|
|
71
|
+
// If the process dies before answering, fail loudly with its stderr
|
|
72
|
+
// rather than hanging until the test timeout.
|
|
73
|
+
void exited.then((code) => {
|
|
74
|
+
if (settled)
|
|
75
|
+
return;
|
|
76
|
+
settled = true;
|
|
77
|
+
reject(new Error(`MCP server exited (code ${code}) before responding.\n--- stderr ---\n${stderrBuf}`));
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
},
|
|
81
|
+
stderr: () => stderrBuf,
|
|
82
|
+
close() {
|
|
83
|
+
proc.stdin.end();
|
|
84
|
+
return exited;
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
return { server, proc };
|
|
88
|
+
}
|
|
89
|
+
let server;
|
|
90
|
+
let proc;
|
|
91
|
+
beforeEach(() => {
|
|
92
|
+
({ server, proc } = spawnMcpWithoutSqlite());
|
|
93
|
+
});
|
|
94
|
+
afterEach(async () => {
|
|
95
|
+
if (proc.exitCode === null && !proc.killed) {
|
|
96
|
+
proc.stdin.end();
|
|
97
|
+
await new Promise((res) => proc.on("close", () => res()));
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
describe("MCP server without node:sqlite (Node < 22)", () => {
|
|
101
|
+
it("falls back to text search and answers search_docs instead of crashing", async () => {
|
|
102
|
+
server.send({ jsonrpc: "2.0", id: 1, method: "initialize", params: {} });
|
|
103
|
+
const init = await server.recv();
|
|
104
|
+
expect(init.id).toBe(1);
|
|
105
|
+
server.send({
|
|
106
|
+
jsonrpc: "2.0",
|
|
107
|
+
id: 2,
|
|
108
|
+
method: "tools/call",
|
|
109
|
+
params: { name: "search_docs", arguments: { query: "schema" } },
|
|
110
|
+
});
|
|
111
|
+
const res = await server.recv();
|
|
112
|
+
expect(res.error).toBeUndefined();
|
|
113
|
+
const content = res.result.content[0];
|
|
114
|
+
expect(content).toBeDefined();
|
|
115
|
+
expect(content.type).toBe("text");
|
|
116
|
+
expect(content.text).not.toBe("No results found.");
|
|
117
|
+
expect(content.text.length).toBeGreaterThan(0);
|
|
118
|
+
});
|
|
119
|
+
it("exits cleanly (code 0) on stdin EOF", async () => {
|
|
120
|
+
server.send({ jsonrpc: "2.0", id: 1, method: "initialize", params: {} });
|
|
121
|
+
await server.recv();
|
|
122
|
+
const code = await server.close();
|
|
123
|
+
expect(code).toBe(0);
|
|
124
|
+
});
|
|
125
|
+
it("emits a loud deprecation warning to stderr", async () => {
|
|
126
|
+
server.send({ jsonrpc: "2.0", id: 1, method: "initialize", params: {} });
|
|
127
|
+
await server.recv();
|
|
128
|
+
await server.close();
|
|
129
|
+
const err = server.stderr();
|
|
130
|
+
expect(err).toMatch(/DEPRECATED/);
|
|
131
|
+
expect(err).toMatch(/REMOVED/);
|
|
132
|
+
expect(err).toMatch(/Node\.js 22/);
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
//# sourceMappingURL=fallback-no-sqlite.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fallback-no-sqlite.test.js","sourceRoot":"","sources":["../../src/mcp/fallback-no-sqlite.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export interface FrontmatterResult {
|
|
2
|
+
title?: string;
|
|
3
|
+
description?: string;
|
|
4
|
+
body: string;
|
|
5
|
+
}
|
|
6
|
+
export interface Section {
|
|
7
|
+
heading: string;
|
|
8
|
+
body: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Splits YAML frontmatter from MDX content.
|
|
12
|
+
* Returns title, optional description, and the body after the closing `---`.
|
|
13
|
+
*/
|
|
14
|
+
export declare function parseFrontmatter(content: string): FrontmatterResult;
|
|
15
|
+
/**
|
|
16
|
+
* Extracts a description from rendered body text.
|
|
17
|
+
* Strips fenced code blocks and headings, then returns the first three sentences.
|
|
18
|
+
*/
|
|
19
|
+
export declare function extractDescription(body: string): string;
|
|
20
|
+
/**
|
|
21
|
+
* Resolves `<include cwd lang="…">path[#anchor]</include>` directives in MDX
|
|
22
|
+
* content, replacing each with a fenced code block. Paths are resolved
|
|
23
|
+
* relative to the MDX file's directory unless the `cwd` attribute is present,
|
|
24
|
+
* in which case fileCwd is used (mirrors fumadocs' file.cwd semantics).
|
|
25
|
+
* Additional attributes (e.g. meta='…') are tolerated and ignored.
|
|
26
|
+
*/
|
|
27
|
+
export declare function resolveIncludes(content: string, mdxFilePath: string, fileCwd?: string): Promise<string>;
|
|
28
|
+
/**
|
|
29
|
+
* Strips JSX component tags (uppercase-initial or namespaced) from content,
|
|
30
|
+
* preserving text and fenced code blocks inside them.
|
|
31
|
+
* Also strips MDX import/export declarations.
|
|
32
|
+
*/
|
|
33
|
+
export declare function stripJsx(content: string): string;
|
|
34
|
+
/**
|
|
35
|
+
* Splits a body string into sections on `## ` heading boundaries.
|
|
36
|
+
* Content before the first heading is returned as a section with an empty heading.
|
|
37
|
+
*/
|
|
38
|
+
export declare function splitIntoSections(body: string): Section[];
|
|
39
|
+
//# sourceMappingURL=parse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/mcp/parse.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAMD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAqBnE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAoBvD;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CA8CjB;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAmBhD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,CAgBzD"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
// Pure MDX → pages/sections parsing helpers.
|
|
2
|
+
//
|
|
3
|
+
// This module deliberately has NO `node:sqlite` dependency (directly or
|
|
4
|
+
// transitively) so it stays importable on Node < 22 and non-Node runtimes.
|
|
5
|
+
// The text-search fallback backend depends on it; only the index *writer*
|
|
6
|
+
// (build-index.ts) needs node:sqlite.
|
|
7
|
+
import { readFile } from "node:fs/promises";
|
|
8
|
+
import { dirname, resolve } from "node:path";
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
// Pure helpers (exported for unit testing)
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
/**
|
|
13
|
+
* Splits YAML frontmatter from MDX content.
|
|
14
|
+
* Returns title, optional description, and the body after the closing `---`.
|
|
15
|
+
*/
|
|
16
|
+
export function parseFrontmatter(content) {
|
|
17
|
+
const match = content.match(/^---\n([\s\S]*?)\n---\n*([\s\S]*)$/);
|
|
18
|
+
if (!match) {
|
|
19
|
+
return { body: content };
|
|
20
|
+
}
|
|
21
|
+
const fm = match[1];
|
|
22
|
+
const bodyMatch = match[2];
|
|
23
|
+
if (fm === undefined || bodyMatch === undefined) {
|
|
24
|
+
return { body: content };
|
|
25
|
+
}
|
|
26
|
+
const body = bodyMatch.trimStart();
|
|
27
|
+
const titleMatch = fm.match(/^title:\s*(.+)$/m);
|
|
28
|
+
const descMatch = fm.match(/^description:\s*(.+)$/m);
|
|
29
|
+
return {
|
|
30
|
+
title: titleMatch?.[1]?.trim(),
|
|
31
|
+
description: descMatch?.[1]?.trim(),
|
|
32
|
+
body,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Extracts a description from rendered body text.
|
|
37
|
+
* Strips fenced code blocks and headings, then returns the first three sentences.
|
|
38
|
+
*/
|
|
39
|
+
export function extractDescription(body) {
|
|
40
|
+
if (!body)
|
|
41
|
+
return "";
|
|
42
|
+
// Strip all fenced code blocks
|
|
43
|
+
let text = body.replace(/```[\s\S]*?```/g, "");
|
|
44
|
+
// Strip markdown headings
|
|
45
|
+
text = text.replace(/^#{1,6}\s+.*/gm, "");
|
|
46
|
+
// Strip JSX tags (in case they weren't stripped already)
|
|
47
|
+
text = text.replace(/<\/?[A-Z][a-zA-Z]*[^>]*>/g, "");
|
|
48
|
+
// Collapse all whitespace to single spaces
|
|
49
|
+
text = text.replace(/\s+/g, " ").trim();
|
|
50
|
+
const sentences = [];
|
|
51
|
+
const sentenceRe = /[^.!?]+[.!?]+/g;
|
|
52
|
+
let m;
|
|
53
|
+
while ((m = sentenceRe.exec(text)) !== null && sentences.length < 3) {
|
|
54
|
+
sentences.push(m[0].trim());
|
|
55
|
+
}
|
|
56
|
+
return sentences.join(" ");
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Resolves `<include cwd lang="…">path[#anchor]</include>` directives in MDX
|
|
60
|
+
* content, replacing each with a fenced code block. Paths are resolved
|
|
61
|
+
* relative to the MDX file's directory unless the `cwd` attribute is present,
|
|
62
|
+
* in which case fileCwd is used (mirrors fumadocs' file.cwd semantics).
|
|
63
|
+
* Additional attributes (e.g. meta='…') are tolerated and ignored.
|
|
64
|
+
*/
|
|
65
|
+
export async function resolveIncludes(content, mdxFilePath, fileCwd) {
|
|
66
|
+
// Match <include ...attrs...>path</include> — any attribute combination.
|
|
67
|
+
const includeRe = /<include\s+([^>]*?)>\s*([\s\S]*?)\s*<\/include>/g;
|
|
68
|
+
// Collect all replacements first, then apply (to avoid regex state issues)
|
|
69
|
+
const replacements = [];
|
|
70
|
+
let m;
|
|
71
|
+
while ((m = includeRe.exec(content)) !== null) {
|
|
72
|
+
const attrs = m[1];
|
|
73
|
+
const includePath = m[2];
|
|
74
|
+
if (attrs === undefined || includePath === undefined)
|
|
75
|
+
continue;
|
|
76
|
+
const hasCwd = /\bcwd\b/.test(attrs);
|
|
77
|
+
const langMatch = attrs.match(/\blang="([^"]+)"/);
|
|
78
|
+
if (!langMatch)
|
|
79
|
+
continue; // not a code include — leave untouched
|
|
80
|
+
const lang = langMatch[1];
|
|
81
|
+
if (lang === undefined)
|
|
82
|
+
continue;
|
|
83
|
+
const rawPath = includePath.trim();
|
|
84
|
+
const hashIdx = rawPath.indexOf("#");
|
|
85
|
+
const filePath = hashIdx === -1 ? rawPath : rawPath.slice(0, hashIdx);
|
|
86
|
+
const anchor = hashIdx === -1 ? null : rawPath.slice(hashIdx + 1);
|
|
87
|
+
const base = hasCwd && fileCwd ? fileCwd : dirname(mdxFilePath);
|
|
88
|
+
const resolvedPath = resolve(base, filePath.trim());
|
|
89
|
+
let fileContent = await readFile(resolvedPath, "utf8");
|
|
90
|
+
if (anchor) {
|
|
91
|
+
const regionRe = new RegExp(`// #region ${anchor}\\n([\\s\\S]*?)// #endregion ${anchor}`);
|
|
92
|
+
const regionMatch = fileContent.match(regionRe);
|
|
93
|
+
const regionBody = regionMatch?.[1];
|
|
94
|
+
if (regionBody !== undefined) {
|
|
95
|
+
fileContent = regionBody.trimEnd();
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
replacements.push({
|
|
99
|
+
original: m[0],
|
|
100
|
+
replacement: `\`\`\`${lang}\n${fileContent}\n\`\`\``,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
let result = content;
|
|
104
|
+
for (const { original, replacement } of replacements) {
|
|
105
|
+
result = result.replace(original, replacement);
|
|
106
|
+
}
|
|
107
|
+
return result;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Strips JSX component tags (uppercase-initial or namespaced) from content,
|
|
111
|
+
* preserving text and fenced code blocks inside them.
|
|
112
|
+
* Also strips MDX import/export declarations.
|
|
113
|
+
*/
|
|
114
|
+
export function stripJsx(content) {
|
|
115
|
+
let result = content;
|
|
116
|
+
// Strip MDX import/export lines
|
|
117
|
+
result = result.replace(/^(?:import|export)\s+.*$/gm, "");
|
|
118
|
+
// Self-closing JSX: <Component />
|
|
119
|
+
result = result.replace(/<[A-Z][a-zA-Z]*(?:\.[a-zA-Z]+)?[^>]*\/>/g, "");
|
|
120
|
+
// Opening JSX: <Component ...>
|
|
121
|
+
result = result.replace(/<[A-Z][a-zA-Z]*(?:\.[a-zA-Z]+)?[^>]*>/g, "");
|
|
122
|
+
// Closing JSX: </Component>
|
|
123
|
+
result = result.replace(/<\/[A-Z][a-zA-Z]*(?:\.[a-zA-Z]+)?>/g, "");
|
|
124
|
+
// Strip region marker lines left over from include expansion
|
|
125
|
+
// Covers: // #region, # #region, <!-- #region, /* #region */
|
|
126
|
+
result = result.replace(/^[ \t]*(?:\/\/|#|<!--|\/\*)\s*#?(?:end)?region\b.*$/gm, "");
|
|
127
|
+
// Collapse lines that contain only whitespace into empty lines
|
|
128
|
+
// (artefact of Tab/Tabs wrapper components being stripped)
|
|
129
|
+
result = result.replace(/^[ \t]+$/gm, "");
|
|
130
|
+
// Collapse 3+ blank lines to 2
|
|
131
|
+
result = result.replace(/\n{3,}/g, "\n\n");
|
|
132
|
+
return result.trim();
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Splits a body string into sections on `## ` heading boundaries.
|
|
136
|
+
* Content before the first heading is returned as a section with an empty heading.
|
|
137
|
+
*/
|
|
138
|
+
export function splitIntoSections(body) {
|
|
139
|
+
const parts = body.split(/(?=^## )/m);
|
|
140
|
+
return parts
|
|
141
|
+
.map((part) => {
|
|
142
|
+
const headingMatch = part.match(/^## (.+)\n/);
|
|
143
|
+
if (!headingMatch) {
|
|
144
|
+
return { heading: "", body: part.trim() };
|
|
145
|
+
}
|
|
146
|
+
const heading = headingMatch[1];
|
|
147
|
+
return {
|
|
148
|
+
heading: heading?.trim() ?? "",
|
|
149
|
+
body: part.replace(/^## .+\n/, "").trim(),
|
|
150
|
+
};
|
|
151
|
+
})
|
|
152
|
+
.filter((s) => s.body.length > 0 || s.heading.length > 0);
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=parse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/mcp/parse.ts"],"names":[],"mappings":"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"}
|
|
@@ -65,7 +65,7 @@ export interface PermissionRelation {
|
|
|
65
65
|
select(columns: Record<string, string>): PermissionRelation;
|
|
66
66
|
hopTo(relation: string): PermissionRelation;
|
|
67
67
|
gather(options: {
|
|
68
|
-
start?: Record<string, unknown
|
|
68
|
+
start?: Record<string, unknown> | PermissionRelation;
|
|
69
69
|
step: (ctx: {
|
|
70
70
|
current: RecursiveCurrentValue;
|
|
71
71
|
}) => PermissionRelation;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/permissions/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/permissions/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -126,7 +126,7 @@ class PermissionRelationBuilder {
|
|
|
126
126
|
if (this.state.selectMap && Object.keys(this.state.selectMap).length > 0) {
|
|
127
127
|
throw new Error("gather(...) does not support select(...) seeds in MVP.");
|
|
128
128
|
}
|
|
129
|
-
if (options.start && this.state.kind === "union") {
|
|
129
|
+
if (options.start && this.state.kind === "union" && !isPermissionRelation(options.start)) {
|
|
130
130
|
throw new Error("gather(...) start does not support union(...) seeds in MVP.");
|
|
131
131
|
}
|
|
132
132
|
const seedState = buildGatherSeedState(this.state, options.start, this.relations);
|
|
@@ -162,7 +162,7 @@ class PermissionRelationBuilder {
|
|
|
162
162
|
{
|
|
163
163
|
Cmp: {
|
|
164
164
|
left: {
|
|
165
|
-
scope:
|
|
165
|
+
scope: currentFilter.scope,
|
|
166
166
|
column: stripQualifier(currentFilter.column),
|
|
167
167
|
},
|
|
168
168
|
op: "Eq",
|
|
@@ -187,7 +187,7 @@ class PermissionRelationBuilder {
|
|
|
187
187
|
on: [
|
|
188
188
|
{
|
|
189
189
|
left: {
|
|
190
|
-
scope: stepState.
|
|
190
|
+
scope: stepState.initialScope,
|
|
191
191
|
column: stripQualifier(stepJoin.left),
|
|
192
192
|
},
|
|
193
193
|
right: { scope: recursiveHopScope, column: "id" },
|
|
@@ -463,6 +463,13 @@ function buildGatherSeedState(state, start, relationsByTable) {
|
|
|
463
463
|
if (start === undefined) {
|
|
464
464
|
return state;
|
|
465
465
|
}
|
|
466
|
+
if (isPermissionRelation(start)) {
|
|
467
|
+
const seedState = getRelationState(start);
|
|
468
|
+
if (seedState.outputTable !== state.outputTable) {
|
|
469
|
+
throw new Error(`gather(...) explicit relation seed must output "${state.outputTable}" rows, got "${seedState.outputTable}".`);
|
|
470
|
+
}
|
|
471
|
+
return seedState;
|
|
472
|
+
}
|
|
466
473
|
const startWhere = resolveRelationWhereInput(start);
|
|
467
474
|
const baseScope = currentRelationScope(state);
|
|
468
475
|
const joins = [...state.joins];
|
|
@@ -667,6 +674,9 @@ function getRelationState(relation) {
|
|
|
667
674
|
}
|
|
668
675
|
throw new Error("Expected a relation built from policy.<table> with where/join/hopTo/gather.");
|
|
669
676
|
}
|
|
677
|
+
function isPermissionRelation(value) {
|
|
678
|
+
return value instanceof PermissionRelationBuilder;
|
|
679
|
+
}
|
|
670
680
|
function relationColumnRef(column, defaultScope) {
|
|
671
681
|
const [prefix, bare] = splitQualifiedColumn(column);
|
|
672
682
|
if (prefix) {
|