agentstudio 0.1.29 → 0.1.31

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 (124) hide show
  1. package/index.d.ts.map +1 -1
  2. package/index.js +20 -0
  3. package/index.js.map +1 -1
  4. package/middleware/httpsOnly.d.ts +40 -3
  5. package/middleware/httpsOnly.d.ts.map +1 -1
  6. package/middleware/httpsOnly.js +89 -5
  7. package/middleware/httpsOnly.js.map +1 -1
  8. package/package.json +2 -1
  9. package/public/assets/{AgentsPage-VVVyzMq0.js → AgentsPage-DKZWFW8X.js} +2 -2
  10. package/public/assets/{Button-B9AQtJ7x.js → Button-cN1WPLWN.js} +1 -1
  11. package/public/assets/{ChatPage-p1JCfA2A.js → ChatPage-D0FGsyAT.js} +4 -4
  12. package/public/assets/{CommandForm-B_beYCv3.js → CommandForm-CZRscRtm.js} +2 -2
  13. package/public/assets/{CommandsPage-Blc1Kt4Z.js → CommandsPage-BejQhsY5.js} +1 -1
  14. package/public/assets/{DashboardPage-Dokn4y-N.js → DashboardPage-09thi3Rh.js} +1 -1
  15. package/public/assets/{FileBrowser-Dg9PfXOo.js → FileBrowser-Z9hLFPpv.js} +4 -4
  16. package/public/assets/FileExplorer-BB3suHzW.js +1 -0
  17. package/public/assets/GeneralSettingsPage-Brmz_AtE.js +1 -0
  18. package/public/assets/LandingPage-BpoDlnDx.js +1 -0
  19. package/public/assets/{LoginPage-D2Ykhr7D.js → LoginPage-CX-yRlVd.js} +5 -5
  20. package/public/assets/McpAdminSettingsPage-CmOXQouL.js +7 -0
  21. package/public/assets/{McpPage-DkD9BOrP.js → McpPage-DoAEv0XV.js} +1 -1
  22. package/public/assets/MemorySettingsPage-CFS6ZcJr.js +1 -0
  23. package/public/assets/PluginsPage-BCdGy7Rw.js +1 -0
  24. package/public/assets/{ProjectSelector-B1_umywl.js → ProjectSelector-CION-PmR.js} +1 -1
  25. package/public/assets/{ProjectsPage-CQ8zwJ5D.js → ProjectsPage-Wb6pN9Hv.js} +5 -5
  26. package/public/assets/ScheduledTasksPage-DLgaIyjh.js +1 -0
  27. package/public/assets/{SettingsLayout-CccK5RVj.js → SettingsLayout-BIsie6AV.js} +1 -1
  28. package/public/assets/{SkillsPage-D_LECy2S.js → SkillsPage-B0UobEC_.js} +1 -1
  29. package/public/assets/{SubagentForm-D9EFQxlZ.js → SubagentForm-Cq06CQqr.js} +3 -3
  30. package/public/assets/SubagentsPage-BSaDf99n.js +1 -0
  31. package/public/assets/SystemInfoPage-BMlzVgxc.js +1 -0
  32. package/public/assets/{TelemetrySettingsPage-DMngnKDW.js → TelemetrySettingsPage-DvOSMEwR.js} +1 -1
  33. package/public/assets/{ToastTestPage-CafmBcnU.js → ToastTestPage-Du-SgUz6.js} +1 -1
  34. package/public/assets/{ToolsList-CnepUgI-.js → ToolsList-C9LELdNX.js} +1 -1
  35. package/public/assets/UnifiedToolSelector-Bw-E7HW4.js +1 -0
  36. package/public/assets/{VersionSettingsPage-D9hYO4VL.js → VersionSettingsPage-CU4oEyqT.js} +2 -2
  37. package/public/assets/WebSocketTunnelPage-CSTkG4E2.js +1 -0
  38. package/public/assets/{_basePickBy-lvDxpUoY.js → _basePickBy-DxKqIWB6.js} +1 -1
  39. package/public/assets/{_baseUniq-DyqfOLmW.js → _baseUniq-CKJzhTgF.js} +1 -1
  40. package/public/assets/{agents-DmLFhp96.js → agents-D9dWnZr0.js} +1 -1
  41. package/public/assets/{arc-DuR7lLva.js → arc-C2iholw8.js} +1 -1
  42. package/public/assets/{architectureDiagram-VXUJARFQ-CkKlTxxx.js → architectureDiagram-VXUJARFQ-xG63KrIQ.js} +1 -1
  43. package/public/assets/{blockDiagram-VD42YOAC-DdR02awp.js → blockDiagram-VD42YOAC-C4NFx0nk.js} +1 -1
  44. package/public/assets/{c4Diagram-YG6GDRKO-MlkMVL2r.js → c4Diagram-YG6GDRKO-BadvTLDv.js} +1 -1
  45. package/public/assets/channel-Cgo35bJG.js +1 -0
  46. package/public/assets/{chunk-4BX2VUAB-BI02zXQl.js → chunk-4BX2VUAB-Id5_IQHH.js} +1 -1
  47. package/public/assets/{chunk-55IACEB6-DtWZPbH-.js → chunk-55IACEB6-Cr7Dy_eo.js} +1 -1
  48. package/public/assets/{chunk-B4BG7PRW-yLeRKRZl.js → chunk-B4BG7PRW-BpvaZEv8.js} +1 -1
  49. package/public/assets/{chunk-DI55MBZ5-DF-5ELa5.js → chunk-DI55MBZ5-Bt4gChdE.js} +1 -1
  50. package/public/assets/{chunk-FMBD7UC4-BjJNxbrL.js → chunk-FMBD7UC4-C4oK_fXh.js} +1 -1
  51. package/public/assets/{chunk-QN33PNHL-rs7Z3IPT.js → chunk-QN33PNHL-DoNppdc6.js} +1 -1
  52. package/public/assets/{chunk-QZHKN3VN-DoIXOkrg.js → chunk-QZHKN3VN-B3mVCo-F.js} +1 -1
  53. package/public/assets/{chunk-TZMSLE5B-xkKgCGO2.js → chunk-TZMSLE5B-BzQraEZC.js} +1 -1
  54. package/public/assets/classDiagram-2ON5EDUG-hE-J96yq.js +1 -0
  55. package/public/assets/classDiagram-v2-WZHVMYZB-hE-J96yq.js +1 -0
  56. package/public/assets/clone-BR2LkGvn.js +1 -0
  57. package/public/assets/{cose-bilkent-S5V4N54A-BIz6tY7t.js → cose-bilkent-S5V4N54A-OR_HeMV9.js} +1 -1
  58. package/public/assets/{dagre-6UL2VRFP-CponDeYZ.js → dagre-6UL2VRFP-qr8I_vKq.js} +1 -1
  59. package/public/assets/{diagram-PSM6KHXK-D31S6iiK.js → diagram-PSM6KHXK-vB_CZuML.js} +1 -1
  60. package/public/assets/{diagram-QEK2KX5R-C6RWP-cs.js → diagram-QEK2KX5R-C0MTx_Nc.js} +1 -1
  61. package/public/assets/{diagram-S2PKOQOG-BKs_7af1.js → diagram-S2PKOQOG-Ci-hYM5v.js} +1 -1
  62. package/public/assets/{erDiagram-Q2GNP2WA-Ro9hB6-s.js → erDiagram-Q2GNP2WA-Cw6hHxHG.js} +1 -1
  63. package/public/assets/{flowDiagram-NV44I4VS-IKSFEVlB.js → flowDiagram-NV44I4VS-D8O-Xk2x.js} +1 -1
  64. package/public/assets/{ganttDiagram-LVOFAZNH-CPDNSzAq.js → ganttDiagram-LVOFAZNH-UxNErvuA.js} +1 -1
  65. package/public/assets/{gitGraphDiagram-NY62KEGX-c_yb5ztL.js → gitGraphDiagram-NY62KEGX-BeX3IBYd.js} +1 -1
  66. package/public/assets/{graph-BoMdSZEp.js → graph-Cf8oiq5L.js} +1 -1
  67. package/public/assets/{index-BUj-AMWq.js → index-1qMWEcRb.js} +27 -27
  68. package/public/assets/index-isG0t1ZM.css +1 -0
  69. package/public/assets/infoDiagram-F6ZHWCRC-Cj8LA9DD.js +2 -0
  70. package/public/assets/{journeyDiagram-XKPGCS4Q-D4izttrO.js → journeyDiagram-XKPGCS4Q-COucIUOw.js} +1 -1
  71. package/public/assets/{kanban-definition-3W4ZIXB7-DE7WCrea.js → kanban-definition-3W4ZIXB7-Dg9YHEya.js} +1 -1
  72. package/public/assets/{layout-BezNHWMi.js → layout-CJdedPgP.js} +1 -1
  73. package/public/assets/{linear-KRX5ckNK.js → linear-B7eUYSHc.js} +1 -1
  74. package/public/assets/{mindmap-definition-VGOIOE7T-Dlr09KqO.js → mindmap-definition-VGOIOE7T-DfYDh2Gl.js} +1 -1
  75. package/public/assets/{pieDiagram-ADFJNKIX-Bbzzfu-z.js → pieDiagram-ADFJNKIX-s6DjRKNr.js} +1 -1
  76. package/public/assets/{quadrantDiagram-AYHSOK5B-DubsKDPG.js → quadrantDiagram-AYHSOK5B-N1Ychsgt.js} +1 -1
  77. package/public/assets/{requirementDiagram-UZGBJVZJ-B-rG6Gty.js → requirementDiagram-UZGBJVZJ-Dy_oYJbC.js} +1 -1
  78. package/public/assets/{sankeyDiagram-TZEHDZUN-DU7Rgr_5.js → sankeyDiagram-TZEHDZUN-BrnrcBF3.js} +1 -1
  79. package/public/assets/{sequenceDiagram-WL72ISMW-BRlH6dPX.js → sequenceDiagram-WL72ISMW-zi7w-y8F.js} +1 -1
  80. package/public/assets/{stateDiagram-FKZM4ZOC-BeAzs0_-.js → stateDiagram-FKZM4ZOC-B33B5gSZ.js} +1 -1
  81. package/public/assets/stateDiagram-v2-4FDKWEC3-Bx-g7opY.js +1 -0
  82. package/public/assets/{table-aqcpYX4Z.js → table-aiCRrLk5.js} +1 -1
  83. package/public/assets/{timeline-definition-IT6M3QCI-BU_B1RmT.js → timeline-definition-IT6M3QCI-Bby9ruvD.js} +1 -1
  84. package/public/assets/{tools-XV29tg8x.js → tools-zTM46-tZ.js} +1 -1
  85. package/public/assets/{treemap-KMMF4GRG-CP2M7QfX.js → treemap-KMMF4GRG-CxPzxrDC.js} +1 -1
  86. package/public/assets/{ui-components-ND8WdSiV.js → ui-components-BsYwJvCF.js} +138 -123
  87. package/public/assets/{useAgents-COcSvqDE.js → useAgents-BlQGwXjx.js} +1 -1
  88. package/public/assets/{useClaudeVersions-C8b4adpW.js → useClaudeVersions-DJ6VKG1y.js} +1 -1
  89. package/public/assets/{useCommands-D79pjz3C.js → useCommands-DOxDeFSx.js} +1 -1
  90. package/public/assets/{useProjects-CP0Q5-jg.js → useProjects-cgsJNlsy.js} +1 -1
  91. package/public/assets/{useSessions-C2gXprHI.js → useSessions-BAxZ6l2n.js} +1 -1
  92. package/public/assets/{xychartDiagram-PRI3JC2R-OdQKUqyr.js → xychartDiagram-PRI3JC2R-C-X05eqT.js} +1 -1
  93. package/public/index.html +5 -5
  94. package/routes/projects.d.ts.map +1 -1
  95. package/routes/projects.js +80 -1
  96. package/routes/projects.js.map +1 -1
  97. package/routes/tunnel.d.ts +10 -0
  98. package/routes/tunnel.d.ts.map +1 -0
  99. package/routes/tunnel.js +296 -0
  100. package/routes/tunnel.js.map +1 -0
  101. package/services/a2a/a2aQueryService.d.ts.map +1 -1
  102. package/services/a2a/a2aQueryService.js +95 -52
  103. package/services/a2a/a2aQueryService.js.map +1 -1
  104. package/services/tunnelService.d.ts +148 -0
  105. package/services/tunnelService.d.ts.map +1 -0
  106. package/services/tunnelService.js +406 -0
  107. package/services/tunnelService.js.map +1 -0
  108. package/public/assets/FileExplorer-B7BFy0Tu.js +0 -1
  109. package/public/assets/GeneralSettingsPage-DLSSSadp.js +0 -1
  110. package/public/assets/LandingPage-Ck2WpTto.js +0 -1
  111. package/public/assets/McpAdminSettingsPage-BAKOckWx.js +0 -7
  112. package/public/assets/MemorySettingsPage-CiUs5u2g.js +0 -1
  113. package/public/assets/PluginsPage-CkXNjZMq.js +0 -1
  114. package/public/assets/ScheduledTasksPage-BjSzD4T2.js +0 -1
  115. package/public/assets/SubagentsPage-D_sdehiT.js +0 -1
  116. package/public/assets/SystemInfoPage-vz5Ey9DK.js +0 -1
  117. package/public/assets/UnifiedToolSelector-CnFTY88B.js +0 -1
  118. package/public/assets/channel-DHM1jRJ0.js +0 -1
  119. package/public/assets/classDiagram-2ON5EDUG-BJtIba9N.js +0 -1
  120. package/public/assets/classDiagram-v2-WZHVMYZB-BJtIba9N.js +0 -1
  121. package/public/assets/clone-Bbn_OKGL.js +0 -1
  122. package/public/assets/index-CEBbr0XW.css +0 -1
  123. package/public/assets/infoDiagram-F6ZHWCRC-904Ek2Zh.js +0 -2
  124. package/public/assets/stateDiagram-v2-4FDKWEC3-C0c8d9Xs.js +0 -1
package/index.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAkE9B,QAAA,MAAM,GAAG,EAAE,OAAO,CAAC,OAAmB,CAAC;AAoVvC,eAAe,GAAG,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAoE9B,QAAA,MAAM,GAAG,EAAE,OAAO,CAAC,OAAmB,CAAC;AAsWvC,eAAe,GAAG,CAAC"}
package/index.js CHANGED
@@ -65,6 +65,7 @@ const mcpAdminManagement_1 = __importDefault(require("./routes/mcpAdminManagemen
65
65
  const cloudflareTunnel_1 = __importDefault(require("./routes/cloudflareTunnel"));
66
66
  const taskExecutor_1 = __importDefault(require("./routes/taskExecutor"));
67
67
  const version_1 = __importDefault(require("./routes/version"));
68
+ const tunnel_1 = __importDefault(require("./routes/tunnel"));
68
69
  const auth_2 = require("./middleware/auth");
69
70
  const httpsOnly_1 = require("./middleware/httpsOnly");
70
71
  const index_1 = require("./config/index");
@@ -72,6 +73,7 @@ const taskCleanup_1 = require("./services/a2a/taskCleanup");
72
73
  const schedulerService_1 = require("./services/schedulerService");
73
74
  const telemetry_1 = require("./services/telemetry");
74
75
  const index_js_1 = require("./services/taskExecutor/index.js");
76
+ const tunnelService_js_1 = require("./services/tunnelService.js");
75
77
  dotenv_1.default.config();
76
78
  // Get version from package.json (works in both dev and npm package mode)
77
79
  const getVersion = () => {
@@ -261,6 +263,15 @@ const app = (0, express_1.default)();
261
263
  catch (error) {
262
264
  console.error('[Scheduler] Error initializing scheduler:', error);
263
265
  }
266
+ // 4. Tunnel Service: Initialize WebSocket tunnel for external access
267
+ console.info('[Tunnel] Initializing tunnel service...');
268
+ try {
269
+ await tunnelService_js_1.tunnelService.initialize(PORT);
270
+ console.info('[Tunnel] Tunnel service initialized');
271
+ }
272
+ catch (error) {
273
+ console.error('[Tunnel] Error initializing tunnel service:', error);
274
+ }
264
275
  // Static files - serve embedded frontend (for npm package) or development frontend
265
276
  // Check both npm package location (./public) and development location (../../frontend/dist)
266
277
  const fs = await Promise.resolve().then(() => __importStar(require('fs')));
@@ -347,6 +358,7 @@ const app = (0, express_1.default)();
347
358
  app.use('/api/cloudflare-tunnel', auth_2.authMiddleware, cloudflareTunnel_1.default); // Cloudflare Tunnel management
348
359
  app.use('/api/task-executor', auth_2.authMiddleware, taskExecutor_1.default);
349
360
  app.use('/api/version', auth_2.authMiddleware, version_1.default);
361
+ app.use('/api/tunnel', auth_2.authMiddleware, tunnel_1.default); // Tunnel management
350
362
  app.use('/api/media', mediaAuth_1.default); // Media auth endpoints
351
363
  app.use('/media', media_1.default); // Remove authMiddleware - media files are now public
352
364
  // Error handling
@@ -380,6 +392,14 @@ const app = (0, express_1.default)();
380
392
  catch (error) {
381
393
  console.error('[TaskExecutor] Error shutting down task executor:', error);
382
394
  }
395
+ // 3. Stop tunnel service
396
+ try {
397
+ tunnelService_js_1.tunnelService.disconnect();
398
+ console.info('[Tunnel] Tunnel service stopped');
399
+ }
400
+ catch (error) {
401
+ console.error('[Tunnel] Error shutting down tunnel service:', error);
402
+ }
383
403
  // Shutdown telemetry (async but we don't wait)
384
404
  (0, telemetry_1.shutdownTelemetry)().catch((error) => {
385
405
  console.error('[Telemetry] Error shutting down telemetry:', error);
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -6,10 +6,21 @@
6
6
  *
7
7
  * Phase 10 (Polish): T089 - HTTPS enforcement middleware for production
8
8
  *
9
- * Note: IP address access is exempt from HTTPS requirement, as these are typically
10
- * internal/development access patterns or behind reverse proxies like Nginx.
9
+ * Exemptions from HTTPS requirement:
10
+ * - IP address access (internal/development patterns or behind reverse proxies)
11
+ * - Trusted domain suffixes (e.g., .tunnel, .local, .internal)
12
+ * - Custom domain whitelist via HTTPS_EXEMPT_DOMAINS environment variable
11
13
  */
12
14
  import type { Request, Response, NextFunction } from 'express';
15
+ /**
16
+ * Get the list of domains exempt from HTTPS requirement.
17
+ * Configured via HTTPS_EXEMPT_DOMAINS environment variable (comma-separated).
18
+ *
19
+ * Example: HTTPS_EXEMPT_DOMAINS=example.com,myapp.internal,*.mycompany.com
20
+ *
21
+ * @returns Array of exempt domain patterns
22
+ */
23
+ export declare function getExemptDomains(): string[];
13
24
  /**
14
25
  * Check if a hostname is an IP address (IPv4 or IPv6)
15
26
  *
@@ -17,9 +28,35 @@ import type { Request, Response, NextFunction } from 'express';
17
28
  * @returns true if the hostname is an IP address
18
29
  */
19
30
  export declare function isIPAddress(hostname: string): boolean;
31
+ /**
32
+ * Check if a hostname has a trusted domain suffix
33
+ *
34
+ * @param hostname - The hostname to check
35
+ * @returns true if the hostname ends with a trusted suffix
36
+ */
37
+ export declare function hasTrustedSuffix(hostname: string): boolean;
38
+ /**
39
+ * Check if a hostname is in the exempt domains whitelist
40
+ * Supports exact match and wildcard patterns (*.example.com)
41
+ *
42
+ * @param hostname - The hostname to check
43
+ * @returns true if the hostname matches an exempt domain pattern
44
+ */
45
+ export declare function isExemptDomain(hostname: string): boolean;
46
+ /**
47
+ * Check if HTTPS requirement should be bypassed for this host
48
+ *
49
+ * @param hostname - The hostname to check
50
+ * @returns true if HTTPS should not be enforced
51
+ */
52
+ export declare function shouldBypassHttps(hostname: string): boolean;
20
53
  /**
21
54
  * Middleware to enforce HTTPS for specific routes in production
22
- * Exempt: IP address access (internal/development patterns)
55
+ *
56
+ * Exempt from HTTPS requirement:
57
+ * - IP address access (internal/development patterns)
58
+ * - Trusted domain suffixes (.tunnel, .local, .internal, .localhost)
59
+ * - Custom domains via HTTPS_EXEMPT_DOMAINS environment variable
23
60
  *
24
61
  * @param req - Express request object
25
62
  * @param res - Express response object
@@ -1 +1 @@
1
- {"version":3,"file":"httpsOnly.d.ts","sourceRoot":"","sources":["../../src/middleware/httpsOnly.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE/D;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CA6BrD;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,GAAG,CA6B9E;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,GAAG,CAmBlF"}
1
+ {"version":3,"file":"httpsOnly.d.ts","sourceRoot":"","sources":["../../src/middleware/httpsOnly.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAa/D;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAQ3C;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CA6BrD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAO1D;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAkBxD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,GAAG,CA6B9E;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,GAAG,CAmBlF"}
@@ -7,13 +7,46 @@
7
7
  *
8
8
  * Phase 10 (Polish): T089 - HTTPS enforcement middleware for production
9
9
  *
10
- * Note: IP address access is exempt from HTTPS requirement, as these are typically
11
- * internal/development access patterns or behind reverse proxies like Nginx.
10
+ * Exemptions from HTTPS requirement:
11
+ * - IP address access (internal/development patterns or behind reverse proxies)
12
+ * - Trusted domain suffixes (e.g., .tunnel, .local, .internal)
13
+ * - Custom domain whitelist via HTTPS_EXEMPT_DOMAINS environment variable
12
14
  */
13
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.getExemptDomains = getExemptDomains;
14
17
  exports.isIPAddress = isIPAddress;
18
+ exports.hasTrustedSuffix = hasTrustedSuffix;
19
+ exports.isExemptDomain = isExemptDomain;
20
+ exports.shouldBypassHttps = shouldBypassHttps;
15
21
  exports.httpsOnly = httpsOnly;
16
22
  exports.httpsRedirect = httpsRedirect;
23
+ /**
24
+ * Default trusted domain suffixes that are exempt from HTTPS requirement.
25
+ * These are typically internal/tunnel domains that don't need HTTPS enforcement.
26
+ */
27
+ const DEFAULT_TRUSTED_SUFFIXES = [
28
+ '.tunnel', // Cloudflare Tunnel, custom tunnels
29
+ '.local', // Local development domains
30
+ '.internal', // Internal network domains
31
+ '.localhost', // Localhost subdomains
32
+ ];
33
+ /**
34
+ * Get the list of domains exempt from HTTPS requirement.
35
+ * Configured via HTTPS_EXEMPT_DOMAINS environment variable (comma-separated).
36
+ *
37
+ * Example: HTTPS_EXEMPT_DOMAINS=example.com,myapp.internal,*.mycompany.com
38
+ *
39
+ * @returns Array of exempt domain patterns
40
+ */
41
+ function getExemptDomains() {
42
+ const envDomains = process.env.HTTPS_EXEMPT_DOMAINS;
43
+ if (!envDomains)
44
+ return [];
45
+ return envDomains
46
+ .split(',')
47
+ .map(domain => domain.trim().toLowerCase())
48
+ .filter(domain => domain.length > 0);
49
+ }
17
50
  /**
18
51
  * Check if a hostname is an IP address (IPv4 or IPv6)
19
52
  *
@@ -45,9 +78,60 @@ function isIPAddress(hostname) {
45
78
  ipv6LoopbackPattern.test(hostWithoutPort) ||
46
79
  ipv6MappedPattern.test(hostWithoutPort));
47
80
  }
81
+ /**
82
+ * Check if a hostname has a trusted domain suffix
83
+ *
84
+ * @param hostname - The hostname to check
85
+ * @returns true if the hostname ends with a trusted suffix
86
+ */
87
+ function hasTrustedSuffix(hostname) {
88
+ if (!hostname)
89
+ return false;
90
+ // Remove port if present and convert to lowercase
91
+ const hostWithoutPort = hostname.split(':')[0].toLowerCase();
92
+ return DEFAULT_TRUSTED_SUFFIXES.some(suffix => hostWithoutPort.endsWith(suffix));
93
+ }
94
+ /**
95
+ * Check if a hostname is in the exempt domains whitelist
96
+ * Supports exact match and wildcard patterns (*.example.com)
97
+ *
98
+ * @param hostname - The hostname to check
99
+ * @returns true if the hostname matches an exempt domain pattern
100
+ */
101
+ function isExemptDomain(hostname) {
102
+ if (!hostname)
103
+ return false;
104
+ const exemptDomains = getExemptDomains();
105
+ if (exemptDomains.length === 0)
106
+ return false;
107
+ // Remove port if present and convert to lowercase
108
+ const hostWithoutPort = hostname.split(':')[0].toLowerCase();
109
+ return exemptDomains.some(pattern => {
110
+ // Wildcard pattern: *.example.com
111
+ if (pattern.startsWith('*.')) {
112
+ const suffix = pattern.slice(1); // Remove '*', keep '.example.com'
113
+ return hostWithoutPort.endsWith(suffix) || hostWithoutPort === pattern.slice(2);
114
+ }
115
+ // Exact match
116
+ return hostWithoutPort === pattern;
117
+ });
118
+ }
119
+ /**
120
+ * Check if HTTPS requirement should be bypassed for this host
121
+ *
122
+ * @param hostname - The hostname to check
123
+ * @returns true if HTTPS should not be enforced
124
+ */
125
+ function shouldBypassHttps(hostname) {
126
+ return isIPAddress(hostname) || hasTrustedSuffix(hostname) || isExemptDomain(hostname);
127
+ }
48
128
  /**
49
129
  * Middleware to enforce HTTPS for specific routes in production
50
- * Exempt: IP address access (internal/development patterns)
130
+ *
131
+ * Exempt from HTTPS requirement:
132
+ * - IP address access (internal/development patterns)
133
+ * - Trusted domain suffixes (.tunnel, .local, .internal, .localhost)
134
+ * - Custom domains via HTTPS_EXEMPT_DOMAINS environment variable
51
135
  *
52
136
  * @param req - Express request object
53
137
  * @param res - Express response object
@@ -58,9 +142,9 @@ function httpsOnly(req, res, next) {
58
142
  if (process.env.NODE_ENV !== 'production') {
59
143
  return next();
60
144
  }
61
- // Allow IP address access without HTTPS (internal/proxy scenarios)
145
+ // Check if this host should bypass HTTPS requirement
62
146
  const host = req.get('host') || '';
63
- if (isIPAddress(host)) {
147
+ if (shouldBypassHttps(host)) {
64
148
  return next();
65
149
  }
66
150
  // Check if request is secure (HTTPS)
@@ -1 +1 @@
1
- {"version":3,"file":"httpsOnly.js","sourceRoot":"","sources":["../../src/middleware/httpsOnly.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;AAUH,kCA6BC;AAUD,8BA6BC;AAUD,sCAmBC;AAvGD;;;;;GAKG;AACH,SAAgB,WAAW,CAAC,QAAgB;IAC1C,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE5B,yBAAyB;IACzB,MAAM,eAAe,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/C,gCAAgC;IAChC,MAAM,WAAW,GAAG,yBAAyB,CAAC;IAC9C,IAAI,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;QACtC,+BAA+B;QAC/B,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YAC5B,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAChC,OAAO,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,sDAAsD;IACtD,qDAAqD;IACrD,+CAA+C;IAC/C,MAAM,WAAW,GAAG,4CAA4C,CAAC;IACjE,MAAM,mBAAmB,GAAG,OAAO,CAAC;IACpC,MAAM,iBAAiB,GAAG,8CAA8C,CAAC;IAEzE,OAAO,CACL,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC;QACjC,mBAAmB,CAAC,IAAI,CAAC,eAAe,CAAC;QACzC,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,CACxC,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,SAAS,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB;IACvE,mCAAmC;IACnC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;QAC1C,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC;IAED,mEAAmE;IACnE,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACnC,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC;IAED,qCAAqC;IACrC,iDAAiD;IACjD,wEAAwE;IACxE,MAAM,QAAQ,GACZ,GAAG,CAAC,MAAM;QACV,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,OAAO;QAC5C,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAEtD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YAC1B,KAAK,EAAE,gBAAgB;YACvB,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,mEAAmE;SAC7E,CAAC,CAAC;IACL,CAAC;IAED,IAAI,EAAE,CAAC;AACT,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,aAAa,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB;IAC3E,mCAAmC;IACnC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;QAC1C,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC;IAED,6BAA6B;IAC7B,MAAM,QAAQ,GACZ,GAAG,CAAC,MAAM;QACV,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,OAAO;QAC5C,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAEtD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,oBAAoB;QACpB,MAAM,QAAQ,GAAG,WAAW,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;QAChE,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,EAAE,CAAC;AACT,CAAC"}
1
+ {"version":3,"file":"httpsOnly.js","sourceRoot":"","sources":["../../src/middleware/httpsOnly.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentstudio",
3
- "version": "0.1.29",
3
+ "version": "0.1.31",
4
4
  "description": "AgentStudio - AI-powered agent workspace with Claude integration. One command to start your AI agent studio.",
5
5
  "main": "index.js",
6
6
  "engines": {
@@ -35,6 +35,7 @@
35
35
  "node-cron": "^4.2.1",
36
36
  "posthog-node": "^5.21.1",
37
37
  "proper-lockfile": "^4.1.2",
38
+ "tunely": "^0.1.0",
38
39
  "undici": "^7.16.0",
39
40
  "zod": "^3.22.2"
40
41
  },
@@ -1,4 +1,4 @@
1
- import{j as e}from"./data-structures-C0h9Oap1.js";import{r as o}from"./monaco-editor-DHKm5-VF.js";import{T as ae,a as re,b as W,c as E,d as te,e as A}from"./table-aqcpYX4Z.js";import{u as le,d as ne,e as oe,f as de}from"./useAgents-COcSvqDE.js";import{u as ie}from"./agents-DmLFhp96.js";import{P as ce}from"./ProjectSelector-B1_umywl.js";import{U as xe}from"./UnifiedToolSelector-CnFTY88B.js";import{b as me,a as $}from"./index-BUj-AMWq.js";import{T as K}from"./ToolsList-CnepUgI-.js";import{u as ue}from"./tools-XV29tg8x.js";import{g as ge,v as he,ah as z,J as Y,y as H,r as pe,a2 as be,E as ye,$ as fe,O as je,X as ve}from"./ui-components-ND8WdSiV.js";import"./syntax-highlighting-CnREyncB.js";import"./FileBrowser-Dg9PfXOo.js";const Ne=({value:t,onChange:u,disabled:i=!1})=>{const[h,b]=o.useState(typeof t=="string"?"custom":"preset"),v=n=>{b(n),u(n==="custom"?"":{type:"preset",preset:"claude_code"})},N=n=>{u({type:"preset",preset:t?.preset||"claude_code",append:n})},y=n=>{u(n)};return e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center space-x-4",children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300",children:"提示词类型:"}),e.jsxs("div",{className:"flex space-x-2",children:[e.jsx("button",{type:"button",onClick:()=>v("custom"),disabled:i,className:`px-3 py-1 rounded-md text-sm font-medium transition-colors ${h==="custom"?"bg-blue-600 text-white":"bg-gray-200 text-gray-700 hover:bg-gray-300"} ${i?"opacity-50 cursor-not-allowed":""}`,children:"自定义"}),e.jsx("button",{type:"button",onClick:()=>v("preset"),disabled:i,className:`px-3 py-1 rounded-md text-sm font-medium transition-colors ${h==="preset"?"bg-blue-600 text-white":"bg-gray-200 text-gray-700 hover:bg-gray-300"} ${i?"opacity-50 cursor-not-allowed":""}`,children:"预设"})]})]}),h==="custom"&&e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:"系统提示词"}),e.jsx("textarea",{value:typeof t=="string"?t:"",onChange:n=>y(n.target.value),disabled:i,rows:8,className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 font-mono text-sm dark:bg-gray-700 dark:text-white",placeholder:"输入助手的系统提示词..."})]}),h==="preset"&&e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:"预设类型"}),e.jsx("div",{className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-gray-50 dark:bg-gray-700 text-sm dark:text-white",children:"Claude Code 预设 (使用 Claude Code SDK 的默认提示词)"}),e.jsx("p",{className:"mt-1 text-xs text-gray-500 dark:text-gray-400",children:"所有预设都基于 Claude Code SDK 的默认提示词,通过追加内容来定制不同用途"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:"追加提示词 (可选)"}),e.jsx("textarea",{value:t?.append||"",onChange:n=>N(n.target.value),disabled:i,rows:4,className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 font-mono text-sm dark:bg-gray-700 dark:text-white",placeholder:"在预设提示词后追加自定义内容..."}),e.jsx("p",{className:"mt-1 text-xs text-gray-500 dark:text-gray-400",children:"这段内容将追加到 Claude Code 默认提示词的后面"})]})]})]})},Ue=()=>{const{t}=ue("pages"),{isMobile:u}=me(),{data:i,isLoading:h}=le(),b=ne(),v=oe(),N=de(),y=ie(),[n,f]=o.useState(null),[a,d]=o.useState({}),[c,k]=o.useState(!1),[J,w]=o.useState(!1),[R,x]=o.useState(null),[T,S]=o.useState(null),[p,X]=o.useState(""),[I,U]=o.useState(!1),[C,D]=o.useState([]),[j,P]=o.useState([]),[B,M]=o.useState(!1),[O,L]=o.useState({}),q=i?.agents||[],F=q.filter(s=>s.name.toLowerCase().includes(p.toLowerCase())||s.description.toLowerCase().includes(p.toLowerCase())),Z=s=>{if(T){const r=new URLSearchParams;r.set("project",s);const l=`/chat/${T.id}?${r.toString()}`;window.open(l,"_blank")}w(!1),S(null)},V=async s=>{try{await b.mutateAsync({agentId:s.id,data:{enabled:!s.enabled}}),y.invalidateQueries({queryKey:["agents"]})}catch(r){console.error("Failed to toggle agent:",r),$(t("agents.errors.toggleFailed"))}},G=s=>{f(s),d(s),k(!1);const r=s.allowedTools?.filter(g=>g.enabled).map(g=>g.name)||[],l=r.filter(g=>!g.startsWith("mcp__")),m=r.filter(g=>g.startsWith("mcp__"));D(l),P(m),M(m.length>0)},_=()=>{const s=q.find(m=>m.id==="general-chat"),r={id:`agent-${Date.now()}`,name:"",description:"",version:"1.0.0",systemPrompt:s?.systemPrompt||`You are a general-purpose AI assistant. You can help with:
1
+ import{j as e}from"./data-structures-C0h9Oap1.js";import{r as o}from"./monaco-editor-DHKm5-VF.js";import{T as ae,a as re,b as W,c as E,d as te,e as A}from"./table-aiCRrLk5.js";import{u as le,d as ne,e as oe,f as de}from"./useAgents-BlQGwXjx.js";import{u as ie}from"./agents-D9dWnZr0.js";import{P as ce}from"./ProjectSelector-CION-PmR.js";import{U as xe}from"./UnifiedToolSelector-Bw-E7HW4.js";import{b as me,a as $}from"./index-1qMWEcRb.js";import{T as K}from"./ToolsList-C9LELdNX.js";import{u as ue}from"./tools-zTM46-tZ.js";import{g as ge,v as he,ag as z,J as Y,y as H,r as pe,ab as be,E as ye,a8 as fe,a3 as je,X as ve}from"./ui-components-BsYwJvCF.js";import"./syntax-highlighting-CnREyncB.js";import"./FileBrowser-Z9hLFPpv.js";const Ne=({value:t,onChange:u,disabled:i=!1})=>{const[h,b]=o.useState(typeof t=="string"?"custom":"preset"),v=n=>{b(n),u(n==="custom"?"":{type:"preset",preset:"claude_code"})},N=n=>{u({type:"preset",preset:t?.preset||"claude_code",append:n})},y=n=>{u(n)};return e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center space-x-4",children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300",children:"提示词类型:"}),e.jsxs("div",{className:"flex space-x-2",children:[e.jsx("button",{type:"button",onClick:()=>v("custom"),disabled:i,className:`px-3 py-1 rounded-md text-sm font-medium transition-colors ${h==="custom"?"bg-blue-600 text-white":"bg-gray-200 text-gray-700 hover:bg-gray-300"} ${i?"opacity-50 cursor-not-allowed":""}`,children:"自定义"}),e.jsx("button",{type:"button",onClick:()=>v("preset"),disabled:i,className:`px-3 py-1 rounded-md text-sm font-medium transition-colors ${h==="preset"?"bg-blue-600 text-white":"bg-gray-200 text-gray-700 hover:bg-gray-300"} ${i?"opacity-50 cursor-not-allowed":""}`,children:"预设"})]})]}),h==="custom"&&e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:"系统提示词"}),e.jsx("textarea",{value:typeof t=="string"?t:"",onChange:n=>y(n.target.value),disabled:i,rows:8,className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 font-mono text-sm dark:bg-gray-700 dark:text-white",placeholder:"输入助手的系统提示词..."})]}),h==="preset"&&e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:"预设类型"}),e.jsx("div",{className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-gray-50 dark:bg-gray-700 text-sm dark:text-white",children:"Claude Code 预设 (使用 Claude Code SDK 的默认提示词)"}),e.jsx("p",{className:"mt-1 text-xs text-gray-500 dark:text-gray-400",children:"所有预设都基于 Claude Code SDK 的默认提示词,通过追加内容来定制不同用途"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:"追加提示词 (可选)"}),e.jsx("textarea",{value:t?.append||"",onChange:n=>N(n.target.value),disabled:i,rows:4,className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 font-mono text-sm dark:bg-gray-700 dark:text-white",placeholder:"在预设提示词后追加自定义内容..."}),e.jsx("p",{className:"mt-1 text-xs text-gray-500 dark:text-gray-400",children:"这段内容将追加到 Claude Code 默认提示词的后面"})]})]})]})},Ue=()=>{const{t}=ue("pages"),{isMobile:u}=me(),{data:i,isLoading:h}=le(),b=ne(),v=oe(),N=de(),y=ie(),[n,f]=o.useState(null),[a,d]=o.useState({}),[c,k]=o.useState(!1),[J,w]=o.useState(!1),[R,x]=o.useState(null),[T,S]=o.useState(null),[p,X]=o.useState(""),[I,U]=o.useState(!1),[C,D]=o.useState([]),[j,P]=o.useState([]),[B,M]=o.useState(!1),[L,O]=o.useState({}),q=i?.agents||[],F=q.filter(s=>s.name.toLowerCase().includes(p.toLowerCase())||s.description.toLowerCase().includes(p.toLowerCase())),Z=s=>{if(T){const r=new URLSearchParams;r.set("project",s);const l=`/chat/${T.id}?${r.toString()}`;window.open(l,"_blank")}w(!1),S(null)},V=async s=>{try{await b.mutateAsync({agentId:s.id,data:{enabled:!s.enabled}}),y.invalidateQueries({queryKey:["agents"]})}catch(r){console.error("Failed to toggle agent:",r),$(t("agents.errors.toggleFailed"))}},G=s=>{f(s),d(s),k(!1);const r=s.allowedTools?.filter(g=>g.enabled).map(g=>g.name)||[],l=r.filter(g=>!g.startsWith("mcp__")),m=r.filter(g=>g.startsWith("mcp__"));D(l),P(m),M(m.length>0)},_=()=>{const s=q.find(m=>m.id==="general-chat"),r={id:`agent-${Date.now()}`,name:"",description:"",version:"1.0.0",systemPrompt:s?.systemPrompt||`You are a general-purpose AI assistant. You can help with:
2
2
  - General questions and conversations
3
3
  - Problem-solving and brainstorming
4
4
  - Information and explanations
@@ -7,4 +7,4 @@ import{j as e}from"./data-structures-C0h9Oap1.js";import{r as o}from"./monaco-ed
7
7
  - File operations when needed
8
8
 
9
9
  You are helpful, harmless, and honest. Always strive to provide accurate and useful information.
10
- Please respond in Chinese unless the user specifically requests another language.`,maxTurns:s?.maxTurns||void 0,permissionMode:s?.permissionMode||"bypassPermissions",allowedTools:s?.allowedTools||[{name:"Write",enabled:!0},{name:"Read",enabled:!0},{name:"Edit",enabled:!0},{name:"Glob",enabled:!0},{name:"MultiEdit",enabled:!0},{name:"Bash",enabled:!0},{name:"Task",enabled:!0},{name:"WebFetch",enabled:!0},{name:"WebSearch",enabled:!0}],ui:{icon:"🤖",headerTitle:"",headerDescription:""},author:"User",tags:["custom"],enabled:!0};f(null),d(r),k(!0);const l=r.allowedTools?.filter(m=>m.enabled).map(m=>m.name)||[];D(l),P([]),M(!1)},ee=()=>{const s=[...C];return B&&s.push(...j),s.map(l=>({name:l,enabled:!0}))},se=async()=>{if(!a||!a.name?.trim()){x(t("agents.form.nameRequired"));return}if(a.maxTurns!==void 0&&(a.maxTurns<1||a.maxTurns>100)){x(t("agents.form.maxTurnsError"));return}x(null);try{const s=ee();if(c){if(!a.id||a.id.trim()===""){x("请输入 Agent ID");return}if(!/^[a-zA-Z0-9_-]+$/.test(a.id)){x("ID 只能包含字母、数字、连字符和下划线");return}const l={...a,allowedTools:s,maxTurns:a.maxTurns,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),ui:{...a.ui,headerTitle:a.ui?.headerTitle||a.name,headerDescription:a.ui?.headerDescription||a.description}};await N.mutateAsync(l)}else{if(!n)return;const r={...a,allowedTools:s,maxTurns:a.maxTurns!==void 0?a.maxTurns:null,enabled:n.enabled};await b.mutateAsync({agentId:n.id,data:r})}f(null),d({}),k(!1),x(null),y.invalidateQueries({queryKey:["agents"]})}catch(s){console.error("Failed to save agent:",s);let r=t(c?"agents.errors.createFailed":"agents.errors.saveFailed");if(s?.response?.data?.details?.issues?.length>0){const l=s.response.data.details.issues[0];l.path.includes("maxTurns")&&l.code==="too_big"?r=t("agents.form.maxTurnsExceeded",{maximum:l.maximum}):r=l.message||r}else s?.response?.data?.error?r=s.response.data.error:s?.message&&(r=s.message);x(r)}},Q=async s=>{if(console.log("🗑️ [FRONTEND DEBUG] Attempting to delete agent:",{id:s.id,name:s.name,author:s.author}),s.author==="System"){console.log(`🛑 [FRONTEND DEBUG] Blocked deletion of system agent: ${s.id}`),$("System agents cannot be deleted");return}if(!window.confirm(t("agents.confirmDelete",{name:s.name}))){console.log("❌ [FRONTEND DEBUG] User cancelled deletion");return}console.log("✅ [FRONTEND DEBUG] User confirmed deletion, calling API...");try{await v.mutateAsync(s.id),console.log("✅ [FRONTEND DEBUG] Delete API call successful"),y.invalidateQueries({queryKey:["agents"]}),console.log("🔄 [FRONTEND DEBUG] Invalidated agents query")}catch(l){console.error("❌ [FRONTEND DEBUG] Failed to delete agent:",l),$(t("agents.errors.deleteFailed"))}};return h?e.jsx("div",{className:"p-8 flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:"animate-spin rounded-full h-12 w-12 border-b-2 border-blue-600 mx-auto mb-4"}),e.jsx("div",{className:"text-gray-600 dark:text-gray-400",children:t("agents.loading")})]})}):e.jsxs("div",{className:"p-8",children:[e.jsxs("div",{className:"mb-8",children:[e.jsx("div",{className:"flex items-center justify-between mb-6",children:e.jsxs("div",{children:[e.jsx("h1",{className:"text-3xl font-bold text-gray-900 dark:text-white",children:t("agents.title")}),e.jsx("p",{className:"text-gray-600 dark:text-gray-400 mt-2",children:t("agents.subtitle")})]})}),e.jsxs("div",{className:"flex items-center space-x-4",children:[e.jsxs("div",{className:"flex-1 relative",children:[e.jsx(ge,{className:"absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-400 w-5 h-5"}),e.jsx("input",{type:"text",placeholder:t("agents.searchPlaceholder"),value:p,onChange:s=>X(s.target.value),className:"pl-10 pr-4 py-3 w-full border border-gray-300 dark:border-gray-600 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent dark:bg-gray-700 dark:text-white"})]}),e.jsxs("button",{onClick:_,className:"flex items-center space-x-2 px-6 py-3 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors whitespace-nowrap",children:[e.jsx(he,{className:"w-5 h-5"}),e.jsx("span",{children:t("agents.createButton")})]})]})]}),F.length===0?e.jsxs("div",{className:"text-center py-16 bg-white dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700",children:[e.jsx("div",{className:"text-6xl mb-4",children:"🤖"}),e.jsx("h3",{className:"text-xl font-medium text-gray-900 dark:text-white mb-2",children:t(p?"agents.noAgentsSearch":"agents.noAgents")}),e.jsx("p",{className:"text-gray-600 dark:text-gray-400 mb-6",children:t(p?"agents.adjustSearch":"agents.createFirst")}),!p&&e.jsx("button",{onClick:_,className:"px-6 py-3 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors",children:t("agents.createButton")})]}):e.jsxs(e.Fragment,{children:[u&&e.jsx("div",{className:"space-y-4",children:F.map(s=>e.jsxs("div",{className:"bg-white dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700 p-4",children:[e.jsxs("div",{className:"flex items-start space-x-3 mb-4",children:[e.jsx("div",{className:`text-2xl ${s.enabled?"":"opacity-50"}`,children:s.ui.icon}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("h3",{className:`text-base font-medium ${s.enabled?"text-gray-900 dark:text-white":"text-gray-600 dark:text-gray-400"} truncate`,children:s.name}),e.jsx("p",{className:`text-sm ${s.enabled?"text-gray-500 dark:text-gray-400":"text-gray-400 dark:text-gray-500"} truncate mt-1`,children:s.description})]})]}),e.jsx("div",{className:"space-y-2 text-sm mb-4",children:e.jsx("div",{className:"mb-3",children:e.jsxs("div",{className:"flex items-start text-sm",children:[e.jsx("span",{className:"text-gray-500 dark:text-gray-400 mr-2 mt-1",children:"工具:"}),e.jsx("div",{className:"flex-1",children:e.jsx(K,{tools:s.allowedTools?.filter(r=>r.enabled).map(r=>r.name)||[],id:s.id,expandedTools:O,setExpandedTools:L,isMobile:!0,emptyMessage:"未启用工具"})})]})})}),e.jsxs("div",{className:"flex items-center justify-between border-t border-gray-200 dark:border-gray-700 pt-3",children:[s.enabled&&e.jsxs("button",{onClick:()=>{S(s),w(!0)},className:"flex items-center space-x-1 px-3 py-1 text-xs text-primary-foreground bg-primary rounded-md",children:[e.jsx(z,{className:"w-3 h-3"}),e.jsx("span",{children:"使用"})]}),e.jsx("button",{onClick:()=>G(s),className:"p-1 text-blue-600 hover:bg-blue-50 dark:hover:bg-blue-900/50 rounded",title:"编辑助手",children:e.jsx(Y,{className:"w-4 h-4"})}),e.jsx("button",{onClick:()=>Q(s),className:"p-1 text-red-600 hover:bg-red-50 dark:hover:bg-red-900/50 rounded",title:"删除助手",disabled:s.author==="System",children:e.jsx(H,{className:"w-4 h-4"})})]})]},s.id))}),!u&&e.jsx("div",{className:"bg-white dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700 overflow-hidden",children:e.jsxs(ae,{children:[e.jsx(re,{children:e.jsxs(W,{children:[e.jsx(E,{className:"px-6 py-3 text-xs font-medium text-gray-500 uppercase tracking-wider w-48",children:t("agents.table.agent")}),e.jsx(E,{className:"px-6 py-3 text-xs font-medium text-gray-500 uppercase tracking-wider w-48",children:t("agents.table.config")}),e.jsx(E,{className:"px-6 py-3 text-xs font-medium text-gray-500 uppercase tracking-wider w-96",children:"工具"}),e.jsx(E,{className:"px-6 py-3 text-xs font-medium text-gray-500 uppercase tracking-wider w-48",children:t("agents.table.actions")})]})}),e.jsx(te,{children:F.map(s=>e.jsxs(W,{className:"hover:bg-gray-50 dark:hover:bg-gray-700/50 transition-colors",children:[e.jsx(A,{className:"px-6 py-4 whitespace-nowrap w-48",children:e.jsxs("div",{className:"flex items-center",children:[e.jsx("div",{className:`text-2xl mr-4 ${s.enabled?"":"opacity-50"}`,children:s.ui.icon}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("div",{className:`text-sm font-medium ${s.enabled?"text-gray-900 dark:text-white":"text-gray-600 dark:text-gray-400"} truncate`,children:s.name}),e.jsx("div",{className:`text-sm ${s.enabled?"text-gray-500 dark:text-gray-400":"text-gray-400 dark:text-gray-500"} truncate`,children:s.description})]})]})}),e.jsx(A,{className:"px-6 py-4 whitespace-nowrap text-sm text-gray-900 dark:text-white w-48",children:e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex items-center",children:[e.jsx(pe,{className:"w-3 h-3 mr-1 text-gray-400"}),e.jsxs("span",{children:["最大轮次: ",s.maxTurns!==void 0?s.maxTurns:"不限制"]})]}),e.jsxs("div",{className:"flex items-center",children:[e.jsx(be,{className:"w-3 h-3 mr-1 text-gray-400"}),e.jsxs("span",{children:["权限: ",s.permissionMode==="default"?"默认":s.permissionMode==="acceptEdits"?"自动接受编辑":s.permissionMode==="bypassPermissions"?"绕过权限":s.permissionMode==="plan"?"规划模式":"默认"]})]})]})}),e.jsx(A,{className:"px-6 py-4 w-96",children:e.jsx(K,{tools:s.allowedTools?.filter(r=>r.enabled).map(r=>r.name)||[],id:s.id,expandedTools:O,setExpandedTools:L,isMobile:!1,emptyMessage:"未启用工具"})}),e.jsx(A,{className:"px-6 py-4 whitespace-nowrap text-right text-sm font-medium w-48",children:e.jsxs("div",{className:"flex items-center space-x-2",children:[s.enabled&&e.jsxs("button",{onClick:()=>{S(s),w(!0)},className:"flex items-center space-x-1 px-3 py-1 text-xs text-primary-foreground bg-primary rounded-md transition-colors hover:opacity-90",title:"开始使用助手",children:[e.jsx(z,{className:"w-3 h-3"}),e.jsx("span",{children:"使用"})]}),e.jsx("button",{onClick:()=>V(s),className:`p-1 rounded transition-colors ${s.enabled?"text-green-600 hover:bg-green-50 dark:hover:bg-green-900/50":"text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700"}`,title:s.enabled?"禁用助手":"启用助手",children:s.enabled?e.jsx(ye,{className:"w-4 h-4"}):e.jsx(fe,{className:"w-4 h-4"})}),e.jsx("button",{onClick:()=>G(s),className:"p-1 text-blue-600 hover:bg-blue-50 dark:hover:bg-blue-900/50 rounded transition-colors",title:"编辑助手",children:e.jsx(Y,{className:"w-4 h-4"})}),e.jsx("button",{onClick:()=>Q(s),className:"p-1 text-red-600 hover:bg-red-50 dark:hover:bg-red-900/50 rounded transition-colors",title:"删除助手",disabled:s.author==="System",children:e.jsx(H,{className:"w-4 h-4"})})]})})]},s.id))})]})})]}),(n||c)&&e.jsx("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 p-4",children:e.jsxs("div",{className:"bg-white dark:bg-gray-800 rounded-lg max-w-4xl w-full max-h-[90vh] overflow-hidden",children:[e.jsxs("div",{className:"flex items-center justify-between p-6 border-b border-gray-200 dark:border-gray-700",children:[e.jsx("h1",{className:"text-xl font-semibold text-gray-900 dark:text-white",children:c?"创建助手":`编辑助手:${n?.name}`}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsxs("button",{onClick:se,disabled:b.isPending||N.isPending,className:"flex items-center space-x-2 px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 disabled:opacity-50",children:[e.jsx(je,{className:"w-4 h-4"}),e.jsx("span",{children:"保存"})]}),e.jsxs("button",{onClick:()=>{f(null),d({}),k(!1),x(null)},className:"flex items-center space-x-2 px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-lg hover:bg-gray-50 dark:hover:bg-gray-700",children:[e.jsx(ve,{className:"w-4 h-4"}),e.jsx("span",{children:"取消"})]})]})]}),R&&e.jsx("div",{className:"p-4 bg-red-50 dark:bg-red-900/50 border-b border-red-200 dark:border-red-800",children:e.jsxs("div",{className:"flex items-center",children:[e.jsx("div",{className:"flex-shrink-0",children:e.jsx("svg",{className:"h-5 w-5 text-red-400",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z",clipRule:"evenodd"})})}),e.jsx("div",{className:"ml-3",children:e.jsx("p",{className:"text-sm text-red-800 dark:text-red-200",children:R})})]})}),e.jsx("div",{className:"p-6 overflow-y-auto max-h-[calc(90vh-80px)]",children:e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:"ID"}),e.jsx("input",{type:"text",value:a.id||"",onChange:s=>d({...a,id:s.target.value}),disabled:!c,placeholder:c?"例如: my-custom-agent":"ID 在编辑模式下不可修改",className:`w-full px-3 py-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 dark:bg-gray-700 dark:text-white ${c?"border-gray-300 dark:border-gray-600":"bg-gray-100 border-gray-300 text-gray-500 cursor-not-allowed"}`}),c&&e.jsx("p",{className:"mt-1 text-xs text-gray-500 dark:text-gray-400",children:"ID 用于唯一标识这个助手,只能包含字母、数字和连字符"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:"名称"}),e.jsx("input",{type:"text",value:a.name||"",onChange:s=>d({...a,name:s.target.value}),className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 dark:bg-gray-700 dark:text-white"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:"描述"}),e.jsx("textarea",{value:a.description||"",onChange:s=>d({...a,description:s.target.value}),rows:6,className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 dark:bg-gray-700 dark:text-white"})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:"最大轮次"}),e.jsx("input",{type:"number",min:"1",max:"100",value:a.maxTurns!==void 0?a.maxTurns:"",placeholder:"不限制",onChange:s=>{const r=s.target.value;if(r==="")d({...a,maxTurns:void 0});else{const l=parseInt(r);isNaN(l)||d({...a,maxTurns:l})}},className:`w-full px-3 py-2 border rounded-lg focus:outline-none focus:ring-2 dark:bg-gray-700 dark:text-white ${a.maxTurns!==void 0&&(a.maxTurns<1||a.maxTurns>100)?"border-red-500 focus:ring-red-500":"border-gray-300 dark:border-gray-600 focus:ring-blue-500"}`}),a.maxTurns!==void 0&&(a.maxTurns<1||a.maxTurns>100)&&e.jsx("p",{className:"text-red-500 dark:text-red-400 text-sm mt-1",children:"最大轮次必须在1-100之间"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:"权限模式"}),e.jsxs("select",{value:a.permissionMode||"default",onChange:s=>d({...a,permissionMode:s.target.value}),className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 dark:bg-gray-700 dark:text-white",children:[e.jsx("option",{value:"default",children:"默认"}),e.jsx("option",{value:"acceptEdits",children:"自动接受编辑"}),e.jsx("option",{value:"bypassPermissions",children:"绕过权限检查"}),e.jsx("option",{value:"plan",children:"规划模式"})]})]}),e.jsx("div",{className:"grid grid-cols-2 gap-4",children:e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:"图标"}),e.jsx("input",{type:"text",value:a.ui?.icon||"",onChange:s=>d({...a,ui:{...a.ui,icon:s.target.value}}),placeholder:"🤖",className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 dark:bg-gray-700 dark:text-white"})]})})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300",children:"启用的工具"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx("button",{type:"button",onClick:()=>U(!I),className:"px-3 py-2 bg-gray-100 dark:bg-gray-700 hover:bg-gray-200 dark:hover:bg-gray-600 text-gray-700 dark:text-gray-300 rounded-lg transition-colors text-sm",children:"选择工具"}),(C.length>0||j.length>0)&&e.jsxs("span",{className:"text-sm text-gray-600 dark:text-gray-400",children:["常规工具 ",C.length," 个",j.length>0&&`, MCP工具 ${j.length} 个`]}),e.jsx(xe,{isOpen:I,onClose:()=>U(!1),selectedRegularTools:C,onRegularToolsChange:D,selectedMcpTools:j,onMcpToolsChange:P,mcpToolsEnabled:B,onMcpEnabledChange:M})]})]}),e.jsx("div",{children:e.jsx(Ne,{value:a.systemPrompt||"",onChange:s=>d({...a,systemPrompt:s}),disabled:n?.id==="claude-code"})})]})})]})}),J&&T&&e.jsx(ce,{agent:T,onProjectSelect:Z,onClose:()=>{w(!1),S(null)}})]})};export{Ue as AgentsPage};
10
+ Please respond in Chinese unless the user specifically requests another language.`,maxTurns:s?.maxTurns||void 0,permissionMode:s?.permissionMode||"bypassPermissions",allowedTools:s?.allowedTools||[{name:"Write",enabled:!0},{name:"Read",enabled:!0},{name:"Edit",enabled:!0},{name:"Glob",enabled:!0},{name:"MultiEdit",enabled:!0},{name:"Bash",enabled:!0},{name:"Task",enabled:!0},{name:"WebFetch",enabled:!0},{name:"WebSearch",enabled:!0}],ui:{icon:"🤖",headerTitle:"",headerDescription:""},author:"User",tags:["custom"],enabled:!0};f(null),d(r),k(!0);const l=r.allowedTools?.filter(m=>m.enabled).map(m=>m.name)||[];D(l),P([]),M(!1)},ee=()=>{const s=[...C];return B&&s.push(...j),s.map(l=>({name:l,enabled:!0}))},se=async()=>{if(!a||!a.name?.trim()){x(t("agents.form.nameRequired"));return}if(a.maxTurns!==void 0&&(a.maxTurns<1||a.maxTurns>100)){x(t("agents.form.maxTurnsError"));return}x(null);try{const s=ee();if(c){if(!a.id||a.id.trim()===""){x("请输入 Agent ID");return}if(!/^[a-zA-Z0-9_-]+$/.test(a.id)){x("ID 只能包含字母、数字、连字符和下划线");return}const l={...a,allowedTools:s,maxTurns:a.maxTurns,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),ui:{...a.ui,headerTitle:a.ui?.headerTitle||a.name,headerDescription:a.ui?.headerDescription||a.description}};await N.mutateAsync(l)}else{if(!n)return;const r={...a,allowedTools:s,maxTurns:a.maxTurns!==void 0?a.maxTurns:null,enabled:n.enabled};await b.mutateAsync({agentId:n.id,data:r})}f(null),d({}),k(!1),x(null),y.invalidateQueries({queryKey:["agents"]})}catch(s){console.error("Failed to save agent:",s);let r=t(c?"agents.errors.createFailed":"agents.errors.saveFailed");if(s?.response?.data?.details?.issues?.length>0){const l=s.response.data.details.issues[0];l.path.includes("maxTurns")&&l.code==="too_big"?r=t("agents.form.maxTurnsExceeded",{maximum:l.maximum}):r=l.message||r}else s?.response?.data?.error?r=s.response.data.error:s?.message&&(r=s.message);x(r)}},Q=async s=>{if(console.log("🗑️ [FRONTEND DEBUG] Attempting to delete agent:",{id:s.id,name:s.name,author:s.author}),s.author==="System"){console.log(`🛑 [FRONTEND DEBUG] Blocked deletion of system agent: ${s.id}`),$("System agents cannot be deleted");return}if(!window.confirm(t("agents.confirmDelete",{name:s.name}))){console.log("❌ [FRONTEND DEBUG] User cancelled deletion");return}console.log("✅ [FRONTEND DEBUG] User confirmed deletion, calling API...");try{await v.mutateAsync(s.id),console.log("✅ [FRONTEND DEBUG] Delete API call successful"),y.invalidateQueries({queryKey:["agents"]}),console.log("🔄 [FRONTEND DEBUG] Invalidated agents query")}catch(l){console.error("❌ [FRONTEND DEBUG] Failed to delete agent:",l),$(t("agents.errors.deleteFailed"))}};return h?e.jsx("div",{className:"p-8 flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx("div",{className:"animate-spin rounded-full h-12 w-12 border-b-2 border-blue-600 mx-auto mb-4"}),e.jsx("div",{className:"text-gray-600 dark:text-gray-400",children:t("agents.loading")})]})}):e.jsxs("div",{className:"p-8",children:[e.jsxs("div",{className:"mb-8",children:[e.jsx("div",{className:"flex items-center justify-between mb-6",children:e.jsxs("div",{children:[e.jsx("h1",{className:"text-3xl font-bold text-gray-900 dark:text-white",children:t("agents.title")}),e.jsx("p",{className:"text-gray-600 dark:text-gray-400 mt-2",children:t("agents.subtitle")})]})}),e.jsxs("div",{className:"flex items-center space-x-4",children:[e.jsxs("div",{className:"flex-1 relative",children:[e.jsx(ge,{className:"absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-400 w-5 h-5"}),e.jsx("input",{type:"text",placeholder:t("agents.searchPlaceholder"),value:p,onChange:s=>X(s.target.value),className:"pl-10 pr-4 py-3 w-full border border-gray-300 dark:border-gray-600 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent dark:bg-gray-700 dark:text-white"})]}),e.jsxs("button",{onClick:_,className:"flex items-center space-x-2 px-6 py-3 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors whitespace-nowrap",children:[e.jsx(he,{className:"w-5 h-5"}),e.jsx("span",{children:t("agents.createButton")})]})]})]}),F.length===0?e.jsxs("div",{className:"text-center py-16 bg-white dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700",children:[e.jsx("div",{className:"text-6xl mb-4",children:"🤖"}),e.jsx("h3",{className:"text-xl font-medium text-gray-900 dark:text-white mb-2",children:t(p?"agents.noAgentsSearch":"agents.noAgents")}),e.jsx("p",{className:"text-gray-600 dark:text-gray-400 mb-6",children:t(p?"agents.adjustSearch":"agents.createFirst")}),!p&&e.jsx("button",{onClick:_,className:"px-6 py-3 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors",children:t("agents.createButton")})]}):e.jsxs(e.Fragment,{children:[u&&e.jsx("div",{className:"space-y-4",children:F.map(s=>e.jsxs("div",{className:"bg-white dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700 p-4",children:[e.jsxs("div",{className:"flex items-start space-x-3 mb-4",children:[e.jsx("div",{className:`text-2xl ${s.enabled?"":"opacity-50"}`,children:s.ui.icon}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("h3",{className:`text-base font-medium ${s.enabled?"text-gray-900 dark:text-white":"text-gray-600 dark:text-gray-400"} truncate`,children:s.name}),e.jsx("p",{className:`text-sm ${s.enabled?"text-gray-500 dark:text-gray-400":"text-gray-400 dark:text-gray-500"} truncate mt-1`,children:s.description})]})]}),e.jsx("div",{className:"space-y-2 text-sm mb-4",children:e.jsx("div",{className:"mb-3",children:e.jsxs("div",{className:"flex items-start text-sm",children:[e.jsx("span",{className:"text-gray-500 dark:text-gray-400 mr-2 mt-1",children:"工具:"}),e.jsx("div",{className:"flex-1",children:e.jsx(K,{tools:s.allowedTools?.filter(r=>r.enabled).map(r=>r.name)||[],id:s.id,expandedTools:L,setExpandedTools:O,isMobile:!0,emptyMessage:"未启用工具"})})]})})}),e.jsxs("div",{className:"flex items-center justify-between border-t border-gray-200 dark:border-gray-700 pt-3",children:[s.enabled&&e.jsxs("button",{onClick:()=>{S(s),w(!0)},className:"flex items-center space-x-1 px-3 py-1 text-xs text-primary-foreground bg-primary rounded-md",children:[e.jsx(z,{className:"w-3 h-3"}),e.jsx("span",{children:"使用"})]}),e.jsx("button",{onClick:()=>G(s),className:"p-1 text-blue-600 hover:bg-blue-50 dark:hover:bg-blue-900/50 rounded",title:"编辑助手",children:e.jsx(Y,{className:"w-4 h-4"})}),e.jsx("button",{onClick:()=>Q(s),className:"p-1 text-red-600 hover:bg-red-50 dark:hover:bg-red-900/50 rounded",title:"删除助手",disabled:s.author==="System",children:e.jsx(H,{className:"w-4 h-4"})})]})]},s.id))}),!u&&e.jsx("div",{className:"bg-white dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700 overflow-hidden",children:e.jsxs(ae,{children:[e.jsx(re,{children:e.jsxs(W,{children:[e.jsx(E,{className:"px-6 py-3 text-xs font-medium text-gray-500 uppercase tracking-wider w-48",children:t("agents.table.agent")}),e.jsx(E,{className:"px-6 py-3 text-xs font-medium text-gray-500 uppercase tracking-wider w-48",children:t("agents.table.config")}),e.jsx(E,{className:"px-6 py-3 text-xs font-medium text-gray-500 uppercase tracking-wider w-96",children:"工具"}),e.jsx(E,{className:"px-6 py-3 text-xs font-medium text-gray-500 uppercase tracking-wider w-48",children:t("agents.table.actions")})]})}),e.jsx(te,{children:F.map(s=>e.jsxs(W,{className:"hover:bg-gray-50 dark:hover:bg-gray-700/50 transition-colors",children:[e.jsx(A,{className:"px-6 py-4 whitespace-nowrap w-48",children:e.jsxs("div",{className:"flex items-center",children:[e.jsx("div",{className:`text-2xl mr-4 ${s.enabled?"":"opacity-50"}`,children:s.ui.icon}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("div",{className:`text-sm font-medium ${s.enabled?"text-gray-900 dark:text-white":"text-gray-600 dark:text-gray-400"} truncate`,children:s.name}),e.jsx("div",{className:`text-sm ${s.enabled?"text-gray-500 dark:text-gray-400":"text-gray-400 dark:text-gray-500"} truncate`,children:s.description})]})]})}),e.jsx(A,{className:"px-6 py-4 whitespace-nowrap text-sm text-gray-900 dark:text-white w-48",children:e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex items-center",children:[e.jsx(pe,{className:"w-3 h-3 mr-1 text-gray-400"}),e.jsxs("span",{children:["最大轮次: ",s.maxTurns!==void 0?s.maxTurns:"不限制"]})]}),e.jsxs("div",{className:"flex items-center",children:[e.jsx(be,{className:"w-3 h-3 mr-1 text-gray-400"}),e.jsxs("span",{children:["权限: ",s.permissionMode==="default"?"默认":s.permissionMode==="acceptEdits"?"自动接受编辑":s.permissionMode==="bypassPermissions"?"绕过权限":s.permissionMode==="plan"?"规划模式":"默认"]})]})]})}),e.jsx(A,{className:"px-6 py-4 w-96",children:e.jsx(K,{tools:s.allowedTools?.filter(r=>r.enabled).map(r=>r.name)||[],id:s.id,expandedTools:L,setExpandedTools:O,isMobile:!1,emptyMessage:"未启用工具"})}),e.jsx(A,{className:"px-6 py-4 whitespace-nowrap text-right text-sm font-medium w-48",children:e.jsxs("div",{className:"flex items-center space-x-2",children:[s.enabled&&e.jsxs("button",{onClick:()=>{S(s),w(!0)},className:"flex items-center space-x-1 px-3 py-1 text-xs text-primary-foreground bg-primary rounded-md transition-colors hover:opacity-90",title:"开始使用助手",children:[e.jsx(z,{className:"w-3 h-3"}),e.jsx("span",{children:"使用"})]}),e.jsx("button",{onClick:()=>V(s),className:`p-1 rounded transition-colors ${s.enabled?"text-green-600 hover:bg-green-50 dark:hover:bg-green-900/50":"text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700"}`,title:s.enabled?"禁用助手":"启用助手",children:s.enabled?e.jsx(ye,{className:"w-4 h-4"}):e.jsx(fe,{className:"w-4 h-4"})}),e.jsx("button",{onClick:()=>G(s),className:"p-1 text-blue-600 hover:bg-blue-50 dark:hover:bg-blue-900/50 rounded transition-colors",title:"编辑助手",children:e.jsx(Y,{className:"w-4 h-4"})}),e.jsx("button",{onClick:()=>Q(s),className:"p-1 text-red-600 hover:bg-red-50 dark:hover:bg-red-900/50 rounded transition-colors",title:"删除助手",disabled:s.author==="System",children:e.jsx(H,{className:"w-4 h-4"})})]})})]},s.id))})]})})]}),(n||c)&&e.jsx("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50 p-4",children:e.jsxs("div",{className:"bg-white dark:bg-gray-800 rounded-lg max-w-4xl w-full max-h-[90vh] overflow-hidden",children:[e.jsxs("div",{className:"flex items-center justify-between p-6 border-b border-gray-200 dark:border-gray-700",children:[e.jsx("h1",{className:"text-xl font-semibold text-gray-900 dark:text-white",children:c?"创建助手":`编辑助手:${n?.name}`}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsxs("button",{onClick:se,disabled:b.isPending||N.isPending,className:"flex items-center space-x-2 px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 disabled:opacity-50",children:[e.jsx(je,{className:"w-4 h-4"}),e.jsx("span",{children:"保存"})]}),e.jsxs("button",{onClick:()=>{f(null),d({}),k(!1),x(null)},className:"flex items-center space-x-2 px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-lg hover:bg-gray-50 dark:hover:bg-gray-700",children:[e.jsx(ve,{className:"w-4 h-4"}),e.jsx("span",{children:"取消"})]})]})]}),R&&e.jsx("div",{className:"p-4 bg-red-50 dark:bg-red-900/50 border-b border-red-200 dark:border-red-800",children:e.jsxs("div",{className:"flex items-center",children:[e.jsx("div",{className:"flex-shrink-0",children:e.jsx("svg",{className:"h-5 w-5 text-red-400",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z",clipRule:"evenodd"})})}),e.jsx("div",{className:"ml-3",children:e.jsx("p",{className:"text-sm text-red-800 dark:text-red-200",children:R})})]})}),e.jsx("div",{className:"p-6 overflow-y-auto max-h-[calc(90vh-80px)]",children:e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:"ID"}),e.jsx("input",{type:"text",value:a.id||"",onChange:s=>d({...a,id:s.target.value}),disabled:!c,placeholder:c?"例如: my-custom-agent":"ID 在编辑模式下不可修改",className:`w-full px-3 py-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 dark:bg-gray-700 dark:text-white ${c?"border-gray-300 dark:border-gray-600":"bg-gray-100 border-gray-300 text-gray-500 cursor-not-allowed"}`}),c&&e.jsx("p",{className:"mt-1 text-xs text-gray-500 dark:text-gray-400",children:"ID 用于唯一标识这个助手,只能包含字母、数字和连字符"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:"名称"}),e.jsx("input",{type:"text",value:a.name||"",onChange:s=>d({...a,name:s.target.value}),className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 dark:bg-gray-700 dark:text-white"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:"描述"}),e.jsx("textarea",{value:a.description||"",onChange:s=>d({...a,description:s.target.value}),rows:6,className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 dark:bg-gray-700 dark:text-white"})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:"最大轮次"}),e.jsx("input",{type:"number",min:"1",max:"100",value:a.maxTurns!==void 0?a.maxTurns:"",placeholder:"不限制",onChange:s=>{const r=s.target.value;if(r==="")d({...a,maxTurns:void 0});else{const l=parseInt(r);isNaN(l)||d({...a,maxTurns:l})}},className:`w-full px-3 py-2 border rounded-lg focus:outline-none focus:ring-2 dark:bg-gray-700 dark:text-white ${a.maxTurns!==void 0&&(a.maxTurns<1||a.maxTurns>100)?"border-red-500 focus:ring-red-500":"border-gray-300 dark:border-gray-600 focus:ring-blue-500"}`}),a.maxTurns!==void 0&&(a.maxTurns<1||a.maxTurns>100)&&e.jsx("p",{className:"text-red-500 dark:text-red-400 text-sm mt-1",children:"最大轮次必须在1-100之间"})]}),e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:"权限模式"}),e.jsxs("select",{value:a.permissionMode||"default",onChange:s=>d({...a,permissionMode:s.target.value}),className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 dark:bg-gray-700 dark:text-white",children:[e.jsx("option",{value:"default",children:"默认"}),e.jsx("option",{value:"acceptEdits",children:"自动接受编辑"}),e.jsx("option",{value:"bypassPermissions",children:"绕过权限检查"}),e.jsx("option",{value:"plan",children:"规划模式"})]})]}),e.jsx("div",{className:"grid grid-cols-2 gap-4",children:e.jsxs("div",{children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:"图标"}),e.jsx("input",{type:"text",value:a.ui?.icon||"",onChange:s=>d({...a,ui:{...a.ui,icon:s.target.value}}),placeholder:"🤖",className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 dark:bg-gray-700 dark:text-white"})]})})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300",children:"启用的工具"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx("button",{type:"button",onClick:()=>U(!I),className:"px-3 py-2 bg-gray-100 dark:bg-gray-700 hover:bg-gray-200 dark:hover:bg-gray-600 text-gray-700 dark:text-gray-300 rounded-lg transition-colors text-sm",children:"选择工具"}),(C.length>0||j.length>0)&&e.jsxs("span",{className:"text-sm text-gray-600 dark:text-gray-400",children:["常规工具 ",C.length," 个",j.length>0&&`, MCP工具 ${j.length} 个`]}),e.jsx(xe,{isOpen:I,onClose:()=>U(!1),selectedRegularTools:C,onRegularToolsChange:D,selectedMcpTools:j,onMcpToolsChange:P,mcpToolsEnabled:B,onMcpEnabledChange:M})]})]}),e.jsx("div",{children:e.jsx(Ne,{value:a.systemPrompt||"",onChange:s=>d({...a,systemPrompt:s}),disabled:n?.id==="claude-code"})})]})})]})}),J&&T&&e.jsx(ce,{agent:T,onProjectSelect:Z,onClose:()=>{w(!1),S(null)}})]})};export{Ue as AgentsPage};
@@ -1 +1 @@
1
- import{j as s}from"./data-structures-C0h9Oap1.js";import{W as d}from"./monaco-editor-DHKm5-VF.js";import{t as i,h as u}from"./index-BUj-AMWq.js";function c(...o){return i(u(o))}const f=d.forwardRef(({className:o,variant:e="default",size:r="default",...t},n)=>s.jsx("button",{className:c("inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{"bg-primary text-primary-foreground hover:bg-primary/90":e==="default","bg-destructive text-destructive-foreground hover:bg-destructive/90":e==="destructive","border border-input bg-background hover:bg-accent hover:text-accent-foreground":e==="outline","bg-secondary text-secondary-foreground hover:bg-secondary/80":e==="secondary","hover:bg-accent hover:text-accent-foreground":e==="ghost"},{"h-10 px-4 py-2":r==="default","h-9 rounded-md px-3":r==="sm","h-11 rounded-md px-8":r==="lg","h-10 w-10":r==="icon"},o),ref:n,...t}));f.displayName="Button";export{f as B,c};
1
+ import{j as s}from"./data-structures-C0h9Oap1.js";import{W as d}from"./monaco-editor-DHKm5-VF.js";import{t as i,h as u}from"./index-1qMWEcRb.js";function c(...o){return i(u(o))}const f=d.forwardRef(({className:o,variant:e="default",size:r="default",...t},n)=>s.jsx("button",{className:c("inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{"bg-primary text-primary-foreground hover:bg-primary/90":e==="default","bg-destructive text-destructive-foreground hover:bg-destructive/90":e==="destructive","border border-input bg-background hover:bg-accent hover:text-accent-foreground":e==="outline","bg-secondary text-secondary-foreground hover:bg-secondary/80":e==="secondary","hover:bg-accent hover:text-accent-foreground":e==="ghost"},{"h-10 px-4 py-2":r==="default","h-9 rounded-md px-3":r==="sm","h-11 rounded-md px-8":r==="lg","h-10 w-10":r==="icon"},o),ref:n,...t}));f.displayName="Button";export{f as B,c};