@yanhaidao/wecom 2.4.160 → 2.5.110

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 (313) hide show
  1. package/dist/index.js +68 -0
  2. package/dist/src/accounts.js +20 -0
  3. package/dist/src/agent/handler.js +895 -0
  4. package/dist/src/agent/index.js +5 -0
  5. package/dist/src/app/account-runtime.js +216 -0
  6. package/dist/src/app/bootstrap.js +19 -0
  7. package/dist/src/app/index.js +118 -0
  8. package/dist/src/capability/agent/delivery-service.js +63 -0
  9. package/dist/src/capability/agent/fallback-policy.js +6 -0
  10. package/dist/src/capability/agent/ingress-service.js +33 -0
  11. package/dist/src/capability/agent/upstream-delivery-service.js +71 -0
  12. package/dist/src/capability/bot/dispatch-config.js +45 -0
  13. package/dist/src/capability/bot/fallback-delivery.js +147 -0
  14. package/dist/src/capability/bot/local-path-delivery.js +178 -0
  15. package/dist/src/capability/bot/sandbox-media.js +138 -0
  16. package/dist/src/capability/bot/service.js +49 -0
  17. package/dist/src/capability/bot/stream-delivery.js +321 -0
  18. package/dist/src/capability/bot/stream-finalizer.js +81 -0
  19. package/dist/src/capability/bot/stream-orchestrator.js +318 -0
  20. package/dist/src/capability/bot/types.js +1 -0
  21. package/{src/capability/calendar/client.ts → dist/src/capability/calendar/client.js} +118 -241
  22. package/{src/capability/calendar/schema.ts → dist/src/capability/calendar/schema.js} +0 -38
  23. package/dist/src/capability/calendar/tool.js +365 -0
  24. package/dist/src/capability/calendar/types.js +12 -0
  25. package/{src/capability/doc/client.ts → dist/src/capability/doc/client.js} +370 -605
  26. package/{src/capability/doc/schema.ts → dist/src/capability/doc/schema.js} +345 -394
  27. package/dist/src/capability/doc/tool.js +1556 -0
  28. package/dist/src/capability/doc/types.js +113 -0
  29. package/dist/src/capability/mcp/index.js +3 -0
  30. package/dist/src/capability/mcp/schema.js +102 -0
  31. package/dist/src/capability/mcp/tool.js +146 -0
  32. package/dist/src/capability/mcp/transport.js +293 -0
  33. package/dist/src/channel.js +224 -0
  34. package/dist/src/config/accounts.js +236 -0
  35. package/dist/src/config/derived-paths.js +31 -0
  36. package/dist/src/config/index.js +7 -0
  37. package/dist/src/config/media.js +110 -0
  38. package/dist/src/config/network.js +32 -0
  39. package/dist/src/config/routing.js +20 -0
  40. package/dist/src/config/runtime-config.js +25 -0
  41. package/dist/src/config/schema.js +4 -0
  42. package/{src/config-schema.ts → dist/src/config-schema.js} +1 -1
  43. package/dist/src/context-store.js +219 -0
  44. package/{src/crypto/aes.ts → dist/src/crypto/aes.js} +11 -28
  45. package/dist/src/crypto/index.js +9 -0
  46. package/{src/crypto/signature.ts → dist/src/crypto/signature.js} +3 -18
  47. package/{src/crypto/xml.ts → dist/src/crypto/xml.js} +3 -11
  48. package/dist/src/crypto.js +145 -0
  49. package/dist/src/domain/models.js +1 -0
  50. package/dist/src/domain/policies.js +32 -0
  51. package/{src/dynamic-agent.ts → dist/src/dynamic-agent.js} +36 -73
  52. package/dist/src/gateway-monitor.js +139 -0
  53. package/dist/src/http.js +114 -0
  54. package/{src/media.ts → dist/src/media.js} +21 -40
  55. package/dist/src/monitor/limits.js +7 -0
  56. package/dist/src/monitor/state.js +28 -0
  57. package/dist/src/monitor.js +84 -0
  58. package/dist/src/observability/audit-log.js +30 -0
  59. package/dist/src/observability/legacy-operational-event-store.js +22 -0
  60. package/dist/src/observability/raw-envelope-log.js +24 -0
  61. package/dist/src/observability/status-registry.js +9 -0
  62. package/dist/src/observability/transport-session-view.js +14 -0
  63. package/dist/src/onboarding.js +546 -0
  64. package/dist/src/outbound.js +557 -0
  65. package/dist/src/runtime/dispatcher.js +57 -0
  66. package/{src/runtime/index.ts → dist/src/runtime/index.js} +0 -1
  67. package/dist/src/runtime/outbound-intent.js +1 -0
  68. package/dist/src/runtime/reply-orchestrator.js +38 -0
  69. package/dist/src/runtime/routing-bridge.js +26 -0
  70. package/dist/src/runtime/session-manager.js +112 -0
  71. package/dist/src/runtime/source-registry.js +174 -0
  72. package/dist/src/runtime.js +1 -0
  73. package/dist/src/shared/command-auth.js +57 -0
  74. package/{src/shared/index.ts → dist/src/shared/index.js} +0 -1
  75. package/dist/src/shared/media-asset.js +65 -0
  76. package/dist/src/shared/media-service.js +59 -0
  77. package/dist/src/shared/media-types.js +1 -0
  78. package/{src/shared/xml-parser.ts → dist/src/shared/xml-parser.js} +72 -63
  79. package/dist/src/store/active-reply-store.js +41 -0
  80. package/dist/src/store/interfaces.js +1 -0
  81. package/dist/src/store/memory-store.js +33 -0
  82. package/dist/src/store/stream-batch-store.js +319 -0
  83. package/{src/target.ts → dist/src/target.js} +15 -48
  84. package/dist/src/transport/agent-api/client.js +168 -0
  85. package/dist/src/transport/agent-api/core.js +337 -0
  86. package/dist/src/transport/agent-api/delivery.js +28 -0
  87. package/dist/src/transport/agent-api/media-upload.js +4 -0
  88. package/dist/src/transport/agent-api/reply.js +24 -0
  89. package/dist/src/transport/agent-api/upstream-delivery.js +30 -0
  90. package/dist/src/transport/agent-api/upstream-media-upload.js +46 -0
  91. package/dist/src/transport/agent-api/upstream-reply.js +26 -0
  92. package/dist/src/transport/agent-callback/http-handler.js +30 -0
  93. package/dist/src/transport/agent-callback/inbound.js +4 -0
  94. package/dist/src/transport/agent-callback/reply.js +8 -0
  95. package/dist/src/transport/agent-callback/request-handler.js +189 -0
  96. package/dist/src/transport/agent-callback/session.js +15 -0
  97. package/dist/src/transport/bot-webhook/active-reply.js +27 -0
  98. package/dist/src/transport/bot-webhook/http-handler.js +31 -0
  99. package/dist/src/transport/bot-webhook/inbound-normalizer.js +496 -0
  100. package/dist/src/transport/bot-webhook/inbound.js +4 -0
  101. package/dist/src/transport/bot-webhook/message-shape.js +98 -0
  102. package/dist/src/transport/bot-webhook/protocol.js +124 -0
  103. package/dist/src/transport/bot-webhook/reply.js +9 -0
  104. package/dist/src/transport/bot-webhook/request-handler.js +285 -0
  105. package/dist/src/transport/bot-webhook/session.js +15 -0
  106. package/dist/src/transport/bot-ws/inbound.js +147 -0
  107. package/dist/src/transport/bot-ws/media.js +236 -0
  108. package/dist/src/transport/bot-ws/reply.js +310 -0
  109. package/dist/src/transport/bot-ws/sdk-adapter.js +257 -0
  110. package/dist/src/transport/bot-ws/session.js +15 -0
  111. package/dist/src/transport/http/common.js +78 -0
  112. package/dist/src/transport/http/registry.js +71 -0
  113. package/dist/src/transport/http/request-handler.js +51 -0
  114. package/{src/transport/index.ts → dist/src/transport/index.js} +2 -10
  115. package/dist/src/types/account.js +1 -0
  116. package/dist/src/types/config.js +1 -0
  117. package/dist/src/types/constants.js +28 -0
  118. package/dist/src/types/events.js +1 -0
  119. package/dist/src/types/index.js +1 -0
  120. package/dist/src/types/legacy-stream.js +1 -0
  121. package/dist/src/types/message.js +5 -0
  122. package/dist/src/types/runtime-context.js +1 -0
  123. package/dist/src/types/runtime.js +1 -0
  124. package/dist/src/types.js +1 -0
  125. package/dist/src/upstream/index.js +111 -0
  126. package/dist/src/wecom_msg_adapter/markdown_adapter.js +280 -0
  127. package/openclaw.plugin.json +15 -0
  128. package/package.json +18 -1
  129. package/.github/workflows/release.yml +0 -143
  130. package/GOVERNANCE.md +0 -26
  131. package/SKILLS_CAL.md +0 -895
  132. package/SKILLS_DOC.md +0 -2288
  133. package/UPSTREAM_CONFIG.md +0 -170
  134. package/UPSTREAM_PLAN.md +0 -175
  135. package/assets/01.bot-add.png +0 -0
  136. package/assets/01.bot-setp2.png +0 -0
  137. package/assets/01.image.jpg +0 -0
  138. package/assets/02.agent.add.png +0 -0
  139. package/assets/02.agent.api-set.png +0 -0
  140. package/assets/02.image.jpg +0 -0
  141. package/assets/03.agent.page.png +0 -0
  142. package/assets/03.bot.page.png +0 -0
  143. package/assets/link-me.jpg +0 -0
  144. package/assets/register.png +0 -0
  145. package/changelog/v2.2.28.md +0 -70
  146. package/changelog/v2.3.10.md +0 -17
  147. package/changelog/v2.3.11.md +0 -19
  148. package/changelog/v2.3.12.md +0 -25
  149. package/changelog/v2.3.13.md +0 -19
  150. package/changelog/v2.3.14.md +0 -48
  151. package/changelog/v2.3.15.md +0 -15
  152. package/changelog/v2.3.16.md +0 -11
  153. package/changelog/v2.3.18.md +0 -22
  154. package/changelog/v2.3.19.md +0 -73
  155. package/changelog/v2.3.2.md +0 -28
  156. package/changelog/v2.3.26.md +0 -21
  157. package/changelog/v2.3.27.md +0 -33
  158. package/changelog/v2.3.4.md +0 -20
  159. package/changelog/v2.3.9.md +0 -22
  160. package/changelog/v2.4.12.md +0 -37
  161. package/changelog/v2.4.16.md +0 -19
  162. package/compat-single-account.md +0 -148
  163. package/index.test.ts +0 -38
  164. package/scripts/test-proxy.ts +0 -70
  165. package/src/accounts.ts +0 -34
  166. package/src/agent/api-client.upload.test.ts +0 -109
  167. package/src/agent/handler.event-filter.test.ts +0 -100
  168. package/src/agent/handler.ts +0 -1105
  169. package/src/agent/index.ts +0 -12
  170. package/src/app/account-runtime.ts +0 -276
  171. package/src/app/bootstrap.ts +0 -29
  172. package/src/app/index.ts +0 -192
  173. package/src/capability/agent/delivery-service.ts +0 -87
  174. package/src/capability/agent/fallback-policy.ts +0 -13
  175. package/src/capability/agent/ingress-service.ts +0 -38
  176. package/src/capability/agent/upstream-delivery-service.ts +0 -96
  177. package/src/capability/bot/dispatch-config.ts +0 -47
  178. package/src/capability/bot/fallback-delivery.ts +0 -178
  179. package/src/capability/bot/local-path-delivery.ts +0 -215
  180. package/src/capability/bot/sandbox-media.test.ts +0 -221
  181. package/src/capability/bot/sandbox-media.ts +0 -176
  182. package/src/capability/bot/service.ts +0 -56
  183. package/src/capability/bot/stream-delivery.ts +0 -379
  184. package/src/capability/bot/stream-finalizer.ts +0 -120
  185. package/src/capability/bot/stream-orchestrator.ts +0 -371
  186. package/src/capability/bot/types.ts +0 -8
  187. package/src/capability/calendar/SKILLS_CHECKLIST.md +0 -251
  188. package/src/capability/calendar/tool.ts +0 -417
  189. package/src/capability/calendar/types.ts +0 -309
  190. package/src/capability/doc/tool.ts +0 -1629
  191. package/src/capability/doc/types.ts +0 -792
  192. package/src/capability/mcp/index.ts +0 -10
  193. package/src/capability/mcp/schema.ts +0 -107
  194. package/src/capability/mcp/tool.ts +0 -174
  195. package/src/capability/mcp/transport.ts +0 -394
  196. package/src/channel.config.test.ts +0 -147
  197. package/src/channel.lifecycle.test.ts +0 -255
  198. package/src/channel.meta.test.ts +0 -26
  199. package/src/channel.ts +0 -256
  200. package/src/config/accounts.resolve.test.ts +0 -75
  201. package/src/config/accounts.ts +0 -296
  202. package/src/config/derived-paths.test.ts +0 -111
  203. package/src/config/derived-paths.ts +0 -41
  204. package/src/config/index.ts +0 -26
  205. package/src/config/media.test.ts +0 -113
  206. package/src/config/media.ts +0 -139
  207. package/src/config/network.ts +0 -53
  208. package/src/config/routing.test.ts +0 -88
  209. package/src/config/routing.ts +0 -26
  210. package/src/config/runtime-config.ts +0 -46
  211. package/src/config/schema.ts +0 -90
  212. package/src/context-store.ts +0 -297
  213. package/src/crypto/index.ts +0 -24
  214. package/src/crypto.test.ts +0 -32
  215. package/src/crypto.ts +0 -176
  216. package/src/domain/models.ts +0 -7
  217. package/src/domain/policies.ts +0 -36
  218. package/src/dynamic-agent.account-scope.test.ts +0 -17
  219. package/src/gateway-monitor.ts +0 -181
  220. package/src/http.ts +0 -145
  221. package/src/media.test.ts +0 -82
  222. package/src/monitor/limits.ts +0 -7
  223. package/src/monitor/state.queue.test.ts +0 -185
  224. package/src/monitor/state.ts +0 -34
  225. package/src/monitor.active.test.ts +0 -245
  226. package/src/monitor.inbound-filter.test.ts +0 -63
  227. package/src/monitor.integration.test.ts +0 -208
  228. package/src/monitor.ts +0 -121
  229. package/src/monitor.webhook.test.ts +0 -774
  230. package/src/observability/audit-log.ts +0 -48
  231. package/src/observability/legacy-operational-event-store.ts +0 -36
  232. package/src/observability/raw-envelope-log.ts +0 -28
  233. package/src/observability/status-registry.ts +0 -13
  234. package/src/observability/transport-session-view.ts +0 -14
  235. package/src/onboarding.test.ts +0 -336
  236. package/src/onboarding.ts +0 -704
  237. package/src/outbound.test.ts +0 -1271
  238. package/src/outbound.ts +0 -746
  239. package/src/runtime/dispatcher.ts +0 -71
  240. package/src/runtime/outbound-intent.ts +0 -4
  241. package/src/runtime/reply-orchestrator.test.ts +0 -71
  242. package/src/runtime/reply-orchestrator.ts +0 -67
  243. package/src/runtime/routing-bridge.test.ts +0 -115
  244. package/src/runtime/routing-bridge.ts +0 -44
  245. package/src/runtime/session-manager.test.ts +0 -174
  246. package/src/runtime/session-manager.ts +0 -139
  247. package/src/runtime/source-registry.ts +0 -249
  248. package/src/runtime.ts +0 -14
  249. package/src/shared/command-auth.ts +0 -87
  250. package/src/shared/media-asset.ts +0 -78
  251. package/src/shared/media-service.test.ts +0 -111
  252. package/src/shared/media-service.ts +0 -84
  253. package/src/shared/media-types.ts +0 -5
  254. package/src/shared/xml-parser.test.ts +0 -50
  255. package/src/store/active-reply-store.ts +0 -42
  256. package/src/store/interfaces.ts +0 -11
  257. package/src/store/memory-store.ts +0 -43
  258. package/src/store/stream-batch-store.ts +0 -350
  259. package/src/transport/agent-api/client.ts +0 -277
  260. package/src/transport/agent-api/core.ts +0 -463
  261. package/src/transport/agent-api/delivery.ts +0 -41
  262. package/src/transport/agent-api/media-upload.ts +0 -11
  263. package/src/transport/agent-api/reply.ts +0 -39
  264. package/src/transport/agent-api/upstream-delivery.ts +0 -45
  265. package/src/transport/agent-api/upstream-media-upload.ts +0 -70
  266. package/src/transport/agent-api/upstream-reply.ts +0 -43
  267. package/src/transport/agent-callback/http-handler.ts +0 -47
  268. package/src/transport/agent-callback/inbound.ts +0 -5
  269. package/src/transport/agent-callback/reply.ts +0 -13
  270. package/src/transport/agent-callback/request-handler.ts +0 -244
  271. package/src/transport/agent-callback/session.ts +0 -23
  272. package/src/transport/bot-webhook/active-reply.ts +0 -39
  273. package/src/transport/bot-webhook/http-handler.ts +0 -48
  274. package/src/transport/bot-webhook/inbound-normalizer.test.ts +0 -433
  275. package/src/transport/bot-webhook/inbound-normalizer.ts +0 -558
  276. package/src/transport/bot-webhook/inbound.ts +0 -5
  277. package/src/transport/bot-webhook/message-shape.ts +0 -92
  278. package/src/transport/bot-webhook/protocol.ts +0 -148
  279. package/src/transport/bot-webhook/reply.ts +0 -15
  280. package/src/transport/bot-webhook/request-handler.ts +0 -394
  281. package/src/transport/bot-webhook/session.ts +0 -23
  282. package/src/transport/bot-ws/inbound.test.ts +0 -290
  283. package/src/transport/bot-ws/inbound.ts +0 -163
  284. package/src/transport/bot-ws/media.test.ts +0 -44
  285. package/src/transport/bot-ws/media.ts +0 -321
  286. package/src/transport/bot-ws/reply.test.ts +0 -450
  287. package/src/transport/bot-ws/reply.ts +0 -365
  288. package/src/transport/bot-ws/sdk-adapter.test.ts +0 -187
  289. package/src/transport/bot-ws/sdk-adapter.ts +0 -314
  290. package/src/transport/bot-ws/session.ts +0 -28
  291. package/src/transport/http/common.ts +0 -109
  292. package/src/transport/http/registry.ts +0 -92
  293. package/src/transport/http/request-handler.ts +0 -84
  294. package/src/types/account.ts +0 -70
  295. package/src/types/config.ts +0 -114
  296. package/src/types/constants.ts +0 -31
  297. package/src/types/events.ts +0 -21
  298. package/src/types/global.d.ts +0 -9
  299. package/src/types/index.ts +0 -17
  300. package/src/types/legacy-stream.ts +0 -50
  301. package/src/types/message.ts +0 -189
  302. package/src/types/runtime-context.ts +0 -28
  303. package/src/types/runtime.ts +0 -165
  304. package/src/types.ts +0 -41
  305. package/src/upstream/index.ts +0 -150
  306. package/src/upstream.test.ts +0 -84
  307. package/src/wecom_msg_adapter/markdown_adapter.ts +0 -331
  308. package/tsconfig.json +0 -22
  309. package/vitest.config.ts +0 -26
  310. /package/{src/capability/agent/index.ts → dist/src/capability/agent/index.js} +0 -0
  311. /package/{src/capability/bot/index.ts → dist/src/capability/bot/index.js} +0 -0
  312. /package/{src/capability/calendar/index.ts → dist/src/capability/calendar/index.js} +0 -0
  313. /package/{src/capability/index.ts → dist/src/capability/index.js} +0 -0
@@ -1,417 +0,0 @@
1
- // ============================================================================
2
- // Calendar Tool - Complete Implementation
3
- // 严格遵循企业微信官方 API 文档:https://developer.work.weixin.qq.com/document/path/93329
4
- // ============================================================================
5
- import type { OpenClawPluginApi } from "openclaw/plugin-sdk";
6
- import { isWecomAgentSource } from "../../runtime/source-registry.js";
7
- import type { ResolvedAgentAccount } from "../../types/index.js";
8
- import { resolveAgentAccountOrUndefined } from "../bot/fallback-delivery.js";
9
- import { WecomCalendarClient } from "./client.js";
10
- import { wecomCalendarToolSchema } from "./schema.js";
11
-
12
- // ============================================================================
13
- // Helper Functions
14
- // ============================================================================
15
-
16
- function readString(v: unknown): string {
17
- return String(v ?? "").trim();
18
- }
19
-
20
- function readNumber(v: unknown): number {
21
- const num = Number(v);
22
- return isNaN(num) ? 0 : num;
23
- }
24
-
25
- function readArray(v: unknown): any[] {
26
- return Array.isArray(v) ? v : [];
27
- }
28
-
29
- function buildResult(payload: any) {
30
- return {
31
- content: [{ type: "text" as const, text: JSON.stringify(payload, null, 2) }],
32
- details: payload,
33
- };
34
- }
35
-
36
- function resolveAccount(
37
- api: OpenClawPluginApi,
38
- paramsAccountId?: string,
39
- toolContext?: any,
40
- ): ResolvedAgentAccount | undefined {
41
- const accountId =
42
- paramsAccountId || toolContext?.agentAccountId || toolContext?.accountId || "default";
43
- return resolveAgentAccountOrUndefined(api.config, accountId);
44
- }
45
-
46
- // ============================================================================
47
- // Tool Registration
48
- // ============================================================================
49
-
50
- export function registerWecomCalendarTools(api: OpenClawPluginApi): void {
51
- if (typeof api?.registerTool !== "function") {
52
- return;
53
- }
54
-
55
- const client = new WecomCalendarClient();
56
-
57
- api.registerTool((toolContext: any) => {
58
- if (
59
- toolContext?.messageChannel !== "wecom" ||
60
- !isWecomAgentSource({
61
- accountId: toolContext?.agentAccountId || toolContext?.accountId,
62
- sessionKey: toolContext?.sessionKey,
63
- sessionId: toolContext?.sessionId,
64
- })
65
- ) {
66
- return null;
67
- }
68
-
69
- return {
70
- name: "wecom_calendar",
71
- label: "WeCom Calendar",
72
- description: "企业微信日历工具,支持创建/更新/删除日历和日程,获取日程详情等功能",
73
- parameters: wecomCalendarToolSchema,
74
- async execute(_toolCallId: string, params: any) {
75
- try {
76
- const account = resolveAccount(api, params.accountId, toolContext);
77
-
78
- if (!account || !account.configured) {
79
- return buildResult({
80
- ok: false,
81
- action: params.action,
82
- error: "账号未配置或不存在",
83
- accountId: params.accountId,
84
- });
85
- }
86
-
87
- switch (params.action) {
88
- // ========================================================================
89
- // Calendar APIs
90
- // ========================================================================
91
-
92
- case "calendar_create": {
93
- const r = await client.createCalendar({
94
- agent: account,
95
- request: {
96
- calendar: {
97
- summary: readString(params.summary),
98
- color: readString(params.color),
99
- description:
100
- params.description !== undefined ? readString(params.description) : undefined,
101
- admins: readArray(params.admins),
102
- set_as_default: params.set_as_default,
103
- shares: readArray(params.shares),
104
- is_public: params.is_public,
105
- public_range: params.public_range,
106
- is_corp_calendar: params.is_corp_calendar,
107
- },
108
- agentid: params.agentid,
109
- },
110
- });
111
- return buildResult({
112
- ok: true,
113
- action: "calendar_create",
114
- calId: r.calId,
115
- raw: r.raw,
116
- });
117
- }
118
-
119
- case "calendar_update": {
120
- const r = await client.updateCalendar({
121
- agent: account,
122
- request: {
123
- skip_public_range: params.skip_public_range,
124
- calendar: {
125
- cal_id: readString(params.cal_id),
126
- summary: readString(params.summary),
127
- color: readString(params.color),
128
- description:
129
- params.description !== undefined ? readString(params.description) : undefined,
130
- admins: readArray(params.admins),
131
- shares: readArray(params.shares),
132
- public_range: params.public_range,
133
- },
134
- },
135
- });
136
- return buildResult({
137
- ok: true,
138
- action: "calendar_update",
139
- calId: r.calId,
140
- raw: r.raw,
141
- });
142
- }
143
-
144
- case "calendar_get": {
145
- const r = await client.getCalendar({
146
- agent: account,
147
- request: {
148
- cal_id_list: readArray(params.cal_id_list),
149
- },
150
- });
151
- return buildResult({
152
- ok: true,
153
- action: "calendar_get",
154
- calendarList: r.calendarList,
155
- raw: r.raw,
156
- });
157
- }
158
-
159
- case "calendar_delete": {
160
- const r = await client.deleteCalendar({
161
- agent: account,
162
- calId: readString(params.cal_id),
163
- });
164
- return buildResult({
165
- ok: true,
166
- action: "calendar_delete",
167
- calId: r.calId,
168
- raw: r.raw,
169
- });
170
- }
171
-
172
- // ========================================================================
173
- // Schedule APIs
174
- // ========================================================================
175
-
176
- case "schedule_create": {
177
- const r = await client.createSchedule({
178
- agent: account,
179
- request: {
180
- schedule: {
181
- start_time: readNumber(params.start_time),
182
- end_time: readNumber(params.end_time),
183
- is_whole_day: params.is_whole_day,
184
- summary: params.summary !== undefined ? readString(params.summary) : undefined,
185
- description:
186
- params.description !== undefined ? readString(params.description) : undefined,
187
- location:
188
- params.location !== undefined ? readString(params.location) : undefined,
189
- attendees: readArray(params.attendees),
190
- admins: readArray(params.admins),
191
- reminders: params.reminders,
192
- cal_id: params.cal_id !== undefined ? readString(params.cal_id) : undefined,
193
- },
194
- agentid: params.agentid,
195
- },
196
- });
197
- return buildResult({
198
- ok: true,
199
- action: "schedule_create",
200
- scheduleId: r.scheduleId,
201
- raw: r.raw,
202
- });
203
- }
204
-
205
- case "schedule_update": {
206
- const r = await client.updateSchedule({
207
- agent: account,
208
- request: {
209
- skip_attendees: params.skip_attendees,
210
- op_mode: params.op_mode,
211
- op_start_time: params.op_start_time,
212
- schedule: {
213
- schedule_id: readString(params.schedule_id),
214
- start_time: readNumber(params.start_time),
215
- end_time: readNumber(params.end_time),
216
- is_whole_day: params.is_whole_day,
217
- summary: params.summary !== undefined ? readString(params.summary) : undefined,
218
- description:
219
- params.description !== undefined ? readString(params.description) : undefined,
220
- location:
221
- params.location !== undefined ? readString(params.location) : undefined,
222
- attendees: readArray(params.attendees),
223
- admins: readArray(params.admins),
224
- reminders: params.reminders,
225
- },
226
- },
227
- });
228
- return buildResult({
229
- ok: true,
230
- action: "schedule_update",
231
- scheduleId: r.scheduleId,
232
- raw: r.raw,
233
- });
234
- }
235
-
236
- case "schedule_add_attendees": {
237
- const r = await client.addScheduleAttendees({
238
- agent: account,
239
- request: {
240
- schedule_id: readString(params.schedule_id),
241
- attendees: readArray(params.attendees),
242
- },
243
- });
244
- return buildResult({
245
- ok: true,
246
- action: "schedule_add_attendees",
247
- scheduleId: r.scheduleId,
248
- raw: r.raw,
249
- });
250
- }
251
-
252
- case "schedule_del_attendees": {
253
- const r = await client.deleteScheduleAttendees({
254
- agent: account,
255
- request: {
256
- schedule_id: readString(params.schedule_id),
257
- attendees: readArray(params.attendees),
258
- },
259
- });
260
- return buildResult({
261
- ok: true,
262
- action: "schedule_del_attendees",
263
- scheduleId: r.scheduleId,
264
- raw: r.raw,
265
- });
266
- }
267
-
268
- case "schedule_get_by_calendar": {
269
- const r = await client.getScheduleByCalendar({
270
- agent: account,
271
- request: {
272
- cal_id: readString(params.cal_id),
273
- offset: params.offset,
274
- limit: params.limit,
275
- },
276
- });
277
- return buildResult({
278
- ok: true,
279
- action: "schedule_get_by_calendar",
280
- scheduleList: r.scheduleList,
281
- raw: r.raw,
282
- });
283
- }
284
-
285
- case "schedule_get": {
286
- const r = await client.getSchedule({
287
- agent: account,
288
- request: {
289
- schedule_id_list: readArray(params.schedule_id_list),
290
- },
291
- });
292
- return buildResult({
293
- ok: true,
294
- action: "schedule_get",
295
- scheduleList: r.scheduleList,
296
- meetingCode: r.meetingCode,
297
- meetingLink: r.meetingLink,
298
- raw: r.raw,
299
- });
300
- }
301
-
302
- case "schedule_delete": {
303
- const r = await client.deleteSchedule({
304
- agent: account,
305
- request: {
306
- schedule_id: readString(params.schedule_id),
307
- op_mode: params.op_mode,
308
- op_start_time: params.op_start_time,
309
- },
310
- });
311
- return buildResult({
312
- ok: true,
313
- action: "schedule_delete",
314
- scheduleId: r.scheduleId,
315
- raw: r.raw,
316
- });
317
- }
318
-
319
- // ========================================================================
320
- // System Calendar APIs
321
- // ========================================================================
322
-
323
- case "schedule_get_system_calid": {
324
- const r = await client.getSystemCalendarId({
325
- agent: account,
326
- userid: readString(params.userid),
327
- });
328
- return buildResult({
329
- ok: true,
330
- action: "schedule_get_system_calid",
331
- calId: r.calId,
332
- raw: r.raw,
333
- });
334
- }
335
-
336
- case "schedule_create_in_system": {
337
- const r = await client.createSystemSchedule({
338
- agent: account,
339
- request: {
340
- schedule: {
341
- organizer: readString(params.organizer),
342
- start_time: readNumber(params.start_time),
343
- end_time: readNumber(params.end_time),
344
- is_whole_day: params.is_whole_day,
345
- summary: params.summary !== undefined ? readString(params.summary) : undefined,
346
- description:
347
- params.description !== undefined ? readString(params.description) : undefined,
348
- location:
349
- params.location !== undefined ? readString(params.location) : undefined,
350
- attendees: readArray(params.attendees),
351
- reminders: params.reminders,
352
- },
353
- },
354
- });
355
- return buildResult({
356
- ok: true,
357
- action: "schedule_create_in_system",
358
- scheduleId: r.scheduleId,
359
- raw: r.raw,
360
- });
361
- }
362
-
363
- case "schedule_respond": {
364
- const r = await client.respondSchedule({
365
- agent: account,
366
- request: {
367
- schedule_id: readString(params.schedule_id),
368
- op_mode: params.op_mode,
369
- op_start_time: params.op_start_time,
370
- attendee: readString(params.attendee),
371
- response_status: params.response_status,
372
- },
373
- });
374
- return buildResult({
375
- ok: true,
376
- action: "schedule_respond",
377
- scheduleId: r.scheduleId,
378
- raw: r.raw,
379
- });
380
- }
381
-
382
- case "schedule_sync": {
383
- const r = await client.syncSchedule({
384
- agent: account,
385
- request: {
386
- cal_id: readString(params.cal_id),
387
- cursor: params.cursor,
388
- limit: params.limit,
389
- },
390
- });
391
- return buildResult({
392
- ok: true,
393
- action: "schedule_sync",
394
- nextCursor: r.nextCursor,
395
- scheduleList: r.scheduleList,
396
- raw: r.raw,
397
- });
398
- }
399
-
400
- // ========================================================================
401
- // Default: Unknown Action
402
- // ========================================================================
403
-
404
- default:
405
- throw new Error(`未知操作:${params.action}`);
406
- }
407
- } catch (err) {
408
- return buildResult({
409
- ok: false,
410
- action: params.action,
411
- error: err instanceof Error ? err.message : String(err),
412
- });
413
- }
414
- },
415
- };
416
- });
417
- }