@commandable/mcp 0.0.1 → 0.0.4

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 (364) hide show
  1. package/README.md +25 -4
  2. package/dist/cli/index.d.ts.map +1 -1
  3. package/dist/cli/index.js +82 -5
  4. package/dist/cli/index.js.map +1 -1
  5. package/dist/cli/setup.d.ts.map +1 -1
  6. package/dist/cli/setup.js +74 -51
  7. package/dist/cli/setup.js.map +1 -1
  8. package/dist/config/configApply.d.ts +16 -0
  9. package/dist/config/configApply.d.ts.map +1 -0
  10. package/dist/config/configApply.js +74 -0
  11. package/dist/config/configApply.js.map +1 -0
  12. package/dist/config/configLoader.d.ts +9 -0
  13. package/dist/config/configLoader.d.ts.map +1 -0
  14. package/dist/config/configLoader.js +75 -0
  15. package/dist/config/configLoader.js.map +1 -0
  16. package/dist/config/configSchema.d.ts +29 -0
  17. package/dist/config/configSchema.d.ts.map +1 -0
  18. package/dist/config/configSchema.js +17 -0
  19. package/dist/config/configSchema.js.map +1 -0
  20. package/dist/db/client.d.ts.map +1 -1
  21. package/dist/db/client.js +8 -1
  22. package/dist/db/client.js.map +1 -1
  23. package/dist/db/integrationStore.d.ts.map +1 -1
  24. package/dist/db/integrationStore.js +3 -0
  25. package/dist/db/integrationStore.js.map +1 -1
  26. package/dist/db/migrate.d.ts.map +1 -1
  27. package/dist/db/migrate.js +2 -0
  28. package/dist/db/migrate.js.map +1 -1
  29. package/dist/db/schema.d.ts +36 -0
  30. package/dist/db/schema.d.ts.map +1 -1
  31. package/dist/db/schema.js +2 -0
  32. package/dist/db/schema.js.map +1 -1
  33. package/dist/index.d.ts +5 -1
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +5 -1
  36. package/dist/index.js.map +1 -1
  37. package/dist/integrations/actionsFactory.js +1 -1
  38. package/dist/integrations/actionsFactory.js.map +1 -1
  39. package/dist/integrations/catalog.d.ts +3 -4
  40. package/dist/integrations/catalog.d.ts.map +1 -1
  41. package/dist/integrations/catalog.js +2 -37
  42. package/dist/integrations/catalog.js.map +1 -1
  43. package/dist/integrations/dataLoader.d.ts +2 -46
  44. package/dist/integrations/dataLoader.d.ts.map +1 -1
  45. package/dist/integrations/dataLoader.js +1 -125
  46. package/dist/integrations/dataLoader.js.map +1 -1
  47. package/dist/integrations/providerRegistry.d.ts.map +1 -1
  48. package/dist/integrations/providerRegistry.js +10 -6
  49. package/dist/integrations/providerRegistry.js.map +1 -1
  50. package/dist/integrations/proxy.d.ts.map +1 -1
  51. package/dist/integrations/proxy.js +24 -27
  52. package/dist/integrations/proxy.js.map +1 -1
  53. package/dist/mcp/auth.d.ts +18 -0
  54. package/dist/mcp/auth.d.ts.map +1 -0
  55. package/dist/mcp/auth.js +45 -0
  56. package/dist/mcp/auth.js.map +1 -0
  57. package/dist/mcp/handlers.d.ts +12 -0
  58. package/dist/mcp/handlers.d.ts.map +1 -0
  59. package/dist/mcp/handlers.js +39 -0
  60. package/dist/mcp/handlers.js.map +1 -0
  61. package/dist/mcp/server.d.ts.map +1 -1
  62. package/dist/mcp/server.js +2 -38
  63. package/dist/mcp/server.js.map +1 -1
  64. package/dist/types.d.ts +1 -7
  65. package/dist/types.d.ts.map +1 -1
  66. package/package.json +10 -7
  67. package/integration-data/README.md +0 -52
  68. package/integration-data/airtable/credentials.json +0 -20
  69. package/integration-data/airtable/credentials_hint.md +0 -4
  70. package/integration-data/airtable/handlers/create_record.js +0 -12
  71. package/integration-data/airtable/handlers/delete_record.js +0 -7
  72. package/integration-data/airtable/handlers/get_record.js +0 -4
  73. package/integration-data/airtable/handlers/get_table_schema.js +0 -6
  74. package/integration-data/airtable/handlers/list_bases.js +0 -4
  75. package/integration-data/airtable/handlers/list_records.js +0 -25
  76. package/integration-data/airtable/handlers/list_table_fields.js +0 -6
  77. package/integration-data/airtable/handlers/list_tables.js +0 -4
  78. package/integration-data/airtable/handlers/list_views.js +0 -6
  79. package/integration-data/airtable/handlers/search_records.js +0 -6
  80. package/integration-data/airtable/handlers/update_record.js +0 -11
  81. package/integration-data/airtable/manifest.json +0 -83
  82. package/integration-data/airtable/schemas/create_record.json +0 -12
  83. package/integration-data/airtable/schemas/delete_record.json +0 -11
  84. package/integration-data/airtable/schemas/empty.json +0 -6
  85. package/integration-data/airtable/schemas/get_record.json +0 -11
  86. package/integration-data/airtable/schemas/id_base.json +0 -9
  87. package/integration-data/airtable/schemas/id_base_table.json +0 -10
  88. package/integration-data/airtable/schemas/list_records.json +0 -26
  89. package/integration-data/airtable/schemas/search_records.json +0 -12
  90. package/integration-data/airtable/schemas/update_record.json +0 -13
  91. package/integration-data/github/credentials.json +0 -20
  92. package/integration-data/github/credentials_hint.md +0 -7
  93. package/integration-data/github/handlers/add_labels_to_issue.js +0 -12
  94. package/integration-data/github/handlers/close_issue.js +0 -5
  95. package/integration-data/github/handlers/comment_on_issue.js +0 -5
  96. package/integration-data/github/handlers/create_branch.js +0 -33
  97. package/integration-data/github/handlers/create_commit.js +0 -91
  98. package/integration-data/github/handlers/create_issue.js +0 -10
  99. package/integration-data/github/handlers/create_or_update_file.js +0 -21
  100. package/integration-data/github/handlers/create_pull_request.js +0 -16
  101. package/integration-data/github/handlers/create_repo.js +0 -11
  102. package/integration-data/github/handlers/delete_repo.js +0 -6
  103. package/integration-data/github/handlers/get_issue.js +0 -4
  104. package/integration-data/github/handlers/get_repo.js +0 -4
  105. package/integration-data/github/handlers/list_branches.js +0 -4
  106. package/integration-data/github/handlers/list_commits.js +0 -12
  107. package/integration-data/github/handlers/list_issues.js +0 -12
  108. package/integration-data/github/handlers/list_pull_requests.js +0 -8
  109. package/integration-data/github/handlers/list_repos_install.js +0 -4
  110. package/integration-data/github/handlers/list_repos_user.js +0 -4
  111. package/integration-data/github/handlers/merge_pull_request.js +0 -14
  112. package/integration-data/github/handlers/update_issue.js +0 -15
  113. package/integration-data/github/manifest.json +0 -26
  114. package/integration-data/github/schemas/add_labels_to_issue.json +0 -12
  115. package/integration-data/github/schemas/close_issue.json +0 -10
  116. package/integration-data/github/schemas/comment_on_issue.json +0 -11
  117. package/integration-data/github/schemas/create_branch.json +0 -12
  118. package/integration-data/github/schemas/create_commit.json +0 -25
  119. package/integration-data/github/schemas/create_issue.json +0 -13
  120. package/integration-data/github/schemas/create_or_update_file.json +0 -15
  121. package/integration-data/github/schemas/create_pull_request.json +0 -15
  122. package/integration-data/github/schemas/create_repo.json +0 -12
  123. package/integration-data/github/schemas/delete_repo.json +0 -10
  124. package/integration-data/github/schemas/empty.json +0 -5
  125. package/integration-data/github/schemas/get_issue.json +0 -10
  126. package/integration-data/github/schemas/get_repo.json +0 -9
  127. package/integration-data/github/schemas/list_commits.json +0 -12
  128. package/integration-data/github/schemas/list_issues.json +0 -12
  129. package/integration-data/github/schemas/list_pull_requests.json +0 -10
  130. package/integration-data/github/schemas/merge_pull_request.json +0 -14
  131. package/integration-data/github/schemas/owner_repo.json +0 -9
  132. package/integration-data/github/schemas/update_issue.json +0 -15
  133. package/integration-data/google-calendar/credentials.json +0 -36
  134. package/integration-data/google-calendar/credentials_hint.md +0 -9
  135. package/integration-data/google-calendar/handlers/create_event.js +0 -6
  136. package/integration-data/google-calendar/handlers/delete_acl.js +0 -6
  137. package/integration-data/google-calendar/handlers/delete_event.js +0 -7
  138. package/integration-data/google-calendar/handlers/freebusy_query.js +0 -4
  139. package/integration-data/google-calendar/handlers/get_acl.js +0 -5
  140. package/integration-data/google-calendar/handlers/get_calendar.js +0 -4
  141. package/integration-data/google-calendar/handlers/get_event.js +0 -5
  142. package/integration-data/google-calendar/handlers/insert_acl.js +0 -6
  143. package/integration-data/google-calendar/handlers/list_acl.js +0 -5
  144. package/integration-data/google-calendar/handlers/list_calendars.js +0 -4
  145. package/integration-data/google-calendar/handlers/list_colors.js +0 -4
  146. package/integration-data/google-calendar/handlers/list_events.js +0 -21
  147. package/integration-data/google-calendar/handlers/list_settings.js +0 -4
  148. package/integration-data/google-calendar/handlers/move_event.js +0 -6
  149. package/integration-data/google-calendar/handlers/patch_event.js +0 -5
  150. package/integration-data/google-calendar/handlers/quick_add.js +0 -6
  151. package/integration-data/google-calendar/handlers/update_acl.js +0 -7
  152. package/integration-data/google-calendar/handlers/update_event.js +0 -5
  153. package/integration-data/google-calendar/manifest.json +0 -26
  154. package/integration-data/google-calendar/schemas/create_event.json +0 -34
  155. package/integration-data/google-calendar/schemas/delete_acl.json +0 -9
  156. package/integration-data/google-calendar/schemas/empty.json +0 -1
  157. package/integration-data/google-calendar/schemas/freebusy_query.json +0 -13
  158. package/integration-data/google-calendar/schemas/get_acl.json +0 -9
  159. package/integration-data/google-calendar/schemas/id_calendar.json +0 -8
  160. package/integration-data/google-calendar/schemas/id_calendar_event.json +0 -9
  161. package/integration-data/google-calendar/schemas/insert_acl.json +0 -18
  162. package/integration-data/google-calendar/schemas/list_events.json +0 -15
  163. package/integration-data/google-calendar/schemas/move_event.json +0 -10
  164. package/integration-data/google-calendar/schemas/patch_event.json +0 -10
  165. package/integration-data/google-calendar/schemas/quick_add.json +0 -9
  166. package/integration-data/google-calendar/schemas/update_acl.json +0 -10
  167. package/integration-data/google-calendar/schemas/update_event.json +0 -10
  168. package/integration-data/google-docs/credentials.json +0 -36
  169. package/integration-data/google-docs/credentials_hint.md +0 -9
  170. package/integration-data/google-docs/handlers/append_text.js +0 -12
  171. package/integration-data/google-docs/handlers/batch_update.js +0 -13
  172. package/integration-data/google-docs/handlers/create_document.js +0 -9
  173. package/integration-data/google-docs/handlers/delete_first_match.js +0 -50
  174. package/integration-data/google-docs/handlers/get_document.js +0 -12
  175. package/integration-data/google-docs/handlers/get_document_structured.js +0 -6
  176. package/integration-data/google-docs/handlers/get_document_text.js +0 -17
  177. package/integration-data/google-docs/handlers/insert_inline_image_after_first_match.js +0 -41
  178. package/integration-data/google-docs/handlers/insert_page_break_after_first_match.js +0 -49
  179. package/integration-data/google-docs/handlers/insert_table_after_first_match.js +0 -49
  180. package/integration-data/google-docs/handlers/insert_text_after_first_match.js +0 -51
  181. package/integration-data/google-docs/handlers/replace_all_text.js +0 -8
  182. package/integration-data/google-docs/handlers/style_first_match.js +0 -42
  183. package/integration-data/google-docs/handlers/update_document_style.js +0 -8
  184. package/integration-data/google-docs/handlers/update_paragraph_style_for_first_match.js +0 -48
  185. package/integration-data/google-docs/manifest.json +0 -58
  186. package/integration-data/google-docs/schemas/append_text.json +0 -10
  187. package/integration-data/google-docs/schemas/apply_text_style.json +0 -13
  188. package/integration-data/google-docs/schemas/batch_update.json +0 -16
  189. package/integration-data/google-docs/schemas/create_document.json +0 -8
  190. package/integration-data/google-docs/schemas/delete_content_range.json +0 -11
  191. package/integration-data/google-docs/schemas/delete_first_match.json +0 -10
  192. package/integration-data/google-docs/schemas/get_document.json +0 -11
  193. package/integration-data/google-docs/schemas/get_document_structured.json +0 -9
  194. package/integration-data/google-docs/schemas/get_document_text.json +0 -9
  195. package/integration-data/google-docs/schemas/insert_inline_image.json +0 -12
  196. package/integration-data/google-docs/schemas/insert_inline_image_after_first_match.json +0 -13
  197. package/integration-data/google-docs/schemas/insert_page_break.json +0 -10
  198. package/integration-data/google-docs/schemas/insert_page_break_after_first_match.json +0 -11
  199. package/integration-data/google-docs/schemas/insert_table.json +0 -12
  200. package/integration-data/google-docs/schemas/insert_table_after_first_match.json +0 -13
  201. package/integration-data/google-docs/schemas/insert_text_after_first_match.json +0 -12
  202. package/integration-data/google-docs/schemas/insert_text_at.json +0 -11
  203. package/integration-data/google-docs/schemas/replace_all_text.json +0 -12
  204. package/integration-data/google-docs/schemas/style_first_match.json +0 -12
  205. package/integration-data/google-docs/schemas/update_document_style.json +0 -11
  206. package/integration-data/google-docs/schemas/update_paragraph_style.json +0 -13
  207. package/integration-data/google-docs/schemas/update_paragraph_style_for_first_match.json +0 -12
  208. package/integration-data/google-sheet/credentials.json +0 -36
  209. package/integration-data/google-sheet/credentials_hint.md +0 -9
  210. package/integration-data/google-sheet/handlers/append_values.js +0 -18
  211. package/integration-data/google-sheet/handlers/batch_clear_values.js +0 -6
  212. package/integration-data/google-sheet/handlers/batch_clear_values_by_data_filter.js +0 -6
  213. package/integration-data/google-sheet/handlers/batch_get_values.js +0 -16
  214. package/integration-data/google-sheet/handlers/batch_update.js +0 -14
  215. package/integration-data/google-sheet/handlers/batch_update_values.js +0 -16
  216. package/integration-data/google-sheet/handlers/batch_update_values_by_data_filter.js +0 -16
  217. package/integration-data/google-sheet/handlers/clear_values.js +0 -6
  218. package/integration-data/google-sheet/handlers/copy_to_spreadsheet.js +0 -6
  219. package/integration-data/google-sheet/handlers/create_spreadsheet.js +0 -5
  220. package/integration-data/google-sheet/handlers/get_developer_metadata.js +0 -6
  221. package/integration-data/google-sheet/handlers/get_spreadsheet.js +0 -12
  222. package/integration-data/google-sheet/handlers/get_spreadsheet_by_data_filter.js +0 -10
  223. package/integration-data/google-sheet/handlers/get_values.js +0 -14
  224. package/integration-data/google-sheet/handlers/get_values_by_data_filter.js +0 -14
  225. package/integration-data/google-sheet/handlers/search_developer_metadata.js +0 -7
  226. package/integration-data/google-sheet/handlers/update_values.js +0 -16
  227. package/integration-data/google-sheet/manifest.json +0 -125
  228. package/integration-data/google-sheet/schemas/append_values.json +0 -16
  229. package/integration-data/google-sheet/schemas/batch_clear_values.json +0 -10
  230. package/integration-data/google-sheet/schemas/batch_clear_values_by_data_filter.json +0 -10
  231. package/integration-data/google-sheet/schemas/batch_get_values.json +0 -13
  232. package/integration-data/google-sheet/schemas/batch_update.json +0 -13
  233. package/integration-data/google-sheet/schemas/batch_update_values.json +0 -25
  234. package/integration-data/google-sheet/schemas/batch_update_values_by_data_filter.json +0 -25
  235. package/integration-data/google-sheet/schemas/clear_values.json +0 -10
  236. package/integration-data/google-sheet/schemas/copy_to_spreadsheet.json +0 -11
  237. package/integration-data/google-sheet/schemas/create_spreadsheet.json +0 -11
  238. package/integration-data/google-sheet/schemas/get_developer_metadata.json +0 -10
  239. package/integration-data/google-sheet/schemas/get_spreadsheet.json +0 -15
  240. package/integration-data/google-sheet/schemas/get_spreadsheet_by_data_filter.json +0 -11
  241. package/integration-data/google-sheet/schemas/get_values.json +0 -13
  242. package/integration-data/google-sheet/schemas/get_values_by_data_filter.json +0 -17
  243. package/integration-data/google-sheet/schemas/search_developer_metadata.json +0 -14
  244. package/integration-data/google-sheet/schemas/update_values.json +0 -15
  245. package/integration-data/google-slides/credentials.json +0 -36
  246. package/integration-data/google-slides/credentials_hint.md +0 -9
  247. package/integration-data/google-slides/handlers/append_text_to_title_of_first_slide.js +0 -17
  248. package/integration-data/google-slides/handlers/batch_update.js +0 -15
  249. package/integration-data/google-slides/handlers/create_presentation.js +0 -8
  250. package/integration-data/google-slides/handlers/create_slide_after_first_match.js +0 -20
  251. package/integration-data/google-slides/handlers/get_page_thumbnail.js +0 -12
  252. package/integration-data/google-slides/handlers/get_presentation.js +0 -6
  253. package/integration-data/google-slides/handlers/insert_image_after_first_match.js +0 -19
  254. package/integration-data/google-slides/handlers/insert_shape_after_first_match.js +0 -21
  255. package/integration-data/google-slides/handlers/replace_text_first_match.js +0 -9
  256. package/integration-data/google-slides/handlers/set_background_color_for_slide_index.js +0 -15
  257. package/integration-data/google-slides/handlers/style_text_first_match.js +0 -48
  258. package/integration-data/google-slides/manifest.json +0 -41
  259. package/integration-data/google-slides/schemas/append_text_to_title_of_first_slide.json +0 -11
  260. package/integration-data/google-slides/schemas/batch_update.json +0 -13
  261. package/integration-data/google-slides/schemas/create_presentation.json +0 -8
  262. package/integration-data/google-slides/schemas/create_slide_after_first_match.json +0 -11
  263. package/integration-data/google-slides/schemas/get_page_thumbnail.json +0 -12
  264. package/integration-data/google-slides/schemas/get_presentation.json +0 -9
  265. package/integration-data/google-slides/schemas/insert_image_after_first_match.json +0 -13
  266. package/integration-data/google-slides/schemas/insert_shape_after_first_match.json +0 -13
  267. package/integration-data/google-slides/schemas/replace_text_first_match.json +0 -12
  268. package/integration-data/google-slides/schemas/set_background_color_for_slide_index.json +0 -11
  269. package/integration-data/google-slides/schemas/style_text_first_match.json +0 -12
  270. package/integration-data/new_integration_prompt.md +0 -41
  271. package/integration-data/notion/credentials.json +0 -21
  272. package/integration-data/notion/credentials_hint.md +0 -5
  273. package/integration-data/notion/handlers/append_block_children.js +0 -7
  274. package/integration-data/notion/handlers/create_comment.js +0 -10
  275. package/integration-data/notion/handlers/create_database.js +0 -11
  276. package/integration-data/notion/handlers/create_page.js +0 -13
  277. package/integration-data/notion/handlers/delete_block.js +0 -8
  278. package/integration-data/notion/handlers/get_me.js +0 -4
  279. package/integration-data/notion/handlers/list_block_children.js +0 -10
  280. package/integration-data/notion/handlers/list_comments.js +0 -14
  281. package/integration-data/notion/handlers/list_users.js +0 -10
  282. package/integration-data/notion/handlers/query_database.js +0 -10
  283. package/integration-data/notion/handlers/retrieve_block.js +0 -4
  284. package/integration-data/notion/handlers/retrieve_database.js +0 -4
  285. package/integration-data/notion/handlers/retrieve_page.js +0 -4
  286. package/integration-data/notion/handlers/retrieve_page_property_item.js +0 -10
  287. package/integration-data/notion/handlers/retrieve_user.js +0 -4
  288. package/integration-data/notion/handlers/search.js +0 -11
  289. package/integration-data/notion/handlers/update_block.js +0 -7
  290. package/integration-data/notion/handlers/update_database.js +0 -10
  291. package/integration-data/notion/handlers/update_page_properties.js +0 -10
  292. package/integration-data/notion/manifest.json +0 -139
  293. package/integration-data/notion/prompt.md +0 -26
  294. package/integration-data/notion/schemas/append_block_children.json +0 -10
  295. package/integration-data/notion/schemas/create_comment.json +0 -18
  296. package/integration-data/notion/schemas/create_database.json +0 -18
  297. package/integration-data/notion/schemas/create_page.json +0 -22
  298. package/integration-data/notion/schemas/delete_block.json +0 -9
  299. package/integration-data/notion/schemas/empty.json +0 -6
  300. package/integration-data/notion/schemas/id_block.json +0 -9
  301. package/integration-data/notion/schemas/id_database.json +0 -9
  302. package/integration-data/notion/schemas/id_page.json +0 -9
  303. package/integration-data/notion/schemas/id_user.json +0 -9
  304. package/integration-data/notion/schemas/list_block_children.json +0 -11
  305. package/integration-data/notion/schemas/list_comments.json +0 -15
  306. package/integration-data/notion/schemas/list_users.json +0 -9
  307. package/integration-data/notion/schemas/query_database.json +0 -13
  308. package/integration-data/notion/schemas/retrieve_page_property_item.json +0 -12
  309. package/integration-data/notion/schemas/search.json +0 -27
  310. package/integration-data/notion/schemas/update_block.json +0 -10
  311. package/integration-data/notion/schemas/update_database.json +0 -13
  312. package/integration-data/notion/schemas/update_page_properties.json +0 -13
  313. package/integration-data/trello/credentials.json +0 -26
  314. package/integration-data/trello/credentials_hint.md +0 -4
  315. package/integration-data/trello/handlers/add_checklist_to_card.js +0 -5
  316. package/integration-data/trello/handlers/add_member_to_card.js +0 -5
  317. package/integration-data/trello/handlers/archive_list.js +0 -5
  318. package/integration-data/trello/handlers/create_card.js +0 -13
  319. package/integration-data/trello/handlers/create_list.js +0 -7
  320. package/integration-data/trello/handlers/delete_card.js +0 -9
  321. package/integration-data/trello/handlers/get_board.js +0 -4
  322. package/integration-data/trello/handlers/get_board_cards.js +0 -4
  323. package/integration-data/trello/handlers/get_board_custom_fields.js +0 -4
  324. package/integration-data/trello/handlers/get_board_labels.js +0 -4
  325. package/integration-data/trello/handlers/get_board_lists.js +0 -4
  326. package/integration-data/trello/handlers/get_board_members.js +0 -4
  327. package/integration-data/trello/handlers/get_board_memberships.js +0 -4
  328. package/integration-data/trello/handlers/get_card.js +0 -4
  329. package/integration-data/trello/handlers/get_card_actions.js +0 -4
  330. package/integration-data/trello/handlers/get_card_attachments.js +0 -4
  331. package/integration-data/trello/handlers/get_card_checklists.js +0 -4
  332. package/integration-data/trello/handlers/get_card_custom_field_items.js +0 -4
  333. package/integration-data/trello/handlers/get_card_members.js +0 -4
  334. package/integration-data/trello/handlers/get_list.js +0 -4
  335. package/integration-data/trello/handlers/get_list_cards.js +0 -4
  336. package/integration-data/trello/handlers/get_member.js +0 -4
  337. package/integration-data/trello/handlers/get_member_boards.js +0 -4
  338. package/integration-data/trello/handlers/get_member_organizations.js +0 -4
  339. package/integration-data/trello/handlers/get_organization.js +0 -4
  340. package/integration-data/trello/handlers/get_organization_boards.js +0 -4
  341. package/integration-data/trello/handlers/move_card_to_list.js +0 -5
  342. package/integration-data/trello/handlers/remove_member_from_card.js +0 -9
  343. package/integration-data/trello/handlers/search.js +0 -5
  344. package/integration-data/trello/handlers/update_card.js +0 -19
  345. package/integration-data/trello/handlers/update_list.js +0 -11
  346. package/integration-data/trello/manifest.json +0 -231
  347. package/integration-data/trello/schemas/add_checklist_to_card.json +0 -10
  348. package/integration-data/trello/schemas/add_member_to_card.json +0 -10
  349. package/integration-data/trello/schemas/archive_list.json +0 -9
  350. package/integration-data/trello/schemas/create_card.json +0 -13
  351. package/integration-data/trello/schemas/create_list.json +0 -11
  352. package/integration-data/trello/schemas/delete_card.json +0 -9
  353. package/integration-data/trello/schemas/display_trello_cards.json +0 -45
  354. package/integration-data/trello/schemas/empty.json +0 -5
  355. package/integration-data/trello/schemas/get_member.json +0 -5
  356. package/integration-data/trello/schemas/id_board.json +0 -8
  357. package/integration-data/trello/schemas/id_card.json +0 -8
  358. package/integration-data/trello/schemas/id_list.json +0 -8
  359. package/integration-data/trello/schemas/id_org.json +0 -8
  360. package/integration-data/trello/schemas/move_card_to_list.json +0 -10
  361. package/integration-data/trello/schemas/remove_member_from_card.json +0 -10
  362. package/integration-data/trello/schemas/search.json +0 -8
  363. package/integration-data/trello/schemas/update_card.json +0 -16
  364. package/integration-data/trello/schemas/update_list.json +0 -12
@@ -1,26 +0,0 @@
1
- {
2
- "name": "google-calendar",
3
- "version": "0.1.0",
4
- "tools": [
5
- { "name": "list_calendars", "description": "List calendars for the authenticated user.", "inputSchema": "schemas/empty.json", "handler": "handlers/list_calendars.js", "scope": "read" },
6
- { "name": "get_calendar", "description": "Get a calendar by ID.", "inputSchema": "schemas/id_calendar.json", "handler": "handlers/get_calendar.js", "scope": "read" },
7
- { "name": "list_events", "description": "List events in a calendar with optional time range and query.", "inputSchema": "schemas/list_events.json", "handler": "handlers/list_events.js", "scope": "read" },
8
- { "name": "get_event", "description": "Get a specific event by ID from a calendar.", "inputSchema": "schemas/id_calendar_event.json", "handler": "handlers/get_event.js", "scope": "read" },
9
- { "name": "list_colors", "description": "Get the color definitions for calendars and events.", "inputSchema": "schemas/empty.json", "handler": "handlers/list_colors.js", "scope": "read" },
10
- { "name": "freebusy_query", "description": "Query free/busy information for calendars.", "inputSchema": "schemas/freebusy_query.json", "handler": "handlers/freebusy_query.js", "scope": "read" },
11
- { "name": "list_settings", "description": "List user settings.", "inputSchema": "schemas/empty.json", "handler": "handlers/list_settings.js", "scope": "read" },
12
-
13
- { "name": "create_event", "description": "Create an event in a calendar.", "inputSchema": "schemas/create_event.json", "handler": "handlers/create_event.js", "scope": "write" },
14
- { "name": "update_event", "description": "Update an event in a calendar (full update).", "inputSchema": "schemas/update_event.json", "handler": "handlers/update_event.js", "scope": "write" },
15
- { "name": "patch_event", "description": "Patch fields on an event in a calendar.", "inputSchema": "schemas/patch_event.json", "handler": "handlers/patch_event.js", "scope": "write" },
16
- { "name": "delete_event", "description": "Delete an event from a calendar.", "inputSchema": "schemas/id_calendar_event.json", "handler": "handlers/delete_event.js", "scope": "write" },
17
- { "name": "move_event", "description": "Move an event to another calendar.", "inputSchema": "schemas/move_event.json", "handler": "handlers/move_event.js", "scope": "write" },
18
- { "name": "quick_add", "description": "Create an event using natural language text.", "inputSchema": "schemas/quick_add.json", "handler": "handlers/quick_add.js", "scope": "write" },
19
-
20
- { "name": "list_acl", "description": "List ACL rules for a calendar.", "inputSchema": "schemas/id_calendar.json", "handler": "handlers/list_acl.js", "scope": "admin" },
21
- { "name": "get_acl", "description": "Get a specific ACL rule by ID for a calendar.", "inputSchema": "schemas/get_acl.json", "handler": "handlers/get_acl.js", "scope": "admin" },
22
- { "name": "insert_acl", "description": "Insert a new ACL rule for a calendar.", "inputSchema": "schemas/insert_acl.json", "handler": "handlers/insert_acl.js", "scope": "admin" },
23
- { "name": "update_acl", "description": "Update an ACL rule for a calendar.", "inputSchema": "schemas/update_acl.json", "handler": "handlers/update_acl.js", "scope": "admin" },
24
- { "name": "delete_acl", "description": "Delete an ACL rule from a calendar.", "inputSchema": "schemas/delete_acl.json", "handler": "handlers/delete_acl.js", "scope": "admin" }
25
- ]
26
- }
@@ -1,34 +0,0 @@
1
- {
2
- "type": "object",
3
- "properties": {
4
- "calendarId": { "type": "string" },
5
- "summary": { "type": "string" },
6
- "description": { "type": "string" },
7
- "location": { "type": "string" },
8
- "start": {
9
- "type": "object",
10
- "properties": {
11
- "date": { "type": "string" },
12
- "dateTime": { "type": "string" },
13
- "timeZone": { "type": "string" }
14
- },
15
- "additionalProperties": true
16
- },
17
- "end": {
18
- "type": "object",
19
- "properties": {
20
- "date": { "type": "string" },
21
- "dateTime": { "type": "string" },
22
- "timeZone": { "type": "string" }
23
- },
24
- "additionalProperties": true
25
- },
26
- "attendees": {
27
- "type": "array",
28
- "items": { "type": "object", "properties": { "email": { "type": "string" } }, "additionalProperties": true }
29
- },
30
- "conferenceData": { "type": "object" }
31
- },
32
- "required": ["calendarId", "start", "end"],
33
- "additionalProperties": true
34
- }
@@ -1,9 +0,0 @@
1
- {
2
- "type": "object",
3
- "properties": {
4
- "calendarId": { "type": "string" },
5
- "ruleId": { "type": "string" }
6
- },
7
- "required": ["calendarId", "ruleId"],
8
- "additionalProperties": false
9
- }
@@ -1,13 +0,0 @@
1
- {
2
- "type": "object",
3
- "properties": {
4
- "timeMin": { "type": "string" },
5
- "timeMax": { "type": "string" },
6
- "items": {
7
- "type": "array",
8
- "items": { "type": "object", "properties": { "id": { "type": "string" } }, "required": ["id"], "additionalProperties": false }
9
- }
10
- },
11
- "required": ["timeMin", "timeMax", "items"],
12
- "additionalProperties": false
13
- }
@@ -1,9 +0,0 @@
1
- {
2
- "type": "object",
3
- "properties": {
4
- "calendarId": { "type": "string" },
5
- "ruleId": { "type": "string" }
6
- },
7
- "required": ["calendarId", "ruleId"],
8
- "additionalProperties": false
9
- }
@@ -1,8 +0,0 @@
1
- {
2
- "type": "object",
3
- "properties": {
4
- "calendarId": { "type": "string", "description": "Calendar ID (use 'primary' for primary)." }
5
- },
6
- "required": ["calendarId"],
7
- "additionalProperties": false
8
- }
@@ -1,9 +0,0 @@
1
- {
2
- "type": "object",
3
- "properties": {
4
- "calendarId": { "type": "string", "description": "Calendar ID (use 'primary' for primary)." },
5
- "eventId": { "type": "string", "description": "Event ID." }
6
- },
7
- "required": ["calendarId", "eventId"],
8
- "additionalProperties": false
9
- }
@@ -1,18 +0,0 @@
1
- {
2
- "type": "object",
3
- "properties": {
4
- "calendarId": { "type": "string" },
5
- "role": { "type": "string", "enum": ["none", "freeBusyReader", "reader", "writer", "owner"] },
6
- "scope": {
7
- "type": "object",
8
- "properties": {
9
- "type": { "type": "string", "enum": ["default", "user", "group", "domain"] },
10
- "value": { "type": "string" }
11
- },
12
- "required": ["type"],
13
- "additionalProperties": false
14
- }
15
- },
16
- "required": ["calendarId", "role", "scope"],
17
- "additionalProperties": false
18
- }
@@ -1,15 +0,0 @@
1
- {
2
- "type": "object",
3
- "properties": {
4
- "calendarId": { "type": "string", "description": "Calendar ID (use 'primary' for primary)." },
5
- "timeMin": { "type": "string", "description": "RFC3339 start time" },
6
- "timeMax": { "type": "string", "description": "RFC3339 end time" },
7
- "q": { "type": "string", "description": "Free-text search query" },
8
- "maxResults": { "type": "integer", "minimum": 1, "maximum": 2500 },
9
- "pageToken": { "type": "string" },
10
- "singleEvents": { "type": "boolean", "description": "Expand recurring events" },
11
- "orderBy": { "type": "string", "enum": ["startTime", "updated"] }
12
- },
13
- "required": ["calendarId"],
14
- "additionalProperties": false
15
- }
@@ -1,10 +0,0 @@
1
- {
2
- "type": "object",
3
- "properties": {
4
- "calendarId": { "type": "string" },
5
- "eventId": { "type": "string" },
6
- "destination": { "type": "string", "description": "Destination calendarId" }
7
- },
8
- "required": ["calendarId", "eventId", "destination"],
9
- "additionalProperties": false
10
- }
@@ -1,10 +0,0 @@
1
- {
2
- "type": "object",
3
- "properties": {
4
- "calendarId": { "type": "string" },
5
- "eventId": { "type": "string" },
6
- "body": { "type": "object" }
7
- },
8
- "required": ["calendarId", "eventId", "body"],
9
- "additionalProperties": false
10
- }
@@ -1,9 +0,0 @@
1
- {
2
- "type": "object",
3
- "properties": {
4
- "calendarId": { "type": "string" },
5
- "text": { "type": "string", "description": "Natural language event text" }
6
- },
7
- "required": ["calendarId", "text"],
8
- "additionalProperties": false
9
- }
@@ -1,10 +0,0 @@
1
- {
2
- "type": "object",
3
- "properties": {
4
- "calendarId": { "type": "string" },
5
- "ruleId": { "type": "string" },
6
- "role": { "type": "string", "enum": ["none", "freeBusyReader", "reader", "writer", "owner"] }
7
- },
8
- "required": ["calendarId", "ruleId", "role"],
9
- "additionalProperties": false
10
- }
@@ -1,10 +0,0 @@
1
- {
2
- "type": "object",
3
- "properties": {
4
- "calendarId": { "type": "string" },
5
- "eventId": { "type": "string" },
6
- "body": { "type": "object" }
7
- },
8
- "required": ["calendarId", "eventId", "body"],
9
- "additionalProperties": false
10
- }
@@ -1,36 +0,0 @@
1
- {
2
- "schema": {
3
- "type": "object",
4
- "properties": {
5
- "token": {
6
- "type": "string",
7
- "title": "OAuth Access Token (optional)",
8
- "description": "Google OAuth access token to use as a Bearer token (typically short-lived)."
9
- },
10
- "serviceAccountJson": {
11
- "type": "string",
12
- "title": "Service Account JSON (recommended)",
13
- "description": "Full service account key JSON (contents of the downloaded JSON file)."
14
- },
15
- "subject": {
16
- "type": "string",
17
- "title": "Subject / impersonated user (optional)",
18
- "description": "Optional user email to impersonate when using Google Workspace domain-wide delegation."
19
- },
20
- "scopes": {
21
- "type": "array",
22
- "title": "OAuth scopes (optional)",
23
- "description": "Optional override for OAuth scopes.",
24
- "items": { "type": "string" }
25
- }
26
- },
27
- "required": [],
28
- "additionalProperties": false
29
- },
30
- "injection": {
31
- "headers": {
32
- "Authorization": "Bearer {{token}}"
33
- }
34
- }
35
- }
36
-
@@ -1,9 +0,0 @@
1
- Recommended: use a Google service account.
2
-
3
- - Create a service account in Google Cloud
4
- - Download a JSON key
5
- - Paste the JSON into `serviceAccountJson` (or use `env:GOOGLE_SERVICE_ACCOUNT_JSON`)
6
- - Share your test document with the service account `client_email`
7
-
8
- You can also paste a short-lived OAuth access token into `token`, but it will expire.
9
-
@@ -1,12 +0,0 @@
1
- async (input) => {
2
- const { documentId, text } = input
3
- // Get doc to find end index
4
- const metaRes = await integration.fetch(`/documents/${encodeURIComponent(documentId)}`)
5
- const meta = await metaRes.json()
6
- const endIndex = meta?.body?.content?.[meta.body.content.length - 1]?.endIndex || 1
7
- const res = await integration.fetch(`/documents/${encodeURIComponent(documentId)}:batchUpdate`, {
8
- method: 'POST',
9
- body: { requests: [{ insertText: { text, location: { index: endIndex - 1 } } }] },
10
- })
11
- return await res.json()
12
- }
@@ -1,13 +0,0 @@
1
- async (input) => {
2
- const { documentId, requests, writeControl, includeTabStops } = input
3
- const params = new URLSearchParams()
4
- if (includeTabStops !== undefined)
5
- params.set('includeTabStops', String(includeTabStops))
6
- const qs = params.toString()
7
- const path = `/documents/${encodeURIComponent(documentId)}:batchUpdate${qs ? `?${qs}` : ''}`
8
- const body = { requests }
9
- if (writeControl)
10
- body.writeControl = writeControl
11
- const res = await integration.fetch(path, { method: 'POST', body })
12
- return await res.json()
13
- }
@@ -1,9 +0,0 @@
1
- async (input) => {
2
- const { title, ...rest } = input
3
- const body = {}
4
- if (title !== undefined)
5
- body.title = title
6
- Object.assign(body, rest)
7
- const res = await integration.fetch(`/documents`, { method: 'POST', body })
8
- return await res.json()
9
- }
@@ -1,50 +0,0 @@
1
- async (input) => {
2
- const { documentId, findText } = input
3
- const marker = `__CMD_MARK_${Date.now()}__`
4
- const replaceRes = await integration.fetch(`/documents/${encodeURIComponent(documentId)}:batchUpdate`, {
5
- method: 'POST',
6
- body: { requests: [{ replaceAllText: { containsText: { text: findText, matchCase: false }, replaceText: marker } }] },
7
- })
8
- await replaceRes.json()
9
-
10
- const getRes = await integration.fetch(`/documents/${encodeURIComponent(documentId)}`)
11
- const doc = await getRes.json()
12
- let startIndex = -1
13
- let endIndex = -1
14
- for (const el of (doc?.body?.content || [])) {
15
- const p = el.paragraph
16
- if (!p)
17
- continue
18
- for (const e of (p.elements || [])) {
19
- const t = e?.textRun?.content
20
- if (!t)
21
- continue
22
- const idx = t.indexOf(marker)
23
- if (idx >= 0) {
24
- const elStart = e.startIndex || 1
25
- startIndex = elStart + idx
26
- endIndex = startIndex + marker.length
27
- break
28
- }
29
- }
30
- if (startIndex >= 0)
31
- break
32
- }
33
- if (startIndex < 0) {
34
- const confirm = await integration.fetch(`/documents/${encodeURIComponent(documentId)}`)
35
- const got = await confirm.json()
36
- return { documentId: got?.documentId || documentId, applied: false, replies: [] }
37
- }
38
-
39
- const requests = []
40
- requests.push({ deleteContentRange: { range: { startIndex, endIndex } } })
41
- // also clean any remaining markers
42
- requests.push({ replaceAllText: { containsText: { text: marker, matchCase: true }, replaceText: '' } })
43
- const res = await integration.fetch(`/documents/${encodeURIComponent(documentId)}:batchUpdate`, { method: 'POST', body: { requests } })
44
- const out = await res.json()
45
- if (out?.documentId || Array.isArray(out?.replies))
46
- return { ...out, applied: true }
47
- const confirm = await integration.fetch(`/documents/${encodeURIComponent(documentId)}`)
48
- const got = await confirm.json()
49
- return { documentId: got?.documentId || documentId, applied: true, replies: Array.isArray(out?.replies) ? out.replies : [] }
50
- }
@@ -1,12 +0,0 @@
1
- async (input) => {
2
- const { documentId, suggestionsViewMode, includeTabsAndSpaces } = input
3
- const params = new URLSearchParams()
4
- if (suggestionsViewMode)
5
- params.set('suggestionsViewMode', String(suggestionsViewMode))
6
- if (includeTabsAndSpaces !== undefined)
7
- params.set('includeTabsAndSpaces', String(includeTabsAndSpaces))
8
- const qs = params.toString()
9
- const path = `/documents/${encodeURIComponent(documentId)}${qs ? `?${qs}` : ''}`
10
- const res = await integration.fetch(path)
11
- return await res.json()
12
- }
@@ -1,6 +0,0 @@
1
- async (input) => {
2
- const { documentId } = input
3
- const res = await integration.fetch(`/documents/${encodeURIComponent(documentId)}`)
4
- const doc = await res.json()
5
- return { documentId: doc?.documentId || documentId, body: doc?.body }
6
- }
@@ -1,17 +0,0 @@
1
- async (input) => {
2
- const { documentId } = input
3
- const res = await integration.fetch(`/documents/${encodeURIComponent(documentId)}`)
4
- const doc = await res.json()
5
- const content = doc?.body?.content || []
6
- let text = ''
7
- for (const el of content) {
8
- const paragraphs = el.paragraph ? [el.paragraph] : []
9
- for (const p of paragraphs) {
10
- for (const e of p.elements || []) {
11
- text += e.textRun?.content || ''
12
- }
13
- text += '\n'
14
- }
15
- }
16
- return { documentId: doc?.documentId || documentId, text }
17
- }
@@ -1,41 +0,0 @@
1
- async (input) => {
2
- const { documentId, findText, uri, altText, position } = input
3
- const marker = `__CMD_MARK_${Date.now()}__`
4
- const replaceRes = await integration.fetch(`/documents/${encodeURIComponent(documentId)}:batchUpdate`, {
5
- method: 'POST',
6
- body: { requests: [{ replaceAllText: { containsText: { text: findText, matchCase: false }, replaceText: marker } }] },
7
- })
8
- await replaceRes.json()
9
-
10
- const getRes = await integration.fetch(`/documents/${encodeURIComponent(documentId)}`)
11
- const doc = await getRes.json()
12
- let baseIndex = -1
13
- for (const el of (doc?.body?.content || [])) {
14
- const p = el.paragraph
15
- if (!p)
16
- continue
17
- for (const e of (p.elements || [])) {
18
- const t = e?.textRun?.content
19
- if (!t)
20
- continue
21
- const idx = t.indexOf(marker)
22
- if (idx >= 0) {
23
- const elStart = e.startIndex || 1
24
- const startIndex = elStart + idx
25
- const endIndex = startIndex + marker.length
26
- baseIndex = position === 'before' ? startIndex : endIndex
27
- break
28
- }
29
- }
30
- if (baseIndex >= 0)
31
- break
32
- }
33
- if (baseIndex < 0)
34
- return { ok: true }
35
-
36
- const requests = []
37
- requests.push({ insertInlineImage: { location: { index: baseIndex }, uri, altTextTitle: altText } })
38
- requests.push({ replaceAllText: { containsText: { text: marker, matchCase: true }, replaceText: findText } })
39
- const res = await integration.fetch(`/documents/${encodeURIComponent(documentId)}:batchUpdate`, { method: 'POST', body: { requests } })
40
- return await res.json()
41
- }
@@ -1,49 +0,0 @@
1
- async (input) => {
2
- const { documentId, findText, position } = input
3
- const marker = `__CMD_MARK_${Date.now()}__`
4
- const replaceRes = await integration.fetch(`/documents/${encodeURIComponent(documentId)}:batchUpdate`, {
5
- method: 'POST',
6
- body: { requests: [{ replaceAllText: { containsText: { text: findText, matchCase: false }, replaceText: marker } }] },
7
- })
8
- await replaceRes.json()
9
-
10
- const getRes = await integration.fetch(`/documents/${encodeURIComponent(documentId)}`)
11
- const doc = await getRes.json()
12
- let baseIndex = -1
13
- for (const el of (doc?.body?.content || [])) {
14
- const p = el.paragraph
15
- if (!p)
16
- continue
17
- for (const e of (p.elements || [])) {
18
- const t = e?.textRun?.content
19
- if (!t)
20
- continue
21
- const idx = t.indexOf(marker)
22
- if (idx >= 0) {
23
- const elStart = e.startIndex || 1
24
- const startIndex = elStart + idx
25
- const endIndex = startIndex + marker.length
26
- baseIndex = position === 'before' ? startIndex : endIndex
27
- break
28
- }
29
- }
30
- if (baseIndex >= 0)
31
- break
32
- }
33
- if (baseIndex < 0) {
34
- const confirm = await integration.fetch(`/documents/${encodeURIComponent(documentId)}`)
35
- const got = await confirm.json()
36
- return { documentId: got?.documentId || documentId, applied: false, replies: [] }
37
- }
38
-
39
- const requests = []
40
- requests.push({ insertPageBreak: { location: { index: baseIndex } } })
41
- requests.push({ replaceAllText: { containsText: { text: marker, matchCase: true }, replaceText: findText } })
42
- const res = await integration.fetch(`/documents/${encodeURIComponent(documentId)}:batchUpdate`, { method: 'POST', body: { requests } })
43
- const out = await res.json()
44
- if (out?.documentId || Array.isArray(out?.replies))
45
- return { ...out, applied: true }
46
- const confirm = await integration.fetch(`/documents/${encodeURIComponent(documentId)}`)
47
- const got = await confirm.json()
48
- return { documentId: got?.documentId || documentId, applied: true, replies: Array.isArray(out?.replies) ? out.replies : [] }
49
- }
@@ -1,49 +0,0 @@
1
- async (input) => {
2
- const { documentId, findText, rows, columns, position } = input
3
- const marker = `__CMD_MARK_${Date.now()}__`
4
- const replaceRes = await integration.fetch(`/documents/${encodeURIComponent(documentId)}:batchUpdate`, {
5
- method: 'POST',
6
- body: { requests: [{ replaceAllText: { containsText: { text: findText, matchCase: false }, replaceText: marker } }] },
7
- })
8
- await replaceRes.json()
9
-
10
- const getRes = await integration.fetch(`/documents/${encodeURIComponent(documentId)}`)
11
- const doc = await getRes.json()
12
- let baseIndex = -1
13
- for (const el of (doc?.body?.content || [])) {
14
- const p = el.paragraph
15
- if (!p)
16
- continue
17
- for (const e of (p.elements || [])) {
18
- const t = e?.textRun?.content
19
- if (!t)
20
- continue
21
- const idx = t.indexOf(marker)
22
- if (idx >= 0) {
23
- const elStart = e.startIndex || 1
24
- const startIndex = elStart + idx
25
- const endIndex = startIndex + marker.length
26
- baseIndex = position === 'before' ? startIndex : endIndex
27
- break
28
- }
29
- }
30
- if (baseIndex >= 0)
31
- break
32
- }
33
- if (baseIndex < 0) {
34
- const confirm = await integration.fetch(`/documents/${encodeURIComponent(documentId)}`)
35
- const got = await confirm.json()
36
- return { documentId: got?.documentId || documentId, applied: false, replies: [] }
37
- }
38
-
39
- const requests = []
40
- requests.push({ insertTable: { location: { index: baseIndex }, rows, columns } })
41
- requests.push({ replaceAllText: { containsText: { text: marker, matchCase: true }, replaceText: findText } })
42
- const res = await integration.fetch(`/documents/${encodeURIComponent(documentId)}:batchUpdate`, { method: 'POST', body: { requests } })
43
- const out = await res.json()
44
- if (out?.documentId || Array.isArray(out?.replies))
45
- return { ...out, applied: true }
46
- const confirm = await integration.fetch(`/documents/${encodeURIComponent(documentId)}`)
47
- const got = await confirm.json()
48
- return { documentId: got?.documentId || documentId, applied: true, replies: Array.isArray(out?.replies) ? out.replies : [] }
49
- }
@@ -1,51 +0,0 @@
1
- async (input) => {
2
- const { documentId, findText, insertText, position } = input
3
- const marker = `__CMD_MARK_${Date.now()}__`
4
- // Replace first occurrence by marker only (simulate single by replacing all, then revert later to first span)
5
- const replaceRes = await integration.fetch(`/documents/${encodeURIComponent(documentId)}:batchUpdate`, {
6
- method: 'POST',
7
- body: { requests: [{ replaceAllText: { containsText: { text: findText, matchCase: false }, replaceText: marker } }] },
8
- })
9
- await replaceRes.json()
10
-
11
- const getRes = await integration.fetch(`/documents/${encodeURIComponent(documentId)}`)
12
- const doc = await getRes.json()
13
- let insertIndex = -1
14
- for (const el of (doc?.body?.content || [])) {
15
- const p = el.paragraph
16
- if (!p)
17
- continue
18
- for (const e of (p.elements || [])) {
19
- const t = e?.textRun?.content
20
- if (!t)
21
- continue
22
- const idx = t.indexOf(marker)
23
- if (idx >= 0) {
24
- const elStart = e.startIndex || 1
25
- const startIndex = elStart + idx
26
- const endIndex = startIndex + marker.length
27
- insertIndex = position === 'before' ? startIndex : endIndex
28
- break
29
- }
30
- }
31
- if (insertIndex >= 0)
32
- break
33
- }
34
- if (insertIndex < 0) {
35
- const confirm = await integration.fetch(`/documents/${encodeURIComponent(documentId)}`)
36
- const got = await confirm.json()
37
- return { documentId: got?.documentId || documentId, applied: false, replies: [] }
38
- }
39
-
40
- const requests = []
41
- requests.push({ insertText: { text: insertText, location: { index: insertIndex } } })
42
- // restore marker back to original findText everywhere
43
- requests.push({ replaceAllText: { containsText: { text: marker, matchCase: true }, replaceText: findText } })
44
- const res = await integration.fetch(`/documents/${encodeURIComponent(documentId)}:batchUpdate`, { method: 'POST', body: { requests } })
45
- const out = await res.json()
46
- if (out?.documentId || Array.isArray(out?.replies))
47
- return { ...out, applied: true }
48
- const confirm = await integration.fetch(`/documents/${encodeURIComponent(documentId)}`)
49
- const got = await confirm.json()
50
- return { documentId: got?.documentId || documentId, applied: true, replies: Array.isArray(out?.replies) ? out.replies : [] }
51
- }
@@ -1,8 +0,0 @@
1
- async (input) => {
2
- const { documentId, findText, replaceText, matchCase } = input
3
- const res = await integration.fetch(`/documents/${encodeURIComponent(documentId)}:batchUpdate`, {
4
- method: 'POST',
5
- body: { requests: [{ replaceAllText: { containsText: { text: findText, matchCase: Boolean(matchCase) }, replaceText } }] },
6
- })
7
- return await res.json()
8
- }
@@ -1,42 +0,0 @@
1
- async (input) => {
2
- const { documentId, findText, textStyle, fields } = input
3
- // 1) Find first match via replaceAllText with unique marker
4
- const marker = `__CMD_MARK_${Date.now()}__`
5
- const replaceRes = await integration.fetch(`/documents/${encodeURIComponent(documentId)}:batchUpdate`, {
6
- method: 'POST',
7
- body: { requests: [{ replaceAllText: { containsText: { text: findText, matchCase: false }, replaceText: marker } }] },
8
- })
9
- const rep = await replaceRes.json()
10
- // 2) Get doc, locate marker, compute indices
11
- const getRes = await integration.fetch(`/documents/${encodeURIComponent(documentId)}`)
12
- const doc = await getRes.json()
13
- let startIndex = -1
14
- let endIndex = -1
15
- for (const el of (doc?.body?.content || [])) {
16
- const p = el.paragraph
17
- if (!p)
18
- continue
19
- for (const e of (p.elements || [])) {
20
- const t = e?.textRun?.content
21
- if (!t)
22
- continue
23
- const idx = t.indexOf(marker)
24
- if (idx >= 0) {
25
- const elStart = e.startIndex || 1
26
- startIndex = elStart + idx
27
- endIndex = startIndex + marker.length
28
- break
29
- }
30
- }
31
- if (startIndex >= 0)
32
- break
33
- }
34
- if (startIndex < 0)
35
- return rep
36
- // 3) Apply style and restore original text
37
- const requests = []
38
- requests.push({ updateTextStyle: { range: { startIndex, endIndex }, textStyle, fields: fields || Object.keys(textStyle || {}).join(',') } })
39
- requests.push({ replaceAllText: { containsText: { text: marker, matchCase: true }, replaceText: findText } })
40
- const res = await integration.fetch(`/documents/${encodeURIComponent(documentId)}:batchUpdate`, { method: 'POST', body: { requests } })
41
- return await res.json()
42
- }