pilotswarm 0.5.74 → 0.5.76
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/package.json +2 -2
- package/ui/core/src/controller.js +37 -5
- package/ui/core/src/history.js +26 -10
- package/web/dist/assets/{abnfDiagram-VRR7QNED-NbU-sJuP.js → abnfDiagram-VRR7QNED-DHZAKybB.js} +1 -1
- package/web/dist/assets/{arc-CTgrgDMZ.js → arc-Bw0S8L-3.js} +1 -1
- package/web/dist/assets/{architectureDiagram-ZJ3FMSHR-ChQoZV9O.js → architectureDiagram-ZJ3FMSHR-CIdYlIBv.js} +1 -1
- package/web/dist/assets/{blockDiagram-677ZJIJ3-5PYV29Px.js → blockDiagram-677ZJIJ3-D9PkQfSJ.js} +1 -1
- package/web/dist/assets/{c4Diagram-LMCZKHZV-Ck0NT3vh.js → c4Diagram-LMCZKHZV-D9YbJQu6.js} +1 -1
- package/web/dist/assets/channel-g-BbN7P5.js +1 -0
- package/web/dist/assets/{chunk-2Q5K7J3B-c_yhgLFt.js → chunk-2Q5K7J3B-BTdwvy5p.js} +1 -1
- package/web/dist/assets/{chunk-32BRIVSS-C8dmvIWk.js → chunk-32BRIVSS--ow0RNjy.js} +1 -1
- package/web/dist/assets/{chunk-5VM5RSS4-gU_WpVuN.js → chunk-5VM5RSS4-DXsS8QVF.js} +1 -1
- package/web/dist/assets/{chunk-EX3LRPZG-BUI-N5DT.js → chunk-EX3LRPZG-HKSF2xwD.js} +1 -1
- package/web/dist/assets/{chunk-JWPE2WC7-B1dxrl_8.js → chunk-JWPE2WC7-DY6_m3mf.js} +1 -1
- package/web/dist/assets/{chunk-MOJQB5TN-i6IlESZJ.js → chunk-MOJQB5TN-B-y9e9g1.js} +1 -1
- package/web/dist/assets/{chunk-RYQCIY6F-Dyjo-7_E.js → chunk-RYQCIY6F-UK1vqINl.js} +1 -1
- package/web/dist/assets/{chunk-V7JOEXUC-WKUXg6Wl.js → chunk-V7JOEXUC-8KQ7DOjY.js} +1 -1
- package/web/dist/assets/{chunk-VR4S4FIN-B0I7PCCm.js → chunk-VR4S4FIN-CkDJLoRb.js} +1 -1
- package/web/dist/assets/{chunk-XXDRQBXY-CB7eqrC9.js → chunk-XXDRQBXY-DrvpqdcI.js} +1 -1
- package/web/dist/assets/classDiagram-OUVF2IWQ-BFAQi-H9.js +1 -0
- package/web/dist/assets/classDiagram-v2-EOCWNBFH-BFAQi-H9.js +1 -0
- package/web/dist/assets/{cose-bilkent-JH36ORCC-CRcAifyt.js → cose-bilkent-JH36ORCC-BZimjiO7.js} +1 -1
- package/web/dist/assets/{cynefin-VYW2F7L2-KpsZYLz7.js → cynefin-VYW2F7L2-DgXpH0xt.js} +1 -1
- package/web/dist/assets/{cynefinDiagram-TSTJHNR4-CUOwCgQT.js → cynefinDiagram-TSTJHNR4-GhvhOnjl.js} +1 -1
- package/web/dist/assets/{dagre-VKFMJZFB-CDmvCqlf.js → dagre-VKFMJZFB-_likmiuO.js} +1 -1
- package/web/dist/assets/{diagram-FQU43EPY-Bd-9Pin4.js → diagram-FQU43EPY-DQctGbIk.js} +1 -1
- package/web/dist/assets/{diagram-G47NLZAW-C928DZyw.js → diagram-G47NLZAW-FVvT1dxp.js} +1 -1
- package/web/dist/assets/{diagram-NH7WQ7WH-CA9dPxkC.js → diagram-NH7WQ7WH-Xg1HHD3c.js} +1 -1
- package/web/dist/assets/{diagram-OA4YK3LP-DTa7sqVK.js → diagram-OA4YK3LP-BcQiRMrv.js} +1 -1
- package/web/dist/assets/{diagram-WEI45ONY-BJBIP-D1.js → diagram-WEI45ONY-PB48iGxu.js} +1 -1
- package/web/dist/assets/{ebnfDiagram-CCIWWBDH-Bt5TMBFP.js → ebnfDiagram-CCIWWBDH-Cl3gvgL7.js} +1 -1
- package/web/dist/assets/{erDiagram-Q63AITRT-CGCT386q.js → erDiagram-Q63AITRT-BqTsMK1r.js} +1 -1
- package/web/dist/assets/{flowDiagram-23GEKE2U-piGmqFTD.js → flowDiagram-23GEKE2U-Defo8220.js} +1 -1
- package/web/dist/assets/{ganttDiagram-NO4QXBWP-sTZX4MDv.js → ganttDiagram-NO4QXBWP-BNS92EuV.js} +1 -1
- package/web/dist/assets/{gitGraphDiagram-IHSO6WYX-CIX_plag.js → gitGraphDiagram-IHSO6WYX-BY0WUkLV.js} +1 -1
- package/web/dist/assets/{index-DJdpW65K.js → index-Q9Y44qRk.js} +4 -4
- package/web/dist/assets/{infoDiagram-FWYZ7A6U-BY6RX8Bs.js → infoDiagram-FWYZ7A6U-DAslesLk.js} +1 -1
- package/web/dist/assets/{ishikawaDiagram-FXEZZL3T-B4g65LaR.js → ishikawaDiagram-FXEZZL3T-DRqAlMhQ.js} +1 -1
- package/web/dist/assets/{journeyDiagram-5HDEW3XC-DiwwLX0E.js → journeyDiagram-5HDEW3XC-cZgLClOz.js} +1 -1
- package/web/dist/assets/{kanban-definition-HUTT4EX6-PV3grfRZ.js → kanban-definition-HUTT4EX6-CE-eXw4K.js} +1 -1
- package/web/dist/assets/{linear-iVmwVooP.js → linear-CZiOQoKS.js} +1 -1
- package/web/dist/assets/{mermaid.core-DA6LjVrx.js → mermaid.core-AH4mlith.js} +4 -4
- package/web/dist/assets/{mindmap-definition-LN4V7U3C-B8DdylnB.js → mindmap-definition-LN4V7U3C-BNghnDqd.js} +1 -1
- package/web/dist/assets/{papaparse.min-Di5Rv4lz.js → papaparse.min-DVijrOyx.js} +1 -1
- package/web/dist/assets/{pegDiagram-2B236MQR-DK6ek_Cq.js → pegDiagram-2B236MQR-DoRp-9Zp.js} +1 -1
- package/web/dist/assets/{pieDiagram-ENE6RG2P-CwWXjXa0.js → pieDiagram-ENE6RG2P-H2Em8U8J.js} +1 -1
- package/web/dist/assets/{pilotswarm-O-aSs9ka.js → pilotswarm-CN9fLEV0.js} +62 -62
- package/web/dist/assets/{quadrantDiagram-ABIIQ3AL-MuZAfQD9.js → quadrantDiagram-ABIIQ3AL-CvUqxqnx.js} +1 -1
- package/web/dist/assets/{railroadDiagram-RFXS5EU6-YzlcnUR9.js → railroadDiagram-RFXS5EU6-tQwCHxpV.js} +1 -1
- package/web/dist/assets/{requirementDiagram-TGXJPOKE-DXaoYkWC.js → requirementDiagram-TGXJPOKE-D2wuvVrI.js} +1 -1
- package/web/dist/assets/{sankeyDiagram-HTMAVEWB-e01Ywh1-.js → sankeyDiagram-HTMAVEWB-C4r0hO5k.js} +1 -1
- package/web/dist/assets/{sequenceDiagram-DBY2YBRQ-Bejd9pkv.js → sequenceDiagram-DBY2YBRQ-DCdGwm9a.js} +1 -1
- package/web/dist/assets/{sizeCapture-X5ZJPWSS-BH28GjqM.js → sizeCapture-X5ZJPWSS-BjRhMoeP.js} +1 -1
- package/web/dist/assets/{stateDiagram-2N3HPSRC-BLxFqrZK.js → stateDiagram-2N3HPSRC-biMUw9ek.js} +1 -1
- package/web/dist/assets/stateDiagram-v2-6OUMAXLB-Dv--LJTg.js +1 -0
- package/web/dist/assets/{swimlanes-5IMT3BWC-DeRawRPH.js → swimlanes-5IMT3BWC-BItVHm4_.js} +2 -2
- package/web/dist/assets/swimlanesDiagram-G3AALYLV-CEULUMiK.js +8 -0
- package/web/dist/assets/{timeline-definition-FHXFAJF6-DebMYWDr.js → timeline-definition-FHXFAJF6-CC39ef73.js} +1 -1
- package/web/dist/assets/{vennDiagram-L72KCM5P-BNzkPXmx.js → vennDiagram-L72KCM5P-BgmPqz-h.js} +1 -1
- package/web/dist/assets/{wardleyDiagram-EHGQE667-Bd1oZn0h.js → wardleyDiagram-EHGQE667-DRNFO87H.js} +1 -1
- package/web/dist/assets/{xychartDiagram-FW5EYKEG-BoBQQKWe.js → xychartDiagram-FW5EYKEG-D_VfxQSu.js} +1 -1
- package/web/dist/index.html +2 -2
- package/web/runtime.js +15 -4
- package/web/dist/assets/channel-ClSHF2hk.js +0 -1
- package/web/dist/assets/classDiagram-OUVF2IWQ-2Il7FbX1.js +0 -1
- package/web/dist/assets/classDiagram-v2-EOCWNBFH-2Il7FbX1.js +0 -1
- package/web/dist/assets/stateDiagram-v2-6OUMAXLB-DRVfj4NC.js +0 -1
- package/web/dist/assets/swimlanesDiagram-G3AALYLV-CqI_LiFE.js +0 -8
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pilotswarm",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.76",
|
|
4
4
|
"description": "PilotSwarm application package: terminal UI, browser portal + Web API server, and MCP server — one install, three bins.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"ink": "^6.8.0",
|
|
82
82
|
"jose": "^6.2.2",
|
|
83
83
|
"mermaid": "^11.16.0",
|
|
84
|
-
"pilotswarm-sdk": "0.5.
|
|
84
|
+
"pilotswarm-sdk": "0.5.76",
|
|
85
85
|
"react": "^19.2.4",
|
|
86
86
|
"react-dom": "^19.2.4",
|
|
87
87
|
"ws": "^8.18.2"
|
|
@@ -96,7 +96,6 @@ const FLEET_STATS_DEFAULT_WINDOW_DAYS = 30;
|
|
|
96
96
|
const SESSION_REFRESH_FAILED_STATUS = "Session refresh failed";
|
|
97
97
|
const AUTO_HISTORY_SCROLL_PAGE_COUNT = 3;
|
|
98
98
|
const SESSION_REFRESH_PAGE_LIMIT = 200;
|
|
99
|
-
const SESSION_REFRESH_MAX_PAGES = 5;
|
|
100
99
|
const FULLSCREENABLE_PANES = new Set([
|
|
101
100
|
FOCUS_REGIONS.SESSIONS,
|
|
102
101
|
FOCUS_REGIONS.CHAT,
|
|
@@ -191,26 +190,59 @@ function isSessionGoneError(error) {
|
|
|
191
190
|
return status === 404 || status === 403 || code === "NOT_FOUND" || code === "FORBIDDEN";
|
|
192
191
|
}
|
|
193
192
|
|
|
194
|
-
async function
|
|
193
|
+
async function loadSessionCatalogPages(transport, systemFilter) {
|
|
195
194
|
if (typeof transport.listSessionsPage !== "function") {
|
|
196
195
|
return transport.listSessions();
|
|
197
196
|
}
|
|
198
197
|
|
|
199
198
|
const sessions = [];
|
|
200
199
|
let cursor = null;
|
|
201
|
-
|
|
200
|
+
const seenCursors = new Set();
|
|
201
|
+
for (;;) {
|
|
202
202
|
const page = await transport.listSessionsPage({
|
|
203
203
|
limit: SESSION_REFRESH_PAGE_LIMIT,
|
|
204
204
|
cursor,
|
|
205
|
+
systemFilter,
|
|
206
|
+
viewerOnly: true,
|
|
205
207
|
});
|
|
206
208
|
const pageSessions = Array.isArray(page?.sessions) ? page.sessions : [];
|
|
207
209
|
sessions.push(...pageSessions);
|
|
208
|
-
if (!page?.hasMore
|
|
210
|
+
if (!page?.hasMore) break;
|
|
211
|
+
if (!page?.nextCursor) {
|
|
212
|
+
throw new Error("Session catalog page reported more rows without a next cursor");
|
|
213
|
+
}
|
|
214
|
+
const cursorKey = `${Number(page.nextCursor.updatedAt)}\0${String(page.nextCursor.sessionId || "")}`;
|
|
215
|
+
if (seenCursors.has(cursorKey)) {
|
|
216
|
+
throw new Error("Session catalog page repeated its next cursor");
|
|
217
|
+
}
|
|
218
|
+
seenCursors.add(cursorKey);
|
|
209
219
|
cursor = page.nextCursor;
|
|
210
220
|
}
|
|
211
221
|
return sessions;
|
|
212
222
|
}
|
|
213
223
|
|
|
224
|
+
async function loadSessionCatalog(transport) {
|
|
225
|
+
if (typeof transport.listSessionsPage !== "function") {
|
|
226
|
+
return transport.listSessions();
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
// System roots must not depend on where they happen to fall in the main
|
|
230
|
+
// catalog's recency order. Fetch both server-filtered streams
|
|
231
|
+
// independently, then combine them without changing either stream's
|
|
232
|
+
// order. Every page still goes through the transport's viewer-scoped API.
|
|
233
|
+
const [systemSessions, regularSessions] = await Promise.all([
|
|
234
|
+
loadSessionCatalogPages(transport, "only"),
|
|
235
|
+
loadSessionCatalogPages(transport, "exclude"),
|
|
236
|
+
]);
|
|
237
|
+
const byId = new Set();
|
|
238
|
+
return [...systemSessions, ...regularSessions].filter((session) => {
|
|
239
|
+
const sessionId = String(session?.sessionId || "");
|
|
240
|
+
if (!sessionId || byId.has(sessionId)) return false;
|
|
241
|
+
byId.add(sessionId);
|
|
242
|
+
return true;
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
|
|
214
246
|
function groupModelsByProvider(models = []) {
|
|
215
247
|
const groups = [];
|
|
216
248
|
const byProvider = new Map();
|
|
@@ -2641,7 +2673,7 @@ export class PilotSwarmUiController {
|
|
|
2641
2673
|
return null;
|
|
2642
2674
|
})
|
|
2643
2675
|
: Promise.resolve(null);
|
|
2644
|
-
let sessions = (await
|
|
2676
|
+
let sessions = (await loadSessionCatalog(this.transport)).map(normalizeSessionListRow);
|
|
2645
2677
|
// Folders are NOT merged into the session payload any more: they live
|
|
2646
2678
|
// in their own state slice, so a session refresh cannot drop them. A
|
|
2647
2679
|
// failed fetch is "no news" and simply leaves the slice alone.
|
package/ui/core/src/history.js
CHANGED
|
@@ -630,6 +630,16 @@ function buildChatMessage(event, role) {
|
|
|
630
630
|
? event.data.messageId
|
|
631
631
|
: null;
|
|
632
632
|
const chatRole = deriveChatRole(event, role, text);
|
|
633
|
+
// Model commentary is a durable user-facing progress update. Once it has
|
|
634
|
+
// been recorded as assistant.message it belongs in the transcript like
|
|
635
|
+
// any other agent message; only transient live-turn output and an
|
|
636
|
+
// unclassified/final response use the preview shell. Treating commentary
|
|
637
|
+
// as a preview hid milestone updates behind a collapsed "Agent update"
|
|
638
|
+
// disclosure even though the model had explicitly sent them to the user.
|
|
639
|
+
const assistantPhase = chatRole === "assistant"
|
|
640
|
+
? String(event?.data?.phase || "").trim().toLowerCase()
|
|
641
|
+
: "";
|
|
642
|
+
const isAssistantCommentary = assistantPhase === "commentary";
|
|
633
643
|
return {
|
|
634
644
|
id: `${event.sessionId}:${event.seq}`,
|
|
635
645
|
role: chatRole,
|
|
@@ -640,14 +650,16 @@ function buildChatMessage(event, role) {
|
|
|
640
650
|
...(sender ? { sender } : {}),
|
|
641
651
|
...(attachments.length > 0 ? { attachments } : {}),
|
|
642
652
|
...(messageId ? { messageId } : {}),
|
|
643
|
-
...(chatRole === "assistant" ? {
|
|
653
|
+
...(chatRole === "assistant" ? (isAssistantCommentary ? {
|
|
654
|
+
assistantCommentary: true,
|
|
655
|
+
} : {
|
|
644
656
|
assistantPreview: true,
|
|
645
657
|
responsePending: true,
|
|
646
658
|
responseFinal: false,
|
|
647
659
|
responseCanFinalize: !event?.data?.parentToolCallId && !event?.data?.toolRequests?.length,
|
|
648
660
|
...(typeof event?.data?.reasoningText === "string" && event.data.reasoningText
|
|
649
661
|
? { liveReasoningText: event.data.reasoningText } : {}),
|
|
650
|
-
} : {}),
|
|
662
|
+
}) : {}),
|
|
651
663
|
};
|
|
652
664
|
}
|
|
653
665
|
|
|
@@ -1487,14 +1499,18 @@ export function appendEventToHistory(history, event) {
|
|
|
1487
1499
|
if (liveIndex >= 0) {
|
|
1488
1500
|
const settledAt = Date.now();
|
|
1489
1501
|
const liveStartedAt = Number(liveItem?.liveStartedAt || liveItem?.createdAt) || settledAt;
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1502
|
+
if (!message.assistantCommentary) {
|
|
1503
|
+
// Keep the disclosure identity even for short streams.
|
|
1504
|
+
// Committing an answer must not reset expansion or its scroll
|
|
1505
|
+
// box. Durable commentary deliberately leaves this shell and
|
|
1506
|
+
// becomes an ordinary visible transcript message.
|
|
1507
|
+
Object.assign(message, {
|
|
1508
|
+
streamSettling: true,
|
|
1509
|
+
liveKey: liveItem?.liveKey || message.messageId,
|
|
1510
|
+
liveStartedAt,
|
|
1511
|
+
liveReasoningText: message.liveReasoningText || liveItem?.reasoningText || "",
|
|
1512
|
+
});
|
|
1513
|
+
}
|
|
1498
1514
|
next.chat.splice(Math.min(liveIndex, next.chat.length), 0, message);
|
|
1499
1515
|
}
|
|
1500
1516
|
else next.chat.push(message);
|
package/web/dist/assets/{abnfDiagram-VRR7QNED-NbU-sJuP.js → abnfDiagram-VRR7QNED-DHZAKybB.js}
RENAMED
|
@@ -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-B-y9e9g1.js";import{p as f}from"./chunk-JWPE2WC7-DY6_m3mf.js";import{_ as n,l as o}from"./mermaid.core-AH4mlith.js";import{M as c,b as d}from"./cynefin-VYW2F7L2-DgXpH0xt.js";import"./pilotswarm-CN9fLEV0.js";var v=d().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("*"),l=t?parseInt(t,10):0,m=s?parseInt(s,10):1/0;return{min:l,max:m}}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 c(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}},B={parser:R,db:a,renderer:u,styles:p};export{B 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 on,ab as sn,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 on,ab as sn,ac as fn}from"./mermaid.core-AH4mlith.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};
|