@tool-bridge/server 0.21.1 → 0.23.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 (178) hide show
  1. package/dist/admin.js +170 -0
  2. package/dist/airtable-VMQVXLHK.js +790 -0
  3. package/dist/{alt_text_generator_ai-W7O34SNG.js → alt_text_generator_ai-FTWY4RU4.js} +12 -11
  4. package/dist/{amap-VOX4T2AW.js → amap-OK5VBHYC.js} +221 -220
  5. package/dist/anthropic-S67AZFZ3.js +203 -0
  6. package/dist/apify-ZE6MYQI3.js +248 -0
  7. package/dist/brave_search-TG2M2KOD.js +302 -0
  8. package/dist/chunk-2JNAI4OC.js +161 -0
  9. package/dist/{chunk-KMTT3I6D.js → chunk-4XJPN3DY.js} +19392 -26136
  10. package/dist/chunk-5ICRY3VU.js +8432 -0
  11. package/dist/chunk-7CTWGTDU.js +302 -0
  12. package/dist/chunk-BADVCN6K.js +378 -0
  13. package/dist/{chunk-XYBU3WZH.js → chunk-TDAWLMDE.js} +3 -3
  14. package/dist/chunk-U7PTOA3U.js +7320 -0
  15. package/dist/{chunk-E6JCVKW6.js → chunk-VWRUGUSU.js} +3 -3
  16. package/dist/{chunk-ATK45BXV.js → chunk-WJHG6OK7.js} +4 -2
  17. package/dist/circleci-3L3WJVSK.js +389 -0
  18. package/dist/clerk-EZPF2V7T.js +1019 -0
  19. package/dist/cohere-U27DPO64.js +185 -0
  20. package/dist/{confluence-B3EWPZVE.js → confluence-G2KL6ERH.js} +105 -104
  21. package/dist/{convertapi-EUWSQYPF.js → convertapi-L4CLJ2M3.js} +32 -31
  22. package/dist/{currencyapi-KVTIK3GL.js → currencyapi-YPYXG7YY.js} +71 -71
  23. package/dist/deepseek-6HT6WF3M.js +210 -0
  24. package/dist/docker_hub-LPE3PCVB.js +933 -0
  25. package/dist/dropbox-V56ABHTA.js +1305 -0
  26. package/dist/dub-6OKQ7MHT.js +680 -0
  27. package/dist/e2b-JS2U2QFU.js +278 -0
  28. package/dist/exa-DPWVYXSP.js +332 -0
  29. package/dist/{fal_ai-23E7JPNT.js → fal_ai-DK6Y27ZF.js} +81 -80
  30. package/dist/{feishu-7QRIDUV6.js → feishu-K7EGSRF3.js} +528 -572
  31. package/dist/{feishu_custom_bot-TJ4K7QNJ.js → feishu_custom_bot-2JUGFYNG.js} +57 -53
  32. package/dist/figma-FT5I7ITD.js +777 -0
  33. package/dist/firehydrant-EIKLKHX2.js +563 -0
  34. package/dist/{fixer-BWON27UO.js → fixer-U5QXIAKD.js} +34 -33
  35. package/dist/fly-T3JYFZ2M.js +469 -0
  36. package/dist/{front-QCGXYEDJ.js → front-D72MGVOR.js} +104 -104
  37. package/dist/geocodio-BOTD5TI5.js +213 -0
  38. package/dist/ghost-KYP7SZGB.js +338 -0
  39. package/dist/github-AGMZT3VY.js +5421 -0
  40. package/dist/gmail-BLJNJOBG.js +1887 -0
  41. package/dist/googlecalendar-GTHWNCF6.js +2524 -0
  42. package/dist/{googledocs-BUHL4J2H.js → googledocs-6EEDMEBQ.js} +341 -340
  43. package/dist/{grafana-GLU2DWF2.js → grafana-GMW6EKSQ.js} +221 -220
  44. package/dist/graphhopper-6OLGBDGB.js +325 -0
  45. package/dist/index.d.ts +1132 -332
  46. package/dist/index.js +31 -14
  47. package/dist/{ip2proxy-EZ64Y4ZH.js → ip2proxy-4QN42E6T.js} +28 -27
  48. package/dist/ipgeolocation_io-SK4XKDA2.js +315 -0
  49. package/dist/ipqualityscore-6ANBPXKT.js +279 -0
  50. package/dist/{jina_ai-EFBHTBXL.js → jina_ai-IHPSVRM5.js} +23 -23
  51. package/dist/{jira-HQSHAA5K.js → jira-46KKM4LC.js} +118 -117
  52. package/dist/langsmith-JZA345I5.js +593 -0
  53. package/dist/lemlist-43IV7DK6.js +289 -0
  54. package/dist/{linear-K7RYFYAD.js → linear-5LFH7XNL.js} +327 -326
  55. package/dist/logsnag-5RMYAHIL.js +150 -0
  56. package/dist/main.js +57 -280
  57. package/dist/{mattermost-S2BRCWLQ.js → mattermost-XFL6SHGG.js} +59 -58
  58. package/dist/mem0-NYO4DTP6.js +544 -0
  59. package/dist/memos-37MPQOLV.js +744 -0
  60. package/dist/{metabase-MMSEPCOF.js → metabase-KYBKZFMG.js} +90 -89
  61. package/dist/mistral_ai-6PL3K4PM.js +1196 -0
  62. package/dist/{mother_duck-H7PCQNZ2.js → mother_duck-2NH7W5M5.js} +94 -93
  63. package/dist/ngrok-UO6CDYCA.js +356 -0
  64. package/dist/{notes-PFMKRO33.js → notes-I3P32WP4.js} +11 -9
  65. package/dist/notion-BEAJFUOE.js +940 -0
  66. package/dist/open_exchange_rates-CMF62JB4.js +215 -0
  67. package/dist/openai-IHOMKVND.js +800 -0
  68. package/dist/opengraph_io-ZQ2FGLHX.js +362 -0
  69. package/dist/openrouter-HXLW3NR5.js +441 -0
  70. package/dist/outline-ELCP4NEU.js +599 -0
  71. package/dist/paddle-O77LALVN.js +454 -0
  72. package/dist/perplexity-JCU654QV.js +220 -0
  73. package/dist/pinecone-W5W4LRKL.js +571 -0
  74. package/dist/{pipedrive-Y2O7QGFF.js → pipedrive-ITMJLLPZ.js} +99 -98
  75. package/dist/polar-R33XU4L3.js +395 -0
  76. package/dist/posthog-JVNTOLTV.js +3464 -0
  77. package/dist/postmark-6SBG7HWV.js +427 -0
  78. package/dist/{prerender-MENYM2TY.js → prerender-GPNKTNFC.js} +31 -30
  79. package/dist/{pubmed-GOXUVVH5.js → pubmed-UP6ZEEIH.js} +239 -238
  80. package/dist/{railway-V2SID4WV.js → railway-KWEWXHTY.js} +118 -117
  81. package/dist/readwise-BLATSMC3.js +470 -0
  82. package/dist/render-QYRVIXII.js +461 -0
  83. package/dist/{replicate-756MXPYX.js → replicate-JYTWH4NF.js} +81 -80
  84. package/dist/{resend-ZKH3BTBI.js → resend-L5N75SZM.js} +20 -16
  85. package/dist/rootly-MHCPEQ26.js +336 -0
  86. package/dist/{scrapfly-NSRHFDIQ.js → scrapfly-PTPGYSJM.js} +62 -61
  87. package/dist/{scrapingbee-OQHLAVEY.js → scrapingbee-JN6UH5PY.js} +56 -56
  88. package/dist/{screenshot_fyi-DVWG3AXC.js → screenshot_fyi-4QRVSV55.js} +16 -16
  89. package/dist/semantic_scholar-LRSWA2GE.js +611 -0
  90. package/dist/{sentry-546MNDJG.js → sentry-2G6PF5W6.js} +208 -207
  91. package/dist/{shodan-C3OON3Z3.js → shodan-WKKPP5C6.js} +62 -61
  92. package/dist/shopify-64YDK5T2.js +610 -0
  93. package/dist/stripe-QAIGGOTF.js +585 -0
  94. package/dist/{supabase-U2SL4D63.js → supabase-WHTGR6ND.js} +245 -244
  95. package/dist/tavily-QIXCDDWO.js +326 -0
  96. package/dist/telegram-E6G7CWI6.js +1767 -0
  97. package/dist/{telnyx-CXQ4EZUX.js → telnyx-ZDVVS7PK.js} +57 -56
  98. package/dist/todoist-DMYF3G7J.js +664 -0
  99. package/dist/trello-HY2RYIRP.js +1080 -0
  100. package/dist/turso-HAQWMGRP.js +416 -0
  101. package/dist/{twilio-4PDBJKWX.js → twilio-MLXYPHJE.js} +70 -69
  102. package/dist/umami-DZHBLPVG.js +389 -0
  103. package/dist/unsplash-GS2OPXKE.js +351 -0
  104. package/dist/{upstash_redis-G4LQBYHA.js → upstash_redis-XMXWTNAJ.js} +51 -50
  105. package/dist/uptimerobot-TF5WRZ4G.js +483 -0
  106. package/dist/v2ex-2BVXAPDF.js +667 -0
  107. package/dist/vercel-YMJGQYJE.js +1076 -0
  108. package/dist/{wolfram_alpha_api-3G4PUJWB.js → wolfram_alpha_api-I56SXWFZ.js} +36 -35
  109. package/dist/wordpress-R7TDFZ2P.js +812 -0
  110. package/dist/workos-HDNHWVMS.js +664 -0
  111. package/dist/zhihu-LX6AGGDS.js +254 -0
  112. package/package.json +18 -9
  113. package/dist/airtable-LLZDFN7M.js +0 -789
  114. package/dist/anthropic-G23NN3X5.js +0 -202
  115. package/dist/apify-Y3SS734K.js +0 -247
  116. package/dist/brave_search-ZC7OAPSZ.js +0 -301
  117. package/dist/chunk-R6P4XAE5.js +0 -248
  118. package/dist/chunk-U7B6DS2O.js +0 -977
  119. package/dist/chunk-UZM2RXZH.js +0 -23436
  120. package/dist/circleci-3BAX5FCG.js +0 -388
  121. package/dist/clerk-6LEM6TNU.js +0 -1019
  122. package/dist/cloudflare_dns-KINYTJUD.js +0 -588
  123. package/dist/cohere-XCJ5AJ6B.js +0 -185
  124. package/dist/deepseek-PC5YGNC5.js +0 -209
  125. package/dist/docker_hub-C3MA5FU6.js +0 -932
  126. package/dist/dropbox-XBV7Z2IR.js +0 -1304
  127. package/dist/dub-LDOFG3HC.js +0 -679
  128. package/dist/e2b-JMCPSVBW.js +0 -277
  129. package/dist/exa-RAK7O7RD.js +0 -331
  130. package/dist/figma-E6IX5DTH.js +0 -773
  131. package/dist/firehydrant-ZBLPQREE.js +0 -562
  132. package/dist/fly-ZH3HFCZJ.js +0 -468
  133. package/dist/geocodio-YGNI7DA4.js +0 -212
  134. package/dist/ghost-EVSGKH2Q.js +0 -337
  135. package/dist/github-MA2BGRCJ.js +0 -5420
  136. package/dist/gmail-E5E6AADE.js +0 -1886
  137. package/dist/googlecalendar-BTLFPXTD.js +0 -2523
  138. package/dist/graphhopper-WSMB3TCD.js +0 -324
  139. package/dist/ipgeolocation_io-AA7HAS22.js +0 -315
  140. package/dist/ipqualityscore-BHJXVTJT.js +0 -277
  141. package/dist/langsmith-5W6SCT6F.js +0 -592
  142. package/dist/lemlist-HJWH6UMK.js +0 -288
  143. package/dist/logsnag-4KFOHL37.js +0 -150
  144. package/dist/mem0-CAW43CIC.js +0 -543
  145. package/dist/memos-TWEGPKFM.js +0 -740
  146. package/dist/mistral_ai-64BGZQHP.js +0 -1195
  147. package/dist/ngrok-GQCUGZKJ.js +0 -356
  148. package/dist/notion-DQWZWP4N.js +0 -936
  149. package/dist/open_exchange_rates-QMMD735E.js +0 -214
  150. package/dist/openai-W6PX32NZ.js +0 -799
  151. package/dist/opengraph_io-HNDBXYNW.js +0 -361
  152. package/dist/openrouter-JJYMEAUL.js +0 -437
  153. package/dist/outline-MCBNQZYY.js +0 -595
  154. package/dist/paddle-D2SKLUDN.js +0 -453
  155. package/dist/perplexity-XIFMKUAE.js +0 -219
  156. package/dist/pinecone-HUFTALV2.js +0 -570
  157. package/dist/polar-TYTOMOSR.js +0 -394
  158. package/dist/posthog-43JAR3VW.js +0 -3463
  159. package/dist/postmark-KL2QJYSG.js +0 -426
  160. package/dist/readwise-CI4GIMMJ.js +0 -469
  161. package/dist/render-SUBJ6YRZ.js +0 -460
  162. package/dist/rootly-CD2LJHPI.js +0 -336
  163. package/dist/semantic_scholar-T4A252KW.js +0 -610
  164. package/dist/shopify-Y2HN2MCQ.js +0 -609
  165. package/dist/stripe-VE3CD3AY.js +0 -584
  166. package/dist/tavily-KCZHK6HE.js +0 -326
  167. package/dist/telegram-3URFBCMY.js +0 -1766
  168. package/dist/todoist-HNPWNYTD.js +0 -663
  169. package/dist/trello-3W2MIXRP.js +0 -1079
  170. package/dist/turso-2EQF7C2Z.js +0 -415
  171. package/dist/umami-5REN7TGP.js +0 -388
  172. package/dist/unsplash-EIXL424F.js +0 -350
  173. package/dist/uptimerobot-KNJ3EYLY.js +0 -482
  174. package/dist/v2ex-RHJ234PZ.js +0 -666
  175. package/dist/vercel-AS6NCIC7.js +0 -1075
  176. package/dist/wordpress-KNDAAUV7.js +0 -811
  177. package/dist/workos-R6UITSJ7.js +0 -663
  178. package/dist/zhihu-AGK4HILK.js +0 -253
@@ -0,0 +1,1080 @@
1
+ import {
2
+ createProviderHttpClient
3
+ } from "./chunk-VWRUGUSU.js";
4
+ import {
5
+ asJsonObject,
6
+ booleanValue,
7
+ compactDefined,
8
+ trimmedText
9
+ } from "./chunk-JXHMDBAY.js";
10
+ import {
11
+ createProviderPlugin,
12
+ requireCredential,
13
+ upstreamError
14
+ } from "./chunk-WJHG6OK7.js";
15
+ import "./chunk-2JNAI4OC.js";
16
+ import "./chunk-BADVCN6K.js";
17
+ import {
18
+ TBError
19
+ } from "./chunk-5ICRY3VU.js";
20
+ import "./chunk-U67V476Y.js";
21
+
22
+ // ../plugins/src/trello/api.ts
23
+ var SERVICE = "trello";
24
+ var API_BASE = "https://api.trello.com/1";
25
+ var http = createProviderHttpClient({ baseUrl: `${API_BASE}/`, service: SERVICE });
26
+ var DEFAULT_MEMBER_FIELDS = ["id", "username", "fullName"];
27
+ var DEFAULT_BOARD_FIELDS = ["name", "desc", "url", "shortUrl", "closed"];
28
+ var DEFAULT_CARD_FIELDS = ["name", "desc", "url", "shortUrl", "closed", "due", "dueComplete", "idBoard", "idList"];
29
+ var AUTH_HINTS = {
30
+ // 不带 scheme:provider HTTP 边界会统一抹掉错误里的完整 URL,避免上游响应携密 URL 泄漏。
31
+ "invalid key": "Trello API key \u65E0\u6548:\u7528 trello.com/power-ups/admin \u4E0A Key \u4E00\u680F\u7684\u503C,\u4E0D\u662F API Secret,\u4E5F\u4E0D\u662F Atlassian API token",
32
+ "invalid token": "Trello API token \u65E0\u6548:\u5728 trello.com/power-ups/admin \u4E0A API Key \u65C1\u8FB9\u7684 Token \u94FE\u63A5\u91CC\u751F\u6210"
33
+ };
34
+ function number(value) {
35
+ return typeof value === "number" ? value : void 0;
36
+ }
37
+ function nullableText(value) {
38
+ return value === null ? null : trimmedText(value);
39
+ }
40
+ function requireInput(value, field) {
41
+ const result = trimmedText(value);
42
+ if (result === void 0) throw new TBError("invalid_argument", `${field} \u662F\u5FC5\u586B\u7684`);
43
+ return result;
44
+ }
45
+ function requireRecord(value, label) {
46
+ const result = asJsonObject(value);
47
+ if (result === void 0) throw new TBError("unavailable", `${label}\u4E0D\u662F\u5BF9\u8C61`, { retryable: true });
48
+ return result;
49
+ }
50
+ function requireArray(value, label) {
51
+ if (!Array.isArray(value)) throw new TBError("unavailable", `${label}\u4E0D\u662F\u6570\u7EC4`, { retryable: true });
52
+ return value;
53
+ }
54
+ function fields(value, fallback) {
55
+ return (value ?? fallback).join(",");
56
+ }
57
+ function position(value) {
58
+ if (value === void 0) return void 0;
59
+ return typeof value === "number" ? value : requireInput(value, "position");
60
+ }
61
+ function idList(value, field) {
62
+ if (value === void 0) return void 0;
63
+ return value.map((item) => requireInput(item, field)).join(",");
64
+ }
65
+ function errorMessage(context) {
66
+ const fallback = context.statusText !== "" ? context.statusText : `HTTP ${context.status}`;
67
+ if (!(context.headers.get("content-type") ?? "").includes("application/json")) {
68
+ if (context.bodyKind === "empty") return fallback;
69
+ if (context.bodyKind === "invalid-json" || context.bodyKind === "text") {
70
+ return trimmedText(context.data) ?? fallback;
71
+ }
72
+ return JSON.stringify(context.data) ?? fallback;
73
+ }
74
+ if (context.bodyKind !== "json") return fallback;
75
+ if (typeof context.data === "string") return trimmedText(context.data) ?? fallback;
76
+ const error = asJsonObject(context.data);
77
+ return trimmedText(error?.message) ?? trimmedText(error?.error) ?? trimmedText(error?.detail) ?? fallback;
78
+ }
79
+ async function request(ctx, input) {
80
+ const query = [
81
+ ["key", requireCredential(ctx, SERVICE, "apiKey")],
82
+ ["token", requireCredential(ctx, SERVICE, "apiToken")],
83
+ ...input.query ?? []
84
+ ];
85
+ const hasBody = input.body !== void 0;
86
+ const { data } = await http.request({
87
+ path: input.path,
88
+ method: input.method ?? "GET",
89
+ query,
90
+ headers: { accept: "application/json" },
91
+ ...hasBody ? { json: input.body } : {},
92
+ invalidJsonMessage: "Trello \u8FD4\u56DE\u4E86\u975E JSON \u54CD\u5E94",
93
+ mapError: (context) => {
94
+ const message = errorMessage(context);
95
+ return upstreamError(context.status, AUTH_HINTS[message] ?? message);
96
+ }
97
+ });
98
+ return data;
99
+ }
100
+ function normalizeMember(payload) {
101
+ const member = requireRecord(payload, "Trello \u6210\u5458");
102
+ return compactDefined({
103
+ id: trimmedText(member.id),
104
+ username: trimmedText(member.username),
105
+ fullName: trimmedText(member.fullName)
106
+ });
107
+ }
108
+ function normalizeBoard(payload) {
109
+ const board = requireRecord(payload, "Trello \u770B\u677F");
110
+ return compactDefined({
111
+ id: trimmedText(board.id),
112
+ name: trimmedText(board.name),
113
+ description: trimmedText(board.desc),
114
+ url: trimmedText(board.url),
115
+ shortUrl: trimmedText(board.shortUrl),
116
+ closed: booleanValue(board.closed)
117
+ });
118
+ }
119
+ function normalizeList(payload) {
120
+ const list = requireRecord(payload, "Trello \u5217\u8868");
121
+ return compactDefined({
122
+ id: trimmedText(list.id),
123
+ boardId: trimmedText(list.idBoard),
124
+ name: trimmedText(list.name),
125
+ closed: booleanValue(list.closed),
126
+ position: number(list.pos)
127
+ });
128
+ }
129
+ function normalizeCard(payload) {
130
+ const card = requireRecord(payload, "Trello \u5361\u7247");
131
+ return compactDefined({
132
+ id: trimmedText(card.id),
133
+ boardId: trimmedText(card.idBoard),
134
+ listId: trimmedText(card.idList),
135
+ name: trimmedText(card.name),
136
+ description: trimmedText(card.desc),
137
+ url: trimmedText(card.url),
138
+ shortUrl: trimmedText(card.shortUrl),
139
+ closed: booleanValue(card.closed),
140
+ due: nullableText(card.due),
141
+ dueComplete: booleanValue(card.dueComplete)
142
+ });
143
+ }
144
+ function normalizeAction(payload) {
145
+ const action = requireRecord(payload, "Trello \u52A8\u4F5C");
146
+ return compactDefined({
147
+ id: trimmedText(action.id),
148
+ type: trimmedText(action.type),
149
+ data: asJsonObject(action.data),
150
+ date: trimmedText(action.date)
151
+ });
152
+ }
153
+ function normalizeCheckItem(payload) {
154
+ const item = requireRecord(payload, "Trello \u68C0\u67E5\u9879");
155
+ return compactDefined({
156
+ id: trimmedText(item.id),
157
+ name: trimmedText(item.name),
158
+ state: trimmedText(item.state),
159
+ position: number(item.pos)
160
+ });
161
+ }
162
+ function normalizeChecklist(payload) {
163
+ const checklist = requireRecord(payload, "Trello \u6E05\u5355");
164
+ const items = checklist.checkItems;
165
+ return compactDefined({
166
+ id: trimmedText(checklist.id),
167
+ cardId: trimmedText(checklist.idCard),
168
+ name: trimmedText(checklist.name),
169
+ checkItems: Array.isArray(items) ? items.map((item) => normalizeCheckItem(item)) : void 0
170
+ });
171
+ }
172
+ function normalizeAttachment(payload) {
173
+ const attachment = requireRecord(payload, "Trello \u9644\u4EF6");
174
+ return compactDefined({
175
+ id: trimmedText(attachment.id),
176
+ name: trimmedText(attachment.name),
177
+ url: trimmedText(attachment.url),
178
+ // bytes 的 null 是"未知大小",与字段缺席不同。
179
+ bytes: attachment.bytes === null ? null : number(attachment.bytes),
180
+ date: trimmedText(attachment.date)
181
+ });
182
+ }
183
+ function cardBody(input, mode) {
184
+ const updates = input;
185
+ const body = compactDefined({
186
+ idList: mode === "create" ? requireInput(input.listId, "listId") : trimmedText(input.listId),
187
+ name: trimmedText(input.name),
188
+ desc: trimmedText(input.description),
189
+ // due 的 null 要原样发下去:那是"清掉截止日期"的表达。
190
+ due: input.due === null ? null : trimmedText(input.due),
191
+ pos: position(input.position),
192
+ idMembers: idList(input.memberIds, "memberIds"),
193
+ idLabels: idList(input.labelIds, "labelIds"),
194
+ closed: updates.closed,
195
+ dueComplete: updates.dueComplete
196
+ });
197
+ if (mode === "update" && Object.keys(body).length === 0) {
198
+ throw new TBError("invalid_argument", "\u66F4\u65B0\u5361\u7247\u81F3\u5C11\u8981\u7ED9\u4E00\u4E2A\u53EF\u6539\u5B57\u6BB5");
199
+ }
200
+ return body;
201
+ }
202
+ async function getMember(input, ctx) {
203
+ const memberId = trimmedText(input.memberId) ?? "me";
204
+ const payload = await request(ctx, {
205
+ path: `/members/${encodeURIComponent(memberId)}`,
206
+ query: [["fields", fields(input.fields, DEFAULT_MEMBER_FIELDS)]]
207
+ });
208
+ return { member: normalizeMember(payload) };
209
+ }
210
+ async function listMemberBoards(input, ctx) {
211
+ const memberId = trimmedText(input.memberId) ?? "me";
212
+ const payload = await request(ctx, {
213
+ path: `/members/${encodeURIComponent(memberId)}/boards`,
214
+ query: [
215
+ ["fields", fields(input.fields, DEFAULT_BOARD_FIELDS)],
216
+ ["filter", input.filter]
217
+ ]
218
+ });
219
+ return { boards: requireArray(payload, "Trello \u770B\u677F\u5217\u8868").map((board) => normalizeBoard(board)) };
220
+ }
221
+ async function getBoard(input, ctx) {
222
+ const payload = await request(ctx, {
223
+ path: `/boards/${encodeURIComponent(requireInput(input.boardId, "boardId"))}`,
224
+ query: [["fields", fields(input.fields, DEFAULT_BOARD_FIELDS)]]
225
+ });
226
+ return { board: normalizeBoard(payload) };
227
+ }
228
+ async function createBoard(input, ctx) {
229
+ const payload = await request(ctx, {
230
+ method: "POST",
231
+ path: "/boards",
232
+ body: compactDefined({
233
+ name: requireInput(input.name, "name"),
234
+ desc: trimmedText(input.description),
235
+ defaultLists: input.defaultLists,
236
+ // 可见性在 Trello 的建板接口里叫 prefs_permissionLevel,不是 permissionLevel。
237
+ prefs_permissionLevel: input.permissionLevel
238
+ })
239
+ });
240
+ return { board: normalizeBoard(payload) };
241
+ }
242
+ async function listBoardLists(input, ctx) {
243
+ const payload = await request(ctx, {
244
+ path: `/boards/${encodeURIComponent(requireInput(input.boardId, "boardId"))}/lists`,
245
+ query: [["filter", input.filter]]
246
+ });
247
+ return { lists: requireArray(payload, "Trello \u5217\u8868\u96C6\u5408").map((list) => normalizeList(list)) };
248
+ }
249
+ async function createList(input, ctx) {
250
+ const payload = await request(ctx, {
251
+ method: "POST",
252
+ path: "/lists",
253
+ body: compactDefined({
254
+ idBoard: requireInput(input.boardId, "boardId"),
255
+ name: requireInput(input.name, "name"),
256
+ pos: position(input.position)
257
+ })
258
+ });
259
+ return { list: normalizeList(payload) };
260
+ }
261
+ async function updateList(input, ctx) {
262
+ const body = compactDefined({
263
+ name: trimmedText(input.name),
264
+ pos: position(input.position)
265
+ });
266
+ if (Object.keys(body).length === 0) {
267
+ throw new TBError("invalid_argument", "\u66F4\u65B0\u5217\u8868\u81F3\u5C11\u8981\u7ED9\u4E00\u4E2A\u53EF\u6539\u5B57\u6BB5");
268
+ }
269
+ const payload = await request(ctx, {
270
+ method: "PUT",
271
+ path: `/lists/${encodeURIComponent(requireInput(input.listId, "listId"))}`,
272
+ body
273
+ });
274
+ return { list: normalizeList(payload) };
275
+ }
276
+ async function archiveList(input, ctx) {
277
+ const payload = await request(ctx, {
278
+ method: "PUT",
279
+ path: `/lists/${encodeURIComponent(requireInput(input.listId, "listId"))}`,
280
+ body: { closed: true }
281
+ });
282
+ return { list: normalizeList(payload) };
283
+ }
284
+ async function listBoardCards(input, ctx) {
285
+ const boardId = requireInput(input.boardId, "boardId");
286
+ const filter = input.filter ?? "visible";
287
+ const payload = await request(ctx, {
288
+ path: `/boards/${encodeURIComponent(boardId)}/cards/${encodeURIComponent(filter)}`,
289
+ query: [["fields", fields(input.fields, DEFAULT_CARD_FIELDS)]]
290
+ });
291
+ return { cards: requireArray(payload, "Trello \u5361\u7247\u5217\u8868").map((card) => normalizeCard(card)) };
292
+ }
293
+ async function listBoardMembers(input, ctx) {
294
+ const payload = await request(ctx, {
295
+ path: `/boards/${encodeURIComponent(requireInput(input.boardId, "boardId"))}/members`,
296
+ query: [["fields", fields(input.fields, DEFAULT_MEMBER_FIELDS)]]
297
+ });
298
+ return { members: requireArray(payload, "Trello \u6210\u5458\u5217\u8868").map((member) => normalizeMember(member)) };
299
+ }
300
+ async function listBoardLabels(input, ctx) {
301
+ const payload = await request(ctx, {
302
+ path: `/boards/${encodeURIComponent(requireInput(input.boardId, "boardId"))}/labels`
303
+ });
304
+ return { labels: requireArray(payload, "Trello \u6807\u7B7E\u5217\u8868").map((label) => requireRecord(label, "Trello \u6807\u7B7E")) };
305
+ }
306
+ async function getCard(input, ctx) {
307
+ const payload = await request(ctx, {
308
+ path: `/cards/${encodeURIComponent(requireInput(input.cardId, "cardId"))}`,
309
+ query: [["fields", fields(input.fields, DEFAULT_CARD_FIELDS)]]
310
+ });
311
+ return { card: normalizeCard(payload) };
312
+ }
313
+ async function createCard(input, ctx) {
314
+ const payload = await request(ctx, { method: "POST", path: "/cards", body: cardBody(input, "create") });
315
+ return { card: normalizeCard(payload) };
316
+ }
317
+ async function moveCard(input, ctx) {
318
+ const payload = await request(ctx, {
319
+ method: "PUT",
320
+ path: `/cards/${encodeURIComponent(requireInput(input.cardId, "cardId"))}`,
321
+ body: compactDefined({
322
+ idList: requireInput(input.listId, "listId"),
323
+ pos: position(input.position)
324
+ })
325
+ });
326
+ return { card: normalizeCard(payload) };
327
+ }
328
+ async function archiveCard(input, ctx) {
329
+ const payload = await request(ctx, {
330
+ method: "PUT",
331
+ path: `/cards/${encodeURIComponent(requireInput(input.cardId, "cardId"))}`,
332
+ body: { closed: true }
333
+ });
334
+ return { card: normalizeCard(payload) };
335
+ }
336
+ async function updateCard(input, ctx) {
337
+ const payload = await request(ctx, {
338
+ method: "PUT",
339
+ path: `/cards/${encodeURIComponent(requireInput(input.cardId, "cardId"))}`,
340
+ body: cardBody(input, "update")
341
+ });
342
+ return { card: normalizeCard(payload) };
343
+ }
344
+ async function addCardComment(input, ctx) {
345
+ const payload = await request(ctx, {
346
+ method: "POST",
347
+ path: `/cards/${encodeURIComponent(requireInput(input.cardId, "cardId"))}/actions/comments`,
348
+ body: { text: requireInput(input.text, "text") }
349
+ });
350
+ return { action: normalizeAction(payload) };
351
+ }
352
+ async function listCardComments(input, ctx) {
353
+ const payload = await request(ctx, {
354
+ path: `/cards/${encodeURIComponent(requireInput(input.cardId, "cardId"))}/actions`,
355
+ // 卡片的动作流里什么都有,只要评论那一种。
356
+ query: [["filter", "commentCard"], ["limit", input.limit]]
357
+ });
358
+ return { comments: requireArray(payload, "Trello \u8BC4\u8BBA\u5217\u8868").map((comment) => normalizeAction(comment)) };
359
+ }
360
+ async function addCardMember(input, ctx) {
361
+ await request(ctx, {
362
+ method: "POST",
363
+ path: `/cards/${encodeURIComponent(requireInput(input.cardId, "cardId"))}/idMembers`,
364
+ // 要加的 id 走 query 的 `value`,不是请求体 —— 上游 API 如此。
365
+ query: [["value", requireInput(input.memberId, "memberId")]]
366
+ });
367
+ return { success: true };
368
+ }
369
+ async function removeCardMember(input, ctx) {
370
+ const cardId = requireInput(input.cardId, "cardId");
371
+ const memberId = requireInput(input.memberId, "memberId");
372
+ await request(ctx, {
373
+ method: "DELETE",
374
+ path: `/cards/${encodeURIComponent(cardId)}/idMembers/${encodeURIComponent(memberId)}`
375
+ });
376
+ return { success: true };
377
+ }
378
+ async function addCardLabel(input, ctx) {
379
+ await request(ctx, {
380
+ method: "POST",
381
+ path: `/cards/${encodeURIComponent(requireInput(input.cardId, "cardId"))}/idLabels`,
382
+ query: [["value", requireInput(input.labelId, "labelId")]]
383
+ });
384
+ return { success: true };
385
+ }
386
+ async function removeCardLabel(input, ctx) {
387
+ const cardId = requireInput(input.cardId, "cardId");
388
+ const labelId = requireInput(input.labelId, "labelId");
389
+ await request(ctx, {
390
+ method: "DELETE",
391
+ path: `/cards/${encodeURIComponent(cardId)}/idLabels/${encodeURIComponent(labelId)}`
392
+ });
393
+ return { success: true };
394
+ }
395
+ async function createChecklist(input, ctx) {
396
+ const payload = await request(ctx, {
397
+ method: "POST",
398
+ path: `/cards/${encodeURIComponent(requireInput(input.cardId, "cardId"))}/checklists`,
399
+ body: { name: requireInput(input.name, "name") }
400
+ });
401
+ return { checklist: normalizeChecklist(payload) };
402
+ }
403
+ async function listCardChecklists(input, ctx) {
404
+ const payload = await request(ctx, {
405
+ path: `/cards/${encodeURIComponent(requireInput(input.cardId, "cardId"))}/checklists`
406
+ });
407
+ return {
408
+ checklists: requireArray(payload, "Trello \u6E05\u5355\u5217\u8868").map((checklist) => normalizeChecklist(checklist))
409
+ };
410
+ }
411
+ async function addCheckitem(input, ctx) {
412
+ const payload = await request(ctx, {
413
+ method: "POST",
414
+ path: `/checklists/${encodeURIComponent(requireInput(input.checklistId, "checklistId"))}/checkItems`,
415
+ body: compactDefined({
416
+ name: requireInput(input.name, "name"),
417
+ pos: position(input.position),
418
+ checked: input.checked
419
+ })
420
+ });
421
+ return { checkItem: normalizeCheckItem(payload) };
422
+ }
423
+ async function updateCheckitemState(input, ctx) {
424
+ const cardId = requireInput(input.cardId, "cardId");
425
+ const checkItemId = requireInput(input.checkItemId, "checkItemId");
426
+ const payload = await request(ctx, {
427
+ method: "PUT",
428
+ // 改检查项状态要从**卡片**下走,不是从 checklist 下走 —— 上游 API 如此。
429
+ path: `/cards/${encodeURIComponent(cardId)}/checkItem/${encodeURIComponent(checkItemId)}`,
430
+ body: { state: requireInput(input.state, "state") }
431
+ });
432
+ return { card: normalizeCard(payload) };
433
+ }
434
+ async function addCardAttachmentUrl(input, ctx) {
435
+ const payload = await request(ctx, {
436
+ method: "POST",
437
+ path: `/cards/${encodeURIComponent(requireInput(input.cardId, "cardId"))}/attachments`,
438
+ body: compactDefined({
439
+ url: requireInput(input.url, "url"),
440
+ name: trimmedText(input.name)
441
+ })
442
+ });
443
+ return { attachment: normalizeAttachment(payload) };
444
+ }
445
+ async function search(input, ctx) {
446
+ const payload = await request(ctx, {
447
+ path: "/search",
448
+ query: [
449
+ ["query", requireInput(input.query, "query")],
450
+ ["modelTypes", input.modelTypes?.join(",")],
451
+ ["cards_limit", input.cardsLimit],
452
+ ["boards_limit", input.boardsLimit],
453
+ ["members_limit", input.membersLimit]
454
+ ]
455
+ });
456
+ return { results: requireArray(payload, "Trello \u641C\u7D22\u7ED3\u679C").map((result) => requireRecord(result, "Trello \u641C\u7D22\u7ED3\u679C\u9879")) };
457
+ }
458
+
459
+ // ../plugins/src/trello/schema.ts
460
+ import { z } from "zod/v4";
461
+ var getMemberInput = z.strictObject({
462
+ memberId: z.string().min(1).describe("Trello member ID or the me shortcut. Defaults to me.").optional(),
463
+ fields: z.array(z.string().min(1).describe("One Trello field name to include in the response.")).min(1).describe("Comma-joined Trello fields to request from the REST API.").optional()
464
+ }).describe("Input parameters for retrieving a Trello member.");
465
+ var getMemberOutput = z.strictObject({
466
+ member: z.looseObject({
467
+ id: z.string().describe("Trello member ID.").optional(),
468
+ username: z.string().describe("Trello username.").optional(),
469
+ fullName: z.string().describe("Display name for the Trello member.").optional()
470
+ }).describe("A normalized Trello member returned by the REST API.").optional()
471
+ }).describe("The retrieved Trello member.");
472
+ var listMemberBoardsInput = z.strictObject({
473
+ memberId: z.string().min(1).describe("Trello member ID or the me shortcut. Defaults to me.").optional(),
474
+ fields: z.array(z.string().min(1).describe("One Trello field name to include in the response.")).min(1).describe("Comma-joined Trello fields to request from the REST API.").optional(),
475
+ filter: z.enum(["all", "closed", "members", "open", "organization", "public", "starred"]).describe("Board filter passed to Trello.").optional()
476
+ }).describe("Input parameters for listing boards for a Trello member.");
477
+ var listMemberBoardsOutput = z.strictObject({
478
+ boards: z.array(z.looseObject({
479
+ id: z.string().describe("Trello board ID.").optional(),
480
+ name: z.string().describe("Board name.").optional(),
481
+ description: z.string().describe("Board description.").optional(),
482
+ url: z.url().describe("Public Trello board URL.").optional(),
483
+ shortUrl: z.url().describe("Short Trello board URL.").optional(),
484
+ closed: z.boolean().describe("Whether the board is closed.").optional()
485
+ }).describe("A normalized Trello board returned by the REST API.")).describe("Trello boards.").optional()
486
+ }).describe("Boards returned by Trello.");
487
+ var getBoardInput = z.strictObject({
488
+ boardId: z.string().min(1).describe("Trello board ID."),
489
+ fields: z.array(z.string().min(1).describe("One Trello field name to include in the response.")).min(1).describe("Comma-joined Trello fields to request from the REST API.").optional()
490
+ }).describe("Input parameters for retrieving a Trello board.");
491
+ var getBoardOutput = z.strictObject({
492
+ board: z.looseObject({
493
+ id: z.string().describe("Trello board ID.").optional(),
494
+ name: z.string().describe("Board name.").optional(),
495
+ description: z.string().describe("Board description.").optional(),
496
+ url: z.url().describe("Public Trello board URL.").optional(),
497
+ shortUrl: z.url().describe("Short Trello board URL.").optional(),
498
+ closed: z.boolean().describe("Whether the board is closed.").optional()
499
+ }).describe("A normalized Trello board returned by the REST API.").optional()
500
+ }).describe("The retrieved Trello board.");
501
+ var createBoardInput = z.strictObject({
502
+ name: z.string().min(1).describe("Board name."),
503
+ description: z.string().describe("Board description.").optional(),
504
+ defaultLists: z.boolean().describe("Whether Trello should create default lists on the board.").optional(),
505
+ permissionLevel: z.enum(["org", "private", "public"]).describe("Board visibility preference.").optional()
506
+ }).describe("Input parameters for creating a Trello board.");
507
+ var createBoardOutput = z.strictObject({
508
+ board: z.looseObject({
509
+ id: z.string().describe("Trello board ID.").optional(),
510
+ name: z.string().describe("Board name.").optional(),
511
+ description: z.string().describe("Board description.").optional(),
512
+ url: z.url().describe("Public Trello board URL.").optional(),
513
+ shortUrl: z.url().describe("Short Trello board URL.").optional(),
514
+ closed: z.boolean().describe("Whether the board is closed.").optional()
515
+ }).describe("A normalized Trello board returned by the REST API.").optional()
516
+ }).describe("The created Trello board.");
517
+ var listBoardListsInput = z.strictObject({
518
+ boardId: z.string().min(1).describe("Trello board ID."),
519
+ filter: z.enum(["all", "closed", "none", "open"]).describe("List filter passed to Trello.").optional()
520
+ }).describe("Input parameters for listing Trello lists on a board.");
521
+ var listBoardListsOutput = z.strictObject({
522
+ lists: z.array(z.looseObject({
523
+ id: z.string().describe("Trello list ID.").optional(),
524
+ boardId: z.string().describe("Trello board ID that owns the list.").optional(),
525
+ name: z.string().describe("List name.").optional(),
526
+ closed: z.boolean().describe("Whether the list is closed.").optional(),
527
+ position: z.number().describe("List position on the board.").optional()
528
+ }).describe("A normalized Trello list returned by the REST API.")).describe("Trello lists.").optional()
529
+ }).describe("Lists returned by Trello.");
530
+ var createListInput = z.strictObject({
531
+ boardId: z.string().min(1).describe("Trello board ID that will own the list."),
532
+ name: z.string().min(1).describe("List name."),
533
+ position: z.union([z.enum(["top", "bottom"]).describe("Named list position."), z.number().describe("Numeric list position.")]).describe("List position. Use top, bottom, or a numeric position.").optional()
534
+ }).describe("Input parameters for creating a Trello list.");
535
+ var createListOutput = z.strictObject({
536
+ list: z.looseObject({
537
+ id: z.string().describe("Trello list ID.").optional(),
538
+ boardId: z.string().describe("Trello board ID that owns the list.").optional(),
539
+ name: z.string().describe("List name.").optional(),
540
+ closed: z.boolean().describe("Whether the list is closed.").optional(),
541
+ position: z.number().describe("List position on the board.").optional()
542
+ }).describe("A normalized Trello list returned by the REST API.").optional()
543
+ }).describe("The created Trello list.");
544
+ var updateListInput = z.strictObject({
545
+ listId: z.string().min(1).describe("Trello list ID."),
546
+ name: z.string().min(1).describe("List name.").optional(),
547
+ position: z.union([z.enum(["top", "bottom"]).describe("Named list position."), z.number().describe("Numeric list position.")]).describe("List position. Use top, bottom, or a numeric position.").optional()
548
+ }).describe("Input parameters for updating a Trello list.");
549
+ var updateListOutput = z.strictObject({
550
+ list: z.looseObject({
551
+ id: z.string().describe("Trello list ID.").optional(),
552
+ boardId: z.string().describe("Trello board ID that owns the list.").optional(),
553
+ name: z.string().describe("List name.").optional(),
554
+ closed: z.boolean().describe("Whether the list is closed.").optional(),
555
+ position: z.number().describe("List position on the board.").optional()
556
+ }).describe("A normalized Trello list returned by the REST API.").optional()
557
+ }).describe("The updated Trello list.");
558
+ var archiveListInput = z.strictObject({
559
+ listId: z.string().min(1).describe("Trello list ID.").optional()
560
+ }).describe("Input parameters for archiving a Trello list.");
561
+ var archiveListOutput = z.strictObject({
562
+ list: z.looseObject({
563
+ id: z.string().describe("Trello list ID.").optional(),
564
+ boardId: z.string().describe("Trello board ID that owns the list.").optional(),
565
+ name: z.string().describe("List name.").optional(),
566
+ closed: z.boolean().describe("Whether the list is closed.").optional(),
567
+ position: z.number().describe("List position on the board.").optional()
568
+ }).describe("A normalized Trello list returned by the REST API.").optional()
569
+ }).describe("The archived Trello list.");
570
+ var listBoardCardsInput = z.strictObject({
571
+ boardId: z.string().min(1).describe("Trello board ID."),
572
+ filter: z.enum(["all", "closed", "none", "open", "visible"]).describe("Card filter passed to Trello.").optional(),
573
+ fields: z.array(z.string().min(1).describe("One Trello field name to include in the response.")).min(1).describe("Comma-joined Trello fields to request from the REST API.").optional()
574
+ }).describe("Input parameters for listing Trello cards on a board.");
575
+ var listBoardCardsOutput = z.strictObject({
576
+ cards: z.array(z.looseObject({
577
+ id: z.string().describe("Trello card ID.").optional(),
578
+ boardId: z.string().describe("Trello board ID that owns the card.").optional(),
579
+ listId: z.string().describe("Trello list ID that contains the card.").optional(),
580
+ name: z.string().describe("Card name.").optional(),
581
+ description: z.string().describe("Card description.").optional(),
582
+ url: z.url().describe("Public Trello card URL.").optional(),
583
+ shortUrl: z.url().describe("Short Trello card URL.").optional(),
584
+ closed: z.boolean().describe("Whether the card is closed.").optional(),
585
+ due: z.iso.datetime({ offset: true }).describe("Card due date in ISO 8601 format.").nullable().optional(),
586
+ dueComplete: z.boolean().describe("Whether the card due date is marked complete.").optional()
587
+ }).describe("A normalized Trello card returned by the REST API.")).describe("Trello cards.").optional()
588
+ }).describe("Cards returned by Trello.");
589
+ var listBoardMembersInput = z.strictObject({
590
+ boardId: z.string().min(1).describe("Trello board ID."),
591
+ fields: z.array(z.string().min(1).describe("One Trello field name to include in the response.")).min(1).describe("Comma-joined Trello fields to request from the REST API.").optional()
592
+ }).describe("Input parameters for listing Trello board members.");
593
+ var listBoardMembersOutput = z.strictObject({
594
+ members: z.array(z.looseObject({
595
+ id: z.string().describe("Trello member ID.").optional(),
596
+ username: z.string().describe("Trello username.").optional(),
597
+ fullName: z.string().describe("Display name for the Trello member.").optional()
598
+ }).describe("A normalized Trello member returned by the REST API.")).describe("Trello members.").optional()
599
+ }).describe("Board members returned by Trello.");
600
+ var listBoardLabelsInput = z.strictObject({
601
+ boardId: z.string().min(1).describe("Trello board ID.").optional()
602
+ }).describe("Input parameters for listing Trello board labels.");
603
+ var listBoardLabelsOutput = z.strictObject({
604
+ labels: z.array(z.looseObject({}).describe("A Trello label returned by the API.")).describe("Trello labels.").optional()
605
+ }).describe("Board labels returned by Trello.");
606
+ var getCardInput = z.strictObject({
607
+ cardId: z.string().min(1).describe("Trello card ID or short link."),
608
+ fields: z.array(z.string().min(1).describe("One Trello field name to include in the response.")).min(1).describe("Comma-joined Trello fields to request from the REST API.").optional()
609
+ }).describe("Input parameters for retrieving a Trello card.");
610
+ var getCardOutput = z.strictObject({
611
+ card: z.looseObject({
612
+ id: z.string().describe("Trello card ID.").optional(),
613
+ boardId: z.string().describe("Trello board ID that owns the card.").optional(),
614
+ listId: z.string().describe("Trello list ID that contains the card.").optional(),
615
+ name: z.string().describe("Card name.").optional(),
616
+ description: z.string().describe("Card description.").optional(),
617
+ url: z.url().describe("Public Trello card URL.").optional(),
618
+ shortUrl: z.url().describe("Short Trello card URL.").optional(),
619
+ closed: z.boolean().describe("Whether the card is closed.").optional(),
620
+ due: z.iso.datetime({ offset: true }).describe("Card due date in ISO 8601 format.").nullable().optional(),
621
+ dueComplete: z.boolean().describe("Whether the card due date is marked complete.").optional()
622
+ }).describe("A normalized Trello card returned by the REST API.").optional()
623
+ }).describe("The retrieved Trello card.");
624
+ var createCardInput = z.strictObject({
625
+ listId: z.string().min(1).describe("Trello list ID that will contain the new card."),
626
+ name: z.string().min(1).describe("Card name."),
627
+ description: z.string().describe("Card description.").optional(),
628
+ due: z.iso.datetime({ offset: true }).describe("Card due date in ISO 8601 format.").nullable().optional(),
629
+ position: z.union([z.enum(["top", "bottom"]).describe("Named card position."), z.number().describe("Numeric card position.")]).describe("Card position. Use top, bottom, or a numeric position.").optional(),
630
+ memberIds: z.array(z.string().min(1).describe("One Trello member ID.")).min(1).describe("Trello member IDs to assign to the card.").optional(),
631
+ labelIds: z.array(z.string().min(1).describe("One Trello label ID.")).min(1).describe("Trello label IDs to assign to the card.").optional()
632
+ }).describe("Input parameters for creating a Trello card.");
633
+ var createCardOutput = z.strictObject({
634
+ card: z.looseObject({
635
+ id: z.string().describe("Trello card ID.").optional(),
636
+ boardId: z.string().describe("Trello board ID that owns the card.").optional(),
637
+ listId: z.string().describe("Trello list ID that contains the card.").optional(),
638
+ name: z.string().describe("Card name.").optional(),
639
+ description: z.string().describe("Card description.").optional(),
640
+ url: z.url().describe("Public Trello card URL.").optional(),
641
+ shortUrl: z.url().describe("Short Trello card URL.").optional(),
642
+ closed: z.boolean().describe("Whether the card is closed.").optional(),
643
+ due: z.iso.datetime({ offset: true }).describe("Card due date in ISO 8601 format.").nullable().optional(),
644
+ dueComplete: z.boolean().describe("Whether the card due date is marked complete.").optional()
645
+ }).describe("A normalized Trello card returned by the REST API.").optional()
646
+ }).describe("The created Trello card.");
647
+ var moveCardInput = z.strictObject({
648
+ cardId: z.string().min(1).describe("Trello card ID or short link."),
649
+ listId: z.string().min(1).describe("Destination Trello list ID."),
650
+ position: z.union([z.enum(["top", "bottom"]).describe("Named card position."), z.number().describe("Numeric card position.")]).describe("Card position. Use top, bottom, or a numeric position.").optional()
651
+ }).describe("Input parameters for moving a Trello card.");
652
+ var moveCardOutput = z.strictObject({
653
+ card: z.looseObject({
654
+ id: z.string().describe("Trello card ID.").optional(),
655
+ boardId: z.string().describe("Trello board ID that owns the card.").optional(),
656
+ listId: z.string().describe("Trello list ID that contains the card.").optional(),
657
+ name: z.string().describe("Card name.").optional(),
658
+ description: z.string().describe("Card description.").optional(),
659
+ url: z.url().describe("Public Trello card URL.").optional(),
660
+ shortUrl: z.url().describe("Short Trello card URL.").optional(),
661
+ closed: z.boolean().describe("Whether the card is closed.").optional(),
662
+ due: z.iso.datetime({ offset: true }).describe("Card due date in ISO 8601 format.").nullable().optional(),
663
+ dueComplete: z.boolean().describe("Whether the card due date is marked complete.").optional()
664
+ }).describe("A normalized Trello card returned by the REST API.").optional()
665
+ }).describe("The moved Trello card.");
666
+ var archiveCardInput = z.strictObject({
667
+ cardId: z.string().min(1).describe("Trello card ID or short link.").optional()
668
+ }).describe("Input parameters for archiving a Trello card.");
669
+ var archiveCardOutput = z.strictObject({
670
+ card: z.looseObject({
671
+ id: z.string().describe("Trello card ID.").optional(),
672
+ boardId: z.string().describe("Trello board ID that owns the card.").optional(),
673
+ listId: z.string().describe("Trello list ID that contains the card.").optional(),
674
+ name: z.string().describe("Card name.").optional(),
675
+ description: z.string().describe("Card description.").optional(),
676
+ url: z.url().describe("Public Trello card URL.").optional(),
677
+ shortUrl: z.url().describe("Short Trello card URL.").optional(),
678
+ closed: z.boolean().describe("Whether the card is closed.").optional(),
679
+ due: z.iso.datetime({ offset: true }).describe("Card due date in ISO 8601 format.").nullable().optional(),
680
+ dueComplete: z.boolean().describe("Whether the card due date is marked complete.").optional()
681
+ }).describe("A normalized Trello card returned by the REST API.").optional()
682
+ }).describe("The archived Trello card.");
683
+ var updateCardInput = z.strictObject({
684
+ cardId: z.string().min(1).describe("Trello card ID or short link."),
685
+ name: z.string().min(1).describe("Card name.").optional(),
686
+ description: z.string().describe("Card description.").optional(),
687
+ due: z.iso.datetime({ offset: true }).describe("Card due date in ISO 8601 format.").nullable().optional(),
688
+ position: z.union([z.enum(["top", "bottom"]).describe("Named card position."), z.number().describe("Numeric card position.")]).describe("Card position. Use top, bottom, or a numeric position.").optional(),
689
+ memberIds: z.array(z.string().min(1).describe("One Trello member ID.")).min(1).describe("Trello member IDs to assign to the card.").optional(),
690
+ labelIds: z.array(z.string().min(1).describe("One Trello label ID.")).min(1).describe("Trello label IDs to assign to the card.").optional(),
691
+ listId: z.string().min(1).describe("Trello list ID to move the card into.").optional(),
692
+ closed: z.boolean().describe("Whether the card should be closed.").optional(),
693
+ dueComplete: z.boolean().describe("Whether the card due date should be marked complete.").optional()
694
+ }).describe("Input parameters for updating a Trello card.");
695
+ var updateCardOutput = z.strictObject({
696
+ card: z.looseObject({
697
+ id: z.string().describe("Trello card ID.").optional(),
698
+ boardId: z.string().describe("Trello board ID that owns the card.").optional(),
699
+ listId: z.string().describe("Trello list ID that contains the card.").optional(),
700
+ name: z.string().describe("Card name.").optional(),
701
+ description: z.string().describe("Card description.").optional(),
702
+ url: z.url().describe("Public Trello card URL.").optional(),
703
+ shortUrl: z.url().describe("Short Trello card URL.").optional(),
704
+ closed: z.boolean().describe("Whether the card is closed.").optional(),
705
+ due: z.iso.datetime({ offset: true }).describe("Card due date in ISO 8601 format.").nullable().optional(),
706
+ dueComplete: z.boolean().describe("Whether the card due date is marked complete.").optional()
707
+ }).describe("A normalized Trello card returned by the REST API.").optional()
708
+ }).describe("The updated Trello card.");
709
+ var addCardCommentInput = z.strictObject({
710
+ cardId: z.string().min(1).describe("Trello card ID or short link.").optional(),
711
+ text: z.string().min(1).describe("Comment text to add to the card.").optional()
712
+ }).describe("Input parameters for adding a Trello card comment.");
713
+ var addCardCommentOutput = z.strictObject({
714
+ action: z.looseObject({
715
+ id: z.string().describe("Trello action ID.").optional(),
716
+ type: z.string().describe("Trello action type.").optional(),
717
+ data: z.looseObject({}).describe("Action data returned by Trello.").optional(),
718
+ date: z.iso.datetime({ offset: true }).describe("Action creation timestamp in ISO 8601 format.").optional()
719
+ }).describe("A Trello action returned by the REST API.").optional()
720
+ }).describe("The created Trello comment action.");
721
+ var listCardCommentsInput = z.strictObject({
722
+ cardId: z.string().min(1).describe("Trello card ID or short link."),
723
+ limit: z.int().min(1).max(1e3).describe("Maximum number of comment actions to return.").optional()
724
+ }).describe("Input parameters for listing Trello card comments.");
725
+ var listCardCommentsOutput = z.strictObject({
726
+ comments: z.array(z.looseObject({
727
+ id: z.string().describe("Trello action ID.").optional(),
728
+ type: z.string().describe("Trello action type.").optional(),
729
+ data: z.looseObject({}).describe("Action data returned by Trello.").optional(),
730
+ date: z.iso.datetime({ offset: true }).describe("Action creation timestamp in ISO 8601 format.").optional()
731
+ }).describe("A Trello action returned by the REST API.")).describe("Trello comment actions.").optional()
732
+ }).describe("Comment actions returned by Trello.");
733
+ var addCardMemberInput = z.strictObject({
734
+ cardId: z.string().min(1).describe("Trello card ID or short link.").optional(),
735
+ memberId: z.string().min(1).describe("Trello member ID to assign.").optional()
736
+ }).describe("Input parameters for assigning a Trello member to a card.");
737
+ var addCardMemberOutput = z.strictObject({
738
+ success: z.boolean().describe("Whether Trello accepted the mutation.").optional()
739
+ }).describe("A successful Trello mutation response.");
740
+ var removeCardMemberInput = z.strictObject({
741
+ cardId: z.string().min(1).describe("Trello card ID or short link.").optional(),
742
+ memberId: z.string().min(1).describe("Trello member ID to remove.").optional()
743
+ }).describe("Input parameters for removing a Trello member from a card.");
744
+ var removeCardMemberOutput = z.strictObject({
745
+ success: z.boolean().describe("Whether Trello accepted the mutation.").optional()
746
+ }).describe("A successful Trello mutation response.");
747
+ var addCardLabelInput = z.strictObject({
748
+ cardId: z.string().min(1).describe("Trello card ID or short link.").optional(),
749
+ labelId: z.string().min(1).describe("Trello label ID to add.").optional()
750
+ }).describe("Input parameters for adding a Trello label to a card.");
751
+ var addCardLabelOutput = z.strictObject({
752
+ success: z.boolean().describe("Whether Trello accepted the mutation.").optional()
753
+ }).describe("A successful Trello mutation response.");
754
+ var removeCardLabelInput = z.strictObject({
755
+ cardId: z.string().min(1).describe("Trello card ID or short link.").optional(),
756
+ labelId: z.string().min(1).describe("Trello label ID to remove.").optional()
757
+ }).describe("Input parameters for removing a Trello label from a card.");
758
+ var removeCardLabelOutput = z.strictObject({
759
+ success: z.boolean().describe("Whether Trello accepted the mutation.").optional()
760
+ }).describe("A successful Trello mutation response.");
761
+ var createChecklistInput = z.strictObject({
762
+ cardId: z.string().min(1).describe("Trello card ID or short link.").optional(),
763
+ name: z.string().min(1).describe("Checklist name.").optional()
764
+ }).describe("Input parameters for creating a Trello checklist.");
765
+ var createChecklistOutput = z.strictObject({
766
+ checklist: z.looseObject({
767
+ id: z.string().describe("Trello checklist ID.").optional(),
768
+ cardId: z.string().describe("Trello card ID that owns the checklist.").optional(),
769
+ name: z.string().describe("Checklist name.").optional(),
770
+ checkItems: z.array(z.looseObject({
771
+ id: z.string().describe("Trello check item ID.").optional(),
772
+ name: z.string().describe("Check item name.").optional(),
773
+ state: z.enum(["complete", "incomplete"]).describe("Check item state.").optional(),
774
+ position: z.number().describe("Check item position in the checklist.").optional()
775
+ }).describe("A Trello checklist item returned by the REST API.")).describe("Checklist items returned by Trello.").optional()
776
+ }).describe("A Trello checklist returned by the REST API.").optional()
777
+ }).describe("The created Trello checklist.");
778
+ var listCardChecklistsInput = z.strictObject({
779
+ cardId: z.string().min(1).describe("Trello card ID or short link.").optional()
780
+ }).describe("Input parameters for listing Trello card checklists.");
781
+ var listCardChecklistsOutput = z.strictObject({
782
+ checklists: z.array(z.looseObject({
783
+ id: z.string().describe("Trello checklist ID.").optional(),
784
+ cardId: z.string().describe("Trello card ID that owns the checklist.").optional(),
785
+ name: z.string().describe("Checklist name.").optional(),
786
+ checkItems: z.array(z.looseObject({
787
+ id: z.string().describe("Trello check item ID.").optional(),
788
+ name: z.string().describe("Check item name.").optional(),
789
+ state: z.enum(["complete", "incomplete"]).describe("Check item state.").optional(),
790
+ position: z.number().describe("Check item position in the checklist.").optional()
791
+ }).describe("A Trello checklist item returned by the REST API.")).describe("Checklist items returned by Trello.").optional()
792
+ }).describe("A Trello checklist returned by the REST API.")).describe("Trello checklists.").optional()
793
+ }).describe("Checklists returned by Trello.");
794
+ var addCheckitemInput = z.strictObject({
795
+ checklistId: z.string().min(1).describe("Trello checklist ID."),
796
+ name: z.string().min(1).describe("Check item name."),
797
+ position: z.union([z.enum(["top", "bottom"]).describe("Named list position."), z.number().describe("Numeric list position.")]).describe("List position. Use top, bottom, or a numeric position.").optional(),
798
+ checked: z.boolean().describe("Whether the new check item should be created as complete.").optional()
799
+ }).describe("Input parameters for adding a Trello checklist item.");
800
+ var addCheckitemOutput = z.strictObject({
801
+ checkItem: z.looseObject({
802
+ id: z.string().describe("Trello check item ID.").optional(),
803
+ name: z.string().describe("Check item name.").optional(),
804
+ state: z.enum(["complete", "incomplete"]).describe("Check item state.").optional(),
805
+ position: z.number().describe("Check item position in the checklist.").optional()
806
+ }).describe("A Trello checklist item returned by the REST API.").optional()
807
+ }).describe("The created Trello check item.");
808
+ var updateCheckitemStateInput = z.strictObject({
809
+ cardId: z.string().min(1).describe("Trello card ID or short link.").optional(),
810
+ checkItemId: z.string().min(1).describe("Trello check item ID.").optional(),
811
+ state: z.enum(["complete", "incomplete"]).describe("New check item state.").optional()
812
+ }).describe("Input parameters for updating a Trello check item state.");
813
+ var updateCheckitemStateOutput = z.strictObject({
814
+ card: z.looseObject({
815
+ id: z.string().describe("Trello card ID.").optional(),
816
+ boardId: z.string().describe("Trello board ID that owns the card.").optional(),
817
+ listId: z.string().describe("Trello list ID that contains the card.").optional(),
818
+ name: z.string().describe("Card name.").optional(),
819
+ description: z.string().describe("Card description.").optional(),
820
+ url: z.url().describe("Public Trello card URL.").optional(),
821
+ shortUrl: z.url().describe("Short Trello card URL.").optional(),
822
+ closed: z.boolean().describe("Whether the card is closed.").optional(),
823
+ due: z.iso.datetime({ offset: true }).describe("Card due date in ISO 8601 format.").nullable().optional(),
824
+ dueComplete: z.boolean().describe("Whether the card due date is marked complete.").optional()
825
+ }).describe("A normalized Trello card returned by the REST API.").optional()
826
+ }).describe("The Trello card returned after updating the check item.");
827
+ var addCardAttachmentUrlInput = z.strictObject({
828
+ cardId: z.string().min(1).describe("Trello card ID or short link."),
829
+ url: z.url().describe("URL to attach to the card."),
830
+ name: z.string().min(1).describe("Attachment display name.").optional()
831
+ }).describe("Input parameters for attaching a URL to a Trello card.");
832
+ var addCardAttachmentUrlOutput = z.strictObject({
833
+ attachment: z.looseObject({
834
+ id: z.string().describe("Trello attachment ID.").optional(),
835
+ name: z.string().describe("Attachment name.").optional(),
836
+ url: z.url().describe("Attachment URL.").optional(),
837
+ bytes: z.int().describe("Attachment size in bytes.").nullable().optional(),
838
+ date: z.iso.datetime({ offset: true }).describe("Attachment creation timestamp in ISO 8601 format.").optional()
839
+ }).describe("A Trello card attachment returned by the REST API.").optional()
840
+ }).describe("The created Trello attachment.");
841
+ var searchInput = z.strictObject({
842
+ query: z.string().min(1).describe("Search query sent to Trello."),
843
+ modelTypes: z.array(z.enum(["actions", "boards", "cards", "members", "organizations"]).describe("One Trello model type.")).min(1).describe("Trello model types to search.").optional(),
844
+ cardsLimit: z.int().min(1).max(1e3).describe("Maximum number of cards to return.").optional(),
845
+ boardsLimit: z.int().min(1).max(1e3).describe("Maximum number of boards to return.").optional(),
846
+ membersLimit: z.int().min(1).max(1e3).describe("Maximum number of members to return.").optional()
847
+ }).describe("Input parameters for Trello search.");
848
+ var searchOutput = z.strictObject({
849
+ results: z.array(z.looseObject({}).describe("One Trello search result.")).describe("Search results returned by Trello.").optional()
850
+ }).describe("Search results returned by Trello.");
851
+ var trelloActions = {
852
+ get_member: {
853
+ description: "Get a Trello member, defaulting to the authenticated member.",
854
+ effect: "read",
855
+ inputSchema: getMemberInput,
856
+ outputSchema: z.toJSONSchema(getMemberOutput, { io: "output", unrepresentable: "any" })
857
+ },
858
+ list_member_boards: {
859
+ description: "List Trello boards visible to a member.",
860
+ effect: "read",
861
+ inputSchema: listMemberBoardsInput,
862
+ outputSchema: z.toJSONSchema(listMemberBoardsOutput, { io: "output", unrepresentable: "any" })
863
+ },
864
+ get_board: {
865
+ description: "Get a Trello board by ID.",
866
+ effect: "read",
867
+ inputSchema: getBoardInput,
868
+ outputSchema: z.toJSONSchema(getBoardOutput, { io: "output", unrepresentable: "any" })
869
+ },
870
+ create_board: {
871
+ description: "Create a Trello board.",
872
+ effect: "write",
873
+ inputSchema: createBoardInput,
874
+ outputSchema: z.toJSONSchema(createBoardOutput, { io: "output", unrepresentable: "any" })
875
+ },
876
+ list_board_lists: {
877
+ description: "List Trello lists on a board.",
878
+ effect: "read",
879
+ inputSchema: listBoardListsInput,
880
+ outputSchema: z.toJSONSchema(listBoardListsOutput, { io: "output", unrepresentable: "any" })
881
+ },
882
+ create_list: {
883
+ description: "Create a Trello list on a board.",
884
+ effect: "write",
885
+ inputSchema: createListInput,
886
+ outputSchema: z.toJSONSchema(createListOutput, { io: "output", unrepresentable: "any" })
887
+ },
888
+ update_list: {
889
+ description: "Update a Trello list name or position.",
890
+ effect: "write",
891
+ inputSchema: updateListInput,
892
+ outputSchema: z.toJSONSchema(updateListOutput, { io: "output", unrepresentable: "any" })
893
+ },
894
+ archive_list: {
895
+ description: "Archive a Trello list.",
896
+ effect: "write",
897
+ inputSchema: archiveListInput,
898
+ outputSchema: z.toJSONSchema(archiveListOutput, { io: "output", unrepresentable: "any" })
899
+ },
900
+ list_board_cards: {
901
+ description: "List Trello cards on a board.",
902
+ effect: "read",
903
+ inputSchema: listBoardCardsInput,
904
+ outputSchema: z.toJSONSchema(listBoardCardsOutput, { io: "output", unrepresentable: "any" })
905
+ },
906
+ list_board_members: {
907
+ description: "List Trello members on a board.",
908
+ effect: "read",
909
+ inputSchema: listBoardMembersInput,
910
+ outputSchema: z.toJSONSchema(listBoardMembersOutput, { io: "output", unrepresentable: "any" })
911
+ },
912
+ list_board_labels: {
913
+ description: "List Trello labels on a board.",
914
+ effect: "read",
915
+ inputSchema: listBoardLabelsInput,
916
+ outputSchema: z.toJSONSchema(listBoardLabelsOutput, { io: "output", unrepresentable: "any" })
917
+ },
918
+ get_card: {
919
+ description: "Get a Trello card by ID or short link.",
920
+ effect: "read",
921
+ inputSchema: getCardInput,
922
+ outputSchema: z.toJSONSchema(getCardOutput, { io: "output", unrepresentable: "any" })
923
+ },
924
+ create_card: {
925
+ description: "Create a Trello card in a list.",
926
+ effect: "write",
927
+ inputSchema: createCardInput,
928
+ outputSchema: z.toJSONSchema(createCardOutput, { io: "output", unrepresentable: "any" })
929
+ },
930
+ move_card: {
931
+ description: "Move a Trello card to another list.",
932
+ effect: "write",
933
+ inputSchema: moveCardInput,
934
+ outputSchema: z.toJSONSchema(moveCardOutput, { io: "output", unrepresentable: "any" })
935
+ },
936
+ archive_card: {
937
+ description: "Archive a Trello card.",
938
+ effect: "write",
939
+ inputSchema: archiveCardInput,
940
+ outputSchema: z.toJSONSchema(archiveCardOutput, { io: "output", unrepresentable: "any" })
941
+ },
942
+ update_card: {
943
+ description: "Update a Trello card by ID or short link.",
944
+ effect: "write",
945
+ inputSchema: updateCardInput,
946
+ outputSchema: z.toJSONSchema(updateCardOutput, { io: "output", unrepresentable: "any" })
947
+ },
948
+ add_card_comment: {
949
+ description: "Add a comment action to a Trello card.",
950
+ effect: "write",
951
+ inputSchema: addCardCommentInput,
952
+ outputSchema: z.toJSONSchema(addCardCommentOutput, { io: "output", unrepresentable: "any" })
953
+ },
954
+ list_card_comments: {
955
+ description: "List comment actions on a Trello card.",
956
+ effect: "read",
957
+ inputSchema: listCardCommentsInput,
958
+ outputSchema: z.toJSONSchema(listCardCommentsOutput, { io: "output", unrepresentable: "any" })
959
+ },
960
+ add_card_member: {
961
+ description: "Assign a Trello member to a card.",
962
+ effect: "write",
963
+ inputSchema: addCardMemberInput,
964
+ outputSchema: z.toJSONSchema(addCardMemberOutput, { io: "output", unrepresentable: "any" })
965
+ },
966
+ remove_card_member: {
967
+ description: "Remove a Trello member from a card.",
968
+ effect: "destructive",
969
+ inputSchema: removeCardMemberInput,
970
+ outputSchema: z.toJSONSchema(removeCardMemberOutput, { io: "output", unrepresentable: "any" })
971
+ },
972
+ add_card_label: {
973
+ description: "Add a Trello label to a card.",
974
+ effect: "write",
975
+ inputSchema: addCardLabelInput,
976
+ outputSchema: z.toJSONSchema(addCardLabelOutput, { io: "output", unrepresentable: "any" })
977
+ },
978
+ remove_card_label: {
979
+ description: "Remove a Trello label from a card.",
980
+ effect: "destructive",
981
+ inputSchema: removeCardLabelInput,
982
+ outputSchema: z.toJSONSchema(removeCardLabelOutput, { io: "output", unrepresentable: "any" })
983
+ },
984
+ create_checklist: {
985
+ description: "Create a Trello checklist on a card.",
986
+ effect: "write",
987
+ inputSchema: createChecklistInput,
988
+ outputSchema: z.toJSONSchema(createChecklistOutput, { io: "output", unrepresentable: "any" })
989
+ },
990
+ list_card_checklists: {
991
+ description: "List Trello checklists on a card.",
992
+ effect: "read",
993
+ inputSchema: listCardChecklistsInput,
994
+ outputSchema: z.toJSONSchema(listCardChecklistsOutput, { io: "output", unrepresentable: "any" })
995
+ },
996
+ add_checkitem: {
997
+ description: "Add a check item to a Trello checklist.",
998
+ effect: "write",
999
+ inputSchema: addCheckitemInput,
1000
+ outputSchema: z.toJSONSchema(addCheckitemOutput, { io: "output", unrepresentable: "any" })
1001
+ },
1002
+ update_checkitem_state: {
1003
+ description: "Update a Trello check item state on a card.",
1004
+ effect: "write",
1005
+ inputSchema: updateCheckitemStateInput,
1006
+ outputSchema: z.toJSONSchema(updateCheckitemStateOutput, { io: "output", unrepresentable: "any" })
1007
+ },
1008
+ add_card_attachment_url: {
1009
+ description: "Attach an external URL to a Trello card.",
1010
+ effect: "write",
1011
+ inputSchema: addCardAttachmentUrlInput,
1012
+ outputSchema: z.toJSONSchema(addCardAttachmentUrlOutput, { io: "output", unrepresentable: "any" })
1013
+ },
1014
+ search: {
1015
+ description: "Search Trello cards, boards, members, and organizations.",
1016
+ effect: "write",
1017
+ inputSchema: searchInput,
1018
+ outputSchema: z.toJSONSchema(searchOutput, { io: "output", unrepresentable: "any" })
1019
+ }
1020
+ };
1021
+
1022
+ // ../plugins/src/trello/index.ts
1023
+ function createTrelloPlugin() {
1024
+ return createProviderPlugin({
1025
+ description: "Trello",
1026
+ actions: trelloActions,
1027
+ credentialFields: [
1028
+ {
1029
+ key: "apiKey",
1030
+ label: "API Key",
1031
+ required: true,
1032
+ secret: true,
1033
+ description: "https://trello.com/power-ups/admin \u4E0A Key \u4E00\u680F\u7684\u503C(\u4E0D\u662F API Secret,\u4E5F\u4E0D\u662F Atlassian API token)"
1034
+ },
1035
+ {
1036
+ key: "apiToken",
1037
+ label: "API Token",
1038
+ required: true,
1039
+ secret: true,
1040
+ description: "\u5728\u540C\u4E00\u9875\u9762 API Key \u65C1\u8FB9\u7684 Token \u94FE\u63A5\u91CC\u751F\u6210(\u4E0E API Secret \u4E0D\u662F\u4E00\u56DE\u4E8B)"
1041
+ }
1042
+ ],
1043
+ credentialProbe: "get_member",
1044
+ handlers: {
1045
+ get_member: getMember,
1046
+ list_member_boards: listMemberBoards,
1047
+ get_board: getBoard,
1048
+ create_board: createBoard,
1049
+ list_board_lists: listBoardLists,
1050
+ create_list: createList,
1051
+ update_list: updateList,
1052
+ archive_list: archiveList,
1053
+ list_board_cards: listBoardCards,
1054
+ list_board_members: listBoardMembers,
1055
+ list_board_labels: listBoardLabels,
1056
+ get_card: getCard,
1057
+ create_card: createCard,
1058
+ move_card: moveCard,
1059
+ archive_card: archiveCard,
1060
+ update_card: updateCard,
1061
+ add_card_comment: addCardComment,
1062
+ list_card_comments: listCardComments,
1063
+ add_card_member: addCardMember,
1064
+ remove_card_member: removeCardMember,
1065
+ add_card_label: addCardLabel,
1066
+ remove_card_label: removeCardLabel,
1067
+ create_checklist: createChecklist,
1068
+ list_card_checklists: listCardChecklists,
1069
+ add_checkitem: addCheckitem,
1070
+ update_checkitem_state: updateCheckitemState,
1071
+ add_card_attachment_url: addCardAttachmentUrl,
1072
+ search
1073
+ }
1074
+ });
1075
+ }
1076
+ var trello_default = createTrelloPlugin();
1077
+ export {
1078
+ createTrelloPlugin,
1079
+ trello_default as default
1080
+ };