@tea-agent/loop-agent 0.44.0-next.4 → 0.44.0-next.5

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 (77) hide show
  1. package/CHANGELOG.md +6 -1
  2. package/dist/build-stamp.json +3 -3
  3. package/dist/executors/shell-write-guard.js +26 -3
  4. package/dist/shared/file-identity.js +23 -0
  5. package/dist/shared/git-workspace-status.js +480 -0
  6. package/dist/shared/path-safety.js +2 -2
  7. package/dist/worker/console/chat/context-insights.js +723 -0
  8. package/dist/worker/console/chat/repo-browser.js +3 -4
  9. package/dist/worker/console/chat/routes.js +73 -1
  10. package/dist/worker/console/chat/shortcuts.js +7 -0
  11. package/dist/worker/console/static/assets/{abnfDiagram-N423BO3Z-B_lmJjOm.js → abnfDiagram-N423BO3Z-BHuhGM1e.js} +1 -1
  12. package/dist/worker/console/static/assets/{arc-pymM4Qeh.js → arc-CKh5E_sr.js} +1 -1
  13. package/dist/worker/console/static/assets/{architectureDiagram-T3A2C74G-Bw9EPAhi.js → architectureDiagram-T3A2C74G-DizhiBEv.js} +1 -1
  14. package/dist/worker/console/static/assets/{blockDiagram-VBNYF7ZC-C7_oXJp2.js → blockDiagram-VBNYF7ZC-3Neea-Z-.js} +1 -1
  15. package/dist/worker/console/static/assets/{c4Diagram-5PPSVZJV-LnLWDbh8.js → c4Diagram-5PPSVZJV-BCP_Qrgi.js} +1 -1
  16. package/dist/worker/console/static/assets/channel-DxgzA1GF.js +1 -0
  17. package/dist/worker/console/static/assets/{chunk-2GRJ4B5K-BBiu3sCW.js → chunk-2GRJ4B5K-C_wydftK.js} +1 -1
  18. package/dist/worker/console/static/assets/{chunk-2Q5K7J3B-DiXqDQml.js → chunk-2Q5K7J3B-jRPXZbzx.js} +1 -1
  19. package/dist/worker/console/static/assets/{chunk-5RXB4S5H-lmNq9nYk.js → chunk-5RXB4S5H-BLQf2OYO.js} +1 -1
  20. package/dist/worker/console/static/assets/{chunk-5VM5RSS4-boBu74dU.js → chunk-5VM5RSS4-0qRq64rI.js} +1 -1
  21. package/dist/worker/console/static/assets/{chunk-6Q2QTUOP-CjxqoJLQ.js → chunk-6Q2QTUOP-ClMg8xmV.js} +1 -1
  22. package/dist/worker/console/static/assets/{chunk-GF5L2VYU-DL0vQ9MG.js → chunk-GF5L2VYU-Coop2FlL.js} +1 -1
  23. package/dist/worker/console/static/assets/{chunk-JWPE2WC7-DGPqE-O0.js → chunk-JWPE2WC7-CDdO-jPJ.js} +1 -1
  24. package/dist/worker/console/static/assets/{chunk-KBJHAD2P-v4BbT_r2.js → chunk-KBJHAD2P-D8Gkppjl.js} +1 -1
  25. package/dist/worker/console/static/assets/{chunk-RYQCIY6F-Ci0ynvyL.js → chunk-RYQCIY6F-DA9HIySf.js} +1 -1
  26. package/dist/worker/console/static/assets/{chunk-XXDRQBXY-CGsbJoTV.js → chunk-XXDRQBXY-DZNDRX1k.js} +1 -1
  27. package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-BZcm7fs6.js +1 -0
  28. package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-BZcm7fs6.js +1 -0
  29. package/dist/worker/console/static/assets/{cose-bilkent-JH36ORCC-CzoRDEI7.js → cose-bilkent-JH36ORCC-CZ1zGyjq.js} +1 -1
  30. package/dist/worker/console/static/assets/{cynefin-VYW2F7L2-BOwFwbX4.js → cynefin-VYW2F7L2-B8u1_FtM.js} +1 -1
  31. package/dist/worker/console/static/assets/{cynefinDiagram-MW4NZA55-2Cfg451l.js → cynefinDiagram-MW4NZA55-CPBB6lfo.js} +1 -1
  32. package/dist/worker/console/static/assets/{dagre-VZM6K2ZE-DbT0D6Y5.js → dagre-VZM6K2ZE-CG3Eov3E.js} +1 -1
  33. package/dist/worker/console/static/assets/{diagram-7IWD3JNH-Dfd_JoMs.js → diagram-7IWD3JNH-ycI-dOjh.js} +1 -1
  34. package/dist/worker/console/static/assets/{diagram-B4RE2ZJO-DaGm82kh.js → diagram-B4RE2ZJO-Bx_GyQ7Y.js} +1 -1
  35. package/dist/worker/console/static/assets/{diagram-LBJQPF4R-DMoI8Ibc.js → diagram-LBJQPF4R-m0G6mP4d.js} +1 -1
  36. package/dist/worker/console/static/assets/{diagram-Q27KOJAE-BtIFA3aY.js → diagram-Q27KOJAE-DTDJkqcJ.js} +1 -1
  37. package/dist/worker/console/static/assets/{diagram-UB23O5K3-D_2X1DTZ.js → diagram-UB23O5K3-BCfFrG-p.js} +1 -1
  38. package/dist/worker/console/static/assets/{ebnfDiagram-BXEA7PRR-yFW5ZYlZ.js → ebnfDiagram-BXEA7PRR-BIkTNPpp.js} +1 -1
  39. package/dist/worker/console/static/assets/{erDiagram-JOGREHBK-DBXh5Svj.js → erDiagram-JOGREHBK-DTcMWrd2.js} +1 -1
  40. package/dist/worker/console/static/assets/{flowDiagram-UKHOOZJN-C4ycm8KM.js → flowDiagram-UKHOOZJN-BqzDaNQ7.js} +1 -1
  41. package/dist/worker/console/static/assets/{ganttDiagram-PKOTCBZU-qr-_Pekr.js → ganttDiagram-PKOTCBZU-BSl_vGFe.js} +1 -1
  42. package/dist/worker/console/static/assets/{gitGraphDiagram-DS77QQ5N-DzOSLv_A.js → gitGraphDiagram-DS77QQ5N-DCA5HXM6.js} +1 -1
  43. package/dist/worker/console/static/assets/{index-ZtyB6Ol-.css → index-BAEDjTbD.css} +1 -1
  44. package/dist/worker/console/static/assets/{index-PFjB6g6l.js → index-wKEJUaP5.js} +106 -106
  45. package/dist/worker/console/static/assets/{infoDiagram-6WML65LV-C7Hl8D7l.js → infoDiagram-6WML65LV-DvqT18ge.js} +1 -1
  46. package/dist/worker/console/static/assets/{ishikawaDiagram-WSZJBQD7-fBxVlr6t.js → ishikawaDiagram-WSZJBQD7-B6zGKrQ3.js} +1 -1
  47. package/dist/worker/console/static/assets/{journeyDiagram-NVQOT4AX-CoiJEVCl.js → journeyDiagram-NVQOT4AX-BpLQPI9C.js} +1 -1
  48. package/dist/worker/console/static/assets/{kanban-definition-27J2QSJJ-TJXpxNuV.js → kanban-definition-27J2QSJJ-CzIz_-Lt.js} +1 -1
  49. package/dist/worker/console/static/assets/{linear-CjQWz1pG.js → linear-CMQ8Jpp-.js} +1 -1
  50. package/dist/worker/console/static/assets/{mermaid.core-DY9_apIE.js → mermaid.core-BdAMrTf7.js} +5 -5
  51. package/dist/worker/console/static/assets/{mindmap-definition-FAOFIHXS-HB0Id8gM.js → mindmap-definition-FAOFIHXS-hSwF6sOq.js} +1 -1
  52. package/dist/worker/console/static/assets/{pegDiagram-VL7TDLO6-0OSWgr6v.js → pegDiagram-VL7TDLO6-DZdv509B.js} +1 -1
  53. package/dist/worker/console/static/assets/{pieDiagram-7S7Q4E2Y-Cei1GGC2.js → pieDiagram-7S7Q4E2Y-CmD4-b0K.js} +1 -1
  54. package/dist/worker/console/static/assets/{quadrantDiagram-CIZ2JOQS-CDy0Adfu.js → quadrantDiagram-CIZ2JOQS-DtKxNxlS.js} +1 -1
  55. package/dist/worker/console/static/assets/{railroadDiagram-AXF67PYL-BwqzUWwN.js → railroadDiagram-AXF67PYL-D48iIoiS.js} +1 -1
  56. package/dist/worker/console/static/assets/{requirementDiagram-LRYGKXZP-Bif2IBRL.js → requirementDiagram-LRYGKXZP-C3N0K-2p.js} +1 -1
  57. package/dist/worker/console/static/assets/{sankeyDiagram-W5VNT64P-CYIoNMLg.js → sankeyDiagram-W5VNT64P-CACWR-Xs.js} +1 -1
  58. package/dist/worker/console/static/assets/{sequenceDiagram-SI44F4Z6-BDS7Y0aQ.js → sequenceDiagram-SI44F4Z6-g_QgugvZ.js} +1 -1
  59. package/dist/worker/console/static/assets/{sizeCapture-X5ZJPWSS-lZic-_Bp.js → sizeCapture-X5ZJPWSS-DqLoRPGK.js} +1 -1
  60. package/dist/worker/console/static/assets/{stateDiagram-OKZ733FA-WCVlCqSd.js → stateDiagram-OKZ733FA-ES59VgMG.js} +1 -1
  61. package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-DyCIq6jx.js +1 -0
  62. package/dist/worker/console/static/assets/{swimlanes-SLNWSIFB-pGccxTw_.js → swimlanes-SLNWSIFB-fjyLVNWo.js} +2 -2
  63. package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-CsKtO34q.js +8 -0
  64. package/dist/worker/console/static/assets/{timeline-definition-Z64GVDOM-D29RlrQA.js → timeline-definition-Z64GVDOM-Cd5-biKv.js} +1 -1
  65. package/dist/worker/console/static/assets/{vennDiagram-T6HMQDX7-01fEM1NU.js → vennDiagram-T6HMQDX7-CZTu6mPf.js} +1 -1
  66. package/dist/worker/console/static/assets/{wardleyDiagram-T6FBY63Y-C4GeB6dq.js → wardleyDiagram-T6FBY63Y-DR01jjbe.js} +1 -1
  67. package/dist/worker/console/static/assets/{xychartDiagram-ELKLHX3M-BXHrXHps.js → xychartDiagram-ELKLHX3M-iZcuGVGa.js} +1 -1
  68. package/dist/worker/console/static/index.html +2 -2
  69. package/dist/worker/console/static-src/operator-chat/context-insights-store.js +64 -0
  70. package/dist/worker/observe/node-context-insights.js +479 -0
  71. package/docs/README.md +1 -1
  72. package/package.json +1 -1
  73. package/dist/worker/console/static/assets/channel-Ym13M3Lb.js +0 -1
  74. package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-BeFR1wGo.js +0 -1
  75. package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-BeFR1wGo.js +0 -1
  76. package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-cj5UUB6m.js +0 -1
  77. package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-C_Qp6bnh.js +0 -8
@@ -1,6 +1,7 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { constants } from "node:fs";
3
3
  import { lstat, open, readdir } from "node:fs/promises";
4
+ import { sameFileIdentity } from "../../../shared/file-identity.js";
4
5
  import path from "node:path";
5
6
  import { guardReadPath, isSensitivePath, scrubSecrets, } from "./explore-tools.js";
6
7
  const TREE_LIMIT = 500;
@@ -143,8 +144,7 @@ export async function readRepoPreview(repoRoot, rawPath) {
143
144
  throw new RepoBrowserError(403, guardedCode(rechecked.code), "file path changed while it was being opened");
144
145
  const current = await lstat(rechecked.abs);
145
146
  if (current.isSymbolicLink() ||
146
- current.dev !== info.dev ||
147
- current.ino !== info.ino)
147
+ !sameFileIdentity(info, current))
148
148
  throw new RepoBrowserError(403, "OUT_OF_REPO", "file identity changed while it was being opened");
149
149
  size = info.size;
150
150
  const readSize = Math.min(size, TEXT_PREVIEW_LIMIT);
@@ -204,8 +204,7 @@ export async function readRepoHtmlAsset(repoRoot, rawPath) {
204
204
  throw new RepoBrowserError(403, guardedCode(rechecked.code), "file path changed while it was being opened");
205
205
  const current = await lstat(rechecked.abs);
206
206
  if (current.isSymbolicLink() ||
207
- current.dev !== info.dev ||
208
- current.ino !== info.ino)
207
+ !sameFileIdentity(info, current))
209
208
  throw new RepoBrowserError(403, "OUT_OF_REPO", "file identity changed while it was being opened");
210
209
  return {
211
210
  body: await handle.readFile(),
@@ -36,6 +36,7 @@ import { dispatchOperatorAction } from "../operator-actions.js";
36
36
  import { makeHumanGateCard, } from "./human-gate-card.js";
37
37
  import { ContractApplyReceiptStore } from "./contract-apply-receipt-store.js";
38
38
  import { projectTaskContext } from "./context-panel.js";
39
+ import { deriveContextInsights, estimateTokensFromText, } from "./context-insights.js";
39
40
  import { deriveChatSessionTelemetry, deriveChatTurnTelemetry } from "./session-stats.js";
40
41
  import { contractApplyPayloadHash, issueHumanGateToken, verifyHumanGateToken, } from "../human-gate-token.js";
41
42
  import { sendJson } from "../routes.js";
@@ -3208,6 +3209,73 @@ export async function handleRuntimeContext(res, deps, sessionId) {
3208
3209
  }),
3209
3210
  });
3210
3211
  }
3212
+ /**
3213
+ * GET /sessions/:id/context-insights: dsh-context parity dashboard projection.
3214
+ * Folds the persisted event ring (works for idle/restored sessions) and, when
3215
+ * the Pi session is live, anchors the estimate with the runtime snapshot's
3216
+ * system-prompt size + active tool count. Read-only; never fabricates payload
3217
+ * text beyond the bounded previews already stored on the ring.
3218
+ */
3219
+ export async function handleContextInsights(res, deps, sessionId) {
3220
+ const record = await deps.store.get(sessionId);
3221
+ if (!record) {
3222
+ sendJson(res, 404, {
3223
+ ok: false,
3224
+ error: { code: "NOT_FOUND", message: `chat session not found: ${sessionId}` },
3225
+ });
3226
+ return;
3227
+ }
3228
+ await deps.operationLinker.recoverSession(sessionId);
3229
+ const snapshot = deps.events.snapshot(sessionId);
3230
+ let systemPromptChars;
3231
+ let systemPromptPreview;
3232
+ let activeTools;
3233
+ let skillInjections;
3234
+ try {
3235
+ const runtimeSnapshot = await deps.runtime.getRuntimeSnapshot(sessionId, {
3236
+ includeRaw: true,
3237
+ });
3238
+ if (runtimeSnapshot) {
3239
+ systemPromptChars = runtimeSnapshot.systemPrompt.characters;
3240
+ const raw = runtimeSnapshot.systemPrompt.raw ??
3241
+ runtimeSnapshot.systemPrompt.text;
3242
+ if (typeof raw === "string" && raw) {
3243
+ systemPromptPreview = raw.slice(0, 120_000);
3244
+ }
3245
+ activeTools = runtimeSnapshot.activeTools;
3246
+ skillInjections = runtimeSnapshot.skills
3247
+ .slice(0, 50)
3248
+ .map((skill) => ({
3249
+ name: skill.name,
3250
+ tokens: estimateTokensFromText(skill.description ?? skill.name),
3251
+ }));
3252
+ }
3253
+ }
3254
+ catch {
3255
+ // Insights are derived from the durable ring; a live-snapshot miss only
3256
+ // drops the anchor figures / browser static categories, never the dashboard.
3257
+ }
3258
+ // Tool schemas: capabilities registry projection for whitelisted operator
3259
+ // actions, plus Pi builtins active on this session.
3260
+ const schemaTools = buildModelCallableToolSchemas().map((tool) => ({
3261
+ id: tool.toolId,
3262
+ description: tool.description,
3263
+ }));
3264
+ const activeSet = new Set((activeTools ?? []).map((t) => t.toLowerCase()));
3265
+ const builtinTools = (activeTools ?? [])
3266
+ .filter((name) => !schemaTools.some((t) => t.id === name))
3267
+ .map((name) => ({ id: name, description: "" }));
3268
+ const insights = deriveContextInsights(snapshot, {
3269
+ sessionId,
3270
+ ...(systemPromptChars !== undefined ? { systemPromptChars } : {}),
3271
+ ...(systemPromptPreview !== undefined
3272
+ ? { systemPromptPreview }
3273
+ : {}),
3274
+ tools: [...schemaTools, ...builtinTools],
3275
+ ...(skillInjections ? { skillInjections } : {}),
3276
+ });
3277
+ sendJson(res, 200, { ok: true, insights });
3278
+ }
3211
3279
  // Exported for the direct handler-boundary tests (trace binding for
3212
3280
  // vt-route-model-errors); router dispatch behavior is unchanged.
3213
3281
  export async function handleModels(req, res, deps, sessionId) {
@@ -4727,7 +4795,7 @@ async function dispatchChatRequest(req, res, deps, pathname, workspaceScope) {
4727
4795
  await handleSddBingo(req, res, deps, decodeURIComponent(sddBingo[1]));
4728
4796
  return true;
4729
4797
  }
4730
- const m4Route = pathname.match(/^\/api\/operator\/v1\/chat\/sessions\/([^/]+)\/(draft|files|runtime-context|runtime-snapshot|models|model|reload|commands)$/);
4798
+ const m4Route = pathname.match(/^\/api\/operator\/v1\/chat\/sessions\/([^/]+)\/(draft|files|runtime-context|runtime-snapshot|context-insights|models|model|reload|commands)$/);
4731
4799
  if (m4Route) {
4732
4800
  const id = decodeURIComponent(m4Route[1]);
4733
4801
  const route = m4Route[2];
@@ -4747,6 +4815,10 @@ async function dispatchChatRequest(req, res, deps, pathname, workspaceScope) {
4747
4815
  await handleRuntimeSnapshot(req, res, deps, id);
4748
4816
  return true;
4749
4817
  }
4818
+ if (route === "context-insights" && method === "GET") {
4819
+ await handleContextInsights(res, deps, id);
4820
+ return true;
4821
+ }
4750
4822
  if (route === "models" && method === "GET") {
4751
4823
  await handleModels(req, res, deps, id);
4752
4824
  return true;
@@ -42,6 +42,13 @@ export const SHORTCUTS = [
42
42
  action: "reload",
43
43
  source: "operator",
44
44
  },
45
+ {
46
+ command: "/context",
47
+ label: "Context insights",
48
+ description: "打开上下文洞察仪表盘:构成、趋势、事件与文件活动",
49
+ action: "focus:context-insights",
50
+ source: "operator",
51
+ },
45
52
  ];
46
53
  export const SDD_BINGO_SHORTCUT = {
47
54
  command: "/sdd-bingo",
@@ -1 +1 @@
1
- import{g as p,r as u,d as a}from"./chunk-6Q2QTUOP-CjxqoJLQ.js";import{p as f}from"./chunk-JWPE2WC7-DGPqE-O0.js";import{_ as n,l as o}from"./mermaid.core-DY9_apIE.js";import{M as c,b as d}from"./cynefin-VYW2F7L2-BOwFwbX4.js";import"./index-PFjB6g6l.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-ClMg8xmV.js";import{p as f}from"./chunk-JWPE2WC7-CDdO-jPJ.js";import{_ as n,l as o}from"./mermaid.core-BdAMrTf7.js";import{M as c,b as d}from"./cynefin-VYW2F7L2-B8u1_FtM.js";import"./index-wKEJUaP5.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-DY9_apIE.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-BdAMrTf7.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};