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.
Files changed (68) hide show
  1. package/package.json +2 -2
  2. package/ui/core/src/controller.js +37 -5
  3. package/ui/core/src/history.js +26 -10
  4. package/web/dist/assets/{abnfDiagram-VRR7QNED-NbU-sJuP.js → abnfDiagram-VRR7QNED-DHZAKybB.js} +1 -1
  5. package/web/dist/assets/{arc-CTgrgDMZ.js → arc-Bw0S8L-3.js} +1 -1
  6. package/web/dist/assets/{architectureDiagram-ZJ3FMSHR-ChQoZV9O.js → architectureDiagram-ZJ3FMSHR-CIdYlIBv.js} +1 -1
  7. package/web/dist/assets/{blockDiagram-677ZJIJ3-5PYV29Px.js → blockDiagram-677ZJIJ3-D9PkQfSJ.js} +1 -1
  8. package/web/dist/assets/{c4Diagram-LMCZKHZV-Ck0NT3vh.js → c4Diagram-LMCZKHZV-D9YbJQu6.js} +1 -1
  9. package/web/dist/assets/channel-g-BbN7P5.js +1 -0
  10. package/web/dist/assets/{chunk-2Q5K7J3B-c_yhgLFt.js → chunk-2Q5K7J3B-BTdwvy5p.js} +1 -1
  11. package/web/dist/assets/{chunk-32BRIVSS-C8dmvIWk.js → chunk-32BRIVSS--ow0RNjy.js} +1 -1
  12. package/web/dist/assets/{chunk-5VM5RSS4-gU_WpVuN.js → chunk-5VM5RSS4-DXsS8QVF.js} +1 -1
  13. package/web/dist/assets/{chunk-EX3LRPZG-BUI-N5DT.js → chunk-EX3LRPZG-HKSF2xwD.js} +1 -1
  14. package/web/dist/assets/{chunk-JWPE2WC7-B1dxrl_8.js → chunk-JWPE2WC7-DY6_m3mf.js} +1 -1
  15. package/web/dist/assets/{chunk-MOJQB5TN-i6IlESZJ.js → chunk-MOJQB5TN-B-y9e9g1.js} +1 -1
  16. package/web/dist/assets/{chunk-RYQCIY6F-Dyjo-7_E.js → chunk-RYQCIY6F-UK1vqINl.js} +1 -1
  17. package/web/dist/assets/{chunk-V7JOEXUC-WKUXg6Wl.js → chunk-V7JOEXUC-8KQ7DOjY.js} +1 -1
  18. package/web/dist/assets/{chunk-VR4S4FIN-B0I7PCCm.js → chunk-VR4S4FIN-CkDJLoRb.js} +1 -1
  19. package/web/dist/assets/{chunk-XXDRQBXY-CB7eqrC9.js → chunk-XXDRQBXY-DrvpqdcI.js} +1 -1
  20. package/web/dist/assets/classDiagram-OUVF2IWQ-BFAQi-H9.js +1 -0
  21. package/web/dist/assets/classDiagram-v2-EOCWNBFH-BFAQi-H9.js +1 -0
  22. package/web/dist/assets/{cose-bilkent-JH36ORCC-CRcAifyt.js → cose-bilkent-JH36ORCC-BZimjiO7.js} +1 -1
  23. package/web/dist/assets/{cynefin-VYW2F7L2-KpsZYLz7.js → cynefin-VYW2F7L2-DgXpH0xt.js} +1 -1
  24. package/web/dist/assets/{cynefinDiagram-TSTJHNR4-CUOwCgQT.js → cynefinDiagram-TSTJHNR4-GhvhOnjl.js} +1 -1
  25. package/web/dist/assets/{dagre-VKFMJZFB-CDmvCqlf.js → dagre-VKFMJZFB-_likmiuO.js} +1 -1
  26. package/web/dist/assets/{diagram-FQU43EPY-Bd-9Pin4.js → diagram-FQU43EPY-DQctGbIk.js} +1 -1
  27. package/web/dist/assets/{diagram-G47NLZAW-C928DZyw.js → diagram-G47NLZAW-FVvT1dxp.js} +1 -1
  28. package/web/dist/assets/{diagram-NH7WQ7WH-CA9dPxkC.js → diagram-NH7WQ7WH-Xg1HHD3c.js} +1 -1
  29. package/web/dist/assets/{diagram-OA4YK3LP-DTa7sqVK.js → diagram-OA4YK3LP-BcQiRMrv.js} +1 -1
  30. package/web/dist/assets/{diagram-WEI45ONY-BJBIP-D1.js → diagram-WEI45ONY-PB48iGxu.js} +1 -1
  31. package/web/dist/assets/{ebnfDiagram-CCIWWBDH-Bt5TMBFP.js → ebnfDiagram-CCIWWBDH-Cl3gvgL7.js} +1 -1
  32. package/web/dist/assets/{erDiagram-Q63AITRT-CGCT386q.js → erDiagram-Q63AITRT-BqTsMK1r.js} +1 -1
  33. package/web/dist/assets/{flowDiagram-23GEKE2U-piGmqFTD.js → flowDiagram-23GEKE2U-Defo8220.js} +1 -1
  34. package/web/dist/assets/{ganttDiagram-NO4QXBWP-sTZX4MDv.js → ganttDiagram-NO4QXBWP-BNS92EuV.js} +1 -1
  35. package/web/dist/assets/{gitGraphDiagram-IHSO6WYX-CIX_plag.js → gitGraphDiagram-IHSO6WYX-BY0WUkLV.js} +1 -1
  36. package/web/dist/assets/{index-DJdpW65K.js → index-Q9Y44qRk.js} +4 -4
  37. package/web/dist/assets/{infoDiagram-FWYZ7A6U-BY6RX8Bs.js → infoDiagram-FWYZ7A6U-DAslesLk.js} +1 -1
  38. package/web/dist/assets/{ishikawaDiagram-FXEZZL3T-B4g65LaR.js → ishikawaDiagram-FXEZZL3T-DRqAlMhQ.js} +1 -1
  39. package/web/dist/assets/{journeyDiagram-5HDEW3XC-DiwwLX0E.js → journeyDiagram-5HDEW3XC-cZgLClOz.js} +1 -1
  40. package/web/dist/assets/{kanban-definition-HUTT4EX6-PV3grfRZ.js → kanban-definition-HUTT4EX6-CE-eXw4K.js} +1 -1
  41. package/web/dist/assets/{linear-iVmwVooP.js → linear-CZiOQoKS.js} +1 -1
  42. package/web/dist/assets/{mermaid.core-DA6LjVrx.js → mermaid.core-AH4mlith.js} +4 -4
  43. package/web/dist/assets/{mindmap-definition-LN4V7U3C-B8DdylnB.js → mindmap-definition-LN4V7U3C-BNghnDqd.js} +1 -1
  44. package/web/dist/assets/{papaparse.min-Di5Rv4lz.js → papaparse.min-DVijrOyx.js} +1 -1
  45. package/web/dist/assets/{pegDiagram-2B236MQR-DK6ek_Cq.js → pegDiagram-2B236MQR-DoRp-9Zp.js} +1 -1
  46. package/web/dist/assets/{pieDiagram-ENE6RG2P-CwWXjXa0.js → pieDiagram-ENE6RG2P-H2Em8U8J.js} +1 -1
  47. package/web/dist/assets/{pilotswarm-O-aSs9ka.js → pilotswarm-CN9fLEV0.js} +62 -62
  48. package/web/dist/assets/{quadrantDiagram-ABIIQ3AL-MuZAfQD9.js → quadrantDiagram-ABIIQ3AL-CvUqxqnx.js} +1 -1
  49. package/web/dist/assets/{railroadDiagram-RFXS5EU6-YzlcnUR9.js → railroadDiagram-RFXS5EU6-tQwCHxpV.js} +1 -1
  50. package/web/dist/assets/{requirementDiagram-TGXJPOKE-DXaoYkWC.js → requirementDiagram-TGXJPOKE-D2wuvVrI.js} +1 -1
  51. package/web/dist/assets/{sankeyDiagram-HTMAVEWB-e01Ywh1-.js → sankeyDiagram-HTMAVEWB-C4r0hO5k.js} +1 -1
  52. package/web/dist/assets/{sequenceDiagram-DBY2YBRQ-Bejd9pkv.js → sequenceDiagram-DBY2YBRQ-DCdGwm9a.js} +1 -1
  53. package/web/dist/assets/{sizeCapture-X5ZJPWSS-BH28GjqM.js → sizeCapture-X5ZJPWSS-BjRhMoeP.js} +1 -1
  54. package/web/dist/assets/{stateDiagram-2N3HPSRC-BLxFqrZK.js → stateDiagram-2N3HPSRC-biMUw9ek.js} +1 -1
  55. package/web/dist/assets/stateDiagram-v2-6OUMAXLB-Dv--LJTg.js +1 -0
  56. package/web/dist/assets/{swimlanes-5IMT3BWC-DeRawRPH.js → swimlanes-5IMT3BWC-BItVHm4_.js} +2 -2
  57. package/web/dist/assets/swimlanesDiagram-G3AALYLV-CEULUMiK.js +8 -0
  58. package/web/dist/assets/{timeline-definition-FHXFAJF6-DebMYWDr.js → timeline-definition-FHXFAJF6-CC39ef73.js} +1 -1
  59. package/web/dist/assets/{vennDiagram-L72KCM5P-BNzkPXmx.js → vennDiagram-L72KCM5P-BgmPqz-h.js} +1 -1
  60. package/web/dist/assets/{wardleyDiagram-EHGQE667-Bd1oZn0h.js → wardleyDiagram-EHGQE667-DRNFO87H.js} +1 -1
  61. package/web/dist/assets/{xychartDiagram-FW5EYKEG-BoBQQKWe.js → xychartDiagram-FW5EYKEG-D_VfxQSu.js} +1 -1
  62. package/web/dist/index.html +2 -2
  63. package/web/runtime.js +15 -4
  64. package/web/dist/assets/channel-ClSHF2hk.js +0 -1
  65. package/web/dist/assets/classDiagram-OUVF2IWQ-2Il7FbX1.js +0 -1
  66. package/web/dist/assets/classDiagram-v2-EOCWNBFH-2Il7FbX1.js +0 -1
  67. package/web/dist/assets/stateDiagram-v2-6OUMAXLB-DRVfj4NC.js +0 -1
  68. 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.74",
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.74",
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 loadSessionCatalogPageWindow(transport) {
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
- for (let pageIndex = 0; pageIndex < SESSION_REFRESH_MAX_PAGES; pageIndex += 1) {
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 || !page?.nextCursor) break;
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 loadSessionCatalogPageWindow(this.transport)).map(normalizeSessionListRow);
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.
@@ -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
- // Keep the disclosure identity even for short streams. Committing
1491
- // an interim message must not reset expansion or its scroll box.
1492
- Object.assign(message, {
1493
- streamSettling: true,
1494
- liveKey: liveItem?.liveKey || message.messageId,
1495
- liveStartedAt,
1496
- liveReasoningText: message.liveReasoningText || liveItem?.reasoningText || "",
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);
@@ -1 +1 @@
1
- import{g as p,r as u,d as a}from"./chunk-MOJQB5TN-i6IlESZJ.js";import{p as f}from"./chunk-JWPE2WC7-B1dxrl_8.js";import{_ as n,l as o}from"./mermaid.core-DA6LjVrx.js";import{M as c,b as d}from"./cynefin-VYW2F7L2-KpsZYLz7.js";import"./pilotswarm-O-aSs9ka.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
+ 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-DA6LjVrx.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};
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};