create-workframe 0.1.2 → 0.1.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 (94) hide show
  1. package/README.md +14 -1
  2. package/SECURITY.md +3 -3
  3. package/bin/create-workframe.js +3 -3
  4. package/package.json +1 -1
  5. package/scripts/bundle-workframe-ui.mjs +13 -7
  6. package/workframe-api/README.md +3 -5
  7. package/workframe-api/concierge.py +173 -0
  8. package/workframe-api/llm_error_glossary.py +236 -0
  9. package/workframe-api/llm_proxy.py +3 -0
  10. package/workframe-api/openrouter_catalog.py +114 -0
  11. package/workframe-api/package.json +1 -1
  12. package/workframe-api/server.py +178 -50
  13. package/workframe-api/updates.py +107 -18
  14. package/workframe-supervisor/server.py +75 -2
  15. package/workframe-ui/public/assets/{arc-COAT3laO.js → arc-BskqxLmE.js} +1 -1
  16. package/workframe-ui/public/assets/architecture-7EHR7CIX-DOxsUI33.js +1 -0
  17. package/workframe-ui/public/assets/{architectureDiagram-3BPJPVTR-BFjWV24l.js → architectureDiagram-3BPJPVTR-B3eGdqvq.js} +1 -1
  18. package/workframe-ui/public/assets/{blockDiagram-GPEHLZMM-DSQLPfrj.js → blockDiagram-GPEHLZMM-CzFZG7uX.js} +1 -1
  19. package/workframe-ui/public/assets/{c4Diagram-AAUBKEIU-DKEHv1t2.js → c4Diagram-AAUBKEIU-BS-gGyCH.js} +1 -1
  20. package/workframe-ui/public/assets/channel-Baa20pIs.js +1 -0
  21. package/workframe-ui/public/assets/{chunk-2J33WTMH-DHZg-DUi.js → chunk-2J33WTMH-Cjvqf7c9.js} +1 -1
  22. package/workframe-ui/public/assets/{chunk-3OPIFGDE-BB-OYTfp.js → chunk-3OPIFGDE--eUuL8AK.js} +1 -1
  23. package/workframe-ui/public/assets/{chunk-4BX2VUAB-C93q0YIm.js → chunk-4BX2VUAB-s9lHUFKL.js} +1 -1
  24. package/workframe-ui/public/assets/{chunk-55IACEB6-MAYniqik.js → chunk-55IACEB6-D1McA5nz.js} +1 -1
  25. package/workframe-ui/public/assets/{chunk-5ZQYHXKU-ChgN6YJs.js → chunk-5ZQYHXKU-DIstLfU2.js} +1 -1
  26. package/workframe-ui/public/assets/{chunk-727SXJPM-B_FYwdAv.js → chunk-727SXJPM-Cd0GD2CO.js} +1 -1
  27. package/workframe-ui/public/assets/{chunk-AQP2D5EJ-1_Hw_h1A.js → chunk-AQP2D5EJ-gc5Ra6G4.js} +1 -1
  28. package/workframe-ui/public/assets/{chunk-BSJP7CBP-CFiDQ1Rv.js → chunk-BSJP7CBP-Cg5QfihJ.js} +1 -1
  29. package/workframe-ui/public/assets/{chunk-CSCIHK7Q-DZ9UMTlB.js → chunk-CSCIHK7Q-D_gobbhY.js} +1 -1
  30. package/workframe-ui/public/assets/{chunk-FMBD7UC4-DlMlyFgw.js → chunk-FMBD7UC4-B6eLY9_d.js} +1 -1
  31. package/workframe-ui/public/assets/{chunk-KSCS5N6A-DHXtQ_Hf.js → chunk-KSCS5N6A-BGroAeW2.js} +1 -1
  32. package/workframe-ui/public/assets/{chunk-L5ZTLDWV-CuQzg-QG.js → chunk-L5ZTLDWV-34xv7WgT.js} +1 -1
  33. package/workframe-ui/public/assets/{chunk-LZXEDZCA-BHzjzCGg.js → chunk-LZXEDZCA-XJBctFZw.js} +2 -2
  34. package/workframe-ui/public/assets/{chunk-ND2GUHAM-DHXx05n2.js → chunk-ND2GUHAM-nTOZpln8.js} +1 -1
  35. package/workframe-ui/public/assets/{chunk-NZK2D7GU-CV5pmDM_.js → chunk-NZK2D7GU-BBrzcaPH.js} +1 -1
  36. package/workframe-ui/public/assets/{chunk-O5CBEL6O-6tkCHxsV.js → chunk-O5CBEL6O-Cntncx6L.js} +1 -1
  37. package/workframe-ui/public/assets/chunk-QZHKN3VN-B7tPxs4H.js +1 -0
  38. package/workframe-ui/public/assets/chunk-WU5MYG2G-Dvh2By1o.js +1 -0
  39. package/workframe-ui/public/assets/{chunk-XPW4576I-BClwIiCp.js → chunk-XPW4576I-DSbtd0cg.js} +1 -1
  40. package/workframe-ui/public/assets/classDiagram-4FO5ZUOK-BljHyDzF.js +1 -0
  41. package/workframe-ui/public/assets/classDiagram-v2-Q7XG4LA2-BljHyDzF.js +1 -0
  42. package/workframe-ui/public/assets/{cose-bilkent-S5V4N54A-DOrGV6DQ.js → cose-bilkent-S5V4N54A-lmYstEMQ.js} +1 -1
  43. package/workframe-ui/public/assets/{dagre-BM42HDAG-DXTPvJkX.js → dagre-BM42HDAG-Bdkbdul2.js} +1 -1
  44. package/workframe-ui/public/assets/{diagram-2AECGRRQ-xX_v-pbf.js → diagram-2AECGRRQ-Clb9kSXe.js} +1 -1
  45. package/workframe-ui/public/assets/{diagram-5GNKFQAL-Cd2pXbBe.js → diagram-5GNKFQAL-BApg0yec.js} +1 -1
  46. package/workframe-ui/public/assets/{diagram-KO2AKTUF-Df3XvUtk.js → diagram-KO2AKTUF-peZjDRV6.js} +1 -1
  47. package/workframe-ui/public/assets/{diagram-LMA3HP47-CsijIPaD.js → diagram-LMA3HP47-DZm_1pjc.js} +1 -1
  48. package/workframe-ui/public/assets/{diagram-OG6HWLK6-aq5fmfHd.js → diagram-OG6HWLK6-DP_N6fYL.js} +1 -1
  49. package/workframe-ui/public/assets/{dist-D1c0mkbB.js → dist-CqP43hXK.js} +1 -1
  50. package/workframe-ui/public/assets/{erDiagram-TEJ5UH35-DnFysVRY.js → erDiagram-TEJ5UH35-Blfs6kLv.js} +1 -1
  51. package/workframe-ui/public/assets/eventmodeling-FCH6USID-C4xwO6dx.js +1 -0
  52. package/workframe-ui/public/assets/{flowDiagram-I6XJVG4X-C6Ebi3su.js → flowDiagram-I6XJVG4X-CcmMOkwH.js} +1 -1
  53. package/workframe-ui/public/assets/{ganttDiagram-6RSMTGT7-BQXQtUpa.js → ganttDiagram-6RSMTGT7-ByoO3dF7.js} +1 -1
  54. package/workframe-ui/public/assets/{gitGraph-WXDBUCRP-Dt0zIs_M.js → gitGraph-WXDBUCRP-DCyTpmPs.js} +1 -1
  55. package/workframe-ui/public/assets/{gitGraphDiagram-PVQCEYII-BF8gHzRn.js → gitGraphDiagram-PVQCEYII-CvLYB55b.js} +1 -1
  56. package/workframe-ui/public/assets/index-BIfRGM8p.js +133 -0
  57. package/workframe-ui/public/assets/{info-J43DQDTF-CSmszQJT.js → info-J43DQDTF-CfSRIfOI.js} +1 -1
  58. package/workframe-ui/public/assets/{infoDiagram-5YYISTIA-CVTKGW6p.js → infoDiagram-5YYISTIA-DwS44DS6.js} +1 -1
  59. package/workframe-ui/public/assets/{ishikawaDiagram-YF4QCWOH-Z8pT09Lv.js → ishikawaDiagram-YF4QCWOH-MRlyodyU.js} +1 -1
  60. package/workframe-ui/public/assets/{journeyDiagram-JHISSGLW-r3wD68_T.js → journeyDiagram-JHISSGLW-sq7awk87.js} +1 -1
  61. package/workframe-ui/public/assets/{kanban-definition-UN3LZRKU-Il8VglqN.js → kanban-definition-UN3LZRKU-CH6HbcWu.js} +1 -1
  62. package/workframe-ui/public/assets/{line-oyjpfz2A.js → line-DRBjFmUW.js} +1 -1
  63. package/workframe-ui/public/assets/{linear-Cf7p5tVp.js → linear-BR0LunjE.js} +1 -1
  64. package/workframe-ui/public/assets/{mermaid-parser.core-YmbZ-AfY.js → mermaid-parser.core-Cl1GjHkT.js} +2 -2
  65. package/workframe-ui/public/assets/{mermaid.core-BFdCAqCo.js → mermaid.core-DsiKK1kE.js} +3 -3
  66. package/workframe-ui/public/assets/{mindmap-definition-RKZ34NQL-Cy2iCtEl.js → mindmap-definition-RKZ34NQL-DBvi3OpW.js} +1 -1
  67. package/workframe-ui/public/assets/{packet-YPE3B663-DwOBZL6K.js → packet-YPE3B663-CPDgtUHg.js} +1 -1
  68. package/workframe-ui/public/assets/{pie-LRSECV5Y-04PPhnKK.js → pie-LRSECV5Y-BXJIPPDm.js} +1 -1
  69. package/workframe-ui/public/assets/{pieDiagram-4H26LBE5-LxIpgHqi.js → pieDiagram-4H26LBE5-CZwLEK-o.js} +1 -1
  70. package/workframe-ui/public/assets/{quadrantDiagram-W4KKPZXB-0nBYfYm4.js → quadrantDiagram-W4KKPZXB-B65bEUIQ.js} +1 -1
  71. package/workframe-ui/public/assets/{radar-GUYGQ44K-D2-vBqps.js → radar-GUYGQ44K-vXHkZzRK.js} +1 -1
  72. package/workframe-ui/public/assets/{requirementDiagram-4Y6WPE33-DbuU0nlu.js → requirementDiagram-4Y6WPE33-BGWdvDfG.js} +1 -1
  73. package/workframe-ui/public/assets/{sankeyDiagram-5OEKKPKP-B2hQ6B2x.js → sankeyDiagram-5OEKKPKP-BT2oC8dV.js} +1 -1
  74. package/workframe-ui/public/assets/{sequenceDiagram-3UESZ5HK-BBrU30e1.js → sequenceDiagram-3UESZ5HK-45yj0Wtx.js} +1 -1
  75. package/workframe-ui/public/assets/{src-BJEDmV70.js → src-D-P8U2PB.js} +1 -1
  76. package/workframe-ui/public/assets/{stateDiagram-AJRCARHV-7FGO4kkH.js → stateDiagram-AJRCARHV-SBrBJBZG.js} +1 -1
  77. package/workframe-ui/public/assets/stateDiagram-v2-BHNVJYJU-B3im3So2.js +1 -0
  78. package/workframe-ui/public/assets/{timeline-definition-PNZ67QCA-ptDm4rCN.js → timeline-definition-PNZ67QCA-DegmxXXj.js} +1 -1
  79. package/workframe-ui/public/assets/{treeView-BLDUP644-CS6Z-0q8.js → treeView-BLDUP644-BVy7CsCj.js} +1 -1
  80. package/workframe-ui/public/assets/{treemap-LRROVOQU-DqV4Y2VA.js → treemap-LRROVOQU-BD5Kb74J.js} +1 -1
  81. package/workframe-ui/public/assets/{vennDiagram-CIIHVFJN-C0UrZJYt.js → vennDiagram-CIIHVFJN-hwAkNbl3.js} +1 -1
  82. package/workframe-ui/public/assets/{wardley-L42UT6IY-bNDN3_Sa.js → wardley-L42UT6IY-CBMPT8Y1.js} +1 -1
  83. package/workframe-ui/public/assets/{wardleyDiagram-YWT4CUSO-jWiJsefM.js → wardleyDiagram-YWT4CUSO-DXqihVlE.js} +1 -1
  84. package/workframe-ui/public/assets/{xychartDiagram-2RQKCTM6-Dsh_fLCy.js → xychartDiagram-2RQKCTM6-Cbb4LBzj.js} +1 -1
  85. package/workframe-ui/public/index.html +1 -1
  86. package/workframe-ui/public/assets/architecture-7EHR7CIX-DUyH3hWG.js +0 -1
  87. package/workframe-ui/public/assets/channel-g7r_RGaY.js +0 -1
  88. package/workframe-ui/public/assets/chunk-QZHKN3VN-C5UQehWY.js +0 -1
  89. package/workframe-ui/public/assets/chunk-WU5MYG2G-DhWllrI8.js +0 -1
  90. package/workframe-ui/public/assets/classDiagram-4FO5ZUOK-BBM_8T8E.js +0 -1
  91. package/workframe-ui/public/assets/classDiagram-v2-Q7XG4LA2-BBM_8T8E.js +0 -1
  92. package/workframe-ui/public/assets/eventmodeling-FCH6USID-Ci8mdb44.js +0 -1
  93. package/workframe-ui/public/assets/index-lRpzpNPT.js +0 -133
  94. package/workframe-ui/public/assets/stateDiagram-v2-BHNVJYJU-DLTSizMg.js +0 -1
@@ -60,7 +60,7 @@ def _exec_targets_runtime_profile_secrets(cmd: list[str], acting_profile: str =
60
60
  return exec_blocked_for_profile(cmd, acting_profile)
61
61
 
62
62
 
63
- def _stack_apply(target: str) -> dict[str, Any]:
63
+ def _stack_apply(target: str, *, workframe_version: str = "") -> dict[str, Any]:
64
64
  target = str(target or "all").strip().lower()
65
65
  if target == "gateway-restart":
66
66
  script = SCRIPTS_DIR / "restart-gateway-hermes.sh"
@@ -90,6 +90,11 @@ def _stack_apply(target: str) -> dict[str, Any]:
90
90
  if not p.is_file():
91
91
  raise ValueError("update_script_missing:workframe")
92
92
  scripts.append(p)
93
+ env = os.environ.copy()
94
+ version = str(workframe_version or "").strip()
95
+ if version and target in {"workframe", "all"}:
96
+ env["WORKFRAME_UPDATE_ALLOW_NPM"] = "1"
97
+ env["WORKFRAME_UPDATE_VERSION"] = version
93
98
  logs: list[str] = []
94
99
  for script in scripts:
95
100
  proc = subprocess.run(
@@ -97,6 +102,7 @@ def _stack_apply(target: str) -> dict[str, Any]:
97
102
  capture_output=True,
98
103
  text=True,
99
104
  timeout=900,
105
+ env=env,
100
106
  cwd=str(COMPOSE_DIR) if COMPOSE_DIR.is_dir() else None,
101
107
  )
102
108
  logs.append(f"=== {script} (exit {proc.returncode}) ===\n{proc.stdout}\n{proc.stderr}")
@@ -105,6 +111,47 @@ def _stack_apply(target: str) -> dict[str, Any]:
105
111
  return {"ok": True, "target": target, "log": "\n".join(logs)[-12000:]}
106
112
 
107
113
 
114
+ _DEVICE_OAUTH_AUTH_IDS = frozenset({"openai-codex", "nous"})
115
+
116
+
117
+ def _gateway_image_digest() -> tuple[str, str]:
118
+ status, data = _docker_request("GET", f"/containers/{urllib.parse.quote(GATEWAY_CONTAINER_NAME, safe='')}/json")
119
+ if status != 200 or not isinstance(data, dict):
120
+ return "", ""
121
+ image_id = str(data.get("Image") or "")
122
+ ist, idata = _docker_request("GET", f"/images/{image_id}/json")
123
+ digest = ""
124
+ ref = os.environ.get("WORKFRAME_HERMES_IMAGE", "nousresearch/hermes-agent")
125
+ if ist == 200 and isinstance(idata, dict):
126
+ digests = idata.get("RepoDigests") or []
127
+ if digests:
128
+ digest = str(digests[0]).split("@")[-1]
129
+ tags = idata.get("RepoTags") or []
130
+ if tags:
131
+ ref = str(tags[0])
132
+ return digest, ref
133
+
134
+
135
+ def _hermes_device_oauth_start(home: str, hermes_auth_id: str, log_path: str) -> tuple[int, str]:
136
+ home = str(home or "").strip()
137
+ hermes_auth_id = str(hermes_auth_id or "").strip()
138
+ log_path = str(log_path or "").strip()
139
+ if not home.startswith("/opt/data/profiles/") or not log_path.startswith("/opt/data/profiles/"):
140
+ raise ValueError("invalid profile home")
141
+ if hermes_auth_id not in _DEVICE_OAUTH_AUTH_IDS:
142
+ raise ValueError("invalid_device_oauth_provider")
143
+ auth_cmd = " ".join(shlex.quote(part) for part in ["auth", "add", hermes_auth_id])
144
+ shell = (
145
+ f"mkdir -p {shlex.quote(home)}; "
146
+ f"chown -R hermes:hermes {shlex.quote(home)}; "
147
+ f"su -s /bin/sh hermes -c "
148
+ f"'export HERMES_HOME={shlex.quote(home)} HOME={shlex.quote(home)}; "
149
+ f"cd {shlex.quote(home)}; "
150
+ f"/opt/hermes/bin/hermes {auth_cmd} >> {shlex.quote(log_path)} 2>&1'"
151
+ )
152
+ return _docker_exec_detached(GATEWAY_CONTAINER_NAME, ["sh", "-lc", shell])
153
+
154
+
108
155
  def _host_setup_public_https(host: str, port: int) -> dict[str, Any]:
109
156
  host = str(host or "").strip().lower()
110
157
  if not re.fullmatch(r"[a-z0-9](?:[a-z0-9.-]*[a-z0-9])?", host, re.IGNORECASE):
@@ -666,6 +713,17 @@ class Handler(BaseHTTPRequestHandler):
666
713
  200,
667
714
  {"ok": True, "profiles": profiles, "generated_at": time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime())},
668
715
  )
716
+ if path == "/v1/gateway.image":
717
+ digest, ref = _gateway_image_digest()
718
+ return self._json(
719
+ 200,
720
+ {
721
+ "ok": bool(digest or ref),
722
+ "digest": digest,
723
+ "ref": ref,
724
+ "container": GATEWAY_CONTAINER_NAME,
725
+ },
726
+ )
669
727
  return self._json(404, {"ok": False, "error": "not found"})
670
728
 
671
729
  def do_POST(self) -> None:
@@ -721,8 +779,23 @@ class Handler(BaseHTTPRequestHandler):
721
779
  return self._json(500, {"ok": False, "error": str(exc)})
722
780
  if path == "/v1/stack.apply":
723
781
  target = str(body.get("target") or "all").strip().lower()
782
+ workframe_version = str(body.get("workframe_version") or "").strip()
783
+ try:
784
+ return self._json(200, _stack_apply(target, workframe_version=workframe_version))
785
+ except ValueError as exc:
786
+ return self._json(400, {"ok": False, "error": str(exc)})
787
+ except Exception as exc: # noqa: BLE001
788
+ return self._json(500, {"ok": False, "error": str(exc)})
789
+ if path == "/v1/hermes.device_oauth_start":
790
+ home = str(body.get("home") or "").strip()
791
+ hermes_auth_id = str(body.get("hermes_auth_id") or "").strip()
792
+ log_path = str(body.get("log_path") or "").strip()
724
793
  try:
725
- return self._json(200, _stack_apply(target))
794
+ code, out = _hermes_device_oauth_start(home, hermes_auth_id, log_path)
795
+ return self._json(
796
+ 200,
797
+ {"ok": code == 0, "exit_code": code, "output": out, "detached": True},
798
+ )
726
799
  except ValueError as exc:
727
800
  return self._json(400, {"ok": False, "error": str(exc)})
728
801
  except Exception as exc: # noqa: BLE001
@@ -1 +1 @@
1
- import{n as e,t}from"./path-BWPyau1x.js";import{a as n,c as r,d as i,f as a,i as o,l as s,m as c,n as l,o as u,p as d,r as f,u as p}from"./dist-D1c0mkbB.js";function m(e){return e.innerRadius}function h(e){return e.outerRadius}function g(e){return e.startAngle}function _(e){return e.endAngle}function v(e){return e&&e.padAngle}function y(e,t,n,r,i,a,o,s){var c=n-e,l=r-t,u=o-i,d=s-a,f=d*c-u*l;if(!(f*f<1e-12))return f=(u*(t-a)-d*(e-i))/f,[e+f*c,t+f*l]}function b(e,t,n,r,i,a,o){var c=e-n,l=t-r,u=(o?a:-a)/d(c*c+l*l),f=u*l,p=-u*c,m=e+f,h=t+p,g=n+f,_=r+p,v=(m+g)/2,y=(h+_)/2,b=g-m,x=_-h,S=b*b+x*x,C=i-a,w=m*_-g*h,T=(x<0?-1:1)*d(s(0,C*C*S-w*w)),E=(w*x-b*T)/S,D=(-w*b-x*T)/S,O=(w*x+b*T)/S,k=(-w*b+x*T)/S,A=E-v,j=D-y,M=O-v,N=k-y;return A*A+j*j>M*M+N*N&&(E=O,D=k),{cx:E,cy:D,x01:-f,y01:-p,x11:E*(i/C-1),y11:D*(i/C-1)}}function x(){var s=m,x=h,S=e(0),C=null,w=g,T=_,E=v,D=null,O=t(k);function k(){var e,t,m=+s.apply(this,arguments),h=+x.apply(this,arguments),g=w.apply(this,arguments)-r,_=T.apply(this,arguments)-r,v=l(_-g),k=_>g;if(D||=e=O(),h<m&&(t=h,h=m,m=t),!(h>1e-12))D.moveTo(0,0);else if(v>c-1e-12)D.moveTo(h*u(g),h*a(g)),D.arc(0,0,h,g,_,!k),m>1e-12&&(D.moveTo(m*u(_),m*a(_)),D.arc(0,0,m,_,g,k));else{var A=g,j=_,M=g,N=_,P=v,F=v,I=E.apply(this,arguments)/2,L=I>1e-12&&(C?+C.apply(this,arguments):d(m*m+h*h)),R=p(l(h-m)/2,+S.apply(this,arguments)),z=R,B=R,V,H;if(L>1e-12){var U=o(L/m*a(I)),W=o(L/h*a(I));(P-=U*2)>1e-12?(U*=k?1:-1,M+=U,N-=U):(P=0,M=N=(g+_)/2),(F-=W*2)>1e-12?(W*=k?1:-1,A+=W,j-=W):(F=0,A=j=(g+_)/2)}var G=h*u(A),K=h*a(A),q=m*u(N),J=m*a(N);if(R>1e-12){var Y=h*u(j),X=h*a(j),Z=m*u(M),Q=m*a(M),$;if(v<i)if($=y(G,K,Z,Q,Y,X,q,J)){var ee=G-$[0],te=K-$[1],ne=Y-$[0],re=X-$[1],ie=1/a(f((ee*ne+te*re)/(d(ee*ee+te*te)*d(ne*ne+re*re)))/2),ae=d($[0]*$[0]+$[1]*$[1]);z=p(R,(m-ae)/(ie-1)),B=p(R,(h-ae)/(ie+1))}else z=B=0}F>1e-12?B>1e-12?(V=b(Z,Q,G,K,h,B,k),H=b(Y,X,q,J,h,B,k),D.moveTo(V.cx+V.x01,V.cy+V.y01),B<R?D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,h,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),!k),D.arc(H.cx,H.cy,B,n(H.y11,H.x11),n(H.y01,H.x01),!k))):(D.moveTo(G,K),D.arc(0,0,h,A,j,!k)):D.moveTo(G,K),!(m>1e-12)||!(P>1e-12)?D.lineTo(q,J):z>1e-12?(V=b(q,J,Y,X,m,-z,k),H=b(G,K,Z,Q,m,-z,k),D.lineTo(V.cx+V.x01,V.cy+V.y01),z<R?D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,m,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),k),D.arc(H.cx,H.cy,z,n(H.y11,H.x11),n(H.y01,H.x01),!k))):D.arc(0,0,m,N,M,k)}if(D.closePath(),e)return D=null,e+``||null}return k.centroid=function(){var e=(+s.apply(this,arguments)+ +x.apply(this,arguments))/2,t=(+w.apply(this,arguments)+ +T.apply(this,arguments))/2-i/2;return[u(t)*e,a(t)*e]},k.innerRadius=function(t){return arguments.length?(s=typeof t==`function`?t:e(+t),k):s},k.outerRadius=function(t){return arguments.length?(x=typeof t==`function`?t:e(+t),k):x},k.cornerRadius=function(t){return arguments.length?(S=typeof t==`function`?t:e(+t),k):S},k.padRadius=function(t){return arguments.length?(C=t==null?null:typeof t==`function`?t:e(+t),k):C},k.startAngle=function(t){return arguments.length?(w=typeof t==`function`?t:e(+t),k):w},k.endAngle=function(t){return arguments.length?(T=typeof t==`function`?t:e(+t),k):T},k.padAngle=function(t){return arguments.length?(E=typeof t==`function`?t:e(+t),k):E},k.context=function(e){return arguments.length?(D=e??null,k):D},k}export{x as t};
1
+ import{n as e,t}from"./path-BWPyau1x.js";import{a as n,c as r,d as i,f as a,i as o,l as s,m as c,n as l,o as u,p as d,r as f,u as p}from"./dist-CqP43hXK.js";function m(e){return e.innerRadius}function h(e){return e.outerRadius}function g(e){return e.startAngle}function _(e){return e.endAngle}function v(e){return e&&e.padAngle}function y(e,t,n,r,i,a,o,s){var c=n-e,l=r-t,u=o-i,d=s-a,f=d*c-u*l;if(!(f*f<1e-12))return f=(u*(t-a)-d*(e-i))/f,[e+f*c,t+f*l]}function b(e,t,n,r,i,a,o){var c=e-n,l=t-r,u=(o?a:-a)/d(c*c+l*l),f=u*l,p=-u*c,m=e+f,h=t+p,g=n+f,_=r+p,v=(m+g)/2,y=(h+_)/2,b=g-m,x=_-h,S=b*b+x*x,C=i-a,w=m*_-g*h,T=(x<0?-1:1)*d(s(0,C*C*S-w*w)),E=(w*x-b*T)/S,D=(-w*b-x*T)/S,O=(w*x+b*T)/S,k=(-w*b+x*T)/S,A=E-v,j=D-y,M=O-v,N=k-y;return A*A+j*j>M*M+N*N&&(E=O,D=k),{cx:E,cy:D,x01:-f,y01:-p,x11:E*(i/C-1),y11:D*(i/C-1)}}function x(){var s=m,x=h,S=e(0),C=null,w=g,T=_,E=v,D=null,O=t(k);function k(){var e,t,m=+s.apply(this,arguments),h=+x.apply(this,arguments),g=w.apply(this,arguments)-r,_=T.apply(this,arguments)-r,v=l(_-g),k=_>g;if(D||=e=O(),h<m&&(t=h,h=m,m=t),!(h>1e-12))D.moveTo(0,0);else if(v>c-1e-12)D.moveTo(h*u(g),h*a(g)),D.arc(0,0,h,g,_,!k),m>1e-12&&(D.moveTo(m*u(_),m*a(_)),D.arc(0,0,m,_,g,k));else{var A=g,j=_,M=g,N=_,P=v,F=v,I=E.apply(this,arguments)/2,L=I>1e-12&&(C?+C.apply(this,arguments):d(m*m+h*h)),R=p(l(h-m)/2,+S.apply(this,arguments)),z=R,B=R,V,H;if(L>1e-12){var U=o(L/m*a(I)),W=o(L/h*a(I));(P-=U*2)>1e-12?(U*=k?1:-1,M+=U,N-=U):(P=0,M=N=(g+_)/2),(F-=W*2)>1e-12?(W*=k?1:-1,A+=W,j-=W):(F=0,A=j=(g+_)/2)}var G=h*u(A),K=h*a(A),q=m*u(N),J=m*a(N);if(R>1e-12){var Y=h*u(j),X=h*a(j),Z=m*u(M),Q=m*a(M),$;if(v<i)if($=y(G,K,Z,Q,Y,X,q,J)){var ee=G-$[0],te=K-$[1],ne=Y-$[0],re=X-$[1],ie=1/a(f((ee*ne+te*re)/(d(ee*ee+te*te)*d(ne*ne+re*re)))/2),ae=d($[0]*$[0]+$[1]*$[1]);z=p(R,(m-ae)/(ie-1)),B=p(R,(h-ae)/(ie+1))}else z=B=0}F>1e-12?B>1e-12?(V=b(Z,Q,G,K,h,B,k),H=b(Y,X,q,J,h,B,k),D.moveTo(V.cx+V.x01,V.cy+V.y01),B<R?D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,h,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),!k),D.arc(H.cx,H.cy,B,n(H.y11,H.x11),n(H.y01,H.x01),!k))):(D.moveTo(G,K),D.arc(0,0,h,A,j,!k)):D.moveTo(G,K),!(m>1e-12)||!(P>1e-12)?D.lineTo(q,J):z>1e-12?(V=b(q,J,Y,X,m,-z,k),H=b(G,K,Z,Q,m,-z,k),D.lineTo(V.cx+V.x01,V.cy+V.y01),z<R?D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,m,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),k),D.arc(H.cx,H.cy,z,n(H.y11,H.x11),n(H.y01,H.x01),!k))):D.arc(0,0,m,N,M,k)}if(D.closePath(),e)return D=null,e+``||null}return k.centroid=function(){var e=(+s.apply(this,arguments)+ +x.apply(this,arguments))/2,t=(+w.apply(this,arguments)+ +T.apply(this,arguments))/2-i/2;return[u(t)*e,a(t)*e]},k.innerRadius=function(t){return arguments.length?(s=typeof t==`function`?t:e(+t),k):s},k.outerRadius=function(t){return arguments.length?(x=typeof t==`function`?t:e(+t),k):x},k.cornerRadius=function(t){return arguments.length?(S=typeof t==`function`?t:e(+t),k):S},k.padRadius=function(t){return arguments.length?(C=t==null?null:typeof t==`function`?t:e(+t),k):C},k.startAngle=function(t){return arguments.length?(w=typeof t==`function`?t:e(+t),k):w},k.endAngle=function(t){return arguments.length?(T=typeof t==`function`?t:e(+t),k):T},k.padAngle=function(t){return arguments.length?(E=typeof t==`function`?t:e(+t),k):E},k.context=function(e){return arguments.length?(D=e??null,k):D},k}export{x as t};
@@ -0,0 +1 @@
1
+ import"./chunk-NNHCCRGN-DlpIbxXb.js";import{x as e}from"./mermaid-parser.core-Cl1GjHkT.js";export{e as createArchitectureServices};