@hachej/boring-ui-cli 0.1.59 → 0.1.61
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/server/localWorkspaces.js +10 -2
- package/dist/server/modeApps.js +2 -1
- package/dist/server/pluginFrontRuntime.js +42 -10
- package/package.json +6 -6
- package/public/assets/{DebugDrawer-DUKpGPbX.js → DebugDrawer-fsrLlzM8.js} +1 -1
- package/public/assets/{_baseUniq-Bx9cj1EE.js → _baseUniq-BuXKgVLf.js} +1 -1
- package/public/assets/{arc-BunoCDFB.js → arc-ry5BpJ-v.js} +1 -1
- package/public/assets/{architectureDiagram-Q4EWVU46-CwOQg2mx.js → architectureDiagram-Q4EWVU46-BGoqUKLn.js} +1 -1
- package/public/assets/{blockDiagram-DXYQGD6D-Bo693v4J.js → blockDiagram-DXYQGD6D-C6GLnIXD.js} +1 -1
- package/public/assets/{c4Diagram-AHTNJAMY-CGFHc4EY.js → c4Diagram-AHTNJAMY-BQWoldqH.js} +1 -1
- package/public/assets/channel-Bq97EirN.js +1 -0
- package/public/assets/{chunk-4BX2VUAB-ER0iYbiB.js → chunk-4BX2VUAB-EU00chJm.js} +1 -1
- package/public/assets/{chunk-4TB4RGXK-DnjphLhV.js → chunk-4TB4RGXK-Bs_FhZmB.js} +1 -1
- package/public/assets/{chunk-55IACEB6-BGy3PTbQ.js → chunk-55IACEB6-B8K87Dk7.js} +1 -1
- package/public/assets/{chunk-EDXVE4YY-CVXN3irt.js → chunk-EDXVE4YY-C-whaLjf.js} +1 -1
- package/public/assets/{chunk-FMBD7UC4-B47_gOow.js → chunk-FMBD7UC4-CEh4cqFO.js} +1 -1
- package/public/assets/{chunk-OYMX7WX6-DeN_DHlw.js → chunk-OYMX7WX6-Dud1h3ug.js} +1 -1
- package/public/assets/{chunk-QZHKN3VN-CEJZro6v.js → chunk-QZHKN3VN-3i2rzsWT.js} +1 -1
- package/public/assets/{chunk-YZCP3GAM-Dz3of2Sa.js → chunk-YZCP3GAM-yAm6bNAv.js} +1 -1
- package/public/assets/classDiagram-6PBFFD2Q-B93zDSV9.js +1 -0
- package/public/assets/classDiagram-v2-HSJHXN6E-B93zDSV9.js +1 -0
- package/public/assets/clone-BiRmcx9k.js +1 -0
- package/public/assets/{cose-bilkent-S5V4N54A-HD7-wWX0.js → cose-bilkent-S5V4N54A-CfZFbIj3.js} +1 -1
- package/public/assets/{dagre-KV5264BT-Da2TB7AP.js → dagre-KV5264BT-y2E20Ykl.js} +1 -1
- package/public/assets/{diagram-5BDNPKRD-tAa9IV30.js → diagram-5BDNPKRD-B8d7nb7e.js} +1 -1
- package/public/assets/{diagram-G4DWMVQ6-CEx9XLNH.js → diagram-G4DWMVQ6-BAi05-m4.js} +1 -1
- package/public/assets/{diagram-MMDJMWI5-Bera-y1B.js → diagram-MMDJMWI5-BKN8sWi-.js} +1 -1
- package/public/assets/{diagram-TYMM5635-CMNR32-L.js → diagram-TYMM5635-BFNPDzIQ.js} +1 -1
- package/public/assets/{erDiagram-SMLLAGMA-CO3dsbo_.js → erDiagram-SMLLAGMA-_146M9iu.js} +1 -1
- package/public/assets/{flowDiagram-DWJPFMVM-CD8BY-Iv.js → flowDiagram-DWJPFMVM-Df1jYHRV.js} +1 -1
- package/public/assets/{ganttDiagram-T4ZO3ILL-CJhK4hPR.js → ganttDiagram-T4ZO3ILL-ByxOlOxp.js} +1 -1
- package/public/assets/{gitGraphDiagram-UUTBAWPF-DLjj4ESu.js → gitGraphDiagram-UUTBAWPF-BAF4Vvdv.js} +1 -1
- package/public/assets/{graph-D2b3VxlC.js → graph-DJq8P4VX.js} +1 -1
- package/public/assets/{highlighted-body-OFNGDK62-CQt6HQtS.js → highlighted-body-OFNGDK62-7kHBEa7X.js} +1 -1
- package/public/assets/index-CG-sD7KR.css +1 -0
- package/public/assets/{index-CN756czh.js → index-D8Jsti3x.js} +451 -389
- package/public/assets/{infoDiagram-42DDH7IO-DGcU4txw.js → infoDiagram-42DDH7IO-C2tso9_x.js} +1 -1
- package/public/assets/{ishikawaDiagram-UXIWVN3A-BgDu80X6.js → ishikawaDiagram-UXIWVN3A-C33CO33C.js} +1 -1
- package/public/assets/{journeyDiagram-VCZTEJTY-Bxl5QHUQ.js → journeyDiagram-VCZTEJTY-CaQt3_mb.js} +1 -1
- package/public/assets/{kanban-definition-6JOO6SKY-Bnu1GlBT.js → kanban-definition-6JOO6SKY-BB7z_any.js} +1 -1
- package/public/assets/{layout-CmNuGJKA.js → layout-CAEO9feA.js} +1 -1
- package/public/assets/{linear-Cm7t7Dcd.js → linear-DU6oykeW.js} +1 -1
- package/public/assets/{min-Dqz2tvH4.js → min-HBKrQ0Pr.js} +1 -1
- package/public/assets/{mindmap-definition-QFDTVHPH-BQPmfIWF.js → mindmap-definition-QFDTVHPH-BBSprHeS.js} +1 -1
- package/public/assets/{pieDiagram-DEJITSTG-C5et7qBM.js → pieDiagram-DEJITSTG-dDbqs-Ce.js} +1 -1
- package/public/assets/{quadrantDiagram-34T5L4WZ-Cdu9ep_E.js → quadrantDiagram-34T5L4WZ-BMo3w3xG.js} +1 -1
- package/public/assets/{requirementDiagram-MS252O5E-DvZzqPXB.js → requirementDiagram-MS252O5E-BBzqwrkb.js} +1 -1
- package/public/assets/{sankeyDiagram-XADWPNL6-DbzH_nTa.js → sankeyDiagram-XADWPNL6-DhVSXBQF.js} +1 -1
- package/public/assets/{sequenceDiagram-FGHM5R23-3ys1Xe9P.js → sequenceDiagram-FGHM5R23-CfieiIfY.js} +1 -1
- package/public/assets/{stateDiagram-FHFEXIEX-DvTApoH5.js → stateDiagram-FHFEXIEX-ZTraz1tb.js} +1 -1
- package/public/assets/stateDiagram-v2-QKLJ7IA2-DaNHQkAl.js +1 -0
- package/public/assets/{timeline-definition-GMOUNBTQ-CLbzfLyy.js → timeline-definition-GMOUNBTQ-C-W5qSyf.js} +1 -1
- package/public/assets/{vennDiagram-DHZGUBPP-STlgh-cA.js → vennDiagram-DHZGUBPP-1-JThANA.js} +1 -1
- package/public/assets/{wardley-RL74JXVD-BaanONIw.js → wardley-RL74JXVD-HCMiAygG.js} +1 -1
- package/public/assets/{wardleyDiagram-NUSXRM2D-Dq0kgvmH.js → wardleyDiagram-NUSXRM2D-B7uzARNS.js} +1 -1
- package/public/assets/{xychartDiagram-5P7HB3ND-iNUzH5Se.js → xychartDiagram-5P7HB3ND-B8h3PlFY.js} +1 -1
- package/public/index.html +10 -3
- package/public/assets/channel-DFpXIqrP.js +0 -1
- package/public/assets/classDiagram-6PBFFD2Q-BVgasK5f.js +0 -1
- package/public/assets/classDiagram-v2-HSJHXN6E-BVgasK5f.js +0 -1
- package/public/assets/clone-CLeCmwIX.js +0 -1
- package/public/assets/index-BpLLYQz0.css +0 -1
- package/public/assets/stateDiagram-v2-QKLJ7IA2-CdFVk4R8.js +0 -1
|
@@ -3,7 +3,7 @@ import { createHash } from "node:crypto";
|
|
|
3
3
|
import { existsSync, statSync } from "node:fs";
|
|
4
4
|
import { mkdir, readFile, realpath, rename, writeFile } from "node:fs/promises";
|
|
5
5
|
import { homedir } from "node:os";
|
|
6
|
-
import { basename, dirname, resolve } from "node:path";
|
|
6
|
+
import { basename, dirname, join, resolve } from "node:path";
|
|
7
7
|
const DEFAULT_REGISTRY_PATH = resolve(homedir(), ".boring-ui", "workspaces.yaml");
|
|
8
8
|
function getDefaultLocalWorkspaceRegistryPath() {
|
|
9
9
|
return process.env.BORING_UI_WORKSPACES_PATH ? resolve(process.env.BORING_UI_WORKSPACES_PATH) : DEFAULT_REGISTRY_PATH;
|
|
@@ -71,8 +71,13 @@ function serializeRegistryYaml(workspaces) {
|
|
|
71
71
|
return `${lines.join("\n")}
|
|
72
72
|
`;
|
|
73
73
|
}
|
|
74
|
+
function expandHomePath(input) {
|
|
75
|
+
if (input === "~") return homedir();
|
|
76
|
+
if (input.startsWith("~/") || input.startsWith("~\\")) return join(homedir(), input.slice(2));
|
|
77
|
+
return input;
|
|
78
|
+
}
|
|
74
79
|
async function resolveWorkspacePath(input) {
|
|
75
|
-
const absolute = resolve(input);
|
|
80
|
+
const absolute = resolve(expandHomePath(input));
|
|
76
81
|
try {
|
|
77
82
|
return await realpath(absolute);
|
|
78
83
|
} catch {
|
|
@@ -121,6 +126,9 @@ function createLocalWorkspaceRegistry(path = getDefaultLocalWorkspaceRegistryPat
|
|
|
121
126
|
if (pathExists(workspacePath) && !pathIsDirectory(workspacePath)) {
|
|
122
127
|
throw new Error(`workspace path is not a directory: ${workspacePath}`);
|
|
123
128
|
}
|
|
129
|
+
if (!pathExists(workspacePath) && opts?.createIfMissing) {
|
|
130
|
+
await mkdir(workspacePath, { recursive: true });
|
|
131
|
+
}
|
|
124
132
|
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
125
133
|
const workspaces = await readStored();
|
|
126
134
|
const id = workspaceIdForPath(workspacePath);
|
package/dist/server/modeApps.js
CHANGED
|
@@ -467,7 +467,8 @@ async function createWorkspacesModeApp(opts) {
|
|
|
467
467
|
}
|
|
468
468
|
try {
|
|
469
469
|
const workspace = await registry.add(body.path, {
|
|
470
|
-
name: typeof body.name === "string" ? body.name : void 0
|
|
470
|
+
name: typeof body.name === "string" ? body.name : void 0,
|
|
471
|
+
createIfMissing: body.createIfMissing === true
|
|
471
472
|
});
|
|
472
473
|
return { workspace };
|
|
473
474
|
} catch (error) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { builtinModules, createRequire } from "node:module";
|
|
3
|
-
import { existsSync, lstatSync, readdirSync, readFileSync, statSync } from "node:fs";
|
|
3
|
+
import { existsSync, lstatSync, readdirSync, readFileSync, realpathSync, statSync } from "node:fs";
|
|
4
4
|
import { readFile, realpath, stat } from "node:fs/promises";
|
|
5
5
|
import { dirname, extname, isAbsolute, posix, relative, resolve as resolvePath } from "node:path";
|
|
6
6
|
import { fileURLToPath } from "node:url";
|
|
@@ -75,6 +75,9 @@ const WORKSPACE_ROOT_SINGLETON_EXPORTS = [
|
|
|
75
75
|
"PluginErrorBoundary",
|
|
76
76
|
"PluginErrorProvider",
|
|
77
77
|
"usePluginErrors",
|
|
78
|
+
"WorkspacePluginClientProvider",
|
|
79
|
+
"createWorkspacePluginClient",
|
|
80
|
+
"useWorkspacePluginClient",
|
|
78
81
|
"filesystemPlugin",
|
|
79
82
|
"emitFilesystemAgentFileChange",
|
|
80
83
|
"useAutoOpenAgentFiles",
|
|
@@ -88,10 +91,12 @@ const WORKSPACE_ROOT_SINGLETON_EXPORTS = [
|
|
|
88
91
|
"filesystemEvents",
|
|
89
92
|
"cn",
|
|
90
93
|
"PanelRegistry",
|
|
94
|
+
"WorkspaceSourceRegistry",
|
|
91
95
|
"CommandRegistry",
|
|
92
96
|
"SurfaceResolverRegistry",
|
|
93
97
|
"RegistryProvider",
|
|
94
98
|
"useRegistry",
|
|
99
|
+
"useWorkspaceSourceRegistry",
|
|
95
100
|
"useCommandRegistry",
|
|
96
101
|
"useCatalogRegistry",
|
|
97
102
|
"useSurfaceResolverRegistry",
|
|
@@ -396,6 +401,19 @@ function buildViteProxyUrl(basePath, targetPath) {
|
|
|
396
401
|
function buildViteSingletonUrl(basePath, source) {
|
|
397
402
|
return `${basePath}/__vite/singleton/${encodeURIComponent(source)}`;
|
|
398
403
|
}
|
|
404
|
+
function realpathIfExists(path) {
|
|
405
|
+
try {
|
|
406
|
+
return existsSync(path) ? realpathSync(path) : path;
|
|
407
|
+
} catch {
|
|
408
|
+
return path;
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
function isHostNodeModuleFsSpecifier(specifier, hostNodeModulesRoots) {
|
|
412
|
+
if (!specifier.startsWith("/@fs/")) return false;
|
|
413
|
+
const cleanPath = specifier.slice("/@fs".length).split("?")[0] ?? "";
|
|
414
|
+
const realPath = realpathIfExists(cleanPath);
|
|
415
|
+
return hostNodeModulesRoots.some((root) => isWithin(root, realPath));
|
|
416
|
+
}
|
|
399
417
|
function optimizedDependencySingletonSource(targetPath) {
|
|
400
418
|
const cleanPath = targetPath.split("?")[0];
|
|
401
419
|
const normalizedPath = cleanPath.replaceAll("\\", "/");
|
|
@@ -431,30 +449,37 @@ function optimizedDependencySingletonSource(targetPath) {
|
|
|
431
449
|
};
|
|
432
450
|
return sourceByFileName[fileName];
|
|
433
451
|
}
|
|
434
|
-
function rewriteViteSupportSpecifier(specifier, basePath) {
|
|
452
|
+
function rewriteViteSupportSpecifier(specifier, basePath, options) {
|
|
435
453
|
if (specifier === "/@vite/client") return `${basePath}/__vite/client`;
|
|
436
454
|
if (specifier === "/@vite/env" || specifier === "@vite/env") return `${basePath}/__vite/env`;
|
|
437
|
-
if (specifier.startsWith("/@fs/")
|
|
455
|
+
if (specifier.startsWith("/@fs/")) {
|
|
456
|
+
if (specifier.includes("/vite/dist/client/env.mjs")) return `${basePath}/__vite/env`;
|
|
457
|
+
const singletonSource2 = optimizedDependencySingletonSource(specifier);
|
|
458
|
+
if (singletonSource2) return buildViteSingletonUrl(basePath, singletonSource2);
|
|
459
|
+
if (options.allowHostNodeModulesFs && isHostNodeModuleFsSpecifier(specifier, options.hostNodeModulesRoots)) return buildViteProxyUrl(basePath, specifier);
|
|
460
|
+
return void 0;
|
|
461
|
+
}
|
|
438
462
|
if (!/^\/(?:@id|node_modules|packages)\//.test(specifier)) return void 0;
|
|
439
463
|
const singletonSource = optimizedDependencySingletonSource(specifier);
|
|
440
464
|
return singletonSource ? buildViteSingletonUrl(basePath, singletonSource) : buildViteProxyUrl(basePath, specifier);
|
|
441
465
|
}
|
|
442
466
|
function assertNoUnsafeFsSupportReference(code, context) {
|
|
443
467
|
if (!code.includes("/@fs/")) return;
|
|
468
|
+
const unsafeReferences = [...code.matchAll(/["']([^"']*\/@fs\/[^"']*)["']/g)].map((match) => match[1]).slice(0, 5);
|
|
444
469
|
throw new PluginFrontRuntimeError(
|
|
445
470
|
ErrorCode.enum.PLUGIN_RUNTIME_UNSAFE_IMPORT,
|
|
446
471
|
400,
|
|
447
472
|
"transform",
|
|
448
473
|
"plugin runtime transform produced an unsafe Vite /@fs reference",
|
|
449
|
-
context
|
|
474
|
+
{ ...context, unsafeReferences }
|
|
450
475
|
);
|
|
451
476
|
}
|
|
452
|
-
function rewriteViteSupportUrls(code, basePath) {
|
|
477
|
+
function rewriteViteSupportUrls(code, basePath, options) {
|
|
453
478
|
const sourceFile = ts.createSourceFile("runtime-plugin-output.js", code, ts.ScriptTarget.Latest, true, ts.ScriptKind.JS);
|
|
454
479
|
const replacements = [];
|
|
455
480
|
const mintedPaths = [];
|
|
456
481
|
const queueReplacement = (literal) => {
|
|
457
|
-
const rewritten2 = rewriteViteSupportSpecifier(literal.text, basePath);
|
|
482
|
+
const rewritten2 = rewriteViteSupportSpecifier(literal.text, basePath, { hostNodeModulesRoots: options.hostNodeModulesRoots, allowHostNodeModulesFs: options.allowHostNodeModulesFs ?? false });
|
|
458
483
|
if (!rewritten2) return;
|
|
459
484
|
replacements.push({
|
|
460
485
|
start: literal.getStart(sourceFile) + 1,
|
|
@@ -1073,6 +1098,9 @@ async function createPluginFrontRuntimeHost(options = {}) {
|
|
|
1073
1098
|
};
|
|
1074
1099
|
const packageRoot = packageRootFromRuntimeFile();
|
|
1075
1100
|
const repoRoot = findWorkspaceRoot(packageRoot);
|
|
1101
|
+
const repoRootReal = realpathIfExists(repoRoot);
|
|
1102
|
+
const hostNodeModulesRoots = [resolvePath(repoRoot, "node_modules"), resolvePath(packageRoot, "node_modules")].filter((path, index, all) => existsSync(path) && all.indexOf(path) === index).map((path) => realpathIfExists(path));
|
|
1103
|
+
const trustedHostPackageRoots = [repoRootReal, ...hostNodeModulesRoots.map((path) => dirname(path))].filter((path, index, all) => all.indexOf(path) === index);
|
|
1076
1104
|
const singletonResolve = createRuntimeSingletonResolve(repoRoot);
|
|
1077
1105
|
const trackedWorkspaces = /* @__PURE__ */ new Map();
|
|
1078
1106
|
const trackedPluginRevisions = /* @__PURE__ */ new Map();
|
|
@@ -1456,7 +1484,10 @@ async function createPluginFrontRuntimeHost(options = {}) {
|
|
|
1456
1484
|
resolvedPath: runtimeRequest.resolvedPath,
|
|
1457
1485
|
durationMs: Date.now() - transformStartedAt
|
|
1458
1486
|
});
|
|
1459
|
-
const rewritten = rewriteViteSupportUrls(transformed.code, basePath
|
|
1487
|
+
const rewritten = rewriteViteSupportUrls(transformed.code, basePath, {
|
|
1488
|
+
hostNodeModulesRoots,
|
|
1489
|
+
allowHostNodeModulesFs: trustedHostPackageRoots.some((root) => isWithin(root, realpathIfExists(runtimeRequest.tracked.rootDir)))
|
|
1490
|
+
});
|
|
1460
1491
|
assertNoUnsafeFsSupportReference(rewritten.code, {
|
|
1461
1492
|
runtimeId: runtimeRequest.runtimeId,
|
|
1462
1493
|
workspaceId: runtimeRequest.workspaceId,
|
|
@@ -1563,7 +1594,7 @@ async function createPluginFrontRuntimeHost(options = {}) {
|
|
|
1563
1594
|
}
|
|
1564
1595
|
const transformed = await vite.transformRequest("/@vite/client");
|
|
1565
1596
|
if (transformed?.code) {
|
|
1566
|
-
const rewritten = rewriteViteSupportUrls(transformed.code, basePath);
|
|
1597
|
+
const rewritten = rewriteViteSupportUrls(transformed.code, basePath, { hostNodeModulesRoots });
|
|
1567
1598
|
recordMintedSupportPaths("__vite:client", rewritten.mintedPaths);
|
|
1568
1599
|
return reply.type("application/javascript; charset=utf-8").send(rewritten.code);
|
|
1569
1600
|
}
|
|
@@ -1615,7 +1646,8 @@ async function createPluginFrontRuntimeHost(options = {}) {
|
|
|
1615
1646
|
return reply.code(apiError.statusCode).send(apiError.body);
|
|
1616
1647
|
}
|
|
1617
1648
|
const targetPath = `/${decodeURIComponent(encodedTarget)}`;
|
|
1618
|
-
|
|
1649
|
+
const isHostNodeModuleFsTarget = isHostNodeModuleFsSpecifier(targetPath, hostNodeModulesRoots);
|
|
1650
|
+
if (!/^\/(?:@id|node_modules|packages)\//.test(targetPath) && !isHostNodeModuleFsTarget) {
|
|
1619
1651
|
const apiError = toApiError(new PluginFrontRuntimeError(
|
|
1620
1652
|
ErrorCode.enum.PLUGIN_RUNTIME_UNSAFE_IMPORT,
|
|
1621
1653
|
400,
|
|
@@ -1629,7 +1661,7 @@ async function createPluginFrontRuntimeHost(options = {}) {
|
|
|
1629
1661
|
const viteTargetPath = targetPath.startsWith("/@id/__x00__") ? `\0${targetPath.slice("/@id/__x00__".length)}` : targetPath;
|
|
1630
1662
|
const transformed = await vite.transformRequest(`${viteTargetPath}${normalizeSearch(search)}`);
|
|
1631
1663
|
if (transformed?.code) {
|
|
1632
|
-
const rewritten = rewriteViteSupportUrls(transformed.code, basePath);
|
|
1664
|
+
const rewritten = rewriteViteSupportUrls(transformed.code, basePath, { hostNodeModulesRoots, allowHostNodeModulesFs: isHostNodeModuleFsTarget });
|
|
1633
1665
|
assertNoUnsafeFsSupportReference(rewritten.code, { targetPath });
|
|
1634
1666
|
recordMintedSupportPaths(`support:${mintedPath}`, rewritten.mintedPaths);
|
|
1635
1667
|
return reply.type("application/javascript; charset=utf-8").send(rewritten.code);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hachej/boring-ui-cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.61",
|
|
4
4
|
"description": "Turn an agent into an app",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -20,11 +20,11 @@
|
|
|
20
20
|
"lucide-react": "^1.8.0",
|
|
21
21
|
"typescript": "^5.8.3",
|
|
22
22
|
"vite": "^6.0.0",
|
|
23
|
-
"@hachej/boring-
|
|
24
|
-
"@hachej/boring-
|
|
25
|
-
"@hachej/boring-ui-
|
|
26
|
-
"@hachej/boring-workspace": "0.1.
|
|
27
|
-
"@hachej/boring-
|
|
23
|
+
"@hachej/boring-agent": "0.1.61",
|
|
24
|
+
"@hachej/boring-ask-user": "0.1.61",
|
|
25
|
+
"@hachej/boring-ui-kit": "0.1.61",
|
|
26
|
+
"@hachej/boring-workspace": "0.1.61",
|
|
27
|
+
"@hachej/boring-ui-plugin-cli": "0.1.61"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@tailwindcss/vite": "^4.0.0",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as x,j as e,T,a as C,b as S,c as v,d as y,I as N,R,B as E,C as M,e as I,f as $,g as D,h as L}from"./index-
|
|
1
|
+
import{r as x,j as e,T,a as C,b as S,c as v,d as y,I as N,R,B as E,C as M,e as I,f as $,g as D,h as L}from"./index-D8Jsti3x.js";function _({value:r,label:t}){const[o,s]=x.useState(!1),l=x.useCallback(()=>{$(r).then(a=>{a&&(s(!0),window.setTimeout(()=>s(!1),1200))})},[r]);return e.jsx(N,{type:"button",variant:"ghost",size:"icon-xs",onClick:l,className:"text-muted-foreground/60","aria-label":t,title:t,children:o?e.jsx(D,{className:"h-3 w-3"}):e.jsx(L,{className:"h-3 w-3"})})}function A({label:r,value:t}){return e.jsxs("div",{className:"rounded-md border border-border/40 bg-muted/20 p-2",children:[e.jsxs("div",{className:"mb-1 flex items-center justify-between gap-2",children:[e.jsx("span",{className:"text-[10px] font-medium uppercase tracking-[0.16em] text-muted-foreground",children:r}),e.jsx(_,{value:t,label:`Copy ${r}`})]}),e.jsx("code",{className:"block break-all font-mono text-[11px] leading-relaxed text-foreground dark:text-zinc-100",children:t})]})}function z({sessionId:r}){return e.jsxs("div",{className:"flex flex-col gap-3 overflow-auto p-3 text-[11px] text-muted-foreground dark:text-zinc-300",children:[e.jsx("p",{className:"text-muted-foreground dark:text-zinc-300",children:"This web chat is backed by a runtime session. Use the id below for support or debugging."}),e.jsx(A,{label:"Runtime session id",value:r})]})}const X=2500,w=20;function P({apiBaseUrl:r,fetch:t,sessionId:o,requestHeaders:s,storageScope:l}){const[a,n]=x.useState({kind:"loading"}),[c,u]=x.useState(0),m=x.useRef(0),j=x.useCallback(()=>{m.current=0,u(i=>i+1)},[]);return x.useEffect(()=>{let i=!1,f=null;return n({kind:"loading"}),(t??globalThis.fetch.bind(globalThis))(Y(r,`/api/v1/agent/sessions/${encodeURIComponent(o)}/system-prompt`),{headers:J(s,l)}).then(async d=>{var g;if(i)return;if(d.ok){const b=await d.json();if(typeof b.systemPrompt=="string"){m.current=0,n({kind:"ok",text:b.systemPrompt});return}}const h=await d.json().catch(()=>null),p=((g=h==null?void 0:h.error)==null?void 0:g.message)??`HTTP ${d.status}`;d.status===404&&m.current<w?(n({kind:"empty",reason:p}),f=setTimeout(()=>{i||(m.current++,u(b=>b+1))},X)):n(d.status===404?{kind:"empty",reason:p}:{kind:"error",reason:p})}).catch(d=>{i||n({kind:"error",reason:d instanceof Error?d.message:String(d)})}),()=>{i=!0,f&&clearTimeout(f)}},[r,t,o,s,c,l]),e.jsxs("div",{className:"flex flex-col h-full min-h-0",children:[e.jsxs("div",{className:"shrink-0 flex items-center justify-between px-3 pt-2 pb-1 border-b border-border/40",children:[e.jsx("span",{className:"text-[10px] text-muted-foreground/80 font-mono",children:a.kind==="ok"?`${a.text.length.toLocaleString()} chars`:a.kind==="loading"?"loading…":a.kind==="empty"?`waiting for session · retry ${m.current}/${w}`:"error"}),a.kind!=="loading"&&e.jsx(N,{type:"button",variant:"ghost",size:"icon-xs",onClick:j,className:"text-muted-foreground/60","aria-label":"Refresh system prompt",children:e.jsx(R,{className:"h-3 w-3"})})]}),(a.kind==="loading"||a.kind==="empty")&&e.jsx("p",{className:"text-[11px] text-muted-foreground p-3",children:a.kind==="loading"?"Loading…":a.reason}),a.kind==="error"&&e.jsx("p",{className:"text-[11px] text-destructive p-3",children:a.reason}),a.kind==="ok"&&e.jsx("pre",{className:"flex-1 overflow-auto px-3 py-2 font-mono text-[11px] leading-relaxed text-foreground whitespace-pre-wrap break-words",children:a.text})]})}function F(r){const t=r,o=(t==null?void 0:t.type)??"?";if(o==="text"){const s=String(t.text??"");return s.slice(0,80)+(s.length>80?"…":"")}if(o==="tool-invocation"){const s=t.toolInvocation,l=String((s==null?void 0:s.state)??"");return`${(s==null?void 0:s.toolName)??"?"}() · ${l}`}if(o==="reasoning"){const s=String(t.text??t.reasoning??"");return s.slice(0,80)+(s.length>80?"…":"")}return o}function H(r){const t=[];for(let o=0;o<r.length;o++){const s=r[o],l=s,a=l.createdAt?new Date(l.createdAt).toISOString().slice(11,23):null;for(let n=0;n<s.parts.length;n++){const c=s.parts[n];t.push({msgId:s.id,msgIndex:o,role:s.role,time:a,partIndex:n,partType:(c==null?void 0:c.type)??"unknown",part:c})}}return t}function O({messages:r}){const t=H(r),[o,s]=x.useState(null),l=x.useRef(null),a=x.useRef(t.length);return x.useEffect(()=>{var n;t.length!==a.current&&((n=l.current)==null||n.scrollIntoView({behavior:"smooth"}),a.current=t.length)},[t.length]),t.length===0?e.jsx("p",{className:"text-[11px] text-muted-foreground p-3",children:"No messages yet."}):e.jsxs("div",{className:"flex flex-col h-full min-h-0",children:[e.jsxs("div",{className:"shrink-0 px-3 pt-2 pb-1 text-[10px] text-muted-foreground/80 font-mono border-b border-border/40",children:[r.length," msg · ",t.length," parts"]}),e.jsxs("div",{className:"flex-1 overflow-auto",children:[t.map(n=>{const c=`${n.msgId}:${n.partIndex}`,u=o===c;return e.jsxs("div",{className:"border-b border-border/30 last:border-0",children:[e.jsxs(E,{type:"button",variant:"ghost",onClick:()=>s(u?null:c),className:"h-auto w-full justify-start gap-1.5 rounded-none px-2 py-1.5 text-left",children:[e.jsx("span",{className:"mt-0.5 shrink-0 text-muted-foreground/40",children:u?e.jsx(M,{className:"h-3 w-3"}):e.jsx(I,{className:"h-3 w-3"})}),e.jsx("span",{className:"font-mono text-[10px] shrink-0 w-20",children:n.time?e.jsx("span",{className:"text-muted-foreground/60",children:n.time}):e.jsxs("span",{className:"text-muted-foreground/30",children:["m",n.msgIndex]})}),e.jsx("span",{className:y("shrink-0 font-mono text-[10px] w-14",n.role==="user"?"text-accent":"text-muted-foreground"),children:n.role}),e.jsx("span",{className:"shrink-0 font-mono text-[10px] text-muted-foreground/60 w-24",children:n.partType}),e.jsx("span",{className:"flex-1 min-w-0 font-mono text-[11px] text-foreground truncate",children:F(n.part)})]}),u&&e.jsx("pre",{className:"px-3 pb-2 font-mono text-[10px] leading-relaxed text-foreground/80 whitespace-pre-wrap break-words bg-muted/20",children:JSON.stringify(n.part,null,2)})]},c)}),e.jsx("div",{ref:l})]})]})}const V=[{id:"session",label:"Session"},{id:"prompt",label:"System prompt"},{id:"messages",label:"Messages"}],K=280,W=800;function G({apiBaseUrl:r,fetch:t,sessionId:o,messages:s,requestHeaders:l,storageScope:a,width:n,onWidthChange:c}){const[u,m]=x.useState("session"),j=x.useCallback(i=>{i.preventDefault();const f=i.clientX,k=n,d=p=>{const g=f-p.clientX;c(Math.min(W,Math.max(K,k+g)))},h=()=>{window.removeEventListener("mousemove",d),window.removeEventListener("mouseup",h)};window.addEventListener("mousemove",d),window.addEventListener("mouseup",h)},[n,c]);return e.jsxs(e.Fragment,{children:[e.jsx("div",{onMouseDown:j,className:"w-1 shrink-0 cursor-col-resize hover:bg-accent/40 active:bg-accent/60 transition-colors","aria-hidden":!0}),e.jsx("aside",{style:{width:n},className:y("flex h-full shrink-0 flex-col border-l border-border/60","bg-[oklch(from_var(--background)_calc(l-0.01)_c_h)]"),children:e.jsxs(T,{value:u,onValueChange:i=>m(i),className:"flex flex-col flex-1 min-h-0 overflow-hidden",children:[e.jsx("header",{className:"flex shrink-0 items-center gap-0 border-b border-border/60 px-1",children:e.jsx(C,{variant:"line",className:"h-auto gap-0 p-0 w-full",children:V.map(({id:i,label:f})=>e.jsx(S,{value:i,className:"h-8 flex-none px-3 py-2 text-[11px] font-medium data-[state=active]:after:bg-[color:var(--accent)]",children:f},i))})}),e.jsx(v,{value:"session",forceMount:!0,className:"flex flex-col flex-1 min-h-0 overflow-hidden data-[state=inactive]:hidden",children:e.jsx(z,{sessionId:o})}),e.jsx(v,{value:"prompt",forceMount:!0,className:"flex flex-col flex-1 min-h-0 overflow-hidden data-[state=inactive]:hidden",children:e.jsx(P,{apiBaseUrl:r,fetch:t,sessionId:o,requestHeaders:l,storageScope:a})}),e.jsx(v,{value:"messages",forceMount:!0,className:"flex flex-col flex-1 min-h-0 overflow-hidden data-[state=inactive]:hidden",children:e.jsx(O,{messages:s})})]})})]})}function Y(r,t){return`${(r==null?void 0:r.replace(/\/$/,""))??""}${t}`}function J(r,t){if(!r&&!t)return;const o={...r??{}},s=Object.keys(o).some(l=>l.toLowerCase()==="x-boring-storage-scope");return t&&!s&&(o["x-boring-storage-scope"]=t),o}export{G as DebugDrawer};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{be as S,bE as ln,aZ as A,bc as P,aY as W,bF as gn,bG as dn,bH as hn,bI as z,bJ as pn,bK as An,bL as N,bf as m,bk as K,bn as T,bM as _n,bi as on,bN as wn,bO as On,a_ as V,bP as bn,bQ as R}from"./index-
|
|
1
|
+
import{be as S,bE as ln,aZ as A,bc as P,aY as W,bF as gn,bG as dn,bH as hn,bI as z,bJ as pn,bK as An,bL as N,bf as m,bk as K,bn as T,bM as _n,bi as on,bN as wn,bO as On,a_ as V,bP as bn,bQ as R}from"./index-D8Jsti3x.js";var Pn="[object Symbol]";function x(n){return typeof n=="symbol"||S(n)&&ln(n)==Pn}function vn(n,r){for(var e=-1,i=n==null?0:n.length,f=Array(i);++e<i;)f[e]=r(n[e],e,n);return f}var U=P?P.prototype:void 0,B=U?U.toString:void 0;function k(n){if(typeof n=="string")return n;if(A(n))return vn(n,k)+"";if(x(n))return B?B.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function yn(){}function En(n,r){for(var e=-1,i=n==null?0:n.length;++e<i&&r(n[e],e,n)!==!1;);return n}function cn(n,r,e,i){for(var f=n.length,t=e+-1;++t<f;)if(r(n[t],t,n))return t;return-1}function Tn(n){return n!==n}function In(n,r,e){for(var i=e-1,f=n.length;++i<f;)if(n[i]===r)return i;return-1}function Rn(n,r,e){return r===r?In(n,r,e):cn(n,Tn,e)}function Ln(n,r){var e=n==null?0:n.length;return!!e&&Rn(n,r,0)>-1}function M(n){return W(n)?gn(n):dn(n)}var Sn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,xn=/^\w*$/;function $(n,r){if(A(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||x(n)?!0:xn.test(n)||!Sn.test(n)||r!=null&&n in Object(r)}var Mn=500;function $n(n){var r=hn(n,function(i){return e.size===Mn&&e.clear(),i}),e=r.cache;return r}var Cn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Fn=/\\(\\)?/g,Gn=$n(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(Cn,function(e,i,f,t){r.push(f?t.replace(Fn,"$1"):i||e)}),r});function Dn(n){return n==null?"":k(n)}function j(n,r){return A(n)?n:$(n,r)?[n]:Gn(Dn(n))}function I(n){if(typeof n=="string"||x(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function nn(n,r){r=j(r,n);for(var e=0,i=r.length;n!=null&&e<i;)n=n[I(r[e++])];return e&&e==i?n:void 0}function Nn(n,r,e){var i=n==null?void 0:nn(n,r);return i===void 0?e:i}function rn(n,r){for(var e=-1,i=r.length,f=n.length;++e<i;)n[f+e]=r[e];return n}var H=P?P.isConcatSpreadable:void 0;function mn(n){return A(n)||z(n)||!!(H&&n&&n[H])}function Hr(n,r,e,i,f){var t=-1,s=n.length;for(e||(e=mn),f||(f=[]);++t<s;){var u=n[t];e(u)?rn(f,u):i||(f[f.length]=u)}return f}function Kn(n,r,e,i){var f=-1,t=n==null?0:n.length;for(i&&t&&(e=n[++f]);++f<t;)e=r(e,n[f],f,n);return e}function en(n,r){for(var e=-1,i=n==null?0:n.length,f=0,t=[];++e<i;){var s=n[e];r(s,e,n)&&(t[f++]=s)}return t}function Un(){return[]}var Bn=Object.prototype,Hn=Bn.propertyIsEnumerable,Z=Object.getOwnPropertySymbols,Zn=Z?function(n){return n==null?[]:(n=Object(n),en(Z(n),function(r){return Hn.call(n,r)}))}:Un;function qn(n,r,e){var i=r(n);return A(n)?i:rn(i,e(n))}function q(n){return qn(n,M,Zn)}var Yn="__lodash_hash_undefined__";function Jn(n){return this.__data__.set(n,Yn),this}function Qn(n){return this.__data__.has(n)}function v(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new pn;++r<e;)this.add(n[r])}v.prototype.add=v.prototype.push=Jn;v.prototype.has=Qn;function Xn(n,r){for(var e=-1,i=n==null?0:n.length;++e<i;)if(r(n[e],e,n))return!0;return!1}function tn(n,r){return n.has(r)}var Wn=1,zn=2;function fn(n,r,e,i,f,t){var s=e&Wn,u=n.length,a=r.length;if(u!=a&&!(s&&a>u))return!1;var h=t.get(n),g=t.get(r);if(h&&g)return h==r&&g==n;var l=-1,d=!0,o=e&zn?new v:void 0;for(t.set(n,r),t.set(r,n);++l<u;){var p=n[l],_=r[l];if(i)var w=s?i(_,p,l,r,n,t):i(p,_,l,n,r,t);if(w!==void 0){if(w)continue;d=!1;break}if(o){if(!Xn(r,function(O,b){if(!tn(o,b)&&(p===O||f(p,O,e,i,t)))return o.push(b)})){d=!1;break}}else if(!(p===_||f(p,_,e,i,t))){d=!1;break}}return t.delete(n),t.delete(r),d}function Vn(n){var r=-1,e=Array(n.size);return n.forEach(function(i,f){e[++r]=[f,i]}),e}function C(n){var r=-1,e=Array(n.size);return n.forEach(function(i){e[++r]=i}),e}var kn=1,jn=2,nr="[object Boolean]",rr="[object Date]",er="[object Error]",ir="[object Map]",tr="[object Number]",fr="[object RegExp]",sr="[object Set]",ur="[object String]",ar="[object Symbol]",lr="[object ArrayBuffer]",gr="[object DataView]",Y=P?P.prototype:void 0,L=Y?Y.valueOf:void 0;function dr(n,r,e,i,f,t,s){switch(e){case gr:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case lr:return!(n.byteLength!=r.byteLength||!t(new N(n),new N(r)));case nr:case rr:case tr:return An(+n,+r);case er:return n.name==r.name&&n.message==r.message;case fr:case ur:return n==r+"";case ir:var u=Vn;case sr:var a=i&kn;if(u||(u=C),n.size!=r.size&&!a)return!1;var h=s.get(n);if(h)return h==r;i|=jn,s.set(n,r);var g=fn(u(n),u(r),i,f,t,s);return s.delete(n),g;case ar:if(L)return L.call(n)==L.call(r)}return!1}var hr=1,pr=Object.prototype,Ar=pr.hasOwnProperty;function _r(n,r,e,i,f,t){var s=e&hr,u=q(n),a=u.length,h=q(r),g=h.length;if(a!=g&&!s)return!1;for(var l=a;l--;){var d=u[l];if(!(s?d in r:Ar.call(r,d)))return!1}var o=t.get(n),p=t.get(r);if(o&&p)return o==r&&p==n;var _=!0;t.set(n,r),t.set(r,n);for(var w=s;++l<a;){d=u[l];var O=n[d],b=r[d];if(i)var D=s?i(b,O,d,r,n,t):i(O,b,d,n,r,t);if(!(D===void 0?O===b||f(O,b,e,i,t):D)){_=!1;break}w||(w=d=="constructor")}if(_&&!w){var y=n.constructor,E=r.constructor;y!=E&&"constructor"in n&&"constructor"in r&&!(typeof y=="function"&&y instanceof y&&typeof E=="function"&&E instanceof E)&&(_=!1)}return t.delete(n),t.delete(r),_}var or=1,J="[object Arguments]",Q="[object Array]",c="[object Object]",wr=Object.prototype,X=wr.hasOwnProperty;function Or(n,r,e,i,f,t){var s=A(n),u=A(r),a=s?Q:m(n),h=u?Q:m(r);a=a==J?c:a,h=h==J?c:h;var g=a==c,l=h==c,d=a==h;if(d&&K(n)){if(!K(r))return!1;s=!0,g=!1}if(d&&!g)return t||(t=new T),s||_n(n)?fn(n,r,e,i,f,t):dr(n,r,a,e,i,f,t);if(!(e&or)){var o=g&&X.call(n,"__wrapped__"),p=l&&X.call(r,"__wrapped__");if(o||p){var _=o?n.value():n,w=p?r.value():r;return t||(t=new T),f(_,w,e,i,t)}}return d?(t||(t=new T),_r(n,r,e,i,f,t)):!1}function F(n,r,e,i,f){return n===r?!0:n==null||r==null||!S(n)&&!S(r)?n!==n&&r!==r:Or(n,r,e,i,F,f)}var br=1,Pr=2;function vr(n,r,e,i){var f=e.length,t=f;if(n==null)return!t;for(n=Object(n);f--;){var s=e[f];if(s[2]?s[1]!==n[s[0]]:!(s[0]in n))return!1}for(;++f<t;){s=e[f];var u=s[0],a=n[u],h=s[1];if(s[2]){if(a===void 0&&!(u in n))return!1}else{var g=new T,l;if(!(l===void 0?F(h,a,br|Pr,i,g):l))return!1}}return!0}function sn(n){return n===n&&!on(n)}function yr(n){for(var r=M(n),e=r.length;e--;){var i=r[e],f=n[i];r[e]=[i,f,sn(f)]}return r}function un(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function Er(n){var r=yr(n);return r.length==1&&r[0][2]?un(r[0][0],r[0][1]):function(e){return e===n||vr(e,n,r)}}function cr(n,r){return n!=null&&r in Object(n)}function Tr(n,r,e){r=j(r,n);for(var i=-1,f=r.length,t=!1;++i<f;){var s=I(r[i]);if(!(t=n!=null&&e(n,s)))break;n=n[s]}return t||++i!=f?t:(f=n==null?0:n.length,!!f&&wn(f)&&On(s,f)&&(A(n)||z(n)))}function Ir(n,r){return n!=null&&Tr(n,r,cr)}var Rr=1,Lr=2;function Sr(n,r){return $(n)&&sn(r)?un(I(n),r):function(e){var i=Nn(e,n);return i===void 0&&i===r?Ir(e,n):F(r,i,Rr|Lr)}}function xr(n){return function(r){return r==null?void 0:r[n]}}function Mr(n){return function(r){return nn(r,n)}}function $r(n){return $(n)?xr(I(n)):Mr(n)}function an(n){return typeof n=="function"?n:n==null?V:typeof n=="object"?A(n)?Sr(n[0],n[1]):Er(n):$r(n)}function Cr(n,r){return n&&bn(n,r,M)}function Fr(n,r){return function(e,i){if(e==null)return e;if(!W(e))return n(e,i);for(var f=e.length,t=-1,s=Object(e);++t<f&&i(s[t],t,s)!==!1;);return e}}var G=Fr(Cr);function Gr(n){return typeof n=="function"?n:V}function Zr(n,r){var e=A(n)?En:G;return e(n,Gr(r))}function Dr(n,r){var e=[];return G(n,function(i,f,t){r(i,f,t)&&e.push(i)}),e}function qr(n,r){var e=A(n)?en:Dr;return e(n,an(r))}function Nr(n,r,e,i,f){return f(n,function(t,s,u){e=i?(i=!1,t):r(e,t,s,u)}),e}function Yr(n,r,e){var i=A(n)?Kn:Nr,f=arguments.length<3;return i(n,an(r),e,f,G)}var mr=1/0,Kr=R&&1/C(new R([,-0]))[1]==mr?function(n){return new R(n)}:yn,Ur=200;function Jr(n,r,e){var i=-1,f=Ln,t=n.length,s=!0,u=[],a=u;if(t>=Ur){var h=r?null:Kr(n);if(h)return C(h);s=!1,f=tn,a=new v}else a=r?[]:u;n:for(;++i<t;){var g=n[i],l=r?r(g):g;if(g=g!==0?g:0,s&&l===l){for(var d=a.length;d--;)if(a[d]===l)continue n;r&&a.push(l),u.push(g)}else f(a,l,e)||(a!==u&&a.push(l),u.push(g))}return u}export{G as a,Hr as b,an as c,vn as d,rn as e,qn as f,Zn as g,En as h,x as i,q as j,M as k,Jr as l,qr as m,Zr as n,cn as o,Gr as p,Cr as q,Yr as r,Un as s,Tr as t,j as u,I as v,nn as w,Ir as x,Dn as y};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a4 as ln,a5 as an,a6 as H,a7 as q,a8 as B,a9 as un,aa as g,ab as tn,ac as L,ad as _,ae as rn,af as o,ag as on,ah as sn,ai as fn}from"./index-
|
|
1
|
+
import{a4 as ln,a5 as an,a6 as H,a7 as q,a8 as B,a9 as un,aa as g,ab as tn,ac as L,ad as _,ae as rn,af as o,ag as on,ah as sn,ai as fn}from"./index-D8Jsti3x.js";function cn(l){return l.innerRadius}function gn(l){return l.outerRadius}function yn(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,C,a){var O=I-l,i=D-h,n=C-v,d=a-A,u=d*O-n*i;if(!(u*u<g))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function W(l,h,I,D,v,A,C){var a=l-I,O=h-D,i=(C?A:-A)/L(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,F=(u+f)/2,t=(s+c)/2,m=f-u,y=c-s,R=m*m+y*y,T=v-A,P=u*c-f*s,S=(y<0?-1:1)*L(on(0,T*T*R-P*P)),j=(P*y-m*S)/R,z=(-P*m-y*S)/R,w=(P*y+m*S)/R,p=(-P*m+y*S)/R,x=j-F,e=z-t,r=w-F,G=p-t;return x*x+e*e>r*r+G*G&&(j=w,z=p),{cx:j,cy:z,x01:-n,y01:-d,x11:j*(v/T-1),y11:z*(v/T-1)}}function hn(){var l=cn,h=gn,I=B(0),D=null,v=yn,A=dn,C=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,F=rn(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>g))a.moveTo(0,0);else if(F>tn-g)a.moveTo(s*H(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>g&&(a.moveTo(u*H(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,y=c,R=f,T=c,P=F,S=F,j=C.apply(this,arguments)/2,z=j>g&&(D?+D.apply(this,arguments):L(u*u+s*s)),w=_(rn(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if(z>g){var G=sn(z/u*q(j)),M=sn(z/s*q(j));(P-=G*2)>g?(G*=t?1:-1,R+=G,T-=G):(P=0,R=T=(f+c)/2),(S-=M*2)>g?(M*=t?1:-1,m+=M,y-=M):(S=0,m=y=(f+c)/2)}var J=s*H(m),K=s*q(m),N=u*H(T),Q=u*q(T);if(w>g){var U=s*H(y),V=s*q(y),X=u*H(R),Y=u*q(R),E;if(F<an)if(E=pn(J,K,X,Y,U,V,N,Q)){var Z=J-E[0],$=K-E[1],b=U-E[0],k=V-E[1],nn=1/q(fn((Z*b+$*k)/(L(Z*Z+$*$)*L(b*b+k*k)))/2),en=L(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>g?x>g?(e=W(X,Y,J,K,s,x,t),r=W(U,V,N,Q,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(J,K),a.arc(0,0,s,m,y,!t)):a.moveTo(J,K),!(u>g)||!(P>g)?a.lineTo(N,Q):p>g?(e=W(N,Q,U,V,u,-p,t),r=W(J,K,X,Y,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[H(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:B(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:B(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:B(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:B(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:B(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:B(+n),i):A},i.padAngle=function(n){return arguments.length?(C=typeof n=="function"?n:B(+n),i):C},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
|