agentstudio 0.1.30 → 0.2.2

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 (120) hide show
  1. package/index.d.ts.map +1 -1
  2. package/index.js +24 -4
  3. package/index.js.map +1 -1
  4. package/package.json +2 -1
  5. package/public/assets/{AgentsPage-VVVyzMq0.js → AgentsPage-DgoZNP6l.js} +2 -2
  6. package/public/assets/{Button-B9AQtJ7x.js → Button-BHiMThm4.js} +1 -1
  7. package/public/assets/{ChatPage-p1JCfA2A.js → ChatPage-LoTJrT43.js} +4 -4
  8. package/public/assets/{CommandForm-B_beYCv3.js → CommandForm-CZRscRtm.js} +2 -2
  9. package/public/assets/{CommandsPage-Blc1Kt4Z.js → CommandsPage-CwEoyASk.js} +1 -1
  10. package/public/assets/{DashboardPage-Dokn4y-N.js → DashboardPage-BSi_T1tY.js} +1 -1
  11. package/public/assets/{FileBrowser-Dg9PfXOo.js → FileBrowser-Df-zwNDa.js} +4 -4
  12. package/public/assets/FileExplorer-BB3suHzW.js +1 -0
  13. package/public/assets/GeneralSettingsPage-DcGmAzci.js +1 -0
  14. package/public/assets/LandingPage-DPKvTTja.js +1 -0
  15. package/public/assets/{LoginPage-D2Ykhr7D.js → LoginPage-BPJUgLru.js} +5 -5
  16. package/public/assets/McpAdminSettingsPage-CZZS-pa0.js +7 -0
  17. package/public/assets/{McpPage-DkD9BOrP.js → McpPage-CPF7txxc.js} +1 -1
  18. package/public/assets/MemorySettingsPage-YenW4l-g.js +1 -0
  19. package/public/assets/PluginsPage-zlAB63Im.js +1 -0
  20. package/public/assets/{ProjectSelector-B1_umywl.js → ProjectSelector-Bq0NQ_bV.js} +1 -1
  21. package/public/assets/{ProjectsPage-CQ8zwJ5D.js → ProjectsPage-BMBRp4RN.js} +5 -5
  22. package/public/assets/ScheduledTasksPage-B_hOD6AS.js +1 -0
  23. package/public/assets/{SettingsLayout-CccK5RVj.js → SettingsLayout-CY9Siffq.js} +1 -1
  24. package/public/assets/{SkillsPage-D_LECy2S.js → SkillsPage-X-LMnwZd.js} +1 -1
  25. package/public/assets/{SubagentForm-D9EFQxlZ.js → SubagentForm-Cq06CQqr.js} +3 -3
  26. package/public/assets/SubagentsPage-DIG_rKjQ.js +1 -0
  27. package/public/assets/SystemInfoPage-CWgKWnQg.js +1 -0
  28. package/public/assets/{TelemetrySettingsPage-DMngnKDW.js → TelemetrySettingsPage-BLnMagRZ.js} +1 -1
  29. package/public/assets/{ToastTestPage-CafmBcnU.js → ToastTestPage-CQ0nobQd.js} +1 -1
  30. package/public/assets/{ToolsList-CnepUgI-.js → ToolsList-C9LELdNX.js} +1 -1
  31. package/public/assets/UnifiedToolSelector-Bw-E7HW4.js +1 -0
  32. package/public/assets/{VersionSettingsPage-D9hYO4VL.js → VersionSettingsPage-BxjDPWm0.js} +2 -2
  33. package/public/assets/WebSocketTunnelPage-CQWcZK_H.js +1 -0
  34. package/public/assets/{_basePickBy-lvDxpUoY.js → _basePickBy-D_S4EWYL.js} +1 -1
  35. package/public/assets/{_baseUniq-DyqfOLmW.js → _baseUniq-BmQef9o6.js} +1 -1
  36. package/public/assets/{agents-DmLFhp96.js → agents-D9dWnZr0.js} +1 -1
  37. package/public/assets/{arc-DuR7lLva.js → arc-DzCTkvPU.js} +1 -1
  38. package/public/assets/{architectureDiagram-VXUJARFQ-CkKlTxxx.js → architectureDiagram-VXUJARFQ-8nWlVbiO.js} +1 -1
  39. package/public/assets/{blockDiagram-VD42YOAC-DdR02awp.js → blockDiagram-VD42YOAC-DbHo3vzo.js} +1 -1
  40. package/public/assets/{c4Diagram-YG6GDRKO-MlkMVL2r.js → c4Diagram-YG6GDRKO-DqFGiZ7Y.js} +1 -1
  41. package/public/assets/channel-DlGw39mX.js +1 -0
  42. package/public/assets/{chunk-4BX2VUAB-BI02zXQl.js → chunk-4BX2VUAB-KZtUHSw3.js} +1 -1
  43. package/public/assets/{chunk-55IACEB6-DtWZPbH-.js → chunk-55IACEB6-DTotxzVH.js} +1 -1
  44. package/public/assets/{chunk-B4BG7PRW-yLeRKRZl.js → chunk-B4BG7PRW-CkjDO6x_.js} +1 -1
  45. package/public/assets/{chunk-DI55MBZ5-DF-5ELa5.js → chunk-DI55MBZ5-ZN0hc9BQ.js} +1 -1
  46. package/public/assets/{chunk-FMBD7UC4-BjJNxbrL.js → chunk-FMBD7UC4--jXmtjeY.js} +1 -1
  47. package/public/assets/{chunk-QN33PNHL-rs7Z3IPT.js → chunk-QN33PNHL-D-FiWiLB.js} +1 -1
  48. package/public/assets/{chunk-QZHKN3VN-DoIXOkrg.js → chunk-QZHKN3VN-BRs4hln6.js} +1 -1
  49. package/public/assets/{chunk-TZMSLE5B-xkKgCGO2.js → chunk-TZMSLE5B-BUZTflc7.js} +1 -1
  50. package/public/assets/classDiagram-2ON5EDUG-7Lo3C-C9.js +1 -0
  51. package/public/assets/classDiagram-v2-WZHVMYZB-7Lo3C-C9.js +1 -0
  52. package/public/assets/clone-180En6VP.js +1 -0
  53. package/public/assets/{cose-bilkent-S5V4N54A-BIz6tY7t.js → cose-bilkent-S5V4N54A-s2WN1XmV.js} +1 -1
  54. package/public/assets/{dagre-6UL2VRFP-CponDeYZ.js → dagre-6UL2VRFP-CxaKwQyB.js} +1 -1
  55. package/public/assets/{diagram-PSM6KHXK-D31S6iiK.js → diagram-PSM6KHXK-SU1hlbjn.js} +1 -1
  56. package/public/assets/{diagram-QEK2KX5R-C6RWP-cs.js → diagram-QEK2KX5R-hcM85tep.js} +1 -1
  57. package/public/assets/{diagram-S2PKOQOG-BKs_7af1.js → diagram-S2PKOQOG-BOmtKWhQ.js} +1 -1
  58. package/public/assets/{erDiagram-Q2GNP2WA-Ro9hB6-s.js → erDiagram-Q2GNP2WA-CsTay3Qr.js} +1 -1
  59. package/public/assets/{flowDiagram-NV44I4VS-IKSFEVlB.js → flowDiagram-NV44I4VS-QLwVU4W3.js} +1 -1
  60. package/public/assets/{ganttDiagram-LVOFAZNH-CPDNSzAq.js → ganttDiagram-LVOFAZNH-CEJd76u6.js} +1 -1
  61. package/public/assets/{gitGraphDiagram-NY62KEGX-c_yb5ztL.js → gitGraphDiagram-NY62KEGX-Cr7KuVc8.js} +1 -1
  62. package/public/assets/{graph-BoMdSZEp.js → graph-B12xs1JB.js} +1 -1
  63. package/public/assets/{index-BUj-AMWq.js → index-BFYHztzB.js} +27 -27
  64. package/public/assets/index-isG0t1ZM.css +1 -0
  65. package/public/assets/infoDiagram-F6ZHWCRC-B6PyESp0.js +2 -0
  66. package/public/assets/{journeyDiagram-XKPGCS4Q-D4izttrO.js → journeyDiagram-XKPGCS4Q-DSlyGZSv.js} +1 -1
  67. package/public/assets/{kanban-definition-3W4ZIXB7-DE7WCrea.js → kanban-definition-3W4ZIXB7-DbDLw__g.js} +1 -1
  68. package/public/assets/{layout-BezNHWMi.js → layout-OtboCb25.js} +1 -1
  69. package/public/assets/{linear-KRX5ckNK.js → linear-Bg3HtxIB.js} +1 -1
  70. package/public/assets/{mindmap-definition-VGOIOE7T-Dlr09KqO.js → mindmap-definition-VGOIOE7T-DZ4bp0qm.js} +1 -1
  71. package/public/assets/{pieDiagram-ADFJNKIX-Bbzzfu-z.js → pieDiagram-ADFJNKIX-Am2n8jc0.js} +1 -1
  72. package/public/assets/{quadrantDiagram-AYHSOK5B-DubsKDPG.js → quadrantDiagram-AYHSOK5B-DPm8iQzH.js} +1 -1
  73. package/public/assets/{requirementDiagram-UZGBJVZJ-B-rG6Gty.js → requirementDiagram-UZGBJVZJ-hVW5YE3R.js} +1 -1
  74. package/public/assets/{sankeyDiagram-TZEHDZUN-DU7Rgr_5.js → sankeyDiagram-TZEHDZUN-DX8gGHoq.js} +1 -1
  75. package/public/assets/{sequenceDiagram-WL72ISMW-BRlH6dPX.js → sequenceDiagram-WL72ISMW-Brl8T0m9.js} +1 -1
  76. package/public/assets/{stateDiagram-FKZM4ZOC-BeAzs0_-.js → stateDiagram-FKZM4ZOC-CxrXSnfX.js} +1 -1
  77. package/public/assets/stateDiagram-v2-4FDKWEC3-BJfGHaLv.js +1 -0
  78. package/public/assets/{table-aqcpYX4Z.js → table-D-FJ6K6j.js} +1 -1
  79. package/public/assets/{timeline-definition-IT6M3QCI-BU_B1RmT.js → timeline-definition-IT6M3QCI-CO6fKxuR.js} +1 -1
  80. package/public/assets/{tools-XV29tg8x.js → tools-zTM46-tZ.js} +1 -1
  81. package/public/assets/{treemap-KMMF4GRG-CP2M7QfX.js → treemap-KMMF4GRG-BsoblFM5.js} +1 -1
  82. package/public/assets/{ui-components-ND8WdSiV.js → ui-components-BsYwJvCF.js} +138 -123
  83. package/public/assets/{useAgents-COcSvqDE.js → useAgents-BlQGwXjx.js} +1 -1
  84. package/public/assets/{useClaudeVersions-C8b4adpW.js → useClaudeVersions-DJ6VKG1y.js} +1 -1
  85. package/public/assets/{useCommands-D79pjz3C.js → useCommands-DOxDeFSx.js} +1 -1
  86. package/public/assets/{useProjects-CP0Q5-jg.js → useProjects-cgsJNlsy.js} +1 -1
  87. package/public/assets/{useSessions-C2gXprHI.js → useSessions-BAxZ6l2n.js} +1 -1
  88. package/public/assets/{xychartDiagram-PRI3JC2R-OdQKUqyr.js → xychartDiagram-PRI3JC2R-B6g-H_PO.js} +1 -1
  89. package/public/index.html +5 -5
  90. package/routes/projects.d.ts.map +1 -1
  91. package/routes/projects.js +80 -1
  92. package/routes/projects.js.map +1 -1
  93. package/routes/tunnel.d.ts +10 -0
  94. package/routes/tunnel.d.ts.map +1 -0
  95. package/routes/tunnel.js +296 -0
  96. package/routes/tunnel.js.map +1 -0
  97. package/services/a2a/a2aQueryService.d.ts.map +1 -1
  98. package/services/a2a/a2aQueryService.js +95 -52
  99. package/services/a2a/a2aQueryService.js.map +1 -1
  100. package/services/tunnelService.d.ts +148 -0
  101. package/services/tunnelService.d.ts.map +1 -0
  102. package/services/tunnelService.js +406 -0
  103. package/services/tunnelService.js.map +1 -0
  104. package/public/assets/FileExplorer-B7BFy0Tu.js +0 -1
  105. package/public/assets/GeneralSettingsPage-DLSSSadp.js +0 -1
  106. package/public/assets/LandingPage-Ck2WpTto.js +0 -1
  107. package/public/assets/McpAdminSettingsPage-BAKOckWx.js +0 -7
  108. package/public/assets/MemorySettingsPage-CiUs5u2g.js +0 -1
  109. package/public/assets/PluginsPage-CkXNjZMq.js +0 -1
  110. package/public/assets/ScheduledTasksPage-BjSzD4T2.js +0 -1
  111. package/public/assets/SubagentsPage-D_sdehiT.js +0 -1
  112. package/public/assets/SystemInfoPage-vz5Ey9DK.js +0 -1
  113. package/public/assets/UnifiedToolSelector-CnFTY88B.js +0 -1
  114. package/public/assets/channel-DHM1jRJ0.js +0 -1
  115. package/public/assets/classDiagram-2ON5EDUG-BJtIba9N.js +0 -1
  116. package/public/assets/classDiagram-v2-WZHVMYZB-BJtIba9N.js +0 -1
  117. package/public/assets/clone-Bbn_OKGL.js +0 -1
  118. package/public/assets/index-CEBbr0XW.css +0 -1
  119. package/public/assets/infoDiagram-F6ZHWCRC-904Ek2Zh.js +0 -2
  120. package/public/assets/stateDiagram-v2-4FDKWEC3-C0c8d9Xs.js +0 -1
@@ -0,0 +1,296 @@
1
+ "use strict";
2
+ /**
3
+ * Tunnel Routes
4
+ *
5
+ * API endpoints for managing WebSocket tunnel connection.
6
+ * Allows users to configure and control the tunnel from the UI.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ const express_1 = require("express");
10
+ const tunnelService_js_1 = require("../services/tunnelService.js");
11
+ const router = (0, express_1.Router)();
12
+ /**
13
+ * GET /api/tunnel/status
14
+ * Get current tunnel connection status
15
+ */
16
+ router.get('/status', async (_req, res) => {
17
+ try {
18
+ const status = tunnelService_js_1.tunnelService.getStatus();
19
+ res.json(status);
20
+ }
21
+ catch (error) {
22
+ console.error('[Tunnel API] Error getting status:', error);
23
+ res.status(500).json({
24
+ error: 'Failed to get tunnel status',
25
+ details: error instanceof Error ? error.message : String(error),
26
+ });
27
+ }
28
+ });
29
+ /**
30
+ * GET /api/tunnel/config
31
+ * Get current tunnel configuration (token is masked)
32
+ */
33
+ router.get('/config', async (_req, res) => {
34
+ try {
35
+ const config = tunnelService_js_1.tunnelService.getConfig();
36
+ res.json(config);
37
+ }
38
+ catch (error) {
39
+ console.error('[Tunnel API] Error getting config:', error);
40
+ res.status(500).json({
41
+ error: 'Failed to get tunnel config',
42
+ details: error instanceof Error ? error.message : String(error),
43
+ });
44
+ }
45
+ });
46
+ /**
47
+ * PUT /api/tunnel/config
48
+ * Update tunnel configuration
49
+ *
50
+ * Body: {
51
+ * enabled?: boolean,
52
+ * serverUrl?: string,
53
+ * token?: string,
54
+ * reconnectInterval?: number,
55
+ * maxReconnectAttempts?: number
56
+ * }
57
+ */
58
+ router.put('/config', async (req, res) => {
59
+ try {
60
+ const newConfig = {};
61
+ // Validate and extract config fields
62
+ if (typeof req.body.enabled === 'boolean') {
63
+ newConfig.enabled = req.body.enabled;
64
+ }
65
+ if (typeof req.body.serverUrl === 'string' && req.body.serverUrl.trim()) {
66
+ newConfig.serverUrl = req.body.serverUrl.trim();
67
+ }
68
+ if (typeof req.body.token === 'string') {
69
+ // Allow empty token to clear it
70
+ newConfig.token = req.body.token.trim();
71
+ }
72
+ if (typeof req.body.reconnectInterval === 'number' && req.body.reconnectInterval > 0) {
73
+ newConfig.reconnectInterval = req.body.reconnectInterval;
74
+ }
75
+ if (typeof req.body.maxReconnectAttempts === 'number' && req.body.maxReconnectAttempts >= 0) {
76
+ newConfig.maxReconnectAttempts = req.body.maxReconnectAttempts;
77
+ }
78
+ if (req.body.protocol === 'https' || req.body.protocol === 'http') {
79
+ newConfig.protocol = req.body.protocol;
80
+ }
81
+ // Determine if we should reconnect
82
+ const shouldReconnect = 'token' in newConfig || 'serverUrl' in newConfig || 'enabled' in newConfig;
83
+ await tunnelService_js_1.tunnelService.updateConfig(newConfig, shouldReconnect);
84
+ res.json({
85
+ success: true,
86
+ config: tunnelService_js_1.tunnelService.getConfig(),
87
+ status: tunnelService_js_1.tunnelService.getStatus(),
88
+ });
89
+ }
90
+ catch (error) {
91
+ console.error('[Tunnel API] Error updating config:', error);
92
+ res.status(500).json({
93
+ error: 'Failed to update tunnel config',
94
+ details: error instanceof Error ? error.message : String(error),
95
+ });
96
+ }
97
+ });
98
+ /**
99
+ * POST /api/tunnel/connect
100
+ * Manually connect to the tunnel server
101
+ */
102
+ router.post('/connect', async (_req, res) => {
103
+ try {
104
+ await tunnelService_js_1.tunnelService.connect();
105
+ res.json({
106
+ success: true,
107
+ status: tunnelService_js_1.tunnelService.getStatus(),
108
+ });
109
+ }
110
+ catch (error) {
111
+ console.error('[Tunnel API] Error connecting:', error);
112
+ res.status(500).json({
113
+ error: 'Failed to connect tunnel',
114
+ details: error instanceof Error ? error.message : String(error),
115
+ });
116
+ }
117
+ });
118
+ /**
119
+ * POST /api/tunnel/disconnect
120
+ * Manually disconnect from the tunnel server
121
+ */
122
+ router.post('/disconnect', async (_req, res) => {
123
+ try {
124
+ tunnelService_js_1.tunnelService.disconnect();
125
+ res.json({
126
+ success: true,
127
+ status: tunnelService_js_1.tunnelService.getStatus(),
128
+ });
129
+ }
130
+ catch (error) {
131
+ console.error('[Tunnel API] Error disconnecting:', error);
132
+ res.status(500).json({
133
+ error: 'Failed to disconnect tunnel',
134
+ details: error instanceof Error ? error.message : String(error),
135
+ });
136
+ }
137
+ });
138
+ /**
139
+ * POST /api/tunnel/test
140
+ * Test tunnel connection with current configuration
141
+ */
142
+ router.post('/test', async (_req, res) => {
143
+ try {
144
+ const result = await tunnelService_js_1.tunnelService.testConnection();
145
+ res.json(result);
146
+ }
147
+ catch (error) {
148
+ console.error('[Tunnel API] Error testing connection:', error);
149
+ res.status(500).json({
150
+ success: false,
151
+ error: error instanceof Error ? error.message : String(error),
152
+ });
153
+ }
154
+ });
155
+ /**
156
+ * GET /api/tunnel/check-name
157
+ * Check if a tunnel name is available
158
+ *
159
+ * Query: { name: string }
160
+ */
161
+ router.get('/check-name', async (req, res) => {
162
+ try {
163
+ const name = req.query.name;
164
+ const serverUrl = req.query.serverUrl;
165
+ if (!name) {
166
+ return res.status(400).json({
167
+ available: false,
168
+ reason: '请提供隧道名称',
169
+ });
170
+ }
171
+ // Update serverUrl in config before checking name
172
+ if (serverUrl) {
173
+ await tunnelService_js_1.tunnelService.saveConfig({ serverUrl });
174
+ }
175
+ const result = await tunnelService_js_1.tunnelService.checkTunnelName(name);
176
+ res.json(result);
177
+ }
178
+ catch (error) {
179
+ console.error('[Tunnel API] Error checking name:', error);
180
+ res.status(500).json({
181
+ available: false,
182
+ reason: error instanceof Error ? error.message : String(error),
183
+ });
184
+ }
185
+ });
186
+ /**
187
+ * POST /api/tunnel/create-tunnel
188
+ * Create a new tunnel and get the token
189
+ *
190
+ * Body: { name: string, autoConnect?: boolean, protocol?: 'https' | 'http' }
191
+ */
192
+ router.post('/create-tunnel', async (req, res) => {
193
+ try {
194
+ const { name, serverUrl, autoConnect, protocol, websocketUrl, domainSuffix } = req.body;
195
+ if (!name || typeof name !== 'string') {
196
+ return res.status(400).json({
197
+ success: false,
198
+ error: '请提供隧道名称',
199
+ });
200
+ }
201
+ // Update serverUrl in config before creating tunnel
202
+ if (serverUrl) {
203
+ await tunnelService_js_1.tunnelService.saveConfig({ serverUrl });
204
+ }
205
+ // Validate protocol
206
+ const validProtocol = protocol === 'http' ? 'http' : 'https';
207
+ const result = await tunnelService_js_1.tunnelService.createAndSave(name.trim(), autoConnect === true, validProtocol, websocketUrl, domainSuffix);
208
+ if (result.success) {
209
+ res.json({
210
+ ...result,
211
+ config: tunnelService_js_1.tunnelService.getConfig(),
212
+ status: tunnelService_js_1.tunnelService.getStatus(),
213
+ });
214
+ }
215
+ else {
216
+ res.status(400).json(result);
217
+ }
218
+ }
219
+ catch (error) {
220
+ console.error('[Tunnel API] Error creating tunnel:', error);
221
+ res.status(500).json({
222
+ success: false,
223
+ error: error instanceof Error ? error.message : String(error),
224
+ });
225
+ }
226
+ });
227
+ /**
228
+ * DELETE /api/tunnel/config - Delete tunnel configuration
229
+ * Clears all tunnel configuration and disconnects if connected
230
+ */
231
+ router.delete('/config', async (_req, res) => {
232
+ try {
233
+ // Disconnect if connected
234
+ tunnelService_js_1.tunnelService.disconnect();
235
+ // Reset configuration to defaults
236
+ await tunnelService_js_1.tunnelService.saveConfig({
237
+ enabled: false,
238
+ serverUrl: 'https://agentstudio.woa.com',
239
+ token: '',
240
+ tunnelName: '',
241
+ domainSuffix: '',
242
+ websocketUrl: '',
243
+ protocol: 'https',
244
+ });
245
+ res.json({
246
+ success: true,
247
+ message: '隧道配置已删除',
248
+ config: tunnelService_js_1.tunnelService.getConfig(),
249
+ status: tunnelService_js_1.tunnelService.getStatus(),
250
+ });
251
+ }
252
+ catch (error) {
253
+ console.error('[Tunnel API] Error deleting tunnel config:', error);
254
+ res.status(500).json({
255
+ success: false,
256
+ error: error instanceof Error ? error.message : String(error),
257
+ });
258
+ }
259
+ });
260
+ /**
261
+ * POST /api/tunnel/server-info - Get tunnel server info (proxy to avoid CORS)
262
+ * Fetches server info from the specified tunnel server URL
263
+ */
264
+ router.post('/server-info', async (req, res) => {
265
+ try {
266
+ const { serverUrl } = req.body;
267
+ if (!serverUrl || typeof serverUrl !== 'string') {
268
+ return res.status(400).json({
269
+ success: false,
270
+ error: '请提供服务器地址',
271
+ });
272
+ }
273
+ // Normalize URL - remove trailing slashes
274
+ const baseUrl = serverUrl.replace(/\/+$/, '');
275
+ const infoUrl = `${baseUrl}/api/info`;
276
+ console.log(`[Tunnel API] Fetching server info from: ${infoUrl}`);
277
+ const response = await fetch(infoUrl);
278
+ if (!response.ok) {
279
+ throw new Error(`服务器返回错误: HTTP ${response.status}`);
280
+ }
281
+ const data = await response.json();
282
+ res.json({
283
+ success: true,
284
+ data,
285
+ });
286
+ }
287
+ catch (error) {
288
+ console.error('[Tunnel API] Error fetching server info:', error);
289
+ res.status(500).json({
290
+ success: false,
291
+ error: error instanceof Error ? error.message : String(error),
292
+ });
293
+ }
294
+ });
295
+ exports.default = router;
296
+ //# sourceMappingURL=tunnel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tunnel.js","sourceRoot":"","sources":["../../src/routes/tunnel.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"a2aQueryService.d.ts","sourceRoot":"","sources":["../../../src/services/a2a/a2aQueryService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAS,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,OAAO;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA4BD;;;;;;;;;;;;GAYG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,SAAS,EAC9D,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,GAChD,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CA0EjF;AAED;;;;;;;;;GASG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,SAAS,EAC9D,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,GACvC,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAiDvC"}
1
+ {"version":3,"file":"a2aQueryService.d.ts","sourceRoot":"","sources":["../../../src/services/a2a/a2aQueryService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAS,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,OAAO;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA4BD;;;;;;;;;;;;GAYG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,SAAS,EAC9D,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,GAChD,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAoGjF;AAED;;;;;;;;;GASG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,SAAS,EAC9D,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,GACvC,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CA4EvC"}
@@ -72,46 +72,67 @@ async function executeA2AQuery(message, images, options, onMessage) {
72
72
  type: 'text',
73
73
  text: message
74
74
  });
75
- // Create the message generator
76
- const messageGen = createA2AMessageGenerator(messageContent);
77
- let sessionId = null;
78
- let fullResponse = '';
79
- let tokensUsed = 0;
80
- console.log(`🚀 [A2A Query] Starting one-shot query with resume=${options.resume || 'none'}`);
81
- // Execute the query
82
- const queryResult = (0, claude_agent_sdk_1.query)({
83
- prompt: messageGen,
84
- options: options
85
- });
86
- // Process responses
87
- for await (const sdkMessage of queryResult) {
88
- // Capture session ID from system init message
89
- if (sdkMessage.type === 'system' && sdkMessage.subtype === 'init' && sdkMessage.session_id) {
90
- sessionId = sdkMessage.session_id;
91
- console.log(`📝 [A2A Query] Captured sessionId: ${sessionId}`);
92
- }
93
- // Also check for session_id on any message
94
- if (sdkMessage.session_id && !sessionId) {
95
- sessionId = sdkMessage.session_id;
96
- }
97
- // Extract assistant response text
98
- if (sdkMessage.type === 'assistant' && sdkMessage.message?.content) {
99
- for (const block of sdkMessage.message.content) {
100
- if (block.type === 'text') {
101
- fullResponse += block.text;
75
+ // Internal function to execute the query
76
+ async function executeQuery(queryOptions) {
77
+ // Create the message generator (must be created fresh for each attempt)
78
+ const messageGen = createA2AMessageGenerator(messageContent);
79
+ let sessionId = null;
80
+ let fullResponse = '';
81
+ let tokensUsed = 0;
82
+ console.log(`🚀 [A2A Query] Starting one-shot query with resume=${queryOptions.resume || 'none'}`);
83
+ // Execute the query
84
+ const queryResult = (0, claude_agent_sdk_1.query)({
85
+ prompt: messageGen,
86
+ options: queryOptions
87
+ });
88
+ // Process responses
89
+ for await (const sdkMessage of queryResult) {
90
+ // Capture session ID from system init message
91
+ if (sdkMessage.type === 'system' && sdkMessage.subtype === 'init' && sdkMessage.session_id) {
92
+ sessionId = sdkMessage.session_id;
93
+ console.log(`📝 [A2A Query] Captured sessionId: ${sessionId}`);
94
+ }
95
+ // Also check for session_id on any message
96
+ if (sdkMessage.session_id && !sessionId) {
97
+ sessionId = sdkMessage.session_id;
98
+ }
99
+ // Extract assistant response text
100
+ if (sdkMessage.type === 'assistant' && sdkMessage.message?.content) {
101
+ for (const block of sdkMessage.message.content) {
102
+ if (block.type === 'text') {
103
+ fullResponse += block.text;
104
+ }
102
105
  }
103
106
  }
107
+ // Extract token usage
108
+ if (sdkMessage.type === 'assistant' && sdkMessage.usage) {
109
+ const usage = sdkMessage.usage;
110
+ tokensUsed = (usage.input_tokens || 0) + (usage.output_tokens || 0);
111
+ }
112
+ // Call the message callback
113
+ await onMessage(sdkMessage);
104
114
  }
105
- // Extract token usage
106
- if (sdkMessage.type === 'assistant' && sdkMessage.usage) {
107
- const usage = sdkMessage.usage;
108
- tokensUsed = (usage.input_tokens || 0) + (usage.output_tokens || 0);
115
+ console.log(`✅ [A2A Query] Query completed, sessionId=${sessionId}, responseLength=${fullResponse.length}`);
116
+ return { sessionId, fullResponse, tokensUsed };
117
+ }
118
+ // Try with resume first, if it fails due to invalid session, retry without resume
119
+ try {
120
+ return await executeQuery(options);
121
+ }
122
+ catch (error) {
123
+ const errorMessage = error instanceof Error ? error.message : String(error);
124
+ // Check if the error is due to invalid resume session
125
+ if (options.resume && (errorMessage.includes('exited with code 1') ||
126
+ errorMessage.includes('session') ||
127
+ errorMessage.includes('resume'))) {
128
+ console.warn(`⚠️ [A2A Query] Resume failed (session may be invalid), retrying without resume...`);
129
+ // Create new options without resume
130
+ const { resume, ...optionsWithoutResume } = options;
131
+ return await executeQuery(optionsWithoutResume);
109
132
  }
110
- // Call the message callback
111
- await onMessage(sdkMessage);
133
+ // Re-throw other errors
134
+ throw error;
112
135
  }
113
- console.log(`✅ [A2A Query] Query completed, sessionId=${sessionId}, responseLength=${fullResponse.length}`);
114
- return { sessionId, fullResponse, tokensUsed };
115
136
  }
116
137
  /**
117
138
  * Execute a one-shot A2A query with SSE streaming
@@ -142,25 +163,47 @@ async function executeA2AQueryStreaming(message, images, options, onMessage) {
142
163
  type: 'text',
143
164
  text: message
144
165
  });
145
- const messageGen = createA2AMessageGenerator(messageContent);
146
- let sessionId = null;
147
- console.log(`🚀 [A2A Query Streaming] Starting one-shot query with resume=${options.resume || 'none'}`);
148
- const queryResult = (0, claude_agent_sdk_1.query)({
149
- prompt: messageGen,
150
- options: options
151
- });
152
- for await (const sdkMessage of queryResult) {
153
- // Capture session ID
154
- if (sdkMessage.type === 'system' && sdkMessage.subtype === 'init' && sdkMessage.session_id) {
155
- sessionId = sdkMessage.session_id;
166
+ // Internal function to execute the streaming query
167
+ async function executeStreamingQuery(queryOptions) {
168
+ // Create the message generator (must be created fresh for each attempt)
169
+ const messageGen = createA2AMessageGenerator(messageContent);
170
+ let sessionId = null;
171
+ console.log(`🚀 [A2A Query Streaming] Starting one-shot query with resume=${queryOptions.resume || 'none'}`);
172
+ const queryResult = (0, claude_agent_sdk_1.query)({
173
+ prompt: messageGen,
174
+ options: queryOptions
175
+ });
176
+ for await (const sdkMessage of queryResult) {
177
+ // Capture session ID
178
+ if (sdkMessage.type === 'system' && sdkMessage.subtype === 'init' && sdkMessage.session_id) {
179
+ sessionId = sdkMessage.session_id;
180
+ }
181
+ if (sdkMessage.session_id && !sessionId) {
182
+ sessionId = sdkMessage.session_id;
183
+ }
184
+ // Stream the message (synchronous callback for SSE)
185
+ onMessage(sdkMessage);
156
186
  }
157
- if (sdkMessage.session_id && !sessionId) {
158
- sessionId = sdkMessage.session_id;
187
+ console.log(`✅ [A2A Query Streaming] Query completed, sessionId=${sessionId}`);
188
+ return { sessionId };
189
+ }
190
+ // Try with resume first, if it fails due to invalid session, retry without resume
191
+ try {
192
+ return await executeStreamingQuery(options);
193
+ }
194
+ catch (error) {
195
+ const errorMessage = error instanceof Error ? error.message : String(error);
196
+ // Check if the error is due to invalid resume session
197
+ if (options.resume && (errorMessage.includes('exited with code 1') ||
198
+ errorMessage.includes('session') ||
199
+ errorMessage.includes('resume'))) {
200
+ console.warn(`⚠️ [A2A Query Streaming] Resume failed (session may be invalid), retrying without resume...`);
201
+ // Create new options without resume
202
+ const { resume, ...optionsWithoutResume } = options;
203
+ return await executeStreamingQuery(optionsWithoutResume);
159
204
  }
160
- // Stream the message (synchronous callback for SSE)
161
- onMessage(sdkMessage);
205
+ // Re-throw other errors
206
+ throw error;
162
207
  }
163
- console.log(`✅ [A2A Query Streaming] Query completed, sessionId=${sessionId}`);
164
- return { sessionId };
165
208
  }
166
209
  //# sourceMappingURL=a2aQueryService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"a2aQueryService.js","sourceRoot":"","sources":["../../../src/services/a2a/a2aQueryService.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;AAgEH,0CA+EC;AAYD,4DAsDC;AA/MD,qEAAgE;AAuBhE;;;;;;;;GAQG;AACH,KAAK,SAAS,CAAC,CAAC,yBAAyB,CACvC,OAAsC;IAEtC,MAAM,cAAc,GAAG,OAAO,OAAO,KAAK,QAAQ;QAChD,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC5C,CAAC,CAAC,OAAO,CAAC;IAEZ,MAAM;QACJ,IAAI,EAAE,MAAe;QACrB,OAAO,EAAE;YACP,IAAI,EAAE,MAAe;YACrB,OAAO,EAAE,cAAc;SACxB;KACF,CAAC;IACF,sEAAsE;AACxE,CAAC;AAED;;;;;;;;;;;;GAYG;AACI,KAAK,UAAU,eAAe,CACnC,OAAe,EACf,MAA8D,EAC9D,OAAwB,EACxB,SAAiD;IAEjD,6CAA6C;IAC7C,MAAM,cAAc,GAAyB,EAAE,CAAC;IAEhD,8BAA8B;IAC9B,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,cAAc,CAAC,IAAI,CAAC;gBAClB,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,KAAK,CAAC,SAAS;oBAC3B,IAAI,EAAE,KAAK,CAAC,IAAI;iBACjB;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,cAAc,CAAC,IAAI,CAAC;QAClB,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,OAAO;KACd,CAAC,CAAC;IAEH,+BAA+B;IAC/B,MAAM,UAAU,GAAG,yBAAyB,CAAC,cAAc,CAAC,CAAC;IAE7D,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,OAAO,CAAC,GAAG,CAAC,sDAAsD,OAAO,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC,CAAC;IAE9F,oBAAoB;IACpB,MAAM,WAAW,GAAG,IAAA,wBAAK,EAAC;QACxB,MAAM,EAAE,UAAU;QAClB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,oBAAoB;IACpB,IAAI,KAAK,EAAE,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QAC3C,8CAA8C;QAC9C,IAAI,UAAU,CAAC,IAAI,KAAK,QAAQ,IAAI,UAAU,CAAC,OAAO,KAAK,MAAM,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;YAC3F,SAAS,GAAG,UAAU,CAAC,UAAU,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,sCAAsC,SAAS,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,2CAA2C;QAC3C,IAAK,UAAkB,CAAC,UAAU,IAAI,CAAC,SAAS,EAAE,CAAC;YACjD,SAAS,GAAI,UAAkB,CAAC,UAAU,CAAC;QAC7C,CAAC;QAED,kCAAkC;QAClC,IAAI,UAAU,CAAC,IAAI,KAAK,WAAW,IAAI,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;YACnE,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBAC/C,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC1B,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC;QAED,sBAAsB;QACtB,IAAI,UAAU,CAAC,IAAI,KAAK,WAAW,IAAK,UAAkB,CAAC,KAAK,EAAE,CAAC;YACjE,MAAM,KAAK,GAAI,UAAkB,CAAC,KAAK,CAAC;YACxC,UAAU,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC;QACtE,CAAC;QAED,4BAA4B;QAC5B,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,4CAA4C,SAAS,oBAAoB,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;IAE5G,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;AACjD,CAAC;AAED;;;;;;;;;GASG;AACI,KAAK,UAAU,wBAAwB,CAC5C,OAAe,EACf,MAA8D,EAC9D,OAAwB,EACxB,SAAwC;IAExC,6CAA6C;IAC7C,MAAM,cAAc,GAAyB,EAAE,CAAC;IAEhD,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,cAAc,CAAC,IAAI,CAAC;gBAClB,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,KAAK,CAAC,SAAS;oBAC3B,IAAI,EAAE,KAAK,CAAC,IAAI;iBACjB;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,cAAc,CAAC,IAAI,CAAC;QAClB,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,OAAO;KACd,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,yBAAyB,CAAC,cAAc,CAAC,CAAC;IAE7D,IAAI,SAAS,GAAkB,IAAI,CAAC;IAEpC,OAAO,CAAC,GAAG,CAAC,gEAAgE,OAAO,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC,CAAC;IAExG,MAAM,WAAW,GAAG,IAAA,wBAAK,EAAC;QACxB,MAAM,EAAE,UAAU;QAClB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,IAAI,KAAK,EAAE,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QAC3C,qBAAqB;QACrB,IAAI,UAAU,CAAC,IAAI,KAAK,QAAQ,IAAI,UAAU,CAAC,OAAO,KAAK,MAAM,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;YAC3F,SAAS,GAAG,UAAU,CAAC,UAAU,CAAC;QACpC,CAAC;QACD,IAAK,UAAkB,CAAC,UAAU,IAAI,CAAC,SAAS,EAAE,CAAC;YACjD,SAAS,GAAI,UAAkB,CAAC,UAAU,CAAC;QAC7C,CAAC;QAED,oDAAoD;QACpD,SAAS,CAAC,UAAU,CAAC,CAAC;IACxB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,sDAAsD,SAAS,EAAE,CAAC,CAAC;IAE/E,OAAO,EAAE,SAAS,EAAE,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"a2aQueryService.js","sourceRoot":"","sources":["../../../src/services/a2a/a2aQueryService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,148 @@
1
+ /**
2
+ * Tunnel Service
3
+ *
4
+ * Manages WebSocket tunnel connection to allow external access to local Agent Studio.
5
+ * Uses tunely library for tunnel client functionality.
6
+ *
7
+ * Features:
8
+ * - Auto-connect on startup if configured
9
+ * - Automatic reconnection on disconnect
10
+ * - Connection status tracking
11
+ * - Configuration persistence
12
+ */
13
+ /**
14
+ * Tunnel configuration stored on disk
15
+ */
16
+ export interface TunnelConfig {
17
+ /** Whether tunnel should auto-connect on startup */
18
+ enabled: boolean;
19
+ /** Tunnel server base URL (e.g., https://agentstudio.woa.com) */
20
+ serverUrl: string;
21
+ /** WebSocket URL for tunnel connection (from server /api/info) */
22
+ websocketUrl?: string;
23
+ /** Tunnel authentication token */
24
+ token: string;
25
+ /** Tunnel name (subdomain part, e.g., "my-dev" for my-dev.tunnel) */
26
+ tunnelName?: string;
27
+ /** Domain suffix (e.g., ".agentstudio.woa.com") */
28
+ domainSuffix?: string;
29
+ /** Protocol for tunnel domain (https or http) */
30
+ protocol?: 'https' | 'http';
31
+ /** Reconnect interval in milliseconds */
32
+ reconnectInterval?: number;
33
+ /** Maximum reconnect attempts (0 = infinite) */
34
+ maxReconnectAttempts?: number;
35
+ }
36
+ /**
37
+ * Result of checking tunnel name availability
38
+ */
39
+ export interface TunnelCheckResult {
40
+ available: boolean;
41
+ reason?: string;
42
+ }
43
+ /**
44
+ * Result of creating a tunnel token
45
+ */
46
+ export interface TunnelCreateResult {
47
+ success: boolean;
48
+ token?: string;
49
+ domain?: string;
50
+ error?: string;
51
+ }
52
+ /**
53
+ * Tunnel connection status
54
+ */
55
+ export interface TunnelStatus {
56
+ /** Whether tunnel is enabled in config */
57
+ enabled: boolean;
58
+ /** Whether currently connected */
59
+ connected: boolean;
60
+ /** Assigned tunnel domain (e.g., "my-dev.tunnel") */
61
+ domain: string | null;
62
+ /** Last error message if any */
63
+ lastError: string | null;
64
+ /** Connection timestamp */
65
+ connectedAt: string | null;
66
+ /** Number of reconnect attempts */
67
+ reconnectCount: number;
68
+ /** Config source: 'port-specific' or 'default' */
69
+ configSource: 'port-specific' | 'default' | 'none';
70
+ /** Local port this tunnel forwards to */
71
+ localPort: number;
72
+ }
73
+ /**
74
+ * Tunnel Service singleton
75
+ */
76
+ declare class TunnelService {
77
+ private client;
78
+ private config;
79
+ private status;
80
+ private localPort;
81
+ private initialized;
82
+ private configSource;
83
+ /**
84
+ * Initialize the tunnel service
85
+ * Loads config and auto-connects if enabled
86
+ */
87
+ initialize(localPort?: number): Promise<void>;
88
+ /**
89
+ * Load tunnel configuration from disk
90
+ * Priority: port-specific config > default config
91
+ */
92
+ loadConfig(): Promise<TunnelConfig>;
93
+ /**
94
+ * Save tunnel configuration to disk
95
+ * Always saves to port-specific config file
96
+ */
97
+ saveConfig(config: Partial<TunnelConfig>): Promise<void>;
98
+ /**
99
+ * Get current tunnel configuration
100
+ */
101
+ getConfig(): TunnelConfig;
102
+ /**
103
+ * Get current tunnel status
104
+ */
105
+ getStatus(): TunnelStatus;
106
+ /**
107
+ * Connect to the tunnel server
108
+ */
109
+ connect(): Promise<void>;
110
+ /**
111
+ * Disconnect from the tunnel server
112
+ */
113
+ disconnect(): void;
114
+ /**
115
+ * Update configuration and optionally reconnect
116
+ */
117
+ updateConfig(newConfig: Partial<TunnelConfig>, reconnect?: boolean): Promise<void>;
118
+ /**
119
+ * Test tunnel connection with current config
120
+ */
121
+ testConnection(): Promise<{
122
+ success: boolean;
123
+ domain?: string;
124
+ error?: string;
125
+ }>;
126
+ /**
127
+ * Check if a tunnel name is available
128
+ * @param name The tunnel name to check (e.g., "my-dev")
129
+ */
130
+ checkTunnelName(name: string): Promise<TunnelCheckResult>;
131
+ /**
132
+ * Create a tunnel and get the token
133
+ * @param name The tunnel name to create (e.g., "my-dev")
134
+ */
135
+ createTunnel(name: string): Promise<TunnelCreateResult>;
136
+ /**
137
+ * Create tunnel and save config in one step
138
+ * @param name The tunnel name to create
139
+ * @param autoConnect Whether to enable auto-connect
140
+ * @param protocol The protocol to use (https or http)
141
+ * @param websocketUrl The WebSocket URL from server info
142
+ * @param domainSuffix The domain suffix (e.g., ".agentstudio.woa.com")
143
+ */
144
+ createAndSave(name: string, autoConnect?: boolean, protocol?: 'https' | 'http', websocketUrl?: string, domainSuffix?: string): Promise<TunnelCreateResult>;
145
+ }
146
+ export declare const tunnelService: TunnelService;
147
+ export {};
148
+ //# sourceMappingURL=tunnelService.d.ts.map