kennel 0.2.44 → 0.2.45
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/core/api-client.d.ts +1 -1
- package/dist/core/api-client.js +35 -2
- package/dist/core/runtime.js +548 -99
- package/dist/llm/worker.js +11 -2
- package/dist/notes/command.js +20 -4
- package/dist/package/preview.d.ts +1 -1
- package/dist/package/preview.js +760 -495
- package/dist/site/hot-viewer.js +4 -4
- package/dist/site/server-plugins.js +468 -30
- package/dist/site/viewer.d.ts +0 -3
- package/dist/site/viewer.js +11 -41
- package/dist/tui/launcher.d.ts +11 -0
- package/dist/{site/terminal.js → tui/launcher.js} +60 -15
- package/package.json +2 -2
- package/web/assets/{abnfDiagram-VRR7QNED-ooA_TyhC.js → abnfDiagram-VRR7QNED-D8mHNUwf.js} +1 -1
- package/web/assets/{arc-DqQkY48J.js → arc-DORR-Lbn.js} +1 -1
- package/web/assets/{architectureDiagram-ZJ3FMSHR-DaXzRGP0.js → architectureDiagram-ZJ3FMSHR-CnmL2DAX.js} +1 -1
- package/web/assets/ask-tray-KUTWZ4MV-VQJJAsDn.js +1 -0
- package/web/assets/{blockDiagram-677ZJIJ3-Br5Y_dbP.js → blockDiagram-677ZJIJ3-_SWUT5nP.js} +1 -1
- package/web/assets/{c4Diagram-LMCZKHZV-CWIy0S0N.js → c4Diagram-LMCZKHZV-r7ghc180.js} +1 -1
- package/web/assets/channel-r9-1szjb.js +1 -0
- package/web/assets/{chunk-2Q5K7J3B-8dxcuNwr.js → chunk-2Q5K7J3B-D_LeMwFJ.js} +1 -1
- package/web/assets/{chunk-32BRIVSS-DB27hz0Y.js → chunk-32BRIVSS-AeVZw1It.js} +1 -1
- package/web/assets/{chunk-5VM5RSS4-CTNxGtbA.js → chunk-5VM5RSS4-Bp_epQ8r.js} +1 -1
- package/web/assets/{chunk-EX3LRPZG-oKNLktOC.js → chunk-EX3LRPZG-Dz4n-DeM.js} +1 -1
- package/web/assets/{chunk-JWPE2WC7-DeQNmWoS.js → chunk-JWPE2WC7-B0MQp8TQ.js} +1 -1
- package/web/assets/{chunk-MOJQB5TN-BrW33Mrb.js → chunk-MOJQB5TN-Bkomqk1x.js} +1 -1
- package/web/assets/{chunk-RYQCIY6F-DEkTU6j-.js → chunk-RYQCIY6F-B0F7WMyE.js} +1 -1
- package/web/assets/{chunk-V7JOEXUC-BuDLgwdB.js → chunk-V7JOEXUC-BDifU9oY.js} +1 -1
- package/web/assets/{chunk-VR4S4FIN-BsNgrrKe.js → chunk-VR4S4FIN-Bgd4HCG_.js} +1 -1
- package/web/assets/{chunk-XXDRQBXY-DjT1Bydl.js → chunk-XXDRQBXY-BK8FhRs4.js} +1 -1
- package/web/assets/classDiagram-OUVF2IWQ-L_jmDmNd.js +1 -0
- package/web/assets/classDiagram-v2-EOCWNBFH-L_jmDmNd.js +1 -0
- package/web/assets/client-5Q4VI7ZT-BkTtFalV.js +52 -0
- package/web/assets/{cose-bilkent-JH36ORCC-BtAklxrd.js → cose-bilkent-JH36ORCC-Dm3k2U47.js} +1 -1
- package/web/assets/{cynefin-VYW2F7L2-DabtZWZy.js → cynefin-VYW2F7L2-DCnilF1f.js} +1 -1
- package/web/assets/{cynefinDiagram-TSTJHNR4-DVk8uQ8L.js → cynefinDiagram-TSTJHNR4-BrulEEQ9.js} +1 -1
- package/web/assets/{dagre-VKFMJZFB-CiAbBCor.js → dagre-VKFMJZFB-Dda61i4h.js} +1 -1
- package/web/assets/{diagram-FQU43EPY-DWp-OzJz.js → diagram-FQU43EPY-sTmDEDMM.js} +1 -1
- package/web/assets/{diagram-G47NLZAW-YDllS_1P.js → diagram-G47NLZAW-d-KQnPrm.js} +1 -1
- package/web/assets/{diagram-NH7WQ7WH-BH3l4yRj.js → diagram-NH7WQ7WH-DcRxa_ps.js} +1 -1
- package/web/assets/{diagram-OA4YK3LP-CszBvxdr.js → diagram-OA4YK3LP-CYzWtWvV.js} +1 -1
- package/web/assets/{diagram-WEI45ONY-bEhZeER6.js → diagram-WEI45ONY-FI3V_N07.js} +1 -1
- package/web/assets/document-view-TGFRNHKS-VSJS3BGw.js +24 -0
- package/web/assets/{ebnfDiagram-CCIWWBDH-DlpoUUO5.js → ebnfDiagram-CCIWWBDH-DcvVmQhu.js} +1 -1
- package/web/assets/{entity-search-page-YP4SPMBC-WryWZNPk.js → entity-search-page-RIYQYIJJ-Bed3y-5Q.js} +5 -5
- package/web/assets/{erDiagram-Q63AITRT-DROgehIM.js → erDiagram-Q63AITRT-DI5DBlBp.js} +1 -1
- package/web/assets/{flowDiagram-23GEKE2U-63pYiBzl.js → flowDiagram-23GEKE2U-Bz1AbRxB.js} +1 -1
- package/web/assets/{ganttDiagram-NO4QXBWP-tc34wKHJ.js → ganttDiagram-NO4QXBWP-ChKlhxeo.js} +1 -1
- package/web/assets/{gitGraphDiagram-IHSO6WYX-GOjqt583.js → gitGraphDiagram-IHSO6WYX-BtTqLSyY.js} +1 -1
- package/web/assets/{index-qmu99cjp.js → index-CDAH4UPU.js} +157 -157
- package/web/assets/{infoDiagram-FWYZ7A6U-CD5BwkLQ.js → infoDiagram-FWYZ7A6U-COpIz9uZ.js} +1 -1
- package/web/assets/{ishikawaDiagram-FXEZZL3T-yIweY6wR.js → ishikawaDiagram-FXEZZL3T-CB7Bdsfr.js} +1 -1
- package/web/assets/{journeyDiagram-5HDEW3XC-D3MeUGvn.js → journeyDiagram-5HDEW3XC-BMytnJBE.js} +1 -1
- package/web/assets/{kanban-definition-HUTT4EX6-CnZ5N79y.js → kanban-definition-HUTT4EX6-BFS4G0g-.js} +1 -1
- package/web/assets/{linear-s5G6iOMz.js → linear-DMUO2qBp.js} +1 -1
- package/web/assets/{linked-session-header-DOEX4FYM-CtTOXcZn.js → linked-session-header-7BUTWROP-DzEcA4Fq.js} +1 -1
- package/web/assets/{mermaid.core-BpUKp9r_.js → mermaid.core-BAj-Ltr-.js} +4 -4
- package/web/assets/{mindmap-definition-LN4V7U3C-Bp2QH5sN.js → mindmap-definition-LN4V7U3C-CjymOEvH.js} +1 -1
- package/web/assets/{pegDiagram-2B236MQR-lx1jDUmt.js → pegDiagram-2B236MQR-D64jiUPu.js} +1 -1
- package/web/assets/{pieDiagram-ENE6RG2P--kf2YNbw.js → pieDiagram-ENE6RG2P-CCbI5U6o.js} +1 -1
- package/web/assets/{plugin-host-modules-BKbxlu7U.js → plugin-host-modules-D7pHtNJn.js} +2 -2
- package/web/assets/{project-search-page-TZG7AZBQ-3W40ayYn.js → project-search-page-O6YRLDGU-1bPrifgb.js} +2 -2
- package/web/assets/{quadrantDiagram-ABIIQ3AL-Vr7zWQYV.js → quadrantDiagram-ABIIQ3AL-B7dN_Kn5.js} +1 -1
- package/web/assets/{railroadDiagram-RFXS5EU6-CqWD8KUC.js → railroadDiagram-RFXS5EU6-BPjAzqcL.js} +1 -1
- package/web/assets/{requirementDiagram-TGXJPOKE-BHUBdOVh.js → requirementDiagram-TGXJPOKE-BFhnnUWa.js} +1 -1
- package/web/assets/{sankeyDiagram-HTMAVEWB-Cw_ZddWI.js → sankeyDiagram-HTMAVEWB-W2UguUjW.js} +1 -1
- package/web/assets/{selection-popup-ABYH3A27-Gc-RFSWj.js → selection-popup-ABYH3A27-DsiLbG7S.js} +4 -4
- package/web/assets/{sequenceDiagram-DBY2YBRQ-CyCbkAfM.js → sequenceDiagram-DBY2YBRQ-DcOakOD4.js} +1 -1
- package/web/assets/{sizeCapture-X5ZJPWSS-BG6RM8rb.js → sizeCapture-X5ZJPWSS-D3N248Z6.js} +1 -1
- package/web/assets/{stateDiagram-2N3HPSRC-DKpZl5UU.js → stateDiagram-2N3HPSRC-Cir3yiDe.js} +1 -1
- package/web/assets/{stateDiagram-v2-6OUMAXLB-DHUy-0iS.js → stateDiagram-v2-6OUMAXLB-BwL0KYLn.js} +1 -1
- package/web/assets/{swimlanes-5IMT3BWC-D14uyHMH.js → swimlanes-5IMT3BWC-Dhq7FmZr.js} +2 -2
- package/web/assets/swimlanesDiagram-G3AALYLV-D4q-nPpB.js +8 -0
- package/web/assets/{timeline-definition-FHXFAJF6-f4WPhEXS.js → timeline-definition-FHXFAJF6-CMa1wjsI.js} +1 -1
- package/web/assets/{vennDiagram-L72KCM5P-lr4A8guw.js → vennDiagram-L72KCM5P-DvglazwQ.js} +1 -1
- package/web/assets/{wardleyDiagram-EHGQE667-CR-Im585.js → wardleyDiagram-EHGQE667-DcogrL32.js} +1 -1
- package/web/assets/{xychartDiagram-FW5EYKEG-DeNQfP7k.js → xychartDiagram-FW5EYKEG-BlsDcr_U.js} +1 -1
- package/web/index.html +1 -1
- package/dist/site/terminal.d.ts +0 -14
- package/web/assets/ask-tray-KUTWZ4MV-Ckn1y1Zw.js +0 -24
- package/web/assets/channel-BQxXBpeY.js +0 -1
- package/web/assets/classDiagram-OUVF2IWQ-BT1TSwZs.js +0 -1
- package/web/assets/classDiagram-v2-EOCWNBFH-BT1TSwZs.js +0 -1
- package/web/assets/swimlanesDiagram-G3AALYLV-C5riej52.js +0 -8
package/dist/site/viewer.js
CHANGED
|
@@ -2,25 +2,9 @@ import { execFileSync } from "node:child_process";
|
|
|
2
2
|
import { existsSync, realpathSync, statSync } from "node:fs";
|
|
3
3
|
import { createServer } from "node:net";
|
|
4
4
|
import { dirname, isAbsolute, relative, resolve } from "node:path";
|
|
5
|
-
import { readExternalPlugins } from "../plugins/external.js";
|
|
6
5
|
import { previewKind } from "./kinds.js";
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
export function pluginViewLinks(viewerUrl, root) {
|
|
10
|
-
return readExternalPlugins().flatMap((plugin) => {
|
|
11
|
-
const view = (subpath) => {
|
|
12
|
-
const url = new URL(viewerUrl);
|
|
13
|
-
url.pathname = `/folder/${encodeBase64Url(root)}/views/${encodeURIComponent(plugin.id)}${subpath ? `/${encodeURIComponent(subpath)}` : ""}`;
|
|
14
|
-
// A query `folder` makes the route parser ignore the path and select Notes.
|
|
15
|
-
url.searchParams.delete("folder");
|
|
16
|
-
return url.href;
|
|
17
|
-
};
|
|
18
|
-
const views = [{ id: plugin.id, url: view() }];
|
|
19
|
-
for (const item of plugin.views ?? [])
|
|
20
|
-
views.push({ id: `${plugin.id} · ${item.label}`, url: view(item.subpath) });
|
|
21
|
-
return views;
|
|
22
|
-
});
|
|
23
|
-
}
|
|
6
|
+
import { folderUrl } from "../core/api-client.js";
|
|
7
|
+
import { openPreview, previewTerminal } from "../tui/launcher.js";
|
|
24
8
|
export function viewerFolder(root, value) {
|
|
25
9
|
return resolve(value ?? root);
|
|
26
10
|
}
|
|
@@ -55,13 +39,6 @@ const loopbackHosts = new Set([
|
|
|
55
39
|
function isLoopbackHost(host) {
|
|
56
40
|
return loopbackHosts.has(host) || host.startsWith("127.");
|
|
57
41
|
}
|
|
58
|
-
function encodeBase64Url(value) {
|
|
59
|
-
return Buffer.from(value, "utf8")
|
|
60
|
-
.toString("base64")
|
|
61
|
-
.replaceAll("+", "-")
|
|
62
|
-
.replaceAll("/", "_")
|
|
63
|
-
.replaceAll("=", "");
|
|
64
|
-
}
|
|
65
42
|
export function splitViewerArgs(input) {
|
|
66
43
|
let hasHost = false;
|
|
67
44
|
let hasRoot = false;
|
|
@@ -182,20 +159,13 @@ export function splitViewerArgs(input) {
|
|
|
182
159
|
export function popUrl(host, port, options) {
|
|
183
160
|
const scheme = options.tailscale ? "https" : "http";
|
|
184
161
|
const authority = options.tailscale ? host : `${host}:${port}`;
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
url.pathname = `/folder/${encodeBase64Url(options.root)}/notes`;
|
|
193
|
-
return url.href;
|
|
194
|
-
}
|
|
195
|
-
url.pathname = `/folder/${encodeBase64Url(options.root)}/document/${encodeBase64Url(relative(options.root, options.target))}`;
|
|
196
|
-
if (options.watch)
|
|
197
|
-
url.searchParams.set("watch", "1");
|
|
198
|
-
return url.href;
|
|
162
|
+
return folderUrl(`${scheme}://${authority}/`, options.root, {
|
|
163
|
+
view: options.plugin
|
|
164
|
+
? { pluginId: options.plugin.id, subpath: options.plugin.subpath }
|
|
165
|
+
: undefined,
|
|
166
|
+
document: options.target ? relative(options.root, options.target) : undefined,
|
|
167
|
+
watch: options.watch,
|
|
168
|
+
}).href;
|
|
199
169
|
}
|
|
200
170
|
function viewerPortWasExplicit(input) {
|
|
201
171
|
return input.some((arg) => arg === "--port" || arg.startsWith("--port="));
|
|
@@ -329,7 +299,7 @@ export async function viewer(input, plugin) {
|
|
|
329
299
|
existing.kernelKey === plugins.key &&
|
|
330
300
|
isSameOrDescendant(existing.root, options.root)))) {
|
|
331
301
|
const viewerUrl = popUrl(displayHost, options.port, options);
|
|
332
|
-
const terminal = previewTerminal(viewerUrl, options
|
|
302
|
+
const terminal = previewTerminal(viewerUrl, options);
|
|
333
303
|
if (options.open)
|
|
334
304
|
openPreview(viewerUrl);
|
|
335
305
|
try {
|
|
@@ -359,7 +329,7 @@ export async function viewer(input, plugin) {
|
|
|
359
329
|
execFileSync("tailscale", ["serve", "--bg", "--yes", options.port]);
|
|
360
330
|
}
|
|
361
331
|
const viewerUrl = popUrl(displayHost, options.port, options);
|
|
362
|
-
const terminal = previewTerminal(viewerUrl, options
|
|
332
|
+
const terminal = previewTerminal(viewerUrl, options);
|
|
363
333
|
if (options.open)
|
|
364
334
|
openPreview(viewerUrl);
|
|
365
335
|
try {
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { openPreview } from "kennel-preview/runtime";
|
|
2
|
+
export { openPreview };
|
|
3
|
+
/** Folder dashboard; closing a reused preview never stops its server. */
|
|
4
|
+
export declare function previewTerminal(url: string, target: {
|
|
5
|
+
root: string;
|
|
6
|
+
target?: string;
|
|
7
|
+
}): {
|
|
8
|
+
close: () => void;
|
|
9
|
+
closed: Promise<void>;
|
|
10
|
+
interactive: boolean;
|
|
11
|
+
};
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
// packages/
|
|
2
|
-
import { execFile, execFileSync } from "node:child_process";
|
|
1
|
+
// packages/cli/src/tui/launcher.ts
|
|
2
|
+
import { execFile as execFile2, execFileSync } from "node:child_process";
|
|
3
3
|
import { basename } from "node:path";
|
|
4
4
|
import { clearScreenDown, cursorTo, emitKeypressEvents } from "node:readline";
|
|
5
|
+
|
|
6
|
+
// packages/preview/src/runtime.ts
|
|
7
|
+
import { execFile } from "node:child_process";
|
|
5
8
|
function openPreview(url) {
|
|
6
9
|
const command = process.platform === "darwin" ? "/usr/bin/open" : process.platform === "win32" ? "explorer.exe" : "xdg-open";
|
|
7
10
|
execFile(command, [url], (error) => {
|
|
@@ -9,11 +12,57 @@ function openPreview(url) {
|
|
|
9
12
|
console.error(`Could not open browser: ${error.message}`);
|
|
10
13
|
});
|
|
11
14
|
}
|
|
15
|
+
|
|
16
|
+
// packages/cli/src/tui/launcher.ts
|
|
17
|
+
import { readExternalPlugins } from "../plugins/external.js";
|
|
18
|
+
|
|
19
|
+
// packages/plugins/src/client.ts
|
|
20
|
+
function folderPathId(path) {
|
|
21
|
+
const bytes = new TextEncoder().encode(path);
|
|
22
|
+
let binary = "";
|
|
23
|
+
for (const byte of bytes)
|
|
24
|
+
binary += String.fromCharCode(byte);
|
|
25
|
+
return btoa(binary).replaceAll("+", "-").replaceAll("/", "_").replaceAll("=", "");
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// packages/api/src/shared/viewer-route.ts
|
|
29
|
+
function folderPathId2(path) {
|
|
30
|
+
return folderPathId(path);
|
|
31
|
+
}
|
|
32
|
+
function folderHomeHref(folder) {
|
|
33
|
+
return `/folder/${folderPathId2(folder)}`;
|
|
34
|
+
}
|
|
35
|
+
function folderPluginHref(folder, pluginId, subpath = "") {
|
|
36
|
+
const base = `/folder/${folderPathId2(folder)}/views/${encodeURIComponent(pluginId)}`;
|
|
37
|
+
return subpath ? `${base}/${encodeURIComponent(subpath)}` : base;
|
|
38
|
+
}
|
|
39
|
+
function folderUrl(base, folder, options = {}) {
|
|
40
|
+
const current = new URL(base);
|
|
41
|
+
current.pathname = options.view ? folderPluginHref(folder, options.view.pluginId, options.view.subpath) : options.document ? folderDocumentHref(folder, options.document) : folderHomeHref(folder);
|
|
42
|
+
current.searchParams.delete("folder");
|
|
43
|
+
if (options.document && options.watch && !options.view) {
|
|
44
|
+
current.searchParams.set("watch", "1");
|
|
45
|
+
}
|
|
46
|
+
return current;
|
|
47
|
+
}
|
|
48
|
+
function folderDocumentHref(folder, document) {
|
|
49
|
+
return `/folder/${folderPathId2(folder)}/document/${folderPathId2(document)}`;
|
|
50
|
+
}
|
|
51
|
+
// packages/cli/src/tui/launcher.ts
|
|
52
|
+
function pluginViewLinks(viewerUrl, root) {
|
|
53
|
+
return readExternalPlugins().flatMap((plugin) => {
|
|
54
|
+
const view = (subpath) => folderUrl(viewerUrl, root, { view: { pluginId: plugin.id, subpath } }).href;
|
|
55
|
+
const views = [{ id: plugin.id, url: view() }];
|
|
56
|
+
for (const item of plugin.views ?? [])
|
|
57
|
+
views.push({ id: `${plugin.id} · ${item.label}`, url: view(item.subpath) });
|
|
58
|
+
return views;
|
|
59
|
+
});
|
|
60
|
+
}
|
|
12
61
|
function copyPreviewLink(url) {
|
|
13
62
|
const command = process.platform === "darwin" ? "/usr/bin/pbcopy" : process.platform === "win32" ? "clip" : process.env.WAYLAND_DISPLAY ? "wl-copy" : "xclip";
|
|
14
63
|
const args = command === "xclip" ? ["-selection", "clipboard"] : [];
|
|
15
64
|
return new Promise((done, fail) => {
|
|
16
|
-
const child =
|
|
65
|
+
const child = execFile2(command, args, (error) => error ? fail(error) : done());
|
|
17
66
|
child.stdin?.on("error", fail);
|
|
18
67
|
child.stdin?.end(url);
|
|
19
68
|
});
|
|
@@ -31,8 +80,9 @@ function repositoryName(folder) {
|
|
|
31
80
|
return;
|
|
32
81
|
}
|
|
33
82
|
}
|
|
34
|
-
function previewTerminal(url, target
|
|
83
|
+
function previewTerminal(url, target) {
|
|
35
84
|
url = new URL(url).href;
|
|
85
|
+
const views = pluginViewLinks(url, target.root);
|
|
36
86
|
const input = process.stdin;
|
|
37
87
|
const output = process.stdout;
|
|
38
88
|
const terminal = Boolean(output.isTTY && process.env.TERM !== "dumb");
|
|
@@ -91,7 +141,10 @@ ${href}`) => terminal ? `\x1B]8;;${href}\x07${accent(label)}\x1B]8;;\x07` : plai
|
|
|
91
141
|
status = "Preparing a private Tailscale link…";
|
|
92
142
|
render();
|
|
93
143
|
try {
|
|
94
|
-
share ??=
|
|
144
|
+
share ??= (async () => {
|
|
145
|
+
const { startPreviewShare } = await import(new URL("../package/preview.js", import.meta.url).href);
|
|
146
|
+
return startPreviewShare({ ...target, ...password ? { password: true } : {} });
|
|
147
|
+
})();
|
|
95
148
|
let active;
|
|
96
149
|
try {
|
|
97
150
|
active = await share;
|
|
@@ -147,7 +200,7 @@ ${href}`) => terminal ? `\x1B]8;;${href}\x07${accent(label)}\x1B]8;;\x07` : plai
|
|
|
147
200
|
resolveClosed();
|
|
148
201
|
};
|
|
149
202
|
const actions = [
|
|
150
|
-
...
|
|
203
|
+
...views.map((view) => ({ label: view.id, run: () => {
|
|
151
204
|
openPreview(view.url);
|
|
152
205
|
status = "Browser open requested.";
|
|
153
206
|
}, view: view.url })),
|
|
@@ -214,15 +267,7 @@ ${link(name)}
|
|
|
214
267
|
`);
|
|
215
268
|
return { close, closed, interactive };
|
|
216
269
|
}
|
|
217
|
-
|
|
218
|
-
// packages/cli/src/site/terminal.ts
|
|
219
|
-
function previewTerminal2(url, target, views) {
|
|
220
|
-
return previewTerminal(url, target, async (password = false) => {
|
|
221
|
-
const { startPreviewShare } = await import(new URL("../package/preview.js", import.meta.url).href);
|
|
222
|
-
return startPreviewShare({ ...target, ...password ? { password: true } : {} });
|
|
223
|
-
}, views);
|
|
224
|
-
}
|
|
225
270
|
export {
|
|
226
271
|
openPreview,
|
|
227
|
-
|
|
272
|
+
previewTerminal
|
|
228
273
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kennel",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.45",
|
|
4
4
|
"description": "Open-source pop-up previews for AI output: markdown, HTML artifacts, email, images, code, tables, notes, and calendars, from the terminal or your agent session.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
"effect": "^3.19.7",
|
|
70
70
|
"esbuild": "^0.27.0",
|
|
71
71
|
"kennel-mcp": "https://registry.npmjs.org/%40raggle-ai%2fkennel-mcp/-/kennel-mcp-0.1.8.tgz",
|
|
72
|
-
"kennel-plugins": "0.1.
|
|
72
|
+
"kennel-plugins": "0.1.22",
|
|
73
73
|
"koffi": "^3.3.1",
|
|
74
74
|
"lucide-react": "^0.562.0",
|
|
75
75
|
"radix-ui": "^1.6.7",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{g as p,r as u,d as a}from"./chunk-MOJQB5TN-
|
|
1
|
+
import{g as p,r as u,d as a}from"./chunk-MOJQB5TN-Bkomqk1x.js";import{p as f}from"./chunk-JWPE2WC7-B0MQp8TQ.js";import{_ as n,l as o}from"./mermaid.core-BAj-Ltr-.js";import{b as c,M as d}from"./cynefin-VYW2F7L2-DCnilF1f.js";import"./index-CDAH4UPU.js";import"./react-DELVxLrX.js";import"./markdown-BP-54rPU.js";import"./tanstack-CRaSxWtK.js";var v=c().RailroadAbnf.parser.LangiumParser,i=n(e=>{const r=e.alternatives.map(g);return r.length===1?r[0]:{type:"choice",alternatives:r}},"transformAlternation"),g=n(e=>{const r=e.elements.map(y);return r.length===1?r[0]:{type:"sequence",elements:r}},"transformConcatenation"),b=n(e=>{if(e.includes("*")){const[t,s]=e.split("*"),m=t?parseInt(t,10):0,l=s?parseInt(s,10):1/0;return{min:m,max:l}}const r=parseInt(e,10);return{min:r,max:r}},"parseRepeat"),y=n(e=>{const r=A(e.primary);if(!e.repeat)return r;const{min:t,max:s}=b(e.repeat);return t===0&&s===1?{type:"optional",element:r}:{type:"repetition",element:r,min:t,max:s}},"transformElement"),A=n(e=>{switch(e.$type){case"AbnfStringLiteral":return{type:"terminal",value:e.value};case"AbnfNumVal":return{type:"terminal",value:e.value};case"AbnfRuleName":return{type:"nonterminal",name:e.name};case"AbnfGroup":return i(e.element);case"AbnfOptionalGroup":return{type:"optional",element:i(e.element)};default:throw new Error(`Unsupported ABNF primary node: ${e.$type}`)}},"transformPrimary"),P=n(e=>({name:e.name,definition:i(e.definition)}),"transformRule"),h=n(e=>{f(e,a),e.title&&a.setTitle(e.title),e.rules.map(r=>a.addRule(P(r)))},"populateDb"),R={parse:n(e=>{a.clear(),o.debug("[ABNF Parser] Starting Langium parse");const r=v.parse(e);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new d(r);const t=r.value;o.debug("[ABNF Parser] Parsed rules:",t.rules.length),h(t),o.debug("[ABNF Parser] Parse complete")},"parse"),parser:{yy:a}},C={parser:R,db:a,renderer:u,styles:p};export{C as diagram};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Y as ln,$ as an,a0 as F,a1 as q,a2 as j,a3 as un,a4 as y,a5 as tn,a6 as J,a7 as _,a8 as rn,a9 as o,aa as sn,ab as on,ac as fn}from"./mermaid.core-
|
|
1
|
+
import{Y as ln,$ as an,a0 as F,a1 as q,a2 as j,a3 as un,a4 as y,a5 as tn,a6 as J,a7 as _,a8 as rn,a9 as o,aa as sn,ab as on,ac as fn}from"./mermaid.core-BAj-Ltr-.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,z,a){var O=I-l,i=D-h,n=z-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function U(l,h,I,D,v,A,z){var a=l-I,O=h-D,i=(z?A:-A)/J(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,B=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*J(on(0,T*T*R-P*P)),Y=(P*g-m*S)/R,$=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=Y-B,e=$-t,r=w-B,C=p-t;return x*x+e*e>r*r+C*C&&(Y=w,$=p),{cx:Y,cy:$,x01:-n,y01:-d,x11:Y*(v/T-1),y11:$*(v/T-1)}}function hn(){var l=cn,h=yn,I=j(0),D=null,v=gn,A=dn,z=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-un,c=A.apply(this,arguments)-un,B=rn(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(B>tn-y)a.moveTo(s*F(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*F(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=B,S=B,Y=z.apply(this,arguments)/2,$=Y>y&&(D?+D.apply(this,arguments):J(u*u+s*s)),w=_(rn(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if($>y){var C=sn($/u*q(Y)),K=sn($/s*q(Y));(P-=C*2)>y?(C*=t?1:-1,R+=C,T-=C):(P=0,R=T=(f+c)/2),(S-=K*2)>y?(K*=t?1:-1,m+=K,g-=K):(S=0,m=g=(f+c)/2)}var G=s*F(m),H=s*q(m),L=u*F(T),M=u*q(T);if(w>y){var N=s*F(g),Q=s*q(g),V=u*F(R),W=u*q(R),E;if(B<an)if(E=pn(G,H,V,W,N,Q,L,M)){var X=G-E[0],Z=H-E[1],b=N-E[0],k=Q-E[1],nn=1/q(fn((X*b+Z*k)/(J(X*X+Z*Z)*J(b*b+k*k)))/2),en=J(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=U(V,W,G,H,s,x,t),r=U(N,Q,L,M,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(G,H),a.arc(0,0,s,m,g,!t)):a.moveTo(G,H),!(u>y)||!(P>y)?a.lineTo(L,M):p>y?(e=U(L,M,N,Q,u,-p,t),r=U(G,H,V,W,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-an/2;return[F(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:j(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:j(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:j(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:j(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:j(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:j(+n),i):A},i.padAngle=function(n){return arguments.length?(z=typeof n=="function"?n:j(+n),i):z},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
|