@actagent/feishu 2026.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. package/README.md +11 -0
  2. package/actagent.plugin.json +224 -0
  3. package/api.ts +33 -0
  4. package/channel-entry.ts +21 -0
  5. package/channel-plugin-api.ts +2 -0
  6. package/contract-api.ts +17 -0
  7. package/index.ts +83 -0
  8. package/legacy-state-migrations-api.ts +2 -0
  9. package/npm-shrinkwrap.json +539 -0
  10. package/package.json +64 -0
  11. package/runtime-api.ts +58 -0
  12. package/runtime-setter-api.ts +3 -0
  13. package/secret-contract-api.ts +6 -0
  14. package/security-contract-api.ts +2 -0
  15. package/session-key-api.ts +2 -0
  16. package/setup-api.ts +4 -0
  17. package/setup-entry.test.ts +33 -0
  18. package/setup-entry.ts +25 -0
  19. package/skills/feishu-doc/SKILL.md +211 -0
  20. package/skills/feishu-doc/references/block-types.md +103 -0
  21. package/skills/feishu-drive/SKILL.md +97 -0
  22. package/skills/feishu-perm/SKILL.md +119 -0
  23. package/skills/feishu-wiki/SKILL.md +113 -0
  24. package/src/accounts.test.ts +481 -0
  25. package/src/accounts.ts +380 -0
  26. package/src/agent-config.ts +22 -0
  27. package/src/app-registration.test.ts +62 -0
  28. package/src/app-registration.ts +355 -0
  29. package/src/approval-auth.test.ts +25 -0
  30. package/src/approval-auth.ts +26 -0
  31. package/src/async.test.ts +68 -0
  32. package/src/async.ts +109 -0
  33. package/src/audio-preflight.runtime.ts +10 -0
  34. package/src/bitable.test.ts +174 -0
  35. package/src/bitable.ts +781 -0
  36. package/src/bot-content.ts +488 -0
  37. package/src/bot-group-name.test.ts +148 -0
  38. package/src/bot-runtime-api.ts +13 -0
  39. package/src/bot-sender-name.test.ts +68 -0
  40. package/src/bot-sender-name.ts +137 -0
  41. package/src/bot.broadcast.test.ts +643 -0
  42. package/src/bot.card-action.test.ts +647 -0
  43. package/src/bot.checkBotMentioned.test.ts +266 -0
  44. package/src/bot.helpers.test.ts +136 -0
  45. package/src/bot.stripBotMention.test.ts +127 -0
  46. package/src/bot.test.ts +3817 -0
  47. package/src/bot.ts +1788 -0
  48. package/src/card-action.ts +515 -0
  49. package/src/card-interaction.test.ts +132 -0
  50. package/src/card-interaction.ts +160 -0
  51. package/src/card-test-helpers.ts +55 -0
  52. package/src/card-ux-approval.ts +66 -0
  53. package/src/card-ux-launcher.test.ts +126 -0
  54. package/src/card-ux-launcher.ts +136 -0
  55. package/src/card-ux-shared.ts +34 -0
  56. package/src/channel-runtime-api.ts +17 -0
  57. package/src/channel.runtime.ts +48 -0
  58. package/src/channel.test.ts +1337 -0
  59. package/src/channel.ts +1401 -0
  60. package/src/chat-schema.ts +30 -0
  61. package/src/chat.test.ts +295 -0
  62. package/src/chat.ts +198 -0
  63. package/src/client-timeout.ts +44 -0
  64. package/src/client.test.ts +463 -0
  65. package/src/client.ts +263 -0
  66. package/src/comment-dispatcher-runtime-api.ts +7 -0
  67. package/src/comment-dispatcher.test.ts +186 -0
  68. package/src/comment-dispatcher.ts +108 -0
  69. package/src/comment-handler-runtime-api.ts +4 -0
  70. package/src/comment-handler.test.ts +588 -0
  71. package/src/comment-handler.ts +304 -0
  72. package/src/comment-reaction.test.ts +139 -0
  73. package/src/comment-reaction.ts +260 -0
  74. package/src/comment-shared.test.ts +184 -0
  75. package/src/comment-shared.ts +405 -0
  76. package/src/comment-target.ts +45 -0
  77. package/src/config-schema.test.ts +327 -0
  78. package/src/config-schema.ts +338 -0
  79. package/src/conversation-id.test.ts +19 -0
  80. package/src/conversation-id.ts +199 -0
  81. package/src/dedup-migrations.test.ts +90 -0
  82. package/src/dedup-migrations.ts +103 -0
  83. package/src/dedup.test.ts +95 -0
  84. package/src/dedup.ts +304 -0
  85. package/src/dedupe-key.ts +68 -0
  86. package/src/directory.static.ts +62 -0
  87. package/src/directory.test.ts +142 -0
  88. package/src/directory.ts +125 -0
  89. package/src/doc-schema.ts +183 -0
  90. package/src/doctor.test.ts +382 -0
  91. package/src/doctor.ts +876 -0
  92. package/src/docx-batch-insert.test.ts +117 -0
  93. package/src/docx-batch-insert.ts +223 -0
  94. package/src/docx-color-text.ts +154 -0
  95. package/src/docx-table-ops.test.ts +54 -0
  96. package/src/docx-table-ops.ts +316 -0
  97. package/src/docx-types.ts +39 -0
  98. package/src/docx.account-selection.test.ts +96 -0
  99. package/src/docx.test.ts +706 -0
  100. package/src/docx.ts +1598 -0
  101. package/src/drive-schema.ts +93 -0
  102. package/src/drive.test.ts +1240 -0
  103. package/src/drive.ts +830 -0
  104. package/src/dynamic-agent.test.ts +156 -0
  105. package/src/dynamic-agent.ts +144 -0
  106. package/src/event-types.ts +46 -0
  107. package/src/external-keys.test.ts +21 -0
  108. package/src/external-keys.ts +20 -0
  109. package/src/lifecycle.test-support.ts +223 -0
  110. package/src/media.test.ts +956 -0
  111. package/src/media.ts +1106 -0
  112. package/src/mention-target.types.ts +6 -0
  113. package/src/mention.ts +115 -0
  114. package/src/message-action-contract.ts +14 -0
  115. package/src/monitor-state-runtime-api.ts +8 -0
  116. package/src/monitor-transport-runtime-api.ts +11 -0
  117. package/src/monitor.account.ts +501 -0
  118. package/src/monitor.acp-init-failure.lifecycle.test-support.ts +215 -0
  119. package/src/monitor.bot-identity.ts +87 -0
  120. package/src/monitor.bot-menu-handler.ts +164 -0
  121. package/src/monitor.bot-menu.lifecycle.test-support.ts +221 -0
  122. package/src/monitor.bot-menu.test.ts +200 -0
  123. package/src/monitor.broadcast.reply-once.lifecycle.test-support.ts +265 -0
  124. package/src/monitor.card-action.lifecycle.test-support.ts +418 -0
  125. package/src/monitor.cleanup.test.ts +384 -0
  126. package/src/monitor.comment-notice-handler.ts +106 -0
  127. package/src/monitor.comment.test.ts +968 -0
  128. package/src/monitor.comment.ts +1386 -0
  129. package/src/monitor.lifecycle.test.ts +5 -0
  130. package/src/monitor.message-handler.ts +346 -0
  131. package/src/monitor.reaction.test.ts +770 -0
  132. package/src/monitor.startup.test.ts +232 -0
  133. package/src/monitor.startup.ts +76 -0
  134. package/src/monitor.state.defaults.test.ts +47 -0
  135. package/src/monitor.state.ts +171 -0
  136. package/src/monitor.synthetic-error.ts +19 -0
  137. package/src/monitor.test-mocks.ts +47 -0
  138. package/src/monitor.transport.ts +451 -0
  139. package/src/monitor.ts +104 -0
  140. package/src/monitor.webhook-e2e.test.ts +284 -0
  141. package/src/monitor.webhook-security.test.ts +394 -0
  142. package/src/monitor.webhook.test-helpers.ts +138 -0
  143. package/src/outbound-runtime-api.ts +2 -0
  144. package/src/outbound.test.ts +1255 -0
  145. package/src/outbound.ts +742 -0
  146. package/src/perm-schema.ts +53 -0
  147. package/src/perm.ts +171 -0
  148. package/src/pins.ts +109 -0
  149. package/src/policy.test.ts +224 -0
  150. package/src/policy.ts +322 -0
  151. package/src/post.test.ts +106 -0
  152. package/src/post.ts +276 -0
  153. package/src/presentation-card.ts +204 -0
  154. package/src/probe.test.ts +310 -0
  155. package/src/probe.ts +181 -0
  156. package/src/processing-claims.ts +60 -0
  157. package/src/qr-terminal.ts +2 -0
  158. package/src/reactions.ts +124 -0
  159. package/src/reasoning-preview.test.ts +114 -0
  160. package/src/reasoning-preview.ts +29 -0
  161. package/src/reply-dispatcher-runtime-api.ts +8 -0
  162. package/src/reply-dispatcher.test.ts +2009 -0
  163. package/src/reply-dispatcher.ts +865 -0
  164. package/src/runtime.ts +10 -0
  165. package/src/secret-contract.ts +146 -0
  166. package/src/secret-input.ts +2 -0
  167. package/src/security-audit-shared.ts +70 -0
  168. package/src/security-audit.test.ts +60 -0
  169. package/src/security-audit.ts +2 -0
  170. package/src/send-result.ts +81 -0
  171. package/src/send-target.test.ts +87 -0
  172. package/src/send-target.ts +36 -0
  173. package/src/send.reply-fallback.test.ts +418 -0
  174. package/src/send.test.ts +661 -0
  175. package/src/send.ts +860 -0
  176. package/src/sequential-key.test.ts +73 -0
  177. package/src/sequential-key.ts +29 -0
  178. package/src/sequential-queue.test.ts +184 -0
  179. package/src/sequential-queue.ts +90 -0
  180. package/src/session-conversation.ts +42 -0
  181. package/src/session-route.ts +49 -0
  182. package/src/setup-core.ts +52 -0
  183. package/src/setup-surface.test.ts +485 -0
  184. package/src/setup-surface.ts +620 -0
  185. package/src/streaming-card.test.ts +549 -0
  186. package/src/streaming-card.ts +611 -0
  187. package/src/subagent-hooks.test.ts +632 -0
  188. package/src/subagent-hooks.ts +414 -0
  189. package/src/targets.ts +98 -0
  190. package/src/test-support/lifecycle-test-support.ts +459 -0
  191. package/src/thread-bindings.test.ts +181 -0
  192. package/src/thread-bindings.ts +332 -0
  193. package/src/tool-account-routing.test.ts +419 -0
  194. package/src/tool-account.test.ts +45 -0
  195. package/src/tool-account.ts +98 -0
  196. package/src/tool-factory-test-harness.ts +83 -0
  197. package/src/tool-result.test.ts +33 -0
  198. package/src/tool-result.ts +17 -0
  199. package/src/tools-config.test.ts +52 -0
  200. package/src/tools-config.ts +29 -0
  201. package/src/types.ts +111 -0
  202. package/src/typing.test.ts +145 -0
  203. package/src/typing.ts +215 -0
  204. package/src/wiki-schema.ts +70 -0
  205. package/src/wiki.ts +271 -0
  206. package/subagent-hooks-api.ts +22 -0
  207. package/tsconfig.json +16 -0
@@ -0,0 +1,539 @@
1
+ {
2
+ "name": "@actagent/feishu",
3
+ "version": "2026.6.2",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "@actagent/feishu",
9
+ "version": "2026.6.2",
10
+ "dependencies": {
11
+ "@larksuiteoapi/node-sdk": "1.66.0",
12
+ "typebox": "1.1.39",
13
+ "zod": "4.4.3"
14
+ },
15
+ "peerDependencies": {
16
+ "actagent": ">=2026.6.2"
17
+ },
18
+ "peerDependenciesMeta": {
19
+ "actagent": {
20
+ "optional": true
21
+ }
22
+ }
23
+ },
24
+ "node_modules/@larksuiteoapi/node-sdk": {
25
+ "version": "1.66.0",
26
+ "resolved": "https://registry.npmjs.org/@larksuiteoapi/node-sdk/-/node-sdk-1.66.0.tgz",
27
+ "integrity": "sha512-ueKbbdvmVGVie3KvKbvHZqvDC/gg3M0rRDeyQanQWK+i2bQgiiTpIfpqVWvxuTgprV31yqV7HPMjN6KegWSCfA==",
28
+ "license": "MIT",
29
+ "dependencies": {
30
+ "axios": "~1.13.3",
31
+ "lodash.identity": "^3.0.0",
32
+ "lodash.merge": "^4.6.2",
33
+ "lodash.pickby": "^4.6.0",
34
+ "protobufjs": "^7.2.6",
35
+ "qs": "^6.14.2",
36
+ "ws": "^8.19.0"
37
+ }
38
+ },
39
+ "node_modules/asynckit": {
40
+ "version": "0.4.0",
41
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
42
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
43
+ "license": "MIT"
44
+ },
45
+ "node_modules/axios": {
46
+ "version": "1.16.0",
47
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.16.0.tgz",
48
+ "integrity": "sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w==",
49
+ "license": "MIT",
50
+ "dependencies": {
51
+ "follow-redirects": "^1.16.0",
52
+ "form-data": "^4.0.5",
53
+ "proxy-from-env": "^2.1.0"
54
+ }
55
+ },
56
+ "node_modules/call-bind-apply-helpers": {
57
+ "version": "1.0.2",
58
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
59
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
60
+ "license": "MIT",
61
+ "dependencies": {
62
+ "es-errors": "^1.3.0",
63
+ "function-bind": "^1.1.2"
64
+ },
65
+ "engines": {
66
+ "node": ">= 0.4"
67
+ }
68
+ },
69
+ "node_modules/call-bound": {
70
+ "version": "1.0.4",
71
+ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
72
+ "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
73
+ "license": "MIT",
74
+ "dependencies": {
75
+ "call-bind-apply-helpers": "^1.0.2",
76
+ "get-intrinsic": "^1.3.0"
77
+ },
78
+ "engines": {
79
+ "node": ">= 0.4"
80
+ },
81
+ "funding": {
82
+ "url": "https://github.com/sponsors/ljharb"
83
+ }
84
+ },
85
+ "node_modules/combined-stream": {
86
+ "version": "1.0.8",
87
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
88
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
89
+ "license": "MIT",
90
+ "dependencies": {
91
+ "delayed-stream": "~1.0.0"
92
+ },
93
+ "engines": {
94
+ "node": ">= 0.8"
95
+ }
96
+ },
97
+ "node_modules/delayed-stream": {
98
+ "version": "1.0.0",
99
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
100
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
101
+ "license": "MIT",
102
+ "engines": {
103
+ "node": ">=0.4.0"
104
+ }
105
+ },
106
+ "node_modules/dunder-proto": {
107
+ "version": "1.0.1",
108
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
109
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
110
+ "license": "MIT",
111
+ "dependencies": {
112
+ "call-bind-apply-helpers": "^1.0.1",
113
+ "es-errors": "^1.3.0",
114
+ "gopd": "^1.2.0"
115
+ },
116
+ "engines": {
117
+ "node": ">= 0.4"
118
+ }
119
+ },
120
+ "node_modules/es-define-property": {
121
+ "version": "1.0.1",
122
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
123
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
124
+ "license": "MIT",
125
+ "engines": {
126
+ "node": ">= 0.4"
127
+ }
128
+ },
129
+ "node_modules/es-errors": {
130
+ "version": "1.3.0",
131
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
132
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
133
+ "license": "MIT",
134
+ "engines": {
135
+ "node": ">= 0.4"
136
+ }
137
+ },
138
+ "node_modules/es-object-atoms": {
139
+ "version": "1.1.2",
140
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz",
141
+ "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==",
142
+ "license": "MIT",
143
+ "dependencies": {
144
+ "es-errors": "^1.3.0"
145
+ },
146
+ "engines": {
147
+ "node": ">= 0.4"
148
+ }
149
+ },
150
+ "node_modules/es-set-tostringtag": {
151
+ "version": "2.1.0",
152
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
153
+ "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
154
+ "license": "MIT",
155
+ "dependencies": {
156
+ "es-errors": "^1.3.0",
157
+ "get-intrinsic": "^1.2.6",
158
+ "has-tostringtag": "^1.0.2",
159
+ "hasown": "^2.0.2"
160
+ },
161
+ "engines": {
162
+ "node": ">= 0.4"
163
+ }
164
+ },
165
+ "node_modules/follow-redirects": {
166
+ "version": "1.16.0",
167
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz",
168
+ "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==",
169
+ "funding": [
170
+ {
171
+ "type": "individual",
172
+ "url": "https://github.com/sponsors/RubenVerborgh"
173
+ }
174
+ ],
175
+ "license": "MIT",
176
+ "engines": {
177
+ "node": ">=4.0"
178
+ },
179
+ "peerDependenciesMeta": {
180
+ "debug": {
181
+ "optional": true
182
+ }
183
+ }
184
+ },
185
+ "node_modules/form-data": {
186
+ "version": "2.5.4",
187
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.4.tgz",
188
+ "integrity": "sha512-Y/3MmRiR8Nd+0CUtrbvcKtKzLWiUfpQ7DFVggH8PwmGt/0r7RSy32GuP4hpCJlQNEBusisSx1DLtD8uD386HJQ==",
189
+ "deprecated": "This version has an incorrect dependency; please use v2.5.5",
190
+ "license": "MIT",
191
+ "dependencies": {
192
+ "asynckit": "^0.4.0",
193
+ "combined-stream": "^1.0.8",
194
+ "es-set-tostringtag": "^2.1.0",
195
+ "has-own": "^1.0.1",
196
+ "mime-types": "^2.1.35",
197
+ "safe-buffer": "^5.2.1"
198
+ },
199
+ "engines": {
200
+ "node": ">= 0.12"
201
+ }
202
+ },
203
+ "node_modules/function-bind": {
204
+ "version": "1.1.2",
205
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
206
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
207
+ "license": "MIT",
208
+ "funding": {
209
+ "url": "https://github.com/sponsors/ljharb"
210
+ }
211
+ },
212
+ "node_modules/get-intrinsic": {
213
+ "version": "1.3.0",
214
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
215
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
216
+ "license": "MIT",
217
+ "dependencies": {
218
+ "call-bind-apply-helpers": "^1.0.2",
219
+ "es-define-property": "^1.0.1",
220
+ "es-errors": "^1.3.0",
221
+ "es-object-atoms": "^1.1.1",
222
+ "function-bind": "^1.1.2",
223
+ "get-proto": "^1.0.1",
224
+ "gopd": "^1.2.0",
225
+ "has-symbols": "^1.1.0",
226
+ "hasown": "^2.0.2",
227
+ "math-intrinsics": "^1.1.0"
228
+ },
229
+ "engines": {
230
+ "node": ">= 0.4"
231
+ },
232
+ "funding": {
233
+ "url": "https://github.com/sponsors/ljharb"
234
+ }
235
+ },
236
+ "node_modules/get-proto": {
237
+ "version": "1.0.1",
238
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
239
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
240
+ "license": "MIT",
241
+ "dependencies": {
242
+ "dunder-proto": "^1.0.1",
243
+ "es-object-atoms": "^1.0.0"
244
+ },
245
+ "engines": {
246
+ "node": ">= 0.4"
247
+ }
248
+ },
249
+ "node_modules/gopd": {
250
+ "version": "1.2.0",
251
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
252
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
253
+ "license": "MIT",
254
+ "engines": {
255
+ "node": ">= 0.4"
256
+ },
257
+ "funding": {
258
+ "url": "https://github.com/sponsors/ljharb"
259
+ }
260
+ },
261
+ "node_modules/has-own": {
262
+ "version": "1.0.1",
263
+ "resolved": "https://registry.npmjs.org/has-own/-/has-own-1.0.1.tgz",
264
+ "integrity": "sha512-RDKhzgQTQfMaLvIFhjahU+2gGnRBK6dYOd5Gd9BzkmnBneOCRYjRC003RIMrdAbH52+l+CnMS4bBCXGer8tEhg==",
265
+ "deprecated": "This project is not maintained. Use Object.hasOwn() instead.",
266
+ "license": "MIT"
267
+ },
268
+ "node_modules/has-symbols": {
269
+ "version": "1.1.0",
270
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
271
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
272
+ "license": "MIT",
273
+ "engines": {
274
+ "node": ">= 0.4"
275
+ },
276
+ "funding": {
277
+ "url": "https://github.com/sponsors/ljharb"
278
+ }
279
+ },
280
+ "node_modules/has-tostringtag": {
281
+ "version": "1.0.2",
282
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
283
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
284
+ "license": "MIT",
285
+ "dependencies": {
286
+ "has-symbols": "^1.0.3"
287
+ },
288
+ "engines": {
289
+ "node": ">= 0.4"
290
+ },
291
+ "funding": {
292
+ "url": "https://github.com/sponsors/ljharb"
293
+ }
294
+ },
295
+ "node_modules/hasown": {
296
+ "version": "2.0.4",
297
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz",
298
+ "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==",
299
+ "license": "MIT",
300
+ "dependencies": {
301
+ "function-bind": "^1.1.2"
302
+ },
303
+ "engines": {
304
+ "node": ">= 0.4"
305
+ }
306
+ },
307
+ "node_modules/lodash.identity": {
308
+ "version": "3.0.0",
309
+ "resolved": "https://registry.npmjs.org/lodash.identity/-/lodash.identity-3.0.0.tgz",
310
+ "integrity": "sha512-AupTIzdLQxJS5wIYUQlgGyk2XRTfGXA+MCghDHqZk0pzUNYvd3EESS6dkChNauNYVIutcb0dfHw1ri9Q1yPV8Q==",
311
+ "license": "MIT"
312
+ },
313
+ "node_modules/lodash.merge": {
314
+ "version": "4.6.2",
315
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
316
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
317
+ "license": "MIT"
318
+ },
319
+ "node_modules/lodash.pickby": {
320
+ "version": "4.6.0",
321
+ "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz",
322
+ "integrity": "sha512-AZV+GsS/6ckvPOVQPXSiFFacKvKB4kOQu6ynt9wz0F3LO4R9Ij4K1ddYsIytDpSgLz88JHd9P+oaLeej5/Sl7Q==",
323
+ "license": "MIT"
324
+ },
325
+ "node_modules/long": {
326
+ "version": "5.3.2",
327
+ "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz",
328
+ "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==",
329
+ "license": "Apache-2.0"
330
+ },
331
+ "node_modules/math-intrinsics": {
332
+ "version": "1.1.0",
333
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
334
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
335
+ "license": "MIT",
336
+ "engines": {
337
+ "node": ">= 0.4"
338
+ }
339
+ },
340
+ "node_modules/mime-db": {
341
+ "version": "1.52.0",
342
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
343
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
344
+ "license": "MIT",
345
+ "engines": {
346
+ "node": ">= 0.6"
347
+ }
348
+ },
349
+ "node_modules/mime-types": {
350
+ "version": "2.1.35",
351
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
352
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
353
+ "license": "MIT",
354
+ "dependencies": {
355
+ "mime-db": "1.52.0"
356
+ },
357
+ "engines": {
358
+ "node": ">= 0.6"
359
+ }
360
+ },
361
+ "node_modules/object-inspect": {
362
+ "version": "1.13.4",
363
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
364
+ "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
365
+ "license": "MIT",
366
+ "engines": {
367
+ "node": ">= 0.4"
368
+ },
369
+ "funding": {
370
+ "url": "https://github.com/sponsors/ljharb"
371
+ }
372
+ },
373
+ "node_modules/protobufjs": {
374
+ "version": "8.4.0",
375
+ "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-8.4.0.tgz",
376
+ "integrity": "sha512-iriNhQ57SYA5Jbdi+41AyPdx6jPPkFO7DODzkOBmqFhgYn/JzX2HxgxYPY18eQAs3CP/AWqtPvkWn8rclRAxdQ==",
377
+ "hasInstallScript": true,
378
+ "license": "BSD-3-Clause",
379
+ "dependencies": {
380
+ "long": "^5.3.2"
381
+ },
382
+ "engines": {
383
+ "node": ">=12.0.0"
384
+ }
385
+ },
386
+ "node_modules/proxy-from-env": {
387
+ "version": "2.1.0",
388
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz",
389
+ "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==",
390
+ "license": "MIT",
391
+ "engines": {
392
+ "node": ">=10"
393
+ }
394
+ },
395
+ "node_modules/qs": {
396
+ "version": "6.15.2",
397
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.2.tgz",
398
+ "integrity": "sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==",
399
+ "license": "BSD-3-Clause",
400
+ "dependencies": {
401
+ "side-channel": "^1.1.0"
402
+ },
403
+ "engines": {
404
+ "node": ">=0.6"
405
+ },
406
+ "funding": {
407
+ "url": "https://github.com/sponsors/ljharb"
408
+ }
409
+ },
410
+ "node_modules/safe-buffer": {
411
+ "version": "5.2.1",
412
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
413
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
414
+ "funding": [
415
+ {
416
+ "type": "github",
417
+ "url": "https://github.com/sponsors/feross"
418
+ },
419
+ {
420
+ "type": "patreon",
421
+ "url": "https://www.patreon.com/feross"
422
+ },
423
+ {
424
+ "type": "consulting",
425
+ "url": "https://feross.org/support"
426
+ }
427
+ ],
428
+ "license": "MIT"
429
+ },
430
+ "node_modules/side-channel": {
431
+ "version": "1.1.0",
432
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
433
+ "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
434
+ "license": "MIT",
435
+ "dependencies": {
436
+ "es-errors": "^1.3.0",
437
+ "object-inspect": "^1.13.3",
438
+ "side-channel-list": "^1.0.0",
439
+ "side-channel-map": "^1.0.1",
440
+ "side-channel-weakmap": "^1.0.2"
441
+ },
442
+ "engines": {
443
+ "node": ">= 0.4"
444
+ },
445
+ "funding": {
446
+ "url": "https://github.com/sponsors/ljharb"
447
+ }
448
+ },
449
+ "node_modules/side-channel-list": {
450
+ "version": "1.0.1",
451
+ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz",
452
+ "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==",
453
+ "license": "MIT",
454
+ "dependencies": {
455
+ "es-errors": "^1.3.0",
456
+ "object-inspect": "^1.13.4"
457
+ },
458
+ "engines": {
459
+ "node": ">= 0.4"
460
+ },
461
+ "funding": {
462
+ "url": "https://github.com/sponsors/ljharb"
463
+ }
464
+ },
465
+ "node_modules/side-channel-map": {
466
+ "version": "1.0.1",
467
+ "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
468
+ "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
469
+ "license": "MIT",
470
+ "dependencies": {
471
+ "call-bound": "^1.0.2",
472
+ "es-errors": "^1.3.0",
473
+ "get-intrinsic": "^1.2.5",
474
+ "object-inspect": "^1.13.3"
475
+ },
476
+ "engines": {
477
+ "node": ">= 0.4"
478
+ },
479
+ "funding": {
480
+ "url": "https://github.com/sponsors/ljharb"
481
+ }
482
+ },
483
+ "node_modules/side-channel-weakmap": {
484
+ "version": "1.0.2",
485
+ "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
486
+ "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
487
+ "license": "MIT",
488
+ "dependencies": {
489
+ "call-bound": "^1.0.2",
490
+ "es-errors": "^1.3.0",
491
+ "get-intrinsic": "^1.2.5",
492
+ "object-inspect": "^1.13.3",
493
+ "side-channel-map": "^1.0.1"
494
+ },
495
+ "engines": {
496
+ "node": ">= 0.4"
497
+ },
498
+ "funding": {
499
+ "url": "https://github.com/sponsors/ljharb"
500
+ }
501
+ },
502
+ "node_modules/typebox": {
503
+ "version": "1.1.39",
504
+ "resolved": "https://registry.npmjs.org/typebox/-/typebox-1.1.39.tgz",
505
+ "integrity": "sha512-vj0afVtOfLQvv0GR0VxVagYxsXN64btL7Z9XoaG0ZggH3mruMMkOO6hXdgMsjCY3shZgEvooAWVeznQVs5c43w==",
506
+ "license": "MIT"
507
+ },
508
+ "node_modules/ws": {
509
+ "version": "8.21.0",
510
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz",
511
+ "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==",
512
+ "license": "MIT",
513
+ "engines": {
514
+ "node": ">=10.0.0"
515
+ },
516
+ "peerDependencies": {
517
+ "bufferutil": "^4.0.1",
518
+ "utf-8-validate": ">=5.0.2"
519
+ },
520
+ "peerDependenciesMeta": {
521
+ "bufferutil": {
522
+ "optional": true
523
+ },
524
+ "utf-8-validate": {
525
+ "optional": true
526
+ }
527
+ }
528
+ },
529
+ "node_modules/zod": {
530
+ "version": "4.4.3",
531
+ "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz",
532
+ "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==",
533
+ "license": "MIT",
534
+ "funding": {
535
+ "url": "https://github.com/sponsors/colinhacks"
536
+ }
537
+ }
538
+ }
539
+ }
package/package.json ADDED
@@ -0,0 +1,64 @@
1
+ {
2
+ "name": "@actagent/feishu",
3
+ "version": "2026.6.2",
4
+ "description": "ACTAgent Feishu/Lark channel plugin for chats and workplace tools (community maintained by @m1heng).",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/actagent/actagent"
8
+ },
9
+ "type": "module",
10
+ "dependencies": {
11
+ "@larksuiteoapi/node-sdk": "1.66.0",
12
+ "typebox": "1.1.39",
13
+ "zod": "4.4.3"
14
+ },
15
+ "devDependencies": {
16
+ "@actagent/plugin-sdk": "workspace:*",
17
+ "actagent": "workspace:*"
18
+ },
19
+ "peerDependencies": {
20
+ "actagent": "workspace:*"
21
+ },
22
+ "peerDependenciesMeta": {
23
+ "actagent": {
24
+ "optional": true
25
+ }
26
+ },
27
+ "actagent": {
28
+ "extensions": [
29
+ "./index.ts"
30
+ ],
31
+ "setupEntry": "./setup-entry.ts",
32
+ "setupFeatures": {
33
+ "legacyStateMigrations": true
34
+ },
35
+ "channel": {
36
+ "id": "feishu",
37
+ "label": "Feishu",
38
+ "selectionLabel": "Feishu/Lark (\u98de\u4e66)",
39
+ "docsPath": "/channels/feishu",
40
+ "docsLabel": "feishu",
41
+ "blurb": "\u98de\u4e66/Lark enterprise messaging with doc/wiki/drive tools.",
42
+ "aliases": [
43
+ "lark"
44
+ ],
45
+ "order": 35,
46
+ "quickstartAllowFrom": true
47
+ },
48
+ "install": {
49
+ "npmSpec": "@actagent/feishu",
50
+ "defaultChoice": "npm",
51
+ "minHostVersion": ">=2026.5.29"
52
+ },
53
+ "compat": {
54
+ "pluginApi": ">=2026.6.2"
55
+ },
56
+ "build": {
57
+ "actagentVersion": "2026.6.2"
58
+ },
59
+ "release": {
60
+ "publishToACTAgentHub": true,
61
+ "publishToNpm": true
62
+ }
63
+ }
64
+ }
package/runtime-api.ts ADDED
@@ -0,0 +1,58 @@
1
+ // Private runtime barrel for the bundled Feishu extension.
2
+ // Keep this barrel thin and generic-only.
3
+
4
+ export type {
5
+ AllowlistMatch,
6
+ AnyAgentTool,
7
+ BaseProbeResult,
8
+ ChannelGroupContext,
9
+ ChannelMessageActionName,
10
+ ChannelMeta,
11
+ ChannelOutboundAdapter,
12
+ ChannelPlugin,
13
+ HistoryEntry,
14
+ ACTAgentConfig,
15
+ ACTAgentPluginApi,
16
+ OutboundIdentity,
17
+ PluginRuntime,
18
+ ReplyPayload,
19
+ } from "actagent/plugin-sdk/core";
20
+ export type { ACTAgentConfig as ACTAgentBotConfig } from "actagent/plugin-sdk/core";
21
+ export type RuntimeEnv = {
22
+ log: (...args: unknown[]) => void;
23
+ error: (...args: unknown[]) => void;
24
+ exit: (code: number) => void;
25
+ };
26
+ export type { GroupToolPolicyConfig } from "actagent/plugin-sdk/config-contracts";
27
+ export {
28
+ DEFAULT_ACCOUNT_ID,
29
+ buildChannelConfigSchema,
30
+ createActionGate,
31
+ createDedupeCache,
32
+ } from "actagent/plugin-sdk/core";
33
+ export {
34
+ PAIRING_APPROVED_MESSAGE,
35
+ buildProbeChannelStatusSummary,
36
+ createDefaultChannelRuntimeState,
37
+ } from "actagent/plugin-sdk/channel-status";
38
+ export { buildAgentMediaPayload } from "actagent/plugin-sdk/agent-media-payload";
39
+ export { createChannelPairingController } from "actagent/plugin-sdk/channel-pairing";
40
+ export { createReplyPrefixContext } from "actagent/plugin-sdk/channel-outbound";
41
+ export {
42
+ evaluateSupplementalContextVisibility,
43
+ filterSupplementalContextItems,
44
+ resolveChannelContextVisibilityMode,
45
+ } from "actagent/plugin-sdk/context-visibility-runtime";
46
+ export {
47
+ loadSessionStore,
48
+ resolveSessionStoreEntry,
49
+ } from "actagent/plugin-sdk/session-store-runtime";
50
+ export { readJsonFileWithFallback } from "actagent/plugin-sdk/json-store";
51
+ export { normalizeAgentId } from "actagent/plugin-sdk/routing";
52
+ export { chunkTextForOutbound } from "actagent/plugin-sdk/text-chunking";
53
+ export {
54
+ isRequestBodyLimitError,
55
+ readRequestBodyWithLimit,
56
+ requestBodyErrorToText,
57
+ } from "actagent/plugin-sdk/webhook-ingress";
58
+ export { setFeishuRuntime } from "./src/runtime.js";
@@ -0,0 +1,3 @@
1
+ // Narrow entry point for setFeishuRuntime. Keep setup/runtime registration
2
+ // from pulling in the broader Feishu runtime-api barrel.
3
+ export { setFeishuRuntime } from "./src/runtime.js";
@@ -0,0 +1,6 @@
1
+ // Feishu API module exposes the plugin public contract.
2
+ export {
3
+ channelSecrets,
4
+ collectRuntimeConfigAssignments,
5
+ secretTargetRegistryEntries,
6
+ } from "./src/secret-contract.js";
@@ -0,0 +1,2 @@
1
+ // Feishu API module exposes the plugin public contract.
2
+ export { collectFeishuSecurityAuditFindings } from "./src/security-audit-shared.js";
@@ -0,0 +1,2 @@
1
+ // Feishu API module exposes the plugin public contract.
2
+ export { resolveFeishuSessionConversation as resolveSessionConversation } from "./src/session-conversation.js";