@zhin.js/adapter-wecom 2.0.2 → 3.0.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 (53) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/README.md +80 -226
  3. package/adapters/wecom.ts +27 -0
  4. package/agent/tools/get_dept_users.ts +2 -2
  5. package/agent/tools/get_user.ts +2 -2
  6. package/agent/tools/list_departments.ts +2 -2
  7. package/agent/tools/send_text.ts +2 -2
  8. package/lib/endpoint.d.ts +46 -0
  9. package/lib/endpoint.js +205 -0
  10. package/lib/index.d.ts +5 -0
  11. package/lib/index.js +5 -0
  12. package/lib/platform-permit.d.ts +15 -0
  13. package/lib/{src/platform-permit.js → platform-permit.js} +1 -2
  14. package/lib/protocol.d.ts +96 -0
  15. package/lib/protocol.js +252 -0
  16. package/lib/webhook.d.ts +14 -0
  17. package/lib/webhook.js +86 -0
  18. package/lib/wecom-agent-deps.d.ts +17 -0
  19. package/lib/wecom-agent-deps.js +30 -0
  20. package/package.json +45 -20
  21. package/plugin.ts +12 -0
  22. package/schema.json +60 -0
  23. package/src/endpoint.ts +196 -584
  24. package/src/index.ts +48 -53
  25. package/src/platform-permit.ts +1 -1
  26. package/src/protocol.ts +362 -0
  27. package/src/webhook.ts +130 -0
  28. package/src/wecom-agent-deps.ts +37 -9
  29. package/lib/agent/tools/get_dept_users.js +0 -18
  30. package/lib/agent/tools/get_dept_users.js.map +0 -1
  31. package/lib/agent/tools/get_user.js +0 -17
  32. package/lib/agent/tools/get_user.js.map +0 -1
  33. package/lib/agent/tools/list_departments.js +0 -18
  34. package/lib/agent/tools/list_departments.js.map +0 -1
  35. package/lib/agent/tools/send_text.js +0 -19
  36. package/lib/agent/tools/send_text.js.map +0 -1
  37. package/lib/src/adapter.js +0 -22
  38. package/lib/src/adapter.js.map +0 -1
  39. package/lib/src/endpoint.js +0 -602
  40. package/lib/src/endpoint.js.map +0 -1
  41. package/lib/src/index.js +0 -41
  42. package/lib/src/index.js.map +0 -1
  43. package/lib/src/platform-permit.js.map +0 -1
  44. package/lib/src/segment-mapper.js +0 -2
  45. package/lib/src/segment-mapper.js.map +0 -1
  46. package/lib/src/types.js +0 -5
  47. package/lib/src/types.js.map +0 -1
  48. package/lib/src/wecom-agent-deps.js +0 -10
  49. package/lib/src/wecom-agent-deps.js.map +0 -1
  50. package/plugin.yml +0 -3
  51. package/src/adapter.ts +0 -28
  52. package/src/segment-mapper.ts +0 -1
  53. package/src/types.ts +0 -51
package/lib/src/index.js DELETED
@@ -1,41 +0,0 @@
1
- /**
2
- * 企业微信适配器入口:类型扩展、导出、注册
3
- */
4
- import { usePlugin } from 'zhin.js';
5
- import { WecomAdapter } from './adapter.js';
6
- import { registerWecomPlatformPermitChecker, } from './platform-permit.js';
7
- import { setWecomAgentDeps } from './wecom-agent-deps.js';
8
- export * from './types.js';
9
- export { WecomEndpoint } from './endpoint.js';
10
- export { WecomAdapter } from './adapter.js';
11
- const plugin = usePlugin();
12
- const { provide, useContext } = plugin;
13
- useContext('router', (router) => {
14
- provide({
15
- name: 'wecom',
16
- description: 'WeCom (企业微信) Endpoint Adapter',
17
- mounted: async (p) => {
18
- const adapter = new WecomAdapter(p, router);
19
- await adapter.start();
20
- return adapter;
21
- },
22
- dispose: async (adapter) => {
23
- await adapter.stop();
24
- },
25
- });
26
- });
27
- useContext('tool', 'wecom', (toolService, wecom) => {
28
- const disposers = [];
29
- disposers.push(registerWecomPlatformPermitChecker());
30
- setWecomAgentDeps({
31
- getEndpoint: (endpointId) => {
32
- const endpoint = wecom.endpoints.get(endpointId);
33
- if (!endpoint)
34
- throw new Error(`Endpoint ${endpointId} 不存在`);
35
- return endpoint;
36
- },
37
- getAdapter: () => wecom,
38
- });
39
- return () => disposers.forEach(d => d());
40
- });
41
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,EAAiC,MAAM,SAAS,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EACL,kCAAkC,GACnC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAa1D,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;AAC3B,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;AAEvC,UAAU,CAAC,QAAQ,EAAE,CAAC,MAAc,EAAE,EAAE;IACtC,OAAO,CAAC;QACN,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,+BAA+B;QAC5C,OAAO,EAAE,KAAK,EAAE,CAAS,EAAE,EAAE;YAC3B,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YAC5C,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,OAAqB,EAAE,EAAE;YACvC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,WAAwB,EAAE,KAAmB,EAAE,EAAE;IAC5E,MAAM,SAAS,GAAmB,EAAE,CAAC;IACrC,SAAS,CAAC,IAAI,CAAC,kCAAkC,EAAE,CAAC,CAAC;IACrD,iBAAiB,CAAC;QAChB,WAAW,EAAE,CAAC,UAAU,EAAE,EAAE;YAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACjD,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,YAAY,UAAU,MAAM,CAAC,CAAC;YAC7D,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,UAAU,EAAE,GAAG,EAAE,CAAC,KAAK;KACxB,CAAC,CAAC;IACH,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"platform-permit.js","sourceRoot":"","sources":["../../src/platform-permit.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,6BAA6B,EAAgB,MAAM,SAAS,CAAC;AAEtE,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,YAAY,OAAO,IAAI,IAAI,GAAG,CAAC;AACxC,CAAC;AAED,MAAM,gBAAgB,GAA2B;IAC/C,WAAW,EAAE,YAAY;IACzB,WAAW,EAAE,YAAY;CAC1B,CAAC;AAEF,MAAM,UAAU,wBAAwB,CAAC,WAAmB;IAC1D,OAAO,cAAc,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,KAG7C;IACC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,CAAC;IACtE,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC;IACxD,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,IAAY,EAAE,OAAqB;IAC1E,MAAM,MAAM,GAAG,OAAO,CAAC,OAAoD,CAAC;IAC5E,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;IAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEnD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,YAAY;YACf,OAAO,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;QAC/C,KAAK,YAAY;YACf,OAAO,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;QACxF;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kCAAkC;IAChD,OAAO,6BAA6B,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAC;AAC1E,CAAC"}
@@ -1,2 +0,0 @@
1
- export { toCanonicalSegments, fromCanonicalSegments } from 'zhin.js';
2
- //# sourceMappingURL=segment-mapper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"segment-mapper.js","sourceRoot":"","sources":["../../src/segment-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC"}
package/lib/src/types.js DELETED
@@ -1,5 +0,0 @@
1
- /**
2
- * 企业微信适配器类型定义
3
- */
4
- export {};
5
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,10 +0,0 @@
1
- let _deps = null;
2
- export function setWecomAgentDeps(deps) {
3
- _deps = deps;
4
- }
5
- export function getWecomAgentDeps() {
6
- if (!_deps)
7
- throw new Error('wecom agent deps not initialized');
8
- return _deps;
9
- }
10
- //# sourceMappingURL=wecom-agent-deps.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wecom-agent-deps.js","sourceRoot":"","sources":["../../src/wecom-agent-deps.ts"],"names":[],"mappings":"AAQA,IAAI,KAAK,GAA0B,IAAI,CAAC;AAExC,MAAM,UAAU,iBAAiB,CAAC,IAAoB;IACpD,KAAK,GAAG,IAAI,CAAC;AACf,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAChE,OAAO,KAAK,CAAC;AACf,CAAC"}
package/plugin.yml DELETED
@@ -1,3 +0,0 @@
1
- name: adapter-wecom
2
- description: 企业微信适配器:消息接收与发送、用户与部门查询、AES 消息加解密
3
- version: 1.0.0
package/src/adapter.ts DELETED
@@ -1,28 +0,0 @@
1
- /**
2
- * 企业微信适配器
3
- */
4
- import { Adapter, Plugin, OUTBOUND_RICH_SEGMENT_POLICY_IM_FULL } from 'zhin.js';
5
- import type { Router } from '@zhin.js/host-router/router';
6
- import { WecomEndpoint } from './endpoint.js';
7
- import type { WecomEndpointConfig } from './types.js';
8
-
9
- export class WecomAdapter extends Adapter<WecomEndpoint> {
10
- static override readonly capabilities = ['inbound', 'outbound'] as const;
11
- static override outboundRichSegmentPolicy = OUTBOUND_RICH_SEGMENT_POLICY_IM_FULL;
12
- static override interactivePolicy = 'text' as const;
13
-
14
- #router: Router;
15
-
16
- constructor(plugin: Plugin, router: Router) {
17
- super(plugin, 'wecom', []);
18
- this.#router = router;
19
- }
20
-
21
- createEndpoint(config: WecomEndpointConfig): WecomEndpoint {
22
- return new WecomEndpoint(this, this.#router, config);
23
- }
24
-
25
- async start(): Promise<void> {
26
- await super.start();
27
- }
28
- }
@@ -1 +0,0 @@
1
- export { toCanonicalSegments, fromCanonicalSegments } from 'zhin.js';
package/src/types.ts DELETED
@@ -1,51 +0,0 @@
1
- /**
2
- * 企业微信适配器类型定义
3
- */
4
-
5
- export interface WecomEndpointConfig {
6
- context: 'wecom'
7
- name: string
8
- corpId: string
9
- agentSecret: string // 应用 Secret
10
- token: string // 用于签名验证
11
- encodingAESKey: string // 用于消息加解密
12
- webhookPath?: string // 默认 '/wecom/callback'
13
- apiBaseUrl?: string // 默认 'https://qyapi.weixin.qq.com'
14
- }
15
-
16
- export interface WecomMessage {
17
- ToUserName: string
18
- FromUserName: string
19
- CreateTime: number
20
- MsgType: 'text' | 'image' | 'voice' | 'video' | 'shortvideo' | 'location' | 'link' | 'event'
21
- Content?: string
22
- MsgId?: string
23
- PicUrl?: string
24
- MediaId?: string
25
- ThumbMediaId?: string
26
- Format?: string
27
- Recognition?: string
28
- Location_X?: string
29
- Location_Y?: string
30
- Scale?: string
31
- Label?: string
32
- Title?: string
33
- Description?: string
34
- Url?: string
35
- Event?: string
36
- EventKey?: string
37
- AgentID?: string
38
- [key: string]: unknown
39
- }
40
-
41
- export interface AccessToken {
42
- access_token: string
43
- expires_in: number
44
- timestamp: number
45
- }
46
-
47
- export interface WecomApiResponse {
48
- errcode: number
49
- errmsg?: string
50
- [key: string]: unknown
51
- }