@commandable/integration-data 0.0.1

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 (335) hide show
  1. package/dist/credentials-index.d.ts +30 -0
  2. package/dist/credentials-index.d.ts.map +1 -0
  3. package/dist/credentials-index.js +292 -0
  4. package/dist/credentials-index.js.map +1 -0
  5. package/dist/index.d.ts +3 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +2 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/loader.d.ts +69 -0
  10. package/dist/loader.d.ts.map +1 -0
  11. package/dist/loader.js +164 -0
  12. package/dist/loader.js.map +1 -0
  13. package/integrations/README.md +52 -0
  14. package/integrations/airtable/__tests__/get_handlers.test.ts +137 -0
  15. package/integrations/airtable/__tests__/usage_parity.test.ts +35 -0
  16. package/integrations/airtable/__tests__/write_and_admin_handlers.test.ts +113 -0
  17. package/integrations/airtable/credentials.json +20 -0
  18. package/integrations/airtable/credentials_hint.md +4 -0
  19. package/integrations/airtable/handlers/create_record.js +12 -0
  20. package/integrations/airtable/handlers/delete_record.js +7 -0
  21. package/integrations/airtable/handlers/get_record.js +4 -0
  22. package/integrations/airtable/handlers/get_table_schema.js +6 -0
  23. package/integrations/airtable/handlers/list_bases.js +4 -0
  24. package/integrations/airtable/handlers/list_records.js +25 -0
  25. package/integrations/airtable/handlers/list_table_fields.js +6 -0
  26. package/integrations/airtable/handlers/list_tables.js +4 -0
  27. package/integrations/airtable/handlers/list_views.js +6 -0
  28. package/integrations/airtable/handlers/search_records.js +6 -0
  29. package/integrations/airtable/handlers/update_record.js +11 -0
  30. package/integrations/airtable/manifest.json +83 -0
  31. package/integrations/airtable/schemas/create_record.json +12 -0
  32. package/integrations/airtable/schemas/delete_record.json +11 -0
  33. package/integrations/airtable/schemas/empty.json +6 -0
  34. package/integrations/airtable/schemas/get_record.json +11 -0
  35. package/integrations/airtable/schemas/id_base.json +9 -0
  36. package/integrations/airtable/schemas/id_base_table.json +10 -0
  37. package/integrations/airtable/schemas/list_records.json +26 -0
  38. package/integrations/airtable/schemas/search_records.json +12 -0
  39. package/integrations/airtable/schemas/update_record.json +13 -0
  40. package/integrations/github/__tests__/get_handlers.test.ts +117 -0
  41. package/integrations/github/__tests__/usage_parity.test.ts +34 -0
  42. package/integrations/github/__tests__/write_handlers.test.ts +311 -0
  43. package/integrations/github/credentials.json +20 -0
  44. package/integrations/github/credentials_hint.md +7 -0
  45. package/integrations/github/handlers/add_labels_to_issue.js +12 -0
  46. package/integrations/github/handlers/close_issue.js +5 -0
  47. package/integrations/github/handlers/comment_on_issue.js +5 -0
  48. package/integrations/github/handlers/create_branch.js +33 -0
  49. package/integrations/github/handlers/create_commit.js +91 -0
  50. package/integrations/github/handlers/create_issue.js +10 -0
  51. package/integrations/github/handlers/create_or_update_file.js +21 -0
  52. package/integrations/github/handlers/create_pull_request.js +16 -0
  53. package/integrations/github/handlers/create_repo.js +11 -0
  54. package/integrations/github/handlers/delete_repo.js +6 -0
  55. package/integrations/github/handlers/get_issue.js +4 -0
  56. package/integrations/github/handlers/get_repo.js +4 -0
  57. package/integrations/github/handlers/list_branches.js +4 -0
  58. package/integrations/github/handlers/list_commits.js +12 -0
  59. package/integrations/github/handlers/list_issues.js +12 -0
  60. package/integrations/github/handlers/list_pull_requests.js +8 -0
  61. package/integrations/github/handlers/list_repos_install.js +4 -0
  62. package/integrations/github/handlers/list_repos_user.js +4 -0
  63. package/integrations/github/handlers/merge_pull_request.js +14 -0
  64. package/integrations/github/handlers/update_issue.js +15 -0
  65. package/integrations/github/manifest.json +26 -0
  66. package/integrations/github/schemas/add_labels_to_issue.json +12 -0
  67. package/integrations/github/schemas/close_issue.json +10 -0
  68. package/integrations/github/schemas/comment_on_issue.json +11 -0
  69. package/integrations/github/schemas/create_branch.json +12 -0
  70. package/integrations/github/schemas/create_commit.json +25 -0
  71. package/integrations/github/schemas/create_issue.json +13 -0
  72. package/integrations/github/schemas/create_or_update_file.json +15 -0
  73. package/integrations/github/schemas/create_pull_request.json +15 -0
  74. package/integrations/github/schemas/create_repo.json +12 -0
  75. package/integrations/github/schemas/delete_repo.json +10 -0
  76. package/integrations/github/schemas/empty.json +5 -0
  77. package/integrations/github/schemas/get_issue.json +10 -0
  78. package/integrations/github/schemas/get_repo.json +9 -0
  79. package/integrations/github/schemas/list_commits.json +12 -0
  80. package/integrations/github/schemas/list_issues.json +12 -0
  81. package/integrations/github/schemas/list_pull_requests.json +10 -0
  82. package/integrations/github/schemas/merge_pull_request.json +14 -0
  83. package/integrations/github/schemas/owner_repo.json +9 -0
  84. package/integrations/github/schemas/update_issue.json +15 -0
  85. package/integrations/google-calendar/__tests__/get_handlers.test.ts +112 -0
  86. package/integrations/google-calendar/__tests__/usage_parity.test.ts +34 -0
  87. package/integrations/google-calendar/__tests__/write_and_admin_handlers.test.ts +161 -0
  88. package/integrations/google-calendar/credentials.json +36 -0
  89. package/integrations/google-calendar/credentials_hint.md +9 -0
  90. package/integrations/google-calendar/handlers/create_event.js +6 -0
  91. package/integrations/google-calendar/handlers/delete_acl.js +6 -0
  92. package/integrations/google-calendar/handlers/delete_event.js +7 -0
  93. package/integrations/google-calendar/handlers/freebusy_query.js +4 -0
  94. package/integrations/google-calendar/handlers/get_acl.js +5 -0
  95. package/integrations/google-calendar/handlers/get_calendar.js +4 -0
  96. package/integrations/google-calendar/handlers/get_event.js +5 -0
  97. package/integrations/google-calendar/handlers/insert_acl.js +6 -0
  98. package/integrations/google-calendar/handlers/list_acl.js +5 -0
  99. package/integrations/google-calendar/handlers/list_calendars.js +4 -0
  100. package/integrations/google-calendar/handlers/list_colors.js +4 -0
  101. package/integrations/google-calendar/handlers/list_events.js +21 -0
  102. package/integrations/google-calendar/handlers/list_settings.js +4 -0
  103. package/integrations/google-calendar/handlers/move_event.js +6 -0
  104. package/integrations/google-calendar/handlers/patch_event.js +5 -0
  105. package/integrations/google-calendar/handlers/quick_add.js +6 -0
  106. package/integrations/google-calendar/handlers/update_acl.js +7 -0
  107. package/integrations/google-calendar/handlers/update_event.js +5 -0
  108. package/integrations/google-calendar/manifest.json +26 -0
  109. package/integrations/google-calendar/schemas/create_event.json +34 -0
  110. package/integrations/google-calendar/schemas/delete_acl.json +9 -0
  111. package/integrations/google-calendar/schemas/empty.json +1 -0
  112. package/integrations/google-calendar/schemas/freebusy_query.json +13 -0
  113. package/integrations/google-calendar/schemas/get_acl.json +9 -0
  114. package/integrations/google-calendar/schemas/id_calendar.json +8 -0
  115. package/integrations/google-calendar/schemas/id_calendar_event.json +9 -0
  116. package/integrations/google-calendar/schemas/insert_acl.json +18 -0
  117. package/integrations/google-calendar/schemas/list_events.json +15 -0
  118. package/integrations/google-calendar/schemas/move_event.json +10 -0
  119. package/integrations/google-calendar/schemas/patch_event.json +10 -0
  120. package/integrations/google-calendar/schemas/quick_add.json +9 -0
  121. package/integrations/google-calendar/schemas/update_acl.json +10 -0
  122. package/integrations/google-calendar/schemas/update_event.json +10 -0
  123. package/integrations/google-docs/__tests__/get_handlers.test.ts +72 -0
  124. package/integrations/google-docs/__tests__/usage_parity.test.ts +34 -0
  125. package/integrations/google-docs/__tests__/write_handlers.test.ts +249 -0
  126. package/integrations/google-docs/credentials.json +36 -0
  127. package/integrations/google-docs/credentials_hint.md +9 -0
  128. package/integrations/google-docs/handlers/append_text.js +12 -0
  129. package/integrations/google-docs/handlers/batch_update.js +13 -0
  130. package/integrations/google-docs/handlers/create_document.js +9 -0
  131. package/integrations/google-docs/handlers/delete_first_match.js +50 -0
  132. package/integrations/google-docs/handlers/get_document.js +12 -0
  133. package/integrations/google-docs/handlers/get_document_structured.js +6 -0
  134. package/integrations/google-docs/handlers/get_document_text.js +17 -0
  135. package/integrations/google-docs/handlers/insert_inline_image_after_first_match.js +41 -0
  136. package/integrations/google-docs/handlers/insert_page_break_after_first_match.js +49 -0
  137. package/integrations/google-docs/handlers/insert_table_after_first_match.js +49 -0
  138. package/integrations/google-docs/handlers/insert_text_after_first_match.js +51 -0
  139. package/integrations/google-docs/handlers/replace_all_text.js +8 -0
  140. package/integrations/google-docs/handlers/style_first_match.js +42 -0
  141. package/integrations/google-docs/handlers/update_document_style.js +8 -0
  142. package/integrations/google-docs/handlers/update_paragraph_style_for_first_match.js +48 -0
  143. package/integrations/google-docs/manifest.json +58 -0
  144. package/integrations/google-docs/schemas/append_text.json +10 -0
  145. package/integrations/google-docs/schemas/apply_text_style.json +13 -0
  146. package/integrations/google-docs/schemas/batch_update.json +16 -0
  147. package/integrations/google-docs/schemas/create_document.json +8 -0
  148. package/integrations/google-docs/schemas/delete_content_range.json +11 -0
  149. package/integrations/google-docs/schemas/delete_first_match.json +10 -0
  150. package/integrations/google-docs/schemas/get_document.json +11 -0
  151. package/integrations/google-docs/schemas/get_document_structured.json +9 -0
  152. package/integrations/google-docs/schemas/get_document_text.json +9 -0
  153. package/integrations/google-docs/schemas/insert_inline_image.json +12 -0
  154. package/integrations/google-docs/schemas/insert_inline_image_after_first_match.json +13 -0
  155. package/integrations/google-docs/schemas/insert_page_break.json +10 -0
  156. package/integrations/google-docs/schemas/insert_page_break_after_first_match.json +11 -0
  157. package/integrations/google-docs/schemas/insert_table.json +12 -0
  158. package/integrations/google-docs/schemas/insert_table_after_first_match.json +13 -0
  159. package/integrations/google-docs/schemas/insert_text_after_first_match.json +12 -0
  160. package/integrations/google-docs/schemas/insert_text_at.json +11 -0
  161. package/integrations/google-docs/schemas/replace_all_text.json +12 -0
  162. package/integrations/google-docs/schemas/style_first_match.json +12 -0
  163. package/integrations/google-docs/schemas/update_document_style.json +11 -0
  164. package/integrations/google-docs/schemas/update_paragraph_style.json +13 -0
  165. package/integrations/google-docs/schemas/update_paragraph_style_for_first_match.json +12 -0
  166. package/integrations/google-sheet/__tests__/get_handlers.test.ts +129 -0
  167. package/integrations/google-sheet/__tests__/usage_parity.test.ts +35 -0
  168. package/integrations/google-sheet/__tests__/write_handlers.test.ts +171 -0
  169. package/integrations/google-sheet/credentials.json +36 -0
  170. package/integrations/google-sheet/credentials_hint.md +9 -0
  171. package/integrations/google-sheet/handlers/append_values.js +18 -0
  172. package/integrations/google-sheet/handlers/batch_clear_values.js +6 -0
  173. package/integrations/google-sheet/handlers/batch_clear_values_by_data_filter.js +6 -0
  174. package/integrations/google-sheet/handlers/batch_get_values.js +16 -0
  175. package/integrations/google-sheet/handlers/batch_update.js +14 -0
  176. package/integrations/google-sheet/handlers/batch_update_values.js +16 -0
  177. package/integrations/google-sheet/handlers/batch_update_values_by_data_filter.js +16 -0
  178. package/integrations/google-sheet/handlers/clear_values.js +6 -0
  179. package/integrations/google-sheet/handlers/copy_to_spreadsheet.js +6 -0
  180. package/integrations/google-sheet/handlers/create_spreadsheet.js +5 -0
  181. package/integrations/google-sheet/handlers/get_developer_metadata.js +6 -0
  182. package/integrations/google-sheet/handlers/get_spreadsheet.js +12 -0
  183. package/integrations/google-sheet/handlers/get_spreadsheet_by_data_filter.js +10 -0
  184. package/integrations/google-sheet/handlers/get_values.js +14 -0
  185. package/integrations/google-sheet/handlers/get_values_by_data_filter.js +14 -0
  186. package/integrations/google-sheet/handlers/search_developer_metadata.js +7 -0
  187. package/integrations/google-sheet/handlers/update_values.js +16 -0
  188. package/integrations/google-sheet/manifest.json +125 -0
  189. package/integrations/google-sheet/schemas/append_values.json +16 -0
  190. package/integrations/google-sheet/schemas/batch_clear_values.json +10 -0
  191. package/integrations/google-sheet/schemas/batch_clear_values_by_data_filter.json +10 -0
  192. package/integrations/google-sheet/schemas/batch_get_values.json +13 -0
  193. package/integrations/google-sheet/schemas/batch_update.json +13 -0
  194. package/integrations/google-sheet/schemas/batch_update_values.json +25 -0
  195. package/integrations/google-sheet/schemas/batch_update_values_by_data_filter.json +25 -0
  196. package/integrations/google-sheet/schemas/clear_values.json +10 -0
  197. package/integrations/google-sheet/schemas/copy_to_spreadsheet.json +11 -0
  198. package/integrations/google-sheet/schemas/create_spreadsheet.json +11 -0
  199. package/integrations/google-sheet/schemas/get_developer_metadata.json +10 -0
  200. package/integrations/google-sheet/schemas/get_spreadsheet.json +15 -0
  201. package/integrations/google-sheet/schemas/get_spreadsheet_by_data_filter.json +11 -0
  202. package/integrations/google-sheet/schemas/get_values.json +13 -0
  203. package/integrations/google-sheet/schemas/get_values_by_data_filter.json +17 -0
  204. package/integrations/google-sheet/schemas/search_developer_metadata.json +14 -0
  205. package/integrations/google-sheet/schemas/update_values.json +15 -0
  206. package/integrations/google-slides/__tests__/get_handlers.test.ts +69 -0
  207. package/integrations/google-slides/__tests__/usage_parity.test.ts +34 -0
  208. package/integrations/google-slides/__tests__/write_handlers.test.ts +125 -0
  209. package/integrations/google-slides/credentials.json +36 -0
  210. package/integrations/google-slides/credentials_hint.md +9 -0
  211. package/integrations/google-slides/handlers/append_text_to_title_of_first_slide.js +17 -0
  212. package/integrations/google-slides/handlers/batch_update.js +15 -0
  213. package/integrations/google-slides/handlers/create_presentation.js +8 -0
  214. package/integrations/google-slides/handlers/create_slide_after_first_match.js +20 -0
  215. package/integrations/google-slides/handlers/get_page_thumbnail.js +12 -0
  216. package/integrations/google-slides/handlers/get_presentation.js +6 -0
  217. package/integrations/google-slides/handlers/insert_image_after_first_match.js +19 -0
  218. package/integrations/google-slides/handlers/insert_shape_after_first_match.js +21 -0
  219. package/integrations/google-slides/handlers/replace_text_first_match.js +9 -0
  220. package/integrations/google-slides/handlers/set_background_color_for_slide_index.js +15 -0
  221. package/integrations/google-slides/handlers/style_text_first_match.js +48 -0
  222. package/integrations/google-slides/manifest.json +41 -0
  223. package/integrations/google-slides/schemas/append_text_to_title_of_first_slide.json +11 -0
  224. package/integrations/google-slides/schemas/batch_update.json +13 -0
  225. package/integrations/google-slides/schemas/create_presentation.json +8 -0
  226. package/integrations/google-slides/schemas/create_slide_after_first_match.json +11 -0
  227. package/integrations/google-slides/schemas/get_page_thumbnail.json +12 -0
  228. package/integrations/google-slides/schemas/get_presentation.json +9 -0
  229. package/integrations/google-slides/schemas/insert_image_after_first_match.json +13 -0
  230. package/integrations/google-slides/schemas/insert_shape_after_first_match.json +13 -0
  231. package/integrations/google-slides/schemas/replace_text_first_match.json +12 -0
  232. package/integrations/google-slides/schemas/set_background_color_for_slide_index.json +11 -0
  233. package/integrations/google-slides/schemas/style_text_first_match.json +12 -0
  234. package/integrations/new_integration_prompt.md +41 -0
  235. package/integrations/notion/__tests__/get_handlers.test.ts +153 -0
  236. package/integrations/notion/__tests__/usage_parity.test.ts +34 -0
  237. package/integrations/notion/__tests__/write_and_admin_handlers.test.ts +190 -0
  238. package/integrations/notion/credentials.json +21 -0
  239. package/integrations/notion/credentials_hint.md +5 -0
  240. package/integrations/notion/handlers/append_block_children.js +7 -0
  241. package/integrations/notion/handlers/create_comment.js +10 -0
  242. package/integrations/notion/handlers/create_database.js +11 -0
  243. package/integrations/notion/handlers/create_page.js +13 -0
  244. package/integrations/notion/handlers/delete_block.js +8 -0
  245. package/integrations/notion/handlers/get_me.js +4 -0
  246. package/integrations/notion/handlers/list_block_children.js +10 -0
  247. package/integrations/notion/handlers/list_comments.js +14 -0
  248. package/integrations/notion/handlers/list_users.js +10 -0
  249. package/integrations/notion/handlers/query_database.js +10 -0
  250. package/integrations/notion/handlers/retrieve_block.js +4 -0
  251. package/integrations/notion/handlers/retrieve_database.js +4 -0
  252. package/integrations/notion/handlers/retrieve_page.js +4 -0
  253. package/integrations/notion/handlers/retrieve_page_property_item.js +10 -0
  254. package/integrations/notion/handlers/retrieve_user.js +4 -0
  255. package/integrations/notion/handlers/search.js +11 -0
  256. package/integrations/notion/handlers/update_block.js +7 -0
  257. package/integrations/notion/handlers/update_database.js +10 -0
  258. package/integrations/notion/handlers/update_page_properties.js +10 -0
  259. package/integrations/notion/manifest.json +139 -0
  260. package/integrations/notion/prompt.md +26 -0
  261. package/integrations/notion/schemas/append_block_children.json +10 -0
  262. package/integrations/notion/schemas/create_comment.json +18 -0
  263. package/integrations/notion/schemas/create_database.json +18 -0
  264. package/integrations/notion/schemas/create_page.json +22 -0
  265. package/integrations/notion/schemas/delete_block.json +9 -0
  266. package/integrations/notion/schemas/empty.json +6 -0
  267. package/integrations/notion/schemas/id_block.json +9 -0
  268. package/integrations/notion/schemas/id_database.json +9 -0
  269. package/integrations/notion/schemas/id_page.json +9 -0
  270. package/integrations/notion/schemas/id_user.json +9 -0
  271. package/integrations/notion/schemas/list_block_children.json +11 -0
  272. package/integrations/notion/schemas/list_comments.json +15 -0
  273. package/integrations/notion/schemas/list_users.json +9 -0
  274. package/integrations/notion/schemas/query_database.json +13 -0
  275. package/integrations/notion/schemas/retrieve_page_property_item.json +12 -0
  276. package/integrations/notion/schemas/search.json +27 -0
  277. package/integrations/notion/schemas/update_block.json +10 -0
  278. package/integrations/notion/schemas/update_database.json +13 -0
  279. package/integrations/notion/schemas/update_page_properties.json +13 -0
  280. package/integrations/trello/__tests__/get_handlers.test.ts +240 -0
  281. package/integrations/trello/__tests__/usage_parity.test.ts +34 -0
  282. package/integrations/trello/__tests__/write_and_admin_handlers.test.ts +189 -0
  283. package/integrations/trello/credentials.json +26 -0
  284. package/integrations/trello/credentials_hint.md +4 -0
  285. package/integrations/trello/handlers/add_checklist_to_card.js +5 -0
  286. package/integrations/trello/handlers/add_member_to_card.js +5 -0
  287. package/integrations/trello/handlers/archive_list.js +5 -0
  288. package/integrations/trello/handlers/create_card.js +13 -0
  289. package/integrations/trello/handlers/create_list.js +7 -0
  290. package/integrations/trello/handlers/delete_card.js +9 -0
  291. package/integrations/trello/handlers/get_board.js +4 -0
  292. package/integrations/trello/handlers/get_board_cards.js +4 -0
  293. package/integrations/trello/handlers/get_board_custom_fields.js +4 -0
  294. package/integrations/trello/handlers/get_board_labels.js +4 -0
  295. package/integrations/trello/handlers/get_board_lists.js +4 -0
  296. package/integrations/trello/handlers/get_board_members.js +4 -0
  297. package/integrations/trello/handlers/get_board_memberships.js +4 -0
  298. package/integrations/trello/handlers/get_card.js +4 -0
  299. package/integrations/trello/handlers/get_card_actions.js +4 -0
  300. package/integrations/trello/handlers/get_card_attachments.js +4 -0
  301. package/integrations/trello/handlers/get_card_checklists.js +4 -0
  302. package/integrations/trello/handlers/get_card_custom_field_items.js +4 -0
  303. package/integrations/trello/handlers/get_card_members.js +4 -0
  304. package/integrations/trello/handlers/get_list.js +4 -0
  305. package/integrations/trello/handlers/get_list_cards.js +4 -0
  306. package/integrations/trello/handlers/get_member.js +4 -0
  307. package/integrations/trello/handlers/get_member_boards.js +4 -0
  308. package/integrations/trello/handlers/get_member_organizations.js +4 -0
  309. package/integrations/trello/handlers/get_organization.js +4 -0
  310. package/integrations/trello/handlers/get_organization_boards.js +4 -0
  311. package/integrations/trello/handlers/move_card_to_list.js +5 -0
  312. package/integrations/trello/handlers/remove_member_from_card.js +9 -0
  313. package/integrations/trello/handlers/search.js +5 -0
  314. package/integrations/trello/handlers/update_card.js +19 -0
  315. package/integrations/trello/handlers/update_list.js +11 -0
  316. package/integrations/trello/manifest.json +231 -0
  317. package/integrations/trello/schemas/add_checklist_to_card.json +10 -0
  318. package/integrations/trello/schemas/add_member_to_card.json +10 -0
  319. package/integrations/trello/schemas/archive_list.json +9 -0
  320. package/integrations/trello/schemas/create_card.json +13 -0
  321. package/integrations/trello/schemas/create_list.json +11 -0
  322. package/integrations/trello/schemas/delete_card.json +9 -0
  323. package/integrations/trello/schemas/display_trello_cards.json +45 -0
  324. package/integrations/trello/schemas/empty.json +5 -0
  325. package/integrations/trello/schemas/get_member.json +5 -0
  326. package/integrations/trello/schemas/id_board.json +8 -0
  327. package/integrations/trello/schemas/id_card.json +8 -0
  328. package/integrations/trello/schemas/id_list.json +8 -0
  329. package/integrations/trello/schemas/id_org.json +8 -0
  330. package/integrations/trello/schemas/move_card_to_list.json +10 -0
  331. package/integrations/trello/schemas/remove_member_from_card.json +10 -0
  332. package/integrations/trello/schemas/search.json +8 -0
  333. package/integrations/trello/schemas/update_card.json +16 -0
  334. package/integrations/trello/schemas/update_list.json +12 -0
  335. package/package.json +45 -0
@@ -0,0 +1,189 @@
1
+ import { beforeAll, describe, expect, it } from 'vitest'
2
+ import { IntegrationProxy } from '../../../src/integrations/proxy.js'
3
+ import { loadIntegrationTools } from '../../../src/integrations/dataLoader.js'
4
+
5
+ interface Ctx {
6
+ boardId?: string
7
+ listId?: string
8
+ listId2?: string
9
+ cardId?: string
10
+ memberId?: string
11
+ }
12
+
13
+ const env = process.env as Record<string, string>
14
+ const hasEnv = (...keys: string[]) => keys.every(k => !!env[k] && env[k].trim().length > 0)
15
+ const suite = hasEnv(
16
+ 'COMMANDABLE_MANAGED_OAUTH_BASE_URL',
17
+ 'COMMANDABLE_MANAGED_OAUTH_SECRET_KEY',
18
+ 'TRELLO_API_KEY',
19
+ 'TRELLO_TEST_CONNECTION_ID',
20
+ )
21
+ ? describe
22
+ : describe.skip
23
+
24
+ suite('trello write handlers (live)', () => {
25
+ const ctx: Ctx = {}
26
+ let buildWrite: (name: string) => ((input: any) => Promise<any>)
27
+ let buildRead: (name: string) => ((input: any) => Promise<any>)
28
+
29
+ beforeAll(async () => {
30
+ const { COMMANDABLE_MANAGED_OAUTH_BASE_URL, COMMANDABLE_MANAGED_OAUTH_SECRET_KEY, TRELLO_API_KEY, TRELLO_TEST_CONNECTION_ID } = env
31
+
32
+ const proxy = new IntegrationProxy({
33
+ managedOAuthBaseUrl: COMMANDABLE_MANAGED_OAUTH_BASE_URL,
34
+ managedOAuthSecretKey: COMMANDABLE_MANAGED_OAUTH_SECRET_KEY,
35
+ trelloApiKey: TRELLO_API_KEY,
36
+ })
37
+ const integrationNode = { id: 'node-trello', type: 'trello', label: 'Trello', connectionId: TRELLO_TEST_CONNECTION_ID } as any
38
+
39
+ const tools = loadIntegrationTools('trello')
40
+ expect(tools).toBeTruthy()
41
+
42
+ buildWrite = (name: string) => {
43
+ const tool = tools!.write.find(t => t.name === name)
44
+ expect(tool, `write tool ${name} exists`).toBeTruthy()
45
+ const integration = { fetch: (path: string, init?: RequestInit) => proxy.call(integrationNode, path, init) }
46
+ const build = new Function('integration', `return (${tool!.handlerCode});`)
47
+ return build(integration) as (input: any) => Promise<any>
48
+ }
49
+
50
+ buildRead = (name: string) => {
51
+ const tool = tools!.read.find(t => t.name === name)
52
+ expect(tool, `read tool ${name} exists`).toBeTruthy()
53
+ const integration = { fetch: (path: string, init?: RequestInit) => proxy.call(integrationNode, path, init) }
54
+ const build = new Function('integration', `return (${tool!.handlerCode});`)
55
+ return build(integration) as (input: any) => Promise<any>
56
+ }
57
+
58
+ // Discover a board and list for tests
59
+ const get_member_boards = buildRead('get_member_boards')
60
+ const boards = await get_member_boards({})
61
+ ctx.boardId = boards?.[0]?.id
62
+ if (ctx.boardId) {
63
+ const get_board_lists = buildRead('get_board_lists')
64
+ const lists = await get_board_lists({ boardId: ctx.boardId })
65
+ ctx.listId = lists?.[0]?.id
66
+ ctx.listId2 = lists?.[1]?.id || ctx.listId
67
+ }
68
+
69
+ // Discover a member to add to card (self)
70
+ const get_member = buildRead('get_member')
71
+ const me = await get_member({})
72
+ ctx.memberId = me?.id
73
+ }, 60000)
74
+
75
+ it('create_card -> get_card -> update_card -> move_card_to_list -> delete_card', async () => {
76
+ if (!ctx.boardId || !ctx.listId || !ctx.memberId)
77
+ return expect(true).toBe(true)
78
+
79
+ // Create card
80
+ const create_card = buildWrite('create_card')
81
+ const created = await create_card({ idList: ctx.listId, name: `CmdCard ${Date.now()}`, desc: 'Initial desc' })
82
+ const cardId = created?.id
83
+ expect(cardId).toBeTruthy()
84
+ ctx.cardId = cardId
85
+
86
+ // Read card
87
+ const get_card = buildRead('get_card')
88
+ const got = await get_card({ cardId })
89
+ expect(got?.id).toBe(cardId)
90
+
91
+ // Update card
92
+ const update_card = buildWrite('update_card')
93
+ const updated = await update_card({ cardId, name: 'Updated Name', desc: 'Updated desc' })
94
+ expect(updated?.id).toBe(cardId)
95
+
96
+ // Verify via read
97
+ const got2 = await get_card({ cardId })
98
+ expect(got2?.name).toBe('Updated Name')
99
+
100
+ // Move card
101
+ if (ctx.listId2 && ctx.listId2 !== ctx.listId) {
102
+ const move_card_to_list = buildWrite('move_card_to_list')
103
+ const moved = await move_card_to_list({ cardId, listId: ctx.listId2 })
104
+ expect(moved?.id).toBe(cardId)
105
+ const got3 = await get_card({ cardId })
106
+ expect(got3?.idList).toBe(ctx.listId2)
107
+ }
108
+
109
+ // Delete card
110
+ const delete_card = buildWrite('delete_card')
111
+ const del = await delete_card({ cardId })
112
+ expect(Boolean(del === '' || del?.limits || del?.id === cardId || (del && typeof del === 'object'))).toBe(true)
113
+ }, 120000)
114
+
115
+ it('add_member_to_card -> get_card_members -> remove_member_from_card', async () => {
116
+ if (!ctx.listId || !ctx.memberId)
117
+ return expect(true).toBe(true)
118
+
119
+ // Create an isolated card for this test
120
+ const create_card = buildWrite('create_card')
121
+ const created = await create_card({ idList: ctx.listId, name: `CmdCard Members ${Date.now()}` })
122
+ const cardId = created?.id
123
+ expect(cardId).toBeTruthy()
124
+
125
+ const add_member_to_card = buildWrite('add_member_to_card')
126
+ const added = await add_member_to_card({ cardId, memberId: ctx.memberId })
127
+ expect(added).toBeTruthy()
128
+
129
+ const get_card_members = buildRead('get_card_members')
130
+ const members = await get_card_members({ cardId })
131
+ const hasMember = (members || []).some((m: any) => m?.id === ctx.memberId)
132
+ expect(hasMember).toBe(true)
133
+
134
+ const remove_member_from_card = buildWrite('remove_member_from_card')
135
+ const removed = await remove_member_from_card({ cardId, memberId: ctx.memberId })
136
+ expect(removed === '' || (removed && typeof removed === 'object')).toBe(true)
137
+
138
+ // Cleanup
139
+ const delete_card = buildWrite('delete_card')
140
+ await delete_card({ cardId })
141
+ }, 90000)
142
+
143
+ it('add_checklist_to_card -> get_card_checklists', async () => {
144
+ if (!ctx.listId)
145
+ return expect(true).toBe(true)
146
+
147
+ // Create an isolated card for this test
148
+ const create_card = buildWrite('create_card')
149
+ const createdCard = await create_card({ idList: ctx.listId, name: `CmdCard Checklist ${Date.now()}` })
150
+ const cardId = createdCard?.id
151
+ expect(cardId).toBeTruthy()
152
+
153
+ const add_checklist_to_card = buildWrite('add_checklist_to_card')
154
+ const created = await add_checklist_to_card({ cardId, name: `Checklist ${Date.now()}` })
155
+ expect(created?.id).toBeTruthy()
156
+
157
+ const get_card_checklists = buildRead('get_card_checklists')
158
+ const lists = await get_card_checklists({ cardId })
159
+ expect(Array.isArray(lists)).toBe(true)
160
+
161
+ // Cleanup
162
+ const delete_card = buildWrite('delete_card')
163
+ await delete_card({ cardId })
164
+ }, 60000)
165
+
166
+ it('create_list -> get_list -> update_list -> archive_list', async () => {
167
+ if (!ctx.boardId)
168
+ return expect(true).toBe(true)
169
+ const create_list = buildWrite('create_list')
170
+ const created = await create_list({ idBoard: ctx.boardId, name: `CmdList ${Date.now()}` })
171
+ const listId = created?.id
172
+ expect(listId).toBeTruthy()
173
+
174
+ const get_list = buildRead('get_list')
175
+ const got = await get_list({ listId })
176
+ expect(got?.id).toBe(listId)
177
+
178
+ const update_list = buildWrite('update_list')
179
+ const updated = await update_list({ listId, name: 'Updated List Name' })
180
+ expect(updated?.id).toBe(listId)
181
+
182
+ const got2 = await get_list({ listId })
183
+ expect(got2?.name).toBe('Updated List Name')
184
+
185
+ const archive_list = buildWrite('archive_list')
186
+ const archived = await archive_list({ listId })
187
+ expect(archived?.closed === true).toBe(true)
188
+ }, 120000)
189
+ })
@@ -0,0 +1,26 @@
1
+ {
2
+ "schema": {
3
+ "type": "object",
4
+ "properties": {
5
+ "apiKey": {
6
+ "type": "string",
7
+ "title": "API Key",
8
+ "description": "Your Trello API key from https://trello.com/power-ups/admin"
9
+ },
10
+ "apiToken": {
11
+ "type": "string",
12
+ "title": "API Token",
13
+ "description": "Your Trello API token (\"token\" param). Generate one via Trello's authorize flow."
14
+ }
15
+ },
16
+ "required": ["apiKey", "apiToken"],
17
+ "additionalProperties": false
18
+ },
19
+ "injection": {
20
+ "query": {
21
+ "key": "{{apiKey}}",
22
+ "token": "{{apiToken}}"
23
+ }
24
+ }
25
+ }
26
+
@@ -0,0 +1,4 @@
1
+ 1. Go to `https://trello.com/power-ups/admin`
2
+ 2. Create a new app
3
+ 3. Navigate to **API Key** and copy your API key
4
+ 4. Click **Generate a Token** and copy the token value
@@ -0,0 +1,5 @@
1
+ async (input) => {
2
+ const params = new URLSearchParams({ idCard: input.cardId, name: input.name })
3
+ const res = await integration.fetch(`/checklists?${params.toString()}`, { method: 'POST' })
4
+ return await res.json()
5
+ }
@@ -0,0 +1,5 @@
1
+ async (input) => {
2
+ const params = new URLSearchParams({ value: input.memberId })
3
+ const res = await integration.fetch(`/cards/${encodeURIComponent(input.cardId)}/idMembers?${params.toString()}`, { method: 'POST' })
4
+ return await res.json()
5
+ }
@@ -0,0 +1,5 @@
1
+ async (input) => {
2
+ const params = new URLSearchParams({ value: 'true' })
3
+ const res = await integration.fetch(`/lists/${encodeURIComponent(input.listId)}/closed?${params.toString()}`, { method: 'PUT' })
4
+ return await res.json()
5
+ }
@@ -0,0 +1,13 @@
1
+ async (input) => {
2
+ const params = new URLSearchParams()
3
+ params.set('idList', input.idList)
4
+ params.set('name', input.name)
5
+ if (input.desc !== undefined)
6
+ params.set('desc', input.desc)
7
+ if (input.due !== undefined && input.due !== null)
8
+ params.set('due', input.due)
9
+ if (input.pos !== undefined && input.pos !== null)
10
+ params.set('pos', String(input.pos))
11
+ const res = await integration.fetch(`/cards?${params.toString()}`, { method: 'POST' })
12
+ return await res.json()
13
+ }
@@ -0,0 +1,7 @@
1
+ async (input) => {
2
+ const params = new URLSearchParams({ idBoard: input.idBoard, name: input.name })
3
+ if (input.pos !== undefined && input.pos !== null)
4
+ params.set('pos', String(input.pos))
5
+ const res = await integration.fetch(`/lists?${params.toString()}`, { method: 'POST' })
6
+ return await res.json()
7
+ }
@@ -0,0 +1,9 @@
1
+ async (input) => {
2
+ const res = await integration.fetch(`/cards/${encodeURIComponent(input.cardId)}`, { method: 'DELETE' })
3
+ try {
4
+ return await res.json()
5
+ }
6
+ catch {
7
+ return ''
8
+ }
9
+ }
@@ -0,0 +1,4 @@
1
+ async (input) => {
2
+ const res = await integration.fetch(`/boards/${input.boardId}`)
3
+ return await res.json()
4
+ }
@@ -0,0 +1,4 @@
1
+ async (input) => {
2
+ const res = await integration.fetch(`/boards/${input.boardId}/cards`)
3
+ return await res.json()
4
+ }
@@ -0,0 +1,4 @@
1
+ async (input) => {
2
+ const res = await integration.fetch(`/boards/${input.boardId}/customFields`)
3
+ return await res.json()
4
+ }
@@ -0,0 +1,4 @@
1
+ async (input) => {
2
+ const res = await integration.fetch(`/boards/${input.boardId}/labels`)
3
+ return await res.json()
4
+ }
@@ -0,0 +1,4 @@
1
+ async (input) => {
2
+ const res = await integration.fetch(`/boards/${input.boardId}/lists`)
3
+ return await res.json()
4
+ }
@@ -0,0 +1,4 @@
1
+ async (input) => {
2
+ const res = await integration.fetch(`/boards/${input.boardId}/members`)
3
+ return await res.json()
4
+ }
@@ -0,0 +1,4 @@
1
+ async (input) => {
2
+ const res = await integration.fetch(`/boards/${input.boardId}/memberships`)
3
+ return await res.json()
4
+ }
@@ -0,0 +1,4 @@
1
+ async (input) => {
2
+ const res = await integration.fetch(`/cards/${input.cardId}`)
3
+ return await res.json()
4
+ }
@@ -0,0 +1,4 @@
1
+ async (input) => {
2
+ const res = await integration.fetch(`/cards/${input.cardId}/actions`)
3
+ return await res.json()
4
+ }
@@ -0,0 +1,4 @@
1
+ async (input) => {
2
+ const res = await integration.fetch(`/cards/${input.cardId}/attachments`)
3
+ return await res.json()
4
+ }
@@ -0,0 +1,4 @@
1
+ async (input) => {
2
+ const res = await integration.fetch(`/cards/${input.cardId}/checklists`)
3
+ return await res.json()
4
+ }
@@ -0,0 +1,4 @@
1
+ async (input) => {
2
+ const res = await integration.fetch(`/cards/${input.cardId}/customFieldItems`)
3
+ return await res.json()
4
+ }
@@ -0,0 +1,4 @@
1
+ async (input) => {
2
+ const res = await integration.fetch(`/cards/${input.cardId}/members`)
3
+ return await res.json()
4
+ }
@@ -0,0 +1,4 @@
1
+ async (input) => {
2
+ const res = await integration.fetch(`/lists/${input.listId}`)
3
+ return await res.json()
4
+ }
@@ -0,0 +1,4 @@
1
+ async (input) => {
2
+ const res = await integration.fetch(`/lists/${input.listId}/cards`)
3
+ return await res.json()
4
+ }
@@ -0,0 +1,4 @@
1
+ async (input) => {
2
+ const res = await integration.fetch(`/members/me`)
3
+ return await res.json()
4
+ }
@@ -0,0 +1,4 @@
1
+ async (input) => {
2
+ const res = await integration.fetch(`/members/me/boards`)
3
+ return await res.json()
4
+ }
@@ -0,0 +1,4 @@
1
+ async (input) => {
2
+ const res = await integration.fetch(`/members/me/organizations`)
3
+ return await res.json()
4
+ }
@@ -0,0 +1,4 @@
1
+ async (input) => {
2
+ const res = await integration.fetch(`/organizations/${input.orgId}`)
3
+ return await res.json()
4
+ }
@@ -0,0 +1,4 @@
1
+ async (input) => {
2
+ const res = await integration.fetch(`/organizations/${input.orgId}/boards`)
3
+ return await res.json()
4
+ }
@@ -0,0 +1,5 @@
1
+ async (input) => {
2
+ const params = new URLSearchParams({ value: input.listId })
3
+ const res = await integration.fetch(`/cards/${encodeURIComponent(input.cardId)}/idList?${params.toString()}`, { method: 'PUT' })
4
+ return await res.json()
5
+ }
@@ -0,0 +1,9 @@
1
+ async (input) => {
2
+ const res = await integration.fetch(`/cards/${encodeURIComponent(input.cardId)}/idMembers/${encodeURIComponent(input.memberId)}`, { method: 'DELETE' })
3
+ try {
4
+ return await res.json()
5
+ }
6
+ catch {
7
+ return ''
8
+ }
9
+ }
@@ -0,0 +1,5 @@
1
+ async (input) => {
2
+ const params = new URLSearchParams({ query: input.query })
3
+ const res = await integration.fetch(`/search?${params.toString()}`)
4
+ return await res.json()
5
+ }
@@ -0,0 +1,19 @@
1
+ async (input) => {
2
+ const params = new URLSearchParams()
3
+ if (input.name !== undefined && input.name !== null)
4
+ params.set('name', input.name)
5
+ if (input.desc !== undefined && input.desc !== null)
6
+ params.set('desc', input.desc)
7
+ if (input.due !== undefined)
8
+ params.set('due', input.due === null ? '' : input.due)
9
+ if (input.dueComplete !== undefined && input.dueComplete !== null)
10
+ params.set('dueComplete', String(input.dueComplete))
11
+ if (input.closed !== undefined && input.closed !== null)
12
+ params.set('closed', String(input.closed))
13
+ if (input.idList !== undefined && input.idList !== null)
14
+ params.set('idList', input.idList)
15
+ if (input.pos !== undefined && input.pos !== null)
16
+ params.set('pos', String(input.pos))
17
+ const res = await integration.fetch(`/cards/${encodeURIComponent(input.cardId)}?${params.toString()}`, { method: 'PUT' })
18
+ return await res.json()
19
+ }
@@ -0,0 +1,11 @@
1
+ async (input) => {
2
+ const params = new URLSearchParams()
3
+ if (input.name !== undefined && input.name !== null)
4
+ params.set('name', input.name)
5
+ if (input.closed !== undefined && input.closed !== null)
6
+ params.set('closed', String(input.closed))
7
+ if (input.pos !== undefined && input.pos !== null)
8
+ params.set('pos', String(input.pos))
9
+ const res = await integration.fetch(`/lists/${encodeURIComponent(input.listId)}?${params.toString()}`, { method: 'PUT' })
10
+ return await res.json()
11
+ }