@joeyshi12/casper 0.15.2 → 0.15.4

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 (70) hide show
  1. package/README.md +6 -0
  2. package/dist/mcp.js +1 -1
  3. package/dist/server.js +45 -11
  4. package/dist/web/assets/{abnfDiagram-N423BO3Z-B_n8uyBr.js → abnfDiagram-N423BO3Z-DakyBrXm.js} +1 -1
  5. package/dist/web/assets/{arc-Th2CKr3o.js → arc-DSs2NjEc.js} +1 -1
  6. package/dist/web/assets/{architectureDiagram-T3A2C74G-BZmSLUer.js → architectureDiagram-T3A2C74G-zU22qX0G.js} +1 -1
  7. package/dist/web/assets/{blockDiagram-VBNYF7ZC-CibeLiv_.js → blockDiagram-VBNYF7ZC-D-YU0KEh.js} +1 -1
  8. package/dist/web/assets/{c4Diagram-5PPSVZJV-DbsTAtXU.js → c4Diagram-5PPSVZJV-znUKddvh.js} +1 -1
  9. package/dist/web/assets/channel-CJtkudqm.js +1 -0
  10. package/dist/web/assets/{chunk-2GRJ4B5K-Dl6c0LMw.js → chunk-2GRJ4B5K-BcSZhh-L.js} +1 -1
  11. package/dist/web/assets/{chunk-2Q5K7J3B-bMh_B4Qh.js → chunk-2Q5K7J3B-DP8hhxaC.js} +1 -1
  12. package/dist/web/assets/{chunk-5RXB4S5H-Bbl7bcwy.js → chunk-5RXB4S5H-8yqaedk-.js} +1 -1
  13. package/dist/web/assets/{chunk-5VM5RSS4-CSkSO7dW.js → chunk-5VM5RSS4-DtpYRQi9.js} +1 -1
  14. package/dist/web/assets/{chunk-6Q2QTUOP-DuQD0MgE.js → chunk-6Q2QTUOP-Dr2Efztw.js} +1 -1
  15. package/dist/web/assets/{chunk-GF5L2VYU-BMh_nq3J.js → chunk-GF5L2VYU-tz1ADOXm.js} +1 -1
  16. package/dist/web/assets/{chunk-JWPE2WC7-DdO8Zx1U.js → chunk-JWPE2WC7-D0Agbn3V.js} +1 -1
  17. package/dist/web/assets/{chunk-KBJHAD2P-CsLccX_j.js → chunk-KBJHAD2P-Ds5UEEfs.js} +1 -1
  18. package/dist/web/assets/{chunk-RYQCIY6F-BsSNqJkO.js → chunk-RYQCIY6F-D5nf0UrM.js} +1 -1
  19. package/dist/web/assets/{chunk-XXDRQBXY-CtiyOXJt.js → chunk-XXDRQBXY-BM0szAFy.js} +1 -1
  20. package/dist/web/assets/classDiagram-JCYQIIEL-2UVMTtN-.js +1 -0
  21. package/dist/web/assets/classDiagram-v2-OCEON4UE-2UVMTtN-.js +1 -0
  22. package/dist/web/assets/{cose-bilkent-JH36ORCC-BgtAV2Fd.js → cose-bilkent-JH36ORCC-DlBbNDq_.js} +1 -1
  23. package/dist/web/assets/{cynefin-VYW2F7L2-Ca7ZSbi3.js → cynefin-VYW2F7L2-9VHL0nlG.js} +1 -1
  24. package/dist/web/assets/{cynefinDiagram-MW4NZA55-BBRm-mIh.js → cynefinDiagram-MW4NZA55-wB8q5DQ3.js} +1 -1
  25. package/dist/web/assets/{dagre-VZM6K2ZE-jWTve4of.js → dagre-VZM6K2ZE-BKVMWxlX.js} +1 -1
  26. package/dist/web/assets/{diagram-7IWD3JNH-C_5UaLC0.js → diagram-7IWD3JNH-tFLFSGbq.js} +1 -1
  27. package/dist/web/assets/{diagram-B4RE2ZJO-r3eKshdW.js → diagram-B4RE2ZJO-wvB3E98W.js} +1 -1
  28. package/dist/web/assets/{diagram-LBJQPF4R-DJCb5-IZ.js → diagram-LBJQPF4R-G9xyHlao.js} +1 -1
  29. package/dist/web/assets/{diagram-Q27KOJAE-C0fyNUmm.js → diagram-Q27KOJAE-L2oBVFYq.js} +1 -1
  30. package/dist/web/assets/{diagram-UB23O5K3-CkmJ8i2O.js → diagram-UB23O5K3-BfFooN6P.js} +1 -1
  31. package/dist/web/assets/{ebnfDiagram-BXEA7PRR-uflPUDcm.js → ebnfDiagram-BXEA7PRR-CjAqXN08.js} +1 -1
  32. package/dist/web/assets/{erDiagram-JOGREHBK-C0saj6DW.js → erDiagram-JOGREHBK-Dn4Z2761.js} +1 -1
  33. package/dist/web/assets/{flowDiagram-UKHOOZJN-Bp1E4Maa.js → flowDiagram-UKHOOZJN-DGwa0dmn.js} +1 -1
  34. package/dist/web/assets/{ganttDiagram-PKOTCBZU-CETNyNO_.js → ganttDiagram-PKOTCBZU-DHJ-GczS.js} +1 -1
  35. package/dist/web/assets/{gitGraphDiagram-DS77QQ5N-oqbKA2lO.js → gitGraphDiagram-DS77QQ5N-DLglv3lW.js} +1 -1
  36. package/dist/web/assets/{index-C26c56iJ.js → index-14KCvlDZ.js} +1 -1
  37. package/dist/web/assets/index-D0Vzz5GV.js +244 -0
  38. package/dist/web/assets/{index-61Vziwj9.css → index-DNWKm_GR.css} +1 -1
  39. package/dist/web/assets/{infoDiagram-6WML65LV-CW7z8ZWa.js → infoDiagram-6WML65LV-bdHFhrwE.js} +1 -1
  40. package/dist/web/assets/{ishikawaDiagram-WSZJBQD7-C0kuBPjZ.js → ishikawaDiagram-WSZJBQD7-jAr1MKpS.js} +1 -1
  41. package/dist/web/assets/{journeyDiagram-NVQOT4AX-CPCmHLk6.js → journeyDiagram-NVQOT4AX-DvBhBloa.js} +1 -1
  42. package/dist/web/assets/{kanban-definition-27J2QSJJ-DsUStweH.js → kanban-definition-27J2QSJJ-DubwpPH6.js} +1 -1
  43. package/dist/web/assets/{linear-CRnudgz4.js → linear-dKGqbR5Q.js} +1 -1
  44. package/dist/web/assets/{mermaid.core-Cy6kt5EZ.js → mermaid.core-C4PgRjNY.js} +4 -4
  45. package/dist/web/assets/{mindmap-definition-FAOFIHXS-BUKfcucb.js → mindmap-definition-FAOFIHXS-B6mdA1Tm.js} +1 -1
  46. package/dist/web/assets/{pegDiagram-VL7TDLO6-Cn7gVo3w.js → pegDiagram-VL7TDLO6-BCfJtGLE.js} +1 -1
  47. package/dist/web/assets/{pieDiagram-7S7Q4E2Y-HBvfT6rK.js → pieDiagram-7S7Q4E2Y-FFGYMW6G.js} +1 -1
  48. package/dist/web/assets/{quadrantDiagram-CIZ2JOQS-CxPy4Buv.js → quadrantDiagram-CIZ2JOQS-DjTYPfPb.js} +1 -1
  49. package/dist/web/assets/{railroadDiagram-AXF67PYL-BESjDTrh.js → railroadDiagram-AXF67PYL-eIMXQZRc.js} +1 -1
  50. package/dist/web/assets/{requirementDiagram-LRYGKXZP-BgjNLZkZ.js → requirementDiagram-LRYGKXZP-BbZF_AvG.js} +1 -1
  51. package/dist/web/assets/{sankeyDiagram-W5VNT64P-Qqk0rPFL.js → sankeyDiagram-W5VNT64P-ef1nmrcw.js} +1 -1
  52. package/dist/web/assets/{sequenceDiagram-SI44F4Z6-_Gp0aiOW.js → sequenceDiagram-SI44F4Z6-CTcZ0S9h.js} +1 -1
  53. package/dist/web/assets/{sizeCapture-X5ZJPWSS-D9itKI4n.js → sizeCapture-X5ZJPWSS-CE9kBifO.js} +1 -1
  54. package/dist/web/assets/{stateDiagram-OKZ733FA-CGTwF0p-.js → stateDiagram-OKZ733FA-2dDgqu9B.js} +1 -1
  55. package/dist/web/assets/stateDiagram-v2-UEYNNEHI-DTDb4pVC.js +1 -0
  56. package/dist/web/assets/{swimlanes-SLNWSIFB-Bhiv693h.js → swimlanes-SLNWSIFB-CdH90qY_.js} +2 -2
  57. package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-pYse4_gV.js +8 -0
  58. package/dist/web/assets/{timeline-definition-Z64GVDOM-Co3UHP7P.js → timeline-definition-Z64GVDOM-Cgx_G2Hj.js} +1 -1
  59. package/dist/web/assets/{vennDiagram-T6HMQDX7-DV0Tvl5O.js → vennDiagram-T6HMQDX7-DQYwQJ21.js} +1 -1
  60. package/dist/web/assets/{wardleyDiagram-T6FBY63Y-CKS8dnE9.js → wardleyDiagram-T6FBY63Y-D1-xqaxE.js} +1 -1
  61. package/dist/web/assets/{xychartDiagram-ELKLHX3M-DCiMwSOf.js → xychartDiagram-ELKLHX3M-DIE_jW87.js} +1 -1
  62. package/dist/web/index.html +2 -2
  63. package/dist/web/sw.js +1 -1
  64. package/package.json +1 -1
  65. package/dist/web/assets/channel-pt_9PQjQ.js +0 -1
  66. package/dist/web/assets/classDiagram-JCYQIIEL-CVQu-nei.js +0 -1
  67. package/dist/web/assets/classDiagram-v2-OCEON4UE-CVQu-nei.js +0 -1
  68. package/dist/web/assets/index-Cev6geBK.js +0 -244
  69. package/dist/web/assets/stateDiagram-v2-UEYNNEHI-DmIHbcG-.js +0 -1
  70. package/dist/web/assets/swimlanesDiagram-ULZ7WXOC-COsV2u9c.js +0 -8
package/README.md CHANGED
@@ -13,6 +13,10 @@ A web client for `kiro-cli`, over its Agent Client Protocol (ACP). Start a long
13
13
  Kiro task and it keeps running server-side; on reconnect the client replays
14
14
  exactly what it missed.
15
15
 
16
+ <p align="center">
17
+ <img src="https://raw.githubusercontent.com/joeyshi12/casper/main/assets/demo.gif" alt="Casper running a task: tool calls grouped into one line, then two subagents reviewing the change" width="100%"/>
18
+ </p>
19
+
16
20
  ## Features
17
21
 
18
22
  - **Sessions** you can create, search, rename and delete. Live ones run in a
@@ -22,6 +26,8 @@ exactly what it missed.
22
26
  calls with their status, input and output.
23
27
  - **File browser** for the session's workspace, previewing text, images and PDFs.
24
28
  HTML renders as a live page, sandboxed, and either can go fullscreen.
29
+ - **Subagents** listed under the call that started them, each opening to its own
30
+ transcript, read back from kiro's session files so they survive a reload.
25
31
  - **Widgets**: the agent calls a `show_widget` tool over MCP and the result renders
26
32
  inline as a live page. Charts, simulations, animated diagrams. Sandboxed, and they
27
33
  can send a message back.
package/dist/mcp.js CHANGED
@@ -369,7 +369,7 @@ function handleMessage(req, version) {
369
369
  }
370
370
 
371
371
  // server/src/mcp/server.ts
372
- var VERSION = true ? "0.15.2" : "dev";
372
+ var VERSION = true ? "0.15.4" : "dev";
373
373
  function runMcpServer() {
374
374
  const rl = createInterface({ input: process.stdin });
375
375
  rl.on("line", (line) => {
package/dist/server.js CHANGED
@@ -1463,6 +1463,25 @@ async function readPersistedSession(sessionId) {
1463
1463
  return null;
1464
1464
  }
1465
1465
  }
1466
+ async function withLastWrite(child) {
1467
+ try {
1468
+ const st = await fs9.stat(path10.join(config.kiroSessionsDir, `${child.sessionId}.jsonl`));
1469
+ const mtime = st.mtime.toISOString();
1470
+ return mtime > child.updatedAt ? { ...child, updatedAt: mtime } : child;
1471
+ } catch {
1472
+ return child;
1473
+ }
1474
+ }
1475
+ async function readChildSession(childSessionId, parentSessionId) {
1476
+ if (!isValidSessionId(childSessionId)) return null;
1477
+ try {
1478
+ const raw = await fs9.readFile(path10.join(config.kiroSessionsDir, `${childSessionId}.json`), "utf8");
1479
+ const j = JSON.parse(raw);
1480
+ return j.parent_session_id === parentSessionId ? await withLastWrite({ ...summarize(j), parentSessionId }) : null;
1481
+ } catch {
1482
+ return null;
1483
+ }
1484
+ }
1466
1485
  async function listChildSessions(parentSessionId) {
1467
1486
  if (!isValidSessionId(parentSessionId)) return [];
1468
1487
  let names;
@@ -1478,7 +1497,7 @@ async function listChildSessions(parentSessionId) {
1478
1497
  const raw = await fs9.readFile(path10.join(config.kiroSessionsDir, n), "utf8");
1479
1498
  const j = JSON.parse(raw);
1480
1499
  if (j.parent_session_id === parentSessionId) {
1481
- out.push({ ...summarize(j), parentSessionId });
1500
+ out.push(await withLastWrite({ ...summarize(j), parentSessionId }));
1482
1501
  }
1483
1502
  } catch {
1484
1503
  }
@@ -1829,6 +1848,9 @@ var init_SessionManager = __esm({
1829
1848
  log;
1830
1849
  store = new ChatStore();
1831
1850
  subagentLinks = new SubagentLinkStore();
1851
+ // Children the title fallback already tried and could not match. Matching hydrates the
1852
+ // whole parent transcript (145 MB in one chat), so each child is tried once per process.
1853
+ unmatchedChildren = /* @__PURE__ */ new Map();
1832
1854
  spawnProcess;
1833
1855
  constructor(log, opts = {}) {
1834
1856
  this.log = log;
@@ -2242,9 +2264,15 @@ ${tail}` : err.message;
2242
2264
  const onDisk = await listChildSessions(sessionId);
2243
2265
  const links = this.subagentLinks.forParent(sessionId);
2244
2266
  const liveIds = new Set(live.map((a) => a.sessionId));
2245
- const unresolved = onDisk.filter((c) => !liveIds.has(c.sessionId) && !links.has(c.sessionId));
2267
+ const tried = this.unmatchedChildren.get(sessionId) ?? /* @__PURE__ */ new Set();
2268
+ const unresolved = onDisk.filter(
2269
+ (c) => !liveIds.has(c.sessionId) && !links.has(c.sessionId) && !tried.has(c.sessionId)
2270
+ );
2246
2271
  const fallback = unresolved.length ? matchSubagentsFallback(subagentCallsIn(await hydrateTranscript(sessionId)), unresolved) : [];
2247
2272
  const fallbackByChild = new Map(fallback.map((m) => [m.sessionId, m]));
2273
+ for (const m of fallback) this.subagentLinks.record(m.sessionId, sessionId, m.toolCallId, m.stageName);
2274
+ for (const c of unresolved) if (!fallbackByChild.has(c.sessionId)) tried.add(c.sessionId);
2275
+ this.unmatchedChildren.set(sessionId, tried);
2248
2276
  const byId = /* @__PURE__ */ new Map();
2249
2277
  for (const child of onDisk) {
2250
2278
  const link = links.get(child.sessionId) ?? fallbackByChild.get(child.sessionId);
@@ -2262,15 +2290,21 @@ ${tail}` : err.message;
2262
2290
  return [...startedThenPending, ...pending];
2263
2291
  }
2264
2292
  /** One subagent's own transcript, hydrated the same way a chat's is. */
2293
+ // Polled while a subagent runs, so it reads only the child's own files.
2265
2294
  async getSubagentDetail(chatId, childSessionId) {
2266
2295
  const parentSessionId = this.sessionIdOf(chatId);
2267
- const subagents = await this.getSubagents(chatId);
2268
- const summary = subagents.find((a) => a.sessionId === childSessionId);
2269
- if (!summary) throw new Error(`Unknown subagent: ${childSessionId}`);
2270
- const onDisk = await listChildSessions(parentSessionId);
2271
- if (!onDisk.some((c) => c.sessionId === childSessionId)) {
2272
- throw new Error(`Unknown subagent: ${childSessionId}`);
2273
- }
2296
+ const child = await readChildSession(childSessionId, parentSessionId);
2297
+ if (!child) throw new Error(`Unknown subagent: ${childSessionId}`);
2298
+ const live = this.sessions.get(parentSessionId)?.subagents.list().find((a) => a.sessionId === childSessionId);
2299
+ const link = this.subagentLinks.forParent(parentSessionId).get(childSessionId);
2300
+ const summary = live ?? {
2301
+ sessionId: childSessionId,
2302
+ stageName: link?.stageName ?? (child.title || childSessionId),
2303
+ toolCallId: link?.toolCallId,
2304
+ status: "completed",
2305
+ createdAt: child.createdAt,
2306
+ updatedAt: child.updatedAt
2307
+ };
2274
2308
  const transcript = showSummaryAsAnswer(await hydrateTranscript(childSessionId));
2275
2309
  return { subagent: summary, transcript };
2276
2310
  }
@@ -4324,7 +4358,7 @@ var init_server2 = __esm({
4324
4358
  "server/src/mcp/server.ts"() {
4325
4359
  "use strict";
4326
4360
  init_protocol();
4327
- VERSION = true ? "0.15.2" : "dev";
4361
+ VERSION = true ? "0.15.4" : "dev";
4328
4362
  }
4329
4363
  });
4330
4364
 
@@ -7704,7 +7738,7 @@ var program = new Command();
7704
7738
  // server/src/cli/program.ts
7705
7739
  init_paths();
7706
7740
  init_settings();
7707
- var VERSION2 = true ? "0.15.2" : "dev";
7741
+ var VERSION2 = true ? "0.15.4" : "dev";
7708
7742
  async function bootstrap() {
7709
7743
  const file = configFilePath();
7710
7744
  const settings = readSettings(file);
@@ -1 +1 @@
1
- import{g as p,r as u,d as a}from"./chunk-6Q2QTUOP-DuQD0MgE.js";import{p as f}from"./chunk-JWPE2WC7-DdO8Zx1U.js";import{_ as n,l as o}from"./mermaid.core-Cy6kt5EZ.js";import{M as c,b as d}from"./cynefin-VYW2F7L2-Ca7ZSbi3.js";import"./index-Cev6geBK.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-6Q2QTUOP-Dr2Efztw.js";import{p as f}from"./chunk-JWPE2WC7-D0Agbn3V.js";import{_ as n,l as o}from"./mermaid.core-C4PgRjNY.js";import{M as c,b as d}from"./cynefin-VYW2F7L2-9VHL0nlG.js";import"./index-D0Vzz5GV.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-Cy6kt5EZ.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-C4PgRjNY.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};