@runweave/server-linux-x64 0.1.10 → 0.1.12
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/manifest.json +147 -147
- package/native.tar.gz +0 -0
- package/package.json +1 -1
- package/payload/app-server/build-info.json +3 -3
- package/payload/app-server/index.cjs +1 -1
- package/payload/backend/build-info.json +4 -4
- package/payload/backend/index.cjs +105 -42
- package/payload/frontend/dist/assets/{_baseUniq--CWv8e7O.js → _baseUniq-VUz3u9LC.js} +1 -1
- package/payload/frontend/dist/assets/{access-BCF23Qto.js → access-DYX0dB6C.js} +1 -1
- package/payload/frontend/dist/assets/{advanced-D8viCLue.js → advanced-CweRHp2W.js} +1 -1
- package/payload/frontend/dist/assets/{appearance-wPVMx-tB.js → appearance-494KUegR.js} +1 -1
- package/payload/frontend/dist/assets/{arc-BXffHD7A.js → arc-Z2kK66lq.js} +1 -1
- package/payload/frontend/dist/assets/{architectureDiagram-Q4EWVU46-BXHN9QCj.js → architectureDiagram-Q4EWVU46-qCVxxH3R.js} +1 -1
- package/payload/frontend/dist/assets/{blockDiagram-DXYQGD6D-DoZjab_0.js → blockDiagram-DXYQGD6D-BlIbAFEf.js} +1 -1
- package/payload/frontend/dist/assets/{c4Diagram-AHTNJAMY-Ds2E62Z8.js → c4Diagram-AHTNJAMY-E3iDtEa4.js} +1 -1
- package/payload/frontend/dist/assets/channel-CoPKff4t.js +1 -0
- package/payload/frontend/dist/assets/{chunk-4BX2VUAB-Dk1H2-5_.js → chunk-4BX2VUAB-BMmYQfLj.js} +1 -1
- package/payload/frontend/dist/assets/{chunk-4TB4RGXK-Sg0gzSvg.js → chunk-4TB4RGXK-CWBrRDbS.js} +1 -1
- package/payload/frontend/dist/assets/{chunk-55IACEB6-Du_EJG4S.js → chunk-55IACEB6-B-RyyBnf.js} +1 -1
- package/payload/frontend/dist/assets/{chunk-EDXVE4YY-BM1Cs5dU.js → chunk-EDXVE4YY-BKzU4TXS.js} +1 -1
- package/payload/frontend/dist/assets/{chunk-FMBD7UC4-BM9thfyY.js → chunk-FMBD7UC4-n132OCI6.js} +1 -1
- package/payload/frontend/dist/assets/{chunk-OYMX7WX6-C9Bvn4fo.js → chunk-OYMX7WX6-4b-D8G11.js} +1 -1
- package/payload/frontend/dist/assets/{chunk-QZHKN3VN-CaakbFhJ.js → chunk-QZHKN3VN-C3zjki3z.js} +1 -1
- package/payload/frontend/dist/assets/{chunk-YZCP3GAM-DkVNrd40.js → chunk-YZCP3GAM-Bi7S_JyD.js} +1 -1
- package/payload/frontend/dist/assets/classDiagram-6PBFFD2Q-FUK_Ald7.js +1 -0
- package/payload/frontend/dist/assets/classDiagram-v2-HSJHXN6E-FUK_Ald7.js +1 -0
- package/payload/frontend/dist/assets/clone-ByE4QDPq.js +1 -0
- package/payload/frontend/dist/assets/{connection-DIdF_3aa.js → connection-DtjjR8IP.js} +1 -1
- package/payload/frontend/dist/assets/{connections-DBYC8SFl.js → connections-BytUAh1Z.js} +1 -1
- package/payload/frontend/dist/assets/{cose-bilkent-S5V4N54A-B4-fwllY.js → cose-bilkent-S5V4N54A-CDCFpAOm.js} +1 -1
- package/payload/frontend/dist/assets/{dagre-KV5264BT-Byu4wqLk.js → dagre-KV5264BT-DTQVpeTz.js} +1 -1
- package/payload/frontend/dist/assets/{desktop-aESkh0HL.js → desktop-BuftJPyE.js} +1 -1
- package/payload/frontend/dist/assets/{diagram-5BDNPKRD-DJW8DuCX.js → diagram-5BDNPKRD-ShI36c2G.js} +1 -1
- package/payload/frontend/dist/assets/{diagram-G4DWMVQ6-DTBvds5J.js → diagram-G4DWMVQ6-BPxdrMgU.js} +1 -1
- package/payload/frontend/dist/assets/{diagram-MMDJMWI5-D42e4xzm.js → diagram-MMDJMWI5-iwh0ZT7T.js} +1 -1
- package/payload/frontend/dist/assets/{diagram-TYMM5635-BjV43-C_.js → diagram-TYMM5635-CX2F4XD4.js} +1 -1
- package/payload/frontend/dist/assets/{erDiagram-SMLLAGMA-DE47Ibp_.js → erDiagram-SMLLAGMA-DwXz5Tds.js} +1 -1
- package/payload/frontend/dist/assets/{flowDiagram-DWJPFMVM-CjGBlzS4.js → flowDiagram-DWJPFMVM-CVDi2XWl.js} +1 -1
- package/payload/frontend/dist/assets/{ganttDiagram-T4ZO3ILL-vfj40KZi.js → ganttDiagram-T4ZO3ILL-DLuDUXuQ.js} +1 -1
- package/payload/frontend/dist/assets/{gitGraphDiagram-UUTBAWPF-DT5xfRNb.js → gitGraphDiagram-UUTBAWPF-DsqOAHKo.js} +1 -1
- package/payload/frontend/dist/assets/{graph-D-AF6yQT.js → graph-6BysLM8d.js} +1 -1
- package/payload/frontend/dist/assets/{image-D9gtSsD9.js → image-dI1rk_wX.js} +1 -1
- package/payload/frontend/dist/assets/{index-BPVP2P-2.js → index-CNnzZKYi.js} +5 -5
- package/payload/frontend/dist/assets/{infoDiagram-42DDH7IO-C7ew_uLJ.js → infoDiagram-42DDH7IO-ByaP-F4m.js} +1 -1
- package/payload/frontend/dist/assets/{ishikawaDiagram-UXIWVN3A-B6-YebU9.js → ishikawaDiagram-UXIWVN3A-BbNJbxvT.js} +1 -1
- package/payload/frontend/dist/assets/{journeyDiagram-VCZTEJTY-BOFgJDA5.js → journeyDiagram-VCZTEJTY-CrOVnF8b.js} +1 -1
- package/payload/frontend/dist/assets/{kanban-definition-6JOO6SKY-jh06wZYz.js → kanban-definition-6JOO6SKY-B0uutGkA.js} +1 -1
- package/payload/frontend/dist/assets/{layout-B4p7V5fB.js → layout-BNJKrH1C.js} +1 -1
- package/payload/frontend/dist/assets/{linear-D2JWfvdc.js → linear-CzieEpVo.js} +1 -1
- package/payload/frontend/dist/assets/{main-CuRgiPQf.js → main-DPDWozNB.js} +143 -143
- package/payload/frontend/dist/assets/{min--jD4Arnm.js → min-COzbZh0B.js} +1 -1
- package/payload/frontend/dist/assets/{mindmap-definition-QFDTVHPH-DmzjmSuf.js → mindmap-definition-QFDTVHPH-COtW2jp5.js} +1 -1
- package/payload/frontend/dist/assets/{monitoring-Tvvk6TfB.js → monitoring-VTNGzAyv.js} +1 -1
- package/payload/frontend/dist/assets/{notifications-CqP2AQrW.js → notifications-D-GW-TTF.js} +1 -1
- package/payload/frontend/dist/assets/{pieDiagram-DEJITSTG-B79qIVe5.js → pieDiagram-DEJITSTG-EKQe1mDG.js} +1 -1
- package/payload/frontend/dist/assets/{quadrantDiagram-34T5L4WZ-DIOj1DhE.js → quadrantDiagram-34T5L4WZ-UdkJN2GP.js} +1 -1
- package/payload/frontend/dist/assets/{record-content-CzGGCbNs.js → record-content-BMMqgX4o.js} +1 -1
- package/payload/frontend/dist/assets/{requirementDiagram-MS252O5E-C-n1j3tN.js → requirementDiagram-MS252O5E-DUp6aMLi.js} +1 -1
- package/payload/frontend/dist/assets/{sankeyDiagram-XADWPNL6-BVKqWE6C.js → sankeyDiagram-XADWPNL6-BEHbyQqG.js} +1 -1
- package/payload/frontend/dist/assets/{sequenceDiagram-FGHM5R23-B980Icqs.js → sequenceDiagram-FGHM5R23-DOidQGue.js} +1 -1
- package/payload/frontend/dist/assets/{stateDiagram-FHFEXIEX-C-mJHzhL.js → stateDiagram-FHFEXIEX-D19ZNvzk.js} +1 -1
- package/payload/frontend/dist/assets/stateDiagram-v2-QKLJ7IA2-BHG_Lyc2.js +1 -0
- package/payload/frontend/dist/assets/{status-Bv4Czr9-.js → status-DgyGUiXv.js} +1 -1
- package/payload/frontend/dist/assets/suiji-C9TumXnC.js +1 -0
- package/payload/frontend/dist/assets/{svg-C6Aj62ig.js → svg-DaiBcNRS.js} +1 -1
- package/payload/frontend/dist/assets/{tabs-BTUOhdAF.js → tabs-DPvaaQlw.js} +1 -1
- package/payload/frontend/dist/assets/{timeline-definition-GMOUNBTQ-Dr9yRuVq.js → timeline-definition-GMOUNBTQ-DyZYnin1.js} +1 -1
- package/payload/frontend/dist/assets/{vennDiagram-DHZGUBPP-B0Xsg1-Z.js → vennDiagram-DHZGUBPP-CvLT97Cb.js} +1 -1
- package/payload/frontend/dist/assets/{wardley-RL74JXVD-BjIKKaA_.js → wardley-RL74JXVD-Bi_yW1_U.js} +1 -1
- package/payload/frontend/dist/assets/{wardleyDiagram-NUSXRM2D-DMJ7MEA9.js → wardleyDiagram-NUSXRM2D-Bg55_fJ7.js} +1 -1
- package/payload/frontend/dist/assets/{xychartDiagram-5P7HB3ND-2tvgfdab.js → xychartDiagram-5P7HB3ND-CgI-KDMY.js} +1 -1
- package/payload/frontend/dist/build-info.json +4 -4
- package/payload/frontend/dist/companion.html +1 -1
- package/payload/frontend/dist/index.html +2 -2
- package/payload/plugins/toolkit/.codex-plugin/plugin.json +1 -1
- package/payload/plugins/toolkit/skills/publish-runweave-server/SKILL.md +3 -1
- package/payload/plugins/toolkit-release.json +1 -1
- package/payload/pty-host/index.cjs +24 -12
- package/payload/frontend/dist/assets/channel-83CTXkVl.js +0 -1
- package/payload/frontend/dist/assets/classDiagram-6PBFFD2Q-oR8IYJwC.js +0 -1
- package/payload/frontend/dist/assets/classDiagram-v2-HSJHXN6E-oR8IYJwC.js +0 -1
- package/payload/frontend/dist/assets/clone-BIDF-bd9.js +0 -1
- package/payload/frontend/dist/assets/stateDiagram-v2-QKLJ7IA2-B4L4fK9G.js +0 -1
- package/payload/frontend/dist/assets/suiji-DyzQqRTE.js +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": "0.1.0",
|
|
3
|
-
"buildId": "
|
|
4
|
-
"sourceRevision": "
|
|
3
|
+
"buildId": "20261109T114447447Z-2137d8fa",
|
|
4
|
+
"sourceRevision": "2137d8fa9eae70d0ab4070212c1cb4e8bb9e2fa6",
|
|
5
5
|
"sourceDirty": false,
|
|
6
|
-
"builtAt": "2026-11-
|
|
6
|
+
"builtAt": "2026-11-09T11:44:47.447Z",
|
|
7
7
|
"contentSha256": "ee24c2adfe7a38b0f7698d68d8493b560042b699baba92c63e79961518d9a9af"
|
|
8
8
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* runweave:build-info */var __RUNWEAVE_BUILD_INFO__={"version":"0.1.0","buildId":"
|
|
1
|
+
/* runweave:build-info */var __RUNWEAVE_BUILD_INFO__={"version":"0.1.0","buildId":"20261109T114447447Z-2137d8fa","sourceRevision":"2137d8fa9eae70d0ab4070212c1cb4e8bb9e2fa6","sourceDirty":false,"builtAt":"2026-11-09T11:44:47.447Z","contentSha256":"ee24c2adfe7a38b0f7698d68d8493b560042b699baba92c63e79961518d9a9af"};
|
|
2
2
|
const __IMPORT_META_URL__ = require('url').pathToFileURL(__filename).href;
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": "0.1.0",
|
|
3
|
-
"buildId": "
|
|
4
|
-
"sourceRevision": "
|
|
3
|
+
"buildId": "20261109T114446842Z-2137d8fa",
|
|
4
|
+
"sourceRevision": "2137d8fa9eae70d0ab4070212c1cb4e8bb9e2fa6",
|
|
5
5
|
"sourceDirty": false,
|
|
6
|
-
"builtAt": "2026-11-
|
|
7
|
-
"contentSha256": "
|
|
6
|
+
"builtAt": "2026-11-09T11:44:46.842Z",
|
|
7
|
+
"contentSha256": "170984239a9c787cca301a61b3656704c8500945c978db6f3b97a5f716b40682"
|
|
8
8
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* runweave:build-info */var __RUNWEAVE_BUILD_INFO__={"version":"0.1.0","buildId":"
|
|
1
|
+
/* runweave:build-info */var __RUNWEAVE_BUILD_INFO__={"version":"0.1.0","buildId":"20261109T114446842Z-2137d8fa","sourceRevision":"2137d8fa9eae70d0ab4070212c1cb4e8bb9e2fa6","sourceDirty":false,"builtAt":"2026-11-09T11:44:46.842Z","contentSha256":"170984239a9c787cca301a61b3656704c8500945c978db6f3b97a5f716b40682"};
|
|
2
2
|
const __IMPORT_META_URL__ = require('url').pathToFileURL(__filename).href;
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -71985,10 +71985,7 @@ var PtyHostClient = class _PtyHostClient {
|
|
|
71985
71985
|
});
|
|
71986
71986
|
this.socket.on("close", () => {
|
|
71987
71987
|
this.connected = false;
|
|
71988
|
-
for (const request2 of this.pending.values())
|
|
71989
|
-
clearTimeout(request2.timer);
|
|
71990
|
-
request2.reject(new Error("HOST_CONNECTION_LOST"));
|
|
71991
|
-
}
|
|
71988
|
+
for (const request2 of this.pending.values()) request2.reject(new Error("HOST_CONNECTION_LOST"));
|
|
71992
71989
|
this.pending.clear();
|
|
71993
71990
|
for (const listener of this.disconnected) listener();
|
|
71994
71991
|
});
|
|
@@ -71997,8 +71994,6 @@ var PtyHostClient = class _PtyHostClient {
|
|
|
71997
71994
|
if (message2.requestId) {
|
|
71998
71995
|
const request2 = this.pending.get(message2.requestId);
|
|
71999
71996
|
if (!request2) return;
|
|
72000
|
-
clearTimeout(request2.timer);
|
|
72001
|
-
this.pending.delete(message2.requestId);
|
|
72002
71997
|
if (message2.error) request2.reject(new Error(message2.error));
|
|
72003
71998
|
else request2.resolve(message2.result);
|
|
72004
71999
|
} else if (message2.type) for (const listener of this.events) listener(value);
|
|
@@ -72030,16 +72025,38 @@ var PtyHostClient = class _PtyHostClient {
|
|
|
72030
72025
|
throw error2;
|
|
72031
72026
|
}
|
|
72032
72027
|
}
|
|
72033
|
-
|
|
72028
|
+
/** Aborting only releases this caller's wait; it does not cancel or replay Host operations. */
|
|
72029
|
+
request(action, body2 = {}, signal) {
|
|
72030
|
+
if (signal?.aborted) return Promise.reject(new Error("HOST_REQUEST_ABORTED"));
|
|
72034
72031
|
if (!this.connected) return Promise.reject(new Error("HOST_CONNECTION_LOST"));
|
|
72035
72032
|
const requestId = (0, import_node_crypto14.randomUUID)();
|
|
72036
72033
|
return new Promise((resolve, reject) => {
|
|
72037
|
-
const
|
|
72034
|
+
const cleanup = () => {
|
|
72035
|
+
clearTimeout(timer);
|
|
72036
|
+
signal?.removeEventListener("abort", abort);
|
|
72038
72037
|
this.pending.delete(requestId);
|
|
72039
|
-
|
|
72040
|
-
|
|
72041
|
-
|
|
72042
|
-
|
|
72038
|
+
};
|
|
72039
|
+
const request2 = {
|
|
72040
|
+
resolve: (value) => {
|
|
72041
|
+
cleanup();
|
|
72042
|
+
resolve(value);
|
|
72043
|
+
},
|
|
72044
|
+
reject: (error2) => {
|
|
72045
|
+
cleanup();
|
|
72046
|
+
reject(error2);
|
|
72047
|
+
}
|
|
72048
|
+
};
|
|
72049
|
+
const abort = () => request2.reject(new Error("HOST_REQUEST_ABORTED"));
|
|
72050
|
+
const timer = setTimeout(() => request2.reject(new Error("HOST_REQUEST_UNCERTAIN")), 15e3);
|
|
72051
|
+
this.pending.set(requestId, request2);
|
|
72052
|
+
signal?.addEventListener("abort", abort, { once: true });
|
|
72053
|
+
try {
|
|
72054
|
+
if (!sendJson(this.socket, { requestId, token: this.token, hostInstanceId: this.descriptor.hostInstanceId, action, body: body2 })) {
|
|
72055
|
+
request2.reject(new Error("HOST_CONNECTION_LOST"));
|
|
72056
|
+
}
|
|
72057
|
+
} catch (error2) {
|
|
72058
|
+
request2.reject(error2);
|
|
72059
|
+
}
|
|
72043
72060
|
});
|
|
72044
72061
|
}
|
|
72045
72062
|
close() {
|
|
@@ -112240,9 +112257,6 @@ function registerDesktopNetworkRoutes(app, requireAuth) {
|
|
|
112240
112257
|
});
|
|
112241
112258
|
}
|
|
112242
112259
|
|
|
112243
|
-
// backend/src/remote/routes.ts
|
|
112244
|
-
var import_node_crypto57 = require("node:crypto");
|
|
112245
|
-
|
|
112246
112260
|
// packages/shared/src/remote/index.ts
|
|
112247
112261
|
function isRemoteBrowserProfileState(value) {
|
|
112248
112262
|
if (!value || typeof value !== "object") return false;
|
|
@@ -112569,13 +112583,63 @@ function registerRemoteCapabilitiesRoute(app, requireTunnelAuth, requireAuth, br
|
|
|
112569
112583
|
});
|
|
112570
112584
|
}
|
|
112571
112585
|
|
|
112572
|
-
// backend/src/remote/
|
|
112573
|
-
|
|
112574
|
-
|
|
112586
|
+
// backend/src/remote/terminal-hook-auth.ts
|
|
112587
|
+
var import_node_crypto57 = require("node:crypto");
|
|
112588
|
+
function matchesToken2(value, expected) {
|
|
112589
|
+
if (!expected) return false;
|
|
112575
112590
|
const supplied = Buffer.from(value);
|
|
112576
112591
|
const actual = Buffer.from(expected);
|
|
112577
112592
|
return supplied.length === actual.length && (0, import_node_crypto57.timingSafeEqual)(supplied, actual);
|
|
112578
112593
|
}
|
|
112594
|
+
async function authenticatesTerminal(value, terminalId, sessions, signal) {
|
|
112595
|
+
signal.throwIfAborted();
|
|
112596
|
+
if (typeof value !== "string" || !value) return false;
|
|
112597
|
+
if (matchesToken2(value, process.env.RUNWEAVE_HOOK_TOKEN)) return true;
|
|
112598
|
+
if (!usesPtyHost()) return false;
|
|
112599
|
+
const session = sessions.getSession(terminalId);
|
|
112600
|
+
const binding = session?.ptyHost;
|
|
112601
|
+
if (!binding || session.status !== "running") return false;
|
|
112602
|
+
const host = await getPtyHost();
|
|
112603
|
+
signal.throwIfAborted();
|
|
112604
|
+
if (host.descriptor.hostInstanceId !== binding.hostInstanceId) return false;
|
|
112605
|
+
const hosted = (await host.request("listSessions", {}, signal)).find(
|
|
112606
|
+
(item) => item.terminalSessionId === terminalId && item.hostInstanceId === binding.hostInstanceId && item.sessionInstanceId === binding.sessionInstanceId
|
|
112607
|
+
);
|
|
112608
|
+
return hosted?.status === "running" && matchesToken2(value, hosted.gatewayToken);
|
|
112609
|
+
}
|
|
112610
|
+
function createRequireTerminalHook(sessions) {
|
|
112611
|
+
return async (req, res, next) => {
|
|
112612
|
+
if (res.destroyed) return;
|
|
112613
|
+
const controller = new AbortController();
|
|
112614
|
+
const cancel = () => controller.abort();
|
|
112615
|
+
const aborted2 = new Promise((_resolve, reject) => {
|
|
112616
|
+
controller.signal.onabort = () => reject(new Error("Terminal authentication aborted"));
|
|
112617
|
+
});
|
|
112618
|
+
const timeout = setTimeout(cancel, 4e3);
|
|
112619
|
+
res.once("close", cancel);
|
|
112620
|
+
try {
|
|
112621
|
+
const authenticated = await Promise.race([
|
|
112622
|
+
authenticatesTerminal(req.headers["x-runweave-hook-token"], String(req.params.id), sessions, controller.signal),
|
|
112623
|
+
aborted2
|
|
112624
|
+
]);
|
|
112625
|
+
controller.signal.throwIfAborted();
|
|
112626
|
+
if (res.destroyed) return;
|
|
112627
|
+
if (!authenticated) {
|
|
112628
|
+
res.sendStatus(401);
|
|
112629
|
+
return;
|
|
112630
|
+
}
|
|
112631
|
+
next();
|
|
112632
|
+
} catch {
|
|
112633
|
+
if (!res.destroyed) res.status(503).json({ code: "DESKTOP_UNAVAILABLE", message: "Terminal runtime authentication is unavailable" });
|
|
112634
|
+
} finally {
|
|
112635
|
+
clearTimeout(timeout);
|
|
112636
|
+
res.off("close", cancel);
|
|
112637
|
+
controller.signal.onabort = null;
|
|
112638
|
+
}
|
|
112639
|
+
};
|
|
112640
|
+
}
|
|
112641
|
+
|
|
112642
|
+
// backend/src/remote/routes.ts
|
|
112579
112643
|
function sendError(res, error2) {
|
|
112580
112644
|
if (error2 instanceof RemoteBrowserError) {
|
|
112581
112645
|
res.status(error2.status).json({ code: error2.code, message: error2.message });
|
|
@@ -112586,14 +112650,11 @@ function sendError(res, error2) {
|
|
|
112586
112650
|
function registerRemoteBrowserRoutes(app, auth, sessions, requireTunnelAuth, browserProfileDir, backendId) {
|
|
112587
112651
|
const bindings = new DesktopBrowserBindings(sessions);
|
|
112588
112652
|
const requireAuth = createRequireAuth(auth);
|
|
112653
|
+
const requireTerminalHook = createRequireTerminalHook(sessions);
|
|
112589
112654
|
registerDesktopNetworkRoutes(app, requireAuth);
|
|
112590
112655
|
registerRemoteCapabilitiesRoute(app, requireTunnelAuth, requireAuth, browserProfileDir, backendId);
|
|
112591
|
-
app.get("/api/terminal/session/:id/runtime-identity", (req, res) => {
|
|
112592
|
-
|
|
112593
|
-
res.sendStatus(401);
|
|
112594
|
-
return;
|
|
112595
|
-
}
|
|
112596
|
-
const session = sessions.getSession(req.params.id);
|
|
112656
|
+
app.get("/api/terminal/session/:id/runtime-identity", requireTerminalHook, (req, res) => {
|
|
112657
|
+
const session = sessions.getSession(String(req.params.id));
|
|
112597
112658
|
if (!session) {
|
|
112598
112659
|
res.status(404).json({ code: "terminal_session_not_found" });
|
|
112599
112660
|
return;
|
|
@@ -112650,18 +112711,14 @@ function registerRemoteBrowserRoutes(app, auth, sessions, requireTunnelAuth, bro
|
|
|
112650
112711
|
sendError(res, error2);
|
|
112651
112712
|
}
|
|
112652
112713
|
});
|
|
112653
|
-
app.post("/api/terminal/session/:id/browser/capability", (req, res) => {
|
|
112654
|
-
if (!matchesHookToken(req.headers["x-runweave-hook-token"], process.env.RUNWEAVE_HOOK_TOKEN)) {
|
|
112655
|
-
res.sendStatus(401);
|
|
112656
|
-
return;
|
|
112657
|
-
}
|
|
112714
|
+
app.post("/api/terminal/session/:id/browser/capability", requireTerminalHook, (req, res) => {
|
|
112658
112715
|
const projectId = req.body?.projectId;
|
|
112659
112716
|
if (typeof projectId !== "string") {
|
|
112660
112717
|
res.sendStatus(400);
|
|
112661
112718
|
return;
|
|
112662
112719
|
}
|
|
112663
112720
|
try {
|
|
112664
|
-
res.json({ capability: bindings.issueCapability(req.params.id, projectId), expiresIn: 3600 });
|
|
112721
|
+
res.json({ capability: bindings.issueCapability(String(req.params.id), projectId), expiresIn: 3600 });
|
|
112665
112722
|
} catch (error2) {
|
|
112666
112723
|
sendError(res, error2);
|
|
112667
112724
|
}
|
|
@@ -125406,10 +125463,10 @@ function serializeHyperlinks(terminal, buffer, state) {
|
|
|
125406
125463
|
}
|
|
125407
125464
|
return result ? "\x1B7\x1B[?7l" + result + "\x1B[?7h\x1B8" : "";
|
|
125408
125465
|
}
|
|
125409
|
-
function serializeOutputScreen(terminal, addon) {
|
|
125466
|
+
function serializeOutputScreen(terminal, addon, scrollback = 0) {
|
|
125410
125467
|
const state = core(terminal);
|
|
125411
125468
|
const buffer = state._bufferService.buffer;
|
|
125412
|
-
let result = addon.serialize({ scrollback
|
|
125469
|
+
let result = addon.serialize({ scrollback, excludeModes: true });
|
|
125413
125470
|
const normalLinks = serializeHyperlinks(
|
|
125414
125471
|
terminal,
|
|
125415
125472
|
terminal.buffer.normal,
|
|
@@ -125417,7 +125474,7 @@ function serializeOutputScreen(terminal, addon) {
|
|
|
125417
125474
|
);
|
|
125418
125475
|
if (terminal.buffer.active.type === "alternate") {
|
|
125419
125476
|
const normal = addon.serialize({
|
|
125420
|
-
scrollback
|
|
125477
|
+
scrollback,
|
|
125421
125478
|
excludeModes: true,
|
|
125422
125479
|
excludeAltBuffer: true
|
|
125423
125480
|
});
|
|
@@ -125482,20 +125539,21 @@ function serializeOutputScreen(terminal, addon) {
|
|
|
125482
125539
|
|
|
125483
125540
|
// packages/pty-host/src/output-screen.ts
|
|
125484
125541
|
var TerminalOutputScreen = class _TerminalOutputScreen {
|
|
125485
|
-
constructor(cursor, onFailure) {
|
|
125542
|
+
constructor(cursor, onFailure, scrollback = 0) {
|
|
125486
125543
|
this.onFailure = onFailure;
|
|
125487
125544
|
this.cursor = cursor;
|
|
125545
|
+
this.terminal = new import_headless.default.Terminal({
|
|
125546
|
+
cols: 80,
|
|
125547
|
+
rows: 24,
|
|
125548
|
+
scrollback,
|
|
125549
|
+
allowProposedApi: true
|
|
125550
|
+
});
|
|
125488
125551
|
this.terminal.loadAddon(this.serializer);
|
|
125489
125552
|
this.terminal.loadAddon(new import_addon_unicode11.default.Unicode11Addon());
|
|
125490
125553
|
this.terminal.unicode.activeVersion = "11";
|
|
125491
125554
|
}
|
|
125492
125555
|
static pendingSnapshots = 0;
|
|
125493
|
-
terminal
|
|
125494
|
-
cols: 80,
|
|
125495
|
-
rows: 24,
|
|
125496
|
-
scrollback: 0,
|
|
125497
|
-
allowProposedApi: true
|
|
125498
|
-
});
|
|
125556
|
+
terminal;
|
|
125499
125557
|
serializer = new import_addon_serialize.default.SerializeAddon();
|
|
125500
125558
|
queue = [];
|
|
125501
125559
|
pendingBytes = 0;
|
|
@@ -125550,7 +125608,12 @@ var TerminalOutputScreen = class _TerminalOutputScreen {
|
|
|
125550
125608
|
return;
|
|
125551
125609
|
}
|
|
125552
125610
|
try {
|
|
125553
|
-
|
|
125611
|
+
let scrollback = this.terminal.buffer.normal.baseY;
|
|
125612
|
+
let data = serializeOutputScreen(this.terminal, this.serializer, scrollback);
|
|
125613
|
+
while (Buffer.byteLength(data, "utf8") > RESUME_MAX_BYTES && scrollback > 0) {
|
|
125614
|
+
scrollback = Math.floor(scrollback / 2);
|
|
125615
|
+
data = serializeOutputScreen(this.terminal, this.serializer, scrollback);
|
|
125616
|
+
}
|
|
125554
125617
|
if (Buffer.byteLength(data, "utf8") > RESUME_MAX_BYTES)
|
|
125555
125618
|
throw new Error("Terminal snapshot exceeds 512 KiB");
|
|
125556
125619
|
resolve({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{aY as L,bm as ln,aI as A,aW as P,aH as W,bn as gn,bo as dn,bp as hn,bq as z,br as pn,bs as An,bt as m,aZ as N,b2 as U,b5 as T,bu as _n,b0 as on,bv as wn,bw as On,aJ as V,bx as vn,by as R}from"./index-
|
|
1
|
+
import{aY as L,bm as ln,aI as A,aW as P,aH as W,bn as gn,bo as dn,bp as hn,bq as z,br as pn,bs as An,bt as m,aZ as N,b2 as U,b5 as T,bu as _n,b0 as on,bv as wn,bw as On,aJ as V,bx as vn,by as R}from"./index-CNnzZKYi.js";var Pn="[object Symbol]";function x(n){return typeof n=="symbol"||L(n)&&ln(n)==Pn}function bn(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 B=P?P.prototype:void 0,H=B?B.toString:void 0;function k(n){if(typeof n=="string")return n;if(A(n))return bn(n,k)+"";if(x(n))return H?H.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 Sn(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 Ln=/\.|\[(?:[^[\]]*|(["'])(?:(?!\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)||!Ln.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,Dn=/\\(\\)?/g,Fn=$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(Dn,"$1"):i||e)}),r});function Gn(n){return n==null?"":k(n)}function j(n,r){return A(n)?n:$(n,r)?[n]:Fn(Gn(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 mn(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 K=P?P.isConcatSpreadable:void 0;function Nn(n){return A(n)||z(n)||!!(K&&n&&n[K])}function Kr(n,r,e,i,f){var t=-1,s=n.length;for(e||(e=Nn),f||(f=[]);++t<s;){var u=n[t];e(u)?rn(f,u):i||(f[f.length]=u)}return f}function Un(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 Bn(){return[]}var Hn=Object.prototype,Kn=Hn.propertyIsEnumerable,q=Object.getOwnPropertySymbols,qn=q?function(n){return n==null?[]:(n=Object(n),en(q(n),function(r){return Kn.call(n,r)}))}:Bn;function Zn(n,r,e){var i=r(n);return A(n)?i:rn(i,e(n))}function Z(n){return Zn(n,M,qn)}var Yn="__lodash_hash_undefined__";function Jn(n){return this.__data__.set(n,Yn),this}function Xn(n){return this.__data__.has(n)}function b(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new pn;++r<e;)this.add(n[r])}b.prototype.add=b.prototype.push=Jn;b.prototype.has=Xn;function Qn(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 b: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(!Qn(r,function(O,v){if(!tn(o,v)&&(p===O||f(p,O,e,i,t)))return o.push(v)})){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,S=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 m(n),new m(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(S)return S.call(n)==S.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=Z(n),a=u.length,h=Z(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],v=r[d];if(i)var G=s?i(v,O,d,r,n,t):i(O,v,d,n,r,t);if(!(G===void 0?O===v||f(O,v,e,i,t):G)){_=!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]",X="[object Array]",c="[object Object]",wr=Object.prototype,Q=wr.hasOwnProperty;function Or(n,r,e,i,f,t){var s=A(n),u=A(r),a=s?X:N(n),h=u?X:N(r);a=a==J?c:a,h=h==J?c:h;var g=a==c,l=h==c,d=a==h;if(d&&U(n)){if(!U(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&&Q.call(n,"__wrapped__"),p=l&&Q.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 D(n,r,e,i,f){return n===r?!0:n==null||r==null||!L(n)&&!L(r)?n!==n&&r!==r:Or(n,r,e,i,D,f)}var vr=1,Pr=2;function br(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?D(h,a,vr|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||br(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,Sr=2;function Lr(n,r){return $(n)&&sn(r)?un(I(n),r):function(e){var i=mn(e,n);return i===void 0&&i===r?Ir(e,n):D(r,i,Rr|Sr)}}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)?Lr(n[0],n[1]):Er(n):$r(n)}function Cr(n,r){return n&&vn(n,r,M)}function Dr(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 F=Dr(Cr);function Fr(n){return typeof n=="function"?n:V}function qr(n,r){var e=A(n)?En:F;return e(n,Fr(r))}function Gr(n,r){var e=[];return F(n,function(i,f,t){r(i,f,t)&&e.push(i)}),e}function Zr(n,r){var e=A(n)?en:Gr;return e(n,an(r))}function mr(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)?Un:mr,f=arguments.length<3;return i(n,an(r),e,f,F)}var Nr=1/0,Ur=R&&1/C(new R([,-0]))[1]==Nr?function(n){return new R(n)}:yn,Br=200;function Jr(n,r,e){var i=-1,f=Sn,t=n.length,s=!0,u=[],a=u;if(t>=Br){var h=r?null:Ur(n);if(h)return C(h);s=!1,f=tn,a=new b}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{F as a,Kr as b,an as c,bn as d,rn as e,Zn as f,qn as g,En as h,x as i,Z as j,M as k,Jr as l,Zr as m,qr as n,cn as o,Fr as p,Cr as q,Yr as r,Bn as s,Tr as t,j as u,I as v,nn as w,Ir as x,Gn as y};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as t,r as i}from"./index-D9-cSGu-.js";import{d as r,e as c,C as u,f as d,h as p,M as m}from"./main-
|
|
1
|
+
import{j as t,r as i}from"./index-D9-cSGu-.js";import{d as r,e as c,C as u,f as d,h as p,M as m}from"./main-DPDWozNB.js";import{S as l}from"./tabs-DPvaaQlw.js";function g(){var a;const s=r(),e=d(s.connection,s.auth.token,s.auth.clearToken),{open:o,close:n}=e;return i.useEffect(()=>(o(),n),[o,n]),p(!1,e.busy&&((a=e.status)==null?void 0:a.state)==="pending_approval"||!!e.status&&["approved","issuing","issued"].includes(e.status.state)),t.jsx(m,{embedded:!0,controller:e,connectionName:e.connectionName})}function b(){const s=r(),e=new URLSearchParams(c().search).get("section")??"password";return t.jsxs(t.Fragment,{children:[t.jsx(l,{items:[["password","修改密码"],["mobile","连接手机"]],active:e}),e==="mobile"?s.connection?t.jsx(g,{}):t.jsx("p",{children:"请在桌面应用中选择电脑后连接手机。"}):t.jsx(u,{embedded:!0,apiBase:s.apiBase,token:s.auth.token,onAuthExpired:s.auth.clearToken})]})}export{b as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as t}from"./index-D9-cSGu-.js";import{d as a,i as n}from"./main-
|
|
1
|
+
import{j as t}from"./index-D9-cSGu-.js";import{d as a,i as n}from"./main-DPDWozNB.js";function s(){const e=a();return t.jsx(n,{embedded:!0,apiBase:e.apiBase,token:e.auth.token,onAuthExpired:e.auth.clearToken})}export{s as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as s}from"./index-D9-cSGu-.js";import{z as j,u as o,S as b,g as f,B as m,A as N,a as v}from"./main-
|
|
1
|
+
import{j as s}from"./index-D9-cSGu-.js";import{z as j,u as o,S as b,g as f,B as m,A as N,a as v}from"./main-DPDWozNB.js";function k(){const{theme:h,setTheme:p}=j(),n=o(e=>e.sidecarLayout),x=o(e=>e.sidecarLayoutError),t=b.filter(e=>{var a;return e.id!=="automation"||((a=window.electronAPI)==null?void 0:a.isElectron)}).map(e=>e.id),i=f(n,t),u=i,l=o.getState();return s.jsxs("div",{className:"space-y-4",children:[s.jsxs("section",{children:[s.jsx("h2",{className:"mb-2 font-medium",children:"主题"}),s.jsx("div",{className:"grid grid-cols-3 gap-2",children:[["light","浅色"],["dark","深色"],["system","跟随系统"]].map(([e,a])=>s.jsxs("button",{"aria-pressed":h===e,onClick:()=>p(e),className:`flex items-center gap-2 rounded-md border px-3 py-2 text-left ${h===e?"border-primary ring-1 ring-primary":""}`,children:[s.jsx("div",{className:`h-5 w-8 shrink-0 rounded border ${e==="light"?"bg-stone-100":e==="dark"?"bg-neutral-900":"bg-gradient-to-r from-stone-100 to-neutral-900"}`}),a]},e))})]}),s.jsxs("section",{children:[s.jsxs("div",{className:"mb-2 flex items-center justify-between",children:[s.jsx("h2",{className:"font-medium",children:"右侧工具标签"}),s.jsx(m,{variant:"ghost",size:"sm",className:"h-7 px-2 text-xs",onClick:l.resetSidecarLayout,children:"恢复默认"})]}),s.jsx("div",{className:"divide-y rounded-md border",children:n.order.map(e=>{const a=b.find(d=>d.id===e),c=i.includes(e),r=i.indexOf(e),g=t.includes(e);return s.jsxs("div",{className:"flex items-center gap-2 px-3 py-1",children:[s.jsx("span",{className:"flex-1",children:a.label}),s.jsx(m,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0","aria-label":`上移 ${a.label}`,disabled:!c||r<=0,onClick:()=>l.reorderSidecarTabs(t,r,r-1),children:s.jsx(N,{className:"size-4"})}),s.jsx(m,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0","aria-label":`下移 ${a.label}`,disabled:!c||r===i.length-1,onClick:()=>l.reorderSidecarTabs(t,r,r+1),children:s.jsx(v,{className:"size-4"})}),s.jsx("input",{type:"checkbox","aria-label":`显示 ${a.label}`,checked:!n.hidden.includes(e),disabled:!g||c&&u.length<=1,onChange:d=>l.setSidecarTabVisible(e,d.target.checked,t)})]},e)})}),x&&s.jsx("p",{role:"alert",className:"mt-3 text-sm text-destructive",children:x})]})]})}export{k as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{N as ln,O as an,P as Z,Q as O,S as V,T as un,V as y,W as tn,X as z,Y as _,Z as rn,$ as o,a0 as on,a1 as sn,a2 as fn}from"./index-
|
|
1
|
+
import{N as ln,O as an,P as Z,Q as O,S as V,T as un,V as y,W as tn,X as z,Y as _,Z as rn,$ as o,a0 as on,a1 as sn,a2 as fn}from"./index-CNnzZKYi.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,D,S,v,A,W,a){var E=D-l,i=S-h,n=W-v,d=a-A,u=d*E-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*E,h+u*i]}function J(l,h,D,S,v,A,W){var a=l-D,E=h-S,i=(W?A:-A)/z(a*a+E*E),n=i*E,d=-i*a,u=l+n,s=h+d,f=D+n,c=S+d,X=(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,I=(g<0?-1:1)*z(on(0,T*T*R-P*P)),N=(P*g-m*I)/R,Q=(-P*m-g*I)/R,w=(P*g+m*I)/R,p=(-P*m+g*I)/R,x=N-X,e=Q-t,r=w-X,Y=p-t;return x*x+e*e>r*r+Y*Y&&(N=w,Q=p),{cx:N,cy:Q,x01:-n,y01:-d,x11:N*(v/T-1),y11:Q*(v/T-1)}}function hn(){var l=cn,h=yn,D=V(0),S=null,v=gn,A=dn,W=mn,a=null,E=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,X=rn(c-f),t=c>f;if(a||(a=n=E()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(X>tn-y)a.moveTo(s*Z(f),s*O(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*Z(c),u*O(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=X,I=X,N=W.apply(this,arguments)/2,Q=N>y&&(S?+S.apply(this,arguments):z(u*u+s*s)),w=_(rn(s-u)/2,+D.apply(this,arguments)),p=w,x=w,e,r;if(Q>y){var Y=sn(Q/u*O(N)),B=sn(Q/s*O(N));(P-=Y*2)>y?(Y*=t?1:-1,R+=Y,T-=Y):(P=0,R=T=(f+c)/2),(I-=B*2)>y?(B*=t?1:-1,m+=B,g-=B):(I=0,m=g=(f+c)/2)}var $=s*Z(m),j=s*O(m),C=u*Z(T),F=u*O(T);if(w>y){var G=s*Z(g),H=s*O(g),K=u*Z(R),L=u*O(R),q;if(X<an)if(q=pn($,j,K,L,G,H,C,F)){var M=$-q[0],U=j-q[1],k=G-q[0],b=H-q[1],nn=1/O(fn((M*k+U*b)/(z(M*M+U*U)*z(k*k+b*b)))/2),en=z(q[0]*q[0]+q[1]*q[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}I>y?x>y?(e=J(K,L,$,j,s,x,t),r=J(G,H,C,F,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),a.arc(0,0,s,m,g,!t)):a.moveTo($,j),!(u>y)||!(P>y)?a.lineTo(C,F):p>y?(e=J(C,F,G,H,u,-p,t),r=J($,j,K,L,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[Z(d)*n,O(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:V(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:V(+n),i):h},i.cornerRadius=function(n){return arguments.length?(D=typeof n=="function"?n:V(+n),i):D},i.padRadius=function(n){return arguments.length?(S=n==null?null:typeof n=="function"?n:V(+n),i):S},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:V(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:V(+n),i):A},i.padAngle=function(n){return arguments.length?(W=typeof n=="function"?n:V(+n),i):W},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
|