botmux 3.1.1 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/dist/adapters/backend/sandbox.d.ts +23 -0
  2. package/dist/adapters/backend/sandbox.d.ts.map +1 -1
  3. package/dist/adapters/backend/sandbox.js +68 -1
  4. package/dist/adapters/backend/sandbox.js.map +1 -1
  5. package/dist/adapters/cli/read-isolation.d.ts +1 -1
  6. package/dist/adapters/cli/read-isolation.d.ts.map +1 -1
  7. package/dist/adapters/cli/read-isolation.js +15 -7
  8. package/dist/adapters/cli/read-isolation.js.map +1 -1
  9. package/dist/cli.d.ts.map +1 -1
  10. package/dist/cli.js +117 -25
  11. package/dist/cli.js.map +1 -1
  12. package/dist/core/command-handler.d.ts.map +1 -1
  13. package/dist/core/command-handler.js +11 -4
  14. package/dist/core/command-handler.js.map +1 -1
  15. package/dist/core/dashboard-ipc-server.d.ts +1 -0
  16. package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
  17. package/dist/core/dashboard-ipc-server.js +132 -0
  18. package/dist/core/dashboard-ipc-server.js.map +1 -1
  19. package/dist/core/maintenance.d.ts +23 -1
  20. package/dist/core/maintenance.d.ts.map +1 -1
  21. package/dist/core/maintenance.js +63 -25
  22. package/dist/core/maintenance.js.map +1 -1
  23. package/dist/core/plugins/cli-generation.d.ts.map +1 -1
  24. package/dist/core/plugins/cli-generation.js +7 -0
  25. package/dist/core/plugins/cli-generation.js.map +1 -1
  26. package/dist/core/plugins/convention-scanner.d.ts +3 -3
  27. package/dist/core/plugins/convention-scanner.d.ts.map +1 -1
  28. package/dist/core/plugins/convention-scanner.js.map +1 -1
  29. package/dist/core/plugins/install.d.ts.map +1 -1
  30. package/dist/core/plugins/install.js +84 -26
  31. package/dist/core/plugins/install.js.map +1 -1
  32. package/dist/core/plugins/mcp/environment.d.ts +12 -0
  33. package/dist/core/plugins/mcp/environment.d.ts.map +1 -0
  34. package/dist/core/plugins/mcp/environment.js +17 -0
  35. package/dist/core/plugins/mcp/environment.js.map +1 -0
  36. package/dist/core/plugins/mcp/gateway-installer.d.ts.map +1 -1
  37. package/dist/core/plugins/mcp/gateway-installer.js +9 -3
  38. package/dist/core/plugins/mcp/gateway-installer.js.map +1 -1
  39. package/dist/core/plugins/mcp/gateway.d.ts +13 -1
  40. package/dist/core/plugins/mcp/gateway.d.ts.map +1 -1
  41. package/dist/core/plugins/mcp/gateway.js +143 -23
  42. package/dist/core/plugins/mcp/gateway.js.map +1 -1
  43. package/dist/core/plugins/mcp/host.d.ts +18 -0
  44. package/dist/core/plugins/mcp/host.d.ts.map +1 -0
  45. package/dist/core/plugins/mcp/host.js +126 -0
  46. package/dist/core/plugins/mcp/host.js.map +1 -0
  47. package/dist/core/plugins/mcp/private-store.d.ts +15 -0
  48. package/dist/core/plugins/mcp/private-store.d.ts.map +1 -0
  49. package/dist/core/plugins/mcp/private-store.js +162 -0
  50. package/dist/core/plugins/mcp/private-store.js.map +1 -0
  51. package/dist/core/plugins/mcp/session-runtime.d.ts +25 -0
  52. package/dist/core/plugins/mcp/session-runtime.d.ts.map +1 -0
  53. package/dist/core/plugins/mcp/session-runtime.js +76 -0
  54. package/dist/core/plugins/mcp/session-runtime.js.map +1 -0
  55. package/dist/core/plugins/mcp/socket-auth.d.ts +9 -0
  56. package/dist/core/plugins/mcp/socket-auth.d.ts.map +1 -0
  57. package/dist/core/plugins/mcp/socket-auth.js +94 -0
  58. package/dist/core/plugins/mcp/socket-auth.js.map +1 -0
  59. package/dist/core/plugins/paths.d.ts +3 -0
  60. package/dist/core/plugins/paths.d.ts.map +1 -1
  61. package/dist/core/plugins/paths.js +9 -0
  62. package/dist/core/plugins/paths.js.map +1 -1
  63. package/dist/core/plugins/pm2.d.ts.map +1 -1
  64. package/dist/core/plugins/pm2.js +3 -1
  65. package/dist/core/plugins/pm2.js.map +1 -1
  66. package/dist/core/plugins/runtime.d.ts +2 -0
  67. package/dist/core/plugins/runtime.d.ts.map +1 -1
  68. package/dist/core/plugins/runtime.js.map +1 -1
  69. package/dist/core/plugins/service-manager.d.ts +22 -0
  70. package/dist/core/plugins/service-manager.d.ts.map +1 -1
  71. package/dist/core/plugins/service-manager.js +189 -52
  72. package/dist/core/plugins/service-manager.js.map +1 -1
  73. package/dist/core/plugins/types.d.ts +15 -1
  74. package/dist/core/plugins/types.d.ts.map +1 -1
  75. package/dist/core/restart-report.d.ts +1 -1
  76. package/dist/core/restart-report.d.ts.map +1 -1
  77. package/dist/core/restart-report.js +5 -3
  78. package/dist/core/restart-report.js.map +1 -1
  79. package/dist/core/scheduler.d.ts +47 -0
  80. package/dist/core/scheduler.d.ts.map +1 -1
  81. package/dist/core/scheduler.js +117 -0
  82. package/dist/core/scheduler.js.map +1 -1
  83. package/dist/core/session-manager.d.ts +7 -0
  84. package/dist/core/session-manager.d.ts.map +1 -1
  85. package/dist/core/session-manager.js +130 -33
  86. package/dist/core/session-manager.js.map +1 -1
  87. package/dist/core/silent-schedule-turns.d.ts +5 -0
  88. package/dist/core/silent-schedule-turns.d.ts.map +1 -0
  89. package/dist/core/silent-schedule-turns.js +47 -0
  90. package/dist/core/silent-schedule-turns.js.map +1 -0
  91. package/dist/core/types.d.ts +6 -0
  92. package/dist/core/types.d.ts.map +1 -1
  93. package/dist/core/types.js.map +1 -1
  94. package/dist/core/update-check.d.ts +16 -0
  95. package/dist/core/update-check.d.ts.map +1 -1
  96. package/dist/core/update-check.js +52 -0
  97. package/dist/core/update-check.js.map +1 -1
  98. package/dist/core/worker-pool.d.ts.map +1 -1
  99. package/dist/core/worker-pool.js +30 -23
  100. package/dist/core/worker-pool.js.map +1 -1
  101. package/dist/dashboard/schedule-card-model.d.ts +3 -0
  102. package/dist/dashboard/schedule-card-model.d.ts.map +1 -1
  103. package/dist/dashboard/schedule-card-model.js +5 -0
  104. package/dist/dashboard/schedule-card-model.js.map +1 -1
  105. package/dist/dashboard/web/app.d.ts.map +1 -1
  106. package/dist/dashboard/web/app.js +295 -6
  107. package/dist/dashboard/web/app.js.map +1 -1
  108. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  109. package/dist/dashboard/web/i18n.js +92 -0
  110. package/dist/dashboard/web/i18n.js.map +1 -1
  111. package/dist/dashboard/web/plugin-page.d.ts.map +1 -1
  112. package/dist/dashboard/web/plugin-page.js +1 -3
  113. package/dist/dashboard/web/plugin-page.js.map +1 -1
  114. package/dist/dashboard/web/schedules-page.d.ts.map +1 -1
  115. package/dist/dashboard/web/schedules-page.js +111 -4
  116. package/dist/dashboard/web/schedules-page.js.map +1 -1
  117. package/dist/dashboard/web/settings-page.d.ts.map +1 -1
  118. package/dist/dashboard/web/settings-page.js +5 -1
  119. package/dist/dashboard/web/settings-page.js.map +1 -1
  120. package/dist/dashboard/web/update-action.d.ts +16 -0
  121. package/dist/dashboard/web/update-action.d.ts.map +1 -0
  122. package/dist/dashboard/web/update-action.js +64 -0
  123. package/dist/dashboard/web/update-action.js.map +1 -0
  124. package/dist/dashboard-web/app.js +1 -1
  125. package/dist/dashboard-web/chunks/{bot-defaults-page-KLDCZNLP.js → bot-defaults-page-4PM4T6QQ.js} +1 -1
  126. package/dist/dashboard-web/chunks/{chunk-FMJNOATE.js → chunk-3PMN55Z6.js} +1 -1
  127. package/dist/dashboard-web/chunks/{chunk-MLNI5BKE.js → chunk-AIDN2WZB.js} +1 -1
  128. package/dist/dashboard-web/chunks/{chunk-EZAW2EPM.js → chunk-IKCZ677K.js} +1 -1
  129. package/dist/dashboard-web/chunks/{chunk-KEAOTUL3.js → chunk-RXVA6XW3.js} +7 -7
  130. package/dist/dashboard-web/chunks/{connectors-page-O32LFAL5.js → connectors-page-2MKF4YTN.js} +1 -1
  131. package/dist/dashboard-web/chunks/{groups-page-PSAFIZ6M.js → groups-page-TAU2UIVS.js} +1 -1
  132. package/dist/dashboard-web/chunks/{insights-page-V23LLATX.js → insights-page-PJ2XVM6T.js} +1 -1
  133. package/dist/dashboard-web/chunks/{monitor-room-7X5AKYOF.js → monitor-room-D6445HJO.js} +1 -1
  134. package/dist/dashboard-web/chunks/{monitoring-page-CBA3CQYL.js → monitoring-page-GUHMCKSO.js} +1 -1
  135. package/dist/dashboard-web/chunks/{office-page-RL6QSEM7.js → office-page-6K6U2MS5.js} +1 -1
  136. package/dist/dashboard-web/chunks/{overview-page-XQIPO6KH.js → overview-page-USDYU7U5.js} +1 -1
  137. package/dist/dashboard-web/chunks/plugin-page-JXC5F5YV.js +1 -0
  138. package/dist/dashboard-web/chunks/{roles-page-ACIWV7QS.js → roles-page-O4OUA7ZH.js} +1 -1
  139. package/dist/dashboard-web/chunks/schedules-page-LNIBXJSZ.js +1 -0
  140. package/dist/dashboard-web/chunks/{sessions-page-2WDWHSP4.js → sessions-page-B6U6TCFF.js} +1 -1
  141. package/dist/dashboard-web/chunks/{settings-page-6VX4OUGG.js → settings-page-PXLRFF7I.js} +2 -2
  142. package/dist/dashboard-web/chunks/{skills-page-WXE3UYLT.js → skills-page-M5KYNXBA.js} +1 -1
  143. package/dist/dashboard-web/chunks/{team-federation-page-PYTF4FLM.js → team-federation-page-GT7UFQMN.js} +1 -1
  144. package/dist/dashboard-web/chunks/{v3-page-G6CD6O3I.js → v3-page-UYZIRJ2C.js} +1 -1
  145. package/dist/dashboard-web/chunks/{whiteboards-page-6SG33GP4.js → whiteboards-page-WAR77DQE.js} +1 -1
  146. package/dist/dashboard-web/style.css +697 -0
  147. package/dist/dashboard.js +404 -29
  148. package/dist/dashboard.js.map +1 -1
  149. package/dist/i18n/en.d.ts.map +1 -1
  150. package/dist/i18n/en.js +4 -0
  151. package/dist/i18n/en.js.map +1 -1
  152. package/dist/i18n/zh.d.ts.map +1 -1
  153. package/dist/i18n/zh.js +4 -0
  154. package/dist/i18n/zh.js.map +1 -1
  155. package/dist/im/lark/schedules-card.d.ts.map +1 -1
  156. package/dist/im/lark/schedules-card.js +2 -0
  157. package/dist/im/lark/schedules-card.js.map +1 -1
  158. package/dist/services/plugin-registry-store.d.ts.map +1 -1
  159. package/dist/services/plugin-registry-store.js +100 -18
  160. package/dist/services/plugin-registry-store.js.map +1 -1
  161. package/dist/services/restart-intent-store.d.ts +17 -2
  162. package/dist/services/restart-intent-store.d.ts.map +1 -1
  163. package/dist/services/restart-intent-store.js +110 -0
  164. package/dist/services/restart-intent-store.js.map +1 -1
  165. package/dist/services/schedule-store.d.ts +3 -1
  166. package/dist/services/schedule-store.d.ts.map +1 -1
  167. package/dist/services/schedule-store.js +5 -0
  168. package/dist/services/schedule-store.js.map +1 -1
  169. package/dist/skills/definitions.d.ts.map +1 -1
  170. package/dist/skills/definitions.js +3 -2
  171. package/dist/skills/definitions.js.map +1 -1
  172. package/dist/types.d.ts +16 -0
  173. package/dist/types.d.ts.map +1 -1
  174. package/dist/utils/child-env.d.ts +1 -1
  175. package/dist/utils/child-env.d.ts.map +1 -1
  176. package/dist/utils/child-env.js +5 -0
  177. package/dist/utils/child-env.js.map +1 -1
  178. package/dist/utils/global-install.d.ts +2 -0
  179. package/dist/utils/global-install.d.ts.map +1 -1
  180. package/dist/utils/global-install.js +14 -0
  181. package/dist/utils/global-install.js.map +1 -1
  182. package/dist/worker.js +125 -17
  183. package/dist/worker.js.map +1 -1
  184. package/dist/workflows/hostExecutors/botmux-schedule.d.ts +3 -0
  185. package/dist/workflows/hostExecutors/botmux-schedule.d.ts.map +1 -1
  186. package/dist/workflows/hostExecutors/botmux-schedule.js +9 -0
  187. package/dist/workflows/hostExecutors/botmux-schedule.js.map +1 -1
  188. package/package.json +1 -1
  189. package/dist/dashboard-web/chunks/plugin-page-7FW2LPJH.js +0 -1
  190. package/dist/dashboard-web/chunks/schedules-page-KJDUKOJV.js +0 -1
@@ -22,6 +22,9 @@ export type ScheduleInput = {
22
22
  times: number | null;
23
23
  };
24
24
  deliver?: 'origin' | 'local' | 'new-topic';
25
+ /** Silent fires: no "task started" banner; the spawned turn suppresses
26
+ * daemon-initiated group output and the model decides whether to send. */
27
+ silent?: boolean;
25
28
  };
26
29
  export type ScheduleOutput = {
27
30
  taskId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"botmux-schedule.d.ts","sourceRoot":"","sources":["../../../src/workflows/hostExecutors/botmux-schedule.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAE3E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB;;sDAEkD;IAClD,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,GAAG,KAAK,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;kCAE8B;IAC9B,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAClC,OAAO,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,WAAW,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AA2BF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAsBhE;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,EAAE,qBAAqB,CAAC,aAAa,EAAE,cAAc,CAsEvF,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,kBAmCtC,CAAC"}
1
+ {"version":3,"file":"botmux-schedule.d.ts","sourceRoot":"","sources":["../../../src/workflows/hostExecutors/botmux-schedule.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAE3E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB;;sDAEkD;IAClD,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,GAAG,KAAK,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;kCAE8B;IAC9B,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAClC,OAAO,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,WAAW,CAAC;IAC3C;+EAC2E;IAC3E,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AA4BF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAsBhE;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,EAAE,qBAAqB,CAAC,aAAa,EAAE,cAAc,CA8EvF,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,kBAmCtC,CAAC"}
@@ -25,6 +25,7 @@ const ScheduleInputSchema = z.object({
25
25
  larkAppId: z.string().optional(),
26
26
  repeat: z.object({ times: z.number().int().positive().nullable() }).optional(),
27
27
  deliver: z.enum(['origin', 'local', 'new-topic']).optional(),
28
+ silent: z.boolean().optional(),
28
29
  });
29
30
  export function parseScheduleInput(input) {
30
31
  const parsed = ScheduleInputSchema.parse(input);
@@ -82,6 +83,13 @@ export const botmuxScheduleExecutor = {
82
83
  message: 'v3 schedule host does not support deliver=local in P0',
83
84
  };
84
85
  }
86
+ if (input.silent && input.deliver === 'new-topic') {
87
+ return {
88
+ ok: false,
89
+ errorCode: 'HOST_SCHEDULE_SILENT_NEW_TOPIC_CONFLICT',
90
+ message: 'silent schedules cannot use deliver=new-topic (a new topic requires a first message)',
91
+ };
92
+ }
85
93
  if (input.parsed.kind !== 'once')
86
94
  return { ok: true };
87
95
  const runAtMs = input.parsed.runAt ? Date.parse(input.parsed.runAt) : Number.NaN;
@@ -112,6 +120,7 @@ export const botmuxScheduleExecutor = {
112
120
  larkAppId: input.larkAppId,
113
121
  repeat: input.repeat ? { times: input.repeat.times, completed: 0 } : undefined,
114
122
  deliver: input.deliver,
123
+ silent: input.silent,
115
124
  });
116
125
  return {
117
126
  output: { taskId: task.id },
@@ -1 +1 @@
1
- {"version":3,"file":"botmux-schedule.js","sourceRoot":"","sources":["../../../src/workflows/hostExecutors/botmux-schedule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EACL,sBAAsB,EACtB,UAAU,EACV,OAAO,EACP,wBAAwB,GACzB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAGvE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AA4BnE,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAC1C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,MAAM,EAAE,oBAAoB,CAAC,QAAQ,EAAE;IACvC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,0EAA0E;IAC1E,kCAAkC;IAClC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC7C,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC5C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC9E,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC7D,CAAC,CAAC;AAEH,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG;QACZ,GAAG,MAAM;QACT,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,OAAO;QACpC,0EAA0E;QAC1E,uEAAuE;QACvE,wEAAwE;QACxE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC;KACxD,CAAC;IACF,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAC5E,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;SAAM,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YACnF,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;SAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAyD;IAC1F,QAAQ,EAAE,iBAAiB;IAC3B,gBAAgB,EAAE,eAAe,CAAC,iBAAiB,CAAC;IAEpD,cAAc,CAAC,KAAK;QAClB,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,oBAAoB,CAAC,KAAK,EAAE,KAAK;QAC/B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAC9C,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,SAAS,EAAE,6BAA6B;gBACxC,OAAO,EAAE,iEAAiE;aAC3E,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YAC9B,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,SAAS,EAAE,0CAA0C;gBACrD,OAAO,EAAE,uDAAuD;aACjE,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QACtD,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QACjF,yEAAyE;QACzE,wEAAwE;QACxE,gDAAgD;QAChD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,KAAK,GAAG,OAAO,EAAE,CAAC;YAC3D,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,SAAS,EAAE,8BAA8B;gBACzC,OAAO,EAAE,gFAAgF;aAC1F,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc;QAChC,MAAM,IAAI,GAAG,UAAU,CAAC;YACtB,EAAE,EAAE,cAAc;YAClB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;YAC9E,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;QACH,OAAO;YACL,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE;YAC3B,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE;SAClC,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,GAAG;QACf,IAAI,GAAG,YAAY,wBAAwB,EAAE,CAAC;YAC5C,OAAO;gBACL,SAAS,EAAE,qBAAqB;gBAChC,UAAU,EAAE,OAAO;gBACnB,YAAY,EAAE,GAAG,CAAC,OAAO;aAC1B,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAuB;IAC1D,QAAQ,EAAE,iBAAiB;IAE3B,0EAA0E;IAC1E,cAAc,CAAC,KAAK;QAClB,OAAO,sBAAsB,CAAC,cAAc,CAAC,KAAsB,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,cAAc,EAAE,KAAK;QACxC,MAAM,IAAI,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,QAAQ,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE;aACvD,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC9C,MAAM,YAAY,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;YACpE,MAAM,YAAY,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC;YAC3E,IAAI,YAAY,KAAK,YAAY,EAAE,CAAC;gBAClC,MAAM,IAAI,wBAAwB,CAAC;oBACjC,MAAM,EAAE,cAAc;oBACtB,iBAAiB,EAAE,YAAY;oBAC/B,iBAAiB,EAAE,YAAY;iBAChC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,MAAM,YAAY,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;QACzC,OAAO;YACL,KAAK,EAAE,IAAI;YACX,YAAY;YACZ,QAAQ,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE;SAC9C,CAAC;IACJ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"botmux-schedule.js","sourceRoot":"","sources":["../../../src/workflows/hostExecutors/botmux-schedule.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "botmux",
3
- "version": "3.1.1",
3
+ "version": "3.2.0",
4
4
  "description": "Bridge between IM platforms and AI coding CLIs — one topic, one CLI session with live streaming",
5
5
  "type": "module",
6
6
  "main": "dist/index-daemon.js",
@@ -1 +0,0 @@
1
- import{a as G}from"./chunk-BD3PZGH2.js";import{a as U}from"./chunk-SYC6D5XU.js";import{a as W,d as j}from"./chunk-5THX4DI2.js";import{c as $}from"./chunk-7SZRL6FY.js";var r=$(W(),1);var n=$(j(),1);async function q(){let e=await fetch("/api/plugins/dashboard");if(!e.ok)throw new Error(`HTTP ${e.status}`);let a=await e.json();return Array.isArray(a?.plugins)?a.plugins:[]}function R(e){return{plugins:Array.isArray(e?.plugins)?e.plugins:[],globalPlugins:Array.isArray(e?.globalPlugins)?e.globalPlugins:[],bots:Array.isArray(e?.bots)?e.bots:[],gatewayAdapters:Array.isArray(e?.gatewayAdapters)?e.gatewayAdapters:[]}}async function H(){let e=await fetch("/api/plugins");if(!e.ok)throw new Error(`HTTP ${e.status}`);return R(await e.json())}async function z(e,a,i){let t=i==="global"?"global":`bots/${encodeURIComponent(i)}`,c=await fetch(`/api/plugins/${encodeURIComponent(e)}/${t}`,{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify({enabled:a})}),l=await c.json().catch(()=>({}));if(!c.ok)throw new Error(typeof l?.error=="string"?l.error:`HTTP ${c.status}`);return R(l)}async function Q(e,a){let i=await fetch(`/api/plugins/${encodeURIComponent(e)}/pin`,{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify({pinned:a})});if(!i.ok)throw new Error(`HTTP ${i.status}`);return R(await i.json())}async function M(e,a){let i=await fetch(`/api/plugins/${encodeURIComponent(e)}/services/${a}`,{method:"POST"});if(!i.ok)throw new Error(`HTTP ${i.status}`);return R(await i.json())}function N(e){return e.values?.length?(0,n.jsx)(n.Fragment,{children:e.values.map(a=>(0,n.jsx)("span",{className:"plugin-chip",children:a},a))}):(0,n.jsx)("span",{className:"plugin-muted",children:"-"})}function f(e){return(0,n.jsx)("code",{className:"plugin-inline-code",children:e.children})}function S(e){return e.rows.length===0?(0,n.jsx)("div",{className:"plugin-empty-state",children:"\u6682\u65E0\u5185\u5BB9"}):(0,n.jsx)("div",{className:"plugin-info-table",children:e.rows.map((a,i)=>(0,n.jsxs)("div",{className:"plugin-info-row",children:[(0,n.jsx)("span",{children:a.label}),(0,n.jsx)("div",{children:a.content})]},`${a.label}:${i}`))})}function C(e){return(0,n.jsxs)("div",{className:"plugin-tab-panel-head",children:[(0,n.jsx)("h3",{children:e.title}),(0,n.jsx)("p",{children:e.description})]})}function T(e){return(0,n.jsx)("div",{className:"plugin-empty-state",children:e.children})}function _(e){return e?e.status||e.action:"unknown"}function B(e){let a=_(e);return a==="online"||a==="started"||a==="already-running"?"\u8FD0\u884C\u4E2D":a==="stopped"||a==="not-running"?"\u5DF2\u505C\u6B62":a==="failed"?"\u5F02\u5E38":"\u672A\u77E5"}function Y(e){return e.mode==="manual"?"\u4E0D\u968F botmux start/stop/restart \u81EA\u52A8\u5F00\u5173\uFF1B\u4ECD\u53EF\u5728\u8FD9\u91CC\u624B\u52A8\u542F\u52A8\u3001\u505C\u6B62\u3001\u91CD\u542F":e.mode==="auto"?"botmux start/restart \u540E\u81EA\u52A8\u786E\u4FDD\u8FD0\u884C\uFF1B\u9ED8\u8BA4 restart \u4E0D\u5148\u505C\u6B62\uFF0C--with-plugin \u624D\u4F1A\u5148\u505C\u518D\u542F\u52A8":"\u672A\u77E5\u751F\u547D\u5468\u671F\u7B56\u7565"}function J(e){return e.mode==="manual"?"\u624B\u52A8\u5F00\u5173":e.mode==="auto"?"\u542F\u52A8\u540E\u786E\u4FDD\u8FD0\u884C":"\u672A\u77E5\u6A21\u5F0F"}function X(e){let a=_(e);return a==="online"||a==="started"||a==="already-running"?"plugin-status-ok":a==="stopped"||a==="not-running"?"plugin-status-idle":a==="failed"?"plugin-status-bad":"plugin-status-muted"}function I(e){return e.url?(0,n.jsx)("a",{className:`plugin-link${e.health?"":" plugin-service-url"}`,href:e.url,target:"_blank",rel:"noreferrer",children:e.health?"\u5065\u5EB7\u68C0\u67E5":e.url}):(0,n.jsx)("span",{className:"plugin-muted",children:e.health?"\u65E0\u5065\u5EB7\u68C0\u67E5":"\u6682\u65E0\u8BBF\u95EE\u5730\u5740"})}function Z(e){let{plugin:a}=e;if(!a.service)return(0,n.jsx)(T,{children:"\u8FD9\u4E2A\u63D2\u4EF6\u6CA1\u6709\u9700\u8981\u5355\u72EC\u542F\u52A8\u7684\u540E\u53F0\u8FDB\u7A0B\u3002"});let i=a.serviceReport,t=[{label:"\u72B6\u6001",content:(0,n.jsx)("span",{className:`plugin-status ${X(i)}`,children:B(i)})},{label:"\u6A21\u5F0F",content:(0,n.jsx)(N,{values:[J(a.service)]})},{label:"\u751F\u547D\u5468\u671F",content:(0,n.jsx)("span",{children:Y(a.service)})},{label:"\u7AEF\u53E3",content:i?.port?(0,n.jsx)(f,{children:i.port}):(0,n.jsx)("span",{className:"plugin-muted",children:"\u672A\u4E0A\u62A5"})},{label:"PID",content:i?.pid?(0,n.jsx)(f,{children:i.pid}):(0,n.jsx)("span",{className:"plugin-muted",children:"\u672A\u4E0A\u62A5"})},{label:"\u8BBF\u95EE\u5730\u5740",content:(0,n.jsx)(I,{url:i?.openUrl})},{label:"\u5065\u5EB7\u68C0\u67E5",content:(0,n.jsx)(I,{url:i?.healthUrl,health:!0})}];return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(S,{rows:t}),i?.warning?(0,n.jsx)("div",{className:"plugin-warning",children:i.warning}):null]})}function nn(e){let{plugin:a}=e;if(!a.service)return null;let i=a.serviceReport;return(0,n.jsxs)("section",{className:"plugin-action-group",children:[(0,n.jsxs)("div",{className:"plugin-action-head",children:[(0,n.jsx)("span",{children:"Service"}),(0,n.jsx)("strong",{children:J(a.service)}),(0,n.jsx)("span",{className:`plugin-status ${X(i)}`,children:B(i)})]}),(0,n.jsxs)("div",{className:"plugin-action-meta",children:[i?.port?(0,n.jsxs)("span",{children:["\u7AEF\u53E3 ",i.port]}):null,i?.pid?(0,n.jsxs)("span",{children:["PID ",i.pid]}):null,(0,n.jsx)(I,{url:i?.openUrl})]}),(0,n.jsx)("div",{className:"plugin-service-actions",children:["start","stop","restart"].map(t=>(0,n.jsx)("button",{type:"button",className:"btn-link","data-plugin-service":a.id,"data-action":t,disabled:e.busy,onClick:()=>e.onAction(t),children:t==="start"?"\u542F\u52A8":t==="stop"?"\u505C\u6B62":"\u91CD\u542F"},t))})]})}function en(e){let a=e.plugin.dashboard??[];return a.length===0?null:(0,n.jsxs)("section",{className:"plugin-action-group",children:[(0,n.jsxs)("div",{className:"plugin-action-head",children:[(0,n.jsx)("span",{children:"Dashboard"}),(0,n.jsxs)("strong",{children:[a.length," \u4E2A\u9875\u9762"]})]}),(0,n.jsx)("div",{className:"plugin-action-links",children:a.map(i=>(0,n.jsxs)("a",{className:"btn-link primary",href:i.route,children:["\u6253\u5F00 ",i.id]},i.id))})]})}function an(e){let a=!!e.plugin.service,i=(e.plugin.dashboard?.length??0)>0;return!a&&!i?null:(0,n.jsxs)("div",{className:"plugin-action-area","aria-label":`${e.plugin.id} \u63D2\u4EF6\u64CD\u4F5C`,children:[(0,n.jsxs)("div",{className:"plugin-action-title",children:[(0,n.jsx)("span",{children:"\u64CD\u4F5C"}),(0,n.jsx)("small",{children:"\u56FA\u5B9A\u64CD\u4F5C\u533A\uFF0C\u4E0B\u9762\u7684 tab \u53EA\u5C55\u793A\u4FE1\u606F"})]}),(0,n.jsxs)("div",{className:"plugin-action-grid",children:[(0,n.jsx)(nn,{plugin:e.plugin,busy:e.busy,onAction:e.onServiceAction}),(0,n.jsx)(en,{plugin:e.plugin})]})]})}function E(e){return(0,n.jsx)("section",{className:`plugin-tab-panel${e.active?" is-active":""}`,role:"tabpanel","data-plugin-panel":e.id,children:e.children})}function tn(e){let i=(e.plugin.contributions?.skills??[]).map(t=>({label:t.name||t.path||"skill",content:t.path?(0,n.jsx)(f,{children:t.path}):(0,n.jsx)("span",{className:"plugin-muted",children:"\u672A\u58F0\u660E\u8DEF\u5F84"})}));return(0,n.jsxs)(E,{id:"skills",active:e.active,children:[(0,n.jsx)(C,{title:"Skills",description:"\u6BCF\u6B21\u771F\u6B63\u542F\u52A8\u6216\u91CD\u542F CLI \u8FDB\u7A0B\u65F6\uFF0C\u90FD\u4F1A\u6309\u5F53\u524D Bot \u7684\u6709\u6548\u63D2\u4EF6\u96C6\u5237\u65B0\u8FD9\u4E9B\u6280\u80FD\uFF1B\u8FD0\u884C\u4E2D\u7684 CLI \u4E0D\u70ED\u66F4\u65B0\u3002"}),i.length>0?(0,n.jsx)(S,{rows:i}):(0,n.jsx)(T,{children:"\u8FD9\u4E2A\u63D2\u4EF6\u6CA1\u6709\u63D0\u4F9B Skills\u3002"})]})}function ln(e){let a=e.plugin,i=a.contributions?.mcp,t=i?[{label:i.name||"mcp",content:(0,n.jsxs)("div",{className:"plugin-info-stack",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("span",{children:i.transport==="streamable-http"?"\u670D\u52A1\u5730\u5740":"\u542F\u52A8\u547D\u4EE4"}),(0,n.jsx)(f,{children:i.transport==="streamable-http"?i.url||"-":i.command?.join(" ")||"-"})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("span",{children:"\u4F20\u8F93"}),(0,n.jsx)(N,{values:[i.transport||"stdio"]})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("span",{children:"\u73AF\u5883\u53D8\u91CF"}),(0,n.jsx)(N,{values:Object.keys(i.env??{})})]}),Object.keys(i.headers??{}).length>0?(0,n.jsxs)("div",{children:[(0,n.jsx)("span",{children:"\u8BF7\u6C42\u5934"}),(0,n.jsx)(N,{values:Object.keys(i.headers??{})})]}):null]})}]:[],c=(a.gatewayAdapters??[]).map(s=>({label:s.cliId,content:(0,n.jsxs)("div",{className:"plugin-info-stack",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("span",{children:"Gateway"}),(0,n.jsx)(N,{values:[s.state==="configured"||s.state==="unchanged"||s.state==="installed"?"\u5DF2\u63A5\u5165":s.state==="adapter-required"?"\u5F85\u9002\u914D":"\u672A\u5199\u5165"]})]}),s.configPath?(0,n.jsxs)("div",{children:[(0,n.jsx)("span",{children:"\u914D\u7F6E\u76EE\u6807"}),(0,n.jsx)(f,{children:s.configPath})]}):null,s.warning?(0,n.jsx)("div",{className:"plugin-warning",children:s.warning}):null]})})),l=(a.mcpDiagnostics??[]).map(s=>({label:s.serverName,content:(0,n.jsxs)("div",{className:"plugin-info-stack",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("span",{children:"\u6700\u8FD1\u8FDE\u63A5"}),(0,n.jsx)(N,{values:[s.status==="connected"?"\u6B63\u5E38":"\u5931\u8D25",s.transport]})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("span",{children:"\u80FD\u529B\u6570\u91CF"}),(0,n.jsx)(N,{values:[`Tools ${s.tools??0}`,`Prompts ${s.prompts??0}`,`Resources ${s.resources??0}`]})]}),s.sessionId?(0,n.jsxs)("div",{children:[(0,n.jsx)("span",{children:"\u4F1A\u8BDD"}),(0,n.jsx)(f,{children:s.sessionId})]}):null,s.error?(0,n.jsx)("div",{className:"plugin-warning",children:s.error}):null]})}));return(0,n.jsxs)(E,{id:"mcp",active:e.active,children:[(0,n.jsx)(C,{title:"MCP",description:"CLI \u53EA\u8FDE\u63A5\u4E00\u4E2A Botmux Gateway\uFF1B\u6BCF\u4E00\u4EE3 CLI \u8FDB\u7A0B\u6309\u542F\u52A8\u65F6\u6E05\u5355\u8FDE\u63A5\u8FD9\u4E9B\u4E0B\u6E38 MCP\u3002"}),c.length>0?(0,n.jsx)(S,{rows:c}):null,l.length>0?(0,n.jsx)(S,{rows:l}):null,t.length>0?(0,n.jsx)(S,{rows:t}):(0,n.jsx)(T,{children:"\u8FD9\u4E2A\u63D2\u4EF6\u6CA1\u6709\u63D0\u4F9B MCP server\u3002"})]})}function sn(e){let a=e.plugin.contributions?.cli,i=[...a?.entry?[{label:"\u5165\u53E3\u6587\u4EF6",content:(0,n.jsx)(f,{children:a.entry})}]:[],...(a?.commands??[]).map(t=>({label:t.name,content:t.description?(0,n.jsx)("span",{children:t.description}):(0,n.jsx)("span",{className:"plugin-muted",children:"\u65E0\u63CF\u8FF0"})}))];return(0,n.jsxs)(E,{id:"cli",active:e.active,children:[(0,n.jsx)(C,{title:"CLI \u547D\u4EE4",description:"\u542F\u7528\u63D2\u4EF6\u540E\uFF0C\u8FD9\u4E9B\u547D\u4EE4\u4F1A\u8FDB\u5165 botmux \u7684\u547D\u4EE4\u8DEF\u7531\u3002"}),i.length>0?(0,n.jsx)(S,{rows:i}):(0,n.jsx)(T,{children:"\u8FD9\u4E2A\u63D2\u4EF6\u6CA1\u6709\u63D0\u4F9B CLI \u547D\u4EE4\u3002"})]})}function on(e){let a=(e.plugin.dashboard??[]).map(i=>({label:i.id,content:(0,n.jsxs)("div",{className:"plugin-info-stack",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("span",{children:"\u8DEF\u7531"}),(0,n.jsx)(f,{children:i.route})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("span",{children:"\u5165\u53E3"}),(0,n.jsx)(f,{children:i.entry})]})]})}));return(0,n.jsxs)(E,{id:"dashboard",active:e.active,children:[(0,n.jsx)(C,{title:"Dashboard",description:"\u63D2\u4EF6\u81EA\u5DF1\u7684\u53EF\u89C6\u5316\u9875\u9762\u4F1A\u5728\u8FD9\u91CC\u66B4\u9732\u5165\u53E3\u3002"}),a.length>0?(0,n.jsx)(S,{rows:a}):(0,n.jsx)(T,{children:"\u8FD9\u4E2A\u63D2\u4EF6\u6CA1\u6709\u63D0\u4F9B Dashboard \u9875\u9762\u3002"})]})}function rn(e){return(0,n.jsxs)(E,{id:"service",active:e.active,children:[(0,n.jsx)(C,{title:"Service",description:"\u63D2\u4EF6\u540E\u53F0\u670D\u52A1\u7684\u58F0\u660E\u3001\u5F53\u524D\u72B6\u6001\u548C\u8BBF\u95EE\u5730\u5740\u3002\u542F\u52A8\u3001\u505C\u6B62\u3001\u91CD\u542F\u5728\u4E0A\u65B9\u64CD\u4F5C\u533A\u5904\u7406\u3002"}),(0,n.jsx)(Z,{plugin:e.plugin})]})}function gn(e){let a=e.plugin.contributions?.cli?.commands??[],i=(0,r.useMemo)(()=>[{id:"skills",label:"Skills",count:e.plugin.skillsCount??0,hint:"\u4F1A\u8BDD\u52A0\u8F7D"},{id:"mcp",label:"MCP",count:e.plugin.mcpCount??0,hint:"Gateway \u805A\u5408"},{id:"cli",label:"CLI \u547D\u4EE4",count:a.length,hint:"\u547D\u4EE4\u8DEF\u7531"},{id:"dashboard",label:"Dashboard",count:e.plugin.dashboard?.length??0,hint:"\u9875\u9762\u5165\u53E3"},{id:"service",label:"Service",count:e.plugin.service?1:0,hint:e.plugin.service?J(e.plugin.service):"\u65E0\u540E\u53F0\u8FDB\u7A0B"}],[a.length,e.plugin.dashboard?.length,e.plugin.mcpCount,e.plugin.service,e.plugin.skillsCount]),[t,c]=(0,r.useState)(()=>i.find(l=>l.count>0)?.id??"skills");return(0,n.jsxs)("div",{className:"plugin-tabs",children:[(0,n.jsx)("div",{className:"plugin-tab-list",role:"tablist","aria-label":`${e.plugin.id} \u63D2\u4EF6\u80FD\u529B`,children:i.map(l=>(0,n.jsxs)("button",{type:"button",className:`plugin-tab-button${t===l.id?" is-active":""}`,role:"tab","aria-selected":t===l.id,"data-plugin-tab":l.id,onClick:()=>c(l.id),children:[(0,n.jsx)("strong",{children:l.count}),(0,n.jsx)("span",{children:l.label}),(0,n.jsx)("small",{children:l.hint})]},l.id))}),(0,n.jsxs)("div",{className:"plugin-tab-panels",children:[(0,n.jsx)(tn,{plugin:e.plugin,active:t==="skills"}),(0,n.jsx)(ln,{plugin:e.plugin,active:t==="mcp"}),(0,n.jsx)(sn,{plugin:e.plugin,active:t==="cli"}),(0,n.jsx)(on,{plugin:e.plugin,active:t==="dashboard"}),(0,n.jsx)(rn,{plugin:e.plugin,active:t==="service"})]})]})}function x(e,a){return`${e}:${a}`}function w(e,a,i){let t=i.get(x(e.id,a));return t!==void 0?t:a==="global"?e.enabledGlobal===!0:e.enabledByBot?.[a]===!0}function cn(e){return(0,n.jsxs)("label",{className:"toggle-row plugin-enable-row",children:[(0,n.jsxs)("span",{className:"plugin-enable-copy",children:[(0,n.jsx)("strong",{children:e.label}),(0,n.jsx)("small",{children:e.hint})]}),(0,n.jsx)("input",{type:"checkbox","data-plugin-toggle":e.scope,"data-plugin-id":e.plugin.id,checked:e.checked,disabled:e.busy,onChange:a=>e.onToggle(e.scope,a.currentTarget.checked)}),(0,n.jsx)("span",{className:"switch","aria-hidden":"true"})]})}function un(e){let a=w(e.plugin,"global",e.pendingToggles);return(0,n.jsxs)("label",{className:"toggle-row plugin-global-setting",children:[(0,n.jsxs)("span",{className:"plugin-global-setting-copy",children:[(0,n.jsx)("strong",{children:"\u5168\u5C40\u542F\u7528"}),(0,n.jsx)("small",{children:a?`\u5DF2\u5BF9\u5168\u90E8 ${e.bots.length} \u4E2A Bot \u542F\u7528`:"\u5173\u95ED\u65F6\u53EF\u5C55\u5F00\u5361\u7247\uFF0C\u6309 Bot \u5355\u72EC\u542F\u7528"})]}),(0,n.jsx)("input",{type:"checkbox","data-plugin-toggle":"global","data-plugin-id":e.plugin.id,checked:a,disabled:e.busy,onChange:i=>e.onToggle("global",i.currentTarget.checked)}),(0,n.jsx)("span",{className:"switch","aria-hidden":"true"})]})}function dn(e){let{plugin:a,bots:i,pendingToggles:t}=e,c=i.filter(l=>w(a,l.id,t)).length;return(0,n.jsxs)("section",{className:"plugin-enable-panel","aria-label":`${a.displayName||a.id} \u6309 Bot \u542F\u7528`,children:[(0,n.jsxs)("div",{className:"plugin-enable-panel-head",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("strong",{children:"\u6309 Bot \u542F\u7528"}),(0,n.jsx)("small",{children:"\u5168\u5C40\u5173\u95ED\u65F6\uFF0C\u53EF\u4E3A\u9700\u8981\u6B64\u63D2\u4EF6\u7684 Bot \u5355\u72EC\u5F00\u542F\uFF1B\u65B0\u542F\u52A8\u7684 CLI \u4F1A\u8BDD\u751F\u6548\u3002"})]}),(0,n.jsxs)("span",{children:[c,"/",i.length," \u4E2A Bot \u5DF2\u542F\u7528"]})]}),(0,n.jsxs)("div",{className:"plugin-enable-list",children:[i.map(l=>{let s=w(a,l.id,t),p=s?"\u5DF2\u542F\u7528":"\u672A\u542F\u7528";return(0,n.jsx)(cn,{plugin:a,scope:l.id,label:l.name,hint:`\u5F53\u524D${p}`,checked:s,busy:e.busy,onToggle:e.onToggle},l.id)}),i.length===0?(0,n.jsx)("div",{className:"plugin-enable-empty",children:"\u6682\u65E0\u5DF2\u914D\u7F6E Bot"}):null]})]})}function pn(e){let a=e.plugin.contributions?.cli?.commands??[],i=[{label:"Skills",count:e.plugin.skillsCount??0},{label:"MCP",count:e.plugin.mcpCount??0},{label:"\u547D\u4EE4",count:a.length},{label:"Dashboard",count:e.plugin.dashboard?.length??0}].filter(t=>t.count>0);return(0,n.jsxs)("div",{className:"plugin-card-summary",children:[(0,n.jsxs)("div",{className:"plugin-capability-summary","aria-label":"\u63D2\u4EF6\u80FD\u529B\u6458\u8981",children:[i.map(t=>(0,n.jsxs)("span",{className:"plugin-capability-chip",children:[(0,n.jsx)("strong",{children:t.count}),t.label]},t.label)),e.plugin.service?(0,n.jsxs)("span",{className:`plugin-capability-chip ${X(e.plugin.serviceReport)}`,children:["Service ",B(e.plugin.serviceReport)]}):null,i.length===0&&!e.plugin.service?(0,n.jsx)("span",{className:"plugin-muted",children:"\u672A\u58F0\u660E\u6269\u5C55\u80FD\u529B"}):null]}),(0,n.jsx)("span",{className:"plugin-scope-summary",children:e.globalEnabled?`\u5168\u90E8 ${e.botCount} \u4E2A Bot`:`${e.enabledBotCount}/${e.botCount} \u4E2A Bot \u5355\u72EC\u542F\u7528`})]})}function bn(e){let a=(0,r.useRef)(null);return(0,r.useEffect)(()=>{let i=a.current;if(i)if(e.feedback&&!i.open)try{i.showModal()}catch{i.setAttribute("open","")}else!e.feedback&&i.open&&i.close()},[e.feedback]),(0,n.jsx)("dialog",{className:"plugin-feedback-dialog","data-plugin-feedback-dialog":!0,ref:a,onClose:e.onClose,onClick:i=>{i.target===i.currentTarget&&e.onClose()},children:(0,n.jsxs)("article",{children:[(0,n.jsxs)("header",{children:[(0,n.jsx)("span",{className:"plugin-feedback-mark","aria-hidden":"true",children:"!"}),(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{children:"\u63D2\u4EF6\u8BBE\u7F6E\u672A\u4FDD\u5B58"}),(0,n.jsx)("h2",{"data-plugin-feedback-title":!0,children:e.feedback?.title??"\u64CD\u4F5C\u5931\u8D25"})]})]}),(0,n.jsx)("p",{className:"plugin-feedback-message","data-plugin-feedback-message":!0,children:e.feedback?.message}),(0,n.jsx)("footer",{children:(0,n.jsx)("button",{type:"button",className:"btn-link","data-plugin-feedback-close":!0,onClick:e.onClose,children:"\u77E5\u9053\u4E86"})})]})})}function mn(e){let{plugin:a}=e,[i,t]=(0,r.useState)(!1),c=a.displayName||a.id,l=a.dependencies??[],s=w(a,"global",e.pendingToggles),p=e.bots.filter(d=>w(a,d.id,e.pendingToggles)).length,k=s||p>0,b=e.pendingToggles.has(x(a.id,"global")),y=(a.dashboard?.length??0)>0,m=e.pendingPin??a.pinnedToSidebar===!0,P=`plugin-details-${a.id}`;return(0,n.jsxs)("article",{className:`bd-card plugin-card${i?" is-expanded":" is-collapsed"}`,"data-plugin-card":a.id,children:[(0,n.jsxs)("header",{className:"plugin-card-head",children:[(0,n.jsxs)("div",{className:"plugin-title-block",children:[(0,n.jsxs)("div",{className:"plugin-title-row",children:[(0,n.jsx)("h2",{children:c}),(0,n.jsx)("span",{className:`plugin-status ${k?"plugin-status-ok":"plugin-status-idle"}`,children:s?"\u5168\u5C40\u5DF2\u542F\u7528":p>0?`${p} \u4E2A Bot \u5DF2\u542F\u7528`:"\u672A\u542F\u7528"})]}),(0,n.jsxs)("p",{children:[(0,n.jsx)("code",{children:a.id}),(0,n.jsxs)("span",{children:[a.packageName,"@",a.version]}),l.length>0?(0,n.jsxs)("span",{children:["\u4F9D\u8D56 ",l.join(", ")]}):null]})]}),(0,n.jsx)("button",{type:"button",className:"btn-link plugin-expand-button","data-plugin-expand":a.id,"aria-expanded":i,"aria-controls":P,onClick:()=>t(d=>!d),children:i?"\u6536\u8D77\u8BE6\u60C5":"\u5C55\u5F00\u8BE6\u60C5"})]}),(0,n.jsx)(un,{plugin:a,bots:e.bots,pendingToggles:e.pendingToggles,busy:e.busy,onToggle:e.onToggle}),(0,n.jsx)(pn,{plugin:a,globalEnabled:s,enabledBotCount:p,botCount:e.bots.length}),i?(0,n.jsxs)("div",{className:"plugin-card-expanded",id:P,children:[!s&&!b?(0,n.jsx)(dn,{plugin:a,bots:e.bots,pendingToggles:e.pendingToggles,busy:e.busy,onToggle:e.onToggle}):null,b?(0,n.jsx)("div",{className:"plugin-settings-pending",children:"\u6B63\u5728\u66F4\u65B0\u5168\u5C40\u8BBE\u7F6E..."}):null,y?(0,n.jsx)("div",{className:"plugin-card-controls",children:(0,n.jsxs)("label",{className:"toggle-row plugin-pin-toggle",children:[(0,n.jsx)("input",{type:"checkbox","data-plugin-pin":a.id,checked:m,disabled:e.busy,onChange:d=>e.onPin(d.currentTarget.checked)}),(0,n.jsx)("span",{className:"switch"}),(0,n.jsxs)("span",{className:"toggle-tx",children:[(0,n.jsx)("strong",{children:"Pin \u5230\u4FA7\u680F"}),(0,n.jsx)("small",{children:m?"\u5DF2\u56FA\u5B9A\uFF0C\u53EF\u4ECE\u4E3B\u83DC\u5355\u5FEB\u901F\u6253\u5F00":"\u56FA\u5B9A\u540E\u53EF\u4ECE\u4E3B\u83DC\u5355\u5FEB\u901F\u6253\u5F00"})]})]})}):null,(0,n.jsx)(an,{plugin:a,busy:e.busy,onServiceAction:e.onServiceAction}),(0,n.jsx)("div",{className:"plugin-card-body",children:(0,n.jsx)(gn,{plugin:a})})]}):null]})}function A(e,a,i){let t=new Map(e);return i===void 0?t.delete(a):t.set(a,i),t}function vn(e,a,i){let t=new Set(e);return i?t.add(a):t.delete(a),t}function hn(){let[e,a]=(0,r.useState)(null),[i,t]=(0,r.useState)(null),[c,l]=(0,r.useState)(!1),[s,p]=(0,r.useState)(()=>new Set),[k,b]=(0,r.useState)(()=>new Map),[y,m]=(0,r.useState)(()=>new Map),[P,d]=(0,r.useState)(null),D=(0,r.useCallback)(async()=>{l(!0),t(null);try{a(await H())}catch(o){t(o instanceof Error?o.message:String(o))}finally{l(!1)}},[]);(0,r.useEffect)(()=>{D()},[D]);let v=(0,r.useCallback)((o,u)=>{p(g=>vn(g,o,u))},[]),O=(0,r.useCallback)(async(o,u,g)=>{let L=x(o,u);b(h=>A(h,L,g)),v(o,!0);try{let h=await z(o,g,u);a(h)}catch(h){d({title:g?"\u65E0\u6CD5\u542F\u7528\u63D2\u4EF6":"\u65E0\u6CD5\u7981\u7528\u63D2\u4EF6",message:h instanceof Error?h.message:String(h)})}finally{b(h=>A(h,L,void 0)),v(o,!1)}},[v]),F=(0,r.useCallback)(async(o,u)=>{m(g=>A(g,o,u)),v(o,!0);try{let g=await Q(o,u);a(g),window.dispatchEvent(new Event(G))}catch(g){d({title:"\u65E0\u6CD5\u66F4\u65B0\u4FA7\u680F\u56FA\u5B9A",message:g instanceof Error?g.message:String(g)})}finally{m(g=>A(g,o,void 0)),v(o,!1)}},[v]),K=(0,r.useCallback)(async(o,u)=>{v(o,!0);try{let g=await M(o,u);a(g)}catch(g){d({title:"Service \u64CD\u4F5C\u5931\u8D25",message:g instanceof Error?g.message:String(g)})}finally{v(o,!1)}},[v]);if(!e&&!i)return(0,n.jsx)("section",{className:"page",children:(0,n.jsx)("div",{className:"empty",children:"Loading plugins..."})});if(!e)return(0,n.jsx)("section",{className:"page",children:(0,n.jsxs)("div",{className:"bd-card empty",children:["\u63D2\u4EF6\u5217\u8868\u52A0\u8F7D\u5931\u8D25\uFF1A",i]})});let V=e.plugins.filter(o=>w(o,"global",k)).length;return(0,n.jsxs)("section",{className:"page plugin-management-page",children:[(0,n.jsxs)("div",{className:"page-heading",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("h1",{children:"\u63D2\u4EF6"}),(0,n.jsx)("p",{children:"\u5361\u7247\u9ED8\u8BA4\u5C55\u793A\u542F\u7528\u8303\u56F4\u4E0E\u80FD\u529B\u6458\u8981\uFF1B\u5C55\u5F00\u540E\u53EF\u7BA1\u7406\u5355\u4E2A Bot\u3001Service \u548C\u8BE6\u7EC6\u80FD\u529B\u3002\u5168\u5C40\u542F\u7528\u5BF9\u6240\u6709 Bot \u751F\u6548\uFF0C\u6539\u52A8\u5728\u65B0\u542F\u52A8\u7684 CLI \u4F1A\u8BDD\u4E2D\u751F\u6548\u3002"})]}),(0,n.jsx)("div",{className:"plugin-heading-actions",children:(0,n.jsx)("button",{type:"button",className:"btn-link","data-plugin-refresh":!0,disabled:c,onClick:()=>{D()},children:c?"\u5237\u65B0\u4E2D...":"\u5237\u65B0"})})]}),(0,n.jsxs)("div",{className:"plugin-summary-grid",children:[(0,n.jsxs)("div",{className:"bd-card plugin-summary-card",children:[(0,n.jsx)("span",{children:"\u5DF2\u5B89\u88C5"}),(0,n.jsx)("strong",{children:e.plugins.length})]}),(0,n.jsxs)("div",{className:"bd-card plugin-summary-card",children:[(0,n.jsx)("span",{children:"\u5168\u5C40\u542F\u7528"}),(0,n.jsx)("strong",{"data-plugin-summary-enabled":!0,children:V})]})]}),e.plugins.length===0?(0,n.jsxs)("div",{className:"bd-card empty",children:["\u6682\u65E0\u5DF2\u5B89\u88C5\u63D2\u4EF6\u3002\u7528 ",(0,n.jsx)("code",{children:"botmux plugin install"})," \u5B89\u88C5\u540E\u4F1A\u51FA\u73B0\u5728\u8FD9\u91CC\u3002"]}):(0,n.jsx)("div",{className:"plugin-card-list",children:e.plugins.map(o=>(0,n.jsx)(mn,{plugin:o,bots:e.bots,pendingToggles:k,pendingPin:y.get(o.id),busy:s.has(o.id),onToggle:(u,g)=>{O(o.id,u,g)},onPin:u=>{F(o.id,u)},onServiceAction:u=>{K(o.id,u)}},o.id))}),(0,n.jsx)(bn,{feedback:P,onClose:()=>d(null)})]})}function fn(e){return{async getServiceStatus(){return(await H()).plugins.find(i=>i.id===e)?.serviceReport},async startService(){return M(e,"start")},async stopService(){return M(e,"stop")},async restartService(){return M(e,"restart")}}}function yn(e){let[a,i]=(0,r.useState)(null),[t,c]=(0,r.useState)(null),[l,s]=(0,r.useState)(null);(0,r.useEffect)(()=>{let b=!1;return i(null),c(null),s(null),(async()=>{try{let m=(await q()).find(d=>e.hash===d.route||e.hash.startsWith(`${d.route}/`)||e.hash.startsWith(`${d.route}?`));if(!m)throw new Error(`Plugin page not found: ${e.hash}`);let P=await import(m.url);if(typeof P.default!="function")throw new Error("plugin_dashboard_default_export_not_function");if(b)return;i(m),c(()=>P.default)}catch(y){b||s(y instanceof Error?y.message:String(y))}})(),()=>{b=!0}},[e.hash]);let p=(0,r.useMemo)(()=>a?fn(a.pluginId):null,[a]);if(l)return(0,n.jsx)("section",{className:"page",children:(0,n.jsxs)("div",{className:"bd-card empty",children:["\u63D2\u4EF6 Dashboard \u52A0\u8F7D\u5931\u8D25\uFF1A",l]})});if(!a||!t||!p)return(0,n.jsx)("section",{className:"page",children:(0,n.jsx)("div",{className:"empty",children:"Loading plugin..."})});let k=a.displayName||a.pluginId;return(0,n.jsx)("section",{className:"page plugin-page",children:(0,n.jsxs)("div",{className:"plugin-dashboard-shell",children:[(0,n.jsx)("div",{className:"plugin-dashboard-toolbar",children:(0,n.jsx)("a",{className:"btn-link plugin-dashboard-back",href:"#/plugins",children:"\u8FD4\u56DE\u63D2\u4EF6\u5217\u8868"})}),(0,n.jsx)("div",{className:"page-heading plugin-dashboard-heading",children:(0,n.jsxs)("div",{children:[(0,n.jsx)("p",{className:"plugin-dashboard-kicker",children:"Plugin Dashboard"}),(0,n.jsx)("h1",{children:k}),(0,n.jsxs)("p",{children:[(0,n.jsx)("code",{children:a.pluginId}),(0,n.jsx)("span",{children:"/"}),(0,n.jsx)("code",{children:a.id})]})]})}),(0,n.jsx)("div",{className:"plugin-dashboard-content","data-plugin-dashboard-root":!0,children:(0,n.jsx)(t,{pluginId:a.pluginId,api:p})})]})})}function Pn(){let e=location.hash||"#/plugins";return e==="#/plugins"||e.startsWith("#/plugins?")?(0,n.jsx)(hn,{}):(0,n.jsx)(yn,{hash:e})}function kn(e){return U(e,(0,n.jsx)(Pn,{}))}export{kn as renderPluginPage};
@@ -1 +0,0 @@
1
- import{a as C,b as w}from"./chunk-FMJNOATE.js";import{l as A,m as T,n as R,o as O,p as $}from"./chunk-I35DXGM4.js";import"./chunk-KEAOTUL3.js";import{a as N}from"./chunk-SYC6D5XU.js";import{a as D,d as S}from"./chunk-5THX4DI2.js";import{c as k}from"./chunk-7SZRL6FY.js";var o=k(D(),1);var s=k(S(),1),I=1e3;function L(e,n){if(!e)return"\u2014";try{return new Date(e).toLocaleString(void 0,n?{timeZone:n,timeZoneName:"short"}:void 0)}catch{return e}}function M(e,n){let d=n.q.toLowerCase();return e.filter(t=>!n.kind||t.parsed?.kind===n.kind).filter(t=>!n.enabledOnly||t.enabled).filter(t=>!d||JSON.stringify(t).toLowerCase().includes(d)).sort((t,i)=>{if(t.enabled!==i.enabled)return t.enabled?-1:1;let h=t.nextRunAt?Date.parse(t.nextRunAt):1/0,u=i.nextRunAt?Date.parse(i.nextRunAt):1/0;return h-u})}function q(e,n){return e.deliver==="new-topic"?n("schedules.deliveryNewTopic"):e.deliver==="local"?n("schedules.deliveryLocal"):n("schedules.deliveryOrigin")}function E(e){return e.repeat?`${e.repeat.completed}/${e.repeat.times??"\u221E"}`:"\u2014"}function K(e){return new Promise(n=>window.setTimeout(n,e))}function Z(e){let{schedule:n,scheduleTimeZone:d,tr:t}=e,i=String(n.parsed?.kind??"unknown"),h=n.enabled?"pause":"resume",u=`${n.id}:${h}`,g=`${n.id}:run`,f=`${n.id}:delivery`;return(0,s.jsxs)(T,{kind:"schedule",className:"schedule-list-row","data-id":n.id,children:[(0,s.jsxs)(R,{children:[(0,s.jsxs)("div",{className:"schedule-row-head",children:[(0,s.jsx)("b",{children:n.name??n.id}),(0,s.jsx)("span",{className:`schedule-state ${n.enabled?"enabled":"paused"}`,children:n.enabled?t("schedules.enabled"):t("schedules.paused")})]}),(0,s.jsxs)("div",{className:"schedule-row-meta",children:[(0,s.jsx)("span",{children:n.botName??n.larkAppId??"-"}),(0,s.jsx)("span",{children:"\xB7"}),(0,s.jsx)("code",{children:n.parsed?.display??"?"})]}),(0,s.jsxs)("div",{className:"schedule-chip-strip",children:[(0,s.jsx)("span",{children:i}),(0,s.jsxs)("span",{children:[t("schedules.delivery"),": ",q(n,t)]}),(0,s.jsxs)("span",{children:[t("schedules.next"),": ",L(n.nextRunAt,d)]}),(0,s.jsxs)("span",{children:[t("schedules.last"),": ",L(n.lastRunAt,d),n.lastStatus==="error"?" \xB7 error":""]}),(0,s.jsxs)("span",{children:[t("schedules.repeat"),": ",E(n)]})]})]}),(0,s.jsx)(O,{children:(0,s.jsxs)("div",{className:"schedule-actions",children:[(0,s.jsx)(F,{op:"run",label:t("schedules.runNow"),pending:e.pending===g,feedback:e.feedback[g]??null,onClick:()=>e.onAction(n.id,"run")}),(0,s.jsx)(U,{checked:!!n.enabled,pending:e.pending===u,feedback:e.feedback[u]??null,tr:t,onClick:()=>e.onAction(n.id,h)}),n.deliver==="local"?null:(0,s.jsx)(F,{op:"delivery",label:n.deliver==="new-topic"?t("schedules.useOrigin"):t("schedules.useNewTopic"),pending:e.pending===f,feedback:e.feedback[f]??null,onClick:()=>e.onAction(n.id,"delivery")})]})})]})}function _(){let e=w(),{scheduleRows:n,scheduleTimeZone:d}=C(c=>({scheduleRows:[...c.schedules.values()],scheduleTimeZone:c.scheduleTimeZone})),[t,i]=(0,o.useState)({q:"",kind:"",enabledOnly:!1}),[h,u]=(0,o.useState)(null),[g,f]=(0,o.useState)({}),m=(0,o.useRef)(new Map),v=(0,o.useMemo)(()=>M(n,t),[n,t]);(0,o.useEffect)(()=>()=>{m.current.forEach(c=>window.clearTimeout(c)),m.current.clear()},[]);function x(c,l){f(b=>({...b,[c]:l}));let r=m.current.get(c);r&&window.clearTimeout(r);let p=window.setTimeout(()=>{f(b=>{let a={...b};return delete a[c],a}),m.current.delete(c)},l==="success"?1600:2200);m.current.set(c,p)}async function P(c,l){let r=`${c}:${l}`,p=performance.now(),b="success";u(r);try{let a=await fetch(`/api/schedules/${encodeURIComponent(c)}/${l}`,{method:"POST"}),y=await a.json().catch(()=>({}));if(!a.ok||y.ok===!1)throw new Error(`Failed: ${a.status} ${y?.error??""}`.trim())}catch{b="error"}finally{if(l==="run"){let a=I-(performance.now()-p);a>0&&await K(a)}x(r,b),u(a=>a===r?null:a)}}return(0,s.jsxs)("section",{className:"page schedules-page",children:[(0,s.jsx)("div",{className:"page-heading",children:(0,s.jsxs)("div",{children:[(0,s.jsx)("p",{className:"eyebrow",children:e("nav.schedules")}),(0,s.jsx)("h1",{children:e("schedules.title")})]})}),(0,s.jsxs)("form",{id:"sched-filters",className:"filters dashboard-toolbar",children:[(0,s.jsx)("input",{type:"search",name:"q",placeholder:e("schedules.search"),value:t.q,onChange:c=>{let l=c.currentTarget.value;i(r=>({...r,q:l}))}}),(0,s.jsx)($,{id:"sched-kind-menu",ariaLabel:e("schedules.anyKind"),label:t.kind||e("schedules.anyKind"),value:t.kind,options:[{value:"",label:e("schedules.anyKind")},{value:"cron",label:"cron"},{value:"interval",label:"interval"},{value:"once",label:"once"}],onChange:c=>i(l=>({...l,kind:c}))}),(0,s.jsxs)("label",{className:"filter-toggle",children:[(0,s.jsx)("input",{type:"checkbox",name:"enabled",checked:t.enabledOnly,onChange:c=>{let l=c.currentTarget.checked;i(r=>({...r,enabledOnly:l}))}}),(0,s.jsx)("span",{className:"filter-toggle-label",children:e("schedules.enabledOnly")}),(0,s.jsx)("span",{className:"filter-toggle-switch","aria-hidden":"true"})]}),(0,s.jsx)("span",{className:"schedules-toolbar-spacer","aria-hidden":"true"}),(0,s.jsxs)("span",{className:"schedules-toolbar-count",children:[v.length,"/",n.length]})]}),(0,s.jsx)("section",{className:"overview-block schedules-list-section",children:(0,s.jsx)("div",{className:"schedules-list-wrap",children:v.length===0?(0,s.jsx)("div",{id:"schedules-tbody",className:"empty schedules-list-empty",children:e("schedules.empty")}):(0,s.jsx)(A,{id:"schedules-tbody",className:"schedules-list",children:v.map(c=>(0,s.jsx)(Z,{schedule:c,scheduleTimeZone:d,pending:h,feedback:g,tr:e,onAction:(l,r)=>{P(l,r)}},c.id))})})})]})}function B(e,n,d,t,i){return d?i(e==="run"?"schedules.running":"schedules.saving"):t==="success"?i(e==="run"?"schedules.runDone":"schedules.saved"):t==="error"?i("schedules.failed"):n}function F(e){let n=w(),d=e.feedback?` is-${e.feedback}`:"";return(0,s.jsx)("button",{type:"button",className:`schedule-action-button${e.pending?" is-pending":""}${d}`,"data-op":e.op,disabled:e.pending,onClick:e.onClick,children:(0,s.jsx)("span",{className:"schedule-action-label",children:B(e.op,e.label,e.pending,e.feedback,n)})})}function U(e){let n=e.feedback==="error"?e.tr("schedules.failed"):e.checked?e.tr("schedules.enabled"):e.tr("schedules.paused");return(0,s.jsxs)("button",{type:"button",className:`schedule-enabled-switch${e.checked?" is-on":""}${e.pending?" is-pending":""}${e.feedback?` is-${e.feedback}`:""}`,"aria-pressed":e.checked,disabled:e.pending,onClick:e.onClick,children:[(0,s.jsx)("span",{className:"schedule-enabled-switch-label",children:n}),(0,s.jsx)("span",{className:"schedule-enabled-switch-track","aria-hidden":"true",children:(0,s.jsx)("span",{})})]})}function j(e){return N(e,(0,s.jsx)(_,{}))}export{M as filterSchedules,L as fmtScheduleDate,j as renderSchedulesPage};