@jait/gateway 0.1.145 → 0.1.147

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 (185) hide show
  1. package/dist/index.d.ts.map +1 -1
  2. package/dist/index.js +12 -0
  3. package/dist/index.js.map +1 -1
  4. package/dist/providers/claude-code-provider.d.ts +8 -2
  5. package/dist/providers/claude-code-provider.d.ts.map +1 -1
  6. package/dist/providers/claude-code-provider.js +51 -6
  7. package/dist/providers/claude-code-provider.js.map +1 -1
  8. package/dist/providers/contracts.d.ts +5 -2
  9. package/dist/providers/contracts.d.ts.map +1 -1
  10. package/dist/providers/contracts.js +4 -1
  11. package/dist/providers/contracts.js.map +1 -1
  12. package/dist/providers/copilot-provider.d.ts +39 -0
  13. package/dist/providers/copilot-provider.d.ts.map +1 -0
  14. package/dist/providers/copilot-provider.js +481 -0
  15. package/dist/providers/copilot-provider.js.map +1 -0
  16. package/dist/providers/gemini-provider.d.ts +37 -0
  17. package/dist/providers/gemini-provider.d.ts.map +1 -0
  18. package/dist/providers/gemini-provider.js +379 -0
  19. package/dist/providers/gemini-provider.js.map +1 -0
  20. package/dist/providers/opencode-provider.d.ts +36 -0
  21. package/dist/providers/opencode-provider.d.ts.map +1 -0
  22. package/dist/providers/opencode-provider.js +344 -0
  23. package/dist/providers/opencode-provider.js.map +1 -0
  24. package/dist/providers/registry.d.ts +3 -0
  25. package/dist/providers/registry.d.ts.map +1 -1
  26. package/dist/providers/registry.js +3 -0
  27. package/dist/providers/registry.js.map +1 -1
  28. package/dist/routes/git.d.ts +1 -0
  29. package/dist/routes/git.d.ts.map +1 -1
  30. package/dist/routes/git.js +147 -0
  31. package/dist/routes/git.js.map +1 -1
  32. package/dist/routes/preview.d.ts +7 -0
  33. package/dist/routes/preview.d.ts.map +1 -0
  34. package/dist/routes/preview.js +72 -0
  35. package/dist/routes/preview.js.map +1 -0
  36. package/dist/routes/workspace.d.ts.map +1 -1
  37. package/dist/routes/workspace.js +212 -0
  38. package/dist/routes/workspace.js.map +1 -1
  39. package/dist/server.d.ts +1 -0
  40. package/dist/server.d.ts.map +1 -1
  41. package/dist/server.js +4 -0
  42. package/dist/server.js.map +1 -1
  43. package/dist/services/git.d.ts +14 -0
  44. package/dist/services/git.d.ts.map +1 -1
  45. package/dist/services/git.js +80 -0
  46. package/dist/services/git.js.map +1 -1
  47. package/dist/services/preview-runner.d.ts +46 -0
  48. package/dist/services/preview-runner.d.ts.map +1 -0
  49. package/dist/services/preview-runner.js +218 -0
  50. package/dist/services/preview-runner.js.map +1 -0
  51. package/dist/services/preview.d.ts +65 -0
  52. package/dist/services/preview.d.ts.map +1 -0
  53. package/dist/services/preview.js +265 -0
  54. package/dist/services/preview.js.map +1 -0
  55. package/dist/surfaces/browser.d.ts +12 -0
  56. package/dist/surfaces/browser.d.ts.map +1 -1
  57. package/dist/surfaces/browser.js +57 -0
  58. package/dist/surfaces/browser.js.map +1 -1
  59. package/dist/surfaces/filesystem.d.ts +7 -0
  60. package/dist/surfaces/filesystem.d.ts.map +1 -1
  61. package/dist/surfaces/filesystem.js +74 -2
  62. package/dist/surfaces/filesystem.js.map +1 -1
  63. package/dist/tools/architecture-tools.d.ts +8 -0
  64. package/dist/tools/architecture-tools.d.ts.map +1 -0
  65. package/dist/tools/architecture-tools.js +42 -0
  66. package/dist/tools/architecture-tools.js.map +1 -0
  67. package/dist/tools/index.d.ts +4 -1
  68. package/dist/tools/index.d.ts.map +1 -1
  69. package/dist/tools/index.js +13 -3
  70. package/dist/tools/index.js.map +1 -1
  71. package/dist/tools/preview-tools.d.ts +27 -3
  72. package/dist/tools/preview-tools.d.ts.map +1 -1
  73. package/dist/tools/preview-tools.js +236 -19
  74. package/dist/tools/preview-tools.js.map +1 -1
  75. package/dist/tools/tool-names.d.ts +7 -0
  76. package/dist/tools/tool-names.d.ts.map +1 -1
  77. package/dist/tools/tool-names.js +8 -0
  78. package/dist/tools/tool-names.js.map +1 -1
  79. package/package.json +1 -1
  80. package/web-dist/assets/_basePickBy-CMcRAnqh.js +1 -0
  81. package/web-dist/assets/_baseUniq-DiG-gjzX.js +1 -0
  82. package/web-dist/assets/arc-8zSvdafL.js +1 -0
  83. package/web-dist/assets/architectureDiagram-2XIMDMQ5-uV_qdZLp.js +36 -0
  84. package/web-dist/assets/blockDiagram-WCTKOSBZ-D_DoJaaX.js +132 -0
  85. package/web-dist/assets/c4Diagram-IC4MRINW-Ce0cQzk3.js +10 -0
  86. package/web-dist/assets/channel-BHaRqHuw.js +1 -0
  87. package/web-dist/assets/chunk-4BX2VUAB-D4AMg2Bs.js +1 -0
  88. package/web-dist/assets/chunk-55IACEB6-DoMMBL__.js +1 -0
  89. package/web-dist/assets/chunk-FMBD7UC4-CYf525fL.js +15 -0
  90. package/web-dist/assets/chunk-JSJVCQXG-Nss8Md0k.js +1 -0
  91. package/web-dist/assets/chunk-KX2RTZJC-_0pgSdsc.js +1 -0
  92. package/web-dist/assets/chunk-NQ4KR5QH-DAIj1AYn.js +220 -0
  93. package/web-dist/assets/chunk-QZHKN3VN-rSyB5-Hb.js +1 -0
  94. package/web-dist/assets/chunk-WL4C6EOR-CpTjmrFV.js +189 -0
  95. package/web-dist/assets/classDiagram-VBA2DB6C-D-jlQbaz.js +1 -0
  96. package/web-dist/assets/classDiagram-v2-RAHNMMFH-D-jlQbaz.js +1 -0
  97. package/web-dist/assets/clone-xemW6BD5.js +1 -0
  98. package/web-dist/assets/cose-bilkent-S5V4N54A-bW-AeIv0.js +1 -0
  99. package/web-dist/assets/cytoscape.esm-BQaXIfA_.js +331 -0
  100. package/web-dist/assets/dagre-KLK3FWXG-C3LgqjWf.js +4 -0
  101. package/web-dist/assets/defaultLocale-DX6XiGOO.js +1 -0
  102. package/web-dist/assets/diagram-E7M64L7V-FSqHe-E-.js +24 -0
  103. package/web-dist/assets/diagram-IFDJBPK2-CVKla5Pl.js +43 -0
  104. package/web-dist/assets/diagram-P4PSJMXO-DbdkNkqR.js +24 -0
  105. package/web-dist/assets/erDiagram-INFDFZHY-GDZX_pjq.js +70 -0
  106. package/web-dist/assets/flowDiagram-PKNHOUZH-Cg_Kg-6s.js +162 -0
  107. package/web-dist/assets/ganttDiagram-A5KZAMGK-BNj6qaAZ.js +292 -0
  108. package/web-dist/assets/gitGraphDiagram-K3NZZRJ6-CYDlDHPF.js +65 -0
  109. package/web-dist/assets/graph-CgnxvBit.js +1 -0
  110. package/web-dist/assets/index-0BjDR9yA.js +1109 -0
  111. package/web-dist/assets/{index-CBnIwext.css → index-BVFq-LvQ.css} +1 -1
  112. package/web-dist/assets/infoDiagram-LFFYTUFH-BuSCypq8.js +2 -0
  113. package/web-dist/assets/ishikawaDiagram-PHBUUO56-AjFXL8hp.js +70 -0
  114. package/web-dist/assets/journeyDiagram-4ABVD52K-T24AykCT.js +139 -0
  115. package/web-dist/assets/kanban-definition-K7BYSVSG-BFmOJ3Za.js +89 -0
  116. package/web-dist/assets/katex-BkgLa5T_.js +261 -0
  117. package/web-dist/assets/layout-DBZbe3s5.js +1 -0
  118. package/web-dist/assets/linear-DH_G-pjt.js +1 -0
  119. package/web-dist/assets/mindmap-definition-YRQLILUH-DmrFp1JV.js +68 -0
  120. package/web-dist/assets/pieDiagram-SKSYHLDU-DICPv0I1.js +30 -0
  121. package/web-dist/assets/quadrantDiagram-337W2JSQ-4ZQkWCL2.js +7 -0
  122. package/web-dist/assets/requirementDiagram-Z7DCOOCP-xuxQgvoc.js +73 -0
  123. package/web-dist/assets/sankeyDiagram-WA2Y5GQK-fZCbCQr0.js +10 -0
  124. package/web-dist/assets/sequenceDiagram-2WXFIKYE-BpvPwC4U.js +145 -0
  125. package/web-dist/assets/stateDiagram-RAJIS63D-CtazoD_k.js +1 -0
  126. package/web-dist/assets/stateDiagram-v2-FVOUBMTO-C8JhD5ad.js +1 -0
  127. package/web-dist/assets/timeline-definition-YZTLITO2-TOninkTE.js +61 -0
  128. package/web-dist/assets/treemap-KZPCXAKY-DN7nCe4Y.js +162 -0
  129. package/web-dist/assets/vennDiagram-LZ73GAT5-Cu5kB4rI.js +34 -0
  130. package/web-dist/assets/xychartDiagram-JWTSCODW-CKRZxJIX.js +7 -0
  131. package/web-dist/dist/assets/_basePickBy-CMcRAnqh.js +1 -0
  132. package/web-dist/dist/assets/_baseUniq-DiG-gjzX.js +1 -0
  133. package/web-dist/dist/assets/arc-8zSvdafL.js +1 -0
  134. package/web-dist/dist/assets/architectureDiagram-2XIMDMQ5-uV_qdZLp.js +36 -0
  135. package/web-dist/dist/assets/blockDiagram-WCTKOSBZ-D_DoJaaX.js +132 -0
  136. package/web-dist/dist/assets/c4Diagram-IC4MRINW-Ce0cQzk3.js +10 -0
  137. package/web-dist/dist/assets/channel-BHaRqHuw.js +1 -0
  138. package/web-dist/dist/assets/chunk-4BX2VUAB-D4AMg2Bs.js +1 -0
  139. package/web-dist/dist/assets/chunk-55IACEB6-DoMMBL__.js +1 -0
  140. package/web-dist/dist/assets/chunk-FMBD7UC4-CYf525fL.js +15 -0
  141. package/web-dist/dist/assets/chunk-JSJVCQXG-Nss8Md0k.js +1 -0
  142. package/web-dist/dist/assets/chunk-KX2RTZJC-_0pgSdsc.js +1 -0
  143. package/web-dist/dist/assets/chunk-NQ4KR5QH-DAIj1AYn.js +220 -0
  144. package/web-dist/dist/assets/chunk-QZHKN3VN-rSyB5-Hb.js +1 -0
  145. package/web-dist/dist/assets/chunk-WL4C6EOR-CpTjmrFV.js +189 -0
  146. package/web-dist/dist/assets/classDiagram-VBA2DB6C-D-jlQbaz.js +1 -0
  147. package/web-dist/dist/assets/classDiagram-v2-RAHNMMFH-D-jlQbaz.js +1 -0
  148. package/web-dist/dist/assets/clone-xemW6BD5.js +1 -0
  149. package/web-dist/dist/assets/cose-bilkent-S5V4N54A-bW-AeIv0.js +1 -0
  150. package/web-dist/dist/assets/cytoscape.esm-BQaXIfA_.js +331 -0
  151. package/web-dist/dist/assets/dagre-KLK3FWXG-C3LgqjWf.js +4 -0
  152. package/web-dist/dist/assets/defaultLocale-DX6XiGOO.js +1 -0
  153. package/web-dist/dist/assets/diagram-E7M64L7V-FSqHe-E-.js +24 -0
  154. package/web-dist/dist/assets/diagram-IFDJBPK2-CVKla5Pl.js +43 -0
  155. package/web-dist/dist/assets/diagram-P4PSJMXO-DbdkNkqR.js +24 -0
  156. package/web-dist/dist/assets/erDiagram-INFDFZHY-GDZX_pjq.js +70 -0
  157. package/web-dist/dist/assets/flowDiagram-PKNHOUZH-Cg_Kg-6s.js +162 -0
  158. package/web-dist/dist/assets/ganttDiagram-A5KZAMGK-BNj6qaAZ.js +292 -0
  159. package/web-dist/dist/assets/gitGraphDiagram-K3NZZRJ6-CYDlDHPF.js +65 -0
  160. package/web-dist/dist/assets/graph-CgnxvBit.js +1 -0
  161. package/web-dist/dist/assets/index-0BjDR9yA.js +1109 -0
  162. package/web-dist/dist/assets/{index-CBnIwext.css → index-BVFq-LvQ.css} +1 -1
  163. package/web-dist/dist/assets/infoDiagram-LFFYTUFH-BuSCypq8.js +2 -0
  164. package/web-dist/dist/assets/ishikawaDiagram-PHBUUO56-AjFXL8hp.js +70 -0
  165. package/web-dist/dist/assets/journeyDiagram-4ABVD52K-T24AykCT.js +139 -0
  166. package/web-dist/dist/assets/kanban-definition-K7BYSVSG-BFmOJ3Za.js +89 -0
  167. package/web-dist/dist/assets/katex-BkgLa5T_.js +261 -0
  168. package/web-dist/dist/assets/layout-DBZbe3s5.js +1 -0
  169. package/web-dist/dist/assets/linear-DH_G-pjt.js +1 -0
  170. package/web-dist/dist/assets/mindmap-definition-YRQLILUH-DmrFp1JV.js +68 -0
  171. package/web-dist/dist/assets/pieDiagram-SKSYHLDU-DICPv0I1.js +30 -0
  172. package/web-dist/dist/assets/quadrantDiagram-337W2JSQ-4ZQkWCL2.js +7 -0
  173. package/web-dist/dist/assets/requirementDiagram-Z7DCOOCP-xuxQgvoc.js +73 -0
  174. package/web-dist/dist/assets/sankeyDiagram-WA2Y5GQK-fZCbCQr0.js +10 -0
  175. package/web-dist/dist/assets/sequenceDiagram-2WXFIKYE-BpvPwC4U.js +145 -0
  176. package/web-dist/dist/assets/stateDiagram-RAJIS63D-CtazoD_k.js +1 -0
  177. package/web-dist/dist/assets/stateDiagram-v2-FVOUBMTO-C8JhD5ad.js +1 -0
  178. package/web-dist/dist/assets/timeline-definition-YZTLITO2-TOninkTE.js +61 -0
  179. package/web-dist/dist/assets/treemap-KZPCXAKY-DN7nCe4Y.js +162 -0
  180. package/web-dist/dist/assets/vennDiagram-LZ73GAT5-Cu5kB4rI.js +34 -0
  181. package/web-dist/dist/assets/xychartDiagram-JWTSCODW-CKRZxJIX.js +7 -0
  182. package/web-dist/dist/index.html +2 -2
  183. package/web-dist/index.html +2 -2
  184. package/web-dist/assets/index-IGBNINhu.js +0 -819
  185. package/web-dist/dist/assets/index-IGBNINhu.js +0 -819
@@ -1,7 +1,7 @@
1
- export function createPreviewOpenTool(ws, sessionState) {
1
+ export function createPreviewStartTool(ws, sessionState, previewService) {
2
2
  return {
3
- name: "preview.open",
4
- description: "Open the frontend Preview panel for a local loopback URL or port",
3
+ name: "preview.start",
4
+ description: "Start a managed preview session for the current workspace. Launches the dev server, opens a browser, and begins capturing console/network/errors.",
5
5
  tier: "standard",
6
6
  category: "browser",
7
7
  source: "builtin",
@@ -10,38 +10,255 @@ export function createPreviewOpenTool(ws, sessionState) {
10
10
  properties: {
11
11
  target: {
12
12
  type: "string",
13
- description: "Local preview target such as 3000 or http://127.0.0.1:8765/index.html",
13
+ description: "Optional local preview target such as 3000 or http://127.0.0.1:8765/",
14
+ },
15
+ command: {
16
+ type: "string",
17
+ description: "Optional explicit preview command to run inside the workspace",
18
+ },
19
+ port: {
20
+ type: "number",
21
+ description: "Optional preferred preview port",
22
+ },
23
+ workspaceRoot: {
24
+ type: "string",
25
+ description: "Optional workspace root override for the preview session",
26
+ },
27
+ frameworkHint: {
28
+ type: "string",
29
+ description: "Optional framework hint (vite, next, nuxt, astro, remix) to improve auto-detection",
14
30
  },
15
31
  },
16
- required: ["target"],
17
32
  },
18
33
  async execute(input, context) {
19
- const target = input.target.trim();
20
- if (!target)
21
- return { ok: false, message: "target is required" };
22
- if (!ws)
23
- return { ok: false, message: "UI command channel is unavailable" };
24
- const panelState = { open: true, target };
34
+ const target = input.target?.trim() || "";
25
35
  const sessionId = context.sessionId && context.sessionId !== "mcp-session"
26
36
  ? context.sessionId
27
37
  : "";
28
- ws.sendUICommand({
29
- command: "dev-preview.open",
30
- data: { target },
31
- }, sessionId);
32
- if (sessionId) {
38
+ const workspaceRoot = input.workspaceRoot?.trim() || context.workspaceRoot || "";
39
+ if (!previewService)
40
+ return { ok: false, message: "Preview service is not available" };
41
+ if (!sessionId)
42
+ return { ok: false, message: "A valid session is required to start a preview" };
43
+ const preview = await previewService.start({
44
+ sessionId,
45
+ workspaceRoot: workspaceRoot || undefined,
46
+ target: target || undefined,
47
+ command: input.command?.trim() || undefined,
48
+ port: typeof input.port === "number" ? input.port : undefined,
49
+ frameworkHint: input.frameworkHint?.trim() || undefined,
50
+ });
51
+ const panelState = { open: true, target: null };
52
+ if (ws) {
53
+ ws.sendUICommand({ command: "dev-preview.open", data: { target: null } }, sessionId);
33
54
  ws.broadcast(sessionId, {
34
55
  type: "ui.state-sync",
35
56
  sessionId,
36
57
  timestamp: new Date().toISOString(),
37
58
  payload: { key: "dev-preview.panel", value: panelState },
38
59
  });
39
- sessionState?.set(sessionId, { "dev-preview.panel": panelState });
40
60
  }
61
+ sessionState?.set(sessionId, { "dev-preview.panel": panelState });
62
+ return {
63
+ ok: preview.status === "ready",
64
+ message: preview.status === "ready"
65
+ ? `Preview started at ${preview.url} (${preview.mode} mode)`
66
+ : `Preview failed: ${preview.lastError ?? "unknown error"}`,
67
+ data: preview,
68
+ };
69
+ },
70
+ };
71
+ }
72
+ // ── preview.open (backward-compat alias for preview.start) ───────────
73
+ export function createPreviewOpenTool(ws, sessionState, previewService) {
74
+ const tool = createPreviewStartTool(ws, sessionState, previewService);
75
+ return { ...tool, name: "preview.open" };
76
+ }
77
+ export function createPreviewStopTool(ws, sessionState, previewService) {
78
+ return {
79
+ name: "preview.stop",
80
+ description: "Stop the active managed preview session and kill its dev server process",
81
+ tier: "standard",
82
+ category: "browser",
83
+ source: "builtin",
84
+ parameters: { type: "object", properties: {} },
85
+ async execute(_input, context) {
86
+ if (!previewService)
87
+ return { ok: false, message: "Preview service is not available" };
88
+ const sessionId = context.sessionId && context.sessionId !== "mcp-session"
89
+ ? context.sessionId : "";
90
+ if (!sessionId)
91
+ return { ok: false, message: "No active session" };
92
+ const stopped = await previewService.stop(sessionId);
93
+ if (!stopped)
94
+ return { ok: false, message: "No active preview session found" };
95
+ const panelState = { open: false, target: null };
96
+ if (ws) {
97
+ ws.sendUICommand({ command: "dev-preview.open", data: { target: null } }, sessionId);
98
+ ws.broadcast(sessionId, {
99
+ type: "ui.state-sync",
100
+ sessionId,
101
+ timestamp: new Date().toISOString(),
102
+ payload: { key: "dev-preview.panel", value: panelState },
103
+ });
104
+ }
105
+ sessionState?.set(sessionId, { "dev-preview.panel": panelState });
106
+ return { ok: true, message: "Preview session stopped" };
107
+ },
108
+ };
109
+ }
110
+ export function createPreviewRestartTool(previewService) {
111
+ return {
112
+ name: "preview.restart",
113
+ description: "Restart the active preview session (stops old process, starts fresh, re-attaches browser)",
114
+ tier: "standard",
115
+ category: "browser",
116
+ source: "builtin",
117
+ parameters: { type: "object", properties: {} },
118
+ async execute(_input, context) {
119
+ if (!previewService)
120
+ return { ok: false, message: "Preview service is not available" };
121
+ const sessionId = context.sessionId && context.sessionId !== "mcp-session"
122
+ ? context.sessionId : "";
123
+ if (!sessionId)
124
+ return { ok: false, message: "No active session" };
125
+ const session = await previewService.restart(sessionId);
126
+ if (!session)
127
+ return { ok: false, message: "No active preview session to restart" };
128
+ return {
129
+ ok: session.status === "ready",
130
+ message: session.status === "ready"
131
+ ? `Preview restarted at ${session.url}`
132
+ : `Preview restart failed: ${session.lastError ?? "unknown"}`,
133
+ data: session,
134
+ };
135
+ },
136
+ };
137
+ }
138
+ export function createPreviewStatusTool(previewService) {
139
+ return {
140
+ name: "preview.status",
141
+ description: "Get the current status of the managed preview session including URL, mode, and any errors",
142
+ tier: "standard",
143
+ category: "browser",
144
+ source: "builtin",
145
+ parameters: { type: "object", properties: {} },
146
+ async execute(_input, context) {
147
+ if (!previewService)
148
+ return { ok: false, message: "Preview service is not available" };
149
+ const sessionId = context.sessionId && context.sessionId !== "mcp-session"
150
+ ? context.sessionId : "";
151
+ if (!sessionId)
152
+ return { ok: false, message: "No active session" };
153
+ const session = previewService.get(sessionId);
154
+ if (!session)
155
+ return { ok: true, message: "No active preview session", data: { active: false } };
156
+ return {
157
+ ok: true,
158
+ message: `Preview ${session.status} at ${session.url ?? "unknown"} (${session.mode} mode)`,
159
+ data: {
160
+ active: true,
161
+ status: session.status,
162
+ mode: session.mode,
163
+ url: session.url,
164
+ port: session.port,
165
+ command: session.command,
166
+ processId: session.processId,
167
+ containerId: session.containerId,
168
+ lastError: session.lastError,
169
+ eventCount: session.browserEvents.length,
170
+ logCount: session.logs.length,
171
+ },
172
+ };
173
+ },
174
+ };
175
+ }
176
+ export function createPreviewLogsTool(previewService) {
177
+ return {
178
+ name: "preview.logs",
179
+ description: "Read recent server and browser logs from the active preview session. Returns process stdout/stderr, browser console messages, page errors, and failed network requests.",
180
+ tier: "standard",
181
+ category: "browser",
182
+ source: "builtin",
183
+ parameters: {
184
+ type: "object",
185
+ properties: {
186
+ sinceId: {
187
+ type: "number",
188
+ description: "Only return log entries with an ID greater than this value (for incremental reads)",
189
+ },
190
+ stream: {
191
+ type: "string",
192
+ description: "Filter to a specific stream: stdout, stderr, system, or all (default: all)",
193
+ enum: ["stdout", "stderr", "system", "all"],
194
+ },
195
+ },
196
+ },
197
+ async execute(input, context) {
198
+ if (!previewService)
199
+ return { ok: false, message: "Preview service is not available" };
200
+ const sessionId = context.sessionId && context.sessionId !== "mcp-session"
201
+ ? context.sessionId : "";
202
+ if (!sessionId)
203
+ return { ok: false, message: "No active session" };
204
+ const session = previewService.get(sessionId);
205
+ if (!session)
206
+ return { ok: false, message: "No active preview session" };
207
+ let logs = previewService.getLogs(sessionId, input.sinceId ?? 0);
208
+ if (input.stream && input.stream !== "all") {
209
+ logs = logs.filter((entry) => entry.stream === input.stream);
210
+ }
211
+ const browserEvents = session.browserEvents;
212
+ const errors = browserEvents.filter((e) => e.type === "pageerror" || e.type === "requestfailed" || (e.type === "response" && (e.status ?? 0) >= 400));
213
+ const consoleEntries = browserEvents.filter((e) => e.type === "console");
214
+ return {
215
+ ok: true,
216
+ message: `${logs.length} log entries, ${consoleEntries.length} console messages, ${errors.length} browser errors`,
217
+ data: {
218
+ logs: logs.slice(-100),
219
+ console: consoleEntries.slice(-50),
220
+ errors: errors.slice(-30),
221
+ lastLogId: logs[logs.length - 1]?.id ?? 0,
222
+ },
223
+ };
224
+ },
225
+ };
226
+ }
227
+ export function createPreviewInspectTool(previewService) {
228
+ return {
229
+ name: "preview.inspect",
230
+ description: "Inspect the active preview: get browser events, errors, current DOM snapshot, and optionally a screenshot",
231
+ tier: "standard",
232
+ category: "browser",
233
+ source: "builtin",
234
+ parameters: {
235
+ type: "object",
236
+ properties: {
237
+ screenshot: {
238
+ type: "boolean",
239
+ description: "Whether to include a base64 screenshot (default: false)",
240
+ },
241
+ },
242
+ },
243
+ async execute(input, context) {
244
+ if (!previewService)
245
+ return { ok: false, message: "Preview service is not available" };
246
+ const sessionId = context.sessionId && context.sessionId !== "mcp-session"
247
+ ? context.sessionId : "";
248
+ if (!sessionId)
249
+ return { ok: false, message: "No active session" };
250
+ const result = await previewService.inspect(sessionId);
251
+ if (!result)
252
+ return { ok: false, message: "No active preview session" };
253
+ // Strip screenshot if not requested
254
+ if (!input.screenshot) {
255
+ result.screenshot = null;
256
+ }
257
+ const errorCount = result.browserEvents.filter((e) => e.type === "pageerror" || e.type === "requestfailed" || (e.type === "response" && (e.status ?? 0) >= 400)).length;
41
258
  return {
42
259
  ok: true,
43
- message: `Opened preview for ${target}`,
44
- data: { target },
260
+ message: `Preview ${result.status} at ${result.url ?? "unknown"} — ${result.browserEvents.length} events, ${errorCount} errors${result.screenshot ? ", screenshot included" : ""}`,
261
+ data: result,
45
262
  };
46
263
  },
47
264
  };
@@ -1 +1 @@
1
- {"version":3,"file":"preview-tools.js","sourceRoot":"","sources":["../../src/tools/preview-tools.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,qBAAqB,CACnC,EAAmB,EACnB,YAAkC;IAElC,OAAO;QACL,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,kEAAkE;QAC/E,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,SAAS;QACnB,MAAM,EAAE,SAAS;QACjB,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,uEAAuE;iBACrF;aACF;YACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;SACrB;QACD,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO;YAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,CAAC,MAAM;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC;YACjE,IAAI,CAAC,EAAE;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,mCAAmC,EAAE,CAAC;YAC5E,MAAM,UAAU,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAC1C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,KAAK,aAAa;gBACxE,CAAC,CAAC,OAAO,CAAC,SAAS;gBACnB,CAAC,CAAC,EAAE,CAAC;YAEP,EAAE,CAAC,aAAa,CACd;gBACE,OAAO,EAAE,kBAAkB;gBAC3B,IAAI,EAAE,EAAE,MAAM,EAAE;aACjB,EACD,SAAS,CACV,CAAC;YACF,IAAI,SAAS,EAAE,CAAC;gBACd,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE;oBACtB,IAAI,EAAE,eAAe;oBACrB,SAAS;oBACT,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,OAAO,EAAE,EAAE,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,UAAU,EAAE;iBACzD,CAAC,CAAC;gBACH,YAAY,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,mBAAmB,EAAE,UAAU,EAAE,CAAC,CAAC;YACpE,CAAC;YAED,OAAO;gBACL,EAAE,EAAE,IAAI;gBACR,OAAO,EAAE,sBAAsB,MAAM,EAAE;gBACvC,IAAI,EAAE,EAAE,MAAM,EAAE;aACjB,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"preview-tools.js","sourceRoot":"","sources":["../../src/tools/preview-tools.ts"],"names":[],"mappings":"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"}
@@ -41,6 +41,13 @@ export declare const ToolName: {
41
41
  readonly BrowserSandboxStart: "browser.sandbox.start";
42
42
  readonly WebFetch: "web.fetch";
43
43
  readonly WebSearch: "web.search";
44
+ readonly PreviewStart: "preview.start";
45
+ readonly PreviewOpen: "preview.open";
46
+ readonly PreviewStop: "preview.stop";
47
+ readonly PreviewRestart: "preview.restart";
48
+ readonly PreviewStatus: "preview.status";
49
+ readonly PreviewLogs: "preview.logs";
50
+ readonly PreviewInspect: "preview.inspect";
44
51
  readonly MemorySave: "memory.save";
45
52
  readonly MemorySearch: "memory.search";
46
53
  readonly MemoryForget: "memory.forget";
@@ -1 +1 @@
1
- {"version":3,"file":"tool-names.d.ts","sourceRoot":"","sources":["../../src/tools/tool-names.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8EX,CAAC;AAEX,2CAA2C;AAC3C,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC"}
1
+ {"version":3,"file":"tool-names.d.ts","sourceRoot":"","sources":["../../src/tools/tool-names.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuFX,CAAC;AAEX,2CAA2C;AAC3C,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC"}
@@ -49,6 +49,14 @@ export const ToolName = {
49
49
  BrowserSandboxStart: "browser.sandbox.start",
50
50
  WebFetch: "web.fetch",
51
51
  WebSearch: "web.search",
52
+ // ── Preview ──
53
+ PreviewStart: "preview.start",
54
+ PreviewOpen: "preview.open",
55
+ PreviewStop: "preview.stop",
56
+ PreviewRestart: "preview.restart",
57
+ PreviewStatus: "preview.status",
58
+ PreviewLogs: "preview.logs",
59
+ PreviewInspect: "preview.inspect",
52
60
  // ── Memory ──
53
61
  MemorySave: "memory.save",
54
62
  MemorySearch: "memory.search",
@@ -1 +1 @@
1
- {"version":3,"file":"tool-names.js","sourceRoot":"","sources":["../../src/tools/tool-names.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,iBAAiB;IACjB,WAAW,EAAE,cAAc;IAC3B,cAAc,EAAE,iBAAiB;IAEjC,oBAAoB;IACpB,QAAQ,EAAE,WAAW;IACrB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,YAAY;IACvB,QAAQ,EAAE,WAAW;IACrB,QAAQ,EAAE,WAAW;IAErB,WAAW;IACX,OAAO,EAAE,UAAU;IACnB,SAAS,EAAE,YAAY;IACvB,MAAM,EAAE,SAAS;IACjB,SAAS,EAAE,SAAS;IAEpB,iBAAiB;IACjB,YAAY,EAAE,eAAe;IAC7B,aAAa,EAAE,gBAAgB;IAC/B,YAAY,EAAE,eAAe;IAE7B,yBAAyB;IACzB,OAAO,EAAE,UAAU;IACnB,QAAQ,EAAE,WAAW;IACrB,UAAU,EAAE,aAAa;IACzB,UAAU,EAAE,aAAa;IAEzB,gBAAgB;IAChB,aAAa,EAAE,gBAAgB;IAE/B,qBAAqB;IACrB,WAAW,EAAE,cAAc;IAC3B,aAAa,EAAE,gBAAgB;IAC/B,YAAY,EAAE,eAAe;IAE7B,sBAAsB;IACtB,eAAe,EAAE,kBAAkB;IACnC,eAAe,EAAE,kBAAkB;IACnC,YAAY,EAAE,eAAe;IAC7B,WAAW,EAAE,cAAc;IAC3B,aAAa,EAAE,gBAAgB;IAC/B,aAAa,EAAE,gBAAgB;IAC/B,WAAW,EAAE,cAAc;IAC3B,iBAAiB,EAAE,oBAAoB;IACvC,mBAAmB,EAAE,uBAAuB;IAC5C,QAAQ,EAAE,WAAW;IACrB,SAAS,EAAE,YAAY;IAEvB,eAAe;IACf,UAAU,EAAE,aAAa;IACzB,YAAY,EAAE,eAAe;IAC7B,YAAY,EAAE,eAAe;IAE7B,cAAc;IACd,UAAU,EAAE,aAAa;IAEzB,cAAc;IACd,UAAU,EAAE,aAAa;IACzB,aAAa,EAAE,gBAAgB;IAE/B,8BAA8B;IAC9B,SAAS,EAAE,YAAY;IACvB,WAAW,EAAE,cAAc;IAE3B,gBAAgB;IAChB,WAAW,EAAE,cAAc;IAE3B,oCAAoC;IACpC,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,MAAM;IAChB,WAAW,EAAE,SAAS;IACtB,UAAU,EAAE,QAAQ;IACpB,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,OAAO;IAClB,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,MAAM;CACR,CAAC"}
1
+ {"version":3,"file":"tool-names.js","sourceRoot":"","sources":["../../src/tools/tool-names.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,iBAAiB;IACjB,WAAW,EAAE,cAAc;IAC3B,cAAc,EAAE,iBAAiB;IAEjC,oBAAoB;IACpB,QAAQ,EAAE,WAAW;IACrB,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,YAAY;IACvB,QAAQ,EAAE,WAAW;IACrB,QAAQ,EAAE,WAAW;IAErB,WAAW;IACX,OAAO,EAAE,UAAU;IACnB,SAAS,EAAE,YAAY;IACvB,MAAM,EAAE,SAAS;IACjB,SAAS,EAAE,SAAS;IAEpB,iBAAiB;IACjB,YAAY,EAAE,eAAe;IAC7B,aAAa,EAAE,gBAAgB;IAC/B,YAAY,EAAE,eAAe;IAE7B,yBAAyB;IACzB,OAAO,EAAE,UAAU;IACnB,QAAQ,EAAE,WAAW;IACrB,UAAU,EAAE,aAAa;IACzB,UAAU,EAAE,aAAa;IAEzB,gBAAgB;IAChB,aAAa,EAAE,gBAAgB;IAE/B,qBAAqB;IACrB,WAAW,EAAE,cAAc;IAC3B,aAAa,EAAE,gBAAgB;IAC/B,YAAY,EAAE,eAAe;IAE7B,sBAAsB;IACtB,eAAe,EAAE,kBAAkB;IACnC,eAAe,EAAE,kBAAkB;IACnC,YAAY,EAAE,eAAe;IAC7B,WAAW,EAAE,cAAc;IAC3B,aAAa,EAAE,gBAAgB;IAC/B,aAAa,EAAE,gBAAgB;IAC/B,WAAW,EAAE,cAAc;IAC3B,iBAAiB,EAAE,oBAAoB;IACvC,mBAAmB,EAAE,uBAAuB;IAC5C,QAAQ,EAAE,WAAW;IACrB,SAAS,EAAE,YAAY;IAEvB,gBAAgB;IAChB,YAAY,EAAE,eAAe;IAC7B,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,cAAc;IAC3B,cAAc,EAAE,iBAAiB;IACjC,aAAa,EAAE,gBAAgB;IAC/B,WAAW,EAAE,cAAc;IAC3B,cAAc,EAAE,iBAAiB;IAEjC,eAAe;IACf,UAAU,EAAE,aAAa;IACzB,YAAY,EAAE,eAAe;IAC7B,YAAY,EAAE,eAAe;IAE7B,cAAc;IACd,UAAU,EAAE,aAAa;IAEzB,cAAc;IACd,UAAU,EAAE,aAAa;IACzB,aAAa,EAAE,gBAAgB;IAE/B,8BAA8B;IAC9B,SAAS,EAAE,YAAY;IACvB,WAAW,EAAE,cAAc;IAE3B,gBAAgB;IAChB,WAAW,EAAE,cAAc;IAE3B,oCAAoC;IACpC,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,MAAM;IAChB,WAAW,EAAE,SAAS;IACtB,UAAU,EAAE,QAAQ;IACpB,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,OAAO;IAClB,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,MAAM;CACR,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jait/gateway",
3
- "version": "0.1.145",
3
+ "version": "0.1.147",
4
4
  "description": "Jait AI gateway — local-first AI coding agent with terminal, filesystem, and browser control",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -0,0 +1 @@
1
+ import{c as b,e as l,k as I,g as O,h as P,j as w,l as _,m,t as F,n as M}from"./_baseUniq-DiG-gjzX.js";import{aS as A,aC as E,aT as N,aU as p,aV as S,aW as x,aX as T,aY as $,aZ as C,a_ as v,a$ as G,b0 as L}from"./index-0BjDR9yA.js";var g=1/0,R=17976931348623157e292;function X(n){if(!n)return n===0?n:0;if(n=A(n),n===g||n===-g){var a=n<0?-1:1;return a*R}return n===n?n:0}function Y(n){var a=X(n),r=a%1;return a===a?r?a-r:a:0}function c(n){var a=n==null?0:n.length;return a?b(n):[]}var o=Object.prototype,q=o.hasOwnProperty,j=E(function(n,a){n=Object(n);var r=-1,i=a.length,t=i>2?a[2]:void 0;for(t&&N(a[0],a[1],t)&&(i=1);++r<i;)for(var f=a[r],e=p(f),s=-1,u=e.length;++s<u;){var d=e[s],h=n[d];(h===void 0||S(h,o[d])&&!q.call(n,d))&&(n[d]=f[d])}return n});function k(n){var a=n==null?0:n.length;return a?n[a-1]:void 0}function z(n){return function(a,r,i){var t=Object(a);if(!x(a)){var f=l(r);a=I(a),r=function(s){return f(t[s],s,t)}}var e=n(a,r,i);return e>-1?t[f?a[e]:e]:void 0}}var B=Math.max;function H(n,a,r){var i=n==null?0:n.length;if(!i)return-1;var t=r==null?0:Y(r);return t<0&&(t=B(i+t,0)),O(n,l(a),t)}var nn=z(H);function K(n,a){var r=-1,i=x(n)?Array(n.length):[];return P(n,function(t,f,e){i[++r]=a(t,f,e)}),i}function an(n,a){var r=T(n)?w:K;return r(n,l(a))}var U=Object.prototype,W=U.hasOwnProperty;function Z(n,a){return n!=null&&W.call(n,a)}function rn(n,a){return n!=null&&_(n,a,Z)}function D(n,a){return n<a}function J(n,a,r){for(var i=-1,t=n.length;++i<t;){var f=n[i],e=a(f);if(e!=null&&(s===void 0?e===e&&!$(e):r(e,s)))var s=e,u=f}return u}function tn(n){return n&&n.length?J(n,C,D):void 0}function Q(n,a,r,i){if(!v(n))return n;a=m(a,n);for(var t=-1,f=a.length,e=f-1,s=n;s!=null&&++t<f;){var u=F(a[t]),d=r;if(u==="__proto__"||u==="constructor"||u==="prototype")return n;if(t!=e){var h=s[u];d=void 0,d===void 0&&(d=v(h)?h:G(a[t+1])?[]:{})}L(s,u,d),s=s[u]}return n}function en(n,a,r){for(var i=-1,t=a.length,f={};++i<t;){var e=a[i],s=M(n,e);r(s,e)&&Q(f,m(e,n),s)}return f}export{D as a,J as b,K as c,en as d,tn as e,c as f,nn as g,rn as h,j as i,Y as j,k as l,an as m,X as t};
@@ -0,0 +1 @@
1
+ import{aX as T,aY as U,bo as w,aW as sn,bp as Rn,bq as xn,br as Cn,bs as un,bt as x,aU as B,bu as Mn,bv as on,bw as Fn,bx as L,by as E,bm as gn,bz as R,a_ as ln,bA as mn,bB as D,bC as Dn,bD as Gn,bE as $,b0 as Un,bF as Bn,aV as Nn,bG as X,bH as Kn,bI as Hn,a$ as jn,aZ as cn,bk as qn,bJ as M}from"./index-0BjDR9yA.js";function bn(n,r){for(var e=-1,t=n==null?0:n.length,f=Array(t);++e<t;)f[e]=r(n[e],e,n);return f}var J=w?w.prototype:void 0,Q=J?J.toString:void 0;function dn(n){if(typeof n=="string")return n;if(T(n))return bn(n,dn)+"";if(U(n))return Q?Q.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function Yn(){}function pn(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}function Zn(n,r,e,t){for(var f=n.length,i=e+-1;++i<f;)if(r(n[i],i,n))return i;return-1}function Xn(n){return n!==n}function Jn(n,r,e){for(var t=e-1,f=n.length;++t<f;)if(n[t]===r)return t;return-1}function Qn(n,r,e){return r===r?Jn(n,r,e):Zn(n,Xn,e)}function Wn(n,r){var e=n==null?0:n.length;return!!e&&Qn(n,r,0)>-1}function _(n){return sn(n)?Rn(n):xn(n)}var zn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Vn=/^\w*$/;function N(n,r){if(T(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||U(n)?!0:Vn.test(n)||!zn.test(n)||r!=null&&n in Object(r)}var kn=500;function nr(n){var r=Cn(n,function(t){return e.size===kn&&e.clear(),t}),e=r.cache;return r}var rr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,er=/\\(\\)?/g,tr=nr(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(rr,function(e,t,f,i){r.push(f?i.replace(er,"$1"):t||e)}),r});function ir(n){return n==null?"":dn(n)}function An(n,r){return T(n)?n:N(n,r)?[n]:tr(ir(n))}function C(n){if(typeof n=="string"||U(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function yn(n,r){r=An(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[C(r[e++])];return e&&e==t?n:void 0}function fr(n,r,e){var t=n==null?void 0:yn(n,r);return t===void 0?e:t}function K(n,r){for(var e=-1,t=r.length,f=n.length;++e<t;)n[f+e]=r[e];return n}var W=w?w.isConcatSpreadable:void 0;function ar(n){return T(n)||un(n)||!!(W&&n&&n[W])}function ht(n,r,e,t,f){var i=-1,a=n.length;for(e||(e=ar),f||(f=[]);++i<a;){var s=n[i];e(s)?K(f,s):t||(f[f.length]=s)}return f}function sr(n,r,e,t){var f=-1,i=n==null?0:n.length;for(t&&i&&(e=n[++f]);++f<i;)e=r(e,n[f],f,n);return e}function ur(n,r){return n&&x(r,_(r),n)}function or(n,r){return n&&x(r,B(r),n)}function Tn(n,r){for(var e=-1,t=n==null?0:n.length,f=0,i=[];++e<t;){var a=n[e];r(a,e,n)&&(i[f++]=a)}return i}function hn(){return[]}var gr=Object.prototype,lr=gr.propertyIsEnumerable,z=Object.getOwnPropertySymbols,H=z?function(n){return n==null?[]:(n=Object(n),Tn(z(n),function(r){return lr.call(n,r)}))}:hn;function cr(n,r){return x(n,H(n),r)}var br=Object.getOwnPropertySymbols,wn=br?function(n){for(var r=[];n;)K(r,H(n)),n=Mn(n);return r}:hn;function dr(n,r){return x(n,wn(n),r)}function On(n,r,e){var t=r(n);return T(n)?t:K(t,e(n))}function G(n){return On(n,_,H)}function pr(n){return On(n,B,wn)}var Ar=Object.prototype,yr=Ar.hasOwnProperty;function Tr(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&yr.call(n,"index")&&(e.index=n.index,e.input=n.input),e}function hr(n,r){var e=r?on(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var wr=/\w*$/;function Or(n){var r=new n.constructor(n.source,wr.exec(n));return r.lastIndex=n.lastIndex,r}var V=w?w.prototype:void 0,k=V?V.valueOf:void 0;function _r(n){return k?Object(k.call(n)):{}}var $r="[object Boolean]",Er="[object Date]",Ir="[object Map]",Sr="[object Number]",Pr="[object RegExp]",vr="[object Set]",Lr="[object String]",Rr="[object Symbol]",xr="[object ArrayBuffer]",Cr="[object DataView]",Mr="[object Float32Array]",Fr="[object Float64Array]",mr="[object Int8Array]",Dr="[object Int16Array]",Gr="[object Int32Array]",Ur="[object Uint8Array]",Br="[object Uint8ClampedArray]",Nr="[object Uint16Array]",Kr="[object Uint32Array]";function Hr(n,r,e){var t=n.constructor;switch(r){case xr:return on(n);case $r:case Er:return new t(+n);case Cr:return hr(n,e);case Mr:case Fr:case mr:case Dr:case Gr:case Ur:case Br:case Nr:case Kr:return Fn(n,e);case Ir:return new t;case Sr:case Lr:return new t(n);case Pr:return Or(n);case vr:return new t;case Rr:return _r(n)}}var jr="[object Map]";function qr(n){return L(n)&&E(n)==jr}var nn=R&&R.isMap,Yr=nn?gn(nn):qr,Zr="[object Set]";function Xr(n){return L(n)&&E(n)==Zr}var rn=R&&R.isSet,Jr=rn?gn(rn):Xr,Qr=1,Wr=2,zr=4,_n="[object Arguments]",Vr="[object Array]",kr="[object Boolean]",ne="[object Date]",re="[object Error]",$n="[object Function]",ee="[object GeneratorFunction]",te="[object Map]",ie="[object Number]",En="[object Object]",fe="[object RegExp]",ae="[object Set]",se="[object String]",ue="[object Symbol]",oe="[object WeakMap]",ge="[object ArrayBuffer]",le="[object DataView]",ce="[object Float32Array]",be="[object Float64Array]",de="[object Int8Array]",pe="[object Int16Array]",Ae="[object Int32Array]",ye="[object Uint8Array]",Te="[object Uint8ClampedArray]",he="[object Uint16Array]",we="[object Uint32Array]",g={};g[_n]=g[Vr]=g[ge]=g[le]=g[kr]=g[ne]=g[ce]=g[be]=g[de]=g[pe]=g[Ae]=g[te]=g[ie]=g[En]=g[fe]=g[ae]=g[se]=g[ue]=g[ye]=g[Te]=g[he]=g[we]=!0;g[re]=g[$n]=g[oe]=!1;function F(n,r,e,t,f,i){var a,s=r&Qr,u=r&Wr,b=r&zr;if(a!==void 0)return a;if(!ln(n))return n;var l=T(n);if(l){if(a=Tr(n),!s)return mn(n,a)}else{var o=E(n),c=o==$n||o==ee;if(D(n))return Dn(n,s);if(o==En||o==_n||c&&!f){if(a=u||c?{}:Gn(n),!s)return u?dr(n,or(a,n)):cr(n,ur(a,n))}else{if(!g[o])return f?n:{};a=Hr(n,o,s)}}i||(i=new $);var h=i.get(n);if(h)return h;i.set(n,a),Jr(n)?n.forEach(function(d){a.add(F(d,r,e,d,n,i))}):Yr(n)&&n.forEach(function(d,p){a.set(p,F(d,r,e,p,n,i))});var A=b?u?pr:G:u?B:_,y=l?void 0:A(n);return pn(y||n,function(d,p){y&&(p=d,d=n[p]),Un(a,p,F(d,r,e,p,n,i))}),a}var Oe="__lodash_hash_undefined__";function _e(n){return this.__data__.set(n,Oe),this}function $e(n){return this.__data__.has(n)}function I(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Bn;++r<e;)this.add(n[r])}I.prototype.add=I.prototype.push=_e;I.prototype.has=$e;function Ee(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}function In(n,r){return n.has(r)}var Ie=1,Se=2;function Sn(n,r,e,t,f,i){var a=e&Ie,s=n.length,u=r.length;if(s!=u&&!(a&&u>s))return!1;var b=i.get(n),l=i.get(r);if(b&&l)return b==r&&l==n;var o=-1,c=!0,h=e&Se?new I:void 0;for(i.set(n,r),i.set(r,n);++o<s;){var A=n[o],y=r[o];if(t)var d=a?t(y,A,o,r,n,i):t(A,y,o,n,r,i);if(d!==void 0){if(d)continue;c=!1;break}if(h){if(!Ee(r,function(p,O){if(!In(h,O)&&(A===p||f(A,p,e,t,i)))return h.push(O)})){c=!1;break}}else if(!(A===y||f(A,y,e,t,i))){c=!1;break}}return i.delete(n),i.delete(r),c}function Pe(n){var r=-1,e=Array(n.size);return n.forEach(function(t,f){e[++r]=[f,t]}),e}function j(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var ve=1,Le=2,Re="[object Boolean]",xe="[object Date]",Ce="[object Error]",Me="[object Map]",Fe="[object Number]",me="[object RegExp]",De="[object Set]",Ge="[object String]",Ue="[object Symbol]",Be="[object ArrayBuffer]",Ne="[object DataView]",en=w?w.prototype:void 0,m=en?en.valueOf:void 0;function Ke(n,r,e,t,f,i,a){switch(e){case Ne:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case Be:return!(n.byteLength!=r.byteLength||!i(new X(n),new X(r)));case Re:case xe:case Fe:return Nn(+n,+r);case Ce:return n.name==r.name&&n.message==r.message;case me:case Ge:return n==r+"";case Me:var s=Pe;case De:var u=t&ve;if(s||(s=j),n.size!=r.size&&!u)return!1;var b=a.get(n);if(b)return b==r;t|=Le,a.set(n,r);var l=Sn(s(n),s(r),t,f,i,a);return a.delete(n),l;case Ue:if(m)return m.call(n)==m.call(r)}return!1}var He=1,je=Object.prototype,qe=je.hasOwnProperty;function Ye(n,r,e,t,f,i){var a=e&He,s=G(n),u=s.length,b=G(r),l=b.length;if(u!=l&&!a)return!1;for(var o=u;o--;){var c=s[o];if(!(a?c in r:qe.call(r,c)))return!1}var h=i.get(n),A=i.get(r);if(h&&A)return h==r&&A==n;var y=!0;i.set(n,r),i.set(r,n);for(var d=a;++o<u;){c=s[o];var p=n[c],O=r[c];if(t)var Z=a?t(O,p,c,r,n,i):t(p,O,c,n,r,i);if(!(Z===void 0?p===O||f(p,O,e,t,i):Z)){y=!1;break}d||(d=c=="constructor")}if(y&&!d){var S=n.constructor,P=r.constructor;S!=P&&"constructor"in n&&"constructor"in r&&!(typeof S=="function"&&S instanceof S&&typeof P=="function"&&P instanceof P)&&(y=!1)}return i.delete(n),i.delete(r),y}var Ze=1,tn="[object Arguments]",fn="[object Array]",v="[object Object]",Xe=Object.prototype,an=Xe.hasOwnProperty;function Je(n,r,e,t,f,i){var a=T(n),s=T(r),u=a?fn:E(n),b=s?fn:E(r);u=u==tn?v:u,b=b==tn?v:b;var l=u==v,o=b==v,c=u==b;if(c&&D(n)){if(!D(r))return!1;a=!0,l=!1}if(c&&!l)return i||(i=new $),a||Kn(n)?Sn(n,r,e,t,f,i):Ke(n,r,u,e,t,f,i);if(!(e&Ze)){var h=l&&an.call(n,"__wrapped__"),A=o&&an.call(r,"__wrapped__");if(h||A){var y=h?n.value():n,d=A?r.value():r;return i||(i=new $),f(y,d,e,t,i)}}return c?(i||(i=new $),Ye(n,r,e,t,f,i)):!1}function q(n,r,e,t,f){return n===r?!0:n==null||r==null||!L(n)&&!L(r)?n!==n&&r!==r:Je(n,r,e,t,q,f)}var Qe=1,We=2;function ze(n,r,e,t){var f=e.length,i=f;if(n==null)return!i;for(n=Object(n);f--;){var a=e[f];if(a[2]?a[1]!==n[a[0]]:!(a[0]in n))return!1}for(;++f<i;){a=e[f];var s=a[0],u=n[s],b=a[1];if(a[2]){if(u===void 0&&!(s in n))return!1}else{var l=new $,o;if(!(o===void 0?q(b,u,Qe|We,t,l):o))return!1}}return!0}function Pn(n){return n===n&&!ln(n)}function Ve(n){for(var r=_(n),e=r.length;e--;){var t=r[e],f=n[t];r[e]=[t,f,Pn(f)]}return r}function vn(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function ke(n){var r=Ve(n);return r.length==1&&r[0][2]?vn(r[0][0],r[0][1]):function(e){return e===n||ze(e,n,r)}}function nt(n,r){return n!=null&&r in Object(n)}function rt(n,r,e){r=An(r,n);for(var t=-1,f=r.length,i=!1;++t<f;){var a=C(r[t]);if(!(i=n!=null&&e(n,a)))break;n=n[a]}return i||++t!=f?i:(f=n==null?0:n.length,!!f&&Hn(f)&&jn(a,f)&&(T(n)||un(n)))}function et(n,r){return n!=null&&rt(n,r,nt)}var tt=1,it=2;function ft(n,r){return N(n)&&Pn(r)?vn(C(n),r):function(e){var t=fr(e,n);return t===void 0&&t===r?et(e,n):q(r,t,tt|it)}}function at(n){return function(r){return r==null?void 0:r[n]}}function st(n){return function(r){return yn(r,n)}}function ut(n){return N(n)?at(C(n)):st(n)}function Ln(n){return typeof n=="function"?n:n==null?cn:typeof n=="object"?T(n)?ft(n[0],n[1]):ke(n):ut(n)}function ot(n,r){return n&&qn(n,r,_)}function gt(n,r){return function(e,t){if(e==null)return e;if(!sn(e))return n(e,t);for(var f=e.length,i=-1,a=Object(e);++i<f&&t(a[i],i,a)!==!1;);return e}}var Y=gt(ot);function lt(n){return typeof n=="function"?n:cn}function wt(n,r){var e=T(n)?pn:Y;return e(n,lt(r))}function ct(n,r){var e=[];return Y(n,function(t,f,i){r(t,f,i)&&e.push(t)}),e}function Ot(n,r){var e=T(n)?Tn:ct;return e(n,Ln(r))}function bt(n,r){return bn(r,function(e){return n[e]})}function _t(n){return n==null?[]:bt(n,_(n))}function $t(n){return n===void 0}function dt(n,r,e,t,f){return f(n,function(i,a,s){e=t?(t=!1,i):r(e,i,a,s)}),e}function Et(n,r,e){var t=T(n)?sr:dt,f=arguments.length<3;return t(n,Ln(r),e,f,Y)}var pt=1/0,At=M&&1/j(new M([,-0]))[1]==pt?function(n){return new M(n)}:Yn,yt=200;function It(n,r,e){var t=-1,f=Wn,i=n.length,a=!0,s=[],u=s;if(i>=yt){var b=r?null:At(n);if(b)return j(b);a=!1,f=In,u=new I}else u=r?[]:s;n:for(;++t<i;){var l=n[t],o=r?r(l):l;if(l=l!==0?l:0,a&&o===o){for(var c=u.length;c--;)if(u[c]===o)continue n;r&&u.push(o),s.push(l)}else f(u,o,e)||(u!==s&&u.push(o),s.push(l))}return s}export{ct as A,Ee as B,Yn as C,I as S,It as a,F as b,ht as c,wt as d,Ln as e,Ot as f,Zn as g,Y as h,$t as i,bn as j,_ as k,rt as l,An as m,yn as n,lt as o,ot as p,et as q,Et as r,ir as s,C as t,Wn as u,_t as v,In as w,Qn as x,pr as y,Tn as z};
@@ -0,0 +1 @@
1
+ import{a0 as ln,a1 as an,a2 as y,a3 as tn,a4 as H,a5 as q,a6 as _,a7 as un,a8 as rn,a9 as L,aa as o,ab as B,ac as sn,ad as on,ae as fn}from"./index-0BjDR9yA.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,C,a){var O=I-l,i=D-h,n=C-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 W(l,h,I,D,v,A,C){var a=l-I,O=h-D,i=(C?A:-A)/L(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,F=(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)*L(fn(0,T*T*R-P*P)),j=(P*g-m*S)/R,z=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=j-F,e=z-t,r=w-F,G=p-t;return x*x+e*e>r*r+G*G&&(j=w,z=p),{cx:j,cy:z,x01:-n,y01:-d,x11:j*(v/T-1),y11:z*(v/T-1)}}function hn(){var l=cn,h=yn,I=B(0),D=null,v=gn,A=dn,C=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)-an,c=A.apply(this,arguments)-an,F=un(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(F>tn-y)a.moveTo(s*H(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*H(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=F,S=F,j=C.apply(this,arguments)/2,z=j>y&&(D?+D.apply(this,arguments):L(u*u+s*s)),w=_(un(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if(z>y){var G=sn(z/u*q(j)),M=sn(z/s*q(j));(P-=G*2)>y?(G*=t?1:-1,R+=G,T-=G):(P=0,R=T=(f+c)/2),(S-=M*2)>y?(M*=t?1:-1,m+=M,g-=M):(S=0,m=g=(f+c)/2)}var J=s*H(m),K=s*q(m),N=u*H(T),Q=u*q(T);if(w>y){var U=s*H(g),V=s*q(g),X=u*H(R),Y=u*q(R),E;if(F<rn)if(E=pn(J,K,X,Y,U,V,N,Q)){var Z=J-E[0],$=K-E[1],b=U-E[0],k=V-E[1],nn=1/q(on((Z*b+$*k)/(L(Z*Z+$*$)*L(b*b+k*k)))/2),en=L(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=W(X,Y,J,K,s,x,t),r=W(U,V,N,Q,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(J,K),a.arc(0,0,s,m,g,!t)):a.moveTo(J,K),!(u>y)||!(P>y)?a.lineTo(N,Q):p>y?(e=W(N,Q,U,V,u,-p,t),r=W(J,K,X,Y,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-rn/2;return[H(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:B(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:B(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:B(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:B(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:B(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:B(+n),i):A},i.padAngle=function(n){return arguments.length?(C=typeof n=="function"?n:B(+n),i):C},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};