@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,30 @@
1
+ /**
2
+ * Static, browser-safe export of all integration credential configs and hints.
3
+ * Import this from @commandable/integration-data/credentials in browser/Vite contexts
4
+ * where Node.js fs access is not available.
5
+ */
6
+ export interface CredentialConfig {
7
+ schema: {
8
+ type: string;
9
+ properties: Record<string, {
10
+ type: string;
11
+ title?: string;
12
+ description?: string;
13
+ items?: {
14
+ type: string;
15
+ };
16
+ }>;
17
+ required: string[];
18
+ additionalProperties: boolean;
19
+ };
20
+ injection: {
21
+ headers?: Record<string, string>;
22
+ query?: Record<string, string>;
23
+ };
24
+ }
25
+ export interface IntegrationCredentials {
26
+ config: CredentialConfig;
27
+ hint: string;
28
+ }
29
+ export declare const credentialConfigs: Record<string, IntegrationCredentials>;
30
+ //# sourceMappingURL=credentials-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials-index.d.ts","sourceRoot":"","sources":["../src/credentials-index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAA;QACZ,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;YACzB,IAAI,EAAE,MAAM,CAAA;YACZ,KAAK,CAAC,EAAE,MAAM,CAAA;YACd,WAAW,CAAC,EAAE,MAAM,CAAA;YACpB,KAAK,CAAC,EAAE;gBAAE,IAAI,EAAE,MAAM,CAAA;aAAE,CAAA;SACzB,CAAC,CAAA;QACF,QAAQ,EAAE,MAAM,EAAE,CAAA;QAClB,oBAAoB,EAAE,OAAO,CAAA;KAC9B,CAAA;IACD,SAAS,EAAE;QACT,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAChC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAC/B,CAAA;CACF;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,gBAAgB,CAAA;IACxB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAoSpE,CAAA"}
@@ -0,0 +1,292 @@
1
+ /**
2
+ * Static, browser-safe export of all integration credential configs and hints.
3
+ * Import this from @commandable/integration-data/credentials in browser/Vite contexts
4
+ * where Node.js fs access is not available.
5
+ */
6
+ export const credentialConfigs = {
7
+ airtable: {
8
+ config: {
9
+ schema: {
10
+ type: 'object',
11
+ properties: {
12
+ token: {
13
+ type: 'string',
14
+ title: 'Personal Access Token',
15
+ description: 'Airtable personal access token.',
16
+ },
17
+ },
18
+ required: ['token'],
19
+ additionalProperties: false,
20
+ },
21
+ injection: {
22
+ headers: { Authorization: 'Bearer {{token}}' },
23
+ },
24
+ },
25
+ hint: `Create an Airtable personal access token and paste it here.
26
+
27
+ You can generate one in Airtable account settings under developer tools / personal access tokens.
28
+ `,
29
+ },
30
+ github: {
31
+ config: {
32
+ schema: {
33
+ type: 'object',
34
+ properties: {
35
+ token: {
36
+ type: 'string',
37
+ title: 'Personal Access Token',
38
+ description: 'GitHub personal access token (classic or fine-grained) with appropriate scopes.',
39
+ },
40
+ },
41
+ required: ['token'],
42
+ additionalProperties: false,
43
+ },
44
+ injection: {
45
+ headers: { Authorization: 'Bearer {{token}}' },
46
+ },
47
+ },
48
+ hint: `Create a GitHub personal access token and paste it here.
49
+
50
+ - Fine-grained PAT: Settings → Developer settings → Personal access tokens → Fine-grained tokens
51
+ - Classic PAT: Settings → Developer settings → Personal access tokens → Tokens (classic)
52
+
53
+ Minimum scopes depend on the tools you use (repo read/write, issues, pull requests, etc.).
54
+ `,
55
+ },
56
+ 'google-calendar': {
57
+ config: {
58
+ schema: {
59
+ type: 'object',
60
+ properties: {
61
+ token: {
62
+ type: 'string',
63
+ title: 'OAuth Access Token (optional)',
64
+ description: 'Google OAuth access token to use as a Bearer token (typically short-lived).',
65
+ },
66
+ serviceAccountJson: {
67
+ type: 'string',
68
+ title: 'Service Account JSON (recommended)',
69
+ description: 'Full service account key JSON (contents of the downloaded JSON file).',
70
+ },
71
+ subject: {
72
+ type: 'string',
73
+ title: 'Subject / impersonated user (optional)',
74
+ description: 'Optional user email to impersonate when using Google Workspace domain-wide delegation.',
75
+ },
76
+ scopes: {
77
+ type: 'array',
78
+ title: 'OAuth scopes (optional)',
79
+ description: 'Optional override for OAuth scopes.',
80
+ items: { type: 'string' },
81
+ },
82
+ },
83
+ required: [],
84
+ additionalProperties: false,
85
+ },
86
+ injection: {
87
+ headers: { Authorization: 'Bearer {{token}}' },
88
+ },
89
+ },
90
+ hint: `Recommended: use a Google service account.
91
+
92
+ - Create a service account in Google Cloud
93
+ - Download a JSON key
94
+ - Paste the JSON into \`serviceAccountJson\` (or use \`env:GOOGLE_SERVICE_ACCOUNT_JSON\`)
95
+
96
+ Note: Calendar often needs Google Workspace domain-wide delegation if you want to impersonate a user (\`subject\`).
97
+ For simple setups, use a short-lived OAuth access token in \`token\`.
98
+ `,
99
+ },
100
+ 'google-docs': {
101
+ config: {
102
+ schema: {
103
+ type: 'object',
104
+ properties: {
105
+ token: {
106
+ type: 'string',
107
+ title: 'OAuth Access Token (optional)',
108
+ description: 'Google OAuth access token to use as a Bearer token (typically short-lived).',
109
+ },
110
+ serviceAccountJson: {
111
+ type: 'string',
112
+ title: 'Service Account JSON (recommended)',
113
+ description: 'Full service account key JSON (contents of the downloaded JSON file).',
114
+ },
115
+ subject: {
116
+ type: 'string',
117
+ title: 'Subject / impersonated user (optional)',
118
+ description: 'Optional user email to impersonate when using Google Workspace domain-wide delegation.',
119
+ },
120
+ scopes: {
121
+ type: 'array',
122
+ title: 'OAuth scopes (optional)',
123
+ description: 'Optional override for OAuth scopes.',
124
+ items: { type: 'string' },
125
+ },
126
+ },
127
+ required: [],
128
+ additionalProperties: false,
129
+ },
130
+ injection: {
131
+ headers: { Authorization: 'Bearer {{token}}' },
132
+ },
133
+ },
134
+ hint: `Recommended: use a Google service account.
135
+
136
+ - Create a service account in Google Cloud
137
+ - Download a JSON key
138
+ - Paste the JSON into \`serviceAccountJson\` (or use \`env:GOOGLE_SERVICE_ACCOUNT_JSON\`)
139
+ - Share your test document with the service account \`client_email\`
140
+
141
+ You can also paste a short-lived OAuth access token into \`token\`, but it will expire.
142
+ `,
143
+ },
144
+ 'google-sheet': {
145
+ config: {
146
+ schema: {
147
+ type: 'object',
148
+ properties: {
149
+ token: {
150
+ type: 'string',
151
+ title: 'OAuth Access Token (optional)',
152
+ description: 'Google OAuth access token to use as a Bearer token (typically short-lived).',
153
+ },
154
+ serviceAccountJson: {
155
+ type: 'string',
156
+ title: 'Service Account JSON (recommended)',
157
+ description: 'Full service account key JSON (contents of the downloaded JSON file).',
158
+ },
159
+ subject: {
160
+ type: 'string',
161
+ title: 'Subject / impersonated user (optional)',
162
+ description: 'Optional user email to impersonate when using Google Workspace domain-wide delegation.',
163
+ },
164
+ scopes: {
165
+ type: 'array',
166
+ title: 'OAuth scopes (optional)',
167
+ description: 'Optional override for OAuth scopes.',
168
+ items: { type: 'string' },
169
+ },
170
+ },
171
+ required: [],
172
+ additionalProperties: false,
173
+ },
174
+ injection: {
175
+ headers: { Authorization: 'Bearer {{token}}' },
176
+ },
177
+ },
178
+ hint: `Recommended: use a Google service account.
179
+
180
+ - Create a service account in Google Cloud
181
+ - Download a JSON key
182
+ - Paste the JSON into \`serviceAccountJson\` (or use \`env:GOOGLE_SERVICE_ACCOUNT_JSON\`)
183
+ - Share your test spreadsheet with the service account \`client_email\`
184
+
185
+ You can also paste a short-lived OAuth access token into \`token\`, but it will expire.
186
+ `,
187
+ },
188
+ 'google-slides': {
189
+ config: {
190
+ schema: {
191
+ type: 'object',
192
+ properties: {
193
+ token: {
194
+ type: 'string',
195
+ title: 'OAuth Access Token (optional)',
196
+ description: 'Google OAuth access token to use as a Bearer token (typically short-lived).',
197
+ },
198
+ serviceAccountJson: {
199
+ type: 'string',
200
+ title: 'Service Account JSON (recommended)',
201
+ description: 'Full service account key JSON (contents of the downloaded JSON file).',
202
+ },
203
+ subject: {
204
+ type: 'string',
205
+ title: 'Subject / impersonated user (optional)',
206
+ description: 'Optional user email to impersonate when using Google Workspace domain-wide delegation.',
207
+ },
208
+ scopes: {
209
+ type: 'array',
210
+ title: 'OAuth scopes (optional)',
211
+ description: 'Optional override for OAuth scopes.',
212
+ items: { type: 'string' },
213
+ },
214
+ },
215
+ required: [],
216
+ additionalProperties: false,
217
+ },
218
+ injection: {
219
+ headers: { Authorization: 'Bearer {{token}}' },
220
+ },
221
+ },
222
+ hint: `Recommended: use a Google service account.
223
+
224
+ - Create a service account in Google Cloud
225
+ - Download a JSON key
226
+ - Paste the JSON into \`serviceAccountJson\` (or use \`env:GOOGLE_SERVICE_ACCOUNT_JSON\`)
227
+ - Share your test presentation with the service account \`client_email\`
228
+
229
+ You can also paste a short-lived OAuth access token into \`token\`, but it will expire.
230
+ `,
231
+ },
232
+ notion: {
233
+ config: {
234
+ schema: {
235
+ type: 'object',
236
+ properties: {
237
+ token: {
238
+ type: 'string',
239
+ title: 'Internal Integration Token',
240
+ description: 'Notion internal integration token (starts with "secret_").',
241
+ },
242
+ },
243
+ required: ['token'],
244
+ additionalProperties: false,
245
+ },
246
+ injection: {
247
+ headers: {
248
+ Authorization: 'Bearer {{token}}',
249
+ 'Notion-Version': '2022-06-28',
250
+ },
251
+ },
252
+ },
253
+ hint: `1. Go to \`https://www.notion.so/profile/integrations/internal\`
254
+ 2. Create a Notion integration in Notion's developer settings
255
+ 3. Share your target pages/databases with that integration so it has access
256
+ 4. Copy the **Internal Integration Token** (usually starts with \`secret_\`)
257
+ `,
258
+ },
259
+ trello: {
260
+ config: {
261
+ schema: {
262
+ type: 'object',
263
+ properties: {
264
+ apiKey: {
265
+ type: 'string',
266
+ title: 'API Key',
267
+ description: 'Your Trello API key from https://trello.com/power-ups/admin',
268
+ },
269
+ apiToken: {
270
+ type: 'string',
271
+ title: 'API Token',
272
+ description: 'Your Trello API token ("token" param). Generate one via Trello\'s authorize flow.',
273
+ },
274
+ },
275
+ required: ['apiKey', 'apiToken'],
276
+ additionalProperties: false,
277
+ },
278
+ injection: {
279
+ query: {
280
+ key: '{{apiKey}}',
281
+ token: '{{apiToken}}',
282
+ },
283
+ },
284
+ },
285
+ hint: `1. Go to \`https://trello.com/power-ups/admin\`
286
+ 2. Create a new app
287
+ 3. Navigate to **API Key** and copy your API key
288
+ 4. Click **Generate a Token** and copy the token value
289
+ `,
290
+ },
291
+ };
292
+ //# sourceMappingURL=credentials-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials-index.js","sourceRoot":"","sources":["../src/credentials-index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export type { IntegrationCredentialConfig, DisplayCardData, ToolData, IntegrationCatalogItem, } from './loader.js';
2
+ export { integrationDataRoot, loadIntegrationManifest, loadIntegrationPrompt, loadIntegrationTools, loadIntegrationDisplayCards, loadIntegrationCredentialConfig, listIntegrationTypes, listIntegrationCatalog, } from './loader.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,2BAA2B,EAC3B,eAAe,EACf,QAAQ,EACR,sBAAsB,GACvB,MAAM,aAAa,CAAA;AAEpB,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,2BAA2B,EAC3B,+BAA+B,EAC/B,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,aAAa,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { integrationDataRoot, loadIntegrationManifest, loadIntegrationPrompt, loadIntegrationTools, loadIntegrationDisplayCards, loadIntegrationCredentialConfig, listIntegrationTypes, listIntegrationCatalog, } from './loader.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,2BAA2B,EAC3B,+BAA+B,EAC/B,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,aAAa,CAAA"}
@@ -0,0 +1,69 @@
1
+ import type { JSONSchema7 } from 'json-schema';
2
+ export interface IntegrationCredentialConfig {
3
+ schema: JSONSchema7;
4
+ injection: {
5
+ headers?: Record<string, string>;
6
+ query?: Record<string, string>;
7
+ };
8
+ }
9
+ interface ToolRef {
10
+ name: string;
11
+ description: string;
12
+ inputSchema: string;
13
+ handler: string;
14
+ scope?: 'read' | 'write' | 'admin';
15
+ }
16
+ type FlatTools = ToolRef[];
17
+ interface DisplayCardRef {
18
+ name: string;
19
+ description: string;
20
+ inputSchema: string;
21
+ component: string;
22
+ }
23
+ export interface DisplayCardData {
24
+ name: string;
25
+ description: string;
26
+ inputSchema: JSONSchema7;
27
+ component: string;
28
+ }
29
+ export interface ToolData {
30
+ name: string;
31
+ displayName?: string;
32
+ description: string;
33
+ inputSchema: JSONSchema7 | Record<string, unknown>;
34
+ handlerCode: string;
35
+ }
36
+ interface Manifest {
37
+ name: string;
38
+ version?: string;
39
+ baseUrl?: string;
40
+ tools: FlatTools;
41
+ displayCards?: DisplayCardRef[];
42
+ }
43
+ /**
44
+ * Returns the root directory of the bundled integration-data files.
45
+ * Can be overridden via COMMANDABLE_INTEGRATION_DATA_DIR for testing or
46
+ * custom deployments.
47
+ *
48
+ * Resolution: dist/loader.js -> ../integrations/ (i.e. packages/integration-data/integrations/)
49
+ * When installed as an npm package: node_modules/@commandable/integration-data/dist/loader.js
50
+ * -> node_modules/@commandable/integration-data/integrations/
51
+ */
52
+ export declare function integrationDataRoot(): string;
53
+ export declare function loadIntegrationManifest(type: string): Manifest | null;
54
+ export declare function loadIntegrationPrompt(type: string): string | null;
55
+ export declare function loadIntegrationDisplayCards(type: string): DisplayCardData[];
56
+ export declare function loadIntegrationTools(type: string): {
57
+ read: ToolData[];
58
+ write: ToolData[];
59
+ admin: ToolData[];
60
+ } | null;
61
+ export declare function loadIntegrationCredentialConfig(type: string): IntegrationCredentialConfig | null;
62
+ export interface IntegrationCatalogItem {
63
+ type: string;
64
+ name: string;
65
+ }
66
+ export declare function listIntegrationTypes(): string[];
67
+ export declare function listIntegrationCatalog(): IntegrationCatalogItem[];
68
+ export {};
69
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAK9C,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,WAAW,CAAA;IACnB,SAAS,EAAE;QACT,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAChC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAC/B,CAAA;CACF;AAED,UAAU,OAAO;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAA;CACnC;AAED,KAAK,SAAS,GAAG,OAAO,EAAE,CAAA;AAE1B,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,WAAW,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClD,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,SAAS,CAAA;IAChB,YAAY,CAAC,EAAE,cAAc,EAAE,CAAA;CAChC;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAK5C;AAqBD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAMrE;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWjE;AAkBD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE,CAe3E;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAAC,KAAK,EAAE,QAAQ,EAAE,CAAA;CAAE,GAAG,IAAI,CAoBpH;AAED,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,2BAA2B,GAAG,IAAI,CAsBhG;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CAe/C;AAED,wBAAgB,sBAAsB,IAAI,sBAAsB,EAAE,CAejE"}
package/dist/loader.js ADDED
@@ -0,0 +1,164 @@
1
+ import { existsSync, readFileSync, readdirSync, statSync } from 'node:fs';
2
+ import { resolve } from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ /**
5
+ * Returns the root directory of the bundled integration-data files.
6
+ * Can be overridden via COMMANDABLE_INTEGRATION_DATA_DIR for testing or
7
+ * custom deployments.
8
+ *
9
+ * Resolution: dist/loader.js -> ../integrations/ (i.e. packages/integration-data/integrations/)
10
+ * When installed as an npm package: node_modules/@commandable/integration-data/dist/loader.js
11
+ * -> node_modules/@commandable/integration-data/integrations/
12
+ */
13
+ export function integrationDataRoot() {
14
+ if (process.env.COMMANDABLE_INTEGRATION_DATA_DIR)
15
+ return resolve(process.env.COMMANDABLE_INTEGRATION_DATA_DIR);
16
+ return resolve(fileURLToPath(new URL('../integrations/', import.meta.url)));
17
+ }
18
+ function integrationDir(type) {
19
+ return resolve(integrationDataRoot(), type);
20
+ }
21
+ function readJsonFile(path) {
22
+ const content = readFileSync(path, 'utf8');
23
+ return JSON.parse(content);
24
+ }
25
+ function ensureSchemaObject(schema) {
26
+ if (!schema)
27
+ return {};
28
+ if (typeof schema === 'string') {
29
+ try {
30
+ return JSON.parse(schema);
31
+ }
32
+ catch {
33
+ return {};
34
+ }
35
+ }
36
+ return schema;
37
+ }
38
+ export function loadIntegrationManifest(type) {
39
+ const dir = integrationDir(type);
40
+ const manifestPath = resolve(dir, 'manifest.json');
41
+ if (!existsSync(manifestPath))
42
+ return null;
43
+ return readJsonFile(manifestPath);
44
+ }
45
+ export function loadIntegrationPrompt(type) {
46
+ const dir = integrationDir(type);
47
+ const promptPath = resolve(dir, 'prompt.md');
48
+ if (!existsSync(promptPath))
49
+ return null;
50
+ try {
51
+ return readFileSync(promptPath, 'utf8');
52
+ }
53
+ catch {
54
+ return null;
55
+ }
56
+ }
57
+ function materializeTool(type, ref) {
58
+ const dir = integrationDir(type);
59
+ const schemaPath = resolve(dir, ref.inputSchema);
60
+ const handlerPath = resolve(dir, ref.handler);
61
+ const schema = readJsonFile(schemaPath);
62
+ const handlerCode = readFileSync(handlerPath, 'utf8').trim();
63
+ return {
64
+ name: ref.name,
65
+ description: ref.description,
66
+ inputSchema: ensureSchemaObject(schema),
67
+ handlerCode,
68
+ };
69
+ }
70
+ export function loadIntegrationDisplayCards(type) {
71
+ const manifest = loadIntegrationManifest(type);
72
+ if (!manifest?.displayCards?.length)
73
+ return [];
74
+ const dir = integrationDir(type);
75
+ return manifest.displayCards.map((ref) => {
76
+ const schemaPath = resolve(dir, ref.inputSchema);
77
+ const schema = existsSync(schemaPath) ? ensureSchemaObject(readJsonFile(schemaPath)) : {};
78
+ return {
79
+ name: ref.name,
80
+ description: ref.description,
81
+ inputSchema: schema,
82
+ component: ref.component,
83
+ };
84
+ });
85
+ }
86
+ export function loadIntegrationTools(type) {
87
+ const manifest = loadIntegrationManifest(type);
88
+ if (!manifest)
89
+ return null;
90
+ const flat = manifest.tools;
91
+ const readRefs = [];
92
+ const writeRefs = [];
93
+ const adminRefs = [];
94
+ for (const t of flat) {
95
+ const scope = t.scope || 'read';
96
+ if (scope === 'read')
97
+ readRefs.push(t);
98
+ else if (scope === 'write')
99
+ writeRefs.push(t);
100
+ else if (scope === 'admin')
101
+ adminRefs.push(t);
102
+ else
103
+ readRefs.push(t);
104
+ }
105
+ const read = readRefs.map(t => materializeTool(type, t));
106
+ const write = writeRefs.map(t => materializeTool(type, t));
107
+ const admin = adminRefs.map(t => materializeTool(type, t));
108
+ return { read, write, admin };
109
+ }
110
+ export function loadIntegrationCredentialConfig(type) {
111
+ const dir = integrationDir(type);
112
+ const path = resolve(dir, 'credentials.json');
113
+ if (!existsSync(path))
114
+ return null;
115
+ try {
116
+ const raw = readJsonFile(path);
117
+ const schema = ensureSchemaObject(raw?.schema);
118
+ const injection = raw?.injection || {};
119
+ const cfg = {
120
+ schema,
121
+ injection: {
122
+ headers: injection?.headers || undefined,
123
+ query: injection?.query || undefined,
124
+ },
125
+ };
126
+ return cfg;
127
+ }
128
+ catch {
129
+ return null;
130
+ }
131
+ }
132
+ export function listIntegrationTypes() {
133
+ const root = integrationDataRoot();
134
+ try {
135
+ return readdirSync(root).filter((entry) => {
136
+ try {
137
+ return statSync(resolve(root, entry)).isDirectory();
138
+ }
139
+ catch {
140
+ return false;
141
+ }
142
+ });
143
+ }
144
+ catch {
145
+ return [];
146
+ }
147
+ }
148
+ export function listIntegrationCatalog() {
149
+ const types = listIntegrationTypes();
150
+ const items = [];
151
+ for (const type of types) {
152
+ try {
153
+ const manifest = loadIntegrationManifest(type);
154
+ if (!manifest)
155
+ continue;
156
+ items.push({ type, name: manifest.name || type });
157
+ }
158
+ catch {
159
+ // ignore broken integration directories
160
+ }
161
+ }
162
+ return items;
163
+ }
164
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ Integration Data
2
+ ================
3
+
4
+ Purpose
5
+ -------
6
+
7
+ This directory contains per-integration metadata and tool templates to inject standard read/write capabilities into tasks.
8
+
9
+ Structure
10
+ ---------
11
+
12
+ Each integration lives under its own folder, e.g. `lib/integration-data/trello/`, with:
13
+
14
+ - `manifest.json`: declarative index of tools and files
15
+ - `schemas/*.json`: JSON Schemas for tool inputs
16
+ - `handlers/*.js`: JavaScript handlers executed in the sandbox; use `integration.fetch()`
17
+ - `prompt.md` (optional): extra prompt notes shown to the LLM
18
+ - `openapi.json` (optional): reference spec; not used at runtime
19
+
20
+ Manifest format
21
+ ---------------
22
+
23
+ ```
24
+ {
25
+ "name": string,
26
+ "version": string,
27
+ "baseUrl"?: string,
28
+ "tools": {
29
+ "read": [ToolRef],
30
+ "write": [ToolRef]
31
+ }
32
+ }
33
+
34
+ ToolRef := {
35
+ "name": string,
36
+ "description": string,
37
+ "inputSchema": string, // path to JSON schema file
38
+ "handler": string // path to JS handler file
39
+ }
40
+ ```
41
+
42
+ Handler pattern
43
+ ---------------
44
+
45
+ Handlers use the `integration.fetch(path, options?)` pattern rather than binding to a concrete integration id. At runtime, the host binds the task's selected integration instance as `integration` in the sandbox.
46
+
47
+ Notes
48
+ -----
49
+
50
+ - Keep schemas strict and aligned with handler expectations.
51
+ - Read tools MUST be side-effect free (GET only). Write tools include POST/PUT/DELETE.
52
+ - Prefer small, composable tools that mirror API resources.