orbitchat 2.14.1 → 3.1.0

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 (183) hide show
  1. package/README.md +60 -90
  2. package/bin/orbitchat.js +408 -429
  3. package/dist/assets/ChartRenderer-BEwTOgnq.js +80 -0
  4. package/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  5. package/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  6. package/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  7. package/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  8. package/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  9. package/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  10. package/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  11. package/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  12. package/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  13. package/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  14. package/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  15. package/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  16. package/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  17. package/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  18. package/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  19. package/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  20. package/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  21. package/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  22. package/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  23. package/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  24. package/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  25. package/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  26. package/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  27. package/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  28. package/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  29. package/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  30. package/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  31. package/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  32. package/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  33. package/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  34. package/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  35. package/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  36. package/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  37. package/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  38. package/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  39. package/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  40. package/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  41. package/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  42. package/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  43. package/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  44. package/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  45. package/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  46. package/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  47. package/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  48. package/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  49. package/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  50. package/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  51. package/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  52. package/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  53. package/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  54. package/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  55. package/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  56. package/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  57. package/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  58. package/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  59. package/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  60. package/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  61. package/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  62. package/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  63. package/dist/assets/MermaidRenderer-Cwj5RQ3g.js +260 -0
  64. package/dist/assets/MusicRenderer-jiCOczly.js +18 -0
  65. package/dist/assets/SVGRenderer-B7MdKpL3.js +6 -0
  66. package/dist/assets/_basePickBy-CYc6FJVo.js +1 -0
  67. package/dist/assets/_baseUniq-Db9U29CG.js +1 -0
  68. package/dist/assets/arc-BSnyvXPh.js +1 -0
  69. package/dist/assets/architectureDiagram-VXUJARFQ-ByDEpAtB.js +36 -0
  70. package/dist/assets/band-CquvqAHh.js +1 -0
  71. package/dist/assets/blockDiagram-VD42YOAC-DeU2cMg9.js +122 -0
  72. package/dist/assets/c4Diagram-YG6GDRKO-C9ykT6JL.js +10 -0
  73. package/dist/assets/channel-C4M311uf.js +1 -0
  74. package/dist/assets/chunk-4BX2VUAB-DSGrQP0T.js +1 -0
  75. package/dist/assets/chunk-55IACEB6-BqJf9Ja5.js +1 -0
  76. package/dist/assets/chunk-B4BG7PRW-CjLmShZ1.js +165 -0
  77. package/dist/assets/chunk-DI55MBZ5-DpYiJhBX.js +220 -0
  78. package/dist/assets/{chunk-FMBD7UC4-dPK7Boav-tO950uDG.js → chunk-FMBD7UC4-B_-ci5rY.js} +2 -2
  79. package/dist/assets/chunk-QN33PNHL-PupYKHzM.js +1 -0
  80. package/dist/assets/chunk-QZHKN3VN-Ddt7KdjH.js +1 -0
  81. package/dist/assets/chunk-TZMSLE5B-DFxHvBUh.js +1 -0
  82. package/dist/assets/classDiagram-2ON5EDUG-Brx1b2Nn.js +1 -0
  83. package/dist/assets/classDiagram-v2-WZHVMYZB-Brx1b2Nn.js +1 -0
  84. package/dist/assets/clone-C6___fhg.js +1 -0
  85. package/dist/assets/cose-bilkent-S5V4N54A-CoAwh2dl.js +1 -0
  86. package/dist/assets/cytoscape.esm-CyJtwmzi.js +331 -0
  87. package/dist/assets/dagre-6UL2VRFP-wqnQLI1r.js +4 -0
  88. package/dist/assets/defaultLocale-DX6XiGOO.js +1 -0
  89. package/dist/assets/diagram-PSM6KHXK-BThDYp3k.js +24 -0
  90. package/dist/assets/diagram-QEK2KX5R-QO0jbKYo.js +43 -0
  91. package/dist/assets/diagram-S2PKOQOG-DqXZQ_2w.js +24 -0
  92. package/dist/assets/erDiagram-Q2GNP2WA-BbHMUMHv.js +60 -0
  93. package/dist/assets/flowDiagram-NV44I4VS-BcZTJeWn.js +162 -0
  94. package/dist/assets/ganttDiagram-JELNMOA3-n27iVieA.js +267 -0
  95. package/dist/assets/gitGraphDiagram-V2S2FVAM-DaO03D0c.js +65 -0
  96. package/dist/assets/graph-CqgsEnyP.js +1 -0
  97. package/dist/assets/index-BLVU3y3C.js +624 -0
  98. package/dist/assets/index-DEMLXEhu.css +1 -0
  99. package/dist/assets/index-pVqH5W3l.js +134 -0
  100. package/dist/assets/infoDiagram-HS3SLOUP-DA9UPsCv.js +2 -0
  101. package/dist/assets/init-Dmth1JHB.js +1 -0
  102. package/dist/assets/journeyDiagram-XKPGCS4Q-DOnOrs8o.js +139 -0
  103. package/dist/assets/kanban-definition-3W4ZIXB7-CeCakzDJ.js +89 -0
  104. package/dist/assets/layout-D9Y_lOuO.js +1 -0
  105. package/dist/assets/linear-CKzVTQ0r.js +1 -0
  106. package/dist/assets/mindmap-definition-VGOIOE7T-DBP7KZgR.js +68 -0
  107. package/dist/assets/ordinal-DILIJJjt.js +1 -0
  108. package/dist/assets/pieDiagram-ADFJNKIX-DSpFXjVs.js +30 -0
  109. package/dist/assets/purify.es-A66Cw1IH.js +2 -0
  110. package/dist/assets/quadrantDiagram-AYHSOK5B-1w3noe3A.js +7 -0
  111. package/dist/assets/requirementDiagram-UZGBJVZJ-B9YzwP8J.js +64 -0
  112. package/dist/assets/sankeyDiagram-TZEHDZUN-FLiuEFVI.js +10 -0
  113. package/dist/assets/sequenceDiagram-WL72ISMW-BSJt3OHN.js +145 -0
  114. package/dist/assets/stateDiagram-FKZM4ZOC-Ch3MODOU.js +1 -0
  115. package/dist/assets/stateDiagram-v2-4FDKWEC3-CT2uJHYZ.js +1 -0
  116. package/dist/assets/step-EjIQ8UIn.js +1 -0
  117. package/dist/assets/time-h5EapSZu.js +1 -0
  118. package/dist/assets/timeline-definition-IT6M3QCI-C_qTQlCc.js +61 -0
  119. package/dist/assets/treemap-GDKQZRPO-yzuGqs4o.js +160 -0
  120. package/dist/assets/xychartDiagram-PRI3JC2R-G6i_3Vla.js +7 -0
  121. package/dist/favicon.svg +3 -1
  122. package/dist/index.html +2 -2
  123. package/dist/logo.png +0 -0
  124. package/markdown-renderer/LICENSE +201 -0
  125. package/markdown-renderer/src/CodeBlock.tsx +332 -0
  126. package/markdown-renderer/src/MarkdownComponents.tsx +233 -0
  127. package/markdown-renderer/src/MarkdownStyles.css +668 -0
  128. package/markdown-renderer/src/css.d.ts +4 -0
  129. package/markdown-renderer/src/index.ts +32 -0
  130. package/markdown-renderer/src/preprocessing.ts +519 -0
  131. package/markdown-renderer/src/renderers/ChartRenderer.tsx +1434 -0
  132. package/markdown-renderer/src/renderers/MermaidRenderer.tsx +474 -0
  133. package/markdown-renderer/src/renderers/MusicRenderer.tsx +394 -0
  134. package/markdown-renderer/src/renderers/SVGRenderer.tsx +307 -0
  135. package/markdown-renderer/src/types.ts +174 -0
  136. package/orbitchat.sh +282 -0
  137. package/package.json +30 -4
  138. package/dist/assets/_baseUniq-BRKsqoH--CzpIYnbF.js +0 -1
  139. package/dist/assets/arc-pab_su9s-DhurQhL4.js +0 -1
  140. package/dist/assets/architectureDiagram-VXUJARFQ-DqQ8r_6g-eqA8fOch.js +0 -36
  141. package/dist/assets/blockDiagram-VD42YOAC-B-dKfcH3-DT3R176S.js +0 -122
  142. package/dist/assets/c4Diagram-YG6GDRKO-DMUPaBEl-q6bAZUce.js +0 -10
  143. package/dist/assets/channel-HKsfPa5q-DshlUHWu.js +0 -1
  144. package/dist/assets/chunk-4BX2VUAB-CX67kh_B-gkWPpLiy.js +0 -1
  145. package/dist/assets/chunk-55IACEB6-BocSyyvr-9ksZ29Ab.js +0 -1
  146. package/dist/assets/chunk-B4BG7PRW-CO8QAyfE-CNBeArXO.js +0 -165
  147. package/dist/assets/chunk-DI55MBZ5-Dw1L6Eos-BVbGVMNG.js +0 -220
  148. package/dist/assets/chunk-QN33PNHL-vP2PqfVG-Y3PYDsm9.js +0 -1
  149. package/dist/assets/chunk-QZHKN3VN-Bcidzu63-BAQ3PYro.js +0 -1
  150. package/dist/assets/chunk-TZMSLE5B-BtljMjlg-CwIvybWR.js +0 -1
  151. package/dist/assets/classDiagram-2ON5EDUG-C7cYN9hv-CGN1Rq_o.js +0 -1
  152. package/dist/assets/classDiagram-v2-WZHVMYZB-C7cYN9hv-CGN1Rq_o.js +0 -1
  153. package/dist/assets/clone-DoPb9X13-C3rfr14F.js +0 -1
  154. package/dist/assets/cose-bilkent-S5V4N54A-BGzO4EsH-DtYXpCOp.js +0 -1
  155. package/dist/assets/cytoscape.esm-CjI2IsL8-Da6dFVsf.js +0 -331
  156. package/dist/assets/dagre-6UL2VRFP-TzNvXCds-xMthYtzg.js +0 -4
  157. package/dist/assets/diagram-PSM6KHXK-BqY4RpUg-CtQy_-7V.js +0 -24
  158. package/dist/assets/diagram-QEK2KX5R-CTjgBsne-DROkeGJL.js +0 -43
  159. package/dist/assets/diagram-S2PKOQOG-BqrhTIpA-Bv0e-7TM.js +0 -24
  160. package/dist/assets/erDiagram-Q2GNP2WA-B2hsi_Tl-BbvH-Jb1.js +0 -60
  161. package/dist/assets/flowDiagram-NV44I4VS-C03vtt_F-DT9Y-btb.js +0 -162
  162. package/dist/assets/ganttDiagram-JELNMOA3-B3hAg964-CnqUJtIB.js +0 -267
  163. package/dist/assets/gitGraphDiagram-NY62KEGX-ByhMH0yZ-CdQlDU7A.js +0 -65
  164. package/dist/assets/graph-BmNkcFEM-mCcAnvHY.js +0 -1
  165. package/dist/assets/index-BXexqYFc-D_cjFmh8.js +0 -134
  166. package/dist/assets/index-DBOy9259.css +0 -1
  167. package/dist/assets/index-zlswAhjt.js +0 -1010
  168. package/dist/assets/infoDiagram-WHAUD3N6-is6Ho4-T-BHS1wv7y.js +0 -2
  169. package/dist/assets/journeyDiagram-XKPGCS4Q-CRTOL26C-DkQ68DJ6.js +0 -139
  170. package/dist/assets/kanban-definition-3W4ZIXB7-CNnO_t6O-DWZm5JX4.js +0 -89
  171. package/dist/assets/layout-C0kZPebx-CygTh9Uo.js +0 -1
  172. package/dist/assets/min-7Gb0pNxh-BfuBtSqq.js +0 -1
  173. package/dist/assets/mindmap-definition-VGOIOE7T-CJZ2wTTa-B7rvUdG3.js +0 -68
  174. package/dist/assets/pieDiagram-ADFJNKIX-C9OSknjr-eiZAefZN.js +0 -30
  175. package/dist/assets/quadrantDiagram-AYHSOK5B-CW8yuAqv-DzBEpWQk.js +0 -7
  176. package/dist/assets/requirementDiagram-UZGBJVZJ-nGPhruO1-z5Z4Fwg9.js +0 -64
  177. package/dist/assets/sankeyDiagram-TZEHDZUN-CmL90u-m-Dk028WXo.js +0 -10
  178. package/dist/assets/sequenceDiagram-WL72ISMW-B02VRcnM-Cz8sPx_Q.js +0 -145
  179. package/dist/assets/stateDiagram-FKZM4ZOC-DjoyLUdz-BxsZBi1n.js +0 -1
  180. package/dist/assets/stateDiagram-v2-4FDKWEC3-Bq76BTB7-BTybFIdr.js +0 -1
  181. package/dist/assets/timeline-definition-IT6M3QCI-CTn0Gm3T-CI07_-Ei.js +0 -61
  182. package/dist/assets/treemap-KMMF4GRG-BjgLKKyi-Dg9N7uMT.js +0 -128
  183. package/dist/assets/xychartDiagram-PRI3JC2R-Cgg6Uija-BDR2Lfu_.js +0 -7
@@ -0,0 +1,174 @@
1
+ import type { ReactNode } from 'react';
2
+
3
+ /**
4
+ * Props for Mermaid diagram renderer
5
+ */
6
+ export interface MermaidRendererProps {
7
+ code: string;
8
+ }
9
+
10
+ /**
11
+ * Props for SVG renderer
12
+ */
13
+ export interface SVGRendererProps {
14
+ code: string;
15
+ }
16
+
17
+ /**
18
+ * Props for chart renderer
19
+ */
20
+ export interface ChartRendererProps {
21
+ code: string;
22
+ language: string;
23
+ }
24
+
25
+ /**
26
+ * Props for music notation renderer
27
+ */
28
+ export interface MusicRendererProps {
29
+ code: string;
30
+ }
31
+
32
+ export type ChartValueFormat = 'number' | 'compact' | 'currency' | 'percent';
33
+
34
+ export interface ChartFormatterConfig {
35
+ format?: ChartValueFormat;
36
+ currency?: string;
37
+ decimals?: number;
38
+ minimumFractionDigits?: number;
39
+ maximumFractionDigits?: number;
40
+ prefix?: string;
41
+ suffix?: string;
42
+ }
43
+
44
+ export interface ChartSeriesConfig {
45
+ key: string;
46
+ name?: string;
47
+ type?: 'bar' | 'line' | 'area' | 'scatter';
48
+ color?: string;
49
+ yAxisId?: 'left' | 'right';
50
+ stackId?: string;
51
+ strokeWidth?: number;
52
+ dot?: boolean;
53
+ opacity?: number;
54
+ }
55
+
56
+ export interface ChartReferenceLineConfig {
57
+ x?: string | number;
58
+ y?: string | number;
59
+ label?: string;
60
+ color?: string;
61
+ strokeDasharray?: string;
62
+ position?: 'start' | 'middle' | 'end';
63
+ }
64
+
65
+ /**
66
+ * Chart configuration interface
67
+ */
68
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
69
+ export type ChartDataItem = Record<string, any>;
70
+
71
+ export interface ChartConfig {
72
+ type: 'bar' | 'line' | 'pie' | 'area' | 'scatter' | 'composed';
73
+ title?: string;
74
+ description?: string;
75
+ data: ChartDataItem[];
76
+ dataKeys?: string[];
77
+ xKey?: string;
78
+ xAxisType?: 'category' | 'number';
79
+ colors?: string[];
80
+ width?: number;
81
+ height?: number;
82
+ stacked?: boolean;
83
+ showLegend?: boolean;
84
+ showGrid?: boolean;
85
+ xAxisLabel?: string;
86
+ yAxisLabel?: string;
87
+ yAxisRightLabel?: string;
88
+ formatter?: ChartFormatterConfig;
89
+ series?: ChartSeriesConfig[];
90
+ referenceLines?: ChartReferenceLineConfig[];
91
+ }
92
+
93
+ /**
94
+ * Props for the main MarkdownRenderer component
95
+ */
96
+ export interface MarkdownRendererProps {
97
+ content: string;
98
+ className?: string;
99
+ /**
100
+ * Optional flag to disable math rendering entirely if needed
101
+ */
102
+ disableMath?: boolean;
103
+ /**
104
+ * Enable graph rendering (default: true)
105
+ */
106
+ enableGraphs?: boolean;
107
+ /**
108
+ * Enable Mermaid diagram rendering (default: true)
109
+ */
110
+ enableMermaid?: boolean;
111
+ /**
112
+ * Enable SVG rendering (default: true)
113
+ */
114
+ enableSVG?: boolean;
115
+ /**
116
+ * Enable syntax highlighting for code blocks (default: true)
117
+ */
118
+ enableSyntaxHighlighting?: boolean;
119
+ /**
120
+ * Syntax highlighting theme: 'dark' or 'light' (default: 'dark')
121
+ */
122
+ syntaxTheme?: 'dark' | 'light';
123
+ /**
124
+ * Enable chart rendering (default: true)
125
+ */
126
+ enableCharts?: boolean;
127
+ /**
128
+ * Enable music notation rendering (default: true)
129
+ */
130
+ enableMusic?: boolean;
131
+ }
132
+
133
+ /**
134
+ * Props for CodeBlock component
135
+ */
136
+ export interface CodeBlockProps {
137
+ inline?: boolean;
138
+ className?: string;
139
+ children?: ReactNode;
140
+ 'data-block-code'?: string;
141
+ enableGraphs?: boolean;
142
+ enableMermaid?: boolean;
143
+ enableSVG?: boolean;
144
+ enableCharts?: boolean;
145
+ enableMusic?: boolean;
146
+ enableSyntaxHighlighting?: boolean;
147
+ syntaxTheme?: 'dark' | 'light';
148
+ }
149
+
150
+ /**
151
+ * Set of block-level HTML tags that should not be wrapped in paragraph tags
152
+ */
153
+ export const BLOCK_LEVEL_TAGS = new Set([
154
+ 'div',
155
+ 'pre',
156
+ 'blockquote',
157
+ 'ul',
158
+ 'ol',
159
+ 'table',
160
+ 'thead',
161
+ 'tbody',
162
+ 'tr',
163
+ 'td',
164
+ 'th',
165
+ 'h1',
166
+ 'h2',
167
+ 'h3',
168
+ 'h4',
169
+ 'h5',
170
+ 'h6',
171
+ 'section',
172
+ 'article',
173
+ 'figure',
174
+ ]);
package/orbitchat.sh ADDED
@@ -0,0 +1,282 @@
1
+ #!/bin/bash
2
+ #
3
+ # OrbitChat Daemon Control Script
4
+ # ================================
5
+ #
6
+ # Usage:
7
+ # ./orbitchat.sh --start [port] Start orbitchat in background
8
+ # ./orbitchat.sh --stop Stop orbitchat
9
+ # ./orbitchat.sh --restart [port] Restart orbitchat
10
+ # ./orbitchat.sh --force-restart [port] Force-kill port listeners and restart
11
+ # ./orbitchat.sh --status Check if orbitchat is running
12
+ # ./orbitchat.sh --help Show this help message
13
+ #
14
+ # All application settings are in orbitchat.yaml (next to this script).
15
+ # Only adapter secrets (API keys) are set here via VITE_ADAPTERS.
16
+ #
17
+ # Files:
18
+ # PID file: <script_dir>/orbitchat.pid
19
+ # Log file: <script_dir>/orbitchat.log
20
+ #
21
+
22
+ # Get the directory where this script is located (works on Mac and Linux)
23
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
24
+
25
+ PIDFILE="$SCRIPT_DIR/orbitchat.pid"
26
+ LOGFILE="$SCRIPT_DIR/orbitchat.log"
27
+ PORT="${ORBITCHAT_PORT:-5173}"
28
+ CONFIG_FILE="$SCRIPT_DIR/orbitchat.yaml"
29
+ ACTION=""
30
+ FORCE_RESTART=false
31
+
32
+ # When installed as an npm package, default config often lives in current directory.
33
+ if [ ! -f "$CONFIG_FILE" ] && [ -f "$(pwd)/orbitchat.yaml" ]; then
34
+ CONFIG_FILE="$(pwd)/orbitchat.yaml"
35
+ fi
36
+
37
+ export NODE_OPTIONS="--no-deprecation"
38
+
39
+ # Adapter secrets (API keys) — the only env var needed.
40
+ # All other settings live in orbitchat.yaml.
41
+
42
+ export ORBIT_ADAPTERS='[
43
+ { "name": "Simple Chat","apiKey":"default-key","apiUrl":"http://localhost:3000"},
44
+ { "name": "Chat With Files","apiKey":"multimodal","apiUrl":"http://localhost:3000"}
45
+ ]'
46
+
47
+ start_app() {
48
+ if [ ! -f "$CONFIG_FILE" ]; then
49
+ echo "Error: config file not found: $CONFIG_FILE"
50
+ exit 1
51
+ fi
52
+
53
+ if command -v lsof >/dev/null 2>&1; then
54
+ local existing_pids
55
+ existing_pids=$(lsof -tiTCP:"$PORT" -sTCP:LISTEN 2>/dev/null | tr '\n' ' ' | xargs)
56
+ if [ -n "$existing_pids" ]; then
57
+ if [ "$FORCE_RESTART" = true ]; then
58
+ echo "Port $PORT is in use by PID(s): $existing_pids. Stopping them (--force-restart)..."
59
+ kill $existing_pids 2>/dev/null || true
60
+ sleep 1
61
+
62
+ existing_pids=$(lsof -tiTCP:"$PORT" -sTCP:LISTEN 2>/dev/null | tr '\n' ' ' | xargs)
63
+ if [ -n "$existing_pids" ]; then
64
+ echo "Port $PORT still in use by PID(s): $existing_pids. Sending SIGKILL..."
65
+ kill -9 $existing_pids 2>/dev/null || true
66
+ sleep 1
67
+ fi
68
+
69
+ existing_pids=$(lsof -tiTCP:"$PORT" -sTCP:LISTEN 2>/dev/null | tr '\n' ' ' | xargs)
70
+ if [ -n "$existing_pids" ]; then
71
+ echo "Error: failed to free port $PORT (still used by PID(s): $existing_pids)."
72
+ exit 1
73
+ fi
74
+ rm -f "$PIDFILE"
75
+ else
76
+ echo "Error: port $PORT is already in use by PID(s): $existing_pids."
77
+ echo "Stop the existing process first (or use --force-restart)."
78
+ exit 1
79
+ fi
80
+ fi
81
+ fi
82
+
83
+ if [ -f "$PIDFILE" ] && kill -0 "$(cat "$PIDFILE")" 2>/dev/null; then
84
+ echo "orbitchat is already running (PID: $(cat "$PIDFILE"))"
85
+ exit 1
86
+ fi
87
+
88
+ echo "Starting orbitchat on port $PORT with config $CONFIG_FILE..."
89
+
90
+ nohup orbitchat --port "$PORT" --host 0.0.0.0 --config "$CONFIG_FILE" \
91
+ > "$LOGFILE" 2>&1 &
92
+
93
+ local started_pid=$!
94
+ echo "$started_pid" > "$PIDFILE"
95
+ sleep 1
96
+
97
+ if ! kill -0 "$started_pid" 2>/dev/null; then
98
+ echo "Failed to start orbitchat (process exited early)."
99
+ echo "Last log lines:"
100
+ tail -n 40 "$LOGFILE" 2>/dev/null || true
101
+ rm -f "$PIDFILE"
102
+ exit 1
103
+ fi
104
+
105
+ echo ""
106
+ echo "✓ orbitchat started (PID: $started_pid)"
107
+ echo ""
108
+ echo " Open in browser: http://localhost:$PORT"
109
+ echo " Logs: $LOGFILE"
110
+ echo ""
111
+ }
112
+
113
+ stop_app() {
114
+ if [ ! -f "$PIDFILE" ]; then
115
+ echo "orbitchat is not running (no PID file)"
116
+ exit 1
117
+ fi
118
+
119
+ PID=$(cat "$PIDFILE")
120
+ if kill -0 "$PID" 2>/dev/null; then
121
+ echo "Stopping orbitchat (PID: $PID)..."
122
+ kill "$PID"
123
+ rm -f "$PIDFILE"
124
+ echo "orbitchat stopped"
125
+ else
126
+ echo "orbitchat is not running (stale PID file)"
127
+ rm -f "$PIDFILE"
128
+ fi
129
+ }
130
+
131
+ status_app() {
132
+ if [ -f "$PIDFILE" ] && kill -0 "$(cat "$PIDFILE")" 2>/dev/null; then
133
+ echo "orbitchat is running (PID: $(cat "$PIDFILE"))"
134
+ echo " URL: http://localhost:$PORT"
135
+ echo " Config: $CONFIG_FILE"
136
+ else
137
+ if command -v lsof >/dev/null 2>&1; then
138
+ local port_pid
139
+ port_pid=$(lsof -tiTCP:"$PORT" -sTCP:LISTEN 2>/dev/null | head -n 1)
140
+ if [ -n "$port_pid" ]; then
141
+ echo "orbitchat PID file is stale, but port $PORT is active (PID: $port_pid)."
142
+ echo " URL: http://localhost:$PORT"
143
+ echo " Config (requested): $CONFIG_FILE"
144
+ return
145
+ fi
146
+ fi
147
+ echo "orbitchat is not running"
148
+ fi
149
+ }
150
+
151
+ restart_app() {
152
+ if [ -f "$PIDFILE" ]; then
153
+ PID=$(cat "$PIDFILE")
154
+ if kill -0 "$PID" 2>/dev/null; then
155
+ echo "Stopping orbitchat (PID: $PID)..."
156
+ kill "$PID"
157
+ sleep 1
158
+ fi
159
+ rm -f "$PIDFILE"
160
+ fi
161
+ start_app
162
+ }
163
+
164
+ show_help() {
165
+ echo "OrbitChat Daemon Control Script"
166
+ echo "================================"
167
+ echo ""
168
+ echo "Usage: $0 [options] {--start [port]|--stop|--restart [port]|--force-restart [port]|--status|--help}"
169
+ echo ""
170
+ echo "Options:"
171
+ echo " --config [file] Use specific YAML configuration file (default: orbitchat.yaml)"
172
+ echo " --force-restart [port] Kill any process using the target port, then restart"
173
+ echo " --start [port] Start orbitchat in background (optionally specify port)"
174
+ echo " --stop Stop orbitchat"
175
+ echo " --restart [port] Restart orbitchat (optionally specify port)"
176
+ echo " --status Check if orbitchat is running"
177
+ echo " --help Show this help message"
178
+ echo ""
179
+ echo "Environment variables:"
180
+ echo " ORBITCHAT_PORT Port to run on (default: 5173)"
181
+ echo ""
182
+ echo "All application settings are in orbitchat.yaml by default."
183
+ echo "Adapter secrets (API keys) are set via VITE_ADAPTERS env var in this script."
184
+ echo ""
185
+ echo "Examples:"
186
+ echo " $0 --start # Start on default port 5173"
187
+ echo " $0 --start 8080 # Start on port 8080"
188
+ echo " $0 --config custom.yaml --start # Start with custom config"
189
+ echo " $0 --force-restart # Force free default port, then restart"
190
+ echo " $0 --force-restart 8080 # Force free port 8080, then restart"
191
+ echo " $0 --force-restart --start # Also works as a flag before --start"
192
+ echo " ORBITCHAT_PORT=8080 $0 --start # Start on port 8080 (env var)"
193
+ echo ""
194
+ echo "Files (stored in script directory):"
195
+ echo " PID file: $PIDFILE"
196
+ echo " Log file: $LOGFILE"
197
+ }
198
+
199
+ # Parse arguments
200
+ while [[ $# -gt 0 ]]; do
201
+ case "$1" in
202
+ --start)
203
+ ACTION="start"
204
+ shift
205
+ if [[ -n "$1" && "$1" != --* ]]; then
206
+ PORT="$1"
207
+ shift
208
+ fi
209
+ ;;
210
+ --stop)
211
+ ACTION="stop"
212
+ shift
213
+ ;;
214
+ --restart)
215
+ ACTION="restart"
216
+ shift
217
+ if [[ -n "$1" && "$1" != --* ]]; then
218
+ PORT="$1"
219
+ shift
220
+ fi
221
+ ;;
222
+ --force-restart)
223
+ FORCE_RESTART=true
224
+ if [[ -n "$2" && "$2" != --* ]]; then
225
+ PORT="$2"
226
+ shift 2
227
+ else
228
+ shift
229
+ fi
230
+ if [[ -z "$ACTION" ]]; then
231
+ ACTION="force-restart"
232
+ fi
233
+ ;;
234
+ --status)
235
+ ACTION="status"
236
+ shift
237
+ ;;
238
+ --config)
239
+ if [[ -n "$2" ]]; then
240
+ if [[ "$2" = /* ]]; then
241
+ CONFIG_FILE="$2"
242
+ else
243
+ CONFIG_FILE="$(cd "$(pwd)" && pwd)/$2"
244
+ fi
245
+ shift 2
246
+ else
247
+ echo "Error: --config requires a file path"
248
+ exit 1
249
+ fi
250
+ ;;
251
+ --help)
252
+ show_help
253
+ exit 0
254
+ ;;
255
+ *)
256
+ show_help
257
+ exit 1
258
+ ;;
259
+ esac
260
+ done
261
+
262
+ case "$ACTION" in
263
+ start)
264
+ start_app
265
+ ;;
266
+ stop)
267
+ stop_app
268
+ ;;
269
+ restart)
270
+ restart_app
271
+ ;;
272
+ force-restart)
273
+ restart_app
274
+ ;;
275
+ status)
276
+ status_app
277
+ ;;
278
+ *)
279
+ show_help
280
+ exit 1
281
+ ;;
282
+ esac
package/package.json CHANGED
@@ -1,14 +1,22 @@
1
1
  {
2
2
  "name": "orbitchat",
3
3
  "private": false,
4
- "version": "2.14.1",
4
+ "version": "3.1.0",
5
5
  "type": "module",
6
6
  "bin": {
7
- "orbitchat": "./bin/orbitchat.js"
7
+ "orbitchat": "./bin/orbitchat.js",
8
+ "orbitchat-daemon": "./orbitchat.sh"
8
9
  },
9
10
  "files": [
10
11
  "bin",
11
12
  "dist",
13
+ "orbitchat.sh",
14
+ "markdown-renderer/src",
15
+ "!markdown-renderer/src/demo",
16
+ "!markdown-renderer/src/demo/**",
17
+ "!markdown-renderer/package.json",
18
+ "!markdown-renderer/README.md",
19
+ "markdown-renderer/LICENSE",
12
20
  "README.md",
13
21
  "package.json"
14
22
  ],
@@ -19,21 +27,37 @@
19
27
  "build:local": "VITE_USE_LOCAL_API=true tsc && vite build",
20
28
  "build:api": "cd ../node-api && npm run build && mkdir -p ../chat-app/src/api/local && cp dist/api.mjs ../chat-app/src/api/local/api.mjs && cp dist/api.mjs.map ../chat-app/src/api/local/api.mjs.map && cp dist/api.d.ts ../chat-app/src/api/local/api.d.ts",
21
29
  "dev:with-api": "npm run build:api && npm run dev:local",
22
- "lint": "eslint . --report-unused-disable-directives --max-warnings 0",
30
+ "lint": "npm run lint:app",
31
+ "lint:app": "eslint . --report-unused-disable-directives --max-warnings 0",
32
+ "lint:renderer": "eslint --config markdown-renderer/eslint.config.js \"markdown-renderer/src/**/*.{ts,tsx}\"",
33
+ "lint:all": "npm run lint:app && npm run lint:renderer",
23
34
  "preview": "vite preview",
24
35
  "preview:local": "VITE_USE_LOCAL_API=true vite preview",
25
36
  "test": "node --test 'tests/**/*.test.js'",
26
37
  "prepublishOnly": "npm run build"
27
38
  },
28
39
  "dependencies": {
29
- "@schmitech/markdown-renderer": "^0.8.0",
40
+ "@auth0/auth0-react": "^2.15.0",
41
+ "abcjs": "^6.5.2",
42
+ "ajv": "^8.17.1",
43
+ "dompurify": "^3.0.8",
30
44
  "express": "^5.0.1",
45
+ "express-rate-limit": "^8.2.1",
31
46
  "http-proxy-middleware": "^3.0.5",
32
47
  "js-yaml": "^4.1.1",
48
+ "katex": "^0.16.27",
33
49
  "lucide-react": "^0.469.0",
50
+ "mermaid": "^11.12.2",
34
51
  "path": "^0.12.7",
35
52
  "react": "^19.0.0",
36
53
  "react-dom": "^19.0.0",
54
+ "react-markdown": "^10.1.0",
55
+ "react-syntax-highlighter": "^15.5.0",
56
+ "recharts": "^3.7.0",
57
+ "rehype-katex": "^7.0.1",
58
+ "remark-gfm": "^4.0.1",
59
+ "remark-math": "^6.0.0",
60
+ "unified": "^11.0.5",
37
61
  "vite-plugin-dts": "^4.5.4",
38
62
  "zustand": "^5.0.5"
39
63
  },
@@ -44,6 +68,8 @@
44
68
  "@types/node": "^24.0.1",
45
69
  "@types/react": "^19.0.0",
46
70
  "@types/react-dom": "^19.0.0",
71
+ "@typescript-eslint/eslint-plugin": "^8.0.0",
72
+ "@typescript-eslint/parser": "^8.0.0",
47
73
  "@vitejs/plugin-react": "^4.2.1",
48
74
  "autoprefixer": "^10.4.19",
49
75
  "eslint": "^9.0.0",
@@ -1 +0,0 @@
1
- import{aS as Q,bH as cr,bI as ir,aK as h,aL as U,bJ as L,bK as lr,aO as sr,by as k,br as P,bL as vr,bM as br,aP as hr,bN as V,bn as N,bo as T,bO as gr,bw as _,aG as pr,bP as x,bQ as yr,aT as dr}from"./index-zlswAhjt.js";var jr="[object Symbol]";function B(r){return typeof r=="symbol"||k(r)&&vr(r)==jr}function _r(r,t){for(var e=-1,n=r==null?0:r.length,a=Array(n);++e<n;)a[e]=t(r[e],e,r);return a}var E=_?_.prototype:void 0,G=E?E.toString:void 0;function W(r){if(typeof r=="string")return r;if(h(r))return _r(r,W)+"";if(B(r))return G?G.call(r):"";var t=r+"";return t=="0"&&1/r==-1/0?"-0":t}function mr(){}function wr(r,t){for(var e=-1,n=r==null?0:r.length;++e<n&&t(r[e],e,r)!==!1;);return r}function Or(r,t,e,n){for(var a=r.length,u=e+-1;++u<a;)if(t(r[u],u,r))return u;return-1}function Sr(r){return r!==r}function Pr(r,t,e){for(var n=e-1,a=r.length;++n<a;)if(r[n]===t)return n;return-1}function Ar(r,t,e){return t===t?Pr(r,t,e):Or(r,Sr,e)}function Lr(r,t){var e=r==null?0:r.length;return!!e&&Ar(r,t,0)>-1}function C(r){return Q(r)?cr(r):ir(r)}var $r=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,kr=/^\w*$/;function z(r,t){if(h(r))return!1;var e=typeof r;return e=="number"||e=="symbol"||e=="boolean"||r==null||B(r)?!0:kr.test(r)||!$r.test(r)||t!=null&&r in Object(t)}var Br=500;function Cr(r){var t=yr(r,function(n){return e.size===Br&&e.clear(),n}),e=t.cache;return t}var zr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Dr=/\\(\\)?/g,Fr=Cr(function(r){var t=[];return r.charCodeAt(0)===46&&t.push(""),r.replace(zr,function(e,n,a,u){t.push(a?u.replace(Dr,"$1"):n||e)}),t});function Kr(r){return r==null?"":W(r)}function X(r,t){return h(r)?r:z(r,t)?[r]:Fr(Kr(r))}function A(r){if(typeof r=="string"||B(r))return r;var t=r+"";return t=="0"&&1/r==-1/0?"-0":t}function rr(r,t){t=X(t,r);for(var e=0,n=t.length;r!=null&&e<n;)r=r[A(t[e++])];return e&&e==n?r:void 0}function Mr(r,t,e){var n=r==null?void 0:rr(r,t);return n===void 0?e:n}function tr(r,t){for(var e=-1,n=t.length,a=r.length;++e<n;)r[a+e]=t[e];return r}var I=_?_.isConcatSpreadable:void 0;function Nr(r){return h(r)||V(r)||!!(I&&r&&r[I])}function Gt(r,t,e,n,a){var u=-1,o=r.length;for(e||(e=Nr),a||(a=[]);++u<o;){var f=r[u];e(f)?tr(a,f):n||(a[a.length]=f)}return a}function Tr(r,t,e,n){var a=-1,u=r==null?0:r.length;for(n&&u&&(e=r[++a]);++a<u;)e=t(e,r[a],a,r);return e}function er(r,t){for(var e=-1,n=r==null?0:r.length,a=0,u=[];++e<n;){var o=r[e];t(o,e,r)&&(u[a++]=o)}return u}function xr(){return[]}var Er=Object.prototype,Gr=Er.propertyIsEnumerable,J=Object.getOwnPropertySymbols,Ir=J?function(r){return r==null?[]:(r=Object(r),er(J(r),function(t){return Gr.call(r,t)}))}:xr;function Jr(r,t,e){var n=t(r);return h(r)?n:tr(n,e(r))}function q(r){return Jr(r,C,Ir)}var qr="__lodash_hash_undefined__";function Rr(r){return this.__data__.set(r,qr),this}function Yr(r){return this.__data__.has(r)}function m(r){var t=-1,e=r==null?0:r.length;for(this.__data__=new lr;++t<e;)this.add(r[t])}m.prototype.add=m.prototype.push=Rr;m.prototype.has=Yr;function Zr(r,t){for(var e=-1,n=r==null?0:r.length;++e<n;)if(t(r[e],e,r))return!0;return!1}function nr(r,t){return r.has(t)}var Hr=1,Qr=2;function ur(r,t,e,n,a,u){var o=e&Hr,f=r.length,c=t.length;if(f!=c&&!(o&&c>f))return!1;var v=u.get(r),l=u.get(t);if(v&&l)return v==t&&l==r;var i=-1,s=!0,p=e&Qr?new m:void 0;for(u.set(r,t),u.set(t,r);++i<f;){var b=r[i],g=t[i];if(n)var y=o?n(g,b,i,t,r,u):n(b,g,i,r,t,u);if(y!==void 0){if(y)continue;s=!1;break}if(p){if(!Zr(t,function(d,j){if(!nr(p,j)&&(b===d||a(b,d,e,n,u)))return p.push(j)})){s=!1;break}}else if(!(b===g||a(b,g,e,n,u))){s=!1;break}}return u.delete(r),u.delete(t),s}function Ur(r){var t=-1,e=Array(r.size);return r.forEach(function(n,a){e[++t]=[a,n]}),e}function D(r){var t=-1,e=Array(r.size);return r.forEach(function(n){e[++t]=n}),e}var Vr=1,Wr=2,Xr="[object Boolean]",rt="[object Date]",tt="[object Error]",et="[object Map]",nt="[object Number]",ut="[object RegExp]",at="[object Set]",ot="[object String]",ft="[object Symbol]",ct="[object ArrayBuffer]",it="[object DataView]",R=_?_.prototype:void 0,$=R?R.valueOf:void 0;function lt(r,t,e,n,a,u,o){switch(e){case it:if(r.byteLength!=t.byteLength||r.byteOffset!=t.byteOffset)return!1;r=r.buffer,t=t.buffer;case ct:return!(r.byteLength!=t.byteLength||!u(new x(r),new x(t)));case Xr:case rt:case nt:return pr(+r,+t);case tt:return r.name==t.name&&r.message==t.message;case ut:case ot:return r==t+"";case et:var f=Ur;case at:var c=n&Vr;if(f||(f=D),r.size!=t.size&&!c)return!1;var v=o.get(r);if(v)return v==t;n|=Wr,o.set(r,t);var l=ur(f(r),f(t),n,a,u,o);return o.delete(r),l;case ft:if($)return $.call(r)==$.call(t)}return!1}var st=1,vt=Object.prototype,bt=vt.hasOwnProperty;function ht(r,t,e,n,a,u){var o=e&st,f=q(r),c=f.length,v=q(t),l=v.length;if(c!=l&&!o)return!1;for(var i=c;i--;){var s=f[i];if(!(o?s in t:bt.call(t,s)))return!1}var p=u.get(r),b=u.get(t);if(p&&b)return p==t&&b==r;var g=!0;u.set(r,t),u.set(t,r);for(var y=o;++i<c;){s=f[i];var d=r[s],j=t[s];if(n)var M=o?n(j,d,s,t,r,u):n(d,j,s,r,t,u);if(!(M===void 0?d===j||a(d,j,e,n,u):M)){g=!1;break}y||(y=s=="constructor")}if(g&&!y){var w=r.constructor,O=t.constructor;w!=O&&"constructor"in r&&"constructor"in t&&!(typeof w=="function"&&w instanceof w&&typeof O=="function"&&O instanceof O)&&(g=!1)}return u.delete(r),u.delete(t),g}var gt=1,Y="[object Arguments]",Z="[object Array]",S="[object Object]",pt=Object.prototype,H=pt.hasOwnProperty;function yt(r,t,e,n,a,u){var o=h(r),f=h(t),c=o?Z:N(r),v=f?Z:N(t);c=c==Y?S:c,v=v==Y?S:v;var l=c==S,i=v==S,s=c==v;if(s&&T(r)){if(!T(t))return!1;o=!0,l=!1}if(s&&!l)return u||(u=new P),o||gr(r)?ur(r,t,e,n,a,u):lt(r,t,c,e,n,a,u);if(!(e&gt)){var p=l&&H.call(r,"__wrapped__"),b=i&&H.call(t,"__wrapped__");if(p||b){var g=p?r.value():r,y=b?t.value():t;return u||(u=new P),a(g,y,e,n,u)}}return s?(u||(u=new P),ht(r,t,e,n,a,u)):!1}function F(r,t,e,n,a){return r===t?!0:r==null||t==null||!k(r)&&!k(t)?r!==r&&t!==t:yt(r,t,e,n,F,a)}var dt=1,jt=2;function _t(r,t,e,n){var a=e.length,u=a;if(r==null)return!u;for(r=Object(r);a--;){var o=e[a];if(o[2]?o[1]!==r[o[0]]:!(o[0]in r))return!1}for(;++a<u;){o=e[a];var f=o[0],c=r[f],v=o[1];if(o[2]){if(c===void 0&&!(f in r))return!1}else{var l=new P,i;if(!(i===void 0?F(v,c,dt|jt,n,l):i))return!1}}return!0}function ar(r){return r===r&&!sr(r)}function mt(r){for(var t=C(r),e=t.length;e--;){var n=t[e],a=r[n];t[e]=[n,a,ar(a)]}return t}function or(r,t){return function(e){return e==null?!1:e[r]===t&&(t!==void 0||r in Object(e))}}function wt(r){var t=mt(r);return t.length==1&&t[0][2]?or(t[0][0],t[0][1]):function(e){return e===r||_t(e,r,t)}}function Ot(r,t){return r!=null&&t in Object(r)}function St(r,t,e){t=X(t,r);for(var n=-1,a=t.length,u=!1;++n<a;){var o=A(t[n]);if(!(u=r!=null&&e(r,o)))break;r=r[o]}return u||++n!=a?u:(a=r==null?0:r.length,!!a&&br(a)&&hr(o,a)&&(h(r)||V(r)))}function Pt(r,t){return r!=null&&St(r,t,Ot)}var At=1,Lt=2;function $t(r,t){return z(r)&&ar(t)?or(A(r),t):function(e){var n=Mr(e,r);return n===void 0&&n===t?Pt(e,r):F(t,n,At|Lt)}}function kt(r){return function(t){return t==null?void 0:t[r]}}function Bt(r){return function(t){return rr(t,r)}}function Ct(r){return z(r)?kt(A(r)):Bt(r)}function fr(r){return typeof r=="function"?r:r==null?U:typeof r=="object"?h(r)?$t(r[0],r[1]):wt(r):Ct(r)}function zt(r,t){return r&&dr(r,t,C)}function Dt(r,t){return function(e,n){if(e==null)return e;if(!Q(e))return r(e,n);for(var a=e.length,u=-1,o=Object(e);++u<a&&n(o[u],u,o)!==!1;);return e}}var K=Dt(zt);function Ft(r){return typeof r=="function"?r:U}function It(r,t){var e=h(r)?wr:K;return e(r,Ft(t))}function Kt(r,t){var e=[];return K(r,function(n,a,u){t(n,a,u)&&e.push(n)}),e}function Jt(r,t){var e=h(r)?er:Kt;return e(r,fr(t))}function Mt(r,t,e,n,a){return a(r,function(u,o,f){e=n?(n=!1,u):t(e,u,o,f)}),e}function qt(r,t,e){var n=h(r)?Tr:Mt,a=arguments.length<3;return n(r,fr(t),e,a,K)}var Nt=1/0,Tt=L&&1/D(new L([,-0]))[1]==Nt?function(r){return new L(r)}:mr,xt=200;function Rt(r,t,e){var n=-1,a=Lr,u=r.length,o=!0,f=[],c=f;if(u>=xt){var v=t?null:Tt(r);if(v)return D(v);o=!1,a=nr,c=new m}else c=t?[]:f;r:for(;++n<u;){var l=r[n],i=t?t(l):l;if(l=l!==0?l:0,o&&i===i){for(var s=c.length;s--;)if(c[s]===i)continue r;t&&c.push(i),f.push(l)}else a(c,i,e)||(c!==f&&c.push(i),f.push(l))}return f}export{zt as $,Gt as B,wr as E,Ft as F,Kr as G,A as I,Rt as J,xr as K,C as M,St as T,qt as Y,Jt as Z,fr as a,Pt as b,Or as c,Ir as d,q as e,Jr as f,K as g,X as j,rr as n,It as q,tr as r,_r as v,B as x};
@@ -1 +0,0 @@
1
- import{a$ as sn,b0 as an,b1 as l,ar as on,b2 as j,b3 as F,b4 as E,b5 as un,b6 as cn,b7 as Y,b8 as e,ap as G,b9 as en,ba as rn,bb as yn}from"./index-zlswAhjt.js";function fn(i){return i.innerRadius}function ln(i){return i.outerRadius}function gn(i){return i.startAngle}function pn(i){return i.endAngle}function xn(i){return i&&i.padAngle}function mn(i,d,C,W,v,b,H,a){var I=C-i,r=W-d,n=H-v,p=a-b,u=p*I-n*r;if(!(u*u<l))return u=(n*(d-b)-p*(i-v))/u,[i+u*I,d+u*r]}function M(i,d,C,W,v,b,H){var a=i-C,I=d-W,r=(H?b:-b)/Y(a*a+I*I),n=r*I,p=-r*a,u=i+n,s=d+p,y=C+n,f=W+p,P=(u+y)/2,o=(s+f)/2,x=y-u,g=f-s,O=x*x+g*g,T=v-b,A=u*f-y*s,L=(g<0?-1:1)*Y(en(0,T*T*O-A*A)),q=(A*g-x*L)/O,D=(-A*x-g*L)/O,R=(A*g+x*L)/O,m=(-A*x+g*L)/O,h=q-P,t=D-o,c=R-P,_=m-o;return h*h+t*t>c*c+_*_&&(q=R,D=m),{cx:q,cy:D,x01:-n,y01:-p,x11:q*(v/T-1),y11:D*(v/T-1)}}function dn(){var i=fn,d=ln,C=G(0),W=null,v=gn,b=pn,H=xn,a=null,I=sn(r);function r(){var n,p,u=+i.apply(this,arguments),s=+d.apply(this,arguments),y=v.apply(this,arguments)-an,f=b.apply(this,arguments)-an,P=un(f-y),o=f>y;if(a||(a=n=I()),s<u&&(p=s,s=u,u=p),!(s>l))a.moveTo(0,0);else if(P>on-l)a.moveTo(s*j(y),s*F(y)),a.arc(0,0,s,y,f,!o),u>l&&(a.moveTo(u*j(f),u*F(f)),a.arc(0,0,u,f,y,o));else{var x=y,g=f,O=y,T=f,A=P,L=P,q=H.apply(this,arguments)/2,D=q>l&&(W?+W.apply(this,arguments):Y(u*u+s*s)),R=E(un(s-u)/2,+C.apply(this,arguments)),m=R,h=R,t,c;if(D>l){var _=rn(D/u*F(q)),$=rn(D/s*F(q));(A-=_*2)>l?(_*=o?1:-1,O+=_,T-=_):(A=0,O=T=(y+f)/2),(L-=$*2)>l?($*=o?1:-1,x+=$,g-=$):(L=0,x=g=(y+f)/2)}var z=s*j(x),S=s*F(x),k=u*j(T),N=u*F(T);if(R>l){var X=s*j(g),Z=s*F(g),Q=u*j(O),U=u*F(O),B;if(P<cn)if(B=mn(z,S,Q,U,X,Z,k,N)){var V=z-B[0],w=S-B[1],J=X-B[0],K=Z-B[1],nn=1/F(yn((V*J+w*K)/(Y(V*V+w*w)*Y(J*J+K*K)))/2),tn=Y(B[0]*B[0]+B[1]*B[1]);m=E(R,(u-tn)/(nn-1)),h=E(R,(s-tn)/(nn+1))}else m=h=0}L>l?h>l?(t=M(Q,U,z,S,s,h,o),c=M(X,Z,k,N,s,h,o),a.moveTo(t.cx+t.x01,t.cy+t.y01),h<R?a.arc(t.cx,t.cy,h,e(t.y01,t.x01),e(c.y01,c.x01),!o):(a.arc(t.cx,t.cy,h,e(t.y01,t.x01),e(t.y11,t.x11),!o),a.arc(0,0,s,e(t.cy+t.y11,t.cx+t.x11),e(c.cy+c.y11,c.cx+c.x11),!o),a.arc(c.cx,c.cy,h,e(c.y11,c.x11),e(c.y01,c.x01),!o))):(a.moveTo(z,S),a.arc(0,0,s,x,g,!o)):a.moveTo(z,S),!(u>l)||!(A>l)?a.lineTo(k,N):m>l?(t=M(k,N,X,Z,u,-m,o),c=M(z,S,Q,U,u,-m,o),a.lineTo(t.cx+t.x01,t.cy+t.y01),m<R?a.arc(t.cx,t.cy,m,e(t.y01,t.x01),e(c.y01,c.x01),!o):(a.arc(t.cx,t.cy,m,e(t.y01,t.x01),e(t.y11,t.x11),!o),a.arc(0,0,u,e(t.cy+t.y11,t.cx+t.x11),e(c.cy+c.y11,c.cx+c.x11),o),a.arc(c.cx,c.cy,m,e(c.y11,c.x11),e(c.y01,c.x01),!o))):a.arc(0,0,u,T,O,o)}if(a.closePath(),n)return a=null,n+""||null}return r.centroid=function(){var n=(+i.apply(this,arguments)+ +d.apply(this,arguments))/2,p=(+v.apply(this,arguments)+ +b.apply(this,arguments))/2-cn/2;return[j(p)*n,F(p)*n]},r.innerRadius=function(n){return arguments.length?(i=typeof n=="function"?n:G(+n),r):i},r.outerRadius=function(n){return arguments.length?(d=typeof n=="function"?n:G(+n),r):d},r.cornerRadius=function(n){return arguments.length?(C=typeof n=="function"?n:G(+n),r):C},r.padRadius=function(n){return arguments.length?(W=n==null?null:typeof n=="function"?n:G(+n),r):W},r.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:G(+n),r):v},r.endAngle=function(n){return arguments.length?(b=typeof n=="function"?n:G(+n),r):b},r.padAngle=function(n){return arguments.length?(H=typeof n=="function"?n:G(+n),r):H},r.context=function(n){return arguments.length?(a=n??null,r):a},r}export{dn as h};